§
    ZQd!)  ã                   óB   — d Z ddlZddlZddlZ G d„ d¦  «        Zd„ ZdS )zmdistutils.extension

Provides the Extension class, used to describe C/C++ extension
modules in setup scripts.é    Nc                   ó<   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z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                 ó�  — t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        rt	          d„ |D ¦   «         ¦  «        st          d¦  «        ‚|| _        || _        |pg | _        |pg | _        |pg | _	        |pg | _
        |pg | _        |pg | _        |	pg | _        |
pg | _        |pg | _        |pg | _        |pg | _        |pg | _        || _        || _        t+          |¦  «        dk    rId„ |D ¦   «         }d                     t/          |¦  «        ¦  «        }d|z  }t1          j        |¦  «         d S d S )Nz'name' must be a stringc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S )N)Ú
isinstanceÚstr)Ú.0Úvs     ú*/usr/lib/python3.11/distutils/extension.pyú	<genexpr>z%Extension.__init__.<locals>.<genexpr>k   s,   è è € Ð8Ð8¨1•J˜q¥#Ñ&Ô&Ð8Ð8Ð8Ð8Ð8Ð8ó    z#'sources' must be a list of stringsr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Úrepr)r	   Úoptions     r   ú
<listcomp>z&Extension.__init__.<locals>.<listcomp>�   s   € Ð5Ð5Ð5¨•t˜F‘|”|Ð5Ð5Ð5r   z, zUnknown 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%   ÚkwÚoptionsÚmsgs                       r   Ú__init__zExtension.__init__W   s{  € õ" ˜$¥Ñ$Ô$ð 	<Ý Ð!:Ñ;Ô;Ð;Ý˜7¥DÑ)Ô)ð 	HÝÐ8Ð8°Ð8Ñ8Ô8Ñ8Ô8ð	Hå Ð!FÑGÔGÐGàˆŒ	ØˆŒØ(Ð.¨BˆÔØ*Ð0¨bˆÔØ(Ð.¨BˆÔØ(Ð.¨BˆÔØ"˜ bˆŒØ$8Ð$>¸BˆÔ!Ø*Ð0¨bˆÔØ"4Ð":¸ˆÔØ.Ð4°"ˆÔØ,Ð2°ˆÔØ"˜ bˆŒØ�} "ˆŒØ ˆŒØ ˆŒõ ˆr‰7Œ7�QŠ;ˆ;Ø5Ð5°"Ð5Ñ5Ô5ˆGØ—i’i¥ w¡¤Ñ0Ô0ˆGØ1°GÑ;ˆCÝŒM˜#ÑÔÐÐÐð	 ˆ;r   c                 ó`   — d| j         j        | j         j        | j        t	          | ¦  «        fz  S )Nz<%s.%s(%r) at %#x>)Ú	__class__Ú
__module__Ú__qualname__r   Úid)r+   s    r   Ú__repr__zExtension.__repr__†   s2   € Ø#ØŒNÔ%ØŒNÔ'ØŒIÝˆt‰HŒHð	'ñ ð 	r   )NNNNNNNNNNNNNN)Ú__name__r2   r3   Ú__doc__r/   r5   r   r   r   r   r      so   € € € € € ð>ð >ðF  $Ø $Ø#Ø#Ø Ø'+Ø $Ø%)Ø"&Ø!%Ø"ØØØð-ð -ð -ð -ð^ð ð ð ð r   r   c                 ó¼  — ddl m}m}m} ddlm} ddlm}  || ¦  «        } || ddddd¬¦  «        }	 g }	 |                     ¦   «         }	|	€�nÞt          j
        ||	¦  «        rŒ/|	d         |	d	         cxk    rd
