chore: split eval and resolution details objects, adjust providers accordingly (#103)
Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com>
This commit is contained in:
parent
5259dcf241
commit
68b479664d
|
|
@ -0,0 +1,17 @@
|
||||||
|
import typing
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
from open_feature.exception.error_code import ErrorCode
|
||||||
|
from open_feature.flag_evaluation.reason import Reason
|
||||||
|
|
||||||
|
T = typing.TypeVar("T", covariant=True)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class FlagResolutionDetails(typing.Generic[T]):
|
||||||
|
value: T
|
||||||
|
error_code: typing.Optional[ErrorCode] = None
|
||||||
|
error_message: typing.Optional[str] = None
|
||||||
|
reason: typing.Optional[Reason] = None
|
||||||
|
variant: typing.Optional[str] = None
|
||||||
|
flag_metadata: typing.Optional[str] = None
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from open_feature.evaluation_context.evaluation_context import EvaluationContext
|
from open_feature.evaluation_context.evaluation_context import EvaluationContext
|
||||||
from open_feature.flag_evaluation.flag_evaluation_details import FlagEvaluationDetails
|
|
||||||
from open_feature.flag_evaluation.reason import Reason
|
from open_feature.flag_evaluation.reason import Reason
|
||||||
|
from open_feature.flag_evaluation.resolution_details import FlagResolutionDetails
|
||||||
from open_feature.hooks.hook import Hook
|
from open_feature.hooks.hook import Hook
|
||||||
from open_feature.provider.metadata import Metadata
|
from open_feature.provider.metadata import Metadata
|
||||||
from open_feature.provider.no_op_metadata import NoOpMetadata
|
from open_feature.provider.no_op_metadata import NoOpMetadata
|
||||||
|
|
@ -23,9 +23,8 @@ class NoOpProvider(AbstractProvider):
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: bool,
|
default_value: bool,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[bool]:
|
) -> FlagResolutionDetails[bool]:
|
||||||
return FlagEvaluationDetails(
|
return FlagResolutionDetails(
|
||||||
flag_key=flag_key,
|
|
||||||
value=default_value,
|
value=default_value,
|
||||||
reason=Reason.DEFAULT,
|
reason=Reason.DEFAULT,
|
||||||
variant=PASSED_IN_DEFAULT,
|
variant=PASSED_IN_DEFAULT,
|
||||||
|
|
@ -36,9 +35,8 @@ class NoOpProvider(AbstractProvider):
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: str,
|
default_value: str,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[str]:
|
) -> FlagResolutionDetails[str]:
|
||||||
return FlagEvaluationDetails(
|
return FlagResolutionDetails(
|
||||||
flag_key=flag_key,
|
|
||||||
value=default_value,
|
value=default_value,
|
||||||
reason=Reason.DEFAULT,
|
reason=Reason.DEFAULT,
|
||||||
variant=PASSED_IN_DEFAULT,
|
variant=PASSED_IN_DEFAULT,
|
||||||
|
|
@ -49,9 +47,8 @@ class NoOpProvider(AbstractProvider):
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: int,
|
default_value: int,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[int]:
|
) -> FlagResolutionDetails[int]:
|
||||||
return FlagEvaluationDetails(
|
return FlagResolutionDetails(
|
||||||
flag_key=flag_key,
|
|
||||||
value=default_value,
|
value=default_value,
|
||||||
reason=Reason.DEFAULT,
|
reason=Reason.DEFAULT,
|
||||||
variant=PASSED_IN_DEFAULT,
|
variant=PASSED_IN_DEFAULT,
|
||||||
|
|
@ -62,9 +59,8 @@ class NoOpProvider(AbstractProvider):
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: float,
|
default_value: float,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[float]:
|
) -> FlagResolutionDetails[float]:
|
||||||
return FlagEvaluationDetails(
|
return FlagResolutionDetails(
|
||||||
flag_key=flag_key,
|
|
||||||
value=default_value,
|
value=default_value,
|
||||||
reason=Reason.DEFAULT,
|
reason=Reason.DEFAULT,
|
||||||
variant=PASSED_IN_DEFAULT,
|
variant=PASSED_IN_DEFAULT,
|
||||||
|
|
@ -75,9 +71,8 @@ class NoOpProvider(AbstractProvider):
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: typing.Union[dict, list],
|
default_value: typing.Union[dict, list],
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[typing.Union[dict, list]]:
|
) -> FlagResolutionDetails[typing.Union[dict, list]]:
|
||||||
return FlagEvaluationDetails(
|
return FlagResolutionDetails(
|
||||||
flag_key=flag_key,
|
|
||||||
value=default_value,
|
value=default_value,
|
||||||
reason=Reason.DEFAULT,
|
reason=Reason.DEFAULT,
|
||||||
variant=PASSED_IN_DEFAULT,
|
variant=PASSED_IN_DEFAULT,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import typing
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
|
||||||
from open_feature.evaluation_context.evaluation_context import EvaluationContext
|
from open_feature.evaluation_context.evaluation_context import EvaluationContext
|
||||||
from open_feature.flag_evaluation.flag_evaluation_details import FlagEvaluationDetails
|
from open_feature.flag_evaluation.resolution_details import FlagResolutionDetails
|
||||||
from open_feature.hooks.hook import Hook
|
from open_feature.hooks.hook import Hook
|
||||||
from open_feature.provider.metadata import Metadata
|
from open_feature.provider.metadata import Metadata
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ class AbstractProvider:
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: bool,
|
default_value: bool,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[bool]:
|
) -> FlagResolutionDetails[bool]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|
@ -31,7 +31,7 @@ class AbstractProvider:
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: str,
|
default_value: str,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[str]:
|
) -> FlagResolutionDetails[str]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|
@ -40,7 +40,7 @@ class AbstractProvider:
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: int,
|
default_value: int,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[int]:
|
) -> FlagResolutionDetails[int]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|
@ -49,7 +49,7 @@ class AbstractProvider:
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: float,
|
default_value: float,
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[float]:
|
) -> FlagResolutionDetails[float]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|
@ -58,5 +58,5 @@ class AbstractProvider:
|
||||||
flag_key: str,
|
flag_key: str,
|
||||||
default_value: typing.Union[dict, list],
|
default_value: typing.Union[dict, list],
|
||||||
evaluation_context: typing.Optional[EvaluationContext] = None,
|
evaluation_context: typing.Optional[EvaluationContext] = None,
|
||||||
) -> FlagEvaluationDetails[typing.Union[dict, list]]:
|
) -> FlagResolutionDetails[typing.Union[dict, list]]:
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue