💰 Import your ING Germany bank statements via FinTS into YNAB.

Overview

ing-ynab logo

ci PyPI PyPI - Python Version PyPI - License

Import your ING Germany bank statements via FinTS into YNAB.

Setup

Before setting this up, please register your FinTS product – it's free and takes only a few days.
If you don't do this, the application will fallback to the product id from the python-fints library, which should only be used for evaluation.

Since this application will need your ING pin and YNAB access token it's recommended to run this in your local network (could be a Raspberry Pi, it's pretty light).

There are various ways to start the application:

Local

This can be run on any environment with Python 3.7 or higher.

$ python3 -m pip install ing-ynab
$ touch .env # see configuration section
$ ing-ynab

Docker

$ cp .env.example .env # and customize fields
$ docker run --env-file .env docker.pkg.github.com/bahlo/ing-ynab/ing-ynab:2.0.2

docker-compose

version: "2.0"

services:
  ing-ynab:
    image: docker.pkg.github.com/bahlo/ing-ynab/ing-ynab:2.0.2
    environment:
      # Environment variables, see the configuration section

Configuration

The configuration is done via environment variables:

  • SLEEP_INTERVAL_SECONDS: Interval in seconds until the next check happens (defaults to 5 minutes).
  • FINTS_PRODUCT_ID: Your FinTS product ID (deafults to python-fints one).
  • ING_LOGIN: The login id of your ING account.
  • ING_IBAN: The IBAN of the account you want to add.
  • ING_PIN: The pin of your ING account (leave empty to be prompted).
  • YNAB_ACCESS_TOKEN: Go to your budget settings to create one (leave empty to be prompted).
  • YNAB_BUDGET_ID: On the webpage of your budget the first UUID in the path (https://app.youneedabudget.com/<BUDGET_UUID>/budget/202109).
  • YNAB_ACCOUNT_ID: On the webpage of the bank account the last UUID in the path (https://app.youneedabudget.com/<BUDGET_UUID>/accounts/<BANK_ACCOUNT_UUID>).
  • YNAB_FLAG_COLOR: If set, use that color for the imported transactions.
  • DEBUG: Set to 1 to enable debug output and print transactions instead of importing them.

Security

You can pass in your bank pin and YNAB access token via environment variables, if you like. This has the drawback that anyone with system access can read and potentially use them so it's discouraged (but supported).

The alternative is not specifying YNAB_ACCESS_TOKEN and/or ING_PIN, which will cause the application to prompt you on startup. This has the drawback that you need to input them everytime the application restarts.

For docker you'll need to pass the -it flags to be able to input these variables. For docker-compose, add these fields:

  tty: true
  stdin_open: true

After starting with docker-compose up -d, run docker attach $container_id to attach to the container. Note that the prompt for the pin might be hidden, so you have to enter the pin directly.

FAQ

Why is this ING-only? Isn't FinTS a general protocol?

It is, but the implementations differ a lot. This actually started out as a general-purpose library but I can only really test ING and I rather have a specialised library than a multipurpose one where I can't guarantee functionality.

Can you support my bank?

The python-fints library supports a lot of banks, so probably. But we need to work together as I can't test it. Feel free to get in touch: [email protected]

How do I register the FinTS product?

  1. Go to the FinTS product registration
  2. Click Registrierungsprozess to get to a PDF form
  3. Fill in your data. If you don't know what else to put, here are some suggestions:
    • Firmenbezeichnung: Your name
    • Produktname: ing-ynab
    • Produktkategorie: Web-Server
  4. Send the form to the email adress on the last page

After a week or two you will get your product id via email.

Comments
  • Mark transactions as imported in YNAB

    Mark transactions as imported in YNAB

    This allows for transaction matching and makes the tool work like the official direct and file import features from YNAB. The format matches the official one, as it is described in their API docs. In the end it will look like this in the YNAB UI:

    Bildschirmfoto 2021-06-13 um 18 23 23

    Unmatched transactions will be added like before, items that already have a matching transaction will be linked to the existing one. If YNAB ever officially starts supporting direct import from ING there should be no duplicates either, as we adhere to their ID format.

    In theory this would also allow the tool to drop the state file - transactions with the same import id won't be added again, I tested this by re-running the tool after deleting the state file. If you want I can remove this logic, but I wanted to start with a minimal change and hear feedback from you.

    I also switched the datetime usage to date, as I noticed that the returned values from the FinTS lib are Date objects, not Datetime ones.

    Closes #117.

    opened by mKeRix 3
  • Bump idna from 2.10 to 3.2

    Bump idna from 2.10 to 3.2

    Bumps idna from 2.10 to 3.2.

    Changelog

    Sourced from idna's changelog.

    3.2 (2021-05-29) ++++++++++++++++

    • Add type hints (Thanks, Seth Michael Larson!)
    • Remove support for Python 3.4

    3.1 (2021-01-04) ++++++++++++++++

    • Ensure license is included in package (Thanks, Julien Schueller)
    • No longer mark wheel has universal (Thanks, Matthieu Darbois)
    • Test on PowerPC using Travis CI

    3.0 (2021-01-01) ++++++++++++++++

    • Python 2 is no longer supported (the 2.x branch supports Python 2, use "idna<3" in your requirements file if you need Python 2 support)
    • Support for V2 UTS 46 test vectors.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • DKB-Integration

    DKB-Integration

    opened by confluencepoint 2
  • Bump bleach from 3.2.2 to 3.2.3

    Bump bleach from 3.2.2 to 3.2.3

    Bumps bleach from 3.2.2 to 3.2.3.

    Changelog

    Sourced from bleach's changelog.

    Version 3.2.3 (January 26th, 2021)

    Security fixes

    None

    Features

    None

    Bug fixes

    • fix clean and linkify raising ValueErrors for certain inputs. Thank you @Google-Autofuzz.
    Commits
    • cd838c3 Merge pull request #579 from mozilla/validate-convert-entity-code-points
    • 612b808 Update for v3.2.3 release
    • 6879f6a html5lib_shim: validate unicode points for convert_entity
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump elementpath from 2.1.1 to 2.1.2

    Bump elementpath from 2.1.1 to 2.1.2

    Bumps elementpath from 2.1.1 to 2.1.2.

    Changelog

    Sourced from elementpath's changelog.

    v2.1.2_ (2021-01-22)

    • Extend tests for XPath 1.0/2.0 with minor fixes
    • Fix for +/- prefix operators
    • Fix for regex patterns anchors and binary datatypes
    Commits
    • 2dfa993 Fix tests for Windows systems (local path and default collation)
    • 1700377 Close release v2.1.2
    • 54504dd Fix binary datatypes (xs:hexBinary and xs:base64Binary)
    • 3cc54af Fix regex $ anchor translation (ending \n does not match)
    • bbb4eed Add test module for schema context and fix Float10 hash
    • 6b7d678 Add tests for XPath 2.0 optional arguments
    • 8160071 Extend test coverage for XPath 2.0 functions
    • 8a2bb18 Fix addition and subtraction prefix operators
    • 0d0d726 Fix XSD typing for dot shortcut
    • 5ceb71f Add check_raise() helper for tests and other tests for XPath 1.0
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump idna from 2.10 to 3.1

    Bump idna from 2.10 to 3.1

    Bumps idna from 2.10 to 3.1.

    Changelog

    Sourced from idna's changelog.

    3.1 (2021-01-04) ++++++++++++++++

    • Ensure license is included in package (Thanks, Julien Schueller)
    • No longer mark wheel has universal (Thanks, Matthieu Darbois)
    • Test on PowerPC using Travis CI

    3.0 (2021-01-01) ++++++++++++++++

    • Python 2 is no longer supported (the 2.x branch supports Python 2, use "idna<3" in your requirements file if you need Python 2 support)
    • Support for V2 UTS 46 test vectors.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies blocked 
    opened by dependabot[bot] 2
  • Bump idna from 2.10 to 3.0

    Bump idna from 2.10 to 3.0

    Bumps idna from 2.10 to 3.0.

    Changelog

    Sourced from idna's changelog.

    3.0 (2021-01-01) ++++++++++++++++

    • Python 2 is no longer supported (the 2.x branch supports Python 2, use "idna<3" in your requirements file if you need Python 2 support)
    • Support for V2 UTS 46 test vectors.
    Commits
    • a45bf88 Release v3.0
    • 82f7b70 Fix regressions from removing Python 2 support
    • 229f123 Use Github Actions for unit testing
    • d8bb757 Merge pull request #90 from kjd/fix-licensing
    • a2f5460 Merge branch 'master' into fix-licensing
    • 537aa99 Add 3-clause BSD license that Github can detect
    • 6dc4bfb Merge pull request #89 from jdufresne/py39
    • 153b5ab Use Python 3.9 release in Travis configuration
    • cc273f8 Merge pull request #88 from hugovk/add-3.9
    • 4b3e6fd Remove redundant Python 2 code
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies blocked 
    opened by dependabot[bot] 2
  • Bump chardet from 3.0.4 to 4.0.0

    Bump chardet from 3.0.4 to 4.0.0

    Bumps chardet from 3.0.4 to 4.0.0.

    Release notes

    Sourced from chardet's releases.

    chardet 4.0.0

    ⚠️ This will be the last release of chardet to support Python 2.7. chardet 5.0 will only support 3.6+ ⚠️

    Major Changes

    This release is multiple years in the making, and provides so quality of life improvements to chardet. The primary user-facing changes are:

    1. Single-byte charset probers now use nested dictionaries under the hood, so they are usually a little faster than before. (See #121 for details)
    2. The CharsetGroupProber class now properly short-circuits when one of the probers in the group is considered a definite match. This lead to a substantial speedup.
    3. There is now a chardet.detect_all function that returns a list of possible encodings for the input with associated confidences.
    4. We have dropped support for Python 2.6, 3.4, and 3.5 as they are all past end-of-life.

    The changes in this release have also laid the groundwork for retraining the models to make them more accurate, and to support some more encodings/languages (see #99 for progress). This is our main focus for chardet 5.0 (beyond dropping Python 2 support).

    Benchmarks

    Running on a MacBook Pro (15-inch, 2018) with 2.2GHz 6-core i7 processor and 32GB RAM

    old version (chardet 3.0.4)

    Benchmarking chardet 3.0.4 on CPython 3.7.5 (default, Sep  8 2020, 12:19:42)
    [Clang 11.0.3 (clang-1103.0.32.62)]
    --------------------------------------------------------------------------------
    Calls per second for each encoding:
    ascii: 25559.439366240098
    big5: 7.187002209518091
    cp932: 4.71090956645177
    cp949: 2.937256786994428
    euc-jp: 4.870580412090848
    euc-kr: 6.6910755971933416
    euc-tw: 87.71098043480079
    gb2312: 6.614302607154443
    ibm855: 27.595893549680685
    ibm866: 29.93483661732791
    iso-2022-jp: 3379.5052775763434
    iso-2022-kr: 26181.67290886392
    iso-8859-1: 120.63424740403983
    iso-8859-5: 32.65106262196898
    iso-8859-7: 62.480089080556084
    koi8-r: 13.72481001727257
    maccyrillic: 33.018537255804496
    shift_jis: 4.996013583677438
    tis-620: 14.323112928341818
    utf-16: 166771.53081510935
    utf-32: 198782.18009478672
    utf-8: 13.966236809766901
    utf-8-sig: 193732.28637413395
    windows-1251: 23.038910006925768
    </tr></table> 
    

    ... (truncated)

    Commits
    • a808ed1 Merge pull request #140 from chardet/master
    • 53854fb Add language to detect_all output
    • 1e208b7 Properly set CharsetGroupProber.state to FOUND_IT (#203)
    • a9286f7 Try to switch from Travis to GitHub Actions (#204)
    • 1db0347 Handle weird logging edge case in universaldetector.py
    • 056a2a4 Remove shebang and executable bit from chardet/cli/chardetect.py (#171)
    • 55ef330 Update links (#152)
    • e4290b6 Remove unnecessary numeric placeholders from format strings (#176)
    • 6a59c4b Remove use of deprecated 'setup.py test' (#187)
    • 4650dbf Remove shebang from nonexecutable script (#192)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump requests from 2.26.0 to 2.27.0

    Bump requests from 2.26.0 to 2.27.0

    Bumps requests from 2.26.0 to 2.27.0.

    Changelog

    Sourced from requests's changelog.

    2.27.0 (2022-01-03)

    Improvements

    • Officially added support for Python 3.10. (#5928)

    • Added a requests.exceptions.JSONDecodeError to unify JSON exceptions between Python 2 and 3. This gets raised in the response.json() method, and is backwards compatible as it inherits from previously thrown exceptions. Can be caught from requests.exceptions.RequestException as well. (#5856)

    • Improved error text for misnamed InvalidSchema and MissingSchema exceptions. This is a temporary fix until exceptions can be renamed (Schema->Scheme). (#6017)

    • Improved proxy parsing for proxy URLs missing a scheme. This will address recent changes to urlparse in Python 3.9+. (#5917)

    Bugfixes

    • Fixed defect in extract_zipped_paths which could result in an infinite loop for some paths. (#5851)

    • Fixed handling for AttributeError when calculating length of files obtained by Tarfile.extractfile(). (#5239)

    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.InvalidHeader with requests.exceptions.InvalidHeader. (#5914)

    • Fixed bug where two Host headers were sent for chunked requests. (#5391)

    • Fixed regression in Requests 2.26.0 where Proxy-Authorization was incorrectly stripped from all requests sent with Session.send. (#5924)

    • Fixed performance regression in 2.26.0 for hosts with a large number of proxies available in the environment. (#5924)

    • Fixed idna exception leak, wrapping UnicodeError with requests.exceptions.InvalidURL for URLs with a leading dot (.) in the domain. (#5414)

    Deprecations

    • Requests support for Python 2.7 and 3.6 will be ending in 2022. While we don't have exact dates, Requests 2.27.x is likely to be the last release series providing support.
    Commits
    • 0192aac v2.27.0
    • e50dc12 Fix doc link
    • 17e6e27 General cleanup for 2.27.0
    • ab38e2c Make the data vs json parameters more clear (#5382)
    • 77d1e9a Merge pull request #5894 from dbaxa/do-not-re-build-proxies-when-proxies-have...
    • b0829a8 Merge pull request #6020 from nateprewitt/pypy_37
    • 28d537d Merge pull request #5917 from nateprewitt/proxy_scheme_unknown_fix
    • 86bbee7 Update 3.10-dev to 3.10 and add pypy-3.7
    • 0d5347e Only compute should_bypass_proxies if needed
    • ef59aa0 Move from urlparse to parse_url for prepending schemes
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump pyparsing from 2.4.7 to 3.0.6

    Bump pyparsing from 2.4.7 to 3.0.6

    Bumps pyparsing from 2.4.7 to 3.0.6.

    Release notes

    Sourced from pyparsing's releases.

    pyparsing 3.0.6

    • Added suppress_warning() method to individually suppress a warning on a specific ParserElement. Used to refactor original_text_for to preserve internal results names, which, while undocumented, had been adopted by some projects.

    • Fix bug when delimited_list was called with a str literal instead of a parse expression.

    pyparsing 3.0.5

    • Added return type annotations for col, line, and lineno.

    • Fixed bug when warn_ungrouped_named_tokens_in_collection warning was raised when assigning a results name to an original_text_for expression. (Issue #110, would raise warning in packaging.)

    • Fixed internal bug where ParserElement.streamline() would not return self if already streamlined.

    • Changed run_tests() output to default to not showing line and column numbers. If line numbering is desired, call with with_line_numbers=True. Also fixed minor bug where separating line was not included after a test failure.

    pyparsing 3.0.4

    • Fixed bug in which Dict classes did not correctly return tokens as nested ParseResults, reported by and fix identified by Bu Sun Kim, many thanks!!!

    • Documented API-changing side-effect of converting ParseResults to use __slots__ to pre-define instance attributes. This means that code written like this (which was allowed in pyparsing 2.4.7):

      result = Word(alphas).parseString("abc")
      result.xyz = 100
      

      now raises this Python exception:

      AttributeError: 'ParseResults' object has no attribute 'xyz'
      

      To add new attribute values to ParseResults object in 3.0.0 and later, you must assign them using indexed notation:

      result["xyz"] = 100
      

      You will still be able to access this new value as an attribute or as an indexed item.

    • Fixed bug in railroad diagramming where the vertical limit would count all expressions in a group, not just those that would create visible railroad elements.

    pyparsing 3.0.3

    • Fixed regex typo in one_of fix for as_keyword=True.

    • Fixed a whitespace-skipping bug, Issue #319, introduced as part of the revert of the LineStart changes. Reported by Marc-Alexandre Côté, thanks!

    • Added header column labeling > 100 in with_line_numbers - some input lines are longer than others.

    pyparsing 3.0.2

    • Reverted change in behavior with LineStart and StringStart, which changed the interpretation of when and how LineStart and StringStart should match when a line starts with spaces. In 3.0.0, the xxxStart expressions were not really treated like expressions in their own right, but as modifiers to the following expression when used like LineStart() + expr, so that if there were whitespace on the line before expr (which would match in versions prior to 3.0.0), the match would fail.

      3.0.0 implemented this by automatically promoting LineStart() + expr to AtLineStart(expr), which broke existing parsers that did not expect expr to necessarily be right at the start of the line, but only be the first token found on the line. This was reported as a regression in Issue #317.

      In 3.0.2, pyparsing reverts to the previous behavior, but will retain the new AtLineStart and AtStringStart expression classes, so that parsers can chose whichever behavior applies in their specific instance. Specifically:

      # matches expr if it is the first token on the line (allows for leading whitespace)
      LineStart() + expr
      

    ... (truncated)

    Changelog

    Sourced from pyparsing's changelog.

    Version 3.0.6 -

    • Added suppress_warning() method to individually suppress a warning on a specific ParserElement. Used to refactor original_text_for to preserve internal results names, which, while undocumented, had been adopted by some projects.

    • Fix bug when delimited_list was called with a str literal instead of a parse expression.

    Version 3.0.5 -

    • Added return type annotations for col, line, and lineno.

    • Fixed bug when warn_ungrouped_named_tokens_in_collection warning was raised when assigning a results name to an original_text_for expression. (Issue #110, would raise warning in packaging.)

    • Fixed internal bug where ParserElement.streamline() would not return self if already streamlined.

    • Changed run_tests() output to default to not showing line and column numbers. If line numbering is desired, call with with_line_numbers=True. Also fixed minor bug where separating line was not included after a test failure.

    Version 3.0.4 -

    • Fixed bug in which Dict classes did not correctly return tokens as nested ParseResults, reported by and fix identified by Bu Sun Kim, many thanks!!!

    • Documented API-changing side-effect of converting ParseResults to use __slots__ to pre-define instance attributes. This means that code written like this (which was allowed in pyparsing 2.4.7):

      result = Word(alphas).parseString("abc") result.xyz = 100

      now raises this Python exception:

      AttributeError: 'ParseResults' object has no attribute 'xyz'

      To add new attribute values to ParseResults object in 3.0.0 and later, you must assign them using indexed notation:

      result["xyz"] = 100

      You will still be able to access this new value as an attribute or as an indexed item.

    ... (truncated)

    Commits
    • 16b766b Add warning suppression detection for all diagnostic warnings
    • b429eb6 Update version time for release
    • e22d4ca Revert results names for packaging compatibility (#110)
    • 85fc927 Add tests written when working on #323
    • c93973e Add asserts in unit test
    • b0adfe7 Rework version_info to use typing.NamedTuple
    • 22f8847 Add debug arg to scan_string, transform_string, search_string
    • ebd99e2 Update update_pyparsing_timestamp.py to new code structure
    • 14427a5 Get Travis and tox to work better together
    • 6bb97cc Make Travis run all tox environments
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump pyparsing from 3.0.3 to 3.0.4

    Bump pyparsing from 3.0.3 to 3.0.4

    Bumps pyparsing from 3.0.3 to 3.0.4.

    Release notes

    Sourced from pyparsing's releases.

    pyparsing 3.0.4

    • Fixed bug in which Dict classes did not correctly return tokens as nested ParseResults, reported by and fix identified by Bu Sun Kim, many thanks!!!

    • Documented API-changing side-effect of converting ParseResults to use __slots__ to pre-define instance attributes. This means that code written like this (which was allowed in pyparsing 2.4.7):

      result = Word(alphas).parseString("abc")
      result.xyz = 100
      

      now raises this Python exception:

      AttributeError: 'ParseResults' object has no attribute 'xyz'
      

      To add new attribute values to ParseResults object in 3.0.0 and later, you must assign them using indexed notation:

      result["xyz"] = 100
      

      You will still be able to access this new value as an attribute or as an indexed item.

    • Fixed bug in railroad diagramming where the vertical limit would count all expressions in a group, not just those that would create visible railroad elements.

    Changelog

    Sourced from pyparsing's changelog.

    Version 3.0.4 -

    • Fixed bug in which Dict classes did not correctly return tokens as nested ParseResults, reported by and fix identified by Bu Sun Kim, many thanks!!!

    • Documented API-changing side-effect of converting ParseResults to use __slots__ to pre-define instance attributes. This means that code written like this (which was allowed in pyparsing 2.4.7):

      result = Word(alphas).parseString("abc") result.xyz = 100

      now raises this Python exception:

      AttributeError: 'ParseResults' object has no attribute 'xyz'

      To add new attribute values to ParseResults object in 3.0.0 and later, you must assign them using indexed notation:

      result["xyz"] = 100

      You will still be able to access this new value as an attribute or as an indexed item.

    • Fixed bug in railroad diagramming where the vertical limit would count all expressions in a group, not just those that would create visible railroad elements.

    Commits
    • 6e8f7b6 Added str method to pyparsing version_info, for nicer-looking output
    • 4b7a87e Fixed bug in railroad diagramming where the vertical limit would count all ex...
    • feec989 Update docs to reflect change in attribute setting on ParseResults due to usi...
    • bb2db7b Update version time, reblacken test_unit.py
    • 77d723d Clean up markup in whats_new_in_3_0_0.rst doc
    • ae447cd Fix Dict() bugfix to wrap tokenlist.as_dict() if self.resultsName
    • 8bbc83e Wrap tokenlist in list if self.resultsName is present (#324)
    • 958d055 Update version to prep for next release (and black)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump requests from 2.26.0 to 2.27.1

    Bump requests from 2.26.0 to 2.27.1

    Bumps requests from 2.26.0 to 2.27.1.

    Release notes

    Sourced from requests's releases.

    v2.27.1

    2.27.1 (2022-01-05)

    Bugfixes

    • Fixed parsing issue that resulted in the auth component being dropped from proxy URLs. (#6028)

    Full Changelog: https://github.com/psf/requests/blob/v2.27.1/HISTORY.md#2271-2022-01-05

    v2.27.0

    2.27.0 (2022-01-03)

    Improvements

    • Officially added support for Python 3.10. (#5928)

    • Added a requests.exceptions.JSONDecodeError to unify JSON exceptions between Python 2 and 3. This gets raised in the response.json() method, and is backwards compatible as it inherits from previously thrown exceptions. Can be caught from requests.exceptions.RequestException as well. (#5856)

    • Improved error text for misnamed InvalidSchema and MissingSchema exceptions. This is a temporary fix until exceptions can be renamed (Schema->Scheme). (#6017)

    • Improved proxy parsing for proxy URLs missing a scheme. This will address recent changes to urlparse in Python 3.9+. (#5917)

    Bugfixes

    • Fixed defect in extract_zipped_paths which could result in an infinite loop for some paths. (#5851)

    • Fixed handling for AttributeError when calculating length of files obtained by Tarfile.extractfile(). (#5239)

    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.InvalidHeader with requests.exceptions.InvalidHeader. (#5914)

    • Fixed bug where two Host headers were sent for chunked requests. (#5391)

    • Fixed regression in Requests 2.26.0 where Proxy-Authorization was incorrectly stripped from all requests sent with Session.send. (#5924)

    • Fixed performance regression in 2.26.0 for hosts with a large number of proxies available in the environment. (#5924)

    ... (truncated)

    Changelog

    Sourced from requests's changelog.

    2.27.1 (2022-01-05)

    Bugfixes

    • Fixed parsing issue that resulted in the auth component being dropped from proxy URLs. (#6028)

    2.27.0 (2022-01-03)

    Improvements

    • Officially added support for Python 3.10. (#5928)

    • Added a requests.exceptions.JSONDecodeError to unify JSON exceptions between Python 2 and 3. This gets raised in the response.json() method, and is backwards compatible as it inherits from previously thrown exceptions. Can be caught from requests.exceptions.RequestException as well. (#5856)

    • Improved error text for misnamed InvalidSchema and MissingSchema exceptions. This is a temporary fix until exceptions can be renamed (Schema->Scheme). (#6017)

    • Improved proxy parsing for proxy URLs missing a scheme. This will address recent changes to urlparse in Python 3.9+. (#5917)

    Bugfixes

    • Fixed defect in extract_zipped_paths which could result in an infinite loop for some paths. (#5851)

    • Fixed handling for AttributeError when calculating length of files obtained by Tarfile.extractfile(). (#5239)

    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.InvalidHeader with requests.exceptions.InvalidHeader. (#5914)

    • Fixed bug where two Host headers were sent for chunked requests. (#5391)

    • Fixed regression in Requests 2.26.0 where Proxy-Authorization was incorrectly stripped from all requests sent with Session.send. (#5924)

    • Fixed performance regression in 2.26.0 for hosts with a large number of proxies available in the environment. (#5924)

    • Fixed idna exception leak, wrapping UnicodeError with requests.exceptions.InvalidURL for URLs with a leading dot (.) in the domain. (#5414)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump xmlschema from 1.9.1 to 1.9.2

    Bump xmlschema from 1.9.1 to 1.9.2

    Bumps xmlschema from 1.9.1 to 1.9.2.

    Release notes

    Sourced from xmlschema's releases.

    v1.9.2 (2021-12-23)

    • Fix for global simple type naming (issue #278)
    • Use mypy==0.930 for static typing checks
    Changelog

    Sourced from xmlschema's changelog.

    v1.9.2_ (2021-12-23)

    • Fix for global simple type naming (issue #278)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • fints.exceptions.FinTSDialogInitError

    fints.exceptions.FinTSDialogInitError

    I sometimes get this error:

    Unexpected error: <class 'fints.exceptions.FinTSDialogInitError'>
    

    When I do, it occurs on every run afterwards. We should either abort the program or reinitialise the FinTS client (I'd prefer the latter).

    bug 
    opened by bahlo 0
Releases(v2.0.2)
  • v2.0.2(Aug 31, 2021)

  • v2.0.1(Aug 24, 2021)

  • v2.0.0(Aug 22, 2021)

    Added

    • PayPal transactions are now modified to have separate payees (instead of just PayPal) #160

    Changed

    • The start date is now determined by the last transaction in the YNAB account, removing the need for a state file (it's safe to delete) #159
    • The application now needs Python >=3.7 (before it was >=3.8) #157
    • SLEEP_INTERVAL is now called SLEEP_INTERVAL_SECONDS
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Jun 14, 2021)

  • v1.2.0(May 30, 2021)

  • v1.1.1(Oct 31, 2020)

  • v1.1.0(Aug 28, 2020)

    Fixed

    • Duplicate imports due to same date, applicant, purpose and amount
    • Only prompt for YNAB Access Token if not in debug mode

    ⚠️ Upgrading will break state once, so before upgrading make sure START_DATE is set to today or unset. Once you've upgraded you will have some duplicates from today. A later release will introduce versioning to the hash sum so we can do these changes without breaking state (https://github.com/bahlo/ing-ynab/issues/8).

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Aug 15, 2020)

  • v1.0.1(Aug 14, 2020)

  • v1.0.0(Aug 14, 2020)

    ing-ynab is now considered stable. :rocket: I've been running it over a week while improving the codebase and CI setup without any major bugs.

    Added

    • FAQ section on the README.md
    • Dependabot configuration

    Changed

    • Renamed the project {ing_ynab => ing-ynab} to match the binary
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Aug 13, 2020)

  • v0.4.0(Aug 12, 2020)

    Added

    • Types
    • Basic tests
    • CI
    • License
    • setup.py

    Changed

    • Renamed most of the FINTS_ env vars to ING_
    • Split code in multiple modules

    Fixed

    • Fixes a bug where new transactions were imported multiple times
    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Aug 9, 2020)

    This release fixes a bug where the application would not prompt for the YNAB access token until there are new transactions and always prompt for the FinTS password but only use it if the env was empty.

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Aug 9, 2020)

  • v0.2.0(Aug 9, 2020)

  • v0.1.0(Aug 9, 2020)

Owner
Arne Bahlo
he/him
Arne Bahlo
Automatic Video Library Manager for TV Shows

Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. Dependen

1.5k Dec 22, 2022
Py hec token mgr - Create HEC tokens in Cribl Stream through the API

Add HEC tokens via API calls This script is intended as an example of how to aut

Jon Rust 3 Mar 04, 2022
An anime themed telegram group management bot based on sqlalchemy database running on python3.

Kazuko Robot A Telegram Python bot running on python3 forked with saitama and DiasyX with a sqlalchemy database and an entirely themed persona to make

heyaaman 22 Dec 07, 2022
ELiza music is a telegram music bot project, allow you to play music on voice chat group telegram.

❤️ 𝗘𝗹𝗶𝘇𝗮 𝗠𝘂𝘀𝗶𝗰 ❤️ Unmaintained. The new repo of @MrsElizaRobot is private. (It is no longer based on this source code. The completely rewrit

Team Eliza 2 Dec 08, 2022
AWS EC2 S3 Automated With python

AWS_EC2_S3_Automated Description This programme is a Python3 script that utilizes Boto3 to automate the process of creating an AWS EC2 instance with a

niall_crowe 2 Nov 16, 2021
Official Python wrapper for the Quantel Finance API

Quantel is a powerful financial data and insights API. It provides easy access to world-class financial information. Quantel goes beyond just financial statements, giving users valuable information l

Guy 47 Oct 16, 2022
Example-bot-discord - Example bot discord xD

example-python-bot-discord Clone this repository Grab a token on Discord's devel

Amitminer 1 Mar 14, 2022
A Discord Rich Presence App to set your own custom rich presence.

discord-rich-presence A Discord Rich Presence App to set your own custom rich presence. #BUILDS Ready to use package are available inside "finalpackag

1 Nov 22, 2021
Python 3 tools for interacting with Notion API

NotionDB Python 3 tools for interacting with Notion API: API client Relational database wrapper Installation pip install notiondb API client from noti

Viet Hoang 14 Nov 24, 2022
Python bindings for BigML.io

BigML Python Bindings BigML makes machine learning easy by taking care of the details required to add data-driven decisions and predictive power to yo

BigML Inc, Machine Learning made easy 271 Dec 27, 2022
twitter bot tha uses tweepy library class to connect to TWITTER API

TWITTER-BOT-tweepy- twitter bot that uses tweepy library class to connect to TWITTER API replies to mentions automatically and follows the tweet.autho

Muziwandile Nkomo 2 Jan 08, 2022
Free Game Download Client

XGames Free Game Download Client В проекте была использована библиотека igruha а также PyQt5 WARN ⚠️ Возможно потребуется скачать и установить vc_redi

LORD_CODE 3 Jun 25, 2022
And now, for the first time, you can send alerts via action from ArcSight ESM Console to the TheHive when Correlation Rules are triggered.

ArcSight Integration with TheHive And now, for the first time, you can send alerts via action from ArcSight ESM Console to the TheHive when Correlatio

Amir Hossein Zargaran 3 Jan 19, 2022
Script que envia e-mails de denúncia para desativar número de WhatsApp.

SpamReport (Alpha) Este script foi feito apenas para uso educacional, não me responsabilizo por qualquer uso indevido. Version: 1.0 Alpha Ative essa o

Kiny-Kiny 83 Dec 20, 2022
Ethereum Gas Fee for the MacBook Pro touchbar (using BetterTouchTool)

Gasbar Ethereum Gas Fee for the MacBook Pro touchbar (using BetterTouchTool) Worried about Ethereum gas fees? Me too. I'd like to keep an eye on them

TSS 51 Nov 14, 2022
Pls give vaccine.

Pls Give Vaccine A script to spam yourself with vaccine notifications. Explore the docs » View Demo · Report Bug · Request Feature Table of Contents A

Rohan Mukherjee 3 Oct 27, 2021
Pdisk Link Converter Telegram Bot, Convert link in a single click

Pdisk Converter Bot Make short link by using Pdisk API key Installation The Easy Way Required Variables BOT_TOKEN: Create a bot using @BotFather, and

Ayush Kumar Jaiswal 6 Jul 28, 2022
🎄 JustaGrabber - A discord token grabber written in python3

🎄 JustaGrabber - A discord token grabber written in python3 🎇 Made by kldiscord https://github.com/kldiscord 🌟 Please leave a star if you liked Jus

1 Dec 19, 2022
A Pancakeswap and Uniswap trading client (and bot) with limit orders, marker orders, stop-loss, custom gas strategies, a GUI and much more.

Pancakeswap and Uniswap trading client Adam A A Pancakeswap and Uniswap trading client (and bot) with market orders, limit orders, stop-loss, custom g

570 Mar 09, 2022
Auto file forward bot with python

Auto-File-Forward-Bot Auto file forward bot. Without Admin Permission in FROM_CHANNEL Only Give Permission In your Telegram Personal Channel Please fo

Milas 1 Oct 15, 2021