docs: def lazy_import(func):
      """Decorator for declaring a lazy import.
  
      This decorator turns a function into an object that will act as a lazy
      importer.  Whenever the object's attributes are accessed, the function
      is called and its return value used in place of the object.  So you
      can declare lazy imports like this:
  
          @lazy_import
          def socket():
              import socket
              return socket
  
      The name "socket" will then be bound to a transparent object proxy which
      will import the socket module upon first use.
  
      The syntax here is slightly more verbose than other lazy import recipes,
      but it's designed not to hide the actual "import" statements from tools
      like pyinstaller or grep.
      """
      try:
          f = sys._getframe(1)
      except Exception:  # pragma: no cover
          namespace = None
      else:
          namespace = f.f_locals
      return _LazyImport(func.__name__, func, namespace)