o
    gv(                     @   s.   d Z ddlZddlZG d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                   @   s>   e Zd ZdZ														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 | os.PathLike]
        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rtdd |D std|| _tttj|| _	|p*g | _
|p/g | _|p4g | _|p9g | _|p>g | _|pCg | _|	pHg | _|
pMg | _|pRg | _|pWg | _|p\g | _|pag | _|| _|| _t|dkrdd |D }dt|}d	| }t| d S d S )
Nz'name' must be a stringc                 s   s     | ]}t |ttjfV  qd S )N)
isinstancestrosPathLike).0v r	   \/var/www/rescue_company/venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py	<genexpr>o   s    z%Extension.__init__.<locals>.<genexpr>z8'sources' must be a list of strings or PathLike objects.r   c                 S   s   g | ]}t |qS r	   )repr)r   optionr	   r	   r
   
<listcomp>   s    z&Extension.__init__.<locals>.<listcomp>z, zUnknown Extension options: )r   r   AssertionErrorlistallnamemapr   fspath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#   kwoptionsmsgr	   r	   r
   __init__W   s>   













zExtension.__init__c              	   C   s.   d| j j d| j j d| jdt| dd	S )N<.(z) at z#x>)	__class__
__module____qualname__r   id)r)   r	   r	   r
   __repr__   s   .zExtension.__repr__)NNNNNNNNNNNNNN)__name__r3   r4   __doc__r-   r6   r	   r	   r	   r
   r      s$    F
6r   c                 C   s  ddl m}m}m} ddlm} ddlm} || }|| dddddd}z0g }	 | }	|	du r3n|	|	r9q(|	d |	d   krGd	krSn n
|
d
|	 d q(||	|}	||	}
|
d }t|g }d}|
dd D ]}|dur{|| d}qmtj|d }|dd }|dd }|dv r|j| qm|dkr|j| qm|dkr|d}|dkr|j|df qm|j|d| ||d d f qm|dkr|j| qm|dkr|j| qm|dkr|j| qm|dkr|j| qm|dkr|j| qm|dkr|j}qm|dkr|j}qm|dkr!|j}qm|dkr3|j| |s2|j}qm|dv r?|j| qm|
d| d
 qm|| q)W |  |S |  w )z3Reads a Setup file and returns Extension instances.r   )_variable_rxexpand_makefile_varsparse_makefile)TextFile)split_quotedT)strip_commentsskip_blanks
join_lines	lstrip_ws	rstrip_wsN*'z' lines not handled yet      )z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz
-Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument ')distutils.sysconfigr9   r:   r;   distutils.text_filer<   distutils.utilr=   readlinematchr(   r   appendr   pathsplitextr   r   findr   r   r   r   r   r   r   r   close)filenamer9   r:   r;   r<   r=   varsfile
extensionslinewordsmoduleextappend_next_wordwordsuffixswitchvalueequalsr	   r	   r
   read_setup_file   s   
 



&






K
ra   )r8   r   r'   r   ra   r	   r	   r	   r
   <module>   s
    }