3
q<\1                 @   s(  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yd dlZW n ek
r\   d dl	ZY nX d dl
mZmZ d dlmZ d dlZddlmZmZmZ ddlmZmZmZmZ ddlmZ dd	lmZ d
dlmZmZm Z  ddl!m"Z"m#Z# ddl$m%Z% d dl&Z'ej(d3kZ)ej(d  dk r"dd Z*ndd Z*G dd deeZ+e d4ddZ,d5ddZ-d6ddZ.dd Z/e dd Z0i Z1e0d7Z2d8d d!Z3e-ej4j5e% d"ddd#d#dddf	d$d%Z6de6_7ej8d&j9Z:d'd( Z;ej8d)Z<d*d+ Z=yd d,lm>Z> W n ek
r
   d-d. Z>Y nX d/d0 Z?G d1d2 d2e@ZAdS )9    )absolute_importN)Distribution	Extension)	build_ext   )ContextCompilationOptionsdefault_options)CythonTransformSkipDeclarationsAnalyseDeclarationsTransformEnvTransform)parse_from_strings)_unicode   )strip_string_literals	cythonizecached_function)PipelineNodes)get_cython_cache_dir   c             C   s   t | tr| jdS | S d S )Nascii)
isinstancebytesdecode)s r   c/home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python3.6/site-packages/Cython/Build/Inline.py
to_unicode   s    

r   c             C   s   | S )Nr   )xr   r   r   <lambda>$   s    r!   c                   s,   e Zd Zdd Zdd Z fddZ  ZS )UnboundSymbolsc             C   s   t j| d  t | _d S )N)r
   __init__setunbound)selfr   r   r   r#   (   s    zUnboundSymbols.__init__c             C   s"   | j  j|js| jj|j |S )N)current_envlookupnamer%   add)r&   noder   r   r   visit_NameNode+   s    zUnboundSymbols.visit_NameNodec                s   t t| j| | jS )N)superr"   __call__r%   )r&   r+   )	__class__r   r   r.   /   s    zUnboundSymbols.__call__)__name__
__module____qualname__r#   r,   r.   __classcell__r   r   )r/   r   r"   '   s   r"   c             C   s   t | } |d krtg t}ddlm} td| }x2tj|dD ]"}|d krLq>||}t||r>P q>W ydd l	}W n t
k
r   dd l}Y nX tt |tt| S )Nr   )r   z(tree fragment)pyxr   )r   r   r	   Compiler.ParseTreeTransformsr   r   r   create_pipeliner   builtinsImportError__builtin__tupler"   r$   dir)codecontextr   treephaser7   r   r   r   unbound_symbols4   s     


r@   c             C   s"   t | }|tkrdS t| |S d S )Nlong)typeint	safe_type)argr=   py_typer   r   r   unsafe_typeH   s    rG   c             C   s   t | }|ttttfkr|jS |tkr*dS |tkr6dS |tkrBdS dt	j
krpt| t	j
d jrpd| jj| jf S xR|jD ]H}|jdkrdS |j|jd	d
}|rx|j|j}|jrxd|j|jf S qxW dS d S )Nzdouble complexdoublebintnumpyz"numpy.ndarray[numpy.%s_t, ndim=%s]r9   r7   objectF)need_pxdz%s.%s)r9   r7   )rB   listr:   dictstrr0   complexfloatboolsysmodulesr   ndarraydtyper)   ndim__mro__r1   find_moduler(   is_type)rE   r=   rF   	base_typemoduleentryr   r   r   rD   P   s(    
rD   c              C   s,   t  } | j }| j| t| }|j  |S )N)r   find_config_filesparse_config_filesr   finalize_options)distZconfig_filesbuild_extensionr   r   r   _get_build_extensionh   s    
rc   c             C   s   t t| tS )N)r   rM   r	   )cython_include_dirsr   r   r   _create_contexts   s    re   .c             C   s   x|D ]~}|| kr|d ks"|d krLt j jjj}|d kr>|j}|d krL|j}||krb|| | |< q||krx|| | |< qtd|  qW d S )NzCouldn't find %r)inspectcurrentframef_backf_locals	f_globalsprint)kwdsr@   localsglobalssymbolZcalling_framer   r   r   _populate_unbound{   s    
rq   inlineFc
       *         s  d krdd |r t t|nt tj| }|d k	rt||| tj }t fdd|D }tj| |f}|d k	rdd |D }|| S | }t| } t	| \} }t
