
    Ng                        d dl mZmZ d dlZddlmZ d dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dl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 n# e$ r	 d dlmZ Y nw xY w	 d dlZej        Zd	Zn# e$ r eZd
ZY nw xY w	 d dlZej        Z n# e$ r
 ej!        Z Y nw xY w	 d dl"Z"n	#  dZ"Y nxY wddlm#Z# ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2  e$e	j3        j4                  Z5 e$e(          Z6 e$e'          Z7ej8        d          dk     r$ ej9                    Z:e: ej;                    Z:d Z<nd Z<e=Z>d=dZ?d Z@d>dZAe$d             ZBd ZCd ZD eE            ZF eE            ZG eE            ZHe=eIeIeIeGeGeGeGeIeGeGeIeGeFeHdZJd ZK ejL        ejM        ejM                  d             ZN G d deE          ZO ejL        ejM        ejM        ejM        ejM        ejM        ejM        ejM        ejM        ejM         	  	        d?d"            ZP ejQ        d#ejR                  ZS ejQ        d$ejR                  ZTd% ZUe$d&             ZVd' ZWe$d(             ZXe$d)             ZYe$d*             ZZe$d+             Z[ G d, d-eE          Z\da]d@d/Z^d0 Z_	 	 dAd1Z`	 	 dBd2Zad3 Zbe	jc        d                    d4          re	jc        d4         Zed5 Zfnd6 Zfef	 	 	 	 dCd8            Zgd9 Zhd: ZidDd<ZjdS )E    )absolute_importprint_functionN   )__version__)iglob)open)relpath)Iterablez.gz )Utils)cached_functioncached_methodpath_existssafe_makedirscopy_file_to_dir_if_neweris_package_dirwrite_depfile)Errors)Context)CompilationOptionsdefault_optionsget_directive_defaults   c                 d    t          | t                    s|                     t                    S | S N)
isinstancebytesencode_fs_encodingfilenames    U/var/www/html/ai-engine/env/lib/python3.11/site-packages/Cython/Build/Dependencies.pyencode_filename_in_py2r#   ;   s+    (E** 	1??<000    c                     | S r    r    s    r"   r#   r#   @   s    r$   c                     st          j                    d         t           j        j        k    rt           j        j        z  fd| D             S )Nc                 ^    g | ])}|                               rt          |          n|*S r&   )
startswith_relpath).0pathbases     r"   
<listcomp>z"_make_relative.<locals>.<listcomp>J   sI     $ $ $ %)OOD$9$9CHT4   t $ $ $r$   )osgetcwdr-   sep)
file_pathsr.   s    `r"   _make_relativer4   E   sb     y{{Bx27;$ $ $ $"$ $ $ $r$   c           	   #     K   d| v ret          j        d|           }|rN|                                \  }}}|                    d          D ]}t	          ||z   |z             D ]}|V  d S d| v st
          j        dk    rd| v rt                      }t          j        dt
          j        dk    rdnd	z  | d
          \  }}	|rt          |t
          j        z             }ndg}|D ]~}
t	          t          |
|	                    D ]}||vr|
                    |           |V   t	          t          |
dd|	                    D ]}||vr|
                    |           |V   d S t          |           D ]}|V  d S )N{z(.*){([^}]+)}(.*),z**/\z**\z\*\*[%s]z/\\/   r   *z**)rematchgroupssplitextended_iglobr0   r2   setr   	join_pathadd)patternmbeforeswitchaftercaser-   seenfirstrestroots              r"   r@   r@   N   s     
g~~H('22 	$%HHJJ!FFES))  *6D=5+@AA  DJJJJF 26T>>f.?.?uuh{4ggSQSZ\]^^t 	%"&.))EEDE 	 	D&yt'<'<==  t##HHTNNNJJJ&ysD$'G'GHH  t##HHTNNNJJJ	 	 'NN 	 	DJJJJ	 	r$   expected non-empty iteratorc              #   F   K   d}| D ]}d}|V  	|rt          |          d S )NTF)
ValueError)it	error_msgemptyvalues       r"   nonemptyrU   o   sJ      E   $###$ $r$   c                    t           j                            |           }dt          |          |fz                      d          }t          j        |          }t          |d          5 }|                    d          }|r,|	                    |           |                    d          }|,d d d            n# 1 swxY w Y   |
                                S )Nz%d:%sUTF-8rbi  )r0   r-   normpathlenr   hashlibsha1r   readupdate	hexdigest)r!   r-   prefixrE   fdatas         r"   	file_hashrc   x   s    7H%%DTD))11'::FVA	dD		 !Qvve}} 	!HHTNNN66%==D  	!! ! ! ! ! ! ! ! ! ! ! ! ! ! !
 ;;==s   +AB;;B?B?c                     t           t          d          	 t           j                            d          }n.# t          $ r! t           j                                        }Y nw xY w| j                            |d                    | j                            |d                    | j                            |d                    | j	                            |d                    | j
                            |d                    | j                            |d	                    | j                            |d
                    d| _        dD ]-}	 | j                            |           # t          $ r Y *w xY wd S )NzBYou first need to install Pythran to use the np_pythran directive.T)pythoninclude_dirsextra_compile_argsextra_link_argsdefine_macrosundef_macroslibrary_dirs	librariesc++)z-fwhole-programz-fvisibility=hidden)pythranRuntimeErrorconfigmake_extension	TypeErrorrf   extendrg   rh   ri   rj   rk   rl   languageremoverP   )extpythran_ext
bad_options      r"   update_pythran_extensionry      s   _```6n3343@@ 6 6 6n33556 K7888!!+.B"CDDD{+<=>>>[9:::K7888K7888M[1222CL A  
	"))*5555 	 	 	D	 s!    9 (A$#A$E..
E;:E;c                     t          |           dk    r%| d         dk    r| d         dk    r| dd         } d}nd}t          |           \  } fd	fd
|                     |          D             S )a#  
    >>> parse_list("")
    []
    >>> parse_list("a")
    ['a']
    >>> parse_list("a b c")
    ['a', 'b', 'c']
    >>> parse_list("[a, b, c]")
    ['a', 'b', 'c']
    >>> parse_list('a " " b')
    ['a', ' ', 'b']
    >>> parse_list('[a, ",a", "a,", ",", ]')
    ['a', ',a', 'a,', ',']
    r   r   [r(   ]r:   r7    c                 d    |                                  } | d         dv r| dd                  S | S )Nr   z'"r:   r(   strip)literalliteralss    r"   unquotezparse_list.<locals>.unquote   s7    --//1:GAbDM**Nr$   c                 N    g | ]!}|                                  |          "S r&   r   )r,   itemr   s     r"   r/   zparse_list.<locals>.<listcomp>   s.    IIIdDJJLLIGGDMMIIIr$   )rZ   strip_string_literalsr?   )s	delimiterr   r   s     @@r"   
