parameters: (sources, *args, **kwargs)
return_statement: return setuptools.Extension(name, sources, *args, **kwargs)
docstring: The interface is used to config source files of customized operators and complies
      Op Kernel only supporting CPU device. Please use ``CUDAExtension`` if you want to
      compile Op Kernel that supports both CPU and GPU devices.
  
      It further encapsulates python built-in ``setuptools.Extension`` .The arguments and
      usage are same as the native interface, except for no need to explicitly specify
      ``name`` .
  
      **A simple example:**
  
      .. code-block:: text
  
          # setup.py 
  
          # Compiling customized operators supporting only CPU device
          from paddle.utils.cpp_extension import CppExtension, setup
  
          setup(
              name='custom_op',
              ext_modules=CppExtension(sources=['relu_op.cc'])
          )
  
  
      .. note::
          It is mainly used in ``setup`` and the nama of built shared library keeps same
          as ``name`` argument specified in ``setup`` interface.
  
  
      Args:
          sources(list[str]): Specify the C++/CUDA source files of customized operators.
          *args(list[options], optional): Specify other arguments same as ``setuptools.Extension`` .
          **kwargs(dict[option], optional): Specify other arguments same as ``setuptools.Extension`` .
  
      Returns:
          setuptools.Extension: An instance of ``setuptools.Extension``
docstring_summary: The interface is used to config source files of customized operators and complies
      Op Kernel only supporting CPU device. Please use ``CUDAExtension`` if you want to
      compile Op Kernel that supports both CPU and GPU devices.
docstring_tokens: The interface is used to config source files of customized operators and complies Op Kernel only supporting CPU device . Please use CUDAExtension if you want to compile Op Kernel that supports both CPU and GPU devices .
function: def CppExtension(sources, *args, **kwargs):
      """
      The interface is used to config source files of customized operators and complies
      Op Kernel only supporting CPU device. Please use ``CUDAExtension`` if you want to
      compile Op Kernel that supports both CPU and GPU devices.
  
      It further encapsulates python built-in ``setuptools.Extension`` .The arguments and
      usage are same as the native interface, except for no need to explicitly specify
      ``name`` .
  
      **A simple example:**
  
      .. code-block:: text
  
          # setup.py 
  
          # Compiling customized operators supporting only CPU device
          from paddle.utils.cpp_extension import CppExtension, setup
  
          setup(
              name='custom_op',
              ext_modules=CppExtension(sources=['relu_op.cc'])
          )
  
  
      .. note::
          It is mainly used in ``setup`` and the nama of built shared library keeps same
          as ``name`` argument specified in ``setup`` interface.
  
  
      Args:
          sources(list[str]): Specify the C++/CUDA source files of customized operators.
          *args(list[options], optional): Specify other arguments same as ``setuptools.Extension`` .
          **kwargs(dict[option], optional): Specify other arguments same as ``setuptools.Extension`` .
  
      Returns:
          setuptools.Extension: An instance of ``setuptools.Extension``
      """
      kwargs = normalize_extension_kwargs(kwargs, use_cuda=False)
      # Note(Aurelius84): While using `setup` and `jit`, the Extension `name` will
      # be replaced as `setup.name` to keep consistant with package. Because we allow
      # users can not specific name in Extension.
      # See `paddle.utils.cpp_extension.setup` for details.
      name = kwargs.get('name', None)
      if name is None:
          name = _generate_extension_name(sources)
  
      return setuptools.Extension(name, sources, *args, **kwargs)
function_tokens: def CppExtension ( sources , * args , * * kwargs ) : kwargs = normalize_extension_kwargs ( kwargs , use_cuda = False ) # Note(Aurelius84): While using `setup` and `jit`, the Extension `name` will # be replaced as `setup.name` to keep consistant with package. Because we allow # users can not specific name in Extension. # See `paddle.utils.cpp_extension.setup` for details. name = kwargs . get ( 'name' , None ) if name is None : name = _generate_extension_name ( sources ) return setuptools . Extension ( name , sources , * args , * * kwargs )