Skip to content

Commit 385f27e

Browse files
fix: update provider method signatures to conform to specification (#13)
* Update provider method signatures to conform to specification * Fixes * Fix tests
1 parent e973b3e commit 385f27e

File tree

2 files changed

+28
-28
lines changed

2 files changed

+28
-28
lines changed

openfeature_flagsmith/provider.py

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,69 +43,69 @@ def get_metadata(self) -> Metadata:
4343

4444
def resolve_boolean_details(
4545
self,
46-
key: str,
46+
flag_key: str,
4747
default_value: bool,
48-
evaluation_context: EvaluationContext = EvaluationContext(),
48+
context: EvaluationContext = EvaluationContext(),
4949
) -> FlagResolutionDetails[bool]:
50-
return self._resolve(key, FlagType.BOOLEAN, default_value, evaluation_context)
50+
return self._resolve(flag_key, FlagType.BOOLEAN, default_value, context)
5151

5252
def resolve_string_details(
5353
self,
54-
key: str,
54+
flag_key: str,
5555
default_value: str,
56-
evaluation_context: EvaluationContext = EvaluationContext(),
56+
context: EvaluationContext = EvaluationContext(),
5757
) -> FlagResolutionDetails[str]:
58-
return self._resolve(key, FlagType.STRING, default_value, evaluation_context)
58+
return self._resolve(flag_key, FlagType.STRING, default_value, context)
5959

6060
def resolve_integer_details(
6161
self,
62-
key: str,
62+
flag_key: str,
6363
default_value: int,
64-
evaluation_context: EvaluationContext = EvaluationContext(),
64+
context: EvaluationContext = EvaluationContext(),
6565
) -> FlagResolutionDetails[int]:
66-
return self._resolve(key, FlagType.INTEGER, default_value, evaluation_context)
66+
return self._resolve(flag_key, FlagType.INTEGER, default_value, context)
6767

6868
def resolve_float_details(
6969
self,
70-
key: str,
70+
flag_key: str,
7171
default_value: float,
72-
evaluation_context: EvaluationContext = EvaluationContext(),
72+
context: EvaluationContext = EvaluationContext(),
7373
) -> FlagResolutionDetails[float]:
74-
return self._resolve(key, FlagType.FLOAT, default_value, evaluation_context)
74+
return self._resolve(flag_key, FlagType.FLOAT, default_value, context)
7575

7676
def resolve_object_details(
7777
self,
78-
key: str,
78+
flag_key: str,
7979
default_value: typing.Union[dict, list],
80-
evaluation_context: EvaluationContext = EvaluationContext(),
80+
context: EvaluationContext = EvaluationContext(),
8181
) -> FlagResolutionDetails[typing.Union[dict, list]]:
82-
return self._resolve(key, FlagType.OBJECT, default_value, evaluation_context)
82+
return self._resolve(flag_key, FlagType.OBJECT, default_value, context)
8383

8484
def _resolve(
8585
self,
86-
key: str,
86+
flag_key: str,
8787
flag_type: FlagType,
8888
default_value: typing.Any,
89-
evaluation_context: EvaluationContext,
89+
context: EvaluationContext,
9090
) -> FlagResolutionDetails:
9191
try:
92-
flag = self._get_flags(evaluation_context).get_flag(key)
92+
flag = self._get_flags(context).get_flag(flag_key)
9393
except FlagsmithClientError as e:
9494
raise FlagsmithProviderError(
9595
error_code=ErrorCode.GENERAL,
9696
error_message="An error occurred retrieving flags from Flagsmith client.",
9797
) from e
9898

9999
if flag.is_default and not self.use_flagsmith_defaults:
100-
raise FlagNotFoundError(error_message="Flag '%s' was not found." % key)
100+
raise FlagNotFoundError(error_message="Flag '%s' was not found." % flag_key)
101101

102102
if flag_type == FlagType.BOOLEAN and not self.use_boolean_config_value:
103103
return FlagResolutionDetails(value=flag.enabled)
104104

105105
if not (self.return_value_for_disabled_flags or flag.enabled):
106106
raise FlagsmithProviderError(
107107
error_code=ErrorCode.GENERAL,
108-
error_message="Flag '%s' is not enabled." % key,
108+
error_message="Flag '%s' is not enabled." % flag_key,
109109
)
110110

111111
required_type = _BASIC_FLAG_TYPE_MAPPINGS.get(flag_type)
@@ -115,18 +115,18 @@ def _resolve(
115115
try:
116116
return FlagResolutionDetails(value=json.loads(flag.value))
117117
except JSONDecodeError as e:
118-
msg = "Unable to parse object from value for flag '%s'" % key
118+
msg = "Unable to parse object from value for flag '%s'" % flag_key
119119
raise ParseError(error_message=msg) from e
120120

121121
raise TypeMismatchError(
122122
error_message="Value for flag '%s' is not of type '%s'"
123-
% (key, flag_type.value)
123+
% (flag_key, flag_type.value)
124124
)
125125

126-
def _get_flags(self, evaluation_context: EvaluationContext = EvaluationContext()):
127-
if targeting_key := evaluation_context.targeting_key:
126+
def _get_flags(self, context: EvaluationContext = EvaluationContext()):
127+
if targeting_key := context.targeting_key:
128128
return self._client.get_identity_flags(
129129
identifier=targeting_key,
130-
traits=evaluation_context.attributes.get("traits", {}),
130+
traits=context.attributes.get("traits", {}),
131131
)
132132
return self._client.get_environment_flags()

tests/test_provider.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,9 @@ def test_identity_flags_are_used_if_targeting_key_provided(
302302

303303
# When
304304
result = provider.resolve_string_details(
305-
key=key,
305+
flag_key=key,
306306
default_value=default_value,
307-
evaluation_context=EvaluationContext(
307+
context=EvaluationContext(
308308
targeting_key=targeting_key, attributes={"traits": traits}
309309
),
310310
)
@@ -332,7 +332,7 @@ def test_resolve_boolean_details_uses_enabled_when_use_boolean_config_value_is_f
332332
)
333333

334334
# When
335-
result = provider.resolve_boolean_details(key=key, default_value=False)
335+
result = provider.resolve_boolean_details(flag_key=key, default_value=False)
336336

337337
# Then
338338
assert result.value is True

0 commit comments

Comments
 (0)