diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d12354ef..30da1cd5 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1 @@ -{".":"0.6.0"} \ No newline at end of file +{".":"0.6.1"} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ccd2e9a2..91c4dfdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [0.6.1](https://github.com/open-feature/python-sdk/compare/v0.6.0...v0.6.1) (2024-03-26) + + +### โœจ New Features + +* populate provider and client metadata in HookContext ([#302](https://github.com/open-feature/python-sdk/issues/302)) ([78ea3b9](https://github.com/open-feature/python-sdk/commit/78ea3b991499231f42efda41ba6f672e20cb346c)) + + +### ๐Ÿงน Chore + +* add keywords to pyproject.toml ([#305](https://github.com/open-feature/python-sdk/issues/305)) ([05d0da2](https://github.com/open-feature/python-sdk/commit/05d0da2e3df86833986618243e18b66218425db8)) + + +### ๐Ÿ”„ Refactoring + +* mark hook_support module as private/internal ([#303](https://github.com/open-feature/python-sdk/issues/303)) ([4a323b0](https://github.com/open-feature/python-sdk/commit/4a323b0f9622663c9c43c292364fa25062d70715)) + ## [0.6.0](https://github.com/open-feature/python-sdk/compare/v0.5.0...v0.6.0) (2024-03-22) diff --git a/README.md b/README.md index d7546966..d5ff5dfc 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ - - Latest version + + Latest version @@ -60,13 +60,13 @@ #### Pip install ```bash -pip install openfeature-sdk==0.6.0 +pip install openfeature-sdk==0.6.1 ``` #### requirements.txt ```bash -openfeature-sdk==0.6.0 +openfeature-sdk==0.6.1 ``` ```python diff --git a/openfeature/client.py b/openfeature/client.py index f08749d6..31028828 100644 --- a/openfeature/client.py +++ b/openfeature/client.py @@ -21,7 +21,7 @@ Reason, ) from openfeature.hook import Hook, HookContext -from openfeature.hook.hook_support import ( +from openfeature.hook._hook_support import ( after_all_hooks, after_hooks, before_hooks, @@ -264,6 +264,7 @@ def evaluate_flag_details( # noqa: PLR0915 if flag_evaluation_options is None: flag_evaluation_options = FlagEvaluationOptions() + provider = self.provider # call this once to maintain a consistent reference evaluation_hooks = flag_evaluation_options.hooks hook_hints = flag_evaluation_options.hook_hints @@ -272,8 +273,8 @@ def evaluate_flag_details( # noqa: PLR0915 flag_type=flag_type, default_value=default_value, evaluation_context=evaluation_context, - client_metadata=None, - provider_metadata=None, + client_metadata=self.get_metadata(), + provider_metadata=provider.get_metadata(), ) # Hooks need to be handled in different orders at different stages # in the flag evaluation @@ -282,7 +283,7 @@ def evaluate_flag_details( # noqa: PLR0915 api.get_hooks() + self.hooks + evaluation_hooks - + self.provider.get_provider_hooks() + + provider.get_provider_hooks() ) # after, error, finally: Provider, Invocation, Client, API reversed_merged_hooks = merged_hooks[:] @@ -336,6 +337,7 @@ def evaluate_flag_details( # noqa: PLR0915 ) flag_evaluation = self._create_provider_evaluation( + provider, flag_type, flag_key, default_value, @@ -391,6 +393,7 @@ def evaluate_flag_details( # noqa: PLR0915 def _create_provider_evaluation( self, + provider: FeatureProvider, flag_type: FlagType, flag_key: str, default_value: typing.Any, @@ -413,11 +416,11 @@ def _create_provider_evaluation( ) get_details_callables: typing.Mapping[FlagType, GetDetailCallable] = { - FlagType.BOOLEAN: self.provider.resolve_boolean_details, - FlagType.INTEGER: self.provider.resolve_integer_details, - FlagType.FLOAT: self.provider.resolve_float_details, - FlagType.OBJECT: self.provider.resolve_object_details, - FlagType.STRING: self.provider.resolve_string_details, + FlagType.BOOLEAN: provider.resolve_boolean_details, + FlagType.INTEGER: provider.resolve_integer_details, + FlagType.FLOAT: provider.resolve_float_details, + FlagType.OBJECT: provider.resolve_object_details, + FlagType.STRING: provider.resolve_string_details, } get_details_callable = get_details_callables.get(flag_type) diff --git a/openfeature/hook/hook_support.py b/openfeature/hook/_hook_support.py similarity index 100% rename from openfeature/hook/hook_support.py rename to openfeature/hook/_hook_support.py diff --git a/pyproject.toml b/pyproject.toml index 5a48847c..53ab2b03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "openfeature_sdk" -version = "0.6.0" +version = "0.6.1" description = "Standardizing Feature Flagging for Everyone" readme = "README.md" authors = [{ name = "OpenFeature", email = "openfeature-core@groups.io" }] @@ -15,7 +15,12 @@ classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", ] -keywords = [] +keywords = [ + "openfeature", + "feature", + "flags", + "toggles", +] dependencies = [] requires-python = ">=3.8" diff --git a/tests/hook/test_hook_support.py b/tests/hook/test_hook_support.py index 37e06eee..64bb8f6f 100644 --- a/tests/hook/test_hook_support.py +++ b/tests/hook/test_hook_support.py @@ -6,7 +6,7 @@ from openfeature.evaluation_context import EvaluationContext from openfeature.flag_evaluation import FlagEvaluationDetails, FlagType from openfeature.hook import Hook, HookContext -from openfeature.hook.hook_support import ( +from openfeature.hook._hook_support import ( after_all_hooks, after_hooks, before_hooks,