class_docstr: Lazy command class that defers operations requiring Cython and numpy until
  they've actually been downloaded and installed by setup_requires.
code: def __getitem__(self, key):
      global include_dirs
      if key != "build_ext":
          return super(LazyBuildExtCommandClass, self).__getitem__(key)
  
      import numpy
  
      if has_cython:
          org_build_ext = cython_build_ext
      else:
          from setuptools.command.build_ext import (
              build_ext as org_build_ext,
          )
  
      # Cython_build_ext isn't a new-style class in Py2.
      class build_ext(org_build_ext, object):
          """
          Custom build_ext command that lazily adds numpy's include_dir to
          extensions.
          """
  
          def build_extensions(self):
              """
              Lazily append numpy's include directory to Extension includes.
              This is done here rather than at module scope because setup.py
              may be run before numpy has been installed, in which case
              importing numpy and calling `numpy.get_include()` will fail.
              """
              numpy_incl = numpy.get_include()
              for ext in self.extensions:
                  ext.include_dirs.append(numpy_incl)
  
              super(build_ext, self).build_extensions()
  
      return build_ext
  
file_path: ta-lib-python/setup.py
imports: import sys
  import os
  import os.path
  import warnings
  from os import path
label_desc: Use image node_id 3 for calling the LazyBuildExtCommandClass obj's underlying member method code with example usage: obj.__getitem__(key) and returns: build_ext, super