
    n&ph+                    J    S r SSKJr  SSKrSSKrSSKJr   " S S5      rS rg)zmdistutils.extension

Provides the Extension class, used to describe C/C++ extension
modules in setup scripts.    )annotationsN)Iterablec                      \ rS rSrSr              S                               SS jjrS rSrg)		Extension   a  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 : Iterable[string | os.PathLike]
    iterable of source filenames (except strings, which could be misinterpreted
    as a single filename), relative to the distribution root (where the setup
    script lives), in Unix form (slash-separated) for portability. Can be any
    non-string iterable (list, tuple, set, etc.) containing strings or
    PathLike objects. 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                x   [        U[        5      (       d  [        S5      e[        U[        5      (       a  [        S5      e [        [	        [
        R                  U5      5      U l        Xl        U=(       d    / U l	        U=(       d    / U l
        U=(       d    / U l        U=(       d    / U l        U=(       d    / U l        U=(       d    / U l        U	=(       d    / U l        U
=(       d    / U l        U=(       d    / U l        U=(       d    / U l        U=(       d    / U l        U=(       d    / U l        Xl        UU l        [/        U5      S:  aQ  U Vs/ s H  n[1        U5      PM     nnSR3                  [5        U5      5      nSU 3n[6        R8                  " U5        g g ! [         a    [        S5      ef = fs  snf )Nz'name' must be a stringzJ'sources' must be an iterable of strings or PathLike objects, not a stringz<'sources' must be an iterable of strings or PathLike objectsr   z, zUnknown Extension options: )
isinstancestr	TypeErrorlistmaposfspathsourcesname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reprjoinsortedwarningswarn)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   kwoptionoptionsmsgs                        R/var/www/html/venv/lib/python3.13/site-packages/setuptools/_distutils/extension.py__init__Extension.__init__\   sz   ( $$$566 gs##\ 
	BIIw 78DL 	(.B*0b(.B(.B"b$8$>B!*0b"4":.4",2"b}"   r7Q;245"tF|"G5iiw0G/y9CMM#	 -  	N 	. 6s   (F F7F4c           
         SU R                   R                   SU R                   R                   SU R                  < S[	        U 5      S S3	$ )N<.(z) at z#x>)	__class__
__module____qualname__r   id)r&   s    r+   __repr__Extension.__repr__   sJ    4>>,,-Qt~~/J/J.K1TYYMY^_abf_ghj^kklmm    )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NNNNNNNNNNNNNN) r   r
   r   z Iterable[str | os.PathLike[str]]r   list[str] | Noner   z#list[tuple[str, str | None]] | Noner   r:   r   r:   r   r:   r   r:   r   r:   r   r:   r   r:   r   r:   r   r:   r   r:   r   z
str | Noner   zbool | None)__name__r4   r5   __firstlineno____doc__r,   r7   __static_attributes__ r9   r+   r   r      s    @P *.=A)-)-&*15*./3,0+/&*$(# $#:: 2: '	:
 ;: ': ': $: /: (: -: *: ): $: ":  !:" #:xnr9   r   c           	        SSK JnJnJn  SSKJn  SSKJn  U" U 5      nU" U SSSSSS9n / n UR                  5       n	U	c  GOUR                  U	5      (       a  M.  U	S   U	S   s=:X  a  S	:X  a  O  OUR                  S
U	 S35        M[  U" X5      n	U" U	5      n
U
S   n[        U/ 5      nSnU
SS  GHX  nUb  UR                  U5        SnM  [        R                  R                  U5      S   nUSS nUSS nUS;   a  UR                   R                  U5        Mk  US:X  a  UR"                  R                  U5        M  US:X  a^  UR%                  S5      nUS:X  a  UR&                  R                  US45        M  UR&                  R                  USU UUS-   S 45        M  US:X  a  UR(                  R                  U5        GM  US:X  a  UR*                  R                  U5        GM:  US:X  a  UR,                  R                  U5        GM^  US:X  a  UR.                  R                  U5        GM  US:X  a  UR0                  R                  U5        GM  US:X  a  UR0                  nGM  US:X  a  UR2                  nGM  US:X  a  UR*                  nGM  US:X  a4  UR2                  R                  U5        U(       d  UR2                  nGM  GM  US;   a  UR4                  R                  U5        GMC  UR                  SU S
35        GM[     UR                  U5        GM  UR7                  5         U$ ! UR7                  5         f = f)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.sysconfigrA   rB   rC   distutils.text_filerD   distutils.utilrE   readlinematchr%   r   appendr   pathsplitextr   r   findr   r   r   r   r   r   r   r   close)filenamerA   rB   rC   rD   rE   varsfile
extensionslinewordsmoduleextappend_next_wordwordsuffixswitchvalueequalss                      r+   read_setup_fileri      s   VV,+ (#D DQ
==?D|!!$''Aw$r()c)		AdV#:;<'3D &E 1XFFB'C#ab	#/$++D1'+$))$/2aQROO KK&&t,t^$$++E2t^"ZZ_F|))00%?))00%&/5RSCV1WXt^$$++E2t^**11$7t^MM((/t^$$++E2t^,,33E:X%'*'?'?$Z''*':':$\)'*'='=$t^''..t4 +.+>+>( !CC
 %%,,T2II 7vQ?@e "h c"Y \ 	

 	

s   K6L3 3M)	r=   
__future__r   r   r$   collections.abcr   r   ri   r?   r9   r+   <module>rl      s-   
 # 	  $Bn BnJfr9   