# 🍃 1099 Parser
> Note: Dividend features are in beta. I haven't written tests yet. Use the `--analysis-report` flag to get more details about how decisions are made and double check my work.
## Massive caveat: The parser is no longer compatible with Robinhood or Wealthfront for the 2023 tax year.
Both institutions have simplified their sales reports so that securities sold on a particular day but acquired on different days no have a separate line item for each of the dates acquired (and, in lieu of reporting any acquisition dates at all, the acquired date is simply 'Various'). This breaks the parser (which can be fixed) but more importantly removes a piece of information. Without date acquired, it's no longer possible to analyze (based purely on the consolidated 1099) whether dividends become unqualified.
[![Build](https://github.com/ajwells256/1099-Parser/actions/workflows/build.yaml/badge.svg)](https://github.com/ajwells256/1099-Parser/actions/workflows/build.yaml)
> This project converts standard 1099 tax documents (validated on Robinhood and Wealthfront documents so far) from PDF to CSV file. This tool will be helpful for those who need every transaction in a spreadsheet format for tax reporting purposes. After parsing the tax documents, it will perform some simple analysis on the holding period of securities which reported qualifying dividends.
### Original Work
Copyright (c) 2023 Andrew Wells (ajwells@uchicago.com)
### Original Author
Many kudos to original author Keun Park (kevin.park1217@gmail.com), whose work I used as a foundation upon which to expand.
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/donate?business=P3M77TR7L8LBA&item_name=Thanks+for+supporting+my+work%21¤cy_code=USD)
## 🚀 Running Locally
### Prerequisites
Make sure you have the following installed on your computer.
- Latest [Python 3](https://www.python.org/downloads/)
Must be version 3.6 or higher
- [**Windows Only**] [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019)
In the installer, select
- C++ build tools
- the *Windows 10 SDK*
- the latest version of *MSVC v142 x64/x86 build tools*.
### Installing
```bash
$ python -m pip install wheel
$ python -m pip install --upgrade parse_1099
```
**Note**: If commands above fail, try replacing `python` with `python3`
### Running
```bash
$ parse_1099
usage: parse_1099 [-h] --pdf FILE [--csv FILE] [--silent] [--validate] [--disable-dividend-analysis] [--analysis-report]
```
### Example and Validation
Set the `--validate` flag to print out total values for some columns. Make sure these values match with the PDF!
```bash
$ parse_1099 --pdf consolidated_1099.pdf --validate
Pages: 100%|██████████████████████████████████████████████████████████████| 40/40 [00:03<00:00, 10.41it/s]
>>> Calculated Totals:
Make sure the values matches with the PDF totals!
proceeds: $77,521.03, cost: $80,902.05, wash_sales_loss: $3,733.41, gain_loss: $352.39
>>> Saved to output.csv
```
## 🐞 Issues and Bugs
If you have any issues with the tool, please open a GitHub Issue with as much as detail as you can provide.
## Development
### Structure
This is the first python module I've worked on, so the structure may be a little goofy. I tried to structure the project into two parsers, one for 1099-B Proceeds from Broker and Barter Exchange Transactions and one for 1099-DIV Detail for Dividends and Distributions.
In each case, I designed for extensibility via versioning, in case the structure of the data or the presentation of the data on the PDF ever changes. Hypothetically the correct version of the subparser could be detected, but there's no sense writing that functionality until the scenario arises.
### Building
The following will build the python wheel file into the `dist` folder. Note that `python` and `pip` can be exchanged with `python3` and `pip3` depending on your environment configuration.
```bash
$ python -m build
```
The following will update the installed module requiring a version bump.
```bash
$ pip install dist/parse_1099-X.Y.Z-...whl --force-reinstall --no-deps
```
Raw data
{
"_id": null,
"home_page": "",
"name": "parse-1099",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6, <4",
"maintainer_email": "",
"keywords": "pdf,csv,parsing,excel,spreadsheet,tax,1099",
"author": "Andrew Wells, Keun Tae (Kevin) Park",
"author_email": "ajwells@uchicago.com, kevin.park1217@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/45/a4/4c36d15989a392652cd3b1ee7475e320d5890fd356120cbaaf058399a282/parse_1099-2.1.2.tar.gz",
"platform": null,
"description": "# \ud83c\udf43 1099 Parser\n\n> Note: Dividend features are in beta. I haven't written tests yet. Use the `--analysis-report` flag to get more details about how decisions are made and double check my work.\n\n## Massive caveat: The parser is no longer compatible with Robinhood or Wealthfront for the 2023 tax year.\nBoth institutions have simplified their sales reports so that securities sold on a particular day but acquired on different days no have a separate line item for each of the dates acquired (and, in lieu of reporting any acquisition dates at all, the acquired date is simply 'Various'). This breaks the parser (which can be fixed) but more importantly removes a piece of information. Without date acquired, it's no longer possible to analyze (based purely on the consolidated 1099) whether dividends become unqualified.\n\n[![Build](https://github.com/ajwells256/1099-Parser/actions/workflows/build.yaml/badge.svg)](https://github.com/ajwells256/1099-Parser/actions/workflows/build.yaml)\n\n> This project converts standard 1099 tax documents (validated on Robinhood and Wealthfront documents so far) from PDF to CSV file. This tool will be helpful for those who need every transaction in a spreadsheet format for tax reporting purposes. After parsing the tax documents, it will perform some simple analysis on the holding period of securities which reported qualifying dividends.\n\n\n### Original Work\n\nCopyright (c) 2023 Andrew Wells (ajwells@uchicago.com)\n\n### Original Author\n\nMany kudos to original author Keun Park (kevin.park1217@gmail.com), whose work I used as a foundation upon which to expand.\n\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/donate?business=P3M77TR7L8LBA&item_name=Thanks+for+supporting+my+work%21¤cy_code=USD)\n\n\n## \ud83d\ude80 Running Locally\n\n### Prerequisites\n\nMake sure you have the following installed on your computer.\n- Latest [Python 3](https://www.python.org/downloads/) \n Must be version 3.6 or higher\n- [**Windows Only**] [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) \n In the installer, select\n - C++ build tools\n - the *Windows 10 SDK*\n - the latest version of *MSVC v142 x64/x86 build tools*.\n\n\n### Installing\n```bash\n$ python -m pip install wheel\n$ python -m pip install --upgrade parse_1099\n```\n**Note**: If commands above fail, try replacing `python` with `python3`\n\n### Running\n```bash\n$ parse_1099\nusage: parse_1099 [-h] --pdf FILE [--csv FILE] [--silent] [--validate] [--disable-dividend-analysis] [--analysis-report]\n```\n\n### Example and Validation\n\nSet the `--validate` flag to print out total values for some columns. Make sure these values match with the PDF!\n\n```bash\n$ parse_1099 --pdf consolidated_1099.pdf --validate\nPages: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 40/40 [00:03<00:00, 10.41it/s]\n>>> Calculated Totals:\n Make sure the values matches with the PDF totals!\n proceeds: $77,521.03, cost: $80,902.05, wash_sales_loss: $3,733.41, gain_loss: $352.39\n>>> Saved to output.csv\n```\n\n## \ud83d\udc1e Issues and Bugs\nIf you have any issues with the tool, please open a GitHub Issue with as much as detail as you can provide.\n\n## Development\n### Structure\nThis is the first python module I've worked on, so the structure may be a little goofy. I tried to structure the project into two parsers, one for 1099-B Proceeds from Broker and Barter Exchange Transactions and one for 1099-DIV Detail for Dividends and Distributions.\n\nIn each case, I designed for extensibility via versioning, in case the structure of the data or the presentation of the data on the PDF ever changes. Hypothetically the correct version of the subparser could be detected, but there's no sense writing that functionality until the scenario arises.\n\n### Building\nThe following will build the python wheel file into the `dist` folder. Note that `python` and `pip` can be exchanged with `python3` and `pip3` depending on your environment configuration.\n```bash\n$ python -m build\n```\n\nThe following will update the installed module requiring a version bump.\n```bash\n$ pip install dist/parse_1099-X.Y.Z-...whl --force-reinstall --no-deps\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "Parses 1099 tax document (1099-B, 1099-INT, 1099-DIV) from PDF into CSV format and performs simple analysis",
"version": "2.1.2",
"project_urls": {
"Bug Reports": "https://github.com/ajwells256/1099-Parser/issues",
"Source": "https://github.com/ajwells256/1099-Parser"
},
"split_keywords": [
"pdf",
"csv",
"parsing",
"excel",
"spreadsheet",
"tax",
"1099"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7459155aef0cd524ef91def54be969af48be334cbc7fa00d8212d7cbc4bd7ed0",
"md5": "1e9401fb4d5e1acb24b92a97a6e68b0a",
"sha256": "47d15104394706911e3926846eae5b138e4e7e437a73528403dee762ff68702f"
},
"downloads": -1,
"filename": "parse_1099-2.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1e9401fb4d5e1acb24b92a97a6e68b0a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6, <4",
"size": 35375,
"upload_time": "2024-02-25T04:05:39",
"upload_time_iso_8601": "2024-02-25T04:05:39.459451Z",
"url": "https://files.pythonhosted.org/packages/74/59/155aef0cd524ef91def54be969af48be334cbc7fa00d8212d7cbc4bd7ed0/parse_1099-2.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "45a44c36d15989a392652cd3b1ee7475e320d5890fd356120cbaaf058399a282",
"md5": "0e6c3d8fbce15a1997ac82af39b37a1a",
"sha256": "f8b61f364f22f715cf61a54afbf61dcd3b5a4faca11beef4b0dc1297e7ccf202"
},
"downloads": -1,
"filename": "parse_1099-2.1.2.tar.gz",
"has_sig": false,
"md5_digest": "0e6c3d8fbce15a1997ac82af39b37a1a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6, <4",
"size": 33987,
"upload_time": "2024-02-25T04:05:41",
"upload_time_iso_8601": "2024-02-25T04:05:41.186033Z",
"url": "https://files.pythonhosted.org/packages/45/a4/4c36d15989a392652cd3b1ee7475e320d5890fd356120cbaaf058399a282/parse_1099-2.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-25 04:05:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ajwells256",
"github_project": "1099-Parser",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "parse-1099"
}