
    Ae                         d dl mZ d dlZd dlZd dlZd dlmZ ddlmZm	Z	 ddl
mZ ddlmZ 	 d dlZ e ej                          d	z        Z G d
 de      Zd Zd Zd Zd Zd Zd Zd ZddZedk(  r e        yy# e$ r dZd ZY =w xY w)    )absolute_importN)setup   )	cythonizeextended_iglob   )is_package_dir)Optionsg      ?c                   $    e Zd Zd Zd Zd Zd Zy)	_FakePoolc                 X    	 ddl m}  |||      D ]  } y # t        $ r	 t        }Y  w xY w)Nr   )imap)	itertoolsr   ImportErrormap)selffuncargsr   _s        6lib/python3.12/site-packages/Cython/Build/Cythonize.py	map_asyncz_FakePool.map_async   s;    	& dD! 	A	  	D	s    ))c                      y N r   s    r   closez_FakePool.close           c                      y r   r   r   s    r   	terminatez_FakePool.terminate"   r   r   c                      y r   r   r   s    r   joinz_FakePool.join%   r   r   N)__name__
__module____qualname__r   r   r    r"   r   r   r   r   r      s    r   r   c                     | j                   }t        t        |j                  |t	        j
                                     }t	        j                  |d|      }t        |j                  ||       y )NT)relaxed_boolcurrent_settings)destdictgetattrvaluesr
   get_directive_defaultsparse_directive_listsetattr)optionnamevalueparserr)   old_directives
directivess          r   parse_directivesr6   )   sZ    ;;D'&--")"@"@"BD EN--D>CJFMM4,r   c                     | j                   }t        t        |j                  |i             }|j	                  d      D ]7  }d|v r(|j	                  dd      \  }}|j                         dv}n|d}}|||<   9 t        |j                  ||       y )N,=r   )falsef0noT)r)   r*   r+   r,   splitlowerr/   )	r0   r1   r2   r3   r)   optionsoptnvs	            r   parse_optionsrD   2   s    ;;D76==$34G{{3 #:99S!$DAq	!::AqA
 FMM4)r   c                     | j                   }t        t        |j                  |i             }t	        j
                  ||      }t        |j                  ||       y )N)r(   )r)   r*   r+   r,   r
   parse_compile_time_envr/   )r0   r1   r2   r3   r)   old_envnew_envs          r   rF   rF   ?   sD    ;;D76==$34G,,UWMGFMM4)r   c                    t         j                  j                  |       \  }}t         j                  j                  t         j                  j	                  |d            rgt         j                  j                  |      \  }}|d|}t         j                  j                  t         j                  j	                  |d            rg||fS )Nz__init__.py/)ospathr>   isfiler"   )rL   base_dirpackage_pathparents       r   find_package_baserQ   F   s    WW]]40Hl
''..h>
?77==2&"(,7 ''..h>
? \!!r   c                    d }t        t        j                  j                  t	        |             }	 |D ]  }|j
                  rx|}t        j                  j                  |      rt        |      rNt        j                  j                  |      }t        j                  j                  |      s?t        |      rKnd }t        j                  j                  |      r#t        j                  j                  |dd      g}n|g}t        |f|j                  |j                  |j                  |j                  |j                  |j                   |j"                  |j$                  d|j&                  }|sB|j(                  sPt+        |      dkD  rZ|j                  dkD  rK| 	 t-        j.                  |j                        }|j5                  t6        |D cg c]  }||gf	 c}       t7        ||f        	 |!|j9                          |j                          y y # t0        $ r t3               }Y sw xY wc c}w #  ||j;                           xY w)Nz**z
