class_docstr: Lazily import a module, mainly to avoid pulling in large dependencies.
  
  `contrib`, and `ffmpeg` are examples of modules that are large and not always
  needed, and this allows them to only be loaded when they are used.
  
  Copied from: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/util/lazy_loader.py
code: def __init__(
      self, local_name, parent_module_globals, name
  ):  # pylint: disable=super-on-old-class
      self._local_name = local_name
      self._parent_module_globals = parent_module_globals
  
      super().__init__(name)
  
file_path: ludwig/ludwig/utils/package_utils.py
imports: import importlib
  import types
label_desc: Use image node_id 1 to create a new LazyLoader object from inherited base classes: types with example: obj = LazyLoader(local_name, parent_module_globals, name)