o
    uJAf}                     @  s   d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	 d dl
Zd d	lmZ d d
lmZ d dlZd dlZd dlZejrCddlmZ G dd dZG dd dejZG dd dZG dd deZG dd dZdS )    )annotations   )CMakeException)parse_generator_expressions   )mlog)version_compareNPath)	lru_cache)Environmentc                   @  s8   e Zd Zdd
dZeedddddZdddZdS )CMakeTraceLinefile_strstrlineintfuncargsT.List[str]returnNonec                 C  s&   t || _|| _| | _|| _d S N)r   _to_pathfiler   lowerr   r   )selfr   r   r   r    r   A/usr/lib/python3.10/site-packages/mesonbuild/cmake/traceparser.py__init__#   s   

zCMakeTraceLine.__init__N)maxsizer
   c                 C  s   t | S r   r	   )r   r   r   r   r   )   s   zCMakeTraceLine._to_pathc                 C  s   d}| | j| j| j| jS )NzCMake TRACE: {0}:{1} {2}({3}))formatr   r   r   r   )r   sr   r   r   __repr__.   s   zCMakeTraceLine.__repr__)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r
   r   r   )__name__
__module____qualname__r   staticmethodr   r   r"   r   r   r   r   r   "   s    
r   c                   @  s   e Zd ZU ded< ded< dS )CMakeCacheEntryr   valuer   typeN)r$   r%   r&   __annotations__r   r   r   r   r(   2   s   
 r(   c                   @  s2   e Zd Z			ddddZdddZdddZdS )CMakeTargetNFnamer   target_type
properties$T.Optional[T.Dict[str, T.List[str]]]importedbooltlineT.Optional[CMakeTraceLine]c                 C  s@   |d u ri }|| _ || _|| _|| _|| _g | _d | _d | _d S r   )r-   r*   r/   r1   r3   dependscurrent_bin_dircurrent_src_dir)r   r-   r.   r/   r1   r3   r   r   r   r   7   s   
zCMakeTarget.__init__r   c                 C  sD   d}d}| j D ]}|d|| j | 7 }q|| j| j| j|| jS )NzsCMake TARGET:
  -- name:      {}
  -- type:      {}
  -- imported:  {}
  -- properties: {{
{}     }}
  -- tline: {} z      '{}': {}
)r/   r    r-   r*   r1   r3   )r   r!   ZpropSTRir   r   r   r"   J   s
   
zCMakeTarget.__repr__r   c                 C  sR   | j sd S | j  D ]\}}dd |D | j |< tdd | j | D s&J q
d S )Nc                 S     g | ]}|  qS r   strip.0xr   r   r   
<listcomp>V       z0CMakeTarget.strip_properties.<locals>.<listcomp>c                 s  s    | ]}d |vV  qdS );Nr   r=   r   r   r   	<genexpr>W   s    z/CMakeTarget.strip_properties.<locals>.<genexpr>)r/   itemsall)r   keyvalr   r   r   strip_propertiesQ   s   zCMakeTarget.strip_properties)NFN)
r-   r   r.   r   r/   r0   r1   r2   r3   r4   r#   )r   r   )r$   r%   r&   r   r"   rH   r   r   r   r   r,   6   s    
r,   c                      s   e Zd Zd fddZ  ZS )CMakeGeneratorTargetr-   r   r   r   c                   s,   t  |di  g | _g | _g | _d | _d S )NZCUSTOM)superr   outputs_outputs_strcommandworking_dir)r   r-   	__class__r   r   r   Z   s
   
