
    ϶vgv(                     :    d 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 | 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                    t          |t                    st          d          t          |t                    rt	          d |D                       st          d          || _        t          t          t          j        |                    | _	        |pg | _
        |pg | _        |pg | _        |pg | _        |pg | _        |pg | _        |	pg | _        |
pg | _        |pg | _        |pg | _        |pg | _        |pg | _        || _        || _        t1          |          dk    rId |D             }d                    t5          |                    }d| }t7          j        |           d S d S )Nz'name' must be a stringc              3   X   K   | ]%}t          |t          t          j        f          V  &d S )N)
isinstancestrosPathLike).0vs     \/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_distutils/extension.py	<genexpr>z%Extension.__init__.<locals>.<genexpr>o   s3      GG!Jq3"455GGGGGG    z8'sources' must be a list of strings or PathLike objects.r   c                 ,    g | ]}t          |          S  )repr)r   options     r   
<listcomp>z&Extension.__init__.<locals>.<listcomp>   s    555tF||555r   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msgs                       r   __init__zExtension.__init__W   s   ( $$$ 	< !:;;;w%%	GGwGGGGG	 !J   	C	73344(.B*0b(.B(.B"b$8$>B!*0b"4":.4",2"b}"   r77Q;;55"555Giiw00G999CM#	 ;r   c           
      n    d| j         j         d| j         j         d| j        dt	          |           dd	S )N<.(z) at z#x>)	__class__
__module____qualname__r   id)r/   s    r   __repr__zExtension.__repr__   sD    m4>,mmt~/JmmTYmm_abf_g_gmmmmmr   )NNNNNNNNNNNNNN)__name__r:   r;   __doc__r3   r=   r   r   r   r   r      st        > >L !#4 4 4 4ln n n n nr   r   c                    ddl m}m}m} ddlm} ddlm}  ||           } || ddddd          }	 g }	 |                                }	|	n|	                    |	          r/|	d         |	d         cxk    rd	k    rn n|
                    d
|	 d           e ||	|          }	 ||	          }
|
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| d
           B|                    |           	 |                                 n# |                                 w xY w|S )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      s0   VVVVVVVVVV,,,,,,++++++ >(##D 8  DQ
L	#==??D|!!$'' Aw$r())))c)))))		;d;;;<<<''d33D L&&E 1XFFB''C#abb	 2A 2A#/$++D111'+$))$//2acQRROOO K&&t,,,,t^^$++E2222t^^"ZZ__F||)00%????)00%&/5RSCV1WXXXXt^^$++E2222t^^*11$7777t^^M((////t^^$++E2222t^^,33E::::X%%'*'?$$Z'''*':$$\))'*'=$$t^^'..t444  ?+.+>(CCC
 %,,T2222II????@@@@c"""YL	# V 	



s   K;M M)r?   r	   r-   r   ri   r   r   r   <module>rj      sz    
 
			 zn zn zn zn zn zn zn znzf f f f fr   