class_docstr: LazyLoader module borrowed from Tensorflow
   https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/util/lazy_loader.py
   with a addition of "module caching". This will throw an
   exception if module cannot be imported.
  
  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.
class_docstr_tok: ["LazyLoader","module","borrowed","from","Tensorflow","https",":","\/\/github.com\/tensorflow\/tensorflow\/blob\/v2.2.0\/tensorflow\/python\/util\/lazy_loader.py","with","a","addition","of","``","module","caching","''",".","This","will","throw","an","exception","if","module","can","not","be","imported",".","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","."]
docstr: Load the module and insert it into the parent's globals.
docstr_tok: ["Load","the","module","and","insert","it","into","the","parent","'s","globals","."]
code: def _load(self) -> types.ModuleType:
      """Load the module and insert it into the parent's globals."""
      # Import the target module and insert it into the parent's namespace
      try:
          module = importlib.import_module(self.__name__)
          self._parent_module_globals[self._local_name] = module
          # The additional add to sys.modules ensures library is actually loaded.
          sys.modules[self._local_name] = module
      except ModuleNotFoundError as err:
          raise self._exc(f"{self._exc_msg} (reason: {err})") from None
  
      # Emit a warning if one was specified
      if self._warning:
          logger.warning(self._warning)
          # Make sure to only warn once.
          self._warning = None
  
      # Update this object's dict so that if someone keeps a reference to the
      #   LazyLoader, lookups are efficient (__getattr__ is only called on lookups
      #   that fail).
      self.__dict__.update(module.__dict__)
      return module
  
file_path: BentoML/grpc-client/bentoml/_internal/utils/lazy_loader.py
imports: from __future__ import annotations
  import importlib
  import logging
  import sys
  import types
  import typing
  from ...exceptions import MissingDependencyException
label_desc: Use image node_id 2 for calling the LazyLoader obj's underlying member method code with example usage: obj._load() and returns: module