zCMakeGeneratorTarget.__init__)r-   r   r   r   )r$   r%   r&   r   __classcell__r   r   rO   r   rI   Y   s    rI   c                   @  s^  e Zd ZdedfddZdgddZdhddZdidjddZdkddZdlddZdmddZ	dnd"d#Z
dod$d%Zdpd*d+Zdqd,d-Zdqd.d/Zdqd0d1Zdqd2d3Zdidrd5d6Zdqd7d8Zdqd9d:Zdqd;d<Zdqd=d>Zdqd?d@ZdqdAdBZdqdCdDZdqdEdFZdqdGdHZdqdIdJZdsdtdRdSZdqdTdUZdqdVdWZdqdXdYZdud[d\Z dud]d^Z!dvd`daZ"dwdcddZ#dS )xCMakeTraceParserTcmake_versionr   	build_dirr
   env'Environment'
permissiver2   r   r   c                 C  s:  i | _ i | _i | _i | _t | _g | _|| _|| _|| _	d| _
|| j
 | _t|dr,dnd| _g | _g | _g | _i d| jd| jd| jd| jd	| jd
| jd| jd| jd| jd| jd| jd| jd| jd| jd| jd| j d| j!d| j"i| _#t| j	drt$j%t&'d| j	 ddd d S d S )Nzcmake_trace.txtz>=3.17json-v1humansetunsetadd_executableadd_libraryadd_custom_commandadd_custom_targetset_propertyset_target_propertiestarget_compile_definitionstarget_compile_optionstarget_include_directoriesZtarget_link_librariestarget_link_optionsadd_dependenciesmessageZmeson_ps_execute_delayed_callsZmeson_ps_reload_varsZmeson_ps_disabled_functionz<3.17.0z                CMake support for versions <3.17 is deprecated since Meson 0.62.0.
                |
                |   However, Meson was only able to find CMake a  .
                |
                |   Support for all CMake versions below 3.17.0 will be removed once
                |   newer CMake versions are more widely adopted. If you encounter
                |   any errors please try upgrading CMake to a newer version first.
            T)once)(varsvars_by_filetargetscacherZ   explicit_headerscustom_targetsrU   rW   rS   
trace_filetrace_file_pathr   trace_formaterrorsdelayed_commandsstored_commands
_cmake_set_cmake_unset_cmake_add_executable_cmake_add_library_cmake_add_custom_command_cmake_add_custom_target_cmake_set_property_cmake_set_target_properties!_cmake_target_compile_definitions_cmake_target_compile_options!_cmake_target_include_directories_cmake_target_link_libraries_cmake_target_link_options_cmake_add_dependencies_cmake_message_meson_ps_execute_delayed_calls_meson_ps_reload_vars_meson_ps_disabled_function	functionsr   deprecationtextwrapdedent)r   rS   rT   rU   rW   r   r   r   r   b   sv   	


zCMakeTraceParser.__init__r   c                 C  s@   ddgddgd}dg}|   s|d| j g7 }|| j | S )Nz--tracez--trace-expandz--trace-format=json-v1)rY   rX   z--no-warn-unused-cliz--trace-redirect=)requires_stderrro   rq   )r   Zarg_map	base_argsr   r   r   
trace_args   s   zCMakeTraceParser.trace_argsc                 C  s   t | jdS )Nz<3.16)r   rS   r   r   r   r   r      s   z CMakeTraceParser.requires_stderrNtraceT.Optional[str]c           
        sr     s jjs j std jd jjddd}|s$tdd } jdkr1 |}n jdkr< |}n	td	 j d
|D ]}|j	 j
v rX  j|g7  _qG j|j	d }|rf|| qG fdd fdd}fdd j D  _fdd j D  _ fdd jD  _fdd j D  _ j D ]6 fddtj d_tj d_jd urևfddj D nd _j_q jD ]E}||j|_|j}fdd|jD |_t|j|D ]\}}	|d dkrtd|	d q |j d ur&t!tt"|j  nd |_ q j D ]#  q/d S )NzCMake: Trace file "z" not foundignorezutf-8)rr   encodingz3CMake: The CMake trace was not provided or is emptyrY   rX   z,CMake: Internal error: Invalid trace format z. Expected [human, json-v1]c                   s   | rt d|  dS g S NrB   r   joinsplitstrlistr   r   r   <lambda>       z(CMakeTraceParser.parse.<locals>.<lambda>c                   s(   | rdd t d|  dD S g S )Nc                 S  s   g | ]}t |qS r   r	   r=   r   r   r   r@      rA   z<CMakeTraceParser.parse.<locals>.<lambda>.<locals>.<listcomp>rB   r   r   r   r   r   r      s   ( c                      i | ]	\}}| |qS r   r   r>   kvstrlist_genr   r   
<dictcomp>       z*CMakeTraceParser.parse.<locals>.<dictcomp>c                   s(   i | ]\}}| fd d|  D qS )c                   r   r   r   r   r   r   r   r      r   z5CMakeTraceParser.parse.<locals>.<dictcomp>.<dictcomp>)rD   )r>   pdr   r   r   r      s    c                   s   h | ]}t tt| qS r   )r
   r   r   r=   r   r   r   	<setcomp>   r   z)CMakeTraceParser.parse.<locals>.<setcomp>c                   s$   i | ]\}}|t  |j|jqS r   )r(   r)   r*   r   r   r   r   r      s    c                   s"   | rt d|  |ddS g S )NrB   Zcontext_tgtr   )r   tr   r   r   r         " r   c                   s   i | ]
\}}|| qS r   r   r   )tgttgtlist_genr   r   r      s    c                   s   g | ]} |qS r   r   r=   r   r   r   r@      rA   z*CMakeTraceParser.parse.<locals>.<listcomp>r   r8   zdWe evaluated the cmake variable '{}' to an empty string, which is not a valid path to an executable.)$r   rp   existsis_filer   	read_textrq   _lex_trace_human_lex_trace_jsonr   rs   rt   r   getri   rD   rj   rm   rl   rk   valuesr   r-   r*   r/   r5   rn   rL   rK   rM   zipr    rN   r
   r   rH   )
r   r   Zlexer1lfnZpathlist_genctgttemprM   srcr   )r   r   r   r   r   parse   sn   





(zCMakeTraceParser.parsevar_listc                 C  s&   |D ]}|| j v r| j |   S qg S r   ri   )r   r   r9   r   r   r   get_first_cmake_var_of   s
   
z'CMakeTraceParser.get_first_cmake_var_ofvarc                 C  s   || j v r
| j | S g S r   r   r   r   r   r   r   get_cmake_var   s   

zCMakeTraceParser.get_cmake_varc                 C  s&   || j v r| j | r| j | d S d S )Nr   r   r   r   r   r   
var_to_str  s   zCMakeTraceParser.var_to_strexprT.Union[str, T.List[str]]c                 C  s<   |sdS t |tr|d }n|}| }|dvo|d S )NFr   )0OFFNOFALSENZIGNOREZNOTFOUND)
isinstancelistupperendswith)r   r   Zexpr_strr   r   r   _str_to_bool  s   

zCMakeTraceParser._str_to_boolc                 C  s   |  | j|g S r   )r   ri   r   r   r   r   r   var_to_bool     zCMakeTraceParser.var_to_boolfunctionerrorr3   r   c                 C  s@   | j rtd| d| d|  d S td| d| d| )NzCMake trace warning: z() 
zCMake: )rW   r   debugr   )r   r   r   r3   r   r   r   _gen_exception  s   zCMakeTraceParser._gen_exceptionc           	   	   C  s  d}d|j v }z|j d}|j |d  }W n ttfy!   Y nw g }|j D ]}|r/|dkr0q'|dkr6 n|| q't|dk rI| dd|S |d}d	|}|rg|| j	vs\|rgt
|d
|| j	|< |sv|| jv rt| j|= dS dS |d
| j|< |d
| j|ji |< dS )a[  Handler for the CMake set() function in all varieties.

        comes in three flavors:
        set(<var> <value> [PARENT_SCOPE])
        set(<var> <value> CACHE <type> <docstring> [FORCE])
        set(ENV{<var>} <value>)

        We don't support the ENV variant, and any uses of it will be ignored
        silently. the other two variates are supported, with some caveats:
        - we don't properly handle scoping, so calls to set() inside a
          function without PARENT_SCOPE set could incorrectly shadow the
          outer scope.
        - We don't honor the type of CACHE arguments
        NZFORCEZCACHEr   ZPARENT_SCOPErZ   requires at least one argumentr    rB   )r   index
ValueError
IndexErrorappendlenr   popr   rl   r(   r   ri   rj   
setdefaultr   )	r   r3   Z
cache_typeZcache_forceZ	cache_idxr   r9   
identifierr)   r   r   r   ru   "  s8   




zCMakeTraceParser._cmake_setc                 C  sB   t |jdk r| dd|S |jd | jv r| j|jd = d S d S )Nr   r[   r   r   )r   r   r   ri   r   r3   r   r   r   rv   _  s
   zCMakeTraceParser._cmake_unsetc                 C  sl   t |j}d}d|vr| dd|S |d t|dk r$| dd|S t|d di ||d	| j|d < d S )
NTIMPORTEDr\   z*non imported executables are not supportedr   requires at least 1 argumentr   
EXECUTABLEr3   r1   )r   r   r   remover   r,   rk   )r   r3   r   Zis_importedr   r   r   rw   g  s   

$z&CMakeTraceParser._cmake_add_executablec                 C  sB  t |j}d|v r/|d t|dk r| dd|S t|d di |d|v d| j|d < d S d|v rY|d t|dk rE| dd	|S t|d |d i |d
d| j|d < d S d|v r|d t|dk ro| dd	|S t|d dd|d gi|d| j|d < d S d|v r| dd|S t|d di |d| j|d < d S )N	INTERFACEr   r]   z$interface library name not specifiedr   r   r   r   zrequires at least 2 argumentsTZALIASINTERFACE_LINK_LIBRARIES)r3   ZOBJECTz"OBJECT libraries are not supportedZNORMAL)r   r   r   r   r   r,   rk   r   r3   r   r   r   r   rx   w  s&   

(
(
,"z#CMakeTraceParser._cmake_add_libraryr-   c                   s    t|j}|s dd|S |d dkr dd|S g d}t|}ddd}ddd}ddd}d dfdd}	d }
|D ]6}||v ro|dkrO|}
n|dkrV|}
n|dkr]|	}
n|dkrl|}
| jg g7  _nd }
qB|
d urx|
|| qB d} d}rtnd |_|rt|nd |_	|rt|nd |_
 |j|_ |j|_ fdd|jD |_  j|g7  _|r| j|< d S d S )Nr^   r   r   TARGETz(TARGET syntax is currently not supported)OUTPUTCOMMANDZMAIN_DEPENDENCYDEPENDSZ
BYPRODUCTSZIMPLICIT_DEPENDSWORKING_DIRECTORYCOMMENTDEPFILEZJOB_POOLZVERBATIMAPPENDZUSES_TERMINALZCOMMAND_EXPAND_LISTSrF   r   targetrI   r   r   c                 S     | j | g7  _ d S r   )rL   rF   r   r   r   r   handle_output  r   zACMakeTraceParser._cmake_add_custom_command.<locals>.handle_outputc                 S  s$   | dkrd S |j d  | g7  < d S )NARGS)rM   r   r   r   r   handle_command  s   zBCMakeTraceParser._cmake_add_custom_command.<locals>.handle_commandc                 S  r   r   )r5   r   r   r   r   handle_depends  r   zBCMakeTraceParser._cmake_add_custom_command.<locals>.handle_dependsc                   s$    d u r|  d S  d7   | 7  d S )Nr   r   r   )rN   r   r   handle_working_dir  s   zFCMakeTraceParser._cmake_add_custom_command.<locals>.handle_working_dirr   r   r   r   !MESON_PS_CMAKE_CURRENT_BINARY_DIR!MESON_PS_CMAKE_CURRENT_SOURCE_DIRc                   s   g | ]}  |qS r   )_guess_filesr=   r   r   r   r@     s    z>CMakeTraceParser._cmake_add_custom_command.<locals>.<listcomp>)rF   r   r   rI   r   r   )_flatten_argsr   r   r   rI   rM   r   r
   rN   r6   r7   r   rL   r5   rn   rk   )r   r3   r-   r   Z
magic_keysr   r   r   r   r   r   r9   Zcbinary_dirZcsource_dirr   )r   rN   r   ry     sR   





z*CMakeTraceParser._cmake_add_custom_commandc                 C  s2   t |jdk r| dd|S | ||jd  d S )Nr   r_   r   r   )r   r   r   ry   r   r   r   r   rz     s   z)CMakeTraceParser._cmake_add_custom_targetc           
        s$  t j}|d}d g }|r*|d}|dv rd q|dkr!n	||d7 }|s|s3ddS t|d	kr;d S |djd
krNd|dndd |D sYd S d fdd}dfdd}|dkr||D ]}|| qsd S |dkr|}	|	D ]}|| qd S d S )Nr   F>   ZAPPEND_STRINGr   TZPROPERTYrB   r`   zfailed to parse argument listr   rY   r   c                 S  s    g | ]}| d D ]}|q	qS )rB   r   )r>   r?   yr   r   r   r@   
  s     z8CMakeTraceParser._cmake_set_property.<locals>.<listcomp>r   r   r   r   c                   sf   | j vrdd|  dS j |  }|jvrg |j<  r,|j  7  < d S |j< d S )Nr`   TARGET 
 not found)rk   r   r/   )r   r   r   r   r   r3   r)   r   r   	do_target  s   



z7CMakeTraceParser._cmake_set_property.<locals>.do_targetr   c                   sh    dks	 sd S d}|sttd d}t|}t| }| s,|| }j	| d S )NZHEADER_FILE_ONLYr   z                    CMake trace: set_property(SOURCE) called before the preload script was loaded.
                    Unable to determine CMAKE_CURRENT_SOURCE_DIR. This can lead to build errors.
                .)
r   r   r   warningr   r   r
   is_absoluterm   add)r   r7   Zcur_pZsrc_p)r   r   r)   r   r   	do_source  s   
z7CMakeTraceParser._cmake_set_property.<locals>.do_sourcer   ZSOURCE)r   r   r   r   )r   r   r   r   )	r   r   r   r   r   r   rq   r   r   )
r   r3   r   scoperk   currr   r  r9   filesr   r   r   r{     sF   







z$CMakeTraceParser._cmake_set_propertyc                 C  s<  t |j}g }|r|d}|dkrn|| |s	g }| jdkr`|d}g }td}|D ] }	||	rJ|rE||d|	df |	}g }q/||	 q/|r_||d|	df ndd t
|d d d	 |d
d d	 D }|D ]%\}}
|D ]}|| jvr| dd| d|    S |
| j| j|< q|qvd S )Nr   Z
PROPERTIESrY   z	^[A-Z_]+$r   rB   c                 S  s"   g | ]}|d  |d  dfqS )r   r   rB   r   r=   r   r   r   r@   b  r   zACMakeTraceParser._cmake_set_target_properties.<locals>.<listcomp>r   r   ra   r   r   )r   r   r   r   rq   recompilematchr   r   r   rk   r   r/   )r   r3   r   rk   r  arglistr-   r   Z
prop_regexar)   r9   r   r   r   r|   6  s>   