parse_listr      s     1vv{{qts{{qu||adG			'**KAx     JIIIaggi&8&8IIIIr$   )namesourcesri   rj   rl   rk   runtime_library_dirsrf   extra_objectsrg   rh   export_symbolsdependsrt   
np_pythranc                     | dk    rdS | dk    rdS dd l }|                    dt                     |                                 } | dv rdS | d	v rdS t	          d
|           )NTrueTFalseFr   z1The 'np_python' option requires 'True' or 'False')category)yyesttrueon1)nnora   falseoff0zinvalid truth value )warningswarnDeprecationWarninglowerrP   )valr   s     r"   _legacy_strtoboolr      s    
f}}t	uOOOMMEPbMccc
))++C
222t	5	5	5ujSS:;;;r$   )startendc              #      K   t          | t                    r?d}	 |                     d|          }|dk    r| |d          V  d S | ||         V  |dz   }<| D ]}|V  d S )Nr   T
r(   r:   )r   
basestringfind)sourcer   r   lines       r"   	line_iterr      s      &*%% 	++dE**CbyyUVVn$$$s####EE	  	 	DJJJJ	 	r$   c                   (    e Zd ZddZd Zd Zd ZdS )DistutilsInfoNc                    i | _         |4t          |          D ]!                                sd         dk    r d S dd                                          t          fddD             d           }|d t	          |          d                              d          D             \  }}}t                              |d           }                    d          r||t          t          fv r!t          |          }|d	k    rd
 |D             }|t          u rt          |          }|| j         |<   #d S |,t          D ]&}|dv rt          ||d           }|r
|| j         |<   %d S d S )Nr   #r:   c              3   F   K   | ]}                     |          |V  d S r   )r*   )r,   kr   s     r"   	<genexpr>z)DistutilsInfo.__init__.<locals>.<genexpr>  s5      WW1DOOTUDVDVWQWWWWWWr$   )z
distutils:cython:c                 6    g | ]}|                                 S r&   r   r,   r   s     r"   r/   z*DistutilsInfo.__init__.<locals>.<listcomp>  s     $X$X$X1QWWYY$X$X$Xr$   =r   ri   c                 d    g | ]-}d |v r#t          |                    d d                    n|df.S )r   r:   N)tupler?   )r,   macros     r"   r/   z*DistutilsInfo.__init__.<locals>.<listcomp>	  sS     %9 %9 %9). ),u &+5;;sA+>+>%?%?%?;@$-%9 %9 %9r$   )r   r   r   )valuesr   lstripnextrZ   	partitiondistutils_settingsgetr*   listtransitive_listr   bool_orr   getattr)	selfr   exnkindkey_rT   typer   s	           @r"   __init__zDistutilsInfo.__init__   s   !&)) - -{{}} 7c>>EEABBx((WWWW(@WWWY]^^#$X$XSYYZZ8H8R8RSV8W8W$X$X$XMCE-11#t<<Dy11LdlHo666 *5 1 1/11%9 %927%9 %9 %9E w 1% 8 8',DK$)- -* _) - -:::S$// -',DK$ _- -r$   c                    || S |j                                         D ]\  }}t          |         }|t          u r|| j         vr|| j         |<   /|t          u rI|| j         v r5| j         |         d d          }|D ]}||vr|                    |           |}|| j         |<   |t          u r&| j                             |d          |z  | j         |<   | S NF)r   itemsr   transitive_strr   appendr   r   )r   otherr   rT   r   allvs          r"   mergezDistutilsInfo.merge  s    =K,,,.. 	G 	GJC%c*D~%%#T[*@*@#(C  (($+%%+c*111-C" * *C<<JJqMMME#(C  #';??3#>#>#FC r$   c                 Z   || S t                      }| j                                        D ]~\  }}t          |         }|t          t
          fv rFg }|D ]>}||v r||         }t          |t                    r||z  })|                    |           ?|}n||v r||         }||j        |<   |S r   )r   r   r   r   r   r   r   r   )r   aliasesresolvedr   rT   r   new_value_listr   s           r"   subszDistutilsInfo.subs+  s    ?K ??+++-- 	) 	)JC%c*Do...!# 1 1AG||#AJ!!T** 1&!+&--a0000&G###ENE#(HOC  r$   c                     | j                                         D ]S\  }}t          |         }|t          t          fv r t          ||          t          |          z   }t          |||           Td S r   )r   r   r   r   r   r   setattr)r   	extensionr   rT   r   s        r"   applyzDistutilsInfo.applyA  sv    +++-- 	+ 	+JC%c*Do...	3//$u++=IsE****		+ 	+r$   NN)__name__
__module____qualname__r   r   r   r   r&   r$   r"   r   r      sV        - - - -@  (  ,+ + + + +r$   r   )	r   qsingle_qdouble_q	hash_markr   r   counter	quote_len__Pyx_Lc                    g }i }d}dx}}d}dx}x}	}
t          |           }d}d}	 ||k     r|                     d|          }|	|k     r|                     d|          }	|
|k     r|                     d|          }
t          |	|
          }|dk    rt          |	|
          }|dk    r%|dk    r|                    | |d                    n|r| |d	z
           d
k    r@d}||k    r)| ||z
           d
k    r|d	z  }||k    r| ||z
           d
