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 @@
-
-
+
+
@@ -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,