Skip to content

feat: support and validate CPython 3.14 - #17

Open
lopezm1 wants to merge 1 commit into
featbit:masterfrom
lopezm1:codex/python-3.14-compatibility
Open

feat: support and validate CPython 3.14#17
lopezm1 wants to merge 1 commit into
featbit:masterfrom
lopezm1:codex/python-3.14-compatibility

Conversation

@lopezm1

@lopezm1 lopezm1 commented Aug 26, 2026

Copy link
Copy Markdown

Summary

  • extend the SDK's tested and declared CPython support through 3.14
  • raise only the urllib3 minimum from 1.22.0 to 1.26.5, the first tested 1.26.x release that imports successfully on CPython 3.14
  • add blocking 3.13/3.14 CI, an exact-minimum-dependency 3.14 job, lifecycle auditing, and clean built-wheel validation
  • update the README and release metadata for 1.1.9

Closes #16.

Confirmed blockers and fixes

Symptom Root cause Fix
Installation rejected on Python 3.13/3.14 python_requires was >=3.6,<3.13 Extend it to >=3.6,<3.15 and add tested 3.13/3.14 classifiers
Old allowed urllib3 releases fail during import on CPython 3.14 urllib3 1.22.0 through 1.26.4 use a compatibility import path that is not viable on 3.14 Raise the minimum to urllib3>=1.26.5; leave every other runtime dependency constraint unchanged

No runtime SDK implementation was changed.

Validation

Local validation completed with clean environments:

Runtime / artifact Result
CPython 3.12.11 full suite 83 passed
CPython 3.13.13 full suite 83 passed
CPython 3.14.6 full suite 83 passed
CPython 3.14.6 with exact declared minimum runtime dependencies 83 passed; pip check passed
80,000-evaluation concurrent resource audit passed; no evaluation errors or leaked SDK threads
python -m build and python -m twine check dist/* passed
Fresh CPython 3.14 wheel installation passed; pip check passed
Installed-wheel public API smoke enabled, disabled, unknown/default, repeated evaluation, listener removal, and idempotent shutdown passed

The CI matrix preserves Python 3.6–3.12 and adds blocking 3.13/3.14 jobs. Python 3.6 runs in an Ubuntu 20.04 container and Python 3.7 uses Ubuntu 22.04 because official interpreter artifacts for those versions are not available on Ubuntu 24.04. Python 3.14 also builds and installs the wheel in a fresh environment rather than testing only an editable checkout.

Behavior

This does not change flag evaluation, targeting, user/context handling, caller defaults, network synchronization, event delivery, thread lifecycle, shutdown behavior, or the public API.

This repository is the FeatBit SDK rather than an OpenFeature provider, so end-to-end OpenFeature-provider validation remains a downstream provider responsibility.

Release note

This changes release/package.json to 1.1.9. The existing workflow creates a public GitHub release and publishes to public PyPI after a merge to master; please confirm that release timing before merge. This PR does not alter the publish destination or credentials.

Remaining risk

  • GitHub-hosted CI is currently awaiting maintainer approval for this forked workflow (Actions run); this draft should not be marked ready until the blocking matrix passes.
  • A live FeatBit service connection was not exercised because no environment credentials were used; offline initialization, evaluation, listener, concurrency, and shutdown paths were exercised.
  • Free-threaded CPython 3.14t is neither tested nor claimed.

@dsun0720, would you please review the compatibility scope and public 1.1.9 release timing when convenient?

Greptile Summary

This PR extends declared and tested CPython compatibility through 3.14 and raises the minimum urllib3 version needed for that runtime.

  • Adds blocking Python 3.13/3.14, minimum-dependency, lifecycle-audit, and installed-wheel CI coverage.
  • Strengthens release validation with metadata checks and an installed-wheel smoke test.
  • Updates package metadata, documentation, dependency constraints, and release version to 1.1.9.

Confidence Score: 5/5

The PR appears safe to merge once its blocking CI matrix passes.

The compatibility metadata, dependency minimum, CI coverage, wheel validation, documentation, and release metadata are internally aligned, with no concrete changed-code defect remaining.

Important Files Changed

Filename Overview
.github/workflows/code-quality.yaml Expands the compatibility matrix through Python 3.14 and adds minimum-dependency, lifecycle, build, and wheel-smoke validation.
.github/workflows/release.yaml Moves the release build to Python 3.14 and adds metadata and installed-wheel checks before creating and publishing the release.
scripts/wheel_smoke.py Adds an offline public-API smoke test that verifies installed-package provenance, metadata, evaluation behavior, listener removal, and shutdown.
setup.py Extends package metadata and interpreter eligibility through CPython 3.14.
requirements.txt Raises the urllib3 runtime minimum from 1.22.0 to 1.26.5 for CPython 3.14 import compatibility.
dev-requirements.txt Keeps development dependency constraints aligned with the updated urllib3 runtime minimum.
README.md Documents support for Python 3.6–3.14 and explicitly excludes free-threaded 3.14 builds.
release/package.json Advances the package and release version to 1.1.9.
release/description.md Adds the Python 3.13/3.14 support and urllib3 compatibility changes to the 1.1.9 release notes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  PR[Pull request] --> Matrix[Python 3.6–3.14 test matrix]
  Matrix --> Audit[Resource lifecycle audit]
  Matrix --> Build[Build wheel and source distribution]
  Build --> Smoke[Install and smoke-test wheel]
  Merge[Merge to master or main] --> ReleaseBuild[Build distributions]
  ReleaseBuild --> Metadata[Twine metadata check]
  Metadata --> ReleaseSmoke[Fresh-environment wheel smoke test]
  ReleaseSmoke --> GitHub[Create GitHub release]
  GitHub --> PyPI[Publish distributions to PyPI]
Loading

Reviews (1): Last reviewed commit: "feat: support CPython 3.14" | Re-trigger Greptile

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: fd6175ec-9b2c-4c12-9230-f6c7f67a53b8


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@lopezm1
lopezm1 marked this pull request as ready for review August 26, 2026 19:38
@lopezm1

lopezm1 commented Aug 26, 2026

Copy link
Copy Markdown
Author

Bonjour @dsun0720 — pourriez-vous, s’il vous plaît, m’aider en faisant une review de cette PR ? N’hésitez pas à me dire s’il y a quoi que ce soit que je puisse modifier ou corriger.

Je serai absent les 27 et 28 août, mais je serai de retour la semaine prochaine pour effectuer les ajustements nécessaires.

Merci beaucoup !


hello @dsun0720 -- could you kindly help me with a review of this PR? Please let me know if there is anything I can update or fix.

I will be away August 27-28 but will be back next week for any adjustments.

Thank you.

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.

Support and validate CPython 3.14

1 participant