*.{py,pyx})nthreadsexclude_failuresexcludecompiler_directivescompile_time_envforcequietdepfiler   )r   rK   rL   abspathr   build_inplaceisdirr	   dirnamer"   r   parallel
keep_goingexcludesr5   rW   rX   rY   rZ   r@   buildlenmultiprocessingPoolOSErrorr   r   run_distutilsr   r    )	path_patternr@   pool	all_pathsrL   rN   pathsext_modulesexts	            r   cython_compilern   N   s   DBGGOO^L%ABI. %	;D$$''--1^H5M!wwx8H ''--1^H5M  ww}}T"dD,?@ #
# ))!(!3!3(($+$6$6!(!9!9mmmm
# //
#K w}}{#a'G,<,<q,@|/#2#7#78H8H#ID NN=5@3B.1C5)3B C "8["9:K%	;V JJLIIK   ' /#,;D/3BNNsU   A<H> .H> :B9H> 5H> H> #H H> H9"H>  H63H> 5H66H> >Ic                 *   | \  }}ddg}t        j                         }d }	 |r>t        j                  |       t        j                  |      }|j                  d|g       t        d||       |rNt        j                  |       |r6t         j                  j                  |      rt        j                  |       y y y y # |rNt        j                  |       |r6t         j                  j                  |      rt        j                  |       w w w w xY w)N	build_ext-i)dirz--build-tempzsetup.py)script_namescript_argsrl   )rK   getcwdchdirtempfilemkdtempextendr   rL   r]   shutilrmtree)r   rN   rl   rt   cwdtemp_dirs         r   rg   rg      s     Hk%K
))+CH(HHX''H5H9:"##	
 HHSMBGGMM(3h' 4x 8HHSMBGGMM(3h' 4x s   AC   ADc                 <   ddl m}  |d      }|j                  ddddi d	d
t        d	       |j                  ddddi d	d
t        d	       |j                  ddddi d	d
t
        d	       |j                  ddddd d       |j                  ddddd       |j                  d ddd!d       |j                  d"d#d$d%d&'       |j                  d(d)d*d+d,g d-.       |j                  d/d0d1d%d2'       |j                  d3d4d5d%d6'       |j                  d7d8d9d:t        t        d;t        z  xs d<=       |j                  d>d?d@d%dA'       |j                  dBdCdDd%dE'       |j                  dFdGd%dH'       |j                  dIdJdKd%dL'       |j                  dMdNd%dOP       |j                  |       \  }} | s|j                  dQ       |j                  rdR|_        t        d|_        |j                  r)|j                  dSv sJ |j                  |j                  d<   || fS )TNr   )OptionParserz'%prog [options] [sources and packages]+)usagez-Xz--directivezNAME=VALUE,...r5   strcallbackzset a compiler directive)metavarr)   defaulttypeactionr   helpz-Ez--compile-time-envrW   z'set a compile time environment variablez-sz--optionz
NAME=VALUEr@   zset a cythonize optionz-2language_levelstore_constr   z#use Python 2 syntax mode by default)r)   r   constr   r   z-3   z#use Python 3 syntax mode by default)r)   r   r   r   z--3str3strz-az
--annotateannotate
store_truez-generate annotated HTML page for source files)r)   r   r   z-xz	--excludePATTERNra   appendz2exclude certain file patterns from the compilation)r   r)   r   r   r   z-bz--buildrb   z'build extension modules using distutilsrq   z	--inplacer\   z=build extension modules in place using distutils (implies -b)z-jz
--parallelr_   Nz+run builds in N parallel jobs (default: %d)r   )r)   r   r   r   r   z-fz--forcerX   zforce recompilationz-qz--quietrY   z"be less verbose during compilationz	--lenientlenientzBincrease Python compatibility by ignoring some compile time errorsz-kz--keep-goingr`   z8compile as much as possible, ignore compilation failuresz-Mz	--depfilez produce depfiles for the sources)r   r   zno source files providedT)r   r   r   )optparser   
add_optionr6   rF   rD   intparallel_compiles
parse_argserrorr\   rb   rd   r_   r   r@   )r   r   r3   r@   s       r   r   r      s   % IJF
dM3C'%'2B5  7 d0:J-r'2HD  F dJ$bu'-3  5 d!1-qZ^@  B
d!1-q@  B
h%5mSY@  B
dLz,J  L dK%rO  Q dIGLD  F
dKolZ  \
dLz3(9I-. 312  5 dIGL0  2
dIGL?  A k	,_  a
dNlU  W
dKCef%%d+MGT/0%%77,3,B,B()D=r   c                     t        |       \  }}|j                  rdt        _        dt        _        |j
                  rdt        _        |D ]  }t        ||        y )NFT)r   r   r
   error_on_unknown_nameserror_on_uninitializedr   rn   )r   r@   rk   rL   s       r   mainr      sQ    %NGU).&).& &tW%&r   __main__r   )
__future__r   rK   rz   rw   distutils.corer   Dependenciesr   r   Utilsr	   Compilerr
   rd   r   	cpu_countr   r   objectr   r6   rD   rF   rQ   rn   rg   r   r   r#   r   r   r   <module>r      s    ' 	     3 " 5O557#=> &-
**"1h(,:z& zF g  Os   A> >	B
	B
