Data loader and input generator for RP2 (https://pypi.org/project/rp2/), the privacy-focused, free, open-source US cryptocurrency tax calculator: DaLI removes the need to manually prepare RP2 input files. Just like RP2, DaLI is also free, open-source and it prioritizes user privacy.
Project description
DaLI for RP2 v0.3.25
Table of Contents
- Introduction
- License
- Download
- Installation
- Running
- Configuration File
- Reporting Bugs
- Contributing
- Developer Documentation
- Frequently Asked Questions
- Change Log
Introduction
DaLI (Data Loader Interface) is a data loader and input generator for RP2, the privacy-focused, free, open-source US cryptocurrency tax calculator: DaLI removes the need to manually prepare RP2 input files. Just like RP2, DaLI is also free, open-source and it prioritizes user privacy by storing crypto transaction data on the user's computer and never sending it anywhere else.
It performs the following operations:
- it reads in crypto transaction information from multiples native sources: CSV files and/or REST-based services;
- it analyzes, processes and merges this data;
- it uses the processed data to generate an ODS input file for RP2 and its respective JSON configuration file.
DaLI has a programmable plugin architecture for data loaders (both CSV and REST-based). While some exchanges and wallets are already supported out-of-the-box, more are needed: help us make DaLI a robust open-source, community-driven crypto data loader by contributing plugins for exchanges and wallets! Check data-loader-plugin open issues.
DaLI has unit tests coverage to reduce the risk of regression.
Note that DaLI has RP2 as a dependency, so installing DaLI causes RP2 to be installed as well.
IMPORTANT DISCLAIMER:
- DaLI offers no guarantee of correctness (read the license): always verify results with the help of a tax professional.
License
DaLI is released under the terms of Apache License Version 2.0. For more information see LICENSE or http://www.apache.org/licenses/LICENSE-2.0.
Download
The latest version of DaLI can be downloaded at: https://pypi.org/project/dali-rp2/
Installation
DaLI has been tested on Ubuntu Linux, macOS and Windows 10 but it should work on all systems that have Python version 3.7.0 or greater.
Installation on Ubuntu Linux
Open a terminal window and enter the following commands:
sudo apt-get update
sudo apt-get install python3 python3-pip
Then install DaLI:
pip install dali-rp2
Installation on macOS
First make sure Homebrew is installed, then open a terminal window and enter the following commands:
brew update
brew install python3
Then install DaLI:
pip install dali-rp2
Installation on Windows 10
First make sure Python 3.7 or greater is installed (in the Python installer window be sure to click on "Add Python to PATH"), then open a PowerShell window and enter the following:
pip install dali-rp2
Installation on Other Unix-like Systems
- install python 3.7 or greater
- install pip3
pip install dali-rp2
Running
DaLI reads in a user-prepared configuration file in INI format, which is used to initialize data loaders (plugins) and configure DaLI's behavior. The format of the configuration file is described in detail in the configuration file documentation.
An example of a configuration file can be found in test_config.ini.
After reading the configuration file, DaLI reads crypto data from native sources and generates a RP2 input ODS file and a RP2 configuration file in the output
directory or where specified with the -o
CLI option.
To try DaLI with the example configuration, download the following files:
Let's call <download_directory>
the location of the downloaded files. To generate RP2 input files using DaLI, open a terminal window (or PowerShell if on Windows) and enter the following commands:
cd <download_directory>
mkdir input
mv *.csv input
dali -s -o output -p test_ test_config.ini
The -s
option allows DaLI to retrieve spot price information from Yahoo Finance (highest daily value), when it's not available from the CSV files or REST services.
The ODS output file is generated in the output directory (or wherever specified with the -o option).
To print command usage information for the dali
command:
dali --help
To compute taxes with RP2 using the generated input files (using both FIFO and LIFO accounting methods):
cd <download_directory>
rp2_us -m fifo -o output/ -p rp2_ output/test_crypto_data.config output/test_crypto_data.ods
rp2_us -m lifo -o output/ -p rp2_ output/test_crypto_data.config output/test_crypto_data.ods
Configuration File
Read the configuration file documentation.
Reporting Bugs
Read the Contributing document.
Contributing
Read the Contributing document.
Developer Documentation
Read the developer documentation.
Frequently Asked Questions
Read the user FAQ list and the developer FAQ list.
Change Log
Read the Change Log document.
RP2 Change Log
0.3.25
- merged PR #18: Coinbase plugin wasn't handling crypto conversions correctly and generated negative amounts.
0.3.23
- merged PR #14: in Coinbase Pro plugin crypto fee is now modeled correctly both for buy and sell-side fills
- fixed issue #16: added support for inflation_reward transaction in Coinbase plugin
- added load caching to speed up development (PR #12)
- added parallelism to Coinbase plugin (PR #12)
0.3.22
- fixed issue #16: added support for Coinbase inflation reward transaction
- added error log for unknown transaction type in all plugins, so they are easy to identify and report
- added FAQ on supported exchanges/wallets
- added support for more transaction types in BlockFi plugin (PR #11)
0.3.21
- fixed bug reported in issue https://github.com/eprbell/dali-rp2/issues/10
- fixed from/to_currency detection in Coinbase Pro plugin (PR #9)
- added initial version of developer FAQ document: https://github.com/eprbell/dali-rp2/blob/main/docs/developer_faq.md
- minor fixes to documentation
0.3.20
- fixed a bug in transaction resolver: IN -> IN transaction hint was assigning wrong value to fiat_fee
- fixed a bug in Coinbase plugin: receiving a crypto gift from another Coinbase user generated a transaction with wrong fiat_in_with_fee value
- reworked some of the code to use latest RP2 features: specifically fee-only transactions and crypto_fee in in-transactions. E.g.: Coinbase Pro coin swap code, transaction resolver INTRA -> OUT transaction hint application, etc.
- DaLI output file (the RP2 input file) now has in-transaction crypto_fee. Also updated unit test golden file
- refactored all transaction constructor calls to use keyword arg calling style
- updated setup.cfg dependencies to latest RP2
0.3.19
- Trezor plugin: AM/PM was not parsed correctly in timestamp. Fixed.
- Minor fixes
0.3.18
- fixed a limitation in timestamp processing in Trezor and Trezor Old plugins. The timezone that was passed to the plugin constructor could only be an ISO 8601 format offset: something like "America/Los Angeles" would not be accepted. This caused problems with daylight saving timestamps in Trezor CSV files: daylight savings time would just be ignored, thus causing Trezor summer timestamps to be 1 hour off
- updated input, input/golden, config and docs/configuration_file.md to reflect the above fix
- added pytz stubs
v0.3.17
- added new FAQ on adding support for new wallets and exchanges
- minor fixes
v0.3.16
- Trezor plugin: dusting attack was incorrectly interpreted as cost-only transaction. Now it issues a warning to the user
- minor fixes to documentation
v0.3.15
- minor edits to documentation and metafiles
v0.3.12
- fixed a few broken links in README.md (when used from Pypi only)
- fixed CLI --help description
- minor improvements to documentation
v0.3.7
- major improvements to documentation
- added notes in generated file to describe crypto conversion transactions in Coinbase Pro
- small performance improvement: signature reflexive call is now called only once per class, instead of once per instance
v0.3.6
- template.ods was missing from the final package. Fixed in setup.cfg
- various fixes to documentation
v0.3.4
- First version tracked in change log and uploaded to Github
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dali-rp2-0.3.25.tar.gz
.
File metadata
- Download URL: dali-rp2-0.3.25.tar.gz
- Upload date:
- Size: 78.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90ae88b86ee370c7d72314f8c06257429e83cf82d35bf6f2b0b2292c924ca42a |
|
MD5 | 5ccb5456d1550199bba2eafdcbaac424 |
|
BLAKE2b-256 | a5a84cb9dc681646f78f9d9471651304db6ae97725ecbbf3fede97b45441466f |
File details
Details for the file dali_rp2-0.3.25-py3-none-any.whl
.
File metadata
- Download URL: dali_rp2-0.3.25-py3-none-any.whl
- Upload date:
- Size: 69.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e217e0d8ea4c935ee0f2d21c5cdc9856ebf2e6e8fd06a15fc687e34e5f09f20 |
|
MD5 | 327faece1d7f38f4b700b600a88f1ec9 |
|
BLAKE2b-256 | 6fc5ae7ce1400eeff3dc12d25070624a8242bd035168e211c102b13bd3e219fc |