What's Changed
- feat(analyzer): add German PII recognizers (DE_*) by @MvdB in #1909
- build(deps): bump azure/login from 2.3.0 to 3.0.0 by @dependabot[bot] in #1915
- build(deps): bump github/codeql-action from 4.32.6 to 4.34.1 by @dependabot[bot] in #1914
- build(deps): bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #1913
- Fix: config path resolution for PyPI installs (langextract recognizer) by @RonShakutai in #1917
- build(deps): bump github/codeql-action from 4.34.1 to 4.35.1 by @dependabot[bot] in #1920
- fix(ci): skip coverage PR comment step when not in a PR context by @SharonHart with @Copilot in #1921
- Swedish personal ID code pattern recognizer by @goveebee in #1912
- Publish sdist alongside wheels to PyPI by @SharonHart with @Copilot in #1924
- build(deps): bump python from 3.13-windowsservercore to 3.15.0a7-windowsservercore in /presidio-anonymizer by @dependabot[bot] in #1927
- Swedish Recognizer for Organisationsnummer by @goveebee in #1918
- Fix conf files handling in Docker + Stanza model accessibility issues by @TheSabari07 in #1930
- fix: revert presidio-analyzer Dockerfiles to Python 3.12 and configure dependabot to allow only patch and digest updates by @dependabot[bot] in #1928
- build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 by @dependabot[bot] in #1935
- build(deps): bump python from
f50f56ftof1927c7in /presidio-image-redactor by @dependabot[bot] in #1936 - Add Canadian SIN recognizer by @kennionblack in #1934
- build(deps): bump python from
fb83750to5e59aaein /presidio-anonymizer by @dependabot[bot] in #1937 - build(deps): bump python from
f3fa41dto5072b08in /presidio-analyzer by @dependabot[bot] in #1938 - Update IP recognizer regexes by @kennionblack in #1941
- Slim NLP Engine by @SharonHart in #1916
- chore: harden supply-chain security — dependabot.yml controls and pyproject.toml defensive version ranges by @SharonHart with @Copilot in #1965
- build(deps): bump python from
5072b08to804ddf3in /presidio-analyzer by @dependabot[bot] in #1968 - build(deps): bump python from 3.13-slim to 3.13.13-slim in /presidio-image-redactor by @dependabot[bot] in #1967
- build(deps): bump python from
5e59aaetobc389f7in /presidio-anonymizer by @dependabot[bot] in #1966 - Updated copilot instructions by @omri374 in #1866
- feat: Add UK driving licence number recognizer by @tee-jagz in #1857
- feat: add merge_entities_with_whitespace param to anonymize() by @harishkernel in #1932
- build(deps-dev): update azure-identity requirement from <2.0.0,>=1.23.0 to >=1.25.3,<2.0.0 in /presidio-anonymizer by @dependabot[bot] in #1983
- build(deps-dev): update stanza requirement from <2.0.0,>=1.10.1 to >=1.11.1,<2.0.0 in /presidio-analyzer by @dependabot[bot] in #1982
- build(deps-dev): update gliner requirement from <1.0.0,>=0.2.13 to >=0.2.26,<1.0.0 in /presidio-analyzer by @dependabot[bot] in #1981
- build(deps): update opencv-python requirement from <5.0.0,>=4.0.0 to >=4.13.0.92,<5.0.0 in /presidio-image-redactor by @dependabot[bot] in #1980
- build(deps-dev): update spacy-huggingface-pipelines requirement from <1.0.0,>=0.0.1 to >=0.0.4,<1.0.0 in /presidio-analyzer by @dependabot[bot] in #1979
- build(deps-dev): update gunicorn requirement from <26.0.0,>=20.0.0 to >=25.3.0,<26.0.0 in /presidio-image-redactor by @dependabot[bot] in #1978
- build(deps): update pytesseract requirement from <0.4,>=0.3.7 to >=0.3.13,<0.4 in /presidio-image-redactor by @dependabot[bot] in #1977
- build(deps): bump actions/cache from 5.0.4 to 5.0.5 by @dependabot[bot] in #1976
- build(deps): bump github/codeql-action from 4.35.1 to 4.35.2 by @dependabot[bot] in #1975
- Add dependency groups for Docker and actions by @SharonHart in #1984
- build(deps): update pydantic requirement from <3.0.0,>=2.0.0 to >=2.12.5,<3.0.0 in /presidio-analyzer by @dependabot[bot] in #1989
- build(deps): update pyyaml requirement from <7.0.0,>=6.0.0 to >=6.0.3,<7.0.0 in /presidio-analyzer by @dependabot[bot] in #1988
- build(deps-dev): update azure-ai-textanalytics requirement from <6.0.0,>=5.3.0 to >=5.4.0,<6.0.0 in /presidio-analyzer by @dependabot[bot] in #1987
- build(deps): update azure-ai-formrecognizer requirement from <4.0.0,>=3.3.0 to >=3.3.3,<4.0.0 in /presidio-image-redactor by @dependabot[bot] in #1986
- build(deps): bump actions/github-script from 8.0.0 to 9.0.0 in the actions-deps group by @dependabot[bot] in #1985
- test(ip-recognizer): add ::1 loopback and mixed :: / ::1 test cases by @extrasmall0 in #1940
- Fix dependabot coverage for all pyproject.toml package manifests by @SharonHart with @Copilot in #1929
- build(deps): bump py-cov-action/python-coverage-comment-action from 3.40 to 3.41 in the actions-deps group by @dependabot[bot] in #1991
- build(deps): update phonenumbers requirement from <10.0.0,>=8.12 to >=9.0.28,<10.0.0 in /presidio-analyzer by @dependabot[bot] in #1994
- build(deps): update tldextract requirement from <6.0.0,>=3.0.0 to >=5.3.1,<6.0.0 in /presidio-analyzer by @dependabot[bot] in #1992
- build(deps-dev): update azure-core requirement from <2.0.0,>=1.20.0 to >=1.39.0,<2.0.0 in /presidio-analyzer by @dependabot[bot] in #1993
- build(deps): bump python-dotenv from 1.0.0 to 1.2.2 in /docs/samples/deployments/openai-anonymaztion-and-deanonymaztion-best-practices/src/client_app in the pip group across 1 directory by @dependabot[bot] in #1996
- feat: add Turkish National ID (TR_NATIONAL_ID) recognizer by @mrcuren in #1995
- refactor(de-recognizers): complete Prüfziffer validation per primary sources (fixes #1972, supersedes #1974) by @MvdB in #1990
- build(deps-dev): update azure-identity requirement from <2.0.0,>=1.23.0 to >=1.25.3,<2.0.0 in /presidio-analyzer by @dependabot[bot] in #2001
- Consolidate Dependabot updates into a single PR via multi-ecosystem grouping by @SharonHart with @Copilot in #2005
- feat: add Turkish license plate (TR_LICENSE_PLATE) recognizer by @mrcuren in #1999
- Fix incorrect PESEL checksum validation in PlPeselRecognizer by @sienioApius in #1998
- Fix PhoneRecognizer default regions typo: "FE" → "FR" by @omri374 with @Copilot in #2009
- Fix anonymization typos in OpenAI deployment sample by @ynachiket in #2017
- Feature/es passport recognizer by @asensionacher in #2011
- Phonenumber configurable entity by @max-tarlov-infinitusai in #2014
- fix: Preserve GLiNER config fields through Pydantic validation by @yuriihavrylko in #2007
- feat(analyzer): add optional country filter to load_predefined_recogn… by @ynachiket in #2000
- docs: clarify Fabric sample dependency versions by @ynachiket in #2027
- fix: Custom operator validate() must not invoke the lambda by @HammadSiddiqui in #2025
- feat: add Turkish phone number (TR_PHONE_NUMBER) recognizer by @mrcuren in #2006
- docs: remove duplicate zip code pattern in recognizer registry example by @BelizSertcan in #2034
- feat: add Philippine mobile number (PH_MOBILE_NUMBER) recognizer by @Surya-5555 in #2038
- Add explicit click dependencies for Presidio packages by @SharonHart with @Copilot in #2058
- fix(image-redactor): return rendered image when no text is detected in verify by @AlexanderSanin in #2040
- test(ip-recognizer): add regression tests for IPv6 double-colon bugs (#1476) by @AlexanderSanin in #2062
- fix(analyzer): cap url recognizer host to stop quadratic backtracking by @uwezkhan in #2063
- fix(analyzer): ignore empty allow_list terms in regex match by @uwezkhan in #2061
- feat(analyzer): add South African ID number recognizer (ZA_ID_NUMBER) by @thatomokoena in #2064
- feat: add Philippines TIN (PH_TIN) recognizer by @aaronaco in #2016
- Support Azure credentials for DocumentIntelligenceOCR by @mturac in #2085
- fix(image-redactor): fix duplicate entity sorting discard in DICOM verification engine by @ArjunPakhan in #2084
- fix(image-redactor): remove double bbox formatting in eval_dicom_instance by @AlexanderSanin in #2079
- fix: pin numpy<2.5.0 to resolve Python 3.12 CI failure by @SharonHart with @Copilot in #2090
- Fix SG UEN detection missing Format C UENs with the 'R' prefix by @jichaowang02-lang in #2088
- Fix numpy IndentationError in Test Analyzer (Python 3.12) CI job by @SharonHart with @Copilot in #2091
- Fix AU ACN checksum rejecting valid ACNs whose check digit is 0 by @jichaowang02-lang in #2087
- fix(analyzer): preserve recognizer-specific config dumps by @ultramancode in #2081
- docs(image-redactor): fix undefined di_ocr variable in Document Intelligence example by @Dashtid in #2089
- Fix analyzer CI numpy resolver flake by @SharonHart in #2092
- fix(iban): add EG/IQ/LY/LC/SC/UA registry formats so valid IBANs are detected by @AUTHENSOR in #2078
- fix(email): match punycode/IDN domains so internationalized emails are detected by @AUTHENSOR in #2077
- Migration notification message by @omri374 in #2097
- Add project transition update link to README by @omri374 in #2098
- docs: rebrand site to Data Privacy Stack by @SharonHart in #2100
- Add Python 3.14 support for presidio-analyzer by @michaelgiraldo in #2105
- Docs/dps migration phase1 by @omri374 in #2104
- dps migration phase2 - code by @omri374 in #2117
- docs: Material for MkDocs migration to Zensical by @SharonHart in #2102
- Migrate to ghcr packages by @SharonHart in #2103
- revert: undo accidental direct-to-main docs pushes (fix duplicate copyright) by @omri374 in #2118
- docs: add Google Search Console site-verification meta tag by @omri374 in #2119
- docs: publish docs with git CLI by @SharonHart in #2120
- Final removal of Microsoft reference by @omri374 in #2121
- Revert to Microsoft as copyright owner by @omri374 in #2122
- fix(ci): restore id-token:write for provenance attestations in build-platform-images by @SharonHart with @Copilot in #2123
- Prefer repository GITHUB_TOKEN for GHCR publishing in CI by @SharonHart with @Copilot in #2124
- Fix URL test bounds for DPS domain by @SharonHart in #2125
- Release 2.2.363 / 0.0.59 by @SharonHart in #2126
New Contributors
- @MvdB made their first contribution in #1909
- @goveebee made their first contribution in #1912
- @TheSabari07 made their first contribution in #1930
- @kennionblack made their first contribution in #1934
- @harishkernel made their first contribution in #1932
- @extrasmall0 made their first contribution in #1940
- @mrcuren made their first contribution in #1995
- @sienioApius made their first contribution in #1998
- @ynachiket made their first contribution in #2017
- @asensionacher made their first contribution in #2011
- @max-tarlov-infinitusai made their first contribution in #2014
- @yuriihavrylko made their first contribution in #2007
- @HammadSiddiqui made their first contribution in #2025
- @BelizSertcan made their first contribution in #2034
- @Surya-5555 made their first contribution in #2038
- @AlexanderSanin made their first contribution in #2040
- @uwezkhan made their first contribution in #2063
- @thatomokoena made their first contribution in #2064
- @aaronaco made their first contribution in #2016
- @mturac made their first contribution in #2085
- @ArjunPakhan made their first contribution in #2084
- @jichaowang02-lang made their first contribution in #2088
- @Dashtid made their first contribution in #2089
- @AUTHENSOR made their first contribution in #2078
- @michaelgiraldo made their first contribution in #2105
Full Changelog: 2.2.362...2.2.363