Skip to content

chore(main): release 0.9.0#555

Merged
beeme1mr merged 1 commit into
mainfrom
release-please--branches--main
Apr 21, 2026
Merged

chore(main): release 0.9.0#555
beeme1mr merged 1 commit into
mainfrom
release-please--branches--main

Conversation

@openfeaturebot
Copy link
Copy Markdown
Contributor

@openfeaturebot openfeaturebot commented Jan 5, 2026

🤖 I have created a release beep boop

0.9.0 (2026-04-17)

⚠ BREAKING CHANGES

  • remove deprecated openfeature.provider.provider module (#558)
  • Drop python 3.9 support (#554)

🐛 Bug Fixes

  • correctly reset api state on shutdown (#589) (eaa195b)
  • Prevent providers from being initialized multiple times (45f7fd1)
  • Prevent providers from being shutdown multiple times (45f7fd1)
  • replace project.scripts with poethepoet (#563) (05382aa)
  • validate domain is present when calling set_provider on registry (#561) (9fc6121)

✨ New Features

🧹 Chore

  • add pyproject-fmt hook (#578) (fafd902)
  • deps: pin pypa/gh-action-pypi-publish action to ed0c539 (#582) (c7ada5a)
  • deps: update actions/checkout digest to de0fac2 (#572) (e9dfeac)
  • deps: update astral-sh/setup-uv digest to 37802ad (#581) (ddb8fd1)
  • deps: update astral-sh/setup-uv digest to e06108d (#573) (c35a1e5)
  • deps: update dependency uv_build to ~=0.10.0 (#571) (a6366e2)
  • deps: update github/codeql-action digest to 0d579ff (#574) (0696033)
  • deps: update github/codeql-action digest to c10b806 (#583) (9478ea0)
  • deps: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.6 (#575) (d0d7d8f)
  • deps: update pre-commit hook pre-commit/mirrors-mypy to v1.19.1 (#576) (ade3870)
  • deps: update pre-commit hook pre-commit/mirrors-mypy to v1.20.0 (#588) (398d140)
  • Drop python 3.9 support (#554) (04106f5)
  • replace pre-commit with prek (#580) (d1e0cde)
  • update pytest to v9 (#559) (71ebb9f)
  • update uv to 0.11 and relax version requirement (#587) (7d9229f)

📚 Documentation

  • fix inaccuracies in README code examples (#592) (17d62c4)

🔄 Refactoring

  • Delete provider status instead of marking as NOT_READY (45f7fd1)
  • remove deprecated openfeature.provider.provider module (#558) (7c27c7a)

This PR was generated with Release Please. See documentation.

@openfeaturebot openfeaturebot requested a review from a team as a code owner January 5, 2026 20:20
@openfeaturebot openfeaturebot requested a review from a team as a code owner January 5, 2026 20:20
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @openfeaturebot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request is an automated release for version 0.9.0 of the OpenFeature Python SDK. Its primary purpose is to update all relevant project metadata and documentation to reflect the new version number and to formally announce the discontinuation of support for Python 3.9, ensuring the project aligns with current Python ecosystem standards.

Highlights

  • Version Release: This pull request officially releases version 0.9.0 of the OpenFeature Python SDK.
  • Breaking Change: Support for Python 3.9 has been discontinued, which is a breaking change for users relying on that version.
  • Automated Updates: Various project files, including the changelog, README, and version declarations, have been automatically updated to reflect the new 0.9.0 version.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.35%. Comparing base (eaa195b) to head (62569f0).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #555   +/-   ##
=======================================
  Coverage   98.35%   98.35%           
=======================================
  Files          45       45           
  Lines        2183     2183           
=======================================
  Hits         2147     2147           
  Misses         36       36           
Flag Coverage Δ
unittests 98.35% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request is an automated release for version 0.9.0, which primarily includes dropping support for Python 3.9. The changes are mostly version bumps in various files. I've suggested a small cleanup in the CHANGELOG.md to improve its readability. Additionally, while not part of this PR's changes, I noticed that tool.ruff.target-version in pyproject.toml is still set to py39, which is inconsistent with dropping Python 3.9 support. This should probably be updated to py310 in a follow-up PR.

Comment thread CHANGELOG.md
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 2 times, most recently from 55c0dfc to 4d10da6 Compare January 10, 2026 22:11
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 2 times, most recently from 03aefa6 to 38cd587 Compare January 20, 2026 18:26
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 2 times, most recently from e62ad71 to 88a06e4 Compare January 30, 2026 14:13
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 8 times, most recently from 0d1f4cf to 5fca2af Compare March 16, 2026 07:38
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 2 times, most recently from 6245200 to 37df5c5 Compare March 23, 2026 16:35
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 3 times, most recently from d1be2e7 to 05584f6 Compare April 2, 2026 07:20
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch 2 times, most recently from ee16f75 to bfeb7b3 Compare April 13, 2026 14:49
@Zaimwa9
Copy link
Copy Markdown

Zaimwa9 commented Apr 14, 2026

@open-feature/sdk-python-maintainers, is there an ETA on this release? We have pre-emptively implemented the tracking API in the flagsmith provider that is included in this release

@gruebel
Copy link
Copy Markdown
Member

gruebel commented Apr 14, 2026

I would like to get in my PR #589 and then I would be fine with cutting a release.

@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch from bfeb7b3 to ee36251 Compare April 17, 2026 19:51
Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>
@openfeaturebot openfeaturebot force-pushed the release-please--branches--main branch from ee36251 to 62569f0 Compare April 17, 2026 21:55
@beeme1mr beeme1mr merged commit 5ff1cf0 into main Apr 21, 2026
16 checks passed
@openfeaturebot
Copy link
Copy Markdown
Contributor Author

gruebel pushed a commit to balgaly/python-sdk that referenced this pull request Jun 6, 2026
Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>
gruebel added a commit that referenced this pull request Jun 7, 2026
* test(e2e): add Behave step definitions for context merging

Add the missing E2E step definitions so the contextMerging.feature
scenarios from the OpenFeature spec run against python-sdk.

Fixes #500

Changes:
- Bump spec submodule to 130df3eb so contextMerging.feature is copied in
  during the `poe e2e` task.
- Add tests/features/environment.py with a before_scenario hook that
  resets provider/hook/API-context/transaction-context state, so
  scenarios cannot leak state between features.
- Add tests/features/steps/context_merging_steps.py:
  - RetrievableContextProvider captures the merged EvaluationContext
    it receives, so assertions can inspect what the SDK merged.
  - Step definitions for all scenarios in contextMerging.feature:
    single-level insert, multi-level insert, and per-key overwrite
    precedence across API / Transaction / Client / Invocation /
    Before Hooks.
  - Client-level context is set via direct attribute assignment on
    OpenFeatureClient.context (no new setter), since merging already
    honors client.context (openfeature/client.py:422-429).

Runs clean: 4 features / 50 scenarios / 233 steps.

Signed-off-by: gruebel <anton.gruebel@gmail.com>

* docs: fix inaccuracies in README code examples (#592)

Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* fix: correctly reset api state on shutdown (#589)

correctly reset api state on shutdown

Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(main): release 0.9.0 (#555)

Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update pre-commit hook tox-dev/pyproject-fmt to v2.21.2 (#601)

* chore(deps): update pre-commit hook tox-dev/pyproject-fmt to v2.21.2

* upper bound toml-fmt-common till fixed

Signed-off-by: gruebel <anton.gruebel@gmail.com>

---------

Signed-off-by: gruebel <anton.gruebel@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: gruebel <anton.gruebel@gmail.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update astral-sh/setup-uv action to v8 (#603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update codecov/codecov-action action to v6 (#604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update googleapis/release-please-action action to v5 (#605)

* chore(deps): update googleapis/release-please-action action to v5

* fix config

Signed-off-by: gruebel <anton.gruebel@gmail.com>

---------

Signed-off-by: gruebel <anton.gruebel@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: gruebel <anton.gruebel@gmail.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v2 (#606)

* chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v2

* update config

Signed-off-by: gruebel <anton.gruebel@gmail.com>

---------

Signed-off-by: gruebel <anton.gruebel@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: gruebel <anton.gruebel@gmail.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update dependency prek to >=0.4.3,<0.5.0 (#607)

* chore(deps): update dependency prek to >=0.4.3,<0.5.0

* adjust CI

Signed-off-by: gruebel <anton.gruebel@gmail.com>

---------

Signed-off-by: gruebel <anton.gruebel@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: gruebel <anton.gruebel@gmail.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* feat!: make set_provider non-blocking, add set_provider_and_wait (#595)

* feat!: make set_provider non-blocking, add set_provider_and_wait

Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>

* fix: ruff format signature collapse in api.py

Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>

* fix: use threading.Event in error event test to avoid flaky busy-wait

Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>

* fixup: pr feedback and additional checks

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fix: check active registration in stale-init guard, not _provider_status

Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>

* fixup: edge shutdown race

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* fix: isolate provider event handler dispatch (#599)

* Isolate provider event handlers

Signed-off-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>

* Address event handler review feedback

Signed-off-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>

* test: cover event dispatch noop path

Signed-off-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>

* fixup: drain executor at exit and relax non-blocking test timing margin

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* test: fix flaky event handler test (#609)

fix flaky event handler test

Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.15 (#608)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* chore(main): release 0.10.0 (#602)

* chore(main): release 0.10.0

Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>

* docs: clarify non-blocking set_provider behavior in changelog

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>

* fix CR comments

Signed-off-by: gruebel <anton.gruebel@gmail.com>

* cleanup

Signed-off-by: gruebel <anton.gruebel@gmail.com>

---------

Signed-off-by: gruebel <anton.gruebel@gmail.com>
Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>
Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Signed-off-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>
Co-authored-by: Jonathan Norris <jonathan.norris@dynatrace.com>
Co-authored-by: Anton Grübel <anton.gruebel@gmail.com>
Co-authored-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Nguyen Cat Luong <pkiphone.anhluong@gmail.com>
Co-authored-by: Lucas-FManager <265058144+Lucas-FManager@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants