Skip to content

Commit 1e9e37f

Browse files
committed
refactor: make Reason enum values instances of str
Signed-off-by: Federico Bond <[email protected]>
1 parent 695da28 commit 1e9e37f

File tree

6 files changed

+18
-15
lines changed

6 files changed

+18
-15
lines changed

open_feature/_backports/__init__.py

Whitespace-only changes.

open_feature/_backports/strenum.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
try:
2+
from enum import StrEnum
3+
except ImportError:
4+
from enum import Enum
5+
6+
class StrEnum(str, Enum):
7+
"""
8+
Backport StrEnum for Python <3.11
9+
"""
10+
11+
pass

open_feature/flag_evaluation/flag_evaluation_details.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,3 @@ class FlagEvaluationDetails(typing.Generic[T]):
1515
reason: typing.Optional[Reason] = None
1616
error_code: typing.Optional[ErrorCode] = None
1717
error_message: typing.Optional[str] = None
18-
19-
@property
20-
def reason(self) -> str:
21-
return self._reason.value
22-
23-
@reason.setter
24-
def reason(self, reason: Reason):
25-
self._reason = reason

open_feature/flag_evaluation/reason.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from enum import Enum
1+
from open_feature._backports.strenum import StrEnum
22

33

4-
class Reason(Enum):
4+
class Reason(StrEnum):
55
CACHED = "CACHED"
66
DEFAULT = "DEFAULT"
77
DISABLED = "DISABLED"

tests/test_open_feature_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_should_raise_exception_when_invalid_flag_type_provided(no_op_provider_c
9595
assert flag.value
9696
assert flag.error_message == "Unknown flag type"
9797
assert flag.error_code == ErrorCode.GENERAL
98-
assert flag.reason == Reason.ERROR.value
98+
assert flag.reason == Reason.ERROR
9999

100100

101101
def test_should_handle_a_generic_exception_thrown_by_a_provider(no_op_provider_client):
@@ -111,7 +111,7 @@ def test_should_handle_a_generic_exception_thrown_by_a_provider(no_op_provider_c
111111
assert flag_details is not None
112112
assert flag_details.value
113113
assert isinstance(flag_details.value, bool)
114-
assert flag_details.reason == Reason.ERROR.value
114+
assert flag_details.reason == Reason.ERROR
115115
assert flag_details.error_message == "Generic exception raised"
116116

117117

@@ -133,7 +133,7 @@ def test_should_handle_an_open_feature_exception_thrown_by_a_provider(
133133
assert flag_details is not None
134134
assert flag_details.value
135135
assert isinstance(flag_details.value, bool)
136-
assert flag_details.reason == Reason.ERROR.value
136+
assert flag_details.reason == Reason.ERROR
137137
assert flag_details.error_message == "error_message"
138138

139139

tests/test_open_feature_flag_evaluation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def test_evaulation_details_reason_should_be_a_string():
2828
assert variant == flag_details.variant
2929
assert error_code == flag_details.error_code
3030
assert error_message == flag_details.error_message
31-
assert reason.value == flag_details.reason
31+
assert reason == flag_details.reason
3232

3333

3434
def test_evaulation_details_reason_should_be_a_string_when_set():
@@ -52,4 +52,4 @@ def test_evaulation_details_reason_should_be_a_string_when_set():
5252
flag_details.reason = Reason.STATIC
5353

5454
# Then
55-
assert Reason.STATIC.value == flag_details.reason
55+
assert Reason.STATIC == flag_details.reason

0 commit comments

Comments
 (0)