refactor: make Reason enum values instances of str (#142)

Signed-off-by: Federico Bond <federicobond@gmail.com>
This commit is contained in:
Federico Bond 2023-07-12 15:52:07 -03:00 committed by GitHub
parent 695da28c1e
commit 633deff002
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 18 additions and 15 deletions

View File

View File

@ -0,0 +1,11 @@
try:
from enum import StrEnum
except ImportError:
from enum import Enum
class StrEnum(str, Enum):
"""
Backport StrEnum for Python <3.11
"""
pass

View File

@ -15,11 +15,3 @@ class FlagEvaluationDetails(typing.Generic[T]):
reason: typing.Optional[Reason] = None
error_code: typing.Optional[ErrorCode] = None
error_message: typing.Optional[str] = None
@property
def reason(self) -> str:
return self._reason.value
@reason.setter
def reason(self, reason: Reason):
self._reason = reason

View File

@ -1,7 +1,7 @@
from enum import Enum
from open_feature._backports.strenum import StrEnum
class Reason(Enum):
class Reason(StrEnum):
CACHED = "CACHED"
DEFAULT = "DEFAULT"
DISABLED = "DISABLED"

View File

@ -95,7 +95,7 @@ def test_should_raise_exception_when_invalid_flag_type_provided(no_op_provider_c
assert flag.value
assert flag.error_message == "Unknown flag type"
assert flag.error_code == ErrorCode.GENERAL
assert flag.reason == Reason.ERROR.value
assert flag.reason == Reason.ERROR
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
assert flag_details is not None
assert flag_details.value
assert isinstance(flag_details.value, bool)
assert flag_details.reason == Reason.ERROR.value
assert flag_details.reason == Reason.ERROR
assert flag_details.error_message == "Generic exception raised"
@ -133,7 +133,7 @@ def test_should_handle_an_open_feature_exception_thrown_by_a_provider(
assert flag_details is not None
assert flag_details.value
assert isinstance(flag_details.value, bool)
assert flag_details.reason == Reason.ERROR.value
assert flag_details.reason == Reason.ERROR
assert flag_details.error_message == "error_message"

View File

@ -28,7 +28,7 @@ def test_evaulation_details_reason_should_be_a_string():
assert variant == flag_details.variant
assert error_code == flag_details.error_code
assert error_message == flag_details.error_message
assert reason.value == flag_details.reason
assert reason == flag_details.reason
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():
flag_details.reason = Reason.STATIC
# Then
assert Reason.STATIC.value == flag_details.reason
assert Reason.STATIC == flag_details.reason