Source code for meavis.measurements

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

import meavis._detail.debug
import meavis._detail.inject


self_module = sys.modules[__name__]


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