(
z-CMakeTraceParser._cmake_set_target_propertiesc                 C  sp   t |j}t|dk r| dd|S | j|d }|s#| dd|S |dd  D ]}| j|d7  _q)d S )Nr   rf   ztakes at least 2 argumentsr   ztarget not foundr   rB   )r   r   r   r   rk   r   r5   r   )r   r3   r   r   r9   r   r   r   r   k  s   
z(CMakeTraceParser._cmake_add_dependenciesc                 C     |  ddd| d S )Nrb   ZCOMPILE_DEFINITIONSZINTERFACE_COMPILE_DEFINITIONS_parse_common_target_optionsr   r   r   r   r}   y     z2CMakeTraceParser._cmake_target_compile_definitionsc                 C  r  )Nrc   ZCOMPILE_OPTIONSZINTERFACE_COMPILE_OPTIONSr  r   r   r   r   r~   }  r  z.CMakeTraceParser._cmake_target_compile_optionsc                 C  s   | j ddd|ddgdd d S )Nrd   INCLUDE_DIRECTORIESZINTERFACE_INCLUDE_DIRECTORIESSYSTEMBEFORET)r   pathsr  r   r   r   r   r     s   z2CMakeTraceParser._cmake_target_include_directoriesc                 C  r  )Nre   ZLINK_OPTIONSZINTERFACE_LINK_OPTIONSr  r   r   r   r   r     r  z+CMakeTraceParser._cmake_target_link_optionsc                 C  r  )Nre   ZLINK_LIBRARIESr   r  r   r   r   r   r     r  z-CMakeTraceParser._cmake_target_link_librariesc                 C  s^   t |j}t|dk r| dd|S |d   dvrd S |  jd|dd  g7  _d S )Nr   rg   ztakes at least 1 argumentr   )ZFATAL_ERRORZ
SEND_ERRORr   )r   r   r   r   r   r<   rr   r   r   r   r   r   r     s   
"zCMakeTraceParser._cmake_messageFr   private_propinterface_propr   T.Optional[T.List[str]]r  c                 C  sR  |d u rdg}t |j}t|dk r| |d|S |d }|| jvr-| |d| d|S g }	g }
d}|dd  D ]$}||v r@q9|dv rG|}q9|d	v rR|	|d
7 }	|dv r]|
|d
7 }
q9|rj| |	}	| |
}
dd |	D }	dd |
D }
||
f||	ffD ]&}|d | j| jvrg | j| j|d < | j| j|d   |d 7  < qd S )Nr  r   r   r   r   r   PUBLIC>   r   PRIVATELINK_PRIVATELINK_PUBLICr  LINK_INTERFACE_LIBRARIES>   r  r  r  r   rB   >   r  r  r  c                 S     g | ]}|r|qS r   r   r=   r   r   r   r@     rA   zACMakeTraceParser._parse_common_target_options.<locals>.<listcomp>c                 S  r  r   r   r=   r   r   r   r@     rA   )r   r   r   r   rk   r   r   r/   )r   r   r  r  r3   r   r  r   r   Z	interfaceZprivatemoder9   jr   r   r   r    s@   



