Commit Graph

10 Commits

Author SHA1 Message Date
Lukas Reining 9b97130908
feat: implement transaction context (#389)
* feat: implement transaction context

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

* fix: lint issues

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

* feat: add tests for context merging

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

* feat: fix pre-commit checks

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

* feat: use elipsis instead of pass

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

* Update openfeature/transaction_context/no_op_transaction_context_propagator.py

Co-authored-by: Anton Grübel <anton.gruebel@gmail.com>
Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

* feat: pr feedback

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>

---------

Signed-off-by: Lukas Reining <lukas.reining@codecentric.de>
Co-authored-by: Anton Grübel <anton.gruebel@gmail.com>
2024-11-24 17:54:42 +01:00
Federico Bond 3217575f4f
fix: event handler methods are not thread-safe (#329)
The _client_handlers dictionary allowed modifications during iteration
without proper concurrency control. I added some reentrant locks to manage
concurrent access to the _global_handlers and _client_handlers data
structures.

See #326

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-05-03 00:42:43 +10:00
Federico Bond 679409fad2
feat: implement provider events (#278)
* feat: implement provider events

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: add error_code field to EventDetails and ProviderEventDetails

Signed-off-by: Federico Bond <federicobond@gmail.com>

* fix: replace strings with postponed evaluation of annotations

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: run handlers immediately if provider already in associated state

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: remove unused _provider from openfeature.api

Signed-off-by: Federico Bond <federicobond@gmail.com>

* test: add some comments to test cases

Signed-off-by: Federico Bond <federicobond@gmail.com>

* test: add provider event late binding test cases

Signed-off-by: Federico Bond <federicobond@gmail.com>

* fix: fix status handlers running immediately if provider already in associated state

Signed-off-by: Federico Bond <federicobond@gmail.com>

* refactor: reuse provider property in OpenFeatureClient

Signed-off-by: Federico Bond <federicobond@gmail.com>

* refactor: move _provider_status_to_event to ProviderEvent.from_provider_status

Signed-off-by: Federico Bond <federicobond@gmail.com>

* refactor: move EventSupport class to an internal module

Signed-off-by: Federico Bond <federicobond@gmail.com>

* refactor: replace EventSupport class with module-level functions

Signed-off-by: Federico Bond <federicobond@gmail.com>

* style: fix code style

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-22 07:45:00 +11:00
Federico Bond e7475441bd
fix: run error hooks if provider returns FlagResolutionDetails with non-empty error_code (#291)
* fix: run error hooks if provider returns FlagResolutionDetails with non-empty error_code

Signed-off-by: Federico Bond <federicobond@gmail.com>

* refactor: extract error code to exception mapping to class variable

Signed-off-by: Federico Bond <federicobond@gmail.com>

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-14 08:31:46 +11:00
Federico Bond 789e6e0f5f
feat: implement provider status (#288)
* feat: implement provider status

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: set provider status to fatal if initialize raises PROVIDER_FATAL error

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: add a provider status accessor to clients

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: short circuit flag resolution when provider is not ready

Signed-off-by: Federico Bond <federicobond@gmail.com>

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-08 09:00:32 +11:00
Federico Bond ed6a42f264
feat!: add support for domains (#271)
* feat: add support for domains

Signed-off-by: Federico Bond <federicobond@gmail.com>

* docs: update README.md

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: add clear_providers function to api

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: make _get_provider function private

Signed-off-by: Federico Bond <federicobond@gmail.com>

* fix: shutdown all providers on api.shutdown

Signed-off-by: Federico Bond <federicobond@gmail.com>

* refactor: move provider dict to a ProviderRegistry class

Signed-off-by: Federico Bond <federicobond@gmail.com>

* feat: reset default provider on clear_providers and add tests

Signed-off-by: Federico Bond <federicobond@gmail.com>

* docs: update README.md

Signed-off-by: Federico Bond <federicobond@gmail.com>

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-02-20 19:31:22 -03:00
Michael Beemer 0c314ab77c
fix!: raise error if the flag wasn't found using the in-memory provider (#228)
Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>
2023-11-01 14:56:48 -04:00
Federico Bond 88a204dc27
feat: pass flag_metadata from resolution to evaluation details (#212)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2023-10-18 10:36:30 -04:00
Federico Bond 51f0d260f0
refactor!: rename top-level package to openfeature (#192)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2023-09-20 13:22:31 -03:00
Federico Bond 793ced1917
refactor!: simplify namespaces to make public API more pythonic (#172)
* refactor!: simplify namespaces to make public API more pythonic

Signed-off-by: Federico Bond <federicobond@gmail.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2023-09-08 10:31:25 -04:00