Commit Graph

372 Commits

Author SHA1 Message Date
renovate[bot] cf61e5b682
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.6 (#337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-29 01:00:56 +00:00
renovate[bot] 2f93524063
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.5 (#336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-23 07:22:34 +02:00
renovate[bot] fa677092f8
chore(deps): update codecov/codecov-action action to v4.4.1 (#335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-20 22:51:58 +02:00
renovate[bot] 6acbef94e6
chore(deps): update codecov/codecov-action action to v4.4.0 (#334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 00:13:57 +00:00
renovate[bot] bd0bc1e2b7
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.4 (#333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-09 21:58:13 +02:00
renovate[bot] f8544ffaf6
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.3 (#330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-04 10:47:16 +10: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 c3ad697a80
refactor: bind providers explicitly to a registry with attach/detach (#324)
* test: make sure provider is registered in events test

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

* refactor: bind providers explicitly to a registry with attach/detach

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

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-05-02 09:13:30 +10:00
renovate[bot] f352045055
chore(deps): update codecov/codecov-action action to v4.3.1 (#327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-01 11:43:21 -04:00
github-actions[bot] 3b967a9a3e
chore(main): release 0.7.0 (#308)
chore(main): release 0.7.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-30 11:08:50 +10:00
renovate[bot] f109df671c
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.2 (#323)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-25 23:17:11 +02:00
renovate[bot] 6dedd275cf
chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v1.10.0 (#322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-25 20:27:33 +10:00
renovate[bot] 44f12239ff
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.1 (#321)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-19 21:27:05 +02:00
renovate[bot] abb14f5ed9
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.4.0 (#320)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-19 00:15:20 +00:00
renovate[bot] 563662054c
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.3.7 (#318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 15:42:09 +10:00
Federico Bond 96ba7938de
refactor!: move AbstractProvider to openfeature.provider (#314)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-04-12 11:19:21 +10:00
Federico Bond cd605c4f5d
chore: update codecov/codecov-action action to v4 (#317)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-04-12 09:53:57 +09:00
renovate[bot] 49f0948e51
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.3.6 (#316)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-11 21:45:00 +00:00
Federico Bond 34ac91c707
fix!: restrict exported names with __all__ (#306)
* fix!: restrict exported names with __all__

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

* restrict codecov upload to Python 3.11

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

* disable codecov ci fail on error

Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
Signed-off-by: gruebel <anton.gruebel@gmail.com>
Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: gruebel <anton.gruebel@gmail.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
2024-04-09 11:15:30 +09:00
Federico Bond 9966c14e16
feat: update provider status when provider emits events (#309)
* refactor: move registry singleton to the registry module

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

* refactor: make openfeature.provider.registry a private module

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

* feat: update provider status when provider emits events

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

* refactor: avoid duplicate code

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

* fix: fix provider event dispatch on initialize/shutdown

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

* refactor: rename default_registry to provider_registry

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

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-04-07 22:59:02 +10:00
renovate[bot] faf02a9888
chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v4.6.0 (#312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-06 21:34:15 +00:00
Anton Grübel 9ba82e3b63
ci: switch to hatch (#297)
switch to hatch

Signed-off-by: gruebel <anton.gruebel@gmail.com>
2024-04-05 18:08:16 +11:00
renovate[bot] 47ae16c167
chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.3.5 (#311)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 12:48:51 +11:00
Federico Bond ff626374ae
chore: update renovate config (#310)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-04-05 12:46:02 +11:00
Federico Bond de36b214dc
fix: remove ProviderEvent.PROVIDER_FATAL (#307)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-28 16:54:00 +11:00
github-actions[bot] f00bc89caa
chore(main): release 0.6.1 (#304) 2024-03-28 00:10:46 +11:00
Federico Bond 05d0da2e3d
chore: add keywords to pyproject.toml (#305)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-26 07:31:57 +01:00
Federico Bond 78ea3b9914
feat: populate provider and client metadata in HookContext (#302)
* feat: populate provider and client metadata in HookContext

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

* fix: ensure provider consistency during flag evaluation

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

---------

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-25 18:15:26 +11:00
Federico Bond 4a323b0f96
refactor: mark hook_support module as private/internal (#303)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-25 18:02:36 +11:00
github-actions[bot] 2c23c9e971
chore(main): release 0.6.0 (#283)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-22 15:30:50 +01:00
Federico Bond 58d27c4011
docs: update spec version to 0.8.0 (#299)
Release-As: 0.6.0

Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-03-22 08:06:08 +01:00
renovate[bot] a70ae0cb2e
chore(deps): update dependency pytest-mock to v3.14.0 (#300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-22 13:25:00 +11: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
renovate[bot] 04b4009dbf
chore(deps): update dependency pytest-mock to v3.13.0 (#298)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-22 07:22:24 +11:00
Anton Grübel 6e4eebce20
chore: update mypy and ruff (#296)
update mypy and ruff

Signed-off-by: gruebel <anton.gruebel@gmail.com>
2024-03-19 06:16:16 +11:00
renovate[bot] f5987ef8f4
chore(deps): update dependency coverage to v7.4.4 (#293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-15 07:41:41 +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
renovate[bot] 3f336b3a24
chore(deps): update dependency pytest to v8.1.1 (#289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-09 16:47:21 +01: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
renovate[bot] 7ba7d6146f
chore(deps): update dependency pytest to v8.1.0 (#287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-03 23:06:47 +01:00
Zhiwei ae26217328
docs: add Missing Imports in Provider Dev Example in README (#286)
docs: add missing imports in provider dev example in README

Signed-off-by: Zhiwei <zhi.wei.liang@outlook.com>
2024-03-03 12:04:45 -03:00
Anton Grübel 5acd6a6598
refactor: improve Hook Hints typing (#285)
* improve Hook Hints typing

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

* ignore lint issue for this line

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

* exclude TYPE_CHECKING from coverage report

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

---------

Signed-off-by: gruebel <anton.gruebel@gmail.com>
2024-03-03 00:38:14 -03:00
Todd Baert 141858d235
chore: add changelog sections (#282)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-02-26 20:56:00 -03:00
renovate[bot] b2594a567c
chore(deps): update dependency pytest to v8.0.2 (#281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-25 00:45:32 -03:00
renovate[bot] bafa427a0d
chore(deps): update dependency coverage to v7.4.3 (#280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-24 00:25:56 +01:00
github-actions[bot] 035d0ad679
chore: release 0.5.0 (#277)
chore(main): release 0.5.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-21 16:23:33 -05: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
renovate[bot] 0ec2b69d1e
chore(deps): update dependency coverage to v7.4.2 (#276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-20 21:48:09 +00:00
renovate[bot] 2b177e6ab5
chore(deps): update dependency pytest to v8.0.1 (#275)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-17 04:24:21 +00:00
Federico Bond 77fbae7b1e
refactor: remove abstractmethod decorator from get_provider_hooks (#274)
Signed-off-by: Federico Bond <federicobond@gmail.com>
2024-02-09 18:50:28 -03:00