💰 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
pymobiledevice fork with more recent coding standards and many more features

Description Features Installation Usage Sending your own messages Lockdown messages Instruments messages Example Lockdown services com.apple.instrumen

255 Dec 28, 2022
A project that alerts me when there's a dog outside so I can go look at it.

Dog Detector A project that alerts me when there's a dog outside so I can go look at it. Tech Specs This script uses the YOLOv3 object detection model

rydercalmdown 58 Jul 29, 2022
The Foursquare API client for Python

foursquare Python client for the foursquare API. Philosophy: Map foursquare's endpoints one-to-one Clean, simple, Pythonic calls Only handle raw data,

Mike Lewis 400 Dec 19, 2022
SQS + Lambda를 활용한 문자 메시지 및 이메일, Voice call 호출을 간단하게 구현하는 serverless 템플릿

AWS SQS With Lambda notification 서버 구축을 위한 Poc TODO serverless를 통해 sqs 관련 리소스(람다, sqs) 배포 가능한 템플릿 작성 및 배포 poc차원에서 간단한 rest api 호출을 통한 sqs fifo 큐에 메시지

김세환 4 Aug 08, 2021
A Discord bot to scrape textfiles from messages and put them to Hastebin

A Discord bot to scrape textfiles from messages and put them to Hastebin. Intended to use on support servers to help users read textfiles on mobile.

1 Jan 23, 2022
Bulk convert image types with Python

Bulk Image Converter 🔥 Helper script to convert a folder's worth of images from one filetype to another, and optionally delete originals Use Setup /

1 Nov 13, 2021
Notion API Database Python Implementation

Python Notion Database Notion API Database Python Implementation created only by database from the official Notion API. Installing / Getting started p

minwook 78 Dec 19, 2022
An advanced Filter Bot with nearly unlimitted filters!

Unlimited Filter Bot ㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤ An advanced Filter Bot with nearly unlimitted filters! Features Nearly unlimited filters Supports all type of fil

1 Nov 20, 2021
Change Discord HypeSquad in few seconds!

a simple python script that change your hypesquad to what house you choose

Ho3ein 5 Nov 16, 2022
Wechat based auto reply with pyautogui

Python-微信 自动回复 练手~ 一直想做个给微信发个消息,就可以跑Python程序,并将结果发送给我的东西,之前看了 B站@不高兴就喝水 的视频,终于有了灵感~ 使用的是模拟点击方案,请求期间是不能操作了。 库 pyautogui 用于模拟鼠标键盘操作和定位操作位置 pyperclip 剪贴板

Vito Song 1 Oct 22, 2022
Intelligent Trading Bot: Automatically generating signals and trading based on machine learning and feature engineering

Intelligent Trading Bot: Automatically generating signals and trading based on machine learning and feature engineering

Alexandr Savinov 326 Jan 03, 2023
Tglogging - A python package to send your app logs to a telegram chat in realtime

Telegram Logger A simple python package to send your app logs to a telegram chat

SUBIN 60 Dec 27, 2022
Automates the process to obtain an appointment for NIE in spain.

get-nie-appointment A Python script that automates the process of getting an appointment for NIE assignation. It can be modified in order to change th

Ezequiel Aceto 39 Nov 28, 2022
SongLink Discord Bot - Discord bot to share music links easily

SongLink_Discord_Bot Discord bot to share music links easily. Take a link from y

Edgar Lefevre 4 Feb 18, 2022
Bill is a bot capable to Chat with you, search everything on web to you, and send message to yours contacts for you.

Bill Bot The inteligent Bot Bill is a intelligent bot, it can chat, search and send messages to you. Chat with You Send messages on WhatsApp for you S

João Assalim 3 Sep 12, 2021
A WhatsApp Crashing Tool for Termux

CrashW A WhatsApp Crashing Tool For Termux Users Installing : apt update && apt upgrade -y pkg install python3 pkg install git git clone git://gith

Gokul Mahato 20 Dec 27, 2022
The AWS Lambda Serverless Blind XSS App

Ass The AWS Lambda Serverless Blind XSS App 利用VPS配置XSS平台太麻烦了,如果利用AWS的Lambda那不就是一个域名的事情么?剩下的环境配置、HTTPS证书、隐私性、VPS续费都不用管了, 所以根据xless重写了Lambda平台的XSS,利用sla

cocokey 2 Dec 27, 2021
WhatsApp API Python ChatBot

WhatsApp Api Python - Esta documentação tem como objetivo exemplificar o uso do Moorse Whatsapp API na linguagem Python.

Douglas Alves 2 Jan 06, 2022
A simple bot that looks for names and cpfs in the vaccination list made available by the government Fortaleza - CE

A simple bot that looks for names and cpfs in the vaccination list made available by the government Fortaleza - CE

Breno Aquino 1 Dec 21, 2021
A simple use library for bot discord.py developers

Discord Bot Template It's a simple use library for bot discord.py developers. Ob

Tir Omar 0 Oct 16, 2022