Added generic typing to configuration #141

This commit is contained in:
Sven Heidemann 2022-12-07 13:06:50 +01:00
parent 68e01afb5b
commit 6d2492c1cf
3 changed files with 10 additions and 7 deletions

View File

@ -22,6 +22,7 @@ from cpl_core.dependency_injection.service_provider_abc import ServiceProviderAB
from cpl_core.environment.application_environment import ApplicationEnvironment
from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC
from cpl_core.environment.environment_name_enum import EnvironmentNameEnum
from cpl_core.typing import T
class Configuration(ConfigurationABC):
@ -267,7 +268,7 @@ class Configuration(ConfigurationABC):
configuration.from_dict(value)
self.add_configuration(sub, configuration)
def add_configuration(self, key_type: Union[str, type], value: Union[str, ConfigurationModelABC]):
def add_configuration(self, key_type: Union[str, type], value: any):
self._config[key_type] = value
def create_console_argument(self, arg_type: ArgumentTypeEnum, token: str, name: str, aliases: list[str],
@ -280,8 +281,7 @@ class Configuration(ConfigurationABC):
for arg in self._argument_types:
call(arg)
def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> \
Optional[Union[str, ConfigurationModelABC]]:
def get_configuration(self, search_type: Type[T]) -> Optional[T]:
if type(search_type) is str:
if search_type == ConfigurationVariableNameEnum.environment.value:
return self._application_environment.environment_name

View File

@ -6,6 +6,7 @@ from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
from cpl_core.configuration.argument_abc import ArgumentABC
from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum
from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC
from cpl_core.typing import T
class ConfigurationABC(ABC):
@ -75,14 +76,14 @@ class ConfigurationABC(ABC):
pass
@abstractmethod
def add_configuration(self, key_type: Union[str, type], value: Union[str, ConfigurationModelABC]):
def add_configuration(self, key_type: Union[str, type], value: any):
r"""Add configuration object
Parameter
---------
key_type: Union[:class:`str`, :class:`type`]
Type of the value
value: Union[:class:`str`, :class:`cpl_core.configuration.configuration_model_abc.ConfigurationModelABC`]
value: any
Object of the value
"""
pass
@ -125,8 +126,7 @@ class ConfigurationABC(ABC):
pass
@abstractmethod
def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[
str, ConfigurationModelABC]:
def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Optional[T]:
r"""Returns value from configuration by given type
Parameter

3
src/cpl_core/typing.py Normal file
View File

@ -0,0 +1,3 @@
from typing import TypeVar
T = TypeVar('T')