feat: Add metadata to providers (#26)
* provider-metadata: Add metadata to providers Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com> Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com> * feature/provider-metadata: Test extending metadata class Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com> Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com> * feature/provider-metadata: Change no op metadata Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com> Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com> Signed-off-by: Andrew Helsby <ajhelsby@hotmail.com>
This commit is contained in:
parent
b44224be0d
commit
b39cced329
|
|
@ -0,0 +1,6 @@
|
|||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class Metadata:
|
||||
name: str
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
from dataclasses import dataclass
|
||||
|
||||
from open_feature.provider.metadata import Metadata
|
||||
|
||||
|
||||
@dataclass
|
||||
class NoOpMetadata(Metadata):
|
||||
name: str = "No-op Provider"
|
||||
is_default_provider: bool = True
|
||||
|
|
@ -3,14 +3,16 @@ from numbers import Number
|
|||
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.provider.metadata import Metadata
|
||||
from open_feature.provider.no_op_metadata import NoOpMetadata
|
||||
from open_feature.provider.provider import AbstractProvider
|
||||
|
||||
PASSED_IN_DEFAULT = "Passed in default"
|
||||
|
||||
|
||||
class NoOpProvider(AbstractProvider):
|
||||
def get_name(self) -> str:
|
||||
return "No-op Provider"
|
||||
def get_metadata(self) -> Metadata:
|
||||
return NoOpMetadata()
|
||||
|
||||
def get_boolean_details(
|
||||
self,
|
||||
|
|
|
|||
|
|
@ -2,11 +2,12 @@ from abc import abstractmethod
|
|||
from numbers import Number
|
||||
|
||||
from open_feature.evaluation_context.evaluation_context import EvaluationContext
|
||||
from open_feature.provider.metadata import Metadata
|
||||
|
||||
|
||||
class AbstractProvider:
|
||||
@abstractmethod
|
||||
def get_name(self) -> str:
|
||||
def get_metadata(self) -> Metadata:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
|
|
|
|||
|
|
@ -10,6 +10,16 @@ def setup():
|
|||
assert isinstance(provider, NoOpProvider)
|
||||
|
||||
|
||||
def test_should_return_no_op_provider_metadata(no_op_provider_client):
|
||||
# Given
|
||||
# When
|
||||
metadata = NoOpProvider().get_metadata()
|
||||
# Then
|
||||
assert metadata is not None
|
||||
assert metadata.name == "No-op Provider"
|
||||
assert metadata.is_default_provider
|
||||
|
||||
|
||||
def test_should_get_boolean_flag_from_no_op(no_op_provider_client):
|
||||
# Given
|
||||
# When
|
||||
|
|
|
|||
Loading…
Reference in New Issue