"z-CMakeTraceParser._parse_common_target_optionsc                 C  s2   | j D ]}| j|jd }|r|| qg | _ d S r   )rt   r   r   r   )r   r3   r   r   r   r   r   r     s   

z0CMakeTraceParser._meson_ps_execute_delayed_callsc                 C  s   |  d| _d S )NMESON_PS_DELAYED_CALLS)r   rs   r   r   r   r   r     s   z&CMakeTraceParser._meson_ps_reload_varsc                 C  s6   t |j}|std d S td|d  d d S )Nz_Invalid preload.cmake script! At least one argument to `meson_ps_disabled_function` is expectedzThe CMake function "r   z8" was disabled to avoid compatibility issues with Meson.)r   r   r   r   r  r   r   r   r   r     s
   

z,CMakeTraceParser._meson_ps_disabled_function'T.Generator[CMakeTraceLine, None, None]c                 c  s    t dt j}t d}d}|t|k rl|||}|s6|||}|s1t||d   td| }q| }|d}|d}|d}	|d}
|
	d	}d
d |D }t
|t||	|V  |t|k sd S d S )Nz>\s*(.*\.(cmake|txt))\(([0-9]+)\):\s*(\w+)\(([\s\S]*?) ?\)\s*\nz[^\n]*\nr   zFailed to parse CMake tracer            r   c                 S  r:   r   r;   )r>   r  r   r   r   r@     rA   z5CMakeTraceParser._lex_trace_human.<locals>.<listcomp>)r	  r
  	MULTILINEr   r  printr   endgroupr   r   r   )r   r   Z	reg_tlineZ	reg_otherlocZmo_file_lineZ
