Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions open_feature/flag_evaluation/resolution_details.py
Original file line number Diff line number Diff line change
@@ -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
27 changes: 11 additions & 16 deletions open_feature/provider/no_op_provider.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import typing

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.resolution_details import FlagResolutionDetails
from open_feature.hooks.hook import Hook
from open_feature.provider.metadata import Metadata
from open_feature.provider.no_op_metadata import NoOpMetadata
Expand All @@ -23,9 +23,8 @@ def resolve_boolean_details(
flag_key: str,
default_value: bool,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[bool]:
return FlagEvaluationDetails(
flag_key=flag_key,
) -> FlagResolutionDetails[bool]:
return FlagResolutionDetails(
value=default_value,
reason=Reason.DEFAULT,
variant=PASSED_IN_DEFAULT,
Expand All @@ -36,9 +35,8 @@ def resolve_string_details(
flag_key: str,
default_value: str,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[str]:
return FlagEvaluationDetails(
flag_key=flag_key,
) -> FlagResolutionDetails[str]:
return FlagResolutionDetails(
value=default_value,
reason=Reason.DEFAULT,
variant=PASSED_IN_DEFAULT,
Expand All @@ -49,9 +47,8 @@ def resolve_integer_details(
flag_key: str,
default_value: int,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[int]:
return FlagEvaluationDetails(
flag_key=flag_key,
) -> FlagResolutionDetails[int]:
return FlagResolutionDetails(
value=default_value,
reason=Reason.DEFAULT,
variant=PASSED_IN_DEFAULT,
Expand All @@ -62,9 +59,8 @@ def resolve_float_details(
flag_key: str,
default_value: float,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[float]:
return FlagEvaluationDetails(
flag_key=flag_key,
) -> FlagResolutionDetails[float]:
return FlagResolutionDetails(
value=default_value,
reason=Reason.DEFAULT,
variant=PASSED_IN_DEFAULT,
Expand All @@ -75,9 +71,8 @@ def resolve_object_details(
flag_key: str,
default_value: typing.Union[dict, list],
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[typing.Union[dict, list]]:
return FlagEvaluationDetails(
flag_key=flag_key,
) -> FlagResolutionDetails[typing.Union[dict, list]]:
return FlagResolutionDetails(
value=default_value,
reason=Reason.DEFAULT,
variant=PASSED_IN_DEFAULT,
Expand Down
12 changes: 6 additions & 6 deletions open_feature/provider/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from abc import abstractmethod

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.provider.metadata import Metadata

Expand All @@ -22,7 +22,7 @@ def resolve_boolean_details(
flag_key: str,
default_value: bool,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[bool]:
) -> FlagResolutionDetails[bool]:
pass

@abstractmethod
Expand All @@ -31,7 +31,7 @@ def resolve_string_details(
flag_key: str,
default_value: str,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[str]:
) -> FlagResolutionDetails[str]:
pass

@abstractmethod
Expand All @@ -40,7 +40,7 @@ def resolve_integer_details(
flag_key: str,
default_value: int,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[int]:
) -> FlagResolutionDetails[int]:
pass

@abstractmethod
Expand All @@ -49,7 +49,7 @@ def resolve_float_details(
flag_key: str,
default_value: float,
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[float]:
) -> FlagResolutionDetails[float]:
pass

@abstractmethod
Expand All @@ -58,5 +58,5 @@ def resolve_object_details(
flag_key: str,
default_value: typing.Union[dict, list],
evaluation_context: typing.Optional[EvaluationContext] = None,
) -> FlagEvaluationDetails[typing.Union[dict, list]]:
) -> FlagResolutionDetails[typing.Union[dict, list]]:
pass