class_docstr: Lazy command class that defers operations requiring Cython and numpy until
  they've actually been downloaded and installed by setup_requires.
class_docstr_tok: ["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):
      if key != "build_ext":
          return super(LazyBuildExtCommandClass, self).__getitem__(key)
  
      from Cython.Distutils import build_ext as cython_build_ext
      import numpy
  
      # Cython_build_ext isn't a new-style class in Py2.
      class build_ext(cython_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
  
imports: from __future__ import print_function
  import os
  import re
  import sys
  from operator import lt, gt, eq, le, ge
  from os.path import abspath, dirname, join
  from distutils.version import StrictVersion
  from setuptools import Extension, find_packages, setup
  import versioneer
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