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","."]
code: def __getattr__(self, item: t.Any) -> t.Any:
      if self._module is None:
          self._module = self._load()
      return getattr(self._module, item)
  
file_path: BentoML/src/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 3 for calling the LazyLoader obj's underlying member method code with example usage: obj.__getattr__(item) and returns: getattr