python-sdk: Fix issues raised in code review to match a more pythonic style
This commit is contained in:
parent
029801f8df
commit
d15c141cd0
|
|
@ -25,13 +25,3 @@ repos:
|
|||
hooks:
|
||||
- id: flake8
|
||||
additional_dependencies: [ "flake8-print", "flake8-builtins", "flake8-functions==0.0.4" ]
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: tests
|
||||
name: Unit Tests
|
||||
entry: pipenv run tests
|
||||
language: python
|
||||
'types': [ python ]
|
||||
pass_filenames: false
|
||||
stages: [ push ]
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
# Open Feature Python SDK
|
||||
|
||||
## Requirements
|
||||
- Python 3.8
|
||||
- Python 3.8+
|
||||
|
||||
## Installation
|
||||
|
||||
|
||||
## How to use
|
||||
## How to use
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import typing
|
||||
from numbers import Number
|
||||
|
||||
from open_feature import OpenFeature
|
||||
|
|
@ -10,79 +11,103 @@ class OpenFeatureClient:
|
|||
self.version = version
|
||||
self.context = context
|
||||
self.hooks = hooks
|
||||
self.provider = OpenFeature.get_provider()
|
||||
|
||||
def get_boolean_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> bool:
|
||||
return self.evaluate_flag(
|
||||
FlagType.BOOLEAN,
|
||||
key,
|
||||
defaultValue,
|
||||
evaluationContext,
|
||||
flagEvaluationOptions,
|
||||
default_value,
|
||||
evaluation_context,
|
||||
flag_evaluation_options,
|
||||
)
|
||||
|
||||
def get_boolean_details(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
return self.get_boolean_details(
|
||||
key, defaultValue, evaluationContext, flagEvaluationOptions
|
||||
return self.provider.get_boolean_details(
|
||||
key, default_value, evaluation_context, flag_evaluation_options
|
||||
)
|
||||
|
||||
def get_string_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: str,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> str:
|
||||
return self.evaluate_flag(
|
||||
FlagType.BOOLEAN,
|
||||
FlagType.STRING,
|
||||
key,
|
||||
defaultValue,
|
||||
evaluationContext,
|
||||
flagEvaluationOptions,
|
||||
default_value,
|
||||
evaluation_context,
|
||||
flag_evaluation_options,
|
||||
)
|
||||
|
||||
def get_string_details(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
return self.get_string_details(
|
||||
key, defaultValue, evaluationContext, flagEvaluationOptions
|
||||
return self.provider.get_string_details(
|
||||
key, default_value, evaluation_context, flag_evaluation_options
|
||||
)
|
||||
|
||||
def get_number_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: Number,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> Number:
|
||||
return self.evaluate_flag(
|
||||
FlagType.BOOLEAN,
|
||||
FlagType.NUMBER,
|
||||
key,
|
||||
defaultValue,
|
||||
evaluationContext,
|
||||
flagEvaluationOptions,
|
||||
default_value,
|
||||
evaluation_context,
|
||||
flag_evaluation_options,
|
||||
)
|
||||
|
||||
def get_number_details(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
return self.get_number_details(
|
||||
key, defaultValue, evaluationContext, flagEvaluationOptions
|
||||
return self.provider.get_number_details(
|
||||
key, default_value, evaluation_context, flag_evaluation_options
|
||||
)
|
||||
|
||||
def evaluate_flag(
|
||||
self,
|
||||
flag_type: FlagType,
|
||||
key: str,
|
||||
defaultValue: bool,
|
||||
evaluationContext,
|
||||
flagEvaluationOptions,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
provider = OpenFeature.get_provider()
|
||||
if flag_type is FlagType.BOOLEAN:
|
||||
return provider.getBooleanEvaluation(
|
||||
key, defaultValue, evaluationContext, flagEvaluationOptions
|
||||
return self.provider.get_boolean_value(
|
||||
key, default_value, evaluation_context, flag_evaluation_options
|
||||
)
|
||||
if flag_type is FlagType.NUMBER:
|
||||
return provider.getNumberEvaluation(
|
||||
key, defaultValue, evaluationContext, flagEvaluationOptions
|
||||
return self.provider.get_number_value(
|
||||
key, default_value, evaluation_context, flag_evaluation_options
|
||||
)
|
||||
if flag_type is FlagType.STRING:
|
||||
return provider.getStringEvaluation(
|
||||
key, defaultValue, evaluationContext, flagEvaluationOptions
|
||||
return self.provider.get_string_value(
|
||||
key, default_value, evaluation_context, flag_evaluation_options
|
||||
)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class OpenFeature:
|
|||
@staticmethod
|
||||
def set_provider(provider_type: AbstractProvider):
|
||||
if provider_type is None:
|
||||
print("No provider")
|
||||
raise TypeError("No provider")
|
||||
global provider
|
||||
provider = provider_type
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import typing
|
||||
from numbers import Number
|
||||
from os import environ
|
||||
|
||||
|
|
@ -15,29 +16,50 @@ class FlagsmithProvider(AbstractProvider):
|
|||
else:
|
||||
self.flagsmith_provider = flagsmith
|
||||
|
||||
def get_boolean_value(self, key: str, defaultValue: bool) -> bool:
|
||||
def get_boolean_value(
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> bool:
|
||||
|
||||
value = self.flagsmith_provider.get_value(key)
|
||||
if not isinstance(value, bool):
|
||||
raise Exception()
|
||||
return value
|
||||
|
||||
def get_boolean_details(self, key: str, defaultValue: bool):
|
||||
def get_boolean_details(self, key: str, default_value: bool):
|
||||
pass
|
||||
|
||||
def get_string_value(self, key: str, defaultValue: str) -> str:
|
||||
def get_string_value(
|
||||
self,
|
||||
key: str,
|
||||
default_value: str,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> str:
|
||||
|
||||
value = self.flagsmith_provider.get_value(key)
|
||||
if not isinstance(value, str):
|
||||
raise Exception()
|
||||
return value
|
||||
|
||||
def get_string_details(self, key: str, defaultValue: str):
|
||||
def get_string_details(self, key: str, default_value: str):
|
||||
pass
|
||||
|
||||
def get_number_value(self, key: str, defaultValue: Number) -> Number:
|
||||
def get_number_value(
|
||||
self,
|
||||
key: str,
|
||||
default_value: Number,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> Number:
|
||||
|
||||
value = self.flagsmith_provider.get_value(key)
|
||||
if not isinstance(value, Number):
|
||||
raise Exception()
|
||||
return value
|
||||
|
||||
def get_number_details(self, key: str, defaultValue: Number):
|
||||
def get_number_details(self, key: str, default_value: Number):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -1,92 +1,65 @@
|
|||
import typing
|
||||
from abc import abstractmethod
|
||||
from numbers import Number
|
||||
|
||||
|
||||
class AbstractProvider:
|
||||
@abstractmethod
|
||||
def get_boolean_value(self, key: str, defaultValue: bool) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_boolean_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_boolean_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_boolean_details(self, key: str, defaultValue: bool):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_boolean_details(self, key: str, defaultValue: bool, evaluationContext):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_boolean_details(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: bool,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_string_value(self, key: str, defaultValue: bool) -> str:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_string_value(self, key: str, defaultValue: bool, evaluationContext) -> str:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_string_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: str,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> str:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_string_details(self, key: str, defaultValue: bool):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_string_details(self, key: str, defaultValue: bool, evaluationContext):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_string_details(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: str,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_number_value(self, key: str, defaultValue: bool) -> Number:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_number_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext
|
||||
self,
|
||||
key: str,
|
||||
default_value: Number,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
) -> Number:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_number_value(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
) -> Number:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_number_details(self, key: str, defaultValue: bool):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_number_details(self, key: str, defaultValue: bool, evaluationContext):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_number_details(
|
||||
self, key: str, defaultValue: bool, evaluationContext, flagEvaluationOptions
|
||||
self,
|
||||
key: str,
|
||||
default_value: Number,
|
||||
evaluation_context: typing.Any = None,
|
||||
flag_evaluation_options: typing.Any = None,
|
||||
):
|
||||
pass
|
||||
|
|
|
|||
Loading…
Reference in New Issue