k    rn n|                     d|	z  ¦  «         Œd ||	|¦  «        }	 ||	¦  «        }
|
d         }t          |g ¦  «        }d}|
dd…         D �]?}|�|                     |¦  «         d}Œt          j                             |¦  «        d         }|dd…         }|dd…         }|dv r|j                             |¦  «         Œu|dk    r|j                             |¦  «         Œ–|dk    ri|                     d¦  «        }|d	k    r|j                             |df¦  «         ŒÔ|j                             |d|…         ||dz   d…         f¦  «         �Œ|dk    r|j                             |¦  «         �Œ'|dk    r|j                             |¦  «         �ŒI|dk    r|j                             |¦  «         �Œk|dk    r|j                             |¦  «         �Œ�|dk    r|j                             |¦  «         �Œ¯|dk    r	|j        }�Œ¾|dk    r	|j        }�ŒÍ|dk    r	|j        }�ŒÜ|dk    r%|j                             |¦  «         |s|j        }�Œ|dv r|j                             |¦  «         �Œ'|                     d|z  ¦  «         �ŒA|                     |¦  «         �Œö	 |                     ¦   «          n# |                     ¦   «          w xY w|S )z3Reads a Setup file and returns Extension instances.r   )Úparse_makefileÚexpand_makefile_varsÚ_variable_rx)ÚTextFile)Úsplit_quotedé   )Ústrip_commentsÚskip_blanksÚ
join_linesÚ	lstrip_wsÚ	rstrip_wsTNéÿÿÿÿÚ*z'%s' 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 '%s')Údistutils.sysconfigr9   r:   r;   Údistutils.text_filer<   Údistutils.utilr=   ÚreadlineÚreÚmatchr*   r   ÚappendÚosÚ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Úequalss                      r   Úread_setup_filerb   Ž   sB  € ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð -Ð,Ð,Ð,Ð,Ð,Ø+Ð+Ð+Ð+Ð+Ð+ð ˆ>˜(Ñ#Ô#€Dð ˆ8�HØ#$°!ÀØ¨1ð.ñ .ô .€DðQØˆ
ðL	#Ø—=’=‘?”?ˆDØˆ|ÙÝŒx˜ dÑ+Ô+ð Øà�AŒw˜$˜rœ(Ð)Ð)Ò)Ð) cÒ)Ð)Ð)Ð)Ð)Ø—	’	Ð6¸Ñ=Ñ>Ô>Ð>Øà'Ð'¨¨dÑ3Ô3ˆDØ �L Ñ&Ô&ˆEð ˜1”XˆFÝ˜F BÑ'Ô'ˆCØ#Ðà˜a˜b˜bœ	ð 2Cñ 2C�Ø#Ð/Ø$×+Ò+¨DÑ1Ô1Ð1Ø'+Ð$Øåœ×)Ò)¨$Ñ/Ô/°Ô2�Ø˜a ˜cœ�¨T°!°"°"¬X UàÐOÐOÐOð ”K×&Ò& tÑ,Ô,Ð,Ð,Ø˜t’^�^ØÔ$×+Ò+¨EÑ2Ô2Ð2Ð2Ø˜t’^�^Ø"ŸZšZ¨™_œ_�FØ ’|�|ØÔ)×0Ò0°%¸°Ñ?Ô?Ð?Ð?àÔ)×0Ò0°%¸¸&¸´/Ø27¸¸q¹¸	¸	Ô2Bð2Dñ Eô Eð Eñ Eà˜t’^�^ØÔ$×+Ò+¨EÑ2Ô2Ð2Ñ2Ø˜t’^�^ØÔ*×1Ò1°$Ñ7Ô7Ð7Ñ7Ø˜t’^�^Ø”M×(Ò(¨Ñ/Ô/Ð/Ñ/Ø˜t’^�^ØÔ$×+Ò+¨EÑ2Ô2Ð2Ñ2Ø˜t’^�^ØÔ,×3Ò3°EÑ:Ô:Ð:Ñ:Ø˜XÒ%Ð%Ø'*Ô'?Ð$Ñ$Ø˜ZÒ'Ð'Ø'*Ô':Ð$Ñ$Ø˜\Ò)Ð)Ø'*Ô'=Ð$Ñ$Ø˜t’^�^ØÔ'×.Ò.¨tÑ4Ô4Ð4Ø ð ?Ø+.Ô+>Ð(ùØÐCÐCÐCð
 Ô%×,Ò,¨TÑ2Ô2Ð2Ñ2à—I’IÐ:¸TÑAÑBÔBÐBÑBà×Ò˜cÑ"Ô"Ð"ñYL	#ð ðV 	�
Š
‰Œˆˆøˆ�
Š
‰ŒˆˆøøøàÐs   ´K9M ÍM)r7   rO   rL   r)   r   rb   r   r   r   ú<module>rc      s{   ððð ð
 
€	€	€	Ø 	€	€	€	Ø €€€ðwð wð wð wð wñ wô wð wðtcð cð cð cð cr   