Metadata-Version: 2.1
Name: quiffen
Version: 1.1.0
Summary: Quiffen
Home-page: UNKNOWN
Author: Isaac Harris-Holt
Author-email: isaac@harris-holt.com
License: GNU GPLv3
Description: Quiffen
        ========
        
        .. content
        
        Quiffen is a Python package for parsing QIF (Quicken Interchange Format) files.
        
        The package allows users to both read QIF files and interact with the contents, and also to create a QIF structure
        and then output to either a QIF file, a CSV of transaction data or a pandas DataFrame.
        
        QIF is an old file type, but has its merits because:
        
        - It's standardised (apart from dates, but that can be dealt with)
        
          - Unlike CSVs, QIF files all follow the same format, so they don't require special attention when they come from
            different sources
        
        - It's written in plain text
        
        Features
        --------
        
        - Import QIF files and manipulate data
        - Create QIF structures (support for Transactions, Investments, Accounts, Categories, Classes, Splits)
        - Convert Qif objects to a number of different formats and export (pandas DataFrame, CSV, QIF file)
        
        Usage
        ------
        
        Here's an example parsing of a QIF file:
        
        >>> from quiffen import Qif
        >>> qif = Qif.parse('test.qif')
        >>> qif.accounts
        {'Quiffen Default Account': Account(name='Quiffen Default Account', desc='The default account created by Quiffen when no
        other accounts were present')}
        >>> acc = qif.accounts['Quiffen Default Account']
        >>> acc.transactions
        {'Bank': TransactionList(Transaction(date=datetime.datetime(2021, 2, 14, 0 , 0), amount=150.0, ...), ...),
        'Invst': TransactionList(...)}
        >>> tr = acc.transactions['Bank'][0]
        >>> print(tr)
        Transaction:
            Date: 2020-02-14 00:00:00
            Amount: 67.5
            Payee: T-Mobile
            Category: Cell Phone
            Split Categories: ['Bills']
            Splits: 2 total split(s)
        >>> qif.categories
        {'Bills': Category(name='Bills), expense=True, hierarchy='Bills'}
        >>> bills = qif.categories['Bills']
        >>> print(bills.render_tree())
        Bills (root)
        â””â”€ Cell Phone
        >>> df = qif.to_dataframe(data='transactions')
        >>> df.head()
                date  amount           payee  ...                           memo cleared check_number
        0 2020-02-14    67.5        T-Mobile  ...                            NaN     NaN          NaN
        1 2020-02-14    32.0  US Post Office  ...  money back for damaged parcel     NaN          NaN
        2 2020-12-02   -10.0          Target  ...        two transactions, equal     NaN          NaN
        3 2020-11-02   -25.0         Walmart  ...          non split transaction       X        123.0
        4 2020-10-02  -100.0      Amazon.com  ...                   test order 1       *          NaN
        ...
        
        And here's an example of creating a QIF structure and exporting to a QIF file:
        
        >>> import quiffen
        >>> from datetime import datetime
        >>> qif = quiffen.Qif()
        >>> acc = quiffen.Account('Personal Bank Account', desc='My personal bank account with Barclays.')
        >>> qif.add_account(acc)
        >>> groceries = quiffen.Category('Groceries')
        >>> essentials = quiffen.Category('Essentials')
        >>> groceries.add_child(essentials)
        >>> qif.add_category(groceries)
        >>> tr = quiffen.Transaction(date=datetime.now(), amount=150.0)
        >>> acc.add_transaction(tr, header='Bank')
        >>> qif.to_qif()  # If a path is provided, this will save the file too!
        '!Type:Cat\nNGroceries\nETrue\nIFalse\n^\nNGroceries:Essentials\nETrue\nIFalse\n^\n!Account\nNPersonal Bank Account\nDMy
        personal bank account with Barclays.\n^\n!Type:Bank\nD02/07/2021\nT150.0\n^\n'
        
        Documentation
        -------------
        
        Documentation can be found at: https://quiffen.readthedocs.io/en/latest/
        
        Installation
        ------------
        
        Install Quiffen by running:
        
        >>> pip install quiffen
        
        Dependencies
        ------------
        
        - `pandas <https://pypi.org/project/pandas/>`_ (optional) for exporting to DataFrames
        
          - The ``to_dataframe()`` method will not work without pandas installed.
        
        To-Dos
        ------
        
        - Add support for the ``MemorizedTransaction`` object present in QIF files.
        
        Contribute
        ----------
        
        GitHub pull requests welcome, though if you want to make a major change, please open an issue first for discussion.
        
        - Issue Tracker: https://github.com/isaacharrisholt/quiffen/issues
        - Source Code: https://github.com/isaacharrisholt/quiffen
        
        Support
        -------
        
        If you are having issues, please let me know.
        
        License
        -------
        
        The project is licensed under the GNU GPLv3 license.
Keywords: qif,finance,data processing
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3
Description-Content-Type: text/x-rst