| } |d krtj jjj}|d krtj jjj}y"t|  t|< }t||| W n$ tk
r&   |s"td Y nX t|p2i }|	d k	rH|	|d< g }x8tj D ](\}}|tkrZ|jd|  |= qZW t}t fd	d|D }||tjtj|	tjf}d
tjt|jdj   }|tj!krtj!| }nd }t"j#d krt$ }|j%dt"_#t&j'j(||t"j# }t&j'j)|sBt&j*| |sXt&j'j+| rg }g }t,j-d}x`|D ]X\}}|j.|} | rp|jd| j/ d   | j/ d dkrpdd l0}!|j|!j1  qpW t2| \}"}#dj(dd |D }$ddj(||"|$|#d }%x"|j D ]\}}&|%j3||&}%qW t&j'j(||d }'t4|'d}(z|(j5|% W d |(j6  X t7||'g||d})|d krt$ }t8|)g|pdg||d|_9t&j'j:|'|_;||_<|j=  t>j?||}|j@t||f< fdd|D }|j@| S )Nc             S   s   dS )NrK   r   )r    r   r   r   r!      s    zcython_inline.<locals>.<lambda>c                s   g | ]\}}| |fqS r   r   ).0rE   value)ctxget_typer   r   
<listcomp>   s    z!cython_inline.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r   r   )rs   rE   r   r   r   rw      s    z>Could not parse code as a string (to extract unbound symbols).language_levelz
cimport cython as %sc                s   g | ]}|  |fqS r   r   )rs   rE   )ru   rv   rm   r   r   rw      s    Z_cython_inline_zutf-8 z([.\w]+)[.]z
cimport %sr   rJ   z, c             S   s   g | ]}d | qS )z%s %sr   )rs   ar   r   r   rw      s    zf
%(module_body)s
%(cimports)s
def __invoke(%(params)s):
%(func_body)s
    return locals()
            
)cimportsmodule_bodyparams	func_bodyz.pyxw)r)   sourcesinclude_dirsextra_compile_argsrf   )include_pathcompiler_directivesquietc                s   g | ]} | qS r   r   )rs   rE   )rm   r   r   rw      s    )Are   r:   _cython_inline_default_context_cython_inline_cachegetrq   sorteditemsr   r   strip_common_indentrg   rh   ri   rj   rk   r@   AssertionErrorrl   rN   rM   cython_moduleappendrS   version_info
executableCython__version__hashlibmd5r   encode	hexdigestrT   cython_inlineso_extrc   get_ext_filenameospathjoinexistsmakedirsisfilerecompilematchgroupsrJ   Zget_includeextract_func_codereplaceopenwritecloser   r   
extensionsdirname
build_temp	build_librunimpload_dynamicZ__invoke)*r<   rv   lib_dirrd   Zcython_compiler_directivesforcer   rn   ro   rx   rm   Z_unbound_symbolsargsZarg_sigsZinvokearg_list	orig_codeliteralsr|   r)   rE   	arg_nameskeymodule_namer\   rb   module_pathcflagsZc_include_dirsZ	qualifiedrB   _mrJ   r}   r   r~   Zmodule_codert   pyx_filefh	extensionr   )ru   rv   rm   r   r      s    












r   z[^ ]c             C   s   d }| j  }xD|D ]<}t|}|s$q|j }|| dkr:q|d ksJ||kr|}qW xNt|D ]B\}}t|}| s\| s\|||d  dkrq\||d  ||< q\W dj|S )N#r   r{   )
splitlines_find_non_spacestart	enumerater   )r<   Z
min_indentlinesliner   indentixr   r   r   r   	  s"    
 r   zI^((cdef +(extern|class))|cimport|(from .+ cimport)|(from .+ import +[*]))c             C   sp   g }g }|}| j dd} | jd}x4|D ],}|jdsJtj|rF|}n|}|j| q(W dj|ddj| fS )N	 r{   z    z
    )r   split
startswithmodule_statementr   r   r   )r<   r\   functioncurrentr   r   r   r   r   r     s    



r   )getcallargsc             O   s"  i }t j| \}}}}|d k	r2|t|d  ||< xt||D ]\}}	|	||< q>W xBt|j D ]2\}}	||kr`||krtd| |j|||< q`W |d k	r|||< n|rtdt| |d krf }t|t| }
xDt|D ]8\}}||kr||
kr|||
  ||< qtd| qW |S )NzDuplicate argument %sz Unexpected keyword arguments: %szMissing argument: %s)	rg   
getargspeclenziprM   r   	TypeErrorpopr   )funcZ
arg_valuesZ
kwd_valuesallr   varargsrm   defaultsr)   rt   Zfirst_defaultr   r   r   r   r   1  s0    

r   c             C   sB   | j d}| d d dkr.d| |d d   S | |d d  S d S )N:   lambdaz	return %sr   )index)sourcer   r   r   r   get_bodyM  s    
r   c               @   s   e Zd Zdd Zdd ZdS )RuntimeCompiledFunctionc             C   s   || _ ttj|| _d S )N)_fr   rg   	getsource_body)r&   fr   r   r   r#   Y  s    z RuntimeCompiledFunction.__init__c             O   sZ   t | jf||}tr6t| jf| jj| jjd|S t| jf| jj| jjd|S d S )N)rn   ro   )r   r   IS_PY3r   r   __globals__Zfunc_globals)r&   r   rm   r   r   r   r   r.   ]  s     z RuntimeCompiledFunction.__call__N)r0   r1   r2   r#   r.   r   r   r   r   r   W  s   r   )r   r   )N)N)N)rf   )NN)B
__future__r   rS   r   r   rg   r   r   r8   r   distutils.corer   r   distutils.command.build_extr   r   Compiler.Mainr   r   r	   r5   r
   r   r   r   ZCompiler.TreeFragmentr   ZCompiler.StringEncodingr   Dependenciesr   r   r   Compilerr   r   Utilsr   cythonr   r   r   r   r"   r@   rG   rD   rc   re   r   r   rq   r   r   r   r   r   searchr   r   r   r   r   r   rK   r   r   r   r   r   <module>   s\    




v

