Source code for pyinduct.registry

"""
:py:mod:`pyinduct.registry` covers the interface for registration of bases (a base is a set of initial functions).
"""

__all__ = ["register_base", "is_registered", "deregister_base", "get_base"]

_registry = {}


[docs]def is_registered(label): """ Checks whether a specific label has already been registered. Args: label (str): Label to check for. Return: bool: True if registered, False if not. """ if not isinstance(label, (str, bytes)): raise TypeError("Only strings allowed as labels!") return label in list(_registry.keys())
[docs]def register_base(label, base, overwrite=False): """ Register a basis to make it accessible all over the :py:mod:`pyinduct` framework. Args: base (:py:class:`.ApproximationBase`): base to register label (str): String that will be used as label. overwrite: Force overwrite if a basis is already registered under this label. """ if not isinstance(label, (str, bytes)): raise TypeError("Only strings allowed as labels!") if not label: raise ValueError("No empty bases labels allowed.") new_base = _registry.get(label, None) if new_base is not None: if overwrite: deregister_base(label) else: raise ValueError("Function set '{0}' already in registry!".format(label)) _registry[label] = base
[docs]def deregister_base(label): """ Removes a set of initial functions from the packages registry. Args: label (str): String, label of functions that are to be removed. Raises: ValueError: If label is not found in registry. """ if not isinstance(label, (str, bytes)): raise TypeError("Only strings allowed as label!") if not is_registered(label): raise ValueError("Label '{0}' not found in registry!".format(label)) del _registry[label]
[docs]def get_base(label): """ Retrieve registered set of initial functions by their label. Args: label (str): String, label of functions to retrieve. Return: initial_functions """ base = _registry.get(label, None) if base is None: raise ValueError("No base registered under label '{0}'!".format(label)) else: return base
[docs]def clear_registry(): """ Deregister all bases. """ _registry.clear()