k    |dz  dk    r|d	z  }| |         |k    r|d	k    s+||dz   k    r|| |d	z            cxk    r| |dz            k    run nr|d	z  }||d}| ||z   |         ||<   | |||z            }|                    |           |                    |           |                    |           ||z  }d}|}n|d	z  }nd|k    r||k     s|dk    r~|                    | ||d	z                       |                     d|          }|d	z  }||d}|dk    rd}n|}| |d	z   |         ||<   |                    |           |dk    rnk|x}}nd||dz   k    r+| |         | |d	z            cxk    r| |dz            k    rn nd}nd	}d}| |         }|                    | ||                    |}||z  }d                    |          |fS )z
    Normalizes every string literal to be of the form '__Pyx_Lxxx',
    returning the normalized code and a mapping of labels to
    string literals.
    r   Fr(   NTr   '"r:   r8   r   r   r   r   r   )rZ   r   minmaxr   join)coder`   new_coder   r   r   r   in_quoter   r   r   code_len
quote_typer   r   label
full_quoter   end_or_nones                      r"   r   r   I  s    HHGMEAH&((I(84yyHJIBq==		#q))Ia<<yya((Ha<<yya((H(##77Hh''A 77yBOODL)))  1	AaCyE!!1fface!3!3FA 1fface!3!3q5A::FAAw*$$NNx!a%'7'7J$qQRs)<`<`<`<`W[\]^_\_W`<`<`<`<`<`1#)67773"&uYq'8"9!!AiK-0

+++&&&
+++Y Q 9__)a--177OODy{!23444))D),,CqLG%vwww/Ebyy"!"9Q;{#:;HUOOOE"""byyOEAA 1Q3DGtAaCy$E$E$E$ED1I$E$E$E$E$E			HaJOODqM***ENAEBH 778h&&r$   z(?:^\s*from +([0-9a-zA-Z_.]+) +cimport)|(?:^\s*cimport +([0-9a-zA-Z_.]+(?: *, *[0-9a-zA-Z_.]+)*))|(?:^\s*cdef +extern +from +['\"]([^'\"]+)['\"])|(?:^\s*include +['\"]([^'\"]+)['\"])zC(?:^\s+\(([0-9a-zA-Z_., ]*)\)[#\n])|(?:^\s+([0-9a-zA-Z_., ]*)[#\n])c                     t          t          j                            |           t	          t          |                              S r   )normalize_existing0r0   r-   dirnamer   rA   )	base_path	rel_pathss     r"   normalize_existingr     s.    rwy995Y;P;PQQQr$   c                 X   g }d}|D ]}t           j                            |          r|                    |           7t	          | |          }t          |          r5|                    t           j                            |                     | }|                    |           ||fS )a  
    Given some base directory ``base_dir`` and a list of path names
    ``rel_paths``, normalize each relative path name ``rel`` by
    replacing it by ``os.path.join(base, rel)`` if that file exists.

    Return a couple ``(normalized, needed_base)`` where ``normalized``
    if the list of normalized file names and ``needed_base`` is
    ``base_dir`` if we actually needed ``base_dir``. If no paths were
    changed (for example, if all paths were already absolute), then
    ``needed_base`` is ``None``.
    N)r0   r-   isabsr   rB   r   rY   )base_dirr   
normalizedneeded_baserelr-   s         r"   r   r     s     JK 	# 	#7== 	c"""3''t 	#bg..t44555"KKc""""$$r$   c                     t          |          }g }| D ])}t          ||          }||                    |           *|S r   )r   resolve_dependr   )r   rf   r   dependr-   s        r"   resolve_dependsr    sP    &&LH " "fl33OOD!!!Or$   c                     | d         dk    r| d         dk    rd S |D ]B}t          ||           }t          |          r!t          j                            |          c S Cd S )Nr   <r(   >)rB   r   r0   r-   rY   )r  rf   dirr-   s       r"   r  r    sx    ayCF2J#--t * *f%%t 	*7##D)))))	*4r$   c                 "   t           j                            t           j                            t	          |                               }|| k    r?t          |          r0t          |          t           j                            |          fz   S dS )Nr&   )r0   r-   r   abspathstrr   packagebasename)r!   r  s     r"   r  r    sg    
'//"'//#h--88
9
9C
h>#..s||rw//44666rr$   c                     t           j                            t           j                            |                     d         }d                    t          |           |fz             S )Nr   .)r0   r-   splitextr  r   r  )r!   modules     r"   fully_qualified_namer    sM    Wbg..x8899!<F88GH%%	1222r$   c                    t          j        | d          5 }|                                }d d d            n# 1 swxY w Y   t          |          }t	          |          \  }}|                    dd                              dd          }g }g }g }t                              |          D ]"}|                                \  }	}
}r|	                               t                              ||                                          }|rO|                                \  }}|p|}|                    fd|                    d          D                        |	r3|                    d	 |	                    d          D                        |
r|	                    ||
                    |	                    ||                    $||||fS )
Nignore)error_handlingz\
r}   	)posc              3   h   K   | ],}d                      |                                          V  -dS )z{0}.{1}N)formatr   )r,   r   cimport_froms     r"   r   z%parse_dependencies.<locals>.<genexpr>  sW        @  @$% !* 0 0qwwyy I I  @  @  @  @  @  @r$   r7   c              3   >   K   | ]}|                                 V  d S r   r   )r,   xs     r"   r   z%parse_dependencies.<locals>.<genexpr>  s*      GG!AGGIIGGGGGGr$   )r   open_source_filer]   r   r   replacedependency_regexfinditerr>   r   dependency_after_from_regexsearchr   rs   r?   )source_filenamefhr   distutils_infor   cimportsincludesexternsrE   cimport_listexternincludem_after_from	multilineone_line
subimportsr  s                   @r"   parse_dependenciesr4    s?   
 
		I	I	I R              "6**N,V44FH^^FC((00s;;F HHG&&v.. / /67hhjj3lFG 	/OOL)))6==f!%%''=RRL @&2&9&9&;&;#	8&2(
  @  @  @  @)3)9)9#)>)> @  @  @ @ @ @  	/OOGG|/A/A#/F/FGGGGGGG 	/NN8F+,,,,OOHW-....Xw66s   9= =c                       e Zd ZddZd Zed             Zed             Zd Zd Z	d Z
edd
            Zed             Zed             Zd Zed             Zd Zd Zd Zd ZddZd Zd Zd	S )DependencyTreeFc                 0    || _         || _        i | _        d S r   )contextquiet_transitive_cache)r   r8  r9  s      r"   r   zDependencyTree.__init__  s    
