File: //opt/alt/python35/lib64/python3.5/distutils/__pycache__/extension.cpython-35.pyc
��Yf)  �               @   sM   d  Z  d d l Z d d l Z d d l Z Gd d �  d � Z d d �  Z d S)zmdistutils.extension
Provides the Extension class, used to describe C/C++ extension
modules in setup scripts.�    Nc               @   sX   e  Z d  Z d Z d d d d d d d d d d d d d d d d � Z d d �  Z d S)�	Extensiona�  Just a collection of attributes that describes an extension
    module and everything needed to build it (hopefully in a portable
    way, but there are hooks that let you be as unportable as you need).
    Instance attributes:
      name : string
        the full name of the extension, including any packages -- ie.
        *not* a filename or pathname, but Python dotted name
      sources : [string]
        list of source filenames, relative to the distribution root
        (where the setup script lives), in Unix form (slash-separated)
        for portability.  Source files may be C, C++, SWIG (.i),
        platform-specific resource files, or whatever else is recognized
        by the "build_ext" command as source for a Python extension.
      include_dirs : [string]
        list of directories to search for C/C++ header files (in Unix
        form for portability)
      define_macros : [(name : string, value : string|None)]
        list of macros to define; each macro is defined using a 2-tuple,
        where 'value' is either the string to define it to or None to
        define it without a particular value (equivalent of "#define
        FOO" in source or -DFOO on Unix C compiler command line)
      undef_macros : [string]
        list of macros to undefine explicitly
      library_dirs : [string]
        list of directories to search for C/C++ libraries at link time
      libraries : [string]
        list of library names (not filenames or paths) to link against
      runtime_library_dirs : [string]
        list of directories to search for C/C++ libraries at run time
        (for shared extensions, this is when the extension is loaded)
      extra_objects : [string]
        list of extra files to link with (eg. object files not implied
        by 'sources', static library that must be explicitly specified,
        binary resource files, etc.)
      extra_compile_args : [string]
        any extra platform- and compiler-specific information to use
        when compiling the source files in 'sources'.  For platforms and
        compilers where "command line" makes sense, this is typically a
        list of command-line arguments, but for other platforms it could
        be anything.
      extra_link_args : [string]
        any extra platform- and compiler-specific information to use
        when linking object files together to create the extension (or
        to create a new static Python interpreter).  Similar
        interpretation as for 'extra_compile_args'.
      export_symbols : [string]
        list of symbols to be exported from a shared extension.  Not
        used on all platforms, and not generally necessary for Python
        extensions, which typically export exactly one symbol: "init" +
        extension_name.
      swig_opts : [string]
        any extra options to pass to SWIG if a source file has the .i
        extension.
      depends : [string]
        list of files that the extension depends on
      language : string
        extension language (i.e. "c", "c++", "objc"). Will be detected
        from the source extensions if not provided.
      optional : boolean
        specifies that a build failure in the extension should not abort the
        build process, but simply not install the failing extension.
    Nc             K   s|  t  | t � s t d � � t  | t � o@ t d d �  | D� � sO t d � � | |  _ | |  _ | pj g  |  _ | py g  |  _ | p� g  |  _	 | p� g  |  _
 | p� g  |  _ | p� g  |  _ |	 p� g  |  _
 |
 p� g  |  _ | p� g  |  _ | p� g  |  _ |
 p g  |  _ | pg  |  _ | |  _ | |  _ t | � d k rxd d �  | D� } d j t | � � } d	 | } t j | � d  S)
Nz'name' must be a stringc             s   s   |  ] } t  | t � Vq d  S)N)�
isinstance�str)�.0�v� r   �8/opt/alt/python35/lib64/python3.5/distutils/extension.py�	<genexpr>k   s    z%Extension.__init__.<locals>.<genexpr>z#'sources' must be a list of stringsr   c             S   s   g  |  ] } t  | � � q Sr   )�repr)r   Zoptionr   r   r   �
<listcomp>�   s   	 z&Extension.__init__.<locals>.<listcomp>z, zUnknown Extension options: %s)r   r   �AssertionError�list�all�name�sources�include_dirs�
define_macros�undef_macros�library_dirs�	libraries�runtime_library_dirs�
extra_objects�extra_compile_args�extra_link_args�export_symbols�	swig_opts�depends�language�optional�len�join�sorted�warnings�warn)�selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   �kwZoptions�msgr   r   r   �__init__W   s4    				
zExtension.__init__c             C   s)   d |  j  j |  j  j |  j t |  � f S)Nz<%s.%s(%r) at %#x>)�	__class__�
__module__�__qualname__r   �id)r$   r   r   r   �__repr__�   s
    		zExtension.__repr__)�__name__r)   r*   �__doc__r'