o
    g!)                     @   s4   	 d dl Z d dlZd dlZG dd dZdd ZdS )    Nc                   @   s<   e Zd Z	 														dddZdd ZdS )	ExtensionNc                 K   s  t |ts	tdt |trtdd |D std|| _|| _|p$g | _|p)g | _|p.g | _	|p3g | _
|p8g | _|p=g | _|	pBg | _|
pGg | _|pLg | _|pQg | _|pVg | _|p[g | _|| _|| _t|dkrdd |D }dt|}d	| }t| d S d S )
Nz'name' must be a stringc                 s   s    | ]}t |tV  qd S )N)
isinstancestr).0v r   I/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/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S r   )repr)r   Zoptionr   r   r   
<listcomp>   s    z&Extension.__init__.<locals>.<listcomp>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msgr   r   r   __init__W   s8   













zExtension.__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   zExtension.__repr__)NNNNNNNNNNNNNN)__name__r*   r+   r(   r-   r   r   r   r   r      s$    C
/r   c                 C   s  	 ddl m}m}m} ddlm} ddlm} || }|| dddddd}z-g }	 | }	|	d u r4qMt	
||	r;q)|	d |	d   krId	krSn n|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|  qm|| q*W |  |S |  w )Nr   )parse_makefileexpand_makefile_vars_variable_rx)TextFile)split_quoted   )Zstrip_commentsZskip_blanksZ
join_linesZ	lstrip_wsZ	rstrip_wsT*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')Zdistutils.sysconfigr/   r0   r1   Zdistutils.text_filer2   Zdistutils.utilr3   readlinerematchr#   r   appendospathsplitextr   r   findr   r   r   r   r   r   r   r   close)filenamer/   r0   r1   r2   r3   varsfile
extensionslinewordsmoduleextZappend_next_wordZwordsuffixZswitchvalueZequalsr   r   r   read_setup_file   s    










K
rL   )r=   r:   r"   r   rL   r   r   r   r   <module>   s    z