!#r$   c                 |    t          |          rt          j                            |          }t	          |          S r   )r   r0   r-   rY   r4  )r   r'  s     r"   r4  z!DependencyTree.parse_dependencies  s6    '' 	@ g..??O!/222r$   c                 2   t                      }|                     |          d         D ]}t          t          j                            |          |          }t          |          s| j                            ||          }|rsdt          j        j	        z   |v rt          j        
                    |          }|                    |           |                    |                     |                     | j        st          d|d|d           |S )Nr:   source_file_pathr  zUnable to locate 'z' referenced from 'r   )rA   r4  rB   r0   r-   r   r   r8  find_include_filer2   rY   rC   r^   included_filesr9  print)r   r!   r   r/  include_paths        r"   r@  zDependencyTree.included_files$  s    ee..x88; 
	[ 
	[G$RW__X%>%>HHL|,, b#|==gX`=aa [$44#%7#3#3L#A#AL%%%

4..|<<====Z [xxxQXQXQXYZZZ
r$   c                    |                      |          d d         \  }}}t          |          }t          |          }t                      }|                     |          D ]Z}|                     |          \  }}}	|                    |           |                    |           |                    |	           [t          ||          \  }}
|
r|                    |
           t          |          ||fS )Nr   )r4  rA   r@  cimports_externs_incdirsr^   r   rC   r   )r   r!   r*  r+  r,  incdirsr/  included_cimportsincluded_externsincluded_incdirsincdirs              r"   rD  z'DependencyTree.cimports_externs_incdirs6  s     '+&=&=h&G&G&K#(Gx==g,,%%**844 	- 	-GDHDaDabiDjDjA/1AOO-...NN+,,,NN+,,,,,Xw?? 	 KKX00r$   c                 8    |                      |          d         S Nr   )rD  r   r!   s     r"   r*  zDependencyTree.cimportsH  s    ,,X66q99r$   c                      t          |          S r   )r  rL  s     r"   r  zDependencyTree.packageK  s    x   r$   c                      t          |          S r   )r  rL  s     r"   r  z#DependencyTree.fully_qualified_nameN  s    #H---r$   Nc                 0   |d         dk    }|r|st          d          ||                    d          }|r|                    d           t          |                     |                    }|rN|d         sF	 |                                 n# t
          $ r Y d S w xY w|                    d           |r|d         Fd                    ||z             }| j                            ||          }|r|S |rd S | j                            ||          S )Nr   r  zNew relative imports.r=  )	NotImplementedErrorr?   popr   r  
IndexErrorr   r8  find_pxd_file)r   r  r!   is_relativemodule_pathpackage_pathrelativepxds           r"   find_pxdzDependencyTree.find_pxdQ  sU   Qi3& 	?x 	?%&=>>> ,,s++K #"""X 6 677L #k!n #  $$&&&&!      44 """  #k!n # xx{ :;;H,,,X,QQC 
 	4|))&8)LLLs   ;B 
BBc                 V   t           j                            |          \  }}|dv rt          |dz             r|dz   g}ng }|                     |          D ]D}|d d         dk    s|dk    r|                     ||          }||                    |           Et          |          S )N.pyx.pyz.pxd   zcython.cython)r0   r-   r  r   r*  rY  r   r   )r   r!   filename_rootfilename_extpxd_listr  pxd_files          r"   cimported_fileszDependencyTree.cimported_filesi  s    &(g&6&6x&@&@#|?**{=6;Q/R/R*%./HHH mmH-- 	* 	*FbqbzY&&&H*<*<}}VX66H#)))Xr$   c                     |h}|                     |                     |                     |                     |                     |                     |S r   )r^   rd  r@  )r   r!   all_depss      r"   immediate_dependenciesz%DependencyTree.immediate_dependenciesz  sN    :,,X66777++H55666r$   c                 N    |                      || j        t          j                  S r   )transitive_mergerg  rA   unionrL  s     r"   all_dependencieszDependencyTree.all_dependencies  s    $$Xt/JCIVVVr$   c                 @    t           j                            |          S r   )r0   r-   getmtimerL  s     r"   	timestampzDependencyTree.timestamp  s    w)))r$   c                 0    |                      |          |fS r   )rn  rL  s     r"   extract_timestampz DependencyTree.extract_timestamp  s    ~~h''11r$   c                 `     t           fd                     |          D                       S )Nc                 :    g | ]}                     |          S r&   )rp  )r,   ra   r   s     r"   r/   z4DependencyTree.newest_dependency.<locals>.<listcomp>  s'    WWW!D**1--WWWr$   )r   rk  rL  s   ` r"   newest_dependencyz DependencyTree.newest_dependency  s4    WWWWt7L7LX7V7VWWWXXXr$   c                 0   	 t          j        t          j        d                    }|                    t          |                              d                     t          |                     |                    D ]^}t          j	        
                    |          d         dvr5|                    t          |                              d                     _|                    t          |j        t          |dd          t          |dd          f                              d                     |                    |                                                    d                     |                                S # t           $ r Y dS w xY w)a;  
        Return a fingerprint of a cython file that is about to be cythonized.

        Fingerprints are looked up in future compilations. If the fingerprint
        is found, the cythonization can be skipped. The fingerprint must
        incorporate everything that has an influence on the generated code.
        rW   r:   ).c.cppz.hpy_limited_apiFr   N)r[   r\   r   r   r^   rc   sortedrk  r0   r-   r  r  rt   r   get_fingerprintr_   IOError)r   r!   r  compilation_optionsrE   r   s         r"   transitive_fingerprintz%DependencyTree.transitive_fingerprint  so   	[/8899AHHYx((//88999D11(;;<< ; ;7##A&&q)1EEEHHYq\\0099::: HHS 0%88e44   vg	      HH(88::AA'JJKKK;;==  	 	 	44	s   FF 
FFc                    |                      |          d         }|j        }|                     |          \  }}}t          j                    }|r_t          ||          }d|v r9t          t          |d                                       |                    |d<   nt          |          |d<   |rTt          |	                    dg                     }t          ||          D ]}	|	|vr|
                    |	           ||d<   |S )Nr   r   rf   )r4  r   rD  r0   r1   r4   r   rA   rj  r   r   )
r   r!   infokwdsr*  r,  rE  basedirrf   incs
             r"   distutils_info0zDependencyTree.distutils_info0  s   &&x003{%)%B%B8%L%L"'7)++ 	0$Wg66GD  "&s4	?';';'A'A''J'J"K"KY"&w--Y  	0 < <==L%gw77 - -l** '',,,#/D r$   c                     |                      || j        t          j                                      |                              |          S r   )ri  r  r   r   r   )r   r!   r   r.   s       r"   r)  zDependencyTree.distutils_info  s8    %%h0DmFYZZT']]U4[[	r$   c                     	 | j         ||f         }n# t          $ r i x}| j         ||f<   Y nw xY w|                     ||||i | j                  d         S rK  )r:  KeyErrortransitive_merge_helperrd  )r   nodeextractr   rJ   s        r"   ri  zDependencyTree.transitive_merge  s    	?)'5.9DD 	? 	? 	?<>>D4)'5.999	?++'5$D,@B BBCE 	Es    --c           	      J   ||v r
||         d fS  ||          }||v r||fS 	 t          |          ||<   d } ||          D ]D}	|                     |	|||||          \  }
}||||         ||         k     rn|} |||
          }E||k    rd }||||<   ||f||= S # ||= w xY wr   )rZ   r  )r   r  r  r   rJ   stackoutgoingdepsloopr   sub_depssub_loops               r"   r  z&DependencyTree.transitive_merge_helper  s   4<<:t##wt}}5==:	e**E$KD  - -%)%A%A$QVX\^cem%n%n"(''E$K%/,I,I'uT8,,t|||!T
