{"id":14985617,"url":"https://github.com/abeimler/pymledger","last_synced_at":"2026-02-04T00:02:56.144Z","repository":{"id":168968053,"uuid":"644593562","full_name":"abeimler/pymledger","owner":"abeimler","description":"pYMLedger ist eine Projekt-Vorlage fürs PTA, basierent auf hledger. Zusammen mit ein Python-Script ist es möglich hledger-Regeln und -Buchungen, aus einer Konfigurationsdatei (im YAML-Format), zu generieren.","archived":false,"fork":false,"pushed_at":"2023-06-14T20:52:01.000Z","size":521,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-02T10:51:30.367Z","etag":null,"topics":["accounting","budget","docker","finance","german","hledger","ledger","plaintext","plaintext-accounting","plaintextaccounting","pta","python","taskfile","yml"],"latest_commit_sha":null,"homepage":"https://abeimler.github.io/pymledger/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abeimler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-23T21:08:48.000Z","updated_at":"2024-08-28T15:12:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"b3541188-f2e6-4865-9afd-2d4dbad5302e","html_url":"https://github.com/abeimler/pymledger","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":"0.19999999999999996","last_synced_commit":"f01491adf0d2b1de24902540a5697db1643fa362"},"previous_names":["abeimler/pymledger"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abeimler/pymledger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeimler%2Fpymledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeimler%2Fpymledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeimler%2Fpymledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeimler%2Fpymledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abeimler","download_url":"https://codeload.github.com/abeimler/pymledger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeimler%2Fpymledger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29062483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T23:14:54.203Z","status":"ssl_error","status_checked_at":"2026-02-03T23:14:50.873Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accounting","budget","docker","finance","german","hledger","ledger","plaintext","plaintext-accounting","plaintextaccounting","pta","python","taskfile","yml"],"created_at":"2024-09-24T14:11:22.295Z","updated_at":"2026-02-04T00:02:56.128Z","avatar_url":"https://github.com/abeimler.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pYMLedger - python hledger generator\n\n![GitHub](https://img.shields.io/github/license/abeimler/pymledger)\n![python](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.9-blue)\n![hledger](https://img.shields.io/badge/hledger-1.29%2B-blue)\n\npYMLedger ist eine Projekt-Vorlage fürs [PTA](https://plaintextaccounting.org/), basierent auf [hledger](https://hledger.org/).\nZusammen mit den Python-Skript [hledger-rules](scripts/hledger-rules) ist es möglich hledger-Regeln und -Buchungen aus einer Konfigurationsdatei im YAML-Format zu generieren.\n\n## Funktionen\n\n- CSV-Bereinigung: [hledger-rules](scripts/hledger-rules) bietet Funktionen zum Bereinigen von CSV-Dateien vor der Generierung von hledger-Regeln und -Buchungen.\n- Generierung von hledger-Regeln: Das Skript kann hledger-Regeln basierend auf der in der `config.yml`-Datei angegebenen Konfiguration generieren.\n- Vorgegebene und häufig verwendete Aufgaben: pYMLedger enthält eine `Taskfile.yaml`, die vordefinierte Aufgaben für eine einfachere Ausführung enthält.\n- Docker-Unterstützung: Das Skript kann in einem Docker-Container ausgeführt werden, zusammen mit [hledger-web](https://hledger.org/1.29/hledger-web.html) für eine webbasierte Oberfläche.\n- Budgetierung und Prognose: [hledger-rules](scripts/hledger-rules) unterstützt Funktionen zur Budgetierung und Prognose.\n\n## Installation und Abhängigkeiten\n\nBevor Sie [hledger-rules](scripts/hledger-rules/hledger-rules.py) verwenden, stellen Sie sicher, dass die folgenden Abhängigkeiten installiert, siehe dazu [Installation](https://abeimler.github.io/pymledger/install.html).\n\n\n## Schnell-Start\n\nUm mit dein [PTA](https://plaintextaccounting.org/) schnell zu beginnen, folgen Sie einfach diesen Schritten:\n\n1. **Eingabe und Quellen:**\n   Verwenden Sie CSV-Exporte (**Im [CAMT-CSV Format](https://de.wikipedia.org/wiki/Camt-Format)**) von Ihrem Online-Banking oder die mitgelieferten [Beispieldateien](examples/input/) für Testzwecke und speicher die .csv-Dateien in [`input/`](input/), siehe [Verzeichnisstruktur](https://abeimler.github.io/pymledger/usage/index.html#verzeichnisstruktur).\n\n2. **CSV-Dateien bereinigen:**\n   Führen Sie den Befehl aus, um die CSV-Dateien zu bereinigen und in das Verzeichnis `source` zu speichern:\n   ```bash\n   python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml clean-up-csv 2023\n   ```\n\n3. **Regeln erstellen:**\n   Erstellen Sie Regeln für Lastschriften, Überweisungen usw. im Block `common_rules` in der Datei `config.yml`, siehe [Verwendung](https://abeimler.github.io/pymledger/usage/index.html#verwendung) für mehr details.\n\n4. **Regeln generieren:**\n   Generieren Sie die Regeln mit dem folgenden Befehl:\n   ```bash\n   python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023\n   ```\n\n5. **Journale erstellen:**\n   Erstellen Sie die Journale mit den erstellten Regeln:\n   ```bash\n   python3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-year 2023\n   ```\n\n6. **Budgetierung:**\n   Sobald alle Ausgabenregeln eingetragen sind, können Sie zur [Budgetierung](https://abeimler.github.io/pymledger/usage/index.html#budgetierung) übergehen.\n\n7. **Spezielle Regeln:**\n   Wenn Sie komplexe Regeln für Amazon-Bestellungen und PayPal-Käufe haben, können Sie vordefinierte Regeln in die `config.yml` Datei eintragen. Weitere Informationen finden Sie in [Amazon Spezielle Regeln](https://abeimler.github.io/pymledger/usage/special_rules/amazon.html) und [PayPal Spezielle Regeln](https://abeimler.github.io/pymledger/usage/special_rules/paypal.html).\n\nMöchten Sie weitere Informationen und detaillierte Anweisungen? Lesen Sie [hier mehr](https://abeimler.github.io/pymledger/usage/index.html#verwendung).\n\n\n### Beispiel\n\nBeispiel einer **config.yml**:\n\n**config.yml**\n```yml\ntitle: 'Persönliche Finanzen'\ndefine_accounts:\n  - account: 'Assets'       \n    type: Asset\n  - account: 'Liabilities'  \n    type: Liability\n  - account: 'Equity'       \n    type: Equity\n  - account: 'Income'     \n    type: Revenue\n  - account: 'Expenses'   \n    type: Expense\n  - account: 'Assets:Bank'\n    type: Cash\n  - account: 'Assets:Cash'\n    type: Cash\n  - account: 'Assets:Saving'\n    type: Cash\n  - account: 'Assets:Saving:Cash'\n    type: Cash\naccounts:\n  assets: 'Assets'\n  expenses: 'Expenses'\n  liabilities: 'Liabilities'\n  equity: 'Equity'\n  income: 'Income'\n  opening: 'Equity:OpeningClosingBalances'\n  checking: 'Assets:Bank:Checking'\n  paypal_unknown: 'Expenses:unknown:PayPal'\n  amazon_unknown: 'Expenses:unknown:Amazon'\n  unknown: 'Expenses:unknown'\n  cash: 'Assets:Cash'\n  salary: 'Income:Salary'\n  budget: 'Assets:Bank:Budget'\n  saving: 'Assets:Bank:Saving'\n  unbudget: 'Assets:Bank:Unbudget'\ncommon_rules:\n  # Defaults/Fallbacks (first)\n  - if:\n      - Amazon.de.*AMAZON EU S.A R.L., NIEDERLASSUNG DEUTSCHLAND\n      - Amazon .Mktplce.*AMAZON PAYMENTS EUROPE S.C.A.\n      - AMZN Mktp DE.*AMAZON PAYMENTS EUROPE S.C.A.\n    description: Amazon %verwendungszweck\n    account: Expenses:unknown:Amazon\n  - if: PP.[0-9]+.PP.*PayPal\n    description: PayPal %verwendungszweck\n    account: Expenses:unknown:PayPal\n  - if: KARTENZAHLUNG\n    description: Kartenzahlung %verwendungszweck \n    account: Expenses:unknown:%beguenstigter_zahlungspflichtiger\n  # Bank (und Gebühren)\n  - if: ABSCHLUSS.*Abrechnung\n    account: Expenses:Sonstiges:Bankgebuehren \n  - if: ENTGELTABSCHLUSS.*Entgeltabrechnung\n    payee_description: 'Entgeltabrechnung'\n    account: Expenses:Sonstiges:Bankgebuehren \n  - if:\n      - AUSZAHLUNG\n      - AUSZAHLUNG\n    account: Assets:Cash\n    description: Kartenauszahlung\n  - if:\n      - EINZAHLUNG\n      - EINZAHLUNG\n    account: Assets:Cash\n    description: Karteneinzahlung\n  # Lohn\n  - if: LOHN.*GEHALT\n    account1: Assets:Bank:Checking                                                                                               \n    account2: Income:Salary  \n    income: true\n  # Wohung/Miete \n  - if:\n      - 546789123.*Strom GmbH\n      - ONLINE-UEBERWEISUNG.*Strom GmbH\n    description: Strom GmbH\n    account: Expenses:Wohnen:Nebenkosten:Strom\n  - if:\n      - 1234/4568.00001.12.*Wohnen GmbH\n    customer: 1234/4568.00001.12\n    description: Wohnen GmbH\n    account: Expenses:Wohnen:Miete\n```\n\nBeispiel der erstellten **common.csv.rules**:\n\n```hledger\nif Amazon.de.*AMAZON EU S.A R.L., NIEDERLASSUNG DEUTSCHLAND\nAmazon .Mktplce.*AMAZON PAYMENTS EUROPE S.C.A.\nAMZN Mktp DE.*AMAZON PAYMENTS EUROPE S.C.A.\nAMZN Mktp DE.*AMAZON EU S.A R.L., NIEDERLASSUNG DEUTSCHLAND'\n    description %beguenstigter_zahlungspflichtiger | Amazon %verwendungszweck\n    account1    Expenses:unknown:Amazon                                         \n\n\nif PP.[0-9]+.PP.*, Ihr Einkauf bei.*PayPal'\nPP.[0-9]+.PP.*, Ihr Einkauf bei.*PAYPAL'\nPP.[0-9]+.PP.*PayPal\nPP.[0-9]+.PP.*PAYPAL\n    description %beguenstigter_zahlungspflichtiger | PayPal %verwendungszweck\n    account1    Expenses:unknown:PayPal                                         \n\n\nif KARTENZAHLUNG\n    description %beguenstigter_zahlungspflichtiger | Kartenzahlung %verwendungszweck\n    account1    Expenses:unknown:%beguenstigter_zahlungspflichtiger             \n\n\nif AUSZAHLUNG\nAUSZAHLUNG\n    description Kartenauszahlung\n    account1    Assets:Cash                                                     \n\n\nif EINZAHLUNG\nEINZAHLUNG\n    description Karteneinzahlung\n    account1    Assets:Cash                                                     \n\n\nif LOHN.*GEHALT.*Arbeit GmbH\n    description %beguenstigter_zahlungspflichtiger | Einkommen von Arbeit GmbH\n    account1    Assets:Bank:Checking                                            \n    account2    Income:Salary                                                   \n    amount      %amount                                                         \n\n\nif 546789123.*Strom GmbH\nONLINE-UEBERWEISUNG.*Strom GmbH\n    description %beguenstigter_zahlungspflichtiger | Strom GmbH\n    account1    Expenses:Wohnen:Nebenkosten:Strom                               \n\n\nif 1234/4568.00001.12.*Wohnen GmbH\n    description %beguenstigter_zahlungspflichtiger | Wohnen GmbH\n    account1    Expenses:Wohnen:Miete                                           \n\n```\n\n\n---\n\n### hledger-web\n\nNachdem alle möglichen Regeln, Transaktionen und Journals erstellt wurden, können wir [hledger-web](https://hledger.org/1.29/hledger-web.html) nutzen, um alles schön darzustellen:\n\n```bash\npython3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023\npython3 ./scripts/hledger-rules/hledger-rules.py -c config.yml clean-up-csv 2023\npython3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-year 2023\npython3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-all 2023\nhledger-web -f all.hledger --capabilities=view --auto\n```\n\n![hledger-web](docs/img/screenshot.png)\n\n---\n\n## Disclaimer\n\nIch bin kein Finanzberater und das Tool ist auch mehr zum Budgeten gedacht und für Persönliche Finanzen.\nDie Tabelle und die Beispiele, die du hier siehst, sind alle fiktiv, basieren aber auf realen Kontoauszügen (wie Amazon, PayPal usw.). Verwende dieses Projekt als Vorlage für dein [PTA (Plain Text Accounting)](https://plaintextaccounting.org/), am besten in Kombination mit Git, um alles Mögliche zu verfolgen und die Automatisierung deiner Kontoauszüge (Eingabedateien im CSV-Format) zu maximieren. Behalte dabei alle privaten Daten für dich.\n\n\n### Lizenz\n\nDie Lizenz für die Software findest du in der Datei [LICENSE](LICENSE).\n\n\n### Limitierung\n\n* \"Open\" und \"Closing\" pro Monat: Derzeit bauen alle Monate noch aufeinander auf (Kontoauszüge usw.), sodass sie noch nicht unabhängig voneinander sind.\n* TODO: Erstellung von Diagrammen/Charts\n* Die Verwendung mehrerer Banken ist nicht möglich.\n* Budget aufteile in einem Monat ist nicht möglich (es ist nur möglich den Monatstag zum budgeten zu ändern)\n\n\n\n## Links\n\n- https://plaintextaccounting.org/\n- https://hledger.org/import-csv.html\n- https://hledger.org/cookbook.html\n- https://hledger.org/budgeting.html\n- https://hledger.org/accounting.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabeimler%2Fpymledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabeimler%2Fpymledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabeimler%2Fpymledger/lists"}