diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 00000000..39906eb7
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,60 @@
+---
+
+name: Test
+
+on:
+ push:
+ pull_request:
+ schedule:
+ - cron: '9 0 * * 1'
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ python-version: [3.8, 3.9, '3.10', 3.11, 3.12, 3.13, 3.14, pypy3.9]
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: python -m pip install --upgrade pip tox
+ - name: Run tox
+ run: tox -e "$(echo py${{ matrix.python-version }} | sed -e 's/[.]//g;s/pypypy/pypy/')" --skip-missing-interpreters false
+ tox_job:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ tox_job: [docs, flake8, mypy, headers]
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.13
+ - name: Install dependencies
+ run: python -m pip install --upgrade pip tox
+ - name: Run tox ${{ matrix.tox_job }}
+ run: tox -e ${{ matrix.tox_job }} --skip-missing-interpreters false
+ CodeQL:
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: python
+ - name: Build
+ uses: github/codeql-action/autobuild@v2
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
diff --git a/.gitignore b/.gitignore
index 8f7c162a..77e8d2c6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,15 @@
# global
*.pyc
*.pyo
+*~
__pycache__
# /
/.coverage
+/.mypy_cache
+/.ruff_cache
/.tox
+/.venv
/build
/coverage
/dist
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index a3c3ad24..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: python
-cache: pip
-sudo: false
-python:
- - 2.6
- - 2.7
- - 3.4
- - 3.5
- - 3.6
- - pypy
-matrix:
- include:
- - python: 3.5
- env: TOXENV=flake8
- - python: 3.5
- env: TOXENV=docs
-install: pip install tox
-script: tox -e "${TOXENV:-$(echo py$TRAVIS_PYTHON_VERSION | tr -d . | sed -e 's/pypypy/pypy/')}"
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..f6ba7a3f
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,160 @@
+Contributing to python-stdnum
+=============================
+
+This document describes general guidelines for contributing new formats or
+other enhancement to python-stdnum.
+
+
+Adding number formats
+---------------------
+
+Basically any number or code that has some validation mechanism available or
+some common formatting is eligible for inclusion into this library. If the
+only specification of the number is "it consists of 6 digits" implementing
+validation may not be that useful.
+
+Contributions of new formats or requests to implement validation for a format
+should include the following:
+
+* The format name and short description.
+* References to (official) sources that describe the format.
+* A one or two paragraph description containing more details of the number
+ (e.g. purpose and issuer and possibly format information that might be
+ useful to end users).
+* If available, a link to an (official) validation service for the number,
+ reference implementations or similar sources that allow validating the
+ correctness of the implementation.
+* A set of around 20 to 100 "real" valid numbers for testing (more is better
+ during development but only around 100 will be retained for regression
+ testing).
+* If the validation depends on some (online) list of formats, structures or
+ parts of the identifier (e.g. a list of region codes that are part of the
+ number) a way to easily update the registry information should be
+ available.
+
+
+Code contributions
+------------------
+
+Improvements to python-stdnum are most welcome. Integrating contributions
+will be done on a best-effort basis and can be made easier if the following
+are considered:
+
+* Ideally contributions are made as GitHub pull requests, but contributions
+ by email (privately or through the python-stdnum-users mailing list) can
+ also be considered.
+* Submitted contributions will often be reformatted and sometimes
+ restructured for consistency with other parts.
+* Contributions will be acknowledged in the release notes.
+* Contributions should add or update a copyright statement if you feel the
+ contribution is significant.
+* All contribution should be made with compatible applicable copyright.
+* It is not needed to modify the NEWS, README.md or files under docs for new
+ formats; these files will be updated on release.
+* Marking valid numbers as invalid should be avoided and are much worse than
+ marking invalid numbers as valid. Since the primary use case for
+ python-stdnum is to validate entered data having an implementation that
+ results in "computer says no" should be avoided.
+* Number format implementations should include links to sources of
+ information: generally useful links (e.g. more details about the number
+ itself) should be in the module docstring, if it relates more to the
+ implementation (e.g. pointer to reference implementation, online API
+ documentation or similar) a comment in the code is better
+* Country-specific numbers and codes go in a country or region package (e.g.
+ stdnum.eu.vat or stdnum.nl.bsn) while global numbers go in the toplevel
+ name space (e.g. stdnum.isbn).
+* All code should be well tested and achieve 100% code coverage.
+* Existing code structure conventions (e.g. see README for interface) should
+ be followed.
+* Git commit messages should follow the usual 7 rules.
+* Declarative or functional constructs are preferred over an iterative
+ approach, e.g.::
+
+ s = sum(int(c) for c in number)
+
+ over::
+
+ s = 0
+ for c in number:
+ s += int(c)
+
+
+Testing
+-------
+
+Tests can be run with `tox`. Some basic code style tests can be run with `tox
+-e flake8` and most other targets run the test suite with various supported
+Python interpreters.
+
+Module implementations have a couple of smaller test cases that also serve as
+basic documentation of the happy flow.
+
+More extensive tests are available, per module, in the tests directory. These
+tests (also doctests) cover more corner cases and should include a set of
+valid numbers that demonstrate that the module works correctly for real
+numbers.
+
+The normal tests should never require online sources for execution. All
+functions that deal with online lookups (e.g. the EU VIES service for VAT
+validation) should only be tested using conditional unittests.
+
+
+Finding test numbers
+--------------------
+
+Some company numbers are commonly published on a company's website contact
+page (e.g. VAT or other registration numbers, bank account numbers). Doing a
+web search limited to a country and some key words generally turn up a lot of
+pages with this information.
+
+Another approach is to search for spreadsheet-type documents with some
+keywords that match the number. This sometimes turns up lists of companies
+(also occasionally works for personal identifiers).
+
+For information that is displayed on ID cards or passports it is sometimes
+useful to do an image search.
+
+For dealing with numbers that point to individuals it is important to:
+
+* Only keep the data that is needed to test the implementation.
+* Ensure that no actual other data relation to a person or other personal
+ information is kept or can be inferred from the kept data.
+* The presence of a number in the test set should not provide any information
+ about the person (other than that there is a person with the number or
+ information that is present in the number itself).
+
+Sometimes numbers are part of a data leak. If this data is used to pick a few
+sample numbers from the selection should be random and the leak should not be
+identifiable from the picked numbers. For example, if the leaked numbers
+pertain only to people with a certain medical condition, membership of some
+organisation or other specific property the leaked data should not be used.
+
+
+Reverse engineering
+-------------------
+
+Sometimes a number format clearly has a check digit but the algorithm is not
+publicly documented. It is sometimes possible to reverse engineer the used
+check digit algorithm from a large set of numbers.
+
+For example, given numbers that, apart from the check digit, only differ in
+one digit will often expose the weights used. This works reasonably well if
+the algorithm uses modulo 11 is over a weighted sums over the digits.
+
+See https://github.com/arthurdejong/python-stdnum/pull/203#issuecomment-623188812
+
+
+Registries
+----------
+
+Some numbers or parts of numbers use validation base on a registry of known
+good prefixes, ranges or formats. It is only useful to fully base validation
+on these registries if the update frequency to these registries is very low.
+
+If there is a registry that is used (a list of known values, ranges or
+otherwise) the downloaded information should be stored in a data file (see
+the stdnum.numdb module). Only the minimal amount of data should be kept (for
+validation or identification).
+
+The data files should be able to be created and updated using a script in the
+`update` directory.
diff --git a/COPYING b/COPYING
index 5ab7695a..f6683e74 100644
--- a/COPYING
+++ b/COPYING
@@ -1,8 +1,8 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -10,7 +10,7 @@
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -112,7 +112,7 @@ modification follow. Pay close attention to the difference between a
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
- GNU LESSER GENERAL PUBLIC LICENSE
+ GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
@@ -146,7 +146,7 @@ such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
-
+
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
@@ -432,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -455,7 +455,7 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
- END OF TERMS AND CONDITIONS
+ END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
@@ -484,8 +484,7 @@ convey the exclusion of warranty; and each file should have at least the
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ License along with this library; if not, see .
Also add information on how to contact you by electronic and paper mail.
@@ -496,9 +495,7 @@ necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
- , 1 April 1990
- Ty Coon, President of Vice
+ , 1 April 1990
+ Moe Ghoul, President of Vice
That's all there is to it!
-
-
diff --git a/ChangeLog b/ChangeLog
index 054b4241..a546b744 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,3843 @@
+2026-01-04 Arthur de Jong
+
+ * [e7e900a] .github/workflows/test.yml, setup.py, tox.ini: Add
+ support for Python 3.14
+
+2026-01-04 Arthur de Jong
+
+ * [97d8cae] stdnum/sn/ninea.py: URL escape the underscore because
+ it confuses Sphinx
+
+2026-01-04 Arthur de Jong
+
+ * [6070c60] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cn/loc.dat, stdnum/cz/banks.dat, stdnum/gs1_ai.dat,
+ stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat,
+ stdnum/nz/banks.dat, stdnum/oui.dat: Update database files
+
+2026-01-04 Arthur de Jong
+
+ * [a7fd300] update/at_postleitzahl.py, update/be_banks.py,
+ update/cfi.py, update/cn_loc.py, update/cz_banks.py,
+ update/do_whitelists.py, update/gs1_ai.py, update/iban.py,
+ update/imsi.py, update/isbn.py, update/isil.py, update/nz_banks.py:
+ Consistently pass a user agent for update scripts
+
+ The scourge of AI bots is forcing more and more sites to block
+ bots that don't set particular user agents.
+
+2026-01-04 Arthur de Jong
+
+ * [e7afc61] update/be_banks.py: Update download URL of Belgian
+ bank numbers
+
+ This also changes the handling to prefer the English name over
+ other names and handles another variant of not-applicable values.
+
+2026-01-04 Arthur de Jong
+
+ * [d332ee1] stdnum/sn/ninea.py, tests/test_sn_ninea.doctest:
+ Add check digit validation to Senegal NINEA
+
+2023-02-12 Leandro Regueiro
+
+ * [dd22123] stdnum/sn/__init__.py, stdnum/sn/ninea.py,
+ tests/test_sn_ninea.doctest: Add support for Senegal TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/395
+ Closes https://github.com/arthurdejong/python-stdnum/issues/357
+
+2026-01-03 Arthur de Jong
+
+ * [d3ec3bd] stdnum/br/cnpj.py: Support new format for Brazilian CNPJ
+
+ The new format allows letters as well as numbers to identify
+ companies.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/484
+
+2025-02-27 dotbit1 <68584562+dotbit1@users.noreply.github.com>
+
+ * [cd94bf1] stdnum/ro/onrc.py, tests/test_ro_onrc.doctest: Support
+ the new Romanian ONRC format
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/465
+
+2026-01-03 Arthur de Jong
+
+ * [293136b] stdnum/lv/pvn.py: Support Latvian personal codes issued
+ after 2017
+
+ These numbers no longer embed a birth date in the format.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/486
+
+2023-12-08 Cédric Krier
+
+ * [a906a1e] stdnum/eu/excise.py, stdnum/fr/__init__.py,
+ stdnum/fr/accise.py, tests/test_fr_accise.doctest: Add accise -
+ the French number for excise
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/424
+
+2023-12-08 Cédric Krier
+
+ * [1a254d9] stdnum/eu/excise.py, tests/test_eu_excise.doctest:
+ Add European Excise Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/424
+
+2025-09-28 Cédric Krier
+
+ * [d534b3c] stdnum/be/ogm_vcs.py: Add Belgian OGM-VCS
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/487
+
+2025-10-14 KathrinM
+
+ * [2cf475c] stdnum/eu/nace.py, stdnum/eu/nace20.dat,
+ stdnum/eu/nace21.dat, tests/test_eu_nace.doctest: Add support
+ for nace revision 2.1
+
+ This makes revision 2.1 the default but still allows validating
+ against version 2.0 using the revision argument.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/490
+
+2025-12-19 Tuukka Tolvanen
+
+ * [acda255] stdnum/de/leitweg.py, tests/test_de_leitweg.doctest:
+ Add DE Leitweg-ID
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/491
+
+2025-12-16 Arthur de Jong
+
+ * [c7a7fd1] .github/workflows/test.yml: Run flake8 with Python 3.13
+
+ Python version 3.14 no longer works.
+
+2025-10-26 Arthur de Jong
+
+ * [7a9b852] stdnum/ro/cnp.py: Mark more Romanian CNP county codes
+ as valid
+
+ According to
+ https://ro.wikipedia.org/wiki/Carte_de_identitate_rom%C3%A2neasc%C4%83#Seriile_c%C4%83r%C8%9Bilor_de_identitate_(%C3%AEn_modelele_emise_%C3%AEnainte_de_2021)
+ 70 is used to represent any registration, regardless of county
+ but while multiple documents claim 80-83 are also valid it is
+ unclear what they represent.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/489
+
+2025-10-26 Arthur de Jong
+
+ * [7ca9b6c] stdnum/be/vat.py, tests/test_be_vat.doctest: Validate
+ first digit of Belgian VAT number
+
+ Thanks to antonio-ginestar find pointing this out.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/488
+
+2022-09-17 Leandro Regueiro
+
+ * [a1fdd5d] stdnum/az/__init__.py, stdnum/az/voen.py,
+ tests/test_az_voen.doctest: Add support for Azerbaijan TIN
+
+ Thanks to Adam Handke for finding the weights for the check
+ digit algorithm.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/200
+ CLoses https://github.com/arthurdejong/python-stdnum/pull/329
+
+2025-08-08 Fabien MICHEL
+
+ * [e741318] stdnum/fr/rcs.py, tests/test_fr_rcs.doctest: Add French
+ RCS number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/481
+
+2025-08-08 Fabien MICHEL
+
+ * [ca80cc4] stdnum/fr/siren.py: Add fr.siren.format() function
+
+2025-08-08 Fabien MICHEL
+
+ * [b3a42a1] stdnum/fr/tva.py, tests/test_fr_tva.doctest: Add
+ fr.tva.to_siren() function
+
+ The function can convert a French VAT number to a SIREN.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/480
+
+2025-08-14 Arthur de Jong
+
+ * [843bbec] stdnum/bic.py, tests/test_bic.doctest: Add validation
+ of country code in BIC
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/482
+
+2025-06-05 Joni Saarinen
+
+ * [deb0db1] stdnum/ee/__init__.py: Add personal id and business
+ id alias for Estonia
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/476
+
+2025-05-10 Luca
+
+ * [1773a91] stdnum/mz/__init__.py, stdnum/mz/nuit.py,
+ tests/test_mz_nuit.doctest: Add support for Mozambique TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/360
+ Closes https://github.com/arthurdejong/python-stdnum/pull/392
+ Closes https://github.com/arthurdejong/python-stdnum/pull/473
+
+2025-06-01 Arthur de Jong
+
+ * [5ef6ade] stdnum/numdb.py: Use broader type ignore for
+ pkg_resources import
+
+ Apparently mypy changed for classifying the problem from
+ import-untyped to import-not-found.
+
+2025-05-25 Arthur de Jong
+
+ * [0e64cf6] stdnum/cn/loc.dat, stdnum/cn/ric.py,
+ tests/test_cn_ric.doctest, update/cn_loc.py: Download Chinise
+ location codes from Wikipedia
+
+ The list on GitHub is missing historical information and also
+ appears to no longer be updated. This changes the birth place
+ lookup to take the birth year into account to determine whether
+ a county was assigned at the time.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/442
+
+2025-05-18 Arthur de Jong
+
+ * [210b9ce] stdnum/gs1_128.py, stdnum/gs1_ai.dat,
+ tests/test_gs1_128.doctest, update/gs1_ai.py: Fix handling of
+ decimals in Application Identifiers
+
+ This fixes the handling of GS1-128 Application Identifiers with
+ decimal types. Previously, with some 4 digit decimal application
+ identifiers the number of decimals were incorrectly considered
+ part of the value instead of the application identifier.
+
+ For example (310)5033333 is not correct but it should be evaluated
+ as (3105)033333 (application identifier 3105 and value 0.33333).
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/471
+
+2025-05-17 Arthur de Jong
+
+ * [d66998e] ChangeLog, NEWS, stdnum/__init__.py: Get files ready
+ for 2.1 release
+
+2025-05-17 Arthur de Jong
+
+ * [a753ebf] stdnum/at/postleitzahl.dat, stdnum/cn/loc.dat,
+ stdnum/gs1_ai.dat, stdnum/imsi.dat, stdnum/isbn.dat,
+ stdnum/my/bp.dat, stdnum/nz/banks.dat, stdnum/oui.dat,
+ update/my_bp.py: Update database files
+
+ This also updates the URLs for the National Registration Department
+ of Malaysia.
+
+2025-05-14 Cédric Krier
+
+ * [972b42d] setup.py: Define minimal Python version in setup.py
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/474
+ Closes https://github.com/arthurdejong/python-stdnum/pull/475
+ Fixes 3542c06
+
+2025-05-05 Luca
+
+ * [8b78f78] stdnum/jp/in_.py: Remove superfluous modulus operation
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/470
+
+2025-05-05 Arthur de Jong
+
+ * [ad4af91] ChangeLog, NEWS, README.md, docs/conf.py,
+ docs/index.rst, docs/stdnum.be.eid.rst, docs/stdnum.be.ssn.rst,
+ docs/stdnum.es.cae.rst, docs/stdnum.id.nik.rst,
+ docs/stdnum.isni.rst, docs/stdnum.jp.in_.rst,
+ docs/stdnum.nl.identiteitskaartnummer.rst, docs/stdnum.ru.ogrn.rst,
+ stdnum/__init__.py: Get files ready for 2.0 release
+
+2025-05-05 Arthur de Jong
+
+ * [f2967d3] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cfi.dat, stdnum/cn/loc.dat, stdnum/cz/banks.dat,
+ stdnum/gs1_ai.dat, stdnum/iban.dat, stdnum/imsi.dat,
+ stdnum/isbn.dat, stdnum/isil.dat, stdnum/my/bp.dat,
+ stdnum/nz/banks.dat, stdnum/oui.dat, tests/test_gs1_128.doctest,
+ tox.ini: Update database files
+
+ This also updates the GS1-128 tests because a previously unused
+ AI is now in use. This also adds the updating of the Czech bank
+ numbers to tox.
+
+2025-05-05 Arthur de Jong
+
+ * [c118723] update/at_postleitzahl.py: Remove duplicate Austrian
+ post offices
+
+2025-05-05 Arthur de Jong
+
+ * [1a87baf] update/my_bp.crt, update/my_bp.py: Drop custom
+ certificates for www.jpn.gov.my
+
+ The certificate chain for www.jpn.gov.my seems to have been fixed.
+
+2025-05-05 Arthur de Jong
+
+ * [44575a1] update/iban.py: Allow reading IBAN registry from the
+ command line
+
+ It seems that the Swift website currently uses TLS fingerprinting
+ to block downloads of the IBAN registry except in certain browsers.
+
+ It also fixes an idiosyncrasy in the IBAN registry iteself where
+ the Norwegian BBAN format string was not correct.
+
+2025-05-05 Arthur de Jong
+
+ * [44c2355] update/gs1_ai.py: Fix the downloading of GS1 application
+ identifiers
+
+ The URL changed and the embedded JSON also slightly changed.
+
+2025-05-05 Arthur de Jong
+
+ * [01e87f9] update/cn_loc.py, update/gs1_ai.py: Fix datetime
+ related deprecation warnings in update scripts
+
+2025-05-05 Arthur de Jong
+
+ * [37320ea] update/be_banks.py, update/requirements.txt: Fix the
+ downloading of Belgian bank identifiers
+
+ The site switched from XLS to XLSX files.
+
+2025-05-05 Arthur de Jong
+
+ * [98b4fa0] stdnum/util.py, update/cfi.py, update/isil.py,
+ update/my_bp.py: Always pass regex flags as keyword argument
+
+ In particular with re.sub() it got confused with the count
+ positional argument.
+
+ Fixes a9039c1
+
+2025-05-05 Arthur de Jong
+
+ * [6e8c783] stdnum/cr/cpj.py, stdnum/fr/nir.py, stdnum/si/maticna.py:
+ Switch some URLs to HTTPS
+
+2022-09-04 Leandro Regueiro
+
+ * [497bb11] stdnum/th/__init__.py: Add VAT alias for Thailand
+ TIN number
+
+ Based on
+ https://github.com/arthurdejong/python-stdnum/issues/118#issuecomment-920521305
+ Closes https://github.com/arthurdejong/python-stdnum/pull/314
+
+2025-05-05 Arthur de Jong
+
+ * [bfac07b] stdnum/ua/edrpou.py: Fix typo
+
+ Fixes b7b2af8
+
+2025-04-04 Luca Sicurello
+
+ * [fca47b0] stdnum/jp/in_.py: Add Japanese Individual Number
+
+2025-03-13 David Salvisberg
+
+ * [0e857fb] .github/workflows/test.yml, .gitignore, docs/index.rst,
+ setup.cfg, setup.py, stdnum/__init__.py, stdnum/ad/__init__.py,
+ stdnum/ad/nrt.py, stdnum/al/__init__.py, stdnum/al/nipt.py,
+ stdnum/ar/__init__.py, stdnum/ar/cbu.py, stdnum/ar/cuit.py,
+ stdnum/ar/dni.py, stdnum/at/__init__.py, stdnum/at/businessid.py,
+ stdnum/at/postleitzahl.py, stdnum/at/tin.py, stdnum/at/uid.py,
+ stdnum/at/vnr.py, stdnum/au/__init__.py, stdnum/au/abn.py,
+ stdnum/au/acn.py, stdnum/au/tfn.py, stdnum/be/__init__.py,
+ stdnum/be/bis.py, stdnum/be/eid.py, stdnum/be/iban.py,
+ stdnum/be/nn.py, stdnum/be/ssn.py, stdnum/be/vat.py,
+ stdnum/bg/egn.py, stdnum/bg/pnf.py, stdnum/bg/vat.py,
+ stdnum/bic.py, stdnum/bitcoin.py, stdnum/br/__init__.py,
+ stdnum/br/cnpj.py, stdnum/br/cpf.py, stdnum/by/__init__.py,
+ stdnum/by/unp.py, stdnum/ca/__init__.py, stdnum/ca/bc_phn.py,
+ stdnum/ca/bn.py, stdnum/ca/sin.py, stdnum/casrn.py, stdnum/cfi.py,
+ stdnum/ch/esr.py, stdnum/ch/ssn.py, stdnum/ch/uid.py,
+ stdnum/ch/vat.py, stdnum/cl/__init__.py, stdnum/cl/rut.py,
+ stdnum/cn/__init__.py, stdnum/cn/ric.py, stdnum/cn/uscc.py,
+ stdnum/co/__init__.py, stdnum/co/nit.py, stdnum/cr/__init__.py,
+ stdnum/cr/cpf.py, stdnum/cr/cpj.py, stdnum/cr/cr.py,
+ stdnum/cu/ni.py, stdnum/cusip.py, stdnum/cy/vat.py,
+ stdnum/cz/__init__.py, stdnum/cz/bankaccount.py,
+ stdnum/cz/dic.py, stdnum/cz/rc.py, stdnum/damm.py,
+ stdnum/de/__init__.py, stdnum/de/handelsregisternummer.py,
+ stdnum/de/idnr.py, stdnum/de/stnr.py, stdnum/de/vat.py,
+ stdnum/de/wkn.py, stdnum/dk/__init__.py, stdnum/dk/cpr.py,
+ stdnum/dk/cvr.py, stdnum/do/__init__.py, stdnum/do/cedula.py,
+ stdnum/do/ncf.py, stdnum/do/rnc.py, stdnum/dz/__init__.py,
+ stdnum/dz/nif.py, stdnum/ean.py, stdnum/ec/__init__.py,
+ stdnum/ec/ci.py, stdnum/ec/ruc.py, stdnum/ee/__init__.py,
+ stdnum/ee/ik.py, stdnum/ee/kmkr.py, stdnum/ee/registrikood.py,
+ stdnum/eg/__init__.py, stdnum/eg/tn.py, stdnum/es/__init__.py,
+ stdnum/es/cae.py, stdnum/es/ccc.py, stdnum/es/cif.py,
+ stdnum/es/cups.py, stdnum/es/dni.py, stdnum/es/iban.py,
+ stdnum/es/nie.py, stdnum/es/nif.py, stdnum/es/postal_code.py,
+ stdnum/es/referenciacatastral.py, stdnum/eu/at_02.py,
+ stdnum/eu/banknote.py, stdnum/eu/ecnumber.py, stdnum/eu/eic.py,
+ stdnum/eu/nace.py, stdnum/eu/oss.py, stdnum/eu/vat.py,
+ stdnum/exceptions.py, stdnum/fi/__init__.py, stdnum/fi/alv.py,
+ stdnum/fi/associationid.py, stdnum/fi/hetu.py,
+ stdnum/fi/veronumero.py, stdnum/fi/ytunnus.py,
+ stdnum/figi.py, stdnum/fo/__init__.py, stdnum/fo/vn.py,
+ stdnum/fr/__init__.py, stdnum/fr/nif.py, stdnum/fr/nir.py,
+ stdnum/fr/siren.py, stdnum/fr/siret.py, stdnum/fr/tva.py,
+ stdnum/gb/nhs.py, stdnum/gb/sedol.py, stdnum/gb/upn.py,
+ stdnum/gb/utr.py, stdnum/gb/vat.py, stdnum/gh/__init__.py,
+ stdnum/gh/tin.py, stdnum/gn/__init__.py, stdnum/gn/nifp.py,
+ stdnum/gr/amka.py, stdnum/gr/vat.py, stdnum/grid.py,
+ stdnum/gs1_128.py, stdnum/gt/__init__.py, stdnum/gt/nit.py,
+ stdnum/hr/__init__.py, stdnum/hr/oib.py, stdnum/hu/__init__.py,
+ stdnum/hu/anum.py, stdnum/iban.py, stdnum/id/__init__.py,
+ stdnum/id/nik.py, stdnum/id/npwp.py, stdnum/ie/pps.py,
+ stdnum/ie/vat.py, stdnum/il/__init__.py, stdnum/il/hp.py,
+ stdnum/il/idnr.py, stdnum/imei.py, stdnum/imo.py, stdnum/imsi.py,
+ stdnum/in_/__init__.py, stdnum/in_/aadhaar.py, stdnum/in_/epic.py,
+ stdnum/in_/gstin.py, stdnum/in_/pan.py, stdnum/in_/vid.py,
+ stdnum/is_/__init__.py, stdnum/is_/kennitala.py, stdnum/is_/vsk.py,
+ stdnum/isan.py, stdnum/isbn.py, stdnum/isil.py, stdnum/isin.py,
+ stdnum/ismn.py, stdnum/isni.py, stdnum/iso11649.py,
+ stdnum/iso6346.py, stdnum/iso7064/mod_11_10.py,
+ stdnum/iso7064/mod_11_2.py, stdnum/iso7064/mod_37_2.py,
+ stdnum/iso7064/mod_37_36.py, stdnum/iso7064/mod_97_10.py,
+ stdnum/isrc.py, stdnum/issn.py, stdnum/it/__init__.py,
+ stdnum/it/aic.py, stdnum/it/codicefiscale.py, stdnum/it/iva.py,
+ stdnum/jp/__init__.py, stdnum/jp/cn.py, stdnum/ke/__init__.py,
+ stdnum/ke/pin.py, stdnum/kr/__init__.py, stdnum/kr/brn.py,
+ stdnum/kr/rrn.py, stdnum/lei.py, stdnum/li/peid.py,
+ stdnum/lt/__init__.py, stdnum/lt/asmens.py,
+ stdnum/lt/pvm.py, stdnum/lu/__init__.py, stdnum/lu/tva.py,
+ stdnum/luhn.py, stdnum/lv/__init__.py, stdnum/lv/pvn.py,
+ stdnum/ma/__init__.py, stdnum/ma/ice.py, stdnum/mac.py,
+ stdnum/mc/__init__.py, stdnum/mc/tva.py, stdnum/md/idno.py,
+ stdnum/me/__init__.py, stdnum/me/iban.py, stdnum/me/pib.py,
+ stdnum/meid.py, stdnum/mk/__init__.py, stdnum/mk/edb.py,
+ stdnum/mt/vat.py, stdnum/mu/nid.py, stdnum/mx/__init__.py,
+ stdnum/mx/curp.py, stdnum/mx/rfc.py, stdnum/my/nric.py,
+ stdnum/nl/__init__.py, stdnum/nl/brin.py, stdnum/nl/bsn.py,
+ stdnum/nl/btw.py, stdnum/nl/identiteitskaartnummer.py,
+ stdnum/nl/onderwijsnummer.py, stdnum/nl/postcode.py,
+ stdnum/no/__init__.py, stdnum/no/fodselsnummer.py,
+ stdnum/no/iban.py, stdnum/no/kontonr.py, stdnum/no/mva.py,
+ stdnum/no/orgnr.py, stdnum/numdb.py, stdnum/nz/__init__.py,
+ stdnum/nz/bankaccount.py, stdnum/nz/ird.py, stdnum/pe/__init__.py,
+ stdnum/pe/cui.py, stdnum/pe/ruc.py, stdnum/pk/cnic.py,
+ stdnum/pl/__init__.py, stdnum/pl/nip.py, stdnum/pl/pesel.py,
+ stdnum/pl/regon.py, stdnum/pt/__init__.py, stdnum/pt/cc.py,
+ stdnum/pt/nif.py, stdnum/py.typed, stdnum/py/__init__.py,
+ stdnum/py/ruc.py, stdnum/ro/__init__.py, stdnum/ro/cf.py,
+ stdnum/ro/cnp.py, stdnum/ro/cui.py, stdnum/ro/onrc.py,
+ stdnum/rs/__init__.py, stdnum/rs/pib.py, stdnum/ru/__init__.py,
+ stdnum/ru/inn.py, stdnum/ru/ogrn.py, stdnum/se/__init__.py,
+ stdnum/se/orgnr.py, stdnum/se/personnummer.py,
+ stdnum/se/postnummer.py, stdnum/se/vat.py,
+ stdnum/sg/__init__.py, stdnum/sg/uen.py, stdnum/si/__init__.py,
+ stdnum/si/ddv.py, stdnum/si/emso.py, stdnum/si/maticna.py,
+ stdnum/sk/__init__.py, stdnum/sk/dph.py, stdnum/sk/rc.py,
+ stdnum/sm/__init__.py, stdnum/sm/coe.py, stdnum/sv/__init__.py,
+ stdnum/sv/nit.py, stdnum/th/moa.py, stdnum/th/pin.py,
+ stdnum/th/tin.py, stdnum/tn/__init__.py, stdnum/tn/mf.py,
+ stdnum/tr/__init__.py, stdnum/tr/tckimlik.py, stdnum/tr/vkn.py,
+ stdnum/tw/__init__.py, stdnum/tw/ubn.py, stdnum/ua/edrpou.py,
+ stdnum/ua/rntrc.py, stdnum/us/atin.py, stdnum/us/ein.py,
+ stdnum/us/itin.py, stdnum/us/ptin.py, stdnum/us/rtn.py,
+ stdnum/us/ssn.py, stdnum/us/tin.py, stdnum/util.py,
+ stdnum/uy/__init__.py, stdnum/uy/rut.py, stdnum/vatin.py,
+ stdnum/ve/__init__.py, stdnum/ve/rif.py, stdnum/verhoeff.py,
+ stdnum/vn/__init__.py, stdnum/vn/mst.py, stdnum/za/idnr.py,
+ stdnum/za/tin.py, tests/test_by_unp.py, tests/test_ch_uid.py,
+ tests/test_de_handelsregisternummer.py, tests/test_do_cedula.py,
+ tests/test_do_ncf.py, tests/test_do_rnc.py, tests/test_eu_vat.py,
+ tox.ini: Add type hints
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/467
+ Closes https://github.com/arthurdejong/python-stdnum/issues/433
+
+2025-04-21 Arthur de Jong
+
+ * [bc689fd] stdnum/do/cedula.py: Add missing verify argument to
+ Cedula check_dgii()
+
+2025-03-13 David Salvisberg
+
+ * [8283dbb] stdnum/be/bis.py, stdnum/be/nn.py, stdnum/be/ssn.py,
+ stdnum/de/handelsregisternummer.py, stdnum/do/ncf.py,
+ stdnum/do/rnc.py, stdnum/eu/vat.py, stdnum/pk/cnic.py,
+ stdnum/util.py: Explicity return None
+
+ As per PEP 8.
+
+ See https://peps.python.org/pep-0008/
+
+2025-03-13 David Salvisberg
+
+ * [6b9bbe2] stdnum/be/iban.py, stdnum/be/nn.py,
+ stdnum/cz/bankaccount.py, stdnum/es/cups.py, stdnum/gs1_128.py,
+ stdnum/pk/cnic.py, stdnum/vatin.py, stdnum/verhoeff.py,
+ tests/test_be_iban.doctest: Small code cleanups
+
+2025-04-21 Arthur de Jong
+
+ * [3542c06] .github/workflows/test.yml, setup.py, tox.ini: Drop
+ support for Python 3.6 and 3.7
+
+ Sadly GitHub has dropped the ability to run tests with these
+ versions of Python.
+
+2025-03-27 Arthur de Jong
+
+ * [ae0d86c] tests/test_do_cedula.py, tests/test_do_rnc.py: Ignore
+ test failures from www.dgii.gov.do
+
+ There was a change in the SOAP service and there is a new
+ URL. However, the API has changed and seems to require
+ authentication.
+
+ We ignore test failures for now but unless a solution is found
+ the DGII validation will be removed.
+
+ See: https://github.com/arthurdejong/python-stdnum/pull/462 See:
+ https://github.com/arthurdejong/python-stdnum/issues/461
+
+2025-03-27 Arthur de Jong
+
+ * [dcd7fa6] tests/test_do_rnc.py: Drop more Python 2.7 compatibility
+ code
+
+2025-03-27 Arthur de Jong
+
+ * [852515c] stdnum/cz/rc.py, tests/test_cz_rc.doctest: Fix Czech
+ Rodné číslo check digit validation
+
+ It seems that a small minority of numbers assigned
+ with a checksum of 10 are still valid and expected
+ to have a check digit value of 0. According to
+ https://www.domzo13.cz/sw/evok/help/born_numbers.html this
+ practice even happended (but less frequently) after 1985.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/468
+
+2025-02-16 Arthur de Jong
+
+ * [fc766bc] .github/workflows/test.yml, setup.py, tox.ini: Add
+ support for Python 3.13
+
+2024-12-10 nvmbrasserie
+
+ * [1386f67] stdnum/ru/ogrn.py, tests/test_ru_ogrn.doctest: Add
+ Russian ОГРН
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/459
+
+2024-07-04 Quique Porta
+
+ * [8519221] stdnum/es/cae.py, tests/test_es_cae.doctest: Add
+ Spanish CAE Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/446
+
+2025-02-15 Arthur de Jong
+
+ * [0f94ca6] stdnum/ec/ruc.py, tests/test_ec_ruc.doctest: Support
+ Ecuador public RUC with juridical format
+
+ It seems that numbers with a format used for juridical RUCs have
+ been issued to companies.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/457
+
+2025-02-15 Arthur de Jong
+
+ * [928a09d] stdnum/isni.py: Add International Standard Name
+ Identifier
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/463
+
+2025-01-11 Arthur de Jong
+
+ * [2b92075] .github/workflows/test.yml, README.md,
+ online_check/stdnum.wsgi, setup.cfg, setup.py, stdnum/by/unp.py,
+ stdnum/de/handelsregisternummer.py, stdnum/do/ncf.py,
+ stdnum/eg/tn.py, stdnum/es/referenciacatastral.py,
+ stdnum/eu/nace.py, stdnum/imsi.py,
+ stdnum/mac.py, stdnum/meid.py, stdnum/mk/edb.py,
+ stdnum/mx/curp.py, stdnum/mx/rfc.py, stdnum/util.py,
+ tests/test_by_unp.doctest, tests/test_cn_ric.doctest,
+ tests/test_de_handelsregisternummer.doctest,
+ tests/test_de_stnr.doctest, tests/test_eg_tn.doctest,
+ tests/test_es_referenciacatastral.doctest, tests/test_isan.doctest,
+ tests/test_mac.doctest, tests/test_mk_edb.doctest,
+ tests/test_my_nric.doctest, tests/test_robustness.doctest,
+ tests/test_util.doctest, tox.ini: Drop Python 2 support
+
+ This deprecates the stdnum.util.to_unicode() function because
+ we no longer have to deal with bytestrings.
+
+2024-11-17 Arthur de Jong
+
+ * [0218601] stdnum/uy/rut.py, tests/test_uy_rut.doctest: Allow
+ Uruguay RUT number starting with 22
+
+2024-09-30 Victor Sordoillet
+
+ * [bcd5018] stdnum/isrc.py, tests/test_isrc.doctest: Add missing
+ music industry ISRC country codes
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/455
+ Closes https://github.com/arthurdejong/python-stdnum/issues/454
+
+2024-10-11 Arthur de Jong
+
+ * [020f1df] .github/workflows/test.yml: Use older Github runner
+ for Python 3.7 tests
+
+2024-10-11 Arthur de Jong
+
+ * [051e63f] tests/test_verhoeff.doctest: Add more tests for
+ Verhoeff implementation
+
+ See https://github.com/arthurdejong/python-stdnum/issues/456
+
+2024-09-21 Arthur de Jong
+
+ * [dc850d6] tox.ini: Ignore deprecation warnings in flake8 target
+
+ This silences a ton of ast deprecation warnings that we can't
+ fix in python-stdnum anyway.
+
+2024-09-15 Arthur de Jong
+
+ * [0ceb2b9] stdnum/util.py: Ensure get_soap_client() caches
+ with verify
+
+ This fixes the get_soap_client() function to cache SOAP clients
+ taking the verify argument into account.
+
+ Fixes 3fcebb2
+
+2024-07-25 Jeff Horemans
+
+ * [6c2873c] stdnum/be/eid.py: Add Belgian eID card number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/448
+
+2024-07-25 Jeff Horemans
+
+ * [56036d0] stdnum/nl/identiteitskaartnummer.py: Add Dutch
+ identiteitskaartnummer
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/449
+
+2024-09-14 Arthur de Jong
+
+ * [3fcebb2] setup.py, stdnum/by/unp.py, stdnum/ch/uid.py,
+ stdnum/de/handelsregisternummer.py, stdnum/do/ncf.py,
+ stdnum/do/rnc.py, stdnum/eu/vat.py, stdnum/tr/tckimlik.py,
+ stdnum/util.py: Customise certificate validation for web services
+
+ This adds a `verify` argument to all functions that use network
+ services for lookups. The option is used to configure how
+ certificate validation works, the same as in the requests library.
+
+ For SOAP requests this is implemented properly when using the
+ Zeep library. The implementations using Suds and PySimpleSOAP
+ have been updated on a best-effort basis but their use has been
+ deprecated because they do not seem to work in practice in a
+ lot of cases already.
+
+ Related to https://github.com/arthurdejong/python-stdnum/issues/452
+ Related to https://github.com/arthurdejong/python-stdnum/pull/453
+
+2024-07-04 Joris Makauskis
+
+ * [6cbb9bc] stdnum/util.py: Fix zeep client timeout parameter
+
+ The timeout parameter of the zeep transport class is not
+ responsable for POST/GET timeouts. The operational_timeout
+ parameter should be used for that.
+
+ See https://github.com/mvantellingen/python-zeep/issues/140
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/444
+ Closes https://github.com/arthurdejong/python-stdnum/pull/445
+
+2023-07-04 Jeff Horemans
+
+ * [af3a728] stdnum/be/ssn.py, tests/test_be_ssn.doctest: Add
+ Belgian SSN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/438
+
+2024-07-15 Arthur de Jong
+
+ * [0da257c] online_check/stdnum.wsgi: Replace use of deprecated
+ inspect.getargspec()
+
+ Use the inspect.signature() function instead. The
+ inspect.getargspec() function was removed in Python 3.11.
+
+2024-06-23 Arthur de Jong
+
+ * [e951dac] stdnum/id/npwp.py, tests/test_id_npwp.doctest: Support
+ 16 digit Indonesian NPWP numbers
+
+ The Indonesian NPWP is being switched from 15 to 16 digits. The
+ number is now the NIK for Indonesian citizens and the old format
+ with a leading 0 for others (organisations and non-citizens).
+
+ See
+ https://www.grantthornton.co.id/insights/global-insights1/updates-regarding-the-format-of-indonesian-tax-id-numbers/
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/432
+
+2024-05-17 Jeff Horemans
+
+ * [1da003f] stdnum/ch/uid.py: Adjust Swiss uid module to accept
+ numbers without CHE prefix
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/437
+ Closes https://github.com/arthurdejong/python-stdnum/issues/423
+
+2024-05-21 petr.prikryl
+
+ * [91959bd] stdnum/cz/banks.dat: Update Czech database files
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/439
+ Closes https://github.com/arthurdejong/python-stdnum/pull/435
+
+2024-05-31 Olly Middleton
+
+ * [58ecb03] stdnum/ie/pps.py, tests/test_ie_pps.doctest: Update
+ Irish PPS validator to support new numbers
+
+ See https://www.charteredaccountants.ie/News/b-range-pps-numbers
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/440
+ Closes https://github.com/arthurdejong/python-stdnum/pull/441
+
+2024-06-13 vanderkoort
+
+ * [fb4d792] NEWS: Fix a typo
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/443
+
+2024-05-19 Arthur de Jong
+
+ * [5aeaeff] stdnum/id/loc.dat, stdnum/id/nik.py: Add support for
+ Indonesian NIK
+
+2024-05-19 Arthur de Jong
+
+ * [0690996] .github/workflows/test.yml, setup.py, tox.ini: Drop
+ support for Python 3.5
+
+ We don't have an easy way to test with Python 3.5 any more.
+
+2024-03-17 Arthur de Jong
+
+ * [201d4d1] ChangeLog, NEWS, README.md, docs/conf.py, docs/index.rst,
+ docs/stdnum.ca.bc_phn.rst, docs/stdnum.eu.ecnumber.rst,
+ docs/stdnum.in_.vid.rst, stdnum/__init__.py: Get files ready
+ for 1.20 release
+
+2024-03-17 Arthur de Jong
+
+ * [b454d3a] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cn/loc.dat, stdnum/gs1_128.py, stdnum/gs1_ai.dat,
+ stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat,
+ stdnum/nz/banks.dat, stdnum/oui.dat, tests/test_be_iban.doctest,
+ update/gs1_ai.py: Update database files
+
+ The Belgian bpost bank no longer has a registration and a few
+ bank account numbers in the tests that used that bank were removed.
+
+ Also updates the update/gs1_ai.py script to handle the new format
+ of the data published by GS1. Also update the GS1-128 module to
+ handle some different date formats.
+
+ The Pakistan entry was kept in the stdnum/iban.dat file because
+ the PDF version of the IBAN Registry still contains the country.
+
+ fix db
+
+2024-03-17 Arthur de Jong
+
+ * [97dbced] tox.ini: Add update-dat tox target for convenient data
+ file updating
+
+2024-03-17 Arthur de Jong
+
+ * [26fd25b] setup.cfg, update/cfi.py, update/nz_banks.py,
+ update/requirements.txt: Switch to using openpyxl for parsing
+ XLSX files
+
+ The xlrd has dropped support for parsing XLSX files. We still
+ use xlrd for update/be_banks.py because they use the classic
+ XLS format and openpyxl does not support that format.
+
+2024-03-17 Arthur de Jong
+
+ * [9230604] stdnum/za/idnr.py: Use HTTPS in URLs where possible
+
+2024-02-27 Atul Deolekar
+
+ * [7cba469] stdnum/in_/vid.py: Add Indian virtual identity number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/428
+
+2024-03-17 Arthur de Jong
+
+ * [bb20121] stdnum/ua/edrpou.py, tests/test_ua_edrpou.doctest:
+ Fix Ukrainian EDRPOU check digit calculation
+
+ This fixes the case where the weighted sum woud be 10 which
+ should result in a check digit of 0.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/429
+
+2023-12-15 Kevin Dagostino
+
+ * [9c7c669] stdnum/fr/nif.py: Imporve French NIF validation
+ (checksum)
+
+ The last 3 digits are a checksum. % 511
+ https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/426
+
+2024-02-03 Arthur de Jong
+
+ * [1e412ee] stdnum/vatin.py, tests/test_vatin.doctest: Fix vatin
+ number compacting for "EU" VAT numbers
+
+ Thanks Davide Walder for finding this.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/427
+
+2023-11-19 Daniel Weber
+
+ * [2535bbf] stdnum/eu/ecnumber.py, tests/test_eu_ecnumber.doctest:
+ Add European Community (EC) Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/422
+
+2023-10-20 Ömer Boratav
+
+ * [2478483] stdnum/ca/bc_phn.py: Add British Columbia PHN
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/421
+
+2023-11-12 Arthur de Jong
+
+ * [58d6283] stdnum/ro/cf.py, tests/test_eu_vat.doctest: Ensure EU
+ VAT numbers don't accept duplicate country codes
+
+2023-11-12 Arthur de Jong
+
+ * [1a5db1f] stdnum/de/vat.py: Fix typo (thanks Александр
+ Кизеев)
+
+2023-10-02 Arthur de Jong
+
+ * [352bbcb] .github/workflows/test.yml, setup.py, tox.ini: Add
+ support for Python 3.12
+
+2023-08-20 Arthur de Jong
+
+ * [fa455fc] ChangeLog, NEWS, README.md, docs/index.rst,
+ docs/stdnum.be.bis.rst, docs/stdnum.eg.tn.rst,
+ docs/stdnum.es.postal_code.rst, docs/stdnum.eu.oss.rst,
+ docs/stdnum.gn.nifp.rst, docs/stdnum.si.maticna.rst,
+ stdnum/__init__.py: Get files ready for 1.19 release
+
+2023-08-20 Arthur de Jong
+
+ * [3191b4c] MANIFEST.in: Ensure all files are included in source
+ archive
+
+ Fixes b1dc313 Fixes 90044e2
+
+2023-08-20 Arthur de Jong
+
+ * [3947a54] stdnum/by/portal.nalog.gov.by.crt, stdnum/by/unp.py:
+ Remove obsolete intermediate certificate
+
+ The portal.nalog.gov.by web no longer has an incomplete
+ certificate chain.
+
+2023-08-20 Arthur de Jong
+
+ * [7761e42] stdnum/numdb.py: Use importlib.resource in place of
+ deprecated pkg_resources
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/412
+ Closes https://github.com/arthurdejong/python-stdnum/pull/413
+
+2023-08-20 Arthur de Jong
+
+ * [f6edcc5] tests/test_do_rnc.py: Avoid the deprecated
+ assertRegexpMatches function
+
+2023-08-20 Arthur de Jong
+
+ * [895f092] setup.cfg: Rename license_file option in setup.cfg
+
+ It seems the old option wasn't working with all versions of
+ setuptools anyway.
+
+ See
+ https://setuptools.pypa.io/en/latest/userguide/declarative_config.html
+
+2023-08-20 Arthur de Jong
+
+ * [3126f96] stdnum/by/unp.py, tests/test_by_unp.py: Update Belarusian
+ UNP online check
+
+ The API for the online check for Belarusian UNP numbers at
+ https://www.portal.nalog.gov.by/grp/getData has changed some
+ small details of the API.
+
+2023-08-20 Arthur de Jong
+
+ * [88d1dca] tests/test_de_handelsregisternummer.py: Replace test
+ number for German company registry
+
+ The number seems to be no longer valid breaking the online tests.
+
+2023-08-20 Arthur de Jong
+
+ * [6e56f3c] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cn/loc.dat, stdnum/gs1_ai.dat, stdnum/iban.dat,
+ stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat,
+ stdnum/nz/banks.dat, stdnum/oui.dat, tests/test_be_iban.doctest,
+ update/oui.py: Update database files
+
+ This also modifies the OUI update script because the website
+ has changed to HTTPS and is sometimes very slow.
+
+ The Belgian Commerzbank no longer has a registration and a bank
+ account number in the tests used that bank.
+
+2023-08-20 Arthur de Jong
+
+ * [0aa0b85] update/eu_nace.py: Remove EU NACE update script
+
+ The website that publishes the NACE catalogue has changed and
+ a complete re-write of the script would be necessary. The data
+ file hasn't changed since 2017 so is also unlikely to change
+ until it is going to be replaced by NACE rev. 2.1 in 2025.
+
+ See https://ec.europa.eu/eurostat/web/nace
+
+ The NACE rev 2 specification can now be found here:
+ https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2/data
+
+ The NACE rev 2.1 specification can now be found here:
+ https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2.1._%28NACE_2.1%29/data
+
+ In both cases a ZIP file with RDF metadata can be downloaded
+ (but the web applciation also exposes some simpler JSON APIs).
+
+2023-08-13 Arthur de Jong
+
+ * [f58e08d] stdnum/eu/oss.py, stdnum/eu/vat.py,
+ tests/test_eu_oss.doctest, tests/test_eu_vat.doctest: Validate
+ European VAT numbers with EU or IM prefix
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/417
+
+2023-06-30 Blaž Bregar
+
+ * [d0f4c1a] stdnum/si/__init__.py, stdnum/si/maticna.py,
+ tests/test_si_maticna.doctest: Add Slovenian Corporate Registration
+ Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/414
+
+2023-08-06 Arthur de Jong
+
+ * [b8ee830] .github/workflows/test.yml, scripts/check_headers.py,
+ tox.ini: Extend license check to file header check
+
+ This also checks that the file name referenced in the file header
+ is correct.
+
+2023-08-06 Arthur de Jong
+
+ * [ef49f49] stdnum/be/bis.py, stdnum/be/nn.py,
+ stdnum/de/stnr.py, stdnum/dz/nif.py, stdnum/fi/alv.py,
+ stdnum/gb/utr.py, stdnum/hr/oib.py, stdnum/md/idno.py,
+ stdnum/pl/regon.py, stdnum/py/ruc.py, stdnum/sk/dph.py,
+ stdnum/tn/mf.py, stdnum/ua/edrpou.py, stdnum/ua/rntrc.py,
+ stdnum/vn/mst.py, stdnum/za/idnr.py, tests/test_al_nipt.doctest,
+ tests/test_gb_sedol.doctest, tests/test_iso6346.doctest,
+ tests/test_iso7064.doctest, tests/test_th_moa.doctest,
+ tests/test_tn_mf.doctest, tests/test_ve_rif.doctest: Fix file
+ headers
+
+ This improves consistency across files and fixes some files that
+ had an incorrect file name reference.
+
+2023-07-30 Arthur de Jong
+
+ * [3848318] stdnum/ca/sin.py: Validate first digit of Canadian SIN
+
+ See
+ http://www.straightlineinternational.com/docs/vaildating_canadian_sin.pdf
+ See
+ https://lists.arthurdejong.org/python-stdnum-users/2023/msg00000.html
+
+2023-06-20 Jeff Horemans
+
+ * [be33a80] stdnum/be/bis.py, stdnum/be/nn.py,
+ tests/test_be_bis.doctest, tests/test_be_nn.doctest: Add Belgian
+ BIS Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/418
+
+2023-06-19 Arthur de Jong
+
+ * [8ce4a47] .github/workflows/test.yml: Run Python 2.7 tests in
+ a container for GitHub Actions
+
+ See https://github.com/actions/setup-python/issues/672
+
+2023-06-13 Jeff Horemans
+
+ * [311fd56] stdnum/be/nn.py, tests/test_be_nn.doctest: Handle
+ (partially) unknown birthdate of Belgian National Number
+
+ This adds documentation for the special cases regarding birth
+ dates embedded in the number, allows for date parts to be unknown
+ and adds functions for getting the year and month.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/416
+
+2023-06-01 Chales Horn
+
+ * [7d3ddab] stdnum/isbn.py, stdnum/issn.py: Minor ISSN and ISBN
+ documentation fixes
+
+ Fix a comment that claimed incorrect ISSN length and use slightly
+ more consistent terminology around check digits in ISSN and ISBN.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/415
+
+2023-05-12 Arthur de Jong
+
+ * [90044e2] .github/workflows/test.yml,
+ scripts/check_license_headers.py, tox.ini: Add automated checking
+ for correct license header
+
+2023-01-28 Leandro Regueiro
+
+ * [62d15e9] stdnum/gn/__init__.py, stdnum/gn/nifp.py,
+ tests/test_gn_nifp.doctest: Add support for Guinea TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/384
+ Closes https://github.com/arthurdejong/python-stdnum/pull/386
+
+2023-02-24 Victor
+
+ * [96abcfe] stdnum/es/postal_code.py: Add Spanish postcode validator
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/401
+
+2023-02-13 mjturt
+
+ * [36858cc] stdnum/fi/hetu.py, tests/test_fi_hetu.doctest: Add
+ support for Finland HETU new century indicating signs
+
+ More information at
+ https://dvv.fi/en/reform-of-personal-identity-code
+
+ Cloess https://github.com/arthurdejong/python-stdnum/pull/396
+
+2023-01-05 Jeff Horemans
+
+ * [42d2792] stdnum/be/nn.py, tests/test_be_nn.doctest: Add
+ functionality to get gender from Belgian National Number
+
+ This also extends the documentation for the number.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/347/files
+
+2023-03-06 RaduBorzea <101399404+RaduBorzea@users.noreply.github.com>
+
+ * [cf14a9f] stdnum/ro/cnp.py: Add get_county() function to
+ Romanian CNP
+
+ This also validates the county part of the number.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/407
+
+2023-03-19 Arthur de Jong
+
+ * [a8b6573] docs/conf.py, setup.cfg, tox.ini: Ensure flake8 is
+ run on all Python files
+
+ This also fixes code style fixes in the Sphinx configuration file.
+
+2023-03-18 Arthur de Jong
+
+ * [7af50b7] .github/workflows/test.yml, setup.py, tox.ini: Add
+ support for Python 3.11
+
+2023-03-18 Arthur de Jong
+
+ * [8498b37] stdnum/gs1_128.py: Fix date formatting on PyPy 2.7
+
+ The original way of calling strftime was likely an artifact of
+ Python 2.6 support.
+
+ Fixes 7e84c05
+
+2023-03-18 Arthur de Jong
+
+ * [7e84c05] stdnum/gs1_128.py, stdnum/gs1_ai.dat,
+ tests/test_gs1_128.doctest, update/gs1_ai.py: Extend date parsing
+ in GS1-128
+
+ Some new AIs have new date formats or have changed the way
+ optional components of formats are defined.
+
+2023-03-09 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [bf1bdfe] stdnum/iban.dat: Update IBAN database file
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/409
+
+2023-03-18 Arthur de Jong
+
+ * [a09a7ce] stdnum/al/nipt.py, tests/test_al_nipt.doctest: Fix
+ Albanian tax number validation
+
+ This extends the description of the Albanian NIPT (NUIS) number
+ with information on the structure of the number. The first
+ character was previously limited between J and L but this letter
+ indicates a decade and the number is also used for individuals
+ to where it indicates a birth date.
+
+ Thanks Julien Launois for pointing this out.
+
+ Source:
+ https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Albania-TIN.pdf
+
+ Fixes 3db826c Closes
+ https://github.com/arthurdejong/python-stdnum/pull/402
+
+2023-03-13 Ali-Akber Saifee
+
+ * [031a249] stdnum/sg/uen.py: Fix typo in UEN docstring
+
+2023-01-02 Arthur de Jong
+
+ * [cf22705] online_check/stdnum.wsgi, tox.ini: Extend number
+ properties to show in online check
+
+ This also ensures that flake8 is run on the WSGI script.
+
+2022-10-09 Leandro Regueiro
+
+ * [6d366e3] stdnum/eg/__init__.py, stdnum/eg/tn.py,
+ tests/test_eg_tn.doctest: Add support for Egypt TIN
+
+ This also convertis Arabic digits to ASCII digits.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/225
+ Closes https://github.com/arthurdejong/python-stdnum/pull/334
+
+2022-12-30 Arthur de Jong
+
+ * [b1dc313] CONTRIBUTING.md, docs/contributing.rst, docs/index.rst:
+ Add initial CONTRIBUTING.md file
+
+ Initial description of the information needed for adding new
+ number formats and some coding and testing guidelines.
+
+2022-12-05 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [df894c3] stdnum/ch/uid.py, stdnum/gh/tin.py: Fix typos found
+ by codespell
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/344
+
+2022-12-12 Arthur de Jong
+
+ * [4f8155c] .github/workflows/test.yml: Run Python 3.5 and 3.6
+ GitHub tests on older Ubuntu
+
+ The ubuntu-latest now points to ubuntu-22.04 instead of
+ ubuntu-20.04 before.
+
+ This also switches the PyPy version to test with to 3.9.
+
+2022-11-29 valeriko
+
+ * [74d854f] stdnum/ee/ik.py: Fix a typo
+
+ Clocses https://github.com/arthurdejong/python-stdnum/pull/341
+
+2022-11-28 Arthur de Jong
+
+ * [7a91a98] tox.ini: Avoid newer flake8
+
+ The new 6.0.0 contains a number of backwards incompatible changes
+ for which plugins need to be updated and configuration needs to
+ be updated.
+
+ Sadly the maintainer no longer accepts contributions or discussion
+ See https://github.com/PyCQA/flake8/issues/1760
+
+2022-11-13 Arthur de Jong
+
+ * [60a90ed] ChangeLog, NEWS, README.md, docs/index.rst,
+ docs/stdnum.be.nn.rst, docs/stdnum.cfi.rst,
+ docs/stdnum.cz.bankaccount.rst, docs/stdnum.dz.nif.rst,
+ docs/stdnum.fo.vn.rst, docs/stdnum.gh.tin.rst,
+ docs/stdnum.ke.pin.rst, docs/stdnum.ma.ice.rst,
+ docs/stdnum.me.pib.rst, docs/stdnum.mk.edb.rst,
+ docs/stdnum.pk.cnic.rst, docs/stdnum.si.emso.rst,
+ docs/stdnum.tn.mf.rst, stdnum/__init__.py, stdnum/gh/tin.py,
+ tox.ini: Get files ready for 1.18 release
+
+2022-11-13 Arthur de Jong
+
+ * [31b2694] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cn/loc.dat, stdnum/eu/nace.dat, stdnum/gs1_ai.dat,
+ stdnum/imsi.dat, stdnum/isbn.dat, stdnum/nz/banks.dat,
+ stdnum/oui.dat: Update database files
+
+2022-11-13 Arthur de Jong
+
+ * [f691bf7] stdnum/de/handelsregisternummer.py,
+ tests/test_de_handelsregisternummer.py: Update German
+ OffeneRegister lookup data format
+
+ It appears that the data structure at OffeneRegister has changed
+ which requires a different query. Data is returned in a different
+ structure.
+
+2022-11-13 Arthur de Jong
+
+ * [5cdef0d] update/cn_loc.py: Increase timeout for CN Open Data
+ download
+
+ It seems that raw.githubusercontent.com can be extremely slow.
+
+2022-11-13 Arthur de Jong
+
+ * [580d6e0] update/my_bp.py: Pick up custom certificate from
+ script path
+
+ This ensures that the script can be run from any directory.
+
+ Fixes c4ad714
+
+2022-09-06 Leandro Regueiro
+
+ * [7348c7a] tests/test_vatin.doctest: vatin: Add a few more tests
+ for is_valid
+
+ See https://github.com/arthurdejong/python-stdnum/pull/316
+
+2022-11-13 Arthur de Jong
+
+ * [fa62ea3] stdnum/pk/__init__.py, stdnum/pk/cnic.py,
+ tests/test_pk_cnic.doctest: Add Pakistani ID card number
+
+ Based on the implementation provided by Quantum Novice (Syed
+ Haseeb Shah).
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/306
+ Closes https://github.com/arthurdejong/python-stdnum/issues/304
+
+2022-10-16 Blaž Bregar
+
+ * [feccaff] stdnum/si/__init__.py, stdnum/si/emso.py,
+ tests/test_si_emso.doctest: Add support for Slovenian EMŠO
+ (Unique Master Citizen Number)
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/338
+
+2022-11-12 Arthur de Jong
+
+ * [74cc981] stdnum/cz/bankaccount.py, stdnum/nz/bankaccount.py,
+ tox.ini, update/iban.py: Ensure we always run flake8-bugbear
+
+ This assumes that we no longer use Python 2.7 for running the
+ flake8 tests any more.
+
+2022-11-12 Arthur de Jong
+
+ * [a03ac04] stdnum/cz/bankaccount.py,
+ stdnum/es/referenciacatastral.py, stdnum/lei.py, stdnum/nl/bsn.py:
+ Use HTTPS in URLs where possible
+
+2022-10-23 Leandro Regueiro
+
+ * [8e76cd2] stdnum/cr/cpf.py: Pad with zeroes in a more readable
+ manner
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/340
+
+2022-11-12 Arthur de Jong
+
+ * [45f098b] stdnum/exceptions.py: Make all exceptions inherit
+ from ValueError
+
+ All the validation exceptions (subclasses of ValidationError)
+ are raised when a number is provided with an inappropriate value.
+
+2022-11-12 Arthur de Jong
+
+ * [a218032] stdnum/ch/uid.py, tests/test_ch_uid.py: Add a check_uid()
+ function to the stdnum.ch.uid module
+
+ This function can be used to performa a lookup of organisation
+ information by the Swiss Federal Statistical Office web service.
+
+ Related to https://github.com/arthurdejong/python-stdnum/issues/336
+
+2022-11-12 Arthur de Jong
+
+ * [1364e19] stdnum/cusip.py, tests/test_cusip.doctest: Support
+ "I" and "O" in CUSIP number
+
+ It is unclear why these letters were considered invalid at the
+ time of the implementation.
+
+ This also reduces the test set a bit while still covering
+ most cases.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/337
+
+2022-10-23 Arthur de Jong
+
+ * [f972894] online_check/stdnum.wsgi: Switch to escape() from html
+
+ The function was removed from the cgi module in Python 3.8.
+
+2022-10-23 Arthur de Jong
+
+ * [c5d3bf4] online_check/stdnum.wsgi: Switch to parse_qs() from
+ urllib.parse
+
+ The function was removed from the cgi module in Python 3.8.
+
+2022-10-19 Arthur de Jong
+
+ * [8b5b07a] stdnum/casrn.py: Remove unused import
+
+ Fixes 09d595b
+
+2022-10-19 Arthur de Jong
+
+ * [09d595b] stdnum/casrn.py: Improve validation of CAS Registry
+ Number
+
+ This ensures that a leading 0 is treated as invalid.
+
+2022-10-19 Arthur de Jong
+
+ * [7c2153e] stdnum/cas.py: Remove duplicate CAS Registry Number
+
+ The recently added stdnum.cas module was already available as
+ teh stdnum.casrn module.
+
+ Reverts acb6934
+
+2022-10-19 Arthur de Jong
+
+ * [1003033] tests/test_no_fodselsnummer.doctest: Update
+ Fødselsnummer test case for date in future
+
+ The future was now. This problem was pushed forwards to October
+ 2039.
+
+2022-10-15 Arthur de Jong
+
+ * [1636045] tox.ini: Support running tests with PyPy 2.7
+
+ This also applies the fix from cfc80c8 from Python 2.7 to PyPy.
+
+2022-09-11 Leandro Regueiro
+
+ * [7be2291] stdnum/gh/__init__.py, stdnum/gh/tin.py,
+ tests/test_gh_tin.doctest: Add support for Ghana TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/326
+ Closes https://github.com/arthurdejong/python-stdnum/issues/262
+
+2022-10-15 Arthur de Jong
+
+ * [acb6934] stdnum/cas.py: Add CAS Registry Number
+
+2022-09-18 Leandro Regueiro
+
+ * [2b6e087] stdnum/me/__init__.py, stdnum/me/pib.py,
+ tests/test_me_pib.doctest: Add support for Montenegro TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/331
+ Closes https://github.com/arthurdejong/python-stdnum/issues/223
+
+2022-09-10 Leandro Regueiro
+
+ * [fbe094c] stdnum/fo/__init__.py, stdnum/fo/vn.py,
+ tests/test_fo_vn.doctest: Add Faroe Islands V-number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/323
+ Closes https://github.com/arthurdejong/python-stdnum/issues/219
+
+2022-09-17 Leandro Regueiro
+
+ * [a261a93] stdnum/mk/__init__.py, stdnum/mk/edb.py,
+ tests/test_mk_edb.doctest: Add North Macedonian ЕДБ
+
+ Note that this is implementation is mostly based
+ on unofficial sources describing the format,
+ which match the hundreds of examples found online.
+ https://forum.it.mk/threads/modularna-kontrola-na-embg-edb-dbs-itn.15663/?__cf_chl_tk=Op2PaEIauip6Z.ZjvhP897O8gRVAwe5CDAVTpjx1sEo-1663498930-0-gaNycGzNCRE#post-187048
+
+ Also note that the algorithm for the check digit was tested on
+ all found examples, and it doesn't work for all of them, despite
+ those failing examples don't seem to be valid according to the
+ official online search.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/330
+ Closes https://github.com/arthurdejong/python-stdnum/issues/222
+
+2022-09-23 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [eff3f52] stdnum/cn/ric.py, stdnum/ma/ice.py: Fix a couple typos
+ found by codespell
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/333
+
+2022-09-04 Leandro Regueiro
+
+ * [31709fc] stdnum/dz/__init__.py, stdnum/dz/nif.py,
+ tests/test_dz_nif.doctest: Add Algerian NIF number
+
+ This currently only checks the length and whether it only
+ contains digits because little could be found on the structure
+ of the number of whether there are any check digits.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/313
+ Closes https://github.com/arthurdejong/python-stdnum/issues/307
+
+2022-09-03 Leandro Regueiro
+
+ * [2907676] stdnum/ma/__init__.py, stdnum/ma/ice.py,
+ tests/test_ma_ice.doctest: Add support for Morocco TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/226
+ Closes https://github.com/arthurdejong/python-stdnum/pull/312
+
+2022-08-08 Leandro Regueiro
+
+ * [d70549a] stdnum/ke/__init__.py, stdnum/ke/pin.py,
+ tests/test_ke_pin.doctest: Add Kenyan TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/300
+ Closes https://github.com/arthurdejong/python-stdnum/pull/310
+
+2022-09-06 Leandro Regueiro
+
+ * [dd70cd5] stdnum/tn/__init__.py, stdnum/tn/mf.py,
+ tests/test_tn_mf.doctest: Add support for Tunisia TIN
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/317
+ Closes https://github.com/arthurdejong/python-stdnum/issues/309
+
+2022-08-15 Arthur de Jong
+
+ * [e40c827] tests/test_eu_vat.py: Update EU VAT Vies test with
+ new number
+
+ The number used before was apparently no longer valid.
+
+2022-08-15 Arthur de Jong
+
+ * [5bcc460] stdnum/de/handelsregisternummer.py: Fix German
+ OffeneRegister company registry URL
+
+2022-08-15 Arthur de Jong
+
+ * [ee9dfdf] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cfi.dat, stdnum/cn/loc.dat, stdnum/eu/nace.dat,
+ stdnum/gs1_ai.dat, stdnum/iban.dat, stdnum/imsi.dat,
+ stdnum/isbn.dat, stdnum/isil.dat, stdnum/my/bp.dat,
+ stdnum/nz/banks.dat, stdnum/oui.dat: Update database files
+
+2022-08-15 Arthur de Jong
+
+ * [6b39c3d] update/nz_banks.py: Do not print trailing space
+
+2022-08-15 Arthur de Jong
+
+ * [e901ac7] update/my_bp.py: Ignore invalid downloaded country codes
+
+ The page currently lists a country without a country code (is
+ listed as "-"). This also ensures that lists of country codes
+ are handled consistently.
+
+2022-08-15 Arthur de Jong
+
+ * [2cf78c2] update/imsi.py: Update names of Wikipedia pages with
+ IMSI codes
+
+2022-08-15 Arthur de Jong
+
+ * [975d508] update/at_postleitzahl.py, update/be_banks.py,
+ update/cfi.py, update/cn_loc.py, update/cz_banks.py,
+ update/do_whitelists.py, update/eu_nace.py, update/gs1_ai.py,
+ update/iban.py, update/imsi.py, update/isbn.py, update/isil.py,
+ update/my_bp.py, update/nz_banks.py, update/oui.py: Provide a
+ timeout to all download scripts
+
+2022-08-15 Arthur de Jong
+
+ * [ed37a6a] stdnum/isil.py, update/isil.py: Update ISIL download URL
+
+2022-08-13 Christian Clauss
+
+ * [8aa6b5e] .github/workflows/test.yml: Remove redundant steps
+ with tox_job
+
+ This also switches the other Tox jobs to use the latest Python
+ 3.x interpreter.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/305
+
+2022-08-03 Romuald R
+
+ * [ce9322c] stdnum/de/handelsregisternummer.py,
+ tests/test_de_handelsregisternummer.doctest: Add extra court
+ alias for german Handelsregisternummer
+
+ Charlottenburg (Berlin) is a valid court representation for Berlin
+ (Charlottenburg).
+
+ See
+ https://www.northdata.com/VRB+Service+GmbH,+Berlin/Amtsgericht+Charlottenburg+%28Berlin%29+HRB+103587+B
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/298
+
+2022-08-15 Arthur de Jong
+
+ * [eae1dd2] stdnum/ch/esr.py, stdnum/il/idnr.py, stdnum/isin.py,
+ stdnum/nl/bsn.py, stdnum/no/kontonr.py, stdnum/nz/ird.py,
+ stdnum/ro/cui.py: Use str.zfill() for padding leading zeros
+
+2022-06-08 petr.prikryl
+
+ * [c5595c7] stdnum/cz/bankaccount.py, stdnum/cz/banks.dat,
+ tests/test_cz_bankaccount.doctest, update/cz_banks.py: Add Czech
+ bank account numbers
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/295
+ Closes https://github.com/arthurdejong/python-stdnum/pull/296
+
+2022-08-06 vovavili <64227274+vovavili@users.noreply.github.com>
+
+ * [4d4a0b3] stdnum/isin.py: Fix small typo
+
+ Improper inflection of plurals.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/299
+
+2022-08-13 Arthur de Jong
+
+ * [7ee0563] setup.cfg, stdnum/ad/nrt.py, stdnum/cr/cpj.py,
+ stdnum/eu/nace.py, stdnum/id/npwp.py, stdnum/il/hp.py,
+ stdnum/it/aic.py, stdnum/li/peid.py, stdnum/nz/ird.py,
+ stdnum/sg/uen.py, stdnum/sv/nit.py, stdnum/za/tin.py,
+ update/eu_nace.py: Put long line flake8 ignores in files instead
+ of globally
+
+ We have some long URLs in the code (mostly in docstrings) and
+ wrapping them does not improve readability (and is difficult
+ in docstrings) so the E501 ignore is now put inside each file
+ instead of globally.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/302
+
+2022-08-13 Arthur de Jong
+
+ * [351be74] .github/workflows/test.yml, setup.py, tox.ini: Add
+ support for Python 3.10
+
+2022-08-08 Christian Clauss
+
+ * [b36c0d6] .github/workflows/test.yml: Upgrade GitHub Actions
+
+ Update checkout to v3 (no relevant changes) and setup-python to v4
+ (changes the names for pypy versions).
+
+2022-08-12 Arthur de Jong
+
+ * [9f79691] stdnum/it/iva.py, update/iban.py: Fix flake8 error
+
+ This stops using not as a function and hopefully also makes the
+ logic clearer.
+
+2022-07-04 Arthur de Jong
+
+ * [a280d53] .github/workflows/test.yml: Upgrade to CodeQL Action v2
+
+ https://github.blog/changelog/2022-04-27-code-scanning-deprecation-of-codeql-action-v1/
+
+2022-04-09 Arthur de Jong
+
+ * [8a28e38] setup.cfg, tox.ini: Switch from nose to pytest
+
+ Nose hasn't seen a release since 2015 and sadly doesn't work
+ with Python 3.10.
+
+ See https://github.com/nose-devs/nose/issues/1099
+
+2022-05-09 Arthur de Jong
+
+ * [e831d07] setup.cfg: Ignore flake8 complaining about print
+ statements
+
+ It seems that flake8 now uses T201 instead of T001 for this check.
+
+2022-04-08 Alexis de Lattre
+
+ * [7d81eac] stdnum/gs1_128.py, tests/test_gs1_128.doctest: Support
+ parsing dates without a day in GS1-128
+
+ Date such as '(17)260400' is now properly interpreted as April
+ 30th 2026.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/294
+
+2022-02-05 Cédric Krier
+
+ * [bda2a9c] stdnum/be/nn.py, tests/test_be_nn.doctest: Compute
+ birth date from Belgian National Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/288
+
+2022-03-21 Arthur de Jong
+
+ * [e2a2774] stdnum/iso7064/mod_97_10.py, tests/test_iso7064.doctest:
+ Return check digits in 02-98 range for ISO 7064 Mod 97, 10
+
+ There are some valid ranges for check digits within ISO 7064
+ Mod 97, 10 that all result in a valid checksum. This changes the
+ calculated check digits to be in the range from 02 to 98 as is
+ specified for use in IBAN.
+
+ See
+ https://en.wikipedia.org/wiki/International_Bank_Account_Number#Generating_IBAN_check_digits
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/289
+
+2022-03-07 Cédric Krier
+
+ * [73f5e3a] stdnum/fr/siret.py, tests/test_fr_siret.doctest:
+ Support special validation of La Post SIRET
+
+ See
+ https://fr.wikipedia.org/wiki/Système_d'identification_du_répertoire_des_établissements#Exceptions_pour_le_groupe_La_Poste
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/293
+ Closes https://github.com/arthurdejong/python-stdnum/issues/291
+
+2022-02-14 Arthur de Jong
+
+ * [27c7c74] stdnum/cfi.py, tests/test_cfi.doctest: Fix Python 2.7
+ compatibility of the tests
+
+ Fixes a9039c1
+
+2022-02-14 Arthur de Jong
+
+ * [cfc80c8] tox.ini: Support running tests with Python 2.7
+
+ When using recent versions of virtualenv this ensures that
+ older versions of pip and setuptools will be used inside the
+ virtualenvs that are created by tox.
+
+2022-02-13 Arthur de Jong
+
+ * [a9039c1] stdnum/cfi.dat, stdnum/cfi.py, tests/test_cfi.doctest,
+ update/cfi.py: Add Classification of Financial Instruments
+
+ This implements parsing of ISO 10962 CFI codes based on the
+ published description of the structure of these numbers.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/283
+
+2022-02-13 Arthur de Jong
+
+ * [219ff54] stdnum/numdb.py, tests/numdb-test.dat: Fix problem in
+ numdb with missing sub-properties
+
+ If a numdb data file line contains multiple values or ranges
+ the sub-ranges were only applied to the last value in the range.
+
+2022-02-13 Arthur de Jong
+
+ * [fd32e61] setup.py: Also ensure that embedded certificates
+ are shipped
+
+2022-01-09 Arthur de Jong
+
+ * [02dec52] stdnum/mx/curp.py: Fix disabling check digit validation
+ of Mexican CURP
+
+ The validation functions supported an optional parameter to
+ disable check digit validation in the number that didn't actually
+ affect validation and was most likely accidentally copied from
+ the RFC module.
+
+ Fixes 50874a9 Closes
+ https://github.com/arthurdejong/python-stdnum/issues/285
+
+2021-11-29 Cédric Krier
+
+ * [dcf4730] stdnum/be/__init__.py, stdnum/be/nn.py: Add Belgian
+ National Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/284
+
+2021-10-03 Arthur de Jong
+
+ * [50650a9] ChangeLog, NEWS, README.md, docs/index.rst,
+ docs/stdnum.in_.epic.rst, docs/stdnum.in_.gstin.rst,
+ docs/stdnum.isrc.rst, docs/stdnum.pt.cc.rst,
+ docs/stdnum.se.postnummer.rst, docs/stdnum.th.moa.rst,
+ docs/stdnum.th.pin.rst, docs/stdnum.th.tin.rst, stdnum/__init__.py:
+ Get files ready for 1.17 release
+
+2021-10-03 Arthur de Jong
+
+ * [0779d6a] stdnum/kr/brn.py, tests/test_kr_brn.py: Remove South
+ Korean BRN online check
+
+ The Korea Fair Trade Commission website now requires solving
+ a CAPTCHA before submitting the request so this is no longer
+ possible.
+
+2021-10-03 Arthur de Jong
+
+ * [61ebc9c] stdnum/no/orgnr.py: Add documentation for Norwegian
+ Organisasjonsnummer
+
+2021-10-03 Arthur de Jong
+
+ * [9da63a4] tests/test_do_cedula.py: Update Cedula online test value
+
+ Apparently the previously whitelisted value is no longer recognised
+ as a valid value by the DGII service.
+
+2021-10-03 Arthur de Jong
+
+ * [25c30d7] stdnum/by/portal.nalog.gov.by.crt: Update Let's Encrypt
+ R3 intermediate certificate
+
+ The portal.nalog.gov.by web site serves an incomplete certificate
+ chain and the certificate chain was changed.
+
+2021-10-03 Arthur de Jong
+
+ * [3406c24] MANIFEST.in, README.md, docs/index.rst, setup.py,
+ update/numlist.py: Rename README to README.md
+
+ Mostly to please GitHub.
+
+ See https://github.com/arthurdejong/python-stdnum/issues/280
+
+2021-10-03 Arthur de Jong
+
+ * [d5cba0a] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cn/loc.dat, stdnum/eu/nace.dat, stdnum/gs1_ai.dat,
+ stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat,
+ stdnum/nz/banks.dat, stdnum/oui.dat, update/gs1_ai.py: Update
+ database files
+
+2021-09-30 Gaurav Chauhan <71322586+vairag22@users.noreply.github.com>
+
+ * [26a7e7b] stdnum/in_/__init__.py, stdnum/in_/gstin.py: Add Indian
+ GSTIN (VAT number)
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/279
+
+2021-09-30 Gaurav Chauhan <71322586+vairag22@users.noreply.github.com>
+
+ * [ca560cd] stdnum/in_/epic.py: Add Indian EPIC number (Voter
+ ID number)
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/279
+
+2021-09-30 Gaurav Chauhan <71322586+vairag22@users.noreply.github.com>
+
+ * [fc56388] stdnum/in_/aadhaar.py, stdnum/in_/pan.py: Improve
+ validation and docstrings of Indian numbers
+
+ This ensures that an Aadhaar cannot be a palindrome and checks the
+ serial part of the PAN to not be all zeros. It also updates some
+ descriptions of PAN holder types and renames the card_holder_type
+ to just holder_type.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/279
+
+2021-09-19 Arthur de Jong
+
+ * [1a0e613] stdnum/ec/ruc.py, tests/test_ec_ruc.doctest: Fix
+ detection of natural RUC values
+
+ A natural RUC is the CI plus an establishment number. Both the
+ natural RUC and the public RUC can have a third digit with the
+ value 6.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/267
+
+2021-08-20 michele
+
+ * [8071444] stdnum/se/__init__.py, stdnum/se/postnummer.py,
+ tests/test_se_postnummer.doctest: Add swedish postcode validator
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/271
+
+2021-02-21 Piruin Panichphol
+
+ * [424e408] stdnum/th/__init__.py, stdnum/th/moa.py,
+ stdnum/th/pin.py, stdnum/th/tin.py, tests/test_th_moa.doctest,
+ tests/test_th_pin.doctest, tests/test_th_tin.doctest: Add support
+ for Thai Numbers
+
+ - TIN Taxpayer Identification Number - PIN Personal Identification
+ Number - MOA Memorandum of Association Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/118
+ Closes https://github.com/arthurdejong/python-stdnum/pull/255
+
+2021-03-10 Nuno André
+
+ * [36d723c] stdnum/isrc.py, tests/test_isrc.doctest: Add ISRC
+ (International Standard Recording Code)
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/261
+
+2021-08-07 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [48bfd84] stdnum/ad/nrt.py, stdnum/bitcoin.py, stdnum/do/ncf.py,
+ stdnum/isbn.py, stdnum/util.py, stdnum/vn/mst.py,
+ tests/test_cusip.doctest, tests/test_de_idnr.doctest,
+ update/be_banks.py, update/imsi.py, update/isil.py,
+ update/numlist.py: Fix typos found by codespell
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/269
+
+2021-08-07 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [dcdb5c9] stdnum/exceptions.py: Explicilty define exported
+ exceptions
+
+ LGTM alert: Import pollutes the enclosing namespace
+ See: https://lgtm.com/rules/3980091/ Closes
+ https://github.com/arthurdejong/python-stdnum/pull/270
+
+2021-08-07 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [abda037] stdnum/no/fodselsnummer.py: Simplify range checking
+ in Norwegian birth numbers
+
+ LGTM alert: Test is always true See: https://lgtm.com/rules/900073/
+ Closes https://github.com/arthurdejong/python-stdnum/pull/270
+
+2021-08-07 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [c69b4f6] update/be_banks.py: Fix handling of empty worksheet
+ in Belgian bank download
+
+ LGTM alert: Call to next() in a generator
+ See: https://lgtm.com/rules/11000086/ Closes
+ https://github.com/arthurdejong/python-stdnum/pull/270
+
+2021-06-09 David Vaz
+
+ * [4516748] stdnum/pt/cc.py, tests/test_pt_cc.doctest: Add CC
+ (Número de Cartão de Cidadão, Portuguese Identity number)
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/265
+
+2021-06-10 FRANK ROBERTO CHAVEZ SOSA <1085268@est.intec.edu.do>
+
+ * [4c51860] stdnum/do/ncf.py: Add new e-CF types to Dominican
+ Republic NCF
+
+2021-01-18 Andres Rodriguez
+
+ * [48e6502] stdnum/do/ncf.py: Fix parsing of empty fields in
+ DGII checking
+
+2020-12-11 Cristopher Ortega
+
+ * [2b452b6] stdnum/do/ncf.py, tests/test_do_ncf.py: Add ENCF
+ validation support for Dominican Republic NCF
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/248
+
+2021-06-09 Dimitri Papadopoulos
+<3234522+DimitriPapadopoulos@users.noreply.github.com>
+
+ * [eeaf665] stdnum/fr/nif.py: Improve French NIF validation
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/266
+
+2021-07-12 Arthur de Jong
+
+ * [e2a95fc] .github/workflows/test.yml: Configure CodeQL code
+ scanning
+
+2021-07-18 Arthur de Jong
+
+ * [175b1e5] stdnum/exceptions.py: Ignore N818 because our exceptions
+ are not named error
+
+2021-04-11 Arthur de Jong
+
+ * [38c368d] stdnum/numdb.py, tests/numdb-test.dat: Only process
+ the shortest matches in the numdb module
+
+ This ensures that matching numbers is done consistently when
+ the numdb database file has conflicting information about the
+ length of numbers.
+
+ This also refactors the _find() function to be simpler and
+ reduces the number of recursive calls that have to be done.
+
+ The tests have been re-formatted to use pprint to make it easier
+ to spot differences if any of the tests fail (instead of just
+ saying expected True, got False).
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/257
+
+2021-04-11 Arthur de Jong
+
+ * [b7901d6] update/imsi.py: Stop non-operational MNCs from confusing
+ IMSI dataset
+
+ This only includes data from non-operational (status "Not
+ operational" according to Wikipedia) Mobile Network Code operators
+ in the generated data file if they would not confuse the lookup
+ of operational numbers.
+
+ This avoid problems when the "030" to "039" non-operational ranges
+ conflicting with the "03" operational range. This ensures that
+ only the "03" value is kept. For historical completeness we keep
+ the other non-operational values.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/257
+
+2021-03-03 Jakub Wilk
+
+ * [7e69090] docs/index.rst: Fix typo
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/258
+
+2021-03-21 Arthur de Jong
+
+ * [5785afb] .github/workflows/test.yml, .travis.yml: Replace Travis
+ with GitHub actions
+
+2021-03-21 Arthur de Jong
+
+ * [7c0bb84] .travis.yml, setup.py, tox.ini: Drop support for Python
+ 2.6 and 3.4
+
+ It is increasingly difficult to test with these versions of
+ Python and everybody should have upgraded to a more recent
+ version long ago.
+
+2021-02-06 Arthur de Jong
+
+ * [075d85e] ChangeLog, NEWS, stdnum/__init__.py: Get files ready
+ for 1.16 release
+
+2021-02-06 Arthur de Jong
+
+ * [fad3064] stdnum/by/portal.nalog.gov.by.crt: Add Let's Encrypt
+ R3 intermediate certificate
+
+ The portal.nalog.gov.by web site serves an incomplete certificate
+ chain and the intermediate certificate was changed.
+
+2021-02-06 Arthur de Jong
+
+ * [8c4ec55] stdnum/be/banks.dat, stdnum/cn/loc.dat,
+ stdnum/eu/nace.dat, stdnum/gs1_ai.dat, stdnum/imsi.dat,
+ stdnum/isbn.dat, stdnum/nz/banks.dat, stdnum/oui.dat: Update
+ database files
+
+2021-02-06 Arthur de Jong
+
+ * [fe34e15] stdnum/kr/rrn.py, stdnum/pe/ruc.py, stdnum/ua/edrpou.py:
+ Use HTTPS in URLs where possible
+
+2021-01-24 Arthur de Jong
+
+ * [407a02f] stdnum/at/postleitzahl.dat, update/at_postleitzahl.py:
+ Switch postal code download to Austrian open-data portal
+
+ This simplifies the process of downloading Austrian
+ postal codes by downloading a JSON blob instead from
+ https://www.data.gv.at/katalog/dataset/f76ed887-00d6-450f-a158-9f8b1cbbeebf
+
+ This filters the list to only use addressable (adressierbar)
+ postal codes because it matches the previous list.
+
+ Thanks Bernd Schlapsi for providing the pointer.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/235
+
+2021-01-21 Alexis de Lattre
+
+ * [53f13b4] stdnum/vatin.py, tests/test_vatin.doctest: Add support
+ for XI VAT numbers in vatin
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/251
+
+2021-01-21 Arthur de Jong
+
+ * [b93d695] stdnum/eu/vat.py, stdnum/gb/vat.py,
+ tests/test_eu_vat.doctest: Support xi country code for Northern
+ Ireland
+
+ While Great Brittain is no longer an EU member state some GB VAT
+ numbers are still valid if the company meets certain requirements.
+
+ See
+ https://www.gov.uk/government/publications/accounting-for-vat-on-goods-moving-between-great-britain-and-northern-ireland-from-1-january-2021/check-when-you-are-trading-under-the-northern-ireland-protocol-if-you-are-vat-registered-business
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/250
+
+2021-01-11 Arthur de Jong
+
+ * [6b7f209] ChangeLog, NEWS, README, docs/conf.py, docs/index.rst,
+ docs/stdnum.li.peid.rst, docs/stdnum.ro.cui.rst,
+ docs/stdnum.ua.edrpou.rst, docs/stdnum.ua.rntrc.rst,
+ stdnum/__init__.py, tox.ini: Get files ready for 1.15 release
+
+2021-01-11 Arthur de Jong
+
+ * [755eee7] .travis.yml: Simplify Travis matrix
+
+ This also ensures that supported Python interpreters are output
+ in order.
+
+2021-01-10 Arthur de Jong
+
+ * [a0c62ee] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat,
+ stdnum/cn/loc.dat, stdnum/eu/nace.dat, stdnum/gs1_ai.dat,
+ stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat,
+ stdnum/my/bp.dat, stdnum/nz/banks.dat, stdnum/oui.dat,
+ update/at_postleitzahl.py, update/my_bp.py, update/nz_banks.py:
+ Update database files
+
+2021-01-10 Arthur de Jong
+
+ * [df0623b] stdnum/by/unp.py, stdnum/do/ncf.py, stdnum/imsi.py,
+ stdnum/isbn.py, stdnum/meid.py, tox.ini: Drop pinning of isort
+ now flake8-isort has been fixed
+
+ This changes a few inline imports in the code to pass with the
+ new isort.
+
+ Reverts 291b831
+
+2021-01-10 Arthur de Jong
+
+ * [b202eee] stdnum/my/nric.py: Fix typo
+
+2021-01-10 Arthur de Jong
+
+ * [7e86331] setup.py: Add project URLs for PyPI
+
+2020-10-25 Leandro Regueiro
+
+ * [126496c] stdnum/ua/rntrc.py, tests/test_ua_rntrc.doctest:
+ Add support for Ukraine РНОКПП number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/242
+ Closes https://github.com/arthurdejong/python-stdnum/issues/117
+
+2020-10-25 Leandro Regueiro
+
+ * [b7b2af8] stdnum/ua/__init__.py, stdnum/ua/edrpou.py,
+ tests/test_ua_edrpou.doctest: Add support for Ukraine ЄДРПОУ
+ number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/242
+ Closes https://github.com/arthurdejong/python-stdnum/issues/117
+
+2021-01-04 Viggo de Vries
+
+ * [0427b01] stdnum/eu/vat.py, tests/test_eu_vat.doctest,
+ tests/test_gb_vat.doctest: Remove GB from EU member states
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/246
+
+2021-01-10 Arthur de Jong
+
+ * [2f2c742] .travis.yml, setup.py, tox.ini: Add support for
+ Python 3.9
+
+ This switches Travis tests to bionic by default.
+
+2021-01-10 Arthur de Jong
+
+ * [2046f51] stdnum/damm.py, stdnum/eu/at_02.py, stdnum/gs1_128.py,
+ stdnum/iso7064/mod_11_10.py, stdnum/iso7064/mod_11_2.py,
+ stdnum/iso7064/mod_37_2.py, stdnum/iso7064/mod_37_36.py,
+ stdnum/iso7064/mod_97_10.py, stdnum/luhn.py, stdnum/util.py,
+ stdnum/verhoeff.py: Fix flake8 blind except Exception error
+
+2021-01-04 Viggo de Vries
+
+ * [cc3a970] stdnum/au/__init__.py: Use ABN as Australian VAT number
+
+ See https://www.ato.gov.au/Business/GST/Tax-invoices/
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/246
+
+2021-01-02 Arthur de Jong
+
+ * [c74e322] stdnum/vatin.py, tests/test_vatin.doctest: Support
+ VAT numbers that are only valid with country prefix
+
+ The Swish VAT number has the CH prefix embedded as a required
+ part of the number. This ensures that the international VAT
+ number module also supports that.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/245
+ Fixes ff188bd
+
+2020-10-27 Matthias Schmid, M.Sc
+
+ * [5082af4] stdnum/li/__init__.py, stdnum/li/peid.py,
+ tests/test_li_peid.doctest: Add Liechtenstein
+ Personenidentifikationsnummer
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/241
+ Closes https://github.com/arthurdejong/python-stdnum/issues/125
+
+2020-10-02 Jonas Geuens
+
+ * [3a592e4] stdnum/be/vat.py, tests/test_be_vat.doctest: Expanded
+ validation for BE VAT numbers
+
+ Specifically invalidated all-zero numbers
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/240
+
+2020-11-01 Arthur de Jong
+
+ * [c5eb2d8] stdnum/eu/vat.py, stdnum/ro/cf.py,
+ tests/test_eu_vat.doctest: Retain RO prefix in Romanian VAT numbers
+
+ This does not strip the RO prefix from Romanian VAT numbers to be
+ able to keep the distinction between a CUI/CIF that is registered
+ for VAT (which commonly has the RO prefix) and those that don't.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/231
+
+2020-11-01 Arthur de Jong
+
+ * [1f6c77f] stdnum/ro/cnp.py, stdnum/ro/onrc.py: Minor updates
+
+2020-11-01 Arthur de Jong
+
+ * [e0417f6] stdnum/ro/cf.py, stdnum/ro/cui.py: Add Romanian
+ CUI/CIF number
+
+ This module separates the validation of numbers assigned to
+ companies (CUI or CIF) of those assigned to natural persons (CNP).
+
+2020-09-19 Arthur de Jong
+
+ * [19d3f70] stdnum/eu/vat.py: Make list of EU member states list
+ of public API
+
+ This provides stdnum.eu.vat.MEMBER_STATES. Note that Greece is
+ listed with a country code of "gr" while the prefix used in VAT
+ numbers is "el".
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/238
+
+2020-09-04 Arthur de Jong
+
+ * [992dc20] online_check/check.js,
+ online_check/jquery-1.7.1.js, online_check/jquery-1.7.1.min.js,
+ online_check/jquery-3.5.1.js, online_check/jquery-3.5.1.min.js,
+ online_check/jquery-3.5.1.min.map, online_check/template.html:
+ Upgrade jQuery to 3.5.1
+
+ This also runs eslint over check.js and fixes an issue from
+ the upgrade.
+
+2020-08-09 Arthur de Jong
+
+ * [3373938] ChangeLog, NEWS, README, docs/index.rst,
+ docs/stdnum.by.unp.rst, docs/stdnum.cn.uscc.rst,
+ docs/stdnum.gb.utr.rst, docs/stdnum.gs1_128.rst,
+ docs/stdnum.id.npwp.rst, docs/stdnum.il.hp.rst,
+ docs/stdnum.it.aic.rst, docs/stdnum.kr.brn.rst,
+ docs/stdnum.ro.onrc.rst, docs/stdnum.sg.uen.rst,
+ docs/stdnum.sv.nit.rst, docs/stdnum.tw.ubn.rst,
+ docs/stdnum.vatin.rst, docs/stdnum.vn.mst.rst,
+ docs/stdnum.za.idnr.rst, stdnum/__init__.py: Get files ready
+ for 1.14 release
+
+2020-08-09 Arthur de Jong
+
+ * [40fcc24] stdnum/be/banks.dat, stdnum/cn/loc.dat,
+ stdnum/eu/nace.dat, stdnum/gs1_ai.dat, stdnum/iban.dat,
+ stdnum/imsi.dat, stdnum/isbn.dat, stdnum/nz/banks.dat,
+ stdnum/oui.dat, update/imsi.py, update/nz_banks.py: Update
+ database files
+
+2020-03-08 Leandro Regueiro
+
+ * [ff188bd] stdnum/vatin.py, tests/test_vatin.doctest: Add module
+ to check any VAT number
+
+ This effectively mimics vatnumber's `check_vat` function, so people
+ can easily replace the outdated vatnumber library with stdnum.
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/199
+
+2020-08-08 Arthur de Jong
+
+ * [b6e43cd] update/gs1_ai.py: Fix Python 3.6 issue in update script
+
+ Fixes 180788a
+
+2020-08-08 Arthur de Jong
+
+ * [180788a] stdnum/gs1_128.py, stdnum/gs1_ai.dat,
+ tests/test_gs1_128.doctest, update/gs1_ai.py: Add GS1-128 format
+
+ This adds validation, parsing and encoding functions for
+ GS1-128. It is based on the lists of formats as published by
+ the GS1 organisation.
+
+ Based on the implementation provided by Sergi Almacellas Abellana
+ .
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/144
+
+2020-08-02 Arthur de Jong
+
+ * [c2284f3] stdnum/ro/onrc.py, tests/test_ro_onrc.doctest: Add
+ Romanian Trade Register identifier
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/229
+ Closes https://github.com/arthurdejong/python-stdnum/pull/234
+
+2020-06-02 Mohammed Salman
+
+ * [94e2c63] stdnum/gb/utr.py, tests/test_gb_utr.doctest: Add
+ English Unique Tax Reference
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/227
+
+2020-08-02 Arthur de Jong
+
+ * [505521e] stdnum/ro/cnp.py: Support foreign residents for
+ Romanian CNP
+
+ This supports 7 or 8 as first digits in the CNP which are
+ apparently used to identify foreign residents.
+
+ This also changes the exception for an incorrect first digit
+ from InvalidFormat to InvalidComponent which is a little clearer.
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/230
+
+2020-08-02 Arthur de Jong
+
+ * [51a122d] stdnum/kr/GPKIRootCA1.crt, stdnum/kr/brn.py: Remove
+ custom CA certificate for www.ftc.go.kr
+
+ This certificate is not needed any more because the site now
+ uses a different certificate that is signed by a known CA.
+
+2020-07-31 evaldez89
+
+ * [feca1fe] stdnum/do/rnc.py, tests/test_do_rnc.py: Scape new
+ line character
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/233
+ Closes https://github.com/arthurdejong/python-stdnum/issues/232
+
+2020-04-05 Leandro Regueiro
+
+ * [dab926c] stdnum/tw/__init__.py, stdnum/tw/ubn.py,
+ tests/test_tw_ubn.doctest: Add support for Taiwan TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/214
+ Closes https://github.com/arthurdejong/python-stdnum/issues/209
+
+2020-07-05 Arthur de Jong
+
+ * [291b831] tox.ini: Avoid newer isort for flake8 tests
+
+ Do not install the latest isort because it currently breaks
+ flake8-isort. This pinning should be removed as soon as
+ https://github.com/gforcada/flake8-isort/issues/88 is resolved.
+
+2020-03-08 Leandro Regueiro
+
+ * [7112874] stdnum/id/__init__.py, stdnum/id/npwp.py,
+ tests/test_id_npwp.doctest: Add support for Indonesian NPWP
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/106
+ Closes https://github.com/arthurdejong/python-stdnum/pull/198
+
+2020-04-18 Leandro Regueiro
+
+ * [a34a76d] stdnum/vn/__init__.py, stdnum/vn/mst.py,
+ tests/test_vn_mst.doctest: Add support for Vietnam TIN number
+
+ Closes https://github.com/arthurdejong/python-stdnum/issues/217
+ Closes https://github.com/arthurdejong/python-stdnum/pull/218
+
+2020-05-16 Arthur de Jong
+
+ * [1b7e985] stdnum/kr/GPKIRootCA1.crt, stdnum/kr/brn.py,
+ tests/test_kr_brn.py: Add an online check for the South Korean BRN
+
+2020-03-07 Leandro Regueiro
+
+ * [b3891f1] stdnum/kr/__init__.py, stdnum/kr/brn.py,
+ tests/test_kr_brn.doctest: Add support for South Korea Business
+ Registration Number
+
+ Closes https://github.com/arthurdejong/python-stdnum/pull/197
+ Closes https://github.com/arthurdejong/python-stdnum/issues/101
+
+2020-06-06 Christopher Ormaza