:ddOOOOs   A6B B")Fr   r   )r   r   r   r   r4  r   r@  rD  r*  r  r  rY  rd  rg  rk  rn  rp  rs  r|  r  r)  ri  r  r&   r$   r"   r6  r6    s       $ $ $ $
3 3 3
   ]" 1 1 ]1": : :! ! !. . . M M M ]M.   ]    ]W W W * * ]*2 2 2Y Y Y  <  ,   
E E E    r$   r6  Fc                     t           D| 1t          dgt                      t          t                              } t          | |          a t           S )Nr  )optionsr9  )	_dep_treer   r   r   r   r6  )ctxr9  s     r"   create_dependency_treer    sT    ;3%!7!9!9"4_"E"EG G GC"3e444	r$   c                    d|v rW|                     dg           dgz   }t          |d         |          }t          t          || j        z                       |d<   | j        } |di |}t          ||d                   }||fS )Nr   rf   r  r   )	distutilsmodule_namer&   )r   r  rx  rA   r   	__class__dict)templater  rf   r   r   rv   metadatas          r"   default_create_extensionr    s    Dxx33se;!$y/<@@ Wx/?%?!@!@AAYA
!))d))CdV===H?r$   c           	      	  !" |"t          d                    |                     |g }| g i fS t          | t                    st          | t                    s| g} ddlm} dt          j        v r0|t          j        d         j	        t          j        d         j        f!n|f!!fd| D             }t          ||          }	t                      }
t          |t                    s|g}|D ]A}|
                    t          t          j        j        t%          |                               Bg }i }|j        j        pt*          }t                      }| D ]}t          |!          st-          |          }t          |t.                    r|" ||g           }d}d }|}nt          |!          r|d	 |j        D             }|r7|d         "t3          |          d
k    rt          d|j        d|d           n|                    |           |}|j        }t9          |          }d }nFt/          dt;          |          dt=          |          d|j                  }tA          |          tC          tE          t%          "                    d"z            D ]8}t          j                            |          |
v r%|	#                    |          }d|v r||v rCn|r|}tI          j%        |           ||vr	 |	&                    |||          j'        }n# tP          $ r |rY  w xY w|(|j'        )                                D ]\  }}||vr|||<   ||d<   |g"fd|j        D             z   }d|v r3|d         D ]*}t-          |          }||vr|                    |           +||d<   |r	d|vr||d<   |*                    dd          } |||          \  }}|ptW          |dd          |_,        |j,        rt[          |           |                    |           |||<   ||j        vrt          j        .                    |          d         |j/        dk    rdndz   } 	 |j        0                    |            n"# tb          $ r t          d|z             Y nw xY w|j        2                    d|           |3                    |           :||fS )NzWarning: passing language={0!r} to cythonize() is deprecated. Instead, put "# distutils: language={0}" in your .pyx or .pxd file(s)r   )	Extension
setuptoolszsetuptools.extensionc                 >    h | ]}t          |          |j        S r&   )r   r   )r,   rE   extension_classess     r"   	<setcomp>z(create_extension_list.<locals>.<setcomp>  s+    UUU1JqBS4T4TUUUUr$   r  r;   c                 `    g | ]+}t           j                            |          d          dv )|,S )r:   )r]  r\  r0   r-   r  r   s     r"   r/   z)create_extension_list.<locals>.<listcomp>6  sD     L L LA!#!1!1!!4!4Q!7?!J!J  !J!J!Jr$   r:   z6Warning: Multiple cython sources found for extension 'z': z
See https://cython.readthedocs.io/en/latest/src/userguide/sharing_declarations.html for sharing declarations among Cython files.)r   z6pattern is not of type str nor subclass of Extension (z) but of type z and class z'%s' doesn't match any filesr   c                      g | ]
}|k    |S r&   r&   )r,   rE   filepatterns     r"   r/   z)create_extension_list.<locals>.<listcomp>g  s#    #T#T#T!1CSCSACSCSCSr$   r   rt   r   Frm   rv  ru  z@Warning: Cython source file not found in sources list, adding %s)4rA  r  r   r   r
   distutils.extensionr  sysmodules
_Extensionr  rA   r   r^   mapr0   r-   r  r@   r  create_extensionr  r#   r  r   rZ   r   r   r   reprr   r  rr   rU   rx  r  r   $raise_error_if_module_name_forbiddenr)  r   	Exceptionr   rQ  r   r   ry   r  rt   ru   rP   insertrC   )#patternsexcluder  r   r9  rt   exclude_failuresr  explicit_modulesr  
to_excluderD   module_listmodule_metadatar  rJ   r  r   r.   ext_languagecython_sourcesmsgfiler  r  r   rT   r   r   r   rE   r  target_filer  r  s#                                    @@r"   create_extension_listr    s    VV\V\]eVfVf	h 	h 	h2v	Hj	)	) Hh1O1O :------s{"" K./:K%/
 'LUUUUUUU!#U333DJgt$$ ) I I#bgo~g/F/FGGHHHHKO {3O7O55D ] ]'#455 	6,W55Ggs## 	!!K y"--HDD#LL!233 	!L L L L LN 	,Q/~&&**EMT\\\[i[i[ik l l l
 ""7+++H=D X...DLL#8<Y8<W8?8I8IK L LC C.. VN;$?$?@@B`cnBnoo <	 <	Dwt$$
2233D99Kd{{"222 3 #"6{CCC$&&..tWdCCJDD    ' !  #&*k&7&7&9&9 . .
Ud??(-DI*V&#T#T#T#Tx/?#T#T#TT$$"&y/ 3 3!7!?!?!00#NN6222")Y 4Jd$:$:'3D$!XXlE::
 /.x>>8)LWQe-L-L< 0,Q///""1%%% 08,qy(("$'"2"24"8"8";W\I\I\vvbf"gKj	((5555% j j jadhhiiiiij I$$Q---y<	z ''s$   LL/-L/+RR%$R%c	                   / |g }d|	vrdg|	d<   d|	v rt          |	d                    |	                    dd          }
t          d}nt          d'i |	}d|_        d|_        |#t          j                            d          dk    }t          d'i |	}t          d'i |	}d|_        t          j
        |          }|}	t          | ||||||	          \  } }t          |            t          ||
          }t          |	dd          /t          j                    f/fd	}t!          j        t$                    }g }| D ]J}/r|j        D ]} ||           d |j        D             }t+          |          dk    r|j        }nd}g }|j        D ]}t          j                            |          \  }}|dv r|j        r|dz   }|}	n|j        dk    r|dz   }|}	n|dz   }|}	/rt          j                            |          rKt          j                            |          d         }|                    t          j        d          d         }t          j                            /|          }t          j                            |          }tA          |           |