skip_matchr   r   r   r   Zarglr   r   r   r     s,   





z!CMakeTraceParser._lex_trace_humanc                 c  s    |j dd}|d |D ]I}t|}t|d tsJ t|d ts'J t|d ts0J t|d ts9J |d }|D ]	}t|tsHJ q?t|d |d |d |V  qd S )NF)keependsr   r   r   cmdr   )	
splitlinesr   jsonloadsr   r   r   r   r   )r   r   linesr9   datar   r   r   r   r   r     s   

z CMakeTraceParser._lex_trace_jsonr   c                 C  s    g }|D ]	}|| d7 }q|S r   r   )r   r   resr9   r   r   r   r     s   zCMakeTraceParser._flatten_argsbroken_listc                 C  s  | j dkr|S td}td}g }d }d}|D ]j}|d u r$|}d}qt| r4||g7 }|}d}q||sC||g7 }|}d}q||rY| d| }||g7 }d }d}qt| d|  rn| d| }d}q|rz||g7 }|}d}q| d| }d}q|r||g7 }|S )NrY   z^([A-Za-z]:)?/(.*/)*[^./]+$z^.*\.[a-zA-Z]+$Fr   T)rq   r	  r
  r
   r   r  r   )r   r3  Z	reg_startZreg_endZ
fixed_listZcurr_strZ
path_foundr9   r   r   r   r     sH   









zCMakeTraceParser._guess_files)T)
rS   r   rT   r
   rU   rV   rW   r2   r   r   )r   r   )r   r2   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r2   )r   r   r   r2   )r   r   r   r   r3   r   r   r   )r3   r   r   r   )r3   r   r-   r   r   r   )NF)r   r   r  r   r  r   r3   r   r   r  r  r2   r   r   )r   r   r   r"  )r   r   r   r   )r3  r   r   r   )$r$   r%   r&   r   r   r   r   r   r   r   r   r   r   ru   rv   rw   rx   ry   rz   r{   r|   r   r}   r~   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   rR   a   sD    
?

H







=

"
H
	
L
5






,
	



rR   )
__future__r   commonr   	generatorr   r8   r   mesonlibr   typingTpathlibr
   	functoolsr   r	  r.  r   TYPE_CHECKINGenvironmentr   r   
NamedTupler(   r,   rI   rR   r   r   r   r   <module>   s$   #