a
    b                      @   s   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 zd dlZee d	 ZW n ey   dZd ZY n0 G d
d deZdd Zdd Zdd Zdd Zdd Zdd Zdd ZdddZedkre  dS )    )absolute_importN)setup   )	cythonizeextended_iglob   )is_package_dir)Optionsg      ?c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	_FakePoolc                 C   s<   zddl m} W n ty&   t}Y n0 |||D ]}q2d S )Nr   )imap)	itertoolsr   ImportErrormap)selffuncargsr   _ r   f/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/Cython/Build/Cythonize.py	map_async   s    
z_FakePool.map_asyncc                 C   s   d S Nr   r   r   r   r   close   s    z_FakePool.closec                 C   s   d S r   r   r   r   r   r   	terminate"   s    z_FakePool.terminatec                 C   s   d S r   r   r   r   r   r   join%   s    z_FakePool.joinN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r
      s   r
   c                 C   s>   | j }tt|j|t }tj|d|d}t|j|| d S )NT)Zrelaxed_boolcurrent_settings)destdictgetattrvaluesr	   Zget_directive_defaultsZparse_directive_listsetattr)optionnamevalueparserr   Zold_directives
directivesr   r   r   parse_directives)   s    
r)   c           	      C   sr   | j }tt|j|i }|dD ]<}d|v rL|dd\}}| dv}n
|d }}|||< q"t|j|| d S )N,=r   )falsef0noT)r   r    r!   r"   splitlowerr#   )	r$   r%   r&   r'   r   optionsoptnvr   r   r   parse_options2   s    

r6   c                 C   s8   | j }tt|j|i }tj||d}t|j|| d S )N)r   )r   r    r!   r"   r	   parse_compile_time_envr#   )r$   r%   r&   r'   r   Zold_envZnew_envr   r   r   r7   ?   s    r7   c                 C   sL   t j| \}}t jt j|drDt j|\}}d||f }q||fS )Nz__init__.pyz%s/%s)ospathr0   isfiler   )r9   base_dirpackage_pathparentr   r   r   find_package_baseF   s
    r>   c                    sv  d }t tjjt| }z|D ]}|jrR| tj rBt rVtj  q.nd  tj|rvtj	|ddg}n|g}t
|f|j|j|j|j|j|j|j|jd|j}|r|jrt|dkr&|jdkr&|d u r
zt|j}W n ty   t }Y n0 |t fdd|D  qt |f qW n    |d urP|   Y n0 |d urr|  |	  d S )Nz**z
*.{py,pyx})ZnthreadsZexclude_failuresexcludeZcompiler_directivescompile_time_envforcequietdepfiler   c                    s   g | ]} |gfqS r   r   ).0extr;   r   r   
<listcomp>t   s   z"cython_compile.<locals>.<listcomp>)r   r8   r9   abspathr   build_inplaceisdirr   dirnamer   r   parallel
keep_goingexcludesr(   r@   rA   rB   rC   r2   buildlenmultiprocessingZPoolOSErrorr
   r   run_distutilsr   r   )path_patternr2   poolZ	all_pathsr9   pathsext_modulesr   rF   r   cython_compileN   sX    






rX   c              	   C   s   | \}}ddg}t  }d }zb|rFt | tj|d}|d|g td||d W |rt | |rt j|rt	
| n*|rt | |rt j|rt	
| 0 d S )N	build_ext-i)dirz--build-tempzsetup.py)script_namescript_argsrW   )r8   getcwdchdirtempfilemkdtempextendr   r9   rJ   shutilrmtree)r   r;   rW   r]   cwdtemp_dirr   r   r   rS      s,    


rS   c                 C   s  ddl m} |dd}|jddddi d	d
tdd	 |jddddi d	d
tdd	 |jddddi d	d
tdd	 |jddddd dd |jdddddd |jd ddd!dd |jd"d#d$d%d&d' |jd(d)d*d+d,g d-d. |jd/d0d1d%d2d' |jd3d4d5d%d6d' |jd7d8d9d:ttd;t pd<d= |jd>d?d@d%dAd' |jdBdCdDd%dEd' |jdFdGd%dHd' |jdIdJdKd%dLd' |jdMdNd%dOdP || \}} | s|	dQ |j
rdR|_td u rd|_|jr|jdSv sJ |j|jd< || fS )TNr   )OptionParserz'%prog [options] [sources and packages]+)usagez-Xz--directivezNAME=VALUE,...r(   strcallbackzset a compiler directive)metavarr   defaulttypeactionrj   helpz-Ez--compile-time-envr@   z'set a compile time environment variablez-sz--optionz
NAME=VALUEr2   zset a cythonize optionz-2language_levelstore_constr   z#use Python 2 syntax mode by default)r   rn   constrl   ro   z-3   z#use Python 3 syntax mode by default)r   rn   rr   ro   z--3str3strz-az
--annotateannotate
store_truez-generate annotated HTML page for source files)r   rn   ro   z-xz	--excludeZPATTERNrN   appendz2exclude certain file patterns from the compilation)rk   r   rn   rl   ro   z-bz--buildrO   z'build extension modules using distutilsrZ   z	--inplacerI   z=build extension modules in place using distutils (implies -b)z-jz
--parallelrL   Nz+run builds in N parallel jobs (default: %d)r   )r   rk   rm   rl   ro   z-fz--forcerA   zforce recompilationz-qz--quietrB   z"be less verbose during compilationz	--lenientlenientzBincrease Python compatibility by ignoring some compile time errorsz-kz--keep-goingrM   z8compile as much as possible, ignore compilation failuresz-Mz	--depfilez produce depfiles for the sources)rn   ro   zno source files providedT)r   rs   rt   )optparserg   
add_optionr)   r7   r6   intparallel_compiles
parse_argserrorrI   rO   rQ   rL   rp   r2   )r   rg   r'   r2   r   r   r   r~      s    






r~   c                 C   sB   t | \}}|jrdt_dt_|jr*dt_|D ]}t|| q.d S )NFT)r~   ry   r	   Zerror_on_unknown_namesZerror_on_uninitializedru   rX   )r   r2   rV   r9   r   r   r   main   s    r   __main__)N)
__future__r   r8   rc   r`   distutils.corer   ZDependenciesr   r   ZUtilsr   ZCompilerr	   rQ   r|   	cpu_countr}   r   objectr
   r)   r6   r7   r>   rX   rS   r~   r   r   r   r   r   r   <module>   s0   
	4=