r&|!                    |          }tE          |||           tG          j$        |          r t          j        %                    |          }nd}||&                    |          k     r|&                    |          |}} d}!n2|'                    |          \  } }d||(                    |          v z
  }!|s|| k     r|sg|se||k    r%tS          dtG          j*        |          z             n:tS          dtG          j*        |          dtG          j*        |          d           |s|	j+        r|,                    |||	          }"nd}"|-                    |!|||"||	| |                    |j                  ||f
           |-                    |           ||         -                    |           |-                    |           /r ||           ||_        L|	j+        r=t          j        .                    |	j+                  st          j/        |	j+                   |0                                 t+          |          }#dt+          tc          |#                    z  }$te          |#          D ]2}%|$3                    |%dz   |#          }&||%         dd         |&fz   ||%<   3|#dk    rd}|rddl4}'|'5                    |tl                    }(	 |(7                    tp          |d          })|(9                                 |):                                s;	 |)                    d           n# |'j;        $ r Y nw xY w|):                                ;n## tx          $ r |(=                                  w xY w|(                                 n|D ]}*t}          |*  |rTt                      }+|@                                D ]\  }},t          j        .                    |          s|+A                    |,           :t          j        B                    |          dk     r|t          |dd           }-	 |-D                    t+          d!                    d!k    r|+A                    |,           |-9                                 # |-9                                 w xY w|+rV|+D ]}.| E                    |.           tS          d"d#                    t          d$ |+D                                 z             |	j+        r$t          |	j+        t          |	d%d&                     t          jI        J                                 | S )(a  
    Compile a set of source modules into C/C++ files and return a list of distutils
    Extension objects for them.

    :param module_list: As module list, pass either a glob pattern, a list of glob
                        patterns or a list of Extension objects.  The latter
                        allows you to configure the extensions separately
                        through the normal distutils options.
                        You can also pass Extension objects that have
                        glob patterns as their sources. Then, cythonize
                        will resolve the pattern and create a
                        copy of the Extension for every matching file.

    :param exclude: When passing glob patterns as ``module_list``, you can exclude certain
                    module names explicitly by passing them into the ``exclude`` option.

    :param nthreads: The number of concurrent builds for parallel compilation
                     (requires the ``multiprocessing`` module).

    :param aliases: If you want to use compiler directives like ``# distutils: ...`` but
                    can only know at compile time (when running the ``setup.py``) which values
                    to use, you can use aliases and pass a dictionary mapping those aliases
                    to Python strings when calling :func:`cythonize`. As an example, say you
                    want to use the compiler
                    directive ``# distutils: include_dirs = ../static_libs/include/``
                    but this path isn't always fixed and you want to find it when running
                    the ``setup.py``. You can then do ``# distutils: include_dirs = MY_HEADERS``,
                    find the value of ``MY_HEADERS`` in the ``setup.py``, put it in a python
                    variable called ``foo`` as a string, and then call
                    ``cythonize(..., aliases={'MY_HEADERS': foo})``.

    :param quiet: If True, Cython won't print error, warning, or status messages during the
                  compilation.

    :param force: Forces the recompilation of the Cython modules, even if the timestamps
                  don't indicate that a recompilation is necessary.

    :param language: To globally enable C++ mode, you can pass ``language='c++'``. Otherwise, this
                     will be determined at a per-file level based on compiler directives.  This
                     affects only modules found based on file names.  Extension instances passed
                     into :func:`cythonize` will not be changed. It is recommended to rather
                     use the compiler directive ``# distutils: language = c++`` than this option.

    :param exclude_failures: For a broad 'try to compile' mode that ignores compilation
                             failures and simply excludes the failed extensions,
                             pass ``exclude_failures=True``. Note that this only
                             really makes sense for compiling ``.py`` files which can also
                             be used without compilation.

    :param show_all_warnings: By default, not all Cython warnings are printed.
                              Set to true to show all warnings.

    :param annotate: If ``True``, will produce a HTML file for each of the ``.pyx`` or ``.py``
                     files compiled. The HTML file gives an indication
                     of how much Python interaction there is in
                     each of the source code lines, compared to plain C code.
                     It also allows you to see the C/C++ code
                     generated for each line of Cython code. This report is invaluable when
                     optimizing a function for speed,
                     and for determining when to :ref:`release the GIL <nogil>`:
                     in general, a ``nogil`` block may contain only "white" code.
                     See examples in :ref:`determining_where_to_add_types` or
                     :ref:`primes`.


    :param annotate-fullc: If ``True`` will produce a colorized HTML version of
                           the source which includes entire generated C/C++-code.


    :param compiler_directives: Allow to set compiler directives in the ``setup.py`` like this:
                                ``compiler_directives={'embedsignature': True}``.
                                See :ref:`compiler-directives`.

    :param depfile: produce depfiles for the sources if True.
    NrB  r  common_utility_include_dirdepfileTCYTHON_FORCE_REGENr   )r  r  r9  r  rt   r   r  	build_dirc           	      L   t           j                            |           }t           j                            |           r|} |                    |          rMt          t           j                            t          | |                              }t          ||           d S d S r   )	r0   r-   r  r   r*   rB   r   r+   copy_once_if_newer)filepathrM   filepath_absmod_dirr  s       r"   copy_to_build_dirz$cythonize.<locals>.copy_to_build_dir   s    wx007=="" 	$#H""4(( 	6	 "40H0H I IK KG|W55555		6 	6r$   c                 `    g | ]+}t           j                            |          d          dv )|,S )r:   r[  r  )r,   r   s     r"   r/   zcythonize.<locals>.<listcomp>  sB     ? ? ?w''*o== ===r$   r:   r[  rv  rm   ru  r(   r   r   z Compiling %s because it changed.z
Compiling z because it depends on z[{0:%d}/{1}] )initializer)	chunksizei    rz	iso8859-1)encodingz#error zFailed compilations: %sz, c                     g | ]	}|j         
S r&   )r   )r,   r  s     r"   r/   zcythonize.<locals>.<listcomp>  s-     A: A: A: &A: A: A:r$   
cache_sizei  @r&   )Kr   rQ  rn   r   cplusr   r0   environr   r   from_optionsr  fix_windows_unicode_modulesr  r   r1   collectionsdefaultdictr   r   r   rZ   r   r-   r  rt   r   
splitdriver?   r2   r   r   safe_makedirs_oncerk  r   r   file_generated_by_this_cythonrm  rn  rs  rg  rA  decode_filenamecacher|  r   existsmakedirssortr  ranger  multiprocessingPool_init_multiprocessing_helper	map_asynccythonize_one_helperclosereadyTimeoutErrorKeyboardInterrupt	terminatecythonize_onerA   r   r^   getsizeio_openr]   ru   rx  cleanup_cacher  stdoutflush)0r  r  nthreadsr   r9  forcert   r  show_all_warningsr  r  pythran_options	c_optionscpp_optionsr  r  r  r  modules_by_cfile
to_compilerE   dep
cy_sourcesfull_module_namenew_sourcesr   r.   rv   c_filer  dependenciesc_timestampdep_timestamppriorityfingerprintNprogress_fmtiprogressr  poolresultargsfailed_modulesr  ra   r  r  s0                                                  @r"   	cythonizer    s   Z W$$#&%#w..g:;<<<kk)T**G,77w77 $%)"}
344;"--W--I$//w//KT1B

y
)
)CG#8)$ $ $ K  ,,,!#U333Dd33I)+ 6 6 6 6 6 6 #.t44J P  P  	'y ' '!!#&&&&? ?!"? ? ?
 z??a v  $i ?	. ?	.F((00ID#o%%< (!F]F-GGZ5((!F]F)GG!D[F'G  ,w}}V,, <!#!3!3F!;!;A!>!'bfa!8!8!;W\\)V<<F'//&11C&s+++  @#'#8#8#@#@L!&&,??? 6v>> %"$'"2"26":":KK"$K !7!777)-)?)?3M HH)-)?)?)G)G&M3 C4+F+Fv+N+N$NOH >K-77   !S==!"EH]^dHeHe"effff!E % 5f = = = = % 5c : : : :#    ! +W] +&*&A&A&!W&U&U&*%% &&+u%5!57J7J167R7R(*;'= > > > ""6*** (//2222""6*** .%%f---		} 'w~~gm,, 	'K&&&OO 	JA"SQ[[0L1XX 8 8&&qsA.."1abb)XK7
1Avv !##"> $ @ @
	^^$8*PQ^RRFJJLLLllnn JJu%%%%&3   D llnn 
 ! 	 	 	NN	 			 	! 	!D4    =/5577 
	 
	OFG7>>&)) 	%%g....((3..FC+>>>vvc)nn--::&--g666GGIIIIAGGIIII /  	=( + +""6****,tyy A: A:*8A: A: A: :; :; 0< 0< < = = = } XgmWWlDU%V%VWWW Js=   ;AW< W W< 
W$!W< #W$$W< < X;\''\=c                 F   t           j        dk    rd S t           j        dk     st           j        dk    rd S d }| D ]f}	 |j                            d           # t
          $ r Y nw xY w |d|j                            dd          d	         z   |j                  |_        gd S )
Nwin32)r      )r      r   c                       G  fddt                     } ||          }|r!|                     fd|D                        |S )Nc                       e Zd Z fdZdS )Vfix_windows_unicode_modules.<locals>.make_filtered_list.<locals>.FilteredExportSymbolsc                 F    |k    pt                               | |          S r   )r   __contains__)r   r   ignored_symbols     r"   r  zcfix_windows_unicode_modules.<locals>.make_filtered_list.<locals>.FilteredExportSymbols.__contains__  s#    n,L0A0A$0L0LLr$   N)r   r   r   r  )r  s   r"   FilteredExportSymbolsr    s5        M M M M M M Mr$   r  c              3   (   K   | ]}|k    |V  d S r   r&   )r,   r   r  s     r"   r   zJfix_windows_unicode_modules.<locals>.make_filtered_list.<locals>.<genexpr>  s-       X X$AWAWAWAWAWAW X Xr$   )r   rs   )r  old_entriesr  filtered_lists   `   r"   make_filtered_listz7fix_windows_unicode_modules.<locals>.make_filtered_list  s    	M 	M 	M 	M 	M 	M 	MD 	M 	M 	M .-k:: 	Y   X X X X+ X X XXXXr$   asciiPyInit_r  r:   r(   )r  platformversion_infor   r   UnicodeEncodeErrorrsplitr   )r  r  rE   s      r"   r  r    s     |w
&  C$4	$A$A    

 

	FMM'"""! 	 	 	D	--c1--b11
 


 

