Source code for rayoptics.util

""" package supplying utility functions for math and numpy support

    The :mod:`~rayoptics.util` subpackage provides miscellaneous functions for
    geometric calculations, color calculations and anything else that doesn't
    have an obvious home. These include:

        - miscellaneous math functions,
          :mod:`~.misc_math`
          :mod:`~.line_intersection`
        - support for color handling, :mod:`~.colors` :mod:`~.colour_system`
        - spectral line conversion with :func:`~.spectral_lines.get_wavelength`
          in :mod:`~.spectral_lines`
        - a 2D dict with M x N keys, :mod:`~.dict2d`
"""

import importlib
import logging

[docs] def str_to_class(module_name:str, class_name:str, **kwargs): """Return a class instance from a string reference""" try: module_ = importlib.import_module(module_name) try: class_obj = getattr(module_, class_name) class_ = class_obj(**kwargs) # except AttributeError: except Exception as err: logging.error(f'Class "{class_name}" does not exist') except ImportError: logging.error(f'Module "{module_name}" does not exist') return class_ or None