Skip to content

feat: add Python 3.14 compatibility to all remaining Presidio packages#2147

Open
SharonHart with Copilot wants to merge 4 commits into
mainfrom
copilot/add-python-3-14-compatibility
Open

feat: add Python 3.14 compatibility to all remaining Presidio packages#2147
SharonHart with Copilot wants to merge 4 commits into
mainfrom
copilot/add-python-3-14-compatibility

Conversation

Copilot AI commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

presidio-analyzer already declared Python 3.14 support; the remaining packages still capped at <3.14 (or used an overly broad <4.0), blocking 3.14 users from installing them.

Changes

pyproject.toml updates — for presidio-anonymizer, presidio-image-redactor, presidio-cli, presidio-structured, and presidio:

  • requires-python set to >=3.10,<3.15 (consistent with the analyzer)
  • Added Programming Language :: Python :: 3.14 PyPI classifier

presidio-image-redactor spacy marker — split the Python ≥3.13 spacy constraint to exclude spacy==3.8.14 on Python 3.14 (no 3.14 wheel exists for that release), matching the analyzer pattern:

"spacy (>=3.8.7,<4.0.0) ; python_version >= '3.13' and python_version < '3.14'",
"spacy (>=3.8.7,!=3.8.14,<4.0.0) ; python_version >= '3.14'"

CI — extended the Python 3.14 include matrix entries from Analyzer-only to all five components (Anonymizer, Image Redactor, CLI, Structured).

Docs — added Python 3.14 to the supported versions list in docs/installation.md.

Copilot AI linked an issue Jul 7, 2026 that may be closed by this pull request
- Update requires-python to <3.15 in anonymizer, image-redactor, cli,
  structured, and umbrella packages
- Add Python 3.14 PyPI classifier to all affected packages
- Split spacy dependency markers in image-redactor to exclude 3.8.14
  on Python 3.14 (no compatible wheel), matching analyzer pattern
- Extend CI matrix to test all components on Python 3.14
- Document Python 3.14 as a supported version in installation docs
- Add CHANGELOG entry under [unreleased]

Closes #2096
Copilot AI changed the title [WIP] Add Python 3.14 compatibility for pypi releases feat: add Python 3.14 compatibility to all remaining Presidio packages Jul 7, 2026
Copilot AI requested a review from SharonHart July 7, 2026 12:46
Comment thread .github/workflows/ci.yml Outdated
All packages now support 3.14, so add it directly to the matrix array
instead of duplicating each component in `include` entries.
Copilot AI requested a review from SharonHart July 7, 2026 12:49
@SharonHart SharonHart marked this pull request as ready for review July 7, 2026 12:57
Copilot AI review requested due to automatic review settings July 7, 2026 12:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes Python 3.14 compatibility across the remaining Presidio packages (beyond presidio-analyzer) by aligning requires-python bounds and classifiers, updating the image-redactor’s spaCy markers for 3.14 wheel availability, expanding CI coverage to test all components on 3.14, and documenting 3.14 as a supported version.

Changes:

  • Updated requires-python to >=3.10,<3.15 and added the Programming Language :: Python :: 3.14 classifier across the remaining packages.
  • Split presidio-image-redactor’s spaCy dependency marker to exclude spacy==3.8.14 specifically on Python 3.14 (matching the analyzer’s approach).
  • Expanded CI’s Python matrix to include 3.14 for all tested components, and updated installation docs + changelog accordingly.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
presidio/pyproject.toml Aligns meta-package Python support and classifiers to include 3.14.
presidio-structured/pyproject.toml Narrows requires-python to <3.15 and adds 3.14 classifier for installability on 3.14.
presidio-image-redactor/pyproject.toml Adds 3.14 classifier / <3.15 bound and adjusts spaCy markers to avoid 3.8.14 on 3.14.
presidio-cli/pyproject.toml Aligns Python version bounds and classifiers to include 3.14.
presidio-anonymizer/pyproject.toml Aligns Python version bounds and classifiers to include 3.14.
docs/installation.md Documents Python 3.14 as a supported version.
CHANGELOG.md Records the Python 3.14 support change and the spaCy exclusion detail.
.github/workflows/ci.yml Extends the CI Python matrix to include 3.14 across all components in the test job.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Coverage report (presidio-cli)

Click to see where and how coverage changed

FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  presidio-cli/presidio_cli
  cli.py
Project Total  

This report was generated by python-coverage-comment-action

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Coverage report (presidio-anonymizer)

Click to see where and how coverage changed

FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  presidio-anonymizer/presidio_anonymizer
  anonymizer_engine.py
  presidio-anonymizer/presidio_anonymizer/operators
  custom.py
Project Total  

This report was generated by python-coverage-comment-action

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Coverage report (presidio-structured)

This PR does not seem to contain any modification to coverable code.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Coverage report (presidio-image-redactor)

Click to see where and how coverage changed

FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  presidio-image-redactor/presidio_image_redactor
  dicom_image_pii_verify_engine.py
  document_intelligence_ocr.py
  image_analyzer_engine.py
Project Total  

This report was generated by python-coverage-comment-action

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Coverage report (presidio-analyzer)

Click to see where and how coverage changed

FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  presidio-analyzer/presidio_analyzer
  analyzer_engine.py
  entity_recognizer.py
  presidio-analyzer/presidio_analyzer/input_validation
  schemas.py
  yaml_recognizer_models.py
  presidio-analyzer/presidio_analyzer/nlp_engine
  __init__.py
  nlp_engine_provider.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers
  __init__.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/country_specific
  __init__.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/country_specific/australia
  au_abn_recognizer.py
  au_acn_recognizer.py
  au_medicare_recognizer.py
  au_tfn_recognizer.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/country_specific/finland
  fi_personal_identity_code_recognizer.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/country_specific/germany
  de_bsnr_recognizer.py
  de_id_card_recognizer.py
  de_lanr_recognizer.py
  de_passport_recognizer.py
  de_social_security_recognizer.py
  de_tax_id_recognizer.py
  de_vat_id_recognizer.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/country_specific/india
  in_vehicle_registration_recognizer.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/country_specific/poland
  pl_pesel_recognizer.py
  presidio-analyzer/presidio_analyzer/predefined_recognizers/generic
  phone_recognizer.py
  presidio-analyzer/presidio_analyzer/recognizer_registry
  recognizer_registry.py
  recognizers_loader_utils.py
Project Total  

The report is truncated to 25 files out of 69. To see the full report, please visit the workflow summary page.

This report was generated by python-coverage-comment-action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Python 3.14 compatibility

3 participants