s   A
A%$A%XML_RESULTSc                       fd}|S )Nc            	      N   t          j                     }d}	 	  |   n	#  d}Y nxY wt          j                     |z
  }t          | d                   }d|z   }d|z
  }|rd}nd}t          t          j                            t          |dz             d	          }|                    d
                                t                      z             |
                                 d S # t          j                     |z
  }t          | d                   }d|z   }d|z
  }|rd}nd}t          t          j                            t          |dz             d	          }|                    d
                                t                      z             |
                                 w xY w)NTFr   z
cythonize.r:   r   failurez.xmlwaQ  
                    <?xml version="1.0" ?>
                    <testsuite name="%(name)s" errors="0" failures="%(failures)s" tests="1" time="%(t)s">
                    <testcase classname="%(name)s" name="cythonize">
                    %(failure_item)s
                    </testcase>
                    </testsuite>
                )timer  r   r0   r-   r   compile_result_dirwriter   localsr  )	r	  r   successr  r   failuresfailure_itemoutputfuncs	           r"   with_recordz#record_results.<locals>.with_record  s   	AG$D$KKK$#GGGIKK!O-d1g66#f,w; -#%LL#,Lbgll+=tf}MMsSS  EGGfhh' ( ( ( # IKK!O-d1g66#f,w; -#%LL#,Lbgll+=tf}MMsSS  EGGfhh' ( ( ( s    C& %C& &B>F$r&   )r.  r/  s   ` r"   record_resultsr0    s$    	 	 	 	 	6 r$   c                     | S r   r&   )r.  s    r"   r0  r0    s    r$   Tc
           	      t
   ddl m}
