Source code for meavis.parameters

"""MeaVis parameters namespace for user-defined injection."""
import logging
import sys

import meavis._detail.debug
import meavis._detail.default
import meavis.instruments


self_module = sys.modules[__name__]


[docs]def inject(cls, name): """Wrap and inject user-defined parameter in this namespace.""" name_split = [part.lower().strip() for part in name.split(".")] parameter_cls = meavis._detail.inject.inject_cls( cls, meavis._detail.inject.inject_namespace( ".".join(name_split[:-1]), self_module ), name_split[-1], ".".join(name_split), ) if not hasattr(parameter_cls, "is_settled"): parameter_cls.is_settled = meavis._detail.default.is_settled meavis.instruments.inject_default(parameter_cls, "parameters") logging.getLogger("meavis").info( "Register {} as parameter named {}.".format( cls.__name__, ".".join(name_split), ) ) return parameter_cls