Update dependency schwifty to v2026.10.1 #80

Merged
tux merged 1 commit from renovate/schwifty-2026.x into main 2026-10-25 17:41:27 +01:00
Collaborator

This PR contains the following updates:

Package Update Change
schwifty (changelog) patch ==2026.10.0 → ==2026.10.1

Release Notes

mdomke/schwifty (schwifty)

v2026.10.1

Compare Source

Added

* Added :attr:`.IBAN.is_aspirational` and :attr:`.BBAN.is_aspirational` to tell whether a
  country's IBAN format is only reserved and not yet part of the official IBAN registry (#​248).
* Added a generated bank registry for the United Kingdom, built from GLEIF's monthly BIC-to-LEI
  mapping. It contains about 2,700 head-office BICs for more than 2,300 bank codes, compared to
  the 50 manually maintained entries before. The manual registry now only holds the entries GLEIF
  lacks and pins the preferred BIC where GLEIF lists several for one bank code.
* Added the German checksum method ``C1``, used by ING-DiBa (bank code ``50010517``). Account
  codes starting with ``5`` are checked with a variant of method ``17`` over positions 1 to 9,
  all others with method ``17`` itself. Account codes for this bank were not checked before
  (#&#8203;334) `@LuisFigueroaG <https://github.com/LuisFigueroaG>`_.
* Added the German checksum method ``C0``, used by ten savings banks such as Sparkasse
  Vorpommern auf Rügen (bank code ``13051042``). Account codes with exactly two leading zeros are
  checked with method ``52``, which also takes the bank code into account, and with method ``20``
  if that fails. All other account codes are checked with method ``20`` only (#&#8203;337)
  `@LuisFigueroaG <https://github.com/LuisFigueroaG>`_.
* ``scripts/get_iban_registry.py`` accepts the path of a manually downloaded "IBAN Registry (TXT)"
  file, since swift.com rejects automated downloads. The script also no longer truncates
  ``generated.json`` when the download or parsing fails.

Changed
  • Updated the IBAN registry from the latest SWIFT release. Honduras (HN) and Yemen (YE) are now
    part of the official registry and no longer flagged as aspirational. Iceland (IS) is now in the
    SEPA zone, and the BBAN structure of Brazil is now more liberal. The Czech and Estonian
    structures are kept at their previous, more detailed form in overwrite.json.
  • The bank registry is now loaded per country on first use instead of all at once, and the
    Bank objects are shared between the lookup indexes and use __slots__. A first lookup of
    a German IBAN now adds about 3 MB of memory instead of 26 MB, and a French one less than 1 MB
    (#​246). Thanks to @UnknownPlatypus <https://github.com/UnknownPlatypus>_ for the analysis.
  • A BIC lookup (e.g. BIC.domestic_bank_codes or BIC.bank_names) only searches the bank
    registry of the BIC's own country. Foreign-based banks listed in another country's registry,
    such as Commerzbank (COBADEFF) with its Swiss bank codes, are no longer returned for their
    BIC. This also fixes BIC("REVOFRP2XXX").domestic_bank_codes returning the Lithuanian
    32501 instead of the French 28233 (#​242).

Fixed

* Fixed a typo in the JSON schema pattern that pydantic generates for ``BIC`` fields: the
  optional branch location used ``(:?`` instead of ``(?:``, so published schemas accepted
  strings containing a colon (e.g. ``GENODEM1:GLS``) that the actual validation rejects (#&#8203;338)
  `@feiiiiii5 <https://github.com/feiiiiii5>`_.
* The supported-country lists of ``BIC.from_bank_code`` and ``BIC.candidates_from_bank_code`` no
  longer mention South Africa, which has no bank registry data and always raised
  ``InvalidBankCode``, and now include Georgia, Malta, Montenegro and Pakistan, which do have
  registry data. The documentation's BIC validation example claimed an ``InvalidStructure`` error
  for a 12-character input that actually raises ``InvalidLength`` (#&#8203;339)
  `@feiiiiii5 <https://github.com/feiiiiii5>`_.
* ``BBAN.random`` and ``IBAN.random`` called with a ``bank_code`` now solve the national check
  digit for the checksum method of that bank, which is the one the result is validated against,
  instead of the method of a randomly picked bank. For German banks whose method rarely accepts
  an account code built for another method (e.g. Deutsche Bank, method ``63``) generation could
  run out of retries and raise ``GenerateRandomOverflowError``. The bank is now looked up the same
  way validation does, even with ``use_registry=False``. Since no random bank is drawn anymore
  when the bank code is given, the output for a seeded ``random`` changes in every country (e.g.
  ``BBAN.random("FR", random=Random(1), bank_code="11425")``) (#&#8203;329)
  `@LuisFigueroaG <https://github.com/LuisFigueroaG>`_.
* Corrected UK bank code lookups: ``BOFS`` now resolves to Bank of Scotland (``BOFSGB21``)
  instead of Lloyds, ``DABA`` to Northern Bank (``DABAGB2B``) instead of one of its branches, and
  Halifax, Co-operative Bank, TSB, PayrNet, Paysend, Clear Junction and The Currency Cloud to
  their current head-office BICs instead of branch, passive or retired ones. The German
  ``DEUTDEFFXXX`` was removed from the UK registry.
* The German checksum method ``76`` (used by Commerzbank vormals Dresdner Bank) now accepts
  account numbers whose sub-account number ``00`` was left out and that were padded with leading
  zeros instead, so the check digit sits at position 10 (e.g. ``0000123456``), as the Bundesbank
  specification requires (#&#8203;330) `@wavebyrd <https://github.com/wavebyrd>`_.
* The Swiss bank registry now includes the foreign-based banks that take part in Swiss payments
  (e.g. Deutsche Bank AG, Commerzbank AG, Citibank N.A., Sparkasse Hochrhein), so Swiss IBANs
  with their bank codes resolve to a bank and BIC. The generator used to drop every bank that
  is not domiciled in Switzerland.
* The Belgian bank registry no longer lists the identification numbers that the National Bank of
  Belgium marks as unassigned (``VRIJ``) or unavailable (``Onbeschikbaar``) as banks of that
  name. Since the switch to the new NBB list their ``N/A`` BIC was read as empty, so the
  generator kept them, e.g. ``BE68 5390 0754 7034`` resolved to a bank called
  ``Onbeschikbaar`` and ``IBAN.random("BE")`` could pick those codes (#&#8203;335)
  `@raams95 <https://github.com/raams95>`_.

Internal
  • Added 115 tests covering the national checksum algorithms, registry helpers and IBAN/BBAN/BIC
    edge cases (#​333) @wxs-lang <https://github.com/wxs-lang>_.

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [schwifty](https://github.com/mdomke/schwifty) ([changelog](https://github.com/mdomke/schwifty/blob/main/CHANGELOG.rst)) | patch | `==2026.10.0` → `==2026.10.1` | --- ### Release Notes <details> <summary>mdomke/schwifty (schwifty)</summary> ### [`v2026.10.1`](https://github.com/mdomke/schwifty/blob/HEAD/CHANGELOG.rst#2026101---20261025) [Compare Source](https://github.com/mdomke/schwifty/compare/2026.10.0...2026.10.1) Added ``` * Added :attr:`.IBAN.is_aspirational` and :attr:`.BBAN.is_aspirational` to tell whether a country's IBAN format is only reserved and not yet part of the official IBAN registry (#&#8203;248). * Added a generated bank registry for the United Kingdom, built from GLEIF's monthly BIC-to-LEI mapping. It contains about 2,700 head-office BICs for more than 2,300 bank codes, compared to the 50 manually maintained entries before. The manual registry now only holds the entries GLEIF lacks and pins the preferred BIC where GLEIF lists several for one bank code. * Added the German checksum method ``C1``, used by ING-DiBa (bank code ``50010517``). Account codes starting with ``5`` are checked with a variant of method ``17`` over positions 1 to 9, all others with method ``17`` itself. Account codes for this bank were not checked before (#&#8203;334) `@LuisFigueroaG <https://github.com/LuisFigueroaG>`_. * Added the German checksum method ``C0``, used by ten savings banks such as Sparkasse Vorpommern auf Rügen (bank code ``13051042``). Account codes with exactly two leading zeros are checked with method ``52``, which also takes the bank code into account, and with method ``20`` if that fails. All other account codes are checked with method ``20`` only (#&#8203;337) `@LuisFigueroaG <https://github.com/LuisFigueroaG>`_. * ``scripts/get_iban_registry.py`` accepts the path of a manually downloaded "IBAN Registry (TXT)" file, since swift.com rejects automated downloads. The script also no longer truncates ``generated.json`` when the download or parsing fails. Changed ``` - Updated the IBAN registry from the latest SWIFT release. Honduras (HN) and Yemen (YE) are now part of the official registry and no longer flagged as aspirational. Iceland (IS) is now in the SEPA zone, and the BBAN structure of Brazil is now more liberal. The Czech and Estonian structures are kept at their previous, more detailed form in `overwrite.json`. - The bank registry is now loaded per country on first use instead of all at once, and the `Bank` objects are shared between the lookup indexes and use `__slots__`. A first lookup of a German IBAN now adds about 3 MB of memory instead of 26 MB, and a French one less than 1 MB ([#&#8203;246](https://github.com/mdomke/schwifty/issues/246)). Thanks to `@UnknownPlatypus <https://github.com/UnknownPlatypus>`\_ for the analysis. - A BIC lookup (e.g. `BIC.domestic_bank_codes` or `BIC.bank_names`) only searches the bank registry of the BIC's own country. Foreign-based banks listed in another country's registry, such as Commerzbank (`COBADEFF`) with its Swiss bank codes, are no longer returned for their BIC. This also fixes `BIC("REVOFRP2XXX").domestic_bank_codes` returning the Lithuanian `32501` instead of the French `28233` ([#&#8203;242](https://github.com/mdomke/schwifty/issues/242)). Fixed ``` * Fixed a typo in the JSON schema pattern that pydantic generates for ``BIC`` fields: the optional branch location used ``(:?`` instead of ``(?:``, so published schemas accepted strings containing a colon (e.g. ``GENODEM1:GLS``) that the actual validation rejects (#&#8203;338) `@feiiiiii5 <https://github.com/feiiiiii5>`_. * The supported-country lists of ``BIC.from_bank_code`` and ``BIC.candidates_from_bank_code`` no longer mention South Africa, which has no bank registry data and always raised ``InvalidBankCode``, and now include Georgia, Malta, Montenegro and Pakistan, which do have registry data. The documentation's BIC validation example claimed an ``InvalidStructure`` error for a 12-character input that actually raises ``InvalidLength`` (#&#8203;339) `@feiiiiii5 <https://github.com/feiiiiii5>`_. * ``BBAN.random`` and ``IBAN.random`` called with a ``bank_code`` now solve the national check digit for the checksum method of that bank, which is the one the result is validated against, instead of the method of a randomly picked bank. For German banks whose method rarely accepts an account code built for another method (e.g. Deutsche Bank, method ``63``) generation could run out of retries and raise ``GenerateRandomOverflowError``. The bank is now looked up the same way validation does, even with ``use_registry=False``. Since no random bank is drawn anymore when the bank code is given, the output for a seeded ``random`` changes in every country (e.g. ``BBAN.random("FR", random=Random(1), bank_code="11425")``) (#&#8203;329) `@LuisFigueroaG <https://github.com/LuisFigueroaG>`_. * Corrected UK bank code lookups: ``BOFS`` now resolves to Bank of Scotland (``BOFSGB21``) instead of Lloyds, ``DABA`` to Northern Bank (``DABAGB2B``) instead of one of its branches, and Halifax, Co-operative Bank, TSB, PayrNet, Paysend, Clear Junction and The Currency Cloud to their current head-office BICs instead of branch, passive or retired ones. The German ``DEUTDEFFXXX`` was removed from the UK registry. * The German checksum method ``76`` (used by Commerzbank vormals Dresdner Bank) now accepts account numbers whose sub-account number ``00`` was left out and that were padded with leading zeros instead, so the check digit sits at position 10 (e.g. ``0000123456``), as the Bundesbank specification requires (#&#8203;330) `@wavebyrd <https://github.com/wavebyrd>`_. * The Swiss bank registry now includes the foreign-based banks that take part in Swiss payments (e.g. Deutsche Bank AG, Commerzbank AG, Citibank N.A., Sparkasse Hochrhein), so Swiss IBANs with their bank codes resolve to a bank and BIC. The generator used to drop every bank that is not domiciled in Switzerland. * The Belgian bank registry no longer lists the identification numbers that the National Bank of Belgium marks as unassigned (``VRIJ``) or unavailable (``Onbeschikbaar``) as banks of that name. Since the switch to the new NBB list their ``N/A`` BIC was read as empty, so the generator kept them, e.g. ``BE68 5390 0754 7034`` resolved to a bank called ``Onbeschikbaar`` and ``IBAN.random("BE")`` could pick those codes (#&#8203;335) `@raams95 <https://github.com/raams95>`_. Internal ``` - Added 115 tests covering the national checksum algorithms, registry helpers and IBAN/BBAN/BIC edge cases ([#&#8203;333](https://github.com/mdomke/schwifty/issues/333)) `@wxs-lang <https://github.com/wxs-lang>`\_. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNzguNSIsInVwZGF0ZWRJblZlciI6IjQ0LjE3OC41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Update dependency schwifty to v2026.10.1
All checks were successful
PyTest / build (pull_request) Successful in 1m53s
8b2e3c2c6d
tux merged commit c9a68eb741 into main 2026-10-25 17:41:27 +01:00
tux deleted branch renovate/schwifty-2026.x 2026-10-25 17:41:27 +01:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Netz39_Vorstand/entities_validation_svc!80
No description provided.