diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-beancount-reds-importers.spec | 456 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 458 insertions, 0 deletions
@@ -0,0 +1 @@ +/beancount_reds_importers-0.6.0.tar.gz diff --git a/python-beancount-reds-importers.spec b/python-beancount-reds-importers.spec new file mode 100644 index 0000000..97759e1 --- /dev/null +++ b/python-beancount-reds-importers.spec @@ -0,0 +1,456 @@ +%global _empty_manifest_terminate_build 0 +Name: python-beancount-reds-importers +Version: 0.6.0 +Release: 1 +Summary: Importers for various institutions for Beancount +License: GPL-3.0 +URL: https://github.com/redstreet/beancount_reds_ingestor +Source0: https://mirrors.aliyun.com/pypi/web/packages/5d/ef/b41f779275b0ae7457d51cc0ccbfb9d4c0e2e49ab4c82e6658881902c072/beancount_reds_importers-0.6.0.tar.gz +BuildArch: noarch + +Requires: python3-Click +Requires: python3-beancount +Requires: python3-click-aliases +Requires: python3-ofxparse +Requires: python3-openpyxl +Requires: python3-packaging +Requires: python3-petl +Requires: python3-tabulate +Requires: python3-tqdm + +%description +# Beancount Red's Importers + +Simple importers and tools for [Beancount](https://beancount.github.io/), software for +[plain text](https://plaintextaccounting.org/), double entry bookkeeping. _More +importantly, a framework to allow you to easily write your own importers._ + +### Introduction + +This is a reference implementation of the principles expressed in +**[The Five Minute Ledger Update](https://reds-rants.netlify.app/personal-finance/the-five-minute-ledger-update/).** + +Importers can be ugly and painful to write, yet are important in automating the grunt +work out of maintaining personal finance software. The philosophy is to make writing +sustainable, dependable importers easy. To achieve this, the design separates importers +in to three parts: + +1. file format reader (reusable) +2. transaction builder (reusable) +3. institution-specific declarations and code (minimal, institution specific) <- _The + only one you have to write_ + +This design helps move most of the heavy-lifting common code into (1) and (2) above. +Writing new importers is made easier since one only has to write code to address the +institution-specific formatting and quirks for each bank/brokerage. See working examples +of an [ofx based](https://github.com/redstreet/beancount_reds_importers/blob/main/beancount_reds_importers/citi/__init__.py) and [csv](https://github.com/redstreet/beancount_reds_importers/blob/main/beancount_reds_importers/schwab_csv/__init__.py) based importers. + +### Importers + +File format readers included are: +- `.ofx` +- `.csv` (single and multitable support) +- `.xlsx` (single and multitable support) + +Transaction builders included are: +- banking (for banks and credit cards, which benefit from a postings predictor like + [smart_importer](https://github.com/beancount/smart_importer) +- investments/brokerages (to handle the very many distinct cases of investment related + transactions) +- paychecks (to handle paychecks, which typically contain very many mostly + pre-determined postings in a single entry) + +[Input in `.ofx` format (over `.csv`) is preferred](https://reds-rants.netlify.app/personal-finance/a-word-about-input-formats-use-ofx-when-you-can/), +when provided by the institution, as it minimizes data and coding errors, eliminates +format breaking changes in .csv files, and typically includes balances that are used to +generate balance assertions, and commodity prices. + +See [here](https://github.com/redstreet/beancount_reds_importers/tree/main/beancount_reds_importers) +for a list of institutions built-in. More investment, credit card, and banking +institutions will be added in the future. Contributions welcome. + +### Tools and Utilities +These commands are installed as a part of the pip installation: + +- `ofx-summarize`: Quick and dirty way to summarize a .ofx file, and peek inside it +- `bean-download`: [Download account statements automatically](https://reds-rants.netlify.app/personal-finance/direct-downloads/) + (for supporting institutions), from your configuration of accounts. Multi-threaded. + +The commands include shell auto-completion (tab-to-complete) via +[click](https://click.palletsprojects.com/en/8.1.x/shell-completion/). `bean-download`, in +particular, can complete the account or account groups you want to download, which can +be handy. To enable it, do: + +``` +mkdir -p ~/.zcomplete +_OFX_SUMMARIZE_COMPLETE=zsh_source ofx-summarize > ~/.zcomplete/ofx-summarize-complete.zsh +_BEAN_DOWNLOAD_COMPLETE=zsh_source bean-download > ~/.zcomplete/bean-download-complete.zsh + +# Place this in your shell's rc file (.zshrc or .bashrc or .fishrc): +for f in ~/.zcomplete/*; do source $f; done +``` + +## Features +- supports [Beancount](https://github.com/beancount/beancount) output via `bean-extract` + - should be easy to extend to ledger/hledger, etc. (contributions welcome) +- automatically generates [balance assertions](https://reds-rants.netlify.app/personal-finance/automating-balance-assertions/) +- support for: + - investment accounts (brokerages including retirement accounts) + - handles sweep funds, money market funds, and all standard brokerage transactions + - banking and credit card + - paychecks +- file format independent (ofx, csv, xlsx supported out of the box; single and + multitable for csv and xlsx; write your own reusable handler if needed) +- supports commodity-leaf accounts +- see [The Five Minute Ledger Update](https://reds-rants.netlify.app/personal-finance/the-five-minute-ledger-update/) + for automating downloads via `ofxclient`, connecting to `smart_importer` to + auto-classify transactions, and more + + +## Installation +``` +pip3 install beancount-reds-importers +``` + +Or to install the bleeding edge version from git: +``` +pip3 install git+https://github.com/redstreet/beancount_reds_importers +``` + + +## Running + +### Running the included examples: +1. `cd <your pip installed dir>/example #eg: cd ~/.local/lib/python3.8/site-packages/beancount_reds_importers/example` +2. `./import.sh OfxDownload.qfx` # Imports investments +3. `./import.sh transactions.qfx` # Import bank transactions; uses smart_importer to classify transactions + + +### Creating and running your own config: +1. Create your own my.import. An example my.import is provided. At the least, include your account numbers +2. Include fund information. Copy the included `fund_info.py` to start with. +3. You can now run `bean-identify`, `bean-extract`, etc. See the included script: Run `./import.sh <your_input_ofx>` +4. If identifier/cusip/isin info is missing, the importer will let you know. Add it to your + `fund_info.py` See + [this article](https://reds-rants.netlify.app/personal-finance/tickers-and-identifiers/) + for automating and managing identifier info + +## Testing +I run tests across hundreds of actual ofx and csv files, against reference outputs that +I know to be correct from my personal file. However, I'm unable to share them since +these are personal. Testing against real world files is best, so I recommend you do this +with your own input files. + +## Contributions +Contributions welcome. New importers for institutions and test input files appreciated. +Sharing importers helps the community. + + +%package -n python3-beancount-reds-importers +Summary: Importers for various institutions for Beancount +Provides: python-beancount-reds-importers +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-beancount-reds-importers +# Beancount Red's Importers + +Simple importers and tools for [Beancount](https://beancount.github.io/), software for +[plain text](https://plaintextaccounting.org/), double entry bookkeeping. _More +importantly, a framework to allow you to easily write your own importers._ + +### Introduction + +This is a reference implementation of the principles expressed in +**[The Five Minute Ledger Update](https://reds-rants.netlify.app/personal-finance/the-five-minute-ledger-update/).** + +Importers can be ugly and painful to write, yet are important in automating the grunt +work out of maintaining personal finance software. The philosophy is to make writing +sustainable, dependable importers easy. To achieve this, the design separates importers +in to three parts: + +1. file format reader (reusable) +2. transaction builder (reusable) +3. institution-specific declarations and code (minimal, institution specific) <- _The + only one you have to write_ + +This design helps move most of the heavy-lifting common code into (1) and (2) above. +Writing new importers is made easier since one only has to write code to address the +institution-specific formatting and quirks for each bank/brokerage. See working examples +of an [ofx based](https://github.com/redstreet/beancount_reds_importers/blob/main/beancount_reds_importers/citi/__init__.py) and [csv](https://github.com/redstreet/beancount_reds_importers/blob/main/beancount_reds_importers/schwab_csv/__init__.py) based importers. + +### Importers + +File format readers included are: +- `.ofx` +- `.csv` (single and multitable support) +- `.xlsx` (single and multitable support) + +Transaction builders included are: +- banking (for banks and credit cards, which benefit from a postings predictor like + [smart_importer](https://github.com/beancount/smart_importer) +- investments/brokerages (to handle the very many distinct cases of investment related + transactions) +- paychecks (to handle paychecks, which typically contain very many mostly + pre-determined postings in a single entry) + +[Input in `.ofx` format (over `.csv`) is preferred](https://reds-rants.netlify.app/personal-finance/a-word-about-input-formats-use-ofx-when-you-can/), +when provided by the institution, as it minimizes data and coding errors, eliminates +format breaking changes in .csv files, and typically includes balances that are used to +generate balance assertions, and commodity prices. + +See [here](https://github.com/redstreet/beancount_reds_importers/tree/main/beancount_reds_importers) +for a list of institutions built-in. More investment, credit card, and banking +institutions will be added in the future. Contributions welcome. + +### Tools and Utilities +These commands are installed as a part of the pip installation: + +- `ofx-summarize`: Quick and dirty way to summarize a .ofx file, and peek inside it +- `bean-download`: [Download account statements automatically](https://reds-rants.netlify.app/personal-finance/direct-downloads/) + (for supporting institutions), from your configuration of accounts. Multi-threaded. + +The commands include shell auto-completion (tab-to-complete) via +[click](https://click.palletsprojects.com/en/8.1.x/shell-completion/). `bean-download`, in +particular, can complete the account or account groups you want to download, which can +be handy. To enable it, do: + +``` +mkdir -p ~/.zcomplete +_OFX_SUMMARIZE_COMPLETE=zsh_source ofx-summarize > ~/.zcomplete/ofx-summarize-complete.zsh +_BEAN_DOWNLOAD_COMPLETE=zsh_source bean-download > ~/.zcomplete/bean-download-complete.zsh + +# Place this in your shell's rc file (.zshrc or .bashrc or .fishrc): +for f in ~/.zcomplete/*; do source $f; done +``` + +## Features +- supports [Beancount](https://github.com/beancount/beancount) output via `bean-extract` + - should be easy to extend to ledger/hledger, etc. (contributions welcome) +- automatically generates [balance assertions](https://reds-rants.netlify.app/personal-finance/automating-balance-assertions/) +- support for: + - investment accounts (brokerages including retirement accounts) + - handles sweep funds, money market funds, and all standard brokerage transactions + - banking and credit card + - paychecks +- file format independent (ofx, csv, xlsx supported out of the box; single and + multitable for csv and xlsx; write your own reusable handler if needed) +- supports commodity-leaf accounts +- see [The Five Minute Ledger Update](https://reds-rants.netlify.app/personal-finance/the-five-minute-ledger-update/) + for automating downloads via `ofxclient`, connecting to `smart_importer` to + auto-classify transactions, and more + + +## Installation +``` +pip3 install beancount-reds-importers +``` + +Or to install the bleeding edge version from git: +``` +pip3 install git+https://github.com/redstreet/beancount_reds_importers +``` + + +## Running + +### Running the included examples: +1. `cd <your pip installed dir>/example #eg: cd ~/.local/lib/python3.8/site-packages/beancount_reds_importers/example` +2. `./import.sh OfxDownload.qfx` # Imports investments +3. `./import.sh transactions.qfx` # Import bank transactions; uses smart_importer to classify transactions + + +### Creating and running your own config: +1. Create your own my.import. An example my.import is provided. At the least, include your account numbers +2. Include fund information. Copy the included `fund_info.py` to start with. +3. You can now run `bean-identify`, `bean-extract`, etc. See the included script: Run `./import.sh <your_input_ofx>` +4. If identifier/cusip/isin info is missing, the importer will let you know. Add it to your + `fund_info.py` See + [this article](https://reds-rants.netlify.app/personal-finance/tickers-and-identifiers/) + for automating and managing identifier info + +## Testing +I run tests across hundreds of actual ofx and csv files, against reference outputs that +I know to be correct from my personal file. However, I'm unable to share them since +these are personal. Testing against real world files is best, so I recommend you do this +with your own input files. + +## Contributions +Contributions welcome. New importers for institutions and test input files appreciated. +Sharing importers helps the community. + + +%package help +Summary: Development documents and examples for beancount-reds-importers +Provides: python3-beancount-reds-importers-doc +%description help +# Beancount Red's Importers + +Simple importers and tools for [Beancount](https://beancount.github.io/), software for +[plain text](https://plaintextaccounting.org/), double entry bookkeeping. _More +importantly, a framework to allow you to easily write your own importers._ + +### Introduction + +This is a reference implementation of the principles expressed in +**[The Five Minute Ledger Update](https://reds-rants.netlify.app/personal-finance/the-five-minute-ledger-update/).** + +Importers can be ugly and painful to write, yet are important in automating the grunt +work out of maintaining personal finance software. The philosophy is to make writing +sustainable, dependable importers easy. To achieve this, the design separates importers +in to three parts: + +1. file format reader (reusable) +2. transaction builder (reusable) +3. institution-specific declarations and code (minimal, institution specific) <- _The + only one you have to write_ + +This design helps move most of the heavy-lifting common code into (1) and (2) above. +Writing new importers is made easier since one only has to write code to address the +institution-specific formatting and quirks for each bank/brokerage. See working examples +of an [ofx based](https://github.com/redstreet/beancount_reds_importers/blob/main/beancount_reds_importers/citi/__init__.py) and [csv](https://github.com/redstreet/beancount_reds_importers/blob/main/beancount_reds_importers/schwab_csv/__init__.py) based importers. + +### Importers + +File format readers included are: +- `.ofx` +- `.csv` (single and multitable support) +- `.xlsx` (single and multitable support) + +Transaction builders included are: +- banking (for banks and credit cards, which benefit from a postings predictor like + [smart_importer](https://github.com/beancount/smart_importer) +- investments/brokerages (to handle the very many distinct cases of investment related + transactions) +- paychecks (to handle paychecks, which typically contain very many mostly + pre-determined postings in a single entry) + +[Input in `.ofx` format (over `.csv`) is preferred](https://reds-rants.netlify.app/personal-finance/a-word-about-input-formats-use-ofx-when-you-can/), +when provided by the institution, as it minimizes data and coding errors, eliminates +format breaking changes in .csv files, and typically includes balances that are used to +generate balance assertions, and commodity prices. + +See [here](https://github.com/redstreet/beancount_reds_importers/tree/main/beancount_reds_importers) +for a list of institutions built-in. More investment, credit card, and banking +institutions will be added in the future. Contributions welcome. + +### Tools and Utilities +These commands are installed as a part of the pip installation: + +- `ofx-summarize`: Quick and dirty way to summarize a .ofx file, and peek inside it +- `bean-download`: [Download account statements automatically](https://reds-rants.netlify.app/personal-finance/direct-downloads/) + (for supporting institutions), from your configuration of accounts. Multi-threaded. + +The commands include shell auto-completion (tab-to-complete) via +[click](https://click.palletsprojects.com/en/8.1.x/shell-completion/). `bean-download`, in +particular, can complete the account or account groups you want to download, which can +be handy. To enable it, do: + +``` +mkdir -p ~/.zcomplete +_OFX_SUMMARIZE_COMPLETE=zsh_source ofx-summarize > ~/.zcomplete/ofx-summarize-complete.zsh +_BEAN_DOWNLOAD_COMPLETE=zsh_source bean-download > ~/.zcomplete/bean-download-complete.zsh + +# Place this in your shell's rc file (.zshrc or .bashrc or .fishrc): +for f in ~/.zcomplete/*; do source $f; done +``` + +## Features +- supports [Beancount](https://github.com/beancount/beancount) output via `bean-extract` + - should be easy to extend to ledger/hledger, etc. (contributions welcome) +- automatically generates [balance assertions](https://reds-rants.netlify.app/personal-finance/automating-balance-assertions/) +- support for: + - investment accounts (brokerages including retirement accounts) + - handles sweep funds, money market funds, and all standard brokerage transactions + - banking and credit card + - paychecks +- file format independent (ofx, csv, xlsx supported out of the box; single and + multitable for csv and xlsx; write your own reusable handler if needed) +- supports commodity-leaf accounts +- see [The Five Minute Ledger Update](https://reds-rants.netlify.app/personal-finance/the-five-minute-ledger-update/) + for automating downloads via `ofxclient`, connecting to `smart_importer` to + auto-classify transactions, and more + + +## Installation +``` +pip3 install beancount-reds-importers +``` + +Or to install the bleeding edge version from git: +``` +pip3 install git+https://github.com/redstreet/beancount_reds_importers +``` + + +## Running + +### Running the included examples: +1. `cd <your pip installed dir>/example #eg: cd ~/.local/lib/python3.8/site-packages/beancount_reds_importers/example` +2. `./import.sh OfxDownload.qfx` # Imports investments +3. `./import.sh transactions.qfx` # Import bank transactions; uses smart_importer to classify transactions + + +### Creating and running your own config: +1. Create your own my.import. An example my.import is provided. At the least, include your account numbers +2. Include fund information. Copy the included `fund_info.py` to start with. +3. You can now run `bean-identify`, `bean-extract`, etc. See the included script: Run `./import.sh <your_input_ofx>` +4. If identifier/cusip/isin info is missing, the importer will let you know. Add it to your + `fund_info.py` See + [this article](https://reds-rants.netlify.app/personal-finance/tickers-and-identifiers/) + for automating and managing identifier info + +## Testing +I run tests across hundreds of actual ofx and csv files, against reference outputs that +I know to be correct from my personal file. However, I'm unable to share them since +these are personal. Testing against real world files is best, so I recommend you do this +with your own input files. + +## Contributions +Contributions welcome. New importers for institutions and test input files appreciated. +Sharing importers helps the community. + + +%prep +%autosetup -n beancount_reds_importers-0.6.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-beancount-reds-importers -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.0-1 +- Package Spec generated @@ -0,0 +1 @@ +3e56a5897b5bca24f44145c95bab1717 beancount_reds_importers-0.6.0.tar.gz |