m} ddlm}m} |rRt          j                            |j	                  st          |j	                   t          |j	        t          j                            |          d|          }|t          z   }|dz   }t          j                            |          s t          j                            |          r|st          |	d| d           t          j                            |          rt          j        |d            t!          j        t%          |d                    5 }t!          j        t'          |d	                    5 }t)          j        ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   nt          j        |d            t          j                            |          }t!          j        t/          j        |                    5 }|                                D ]6}|                    |t          j                            ||                     7	 d d d            n# 1 swxY w Y   d S |s&t          |	d
t9          j        |                      |t=          |          }||_        ||_         tB          j"        }|rdtB          _"        d}	  |
| ||          j#        dk    rd}n}# tH          |f$ rF}tJ          j&        '                    d|z             d}dd l(}|)                                 Y d }~n0d }~wtT          $ r  |r dd l(}|)                                 d}Y nw xY w|r|tB          _"        n# |r|tB          _"        w xY w|rE|r |d |           t          j                            |          rt          j+        |           d S d S |rhtY          t[          d fddD                                 }t]          |          dk    r|}t!          j        t'          |d                    5 }t!          j        t%          |dz   d	                    5 }t)          j        ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n|}t!          j        t/          j        |dz   dt^                              5 }|D ]5}|'                    |t          j                            |                     6	 d d d            n# 1 swxY w Y   t          j0        |dz   |           d S d S )Nr   )compile_singler   )CompileError
PyrexError-z.zipzFound compiled z	 in cacherX   wbzCythonizing r   )r  r:   z%s
c                 2    g | ]}t          |d           S r   )r   )r,   attrr  s     r"   r/   z!cythonize_one.<locals>.<listcomp>-  s;     'D 'D 'D FD$'''D 'D 'Dr$   )r  h_fileapi_filei_filez.tmpr%  )1Compiler.Mainr3  r   Compiler.Errorsr4  r5  r0   r-   r  r  r   rB   r  gzip_extrA  utime
contextlibclosing	gzip_openr   shutilcopyfileobjr   zipfileZipFilenamelistr  r   r   r  r   output_fileembedded_metadatar   LEVEL
num_errorsEnvironmentErrorr  stderrr(  	traceback	print_excr  ru   r   filterrZ   zipfile_compression_moderename)pyx_filer  r  r9  r  raise_on_failurerJ  r  r  r  r3  r   r4  r5  fingerprint_file_basegz_fingerprint_filezip_fingerprint_filegra   r   zartifactold_warning_levelany_failureserO  	artifactsfingerprint_filezipr  s                                @r"   r  r    sV   
 @???????:::::::: w~~gm,, 	)'-((( !*Mbg&6&6v&>&>&>&>L!N !N3h>4v=7>>-.. 	"'..AU2V2V 	 N888LMMMw~~122 
M,d333'	2Et(L(LMM 1QR#+D,>,>?? 11*1a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -t444'//&11'8L(M(MNN MRS$%JJLL M M		(BGLL(,K,KLLLLMM M M M M M M M M M M M M M M F QXXXu/DX/N/N/NOPPP$_55 G 1G L-'DTUUUq  Lj)   
!$$$    	  	-,FL  	-,FL,,,, ? 	,tX...W^^F## 	If	 		 ? 'D 'D 'D 'DB'D 'D 'D E E F F	 y>>Q2#D$6$677 -1'	2BV2KT(R(RSS -WX&q!,,,- - - - - - - - - - - - - - -- - - - - - - - - - - - - - -  4#GO$v-s4L%N %N O O DRU ) D DHIIh(8(8(B(BCCCCDD D D D D D D D D D D D D D D 		"V+-=>>>>>? ?s   ?#F"F8FF	FF	FF"FAII!IK' &M3 'M!3<L4/M3 4*M!M3  M!!M3 3N0&RQ8,R8Q<	<R?Q<	 RRR9TTTc                 d    dd l }	 t          |  S # t          $ r |                                  w xY wrK  )rO  r  r  rP  )rE   rO  s     r"   r  r  >  sN    a     s     /c                  N    dd l } |                      | j        | j                   d S rK  )signalSIGINTSIG_IGN)rd  s    r"   r  r  G  s)    MMM
MM&-00000r$   333333?c                    	 t          j        dddt          j                            |           gt           j                  }|                                \  }}|                                }|dk    rDdt          |	                                
                                d                   z  }||k     rd S n# t          t          f$ r Y nw xY wd}g }t          j        |           D ]R}	t          | |	          }
t          j        |
          }||j        z  }|                    |j        |j        |
f           S||k    rHt'          t)          |                    D ]-\  }}}	t          j        |	           ||z  }|||z  k     r d S ,d S d S )Nduz-sz-k)r  r   i   )
subprocessPopenr0   r-   r  PIPEcommunicatewaitintr   r?   OSErrorrP   listdirrB   statst_sizer   st_atimereversedrx  unlink)r  target_sizeratiopr  r   res
total_sizer   r  r-   r   r&  sizes                 r"   r  r  M  s   	dD$0F0FGPZP_```MMOO	ffhh!88FLLNN$8$8$:$:1$= > >>JK''Z    J
C
5!! 2 2%%GDMMai


AJ	401111K ( 5 5 	 	D$IdOOO$JK%/// 0	  	 	s   B4B9 9CCr   )rN   )r   r   )NNNFNF)Nr   NFNNFF)NTNNFr   )rg  )k
__future__r   r   r_  r   r   r  rA  r[   r0   rD  rj  r<   r  r&  globr   ior   r  os.pathr	   r+   rF  collections.abcr
   ImportErrorgziprC  r?  zlibZIP_DEFLATEDrR  
ZIP_STOREDrn   r   r   r   r   r   r   r   r   Compilerr   r=  r   Compiler.Optionsr   r   r   r-   r   rB   r  r  r  getfilesystemencodingr   getdefaultencodingr#   r  r   r4   r@   rU   rc   ry   r   objectr   r   r   r   r   r   r)  
Py_ssize_tr   r   r   compileMr#  r%  r   r   r  r  r  r  r4  r6  r  r  r  r  r  r  r  r   r'  r0  r  r  r  r  r&   r$   r"   <module>r     sM   6 6 6 6 6 6 6 6                 				                              ' ' ' ' ' ' %((((((( % % %$$$$$$$$%KKK	IHH   IHHH2KKK&3 2 2 2&12NNNNGGG      M M M M M M M M M M M M M M M M M M       # # # # # #          OBGL))	$_%>?? $_]33 A,3,..L-s-//   
  J$ $ $ $  B$ $ $ $ 	 	 	  2J J J< &((
&((     ++++ ++ +*#  &< < <$ V&F,=>>>  ?>Q+ Q+ Q+ Q+ Q+F Q+ Q+ Q+h V&&*;)F4E*0A"F,=IZ\ \ \T' T' T'	\ \T't 2: F HJtM M  )bj'D
 
 R R R % % %6         3 3 3
 7 7 7DN N N N NV N N Nb 	   	 	 	 ae+0F( F( F( F(T fj8=N N N Nb 
  
  
F :>>-   !M2   <  
 @D;?;@S? S? S? S?l  1 1 1     sB   A A#"A#'A5 5	B BB B B $B) )B/