Source code for dfdatetime.factory

# -*- coding: utf-8 -*-
"""The date and time values factory."""


[docs] class Factory(object): """Date and time values factory.""" _date_time_values_types = {}
[docs] @classmethod def DeregisterDateTimeValues(cls, date_time_values_type): """Deregisters a date and time values type. Args: date_time_values_type (type): date and time values type. Raises: KeyError: if date and time values type is not registered. """ class_name = date_time_values_type.__name__ if class_name not in cls._date_time_values_types: raise KeyError(f'Date and time values type: {class_name:s} not set.') del cls._date_time_values_types[class_name]
[docs] @classmethod def NewDateTimeValues(cls, class_name, **kwargs): """Creates a new date and time values for the specific type indicator. Args: class_name (str): type indicator. kwargs (dict): keyword arguments depending on the date and time values. Returns: DateTimeValues: date and time values. Raises: KeyError: if date and time values is not registered. """ if class_name not in cls._date_time_values_types: raise KeyError(f'Date and time values type: {class_name:s} not set.') date_time_values_type = cls._date_time_values_types[class_name] return date_time_values_type(**kwargs)
[docs] @classmethod def RegisterDateTimeValues(cls, date_time_values_type): """Registers a date and time values type. Args: date_time_values_type (type): date and time values type. Raises: KeyError: if date and time values is already registered. """ class_name = date_time_values_type.__name__ if class_name in cls._date_time_values_types: raise KeyError(f'Date and time values type: {class_name:s} already set.') cls._date_time_values_types[class_name] = date_time_values_type