B
    d2              	   @   s  d dl mZ dZyd dlmZ W n ek
r8   eZY nX G dd deZdd Z	dZ
e Zd	d
 Zdd Zdd Zdd ZG dd deZG dd deZe  Z ZZdd  Z Z Z Z Z Z Z Z Z Z Z Z  Z!Z"duddZ#dd Z$e Z%dd  e$_& e%_'e%_(e Z) Z* Z+ Z,Z-dd Z.da/dd Z0dd  Z1d!d" Z2d#d$ Z3d%d& Z4d'd( Z5d)d* Z6d+d, Z7defd-d.Z8G d/d0 d0eZ9e9 Z:e9 Z;[9G d1d2 d2e<Z=e=d3efi Z>G d4d5 d5e>Z?G d6d7 d7e?Z@G d8d9 d9e@ZAG d:d; d;e?ZBG d<d= d=e?ZCd>d? ZDd@dA ZEdBdC ZFdDdE ZGG dFdG dGe?ZHG dHdI dIe?ZIdJdK ZJdLdM ZKeHeLdNZMyeHeNdOZOW n  ePk
r   eHeLdOZOY nX eHeQdPZReHeSdQZTdRdSdTdNdUdOdVdWdXg	ZUdYdZdPgZVd[d\d]d^gZWd_d`dagZXdbdcdddQdedfjYZZe[ Z\yd dlZ]W n ek
r$   d dl]Z]Y nX eHe^e]dgedge\dg< []xheUD ]`Z_eZe_e_Z`eHeMe`e\e_< e_dhkrDe_adXsDeHeMdie` e\dje_ < eHeMdke` e\dle_ < qDW x"eVD ]Z_eHeReZe_e_e\e_< qW x"eWD ]Z_eHeTeZe_e_e\e_< qW eHebd_ZceHdd`ZdeHddaZexNeUeV eW eX D ]:Zfx2egdmdnD ]$Zhe\ef iehe\dodpeh eff < q0W q W e\dq d ZjeI  Zk ZlZmeMeOeReTgZnG drds dseZod dlpZpeo epjqdt< [pdS )v    )absolute_importz0.29.35)
basestringc               @   s(   e Zd ZdZdgZd	ddZdd ZdS )

_ArrayTypeTdtypeFNc             C   s0   || _ || _|| _|| _|p"|p"|| _|| _d S )N)r   ndimis_c_contigis_f_contiginner_contigbroadcasting)selfr   r   r   r   r	   r
    r   Z/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/Cython/Shadow.py__init__   s    z_ArrayType.__init__c             C   s>   dg| j  }| jrd|d< n| jr*d|d< d| jd|f S )N:z::1r   z%s[%s]z, )r   r   r   r   join)r   Zaxesr   r   r   __repr__   s    
z_ArrayType.__repr__)FFFN)__name__
__module____qualname__Zis_arraysubtypesr   r   r   r   r   r   r      s
    
r   c                s   G dd dt   fdd}t|trd}xPt|D ]D\}}|| |jrj|sb|dt|d fkrj d|jdkr4|}q4W t| t||t|d k|dkd	S t|tr|| t| dt|jd
S t	||kst
t| | dS )z
    Support array type creation by slicing, e.g. double[:, :] specifies
    a 2D strided array of doubles. The syntax is the same as for
    Cython memoryviews.
    c               @   s   e Zd ZdS )z,index_type.<locals>.InvalidTypeSpecificationN)r   r   r   r   r   r   r   InvalidTypeSpecification,   s   r   c                s"   | j s| js| jdkr dd S )N)N   zDOnly a step of 1 may be provided to indicate C or Fortran contiguity)startstopstep)s)r   r   r   verify_slice/   s    z index_type.<locals>.verify_sliceNr   r   zHStep may only be provided once, and only in the first or last dimension.)r   r   )r   )	Exception
isinstancetuple	enumerater   lenr   sliceboolintAssertionErrorarray)Z	base_typeitemr   Zstep_idxidxr   r   )r   r   
index_type&   s&    



r*   Fc             C   s   | S )Nr   )xr   r   r   _empty_decoratorU   s    r,   c              K   s   t S )N)r,   )Z	arg_typesr   r   r   localsX   s    r-   c              G   s   t S )N)r,   )pathsr   r   r   test_assert_path_exists[   s    r/   c              G   s   t S )N)r,   )r.   r   r   r   test_fail_if_path_exists^   s    r0   c               @   s$   e Zd Zdd Zdd Zdd ZdS )_EmptyDecoratorAndManagerc             C   s   |S )Nr   )r   r+   r   r   r   __call__b   s    z"_EmptyDecoratorAndManager.__call__c             C   s   d S )Nr   )r   r   r   r   	__enter__d   s    z#_EmptyDecoratorAndManager.__enter__c             C   s   d S )Nr   )r   exc_type	exc_value	tracebackr   r   r   __exit__f   s    z"_EmptyDecoratorAndManager.__exit__N)r   r   r   r2   r3   r7   r   r   r   r   r1   a   s   r1   c               @   s   e Zd ZdS )_OptimizationN)r   r   r   r   r   r   r   r8   i   s   r8   c             C   s   t  S )N)r1   )_r   r   r   <lambda>r       r:   NTc             C   s   t  S )N)r1   )r9   checkr   r   r   r:   t   r;   c             C   s   t  S )N)r1   )r9   r   r   r   r:   v   r;   c             C   s   t  S )N)r1   )argr   r   r   r:   z   r;   c             C   s   t S )N)r,   )r9   r   r   r   r:   ~   r;   c             O   sX   t | tr.td krddlma t| f||S t|t|  krJdksPn t| S d S )Nr   )cython_inline)r   r   _cython_inlineCython.Build.Inliner>   r"   r&   )fargskwdsr   r   r   inline   s    
"rD   c             C   s   ddl m} || S )Nr   )RuntimeCompiledFunction)r@   rE   )rA   rE   r   r   r   compile   s    rF   c             C   s   | | }|dk r|d7 }|S )Nr   r   r   )abqr   r   r   cdiv   s    rJ   c             C   s    | | }| | dk r||8 }|S )Nr   r   )rG   rH   rr   r   r   cmod   s    rL   c             O   s2   | dd  |rtt| dr&| | S |d S d S )NZ	typecheckr2   r   )popr&   hasattr)typerB   kwargsr   r   r   cast   s
    
rQ   c             C   s   dS )Nr   r   )r=   r   r   r   sizeof   s    rR   c             C   s   | j jS )N)	__class__r   )r=   r   r   r   typeof   s    rT   c             C   s   t t| | gS )N)pointerrO   )r=   r   r   r   address   s    rV   c             K   s6   | d t fkr.t| dr.|tk	r&| |S |  S n|S d S )Nr2   )objectrN   _Unspecified)rO   valuerC   r   r   r   declare   s
    rZ   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	_nogilz=Support for 'with nogil' statement and @nogil decorator.
    c             C   s   t |r|S | S )N)callable)r   r+   r   r   r   r2      s    z_nogil.__call__c             C   s   d S )Nr   )r   r   r   r   r3      s    z_nogil.__enter__c             C   s   |d kS )Nr   )r   	exc_classexctbr   r   r   r7      s    z_nogil.__exit__N)r   r   r   __doc__r2   r3   r7   r   r   r   r   r[      s   r[   c               @   s   e Zd Zdd ZdS )CythonMetaTypec             C   s
   t | |S )N)r'   )rO   ixr   r   r   __getitem__   s    zCythonMetaType.__getitem__N)r   r   r   rc   r   r   r   r   ra      s   ra   CythonTypeObjectc               @   s   e Zd ZdddZdS )
CythonTyper   c             C   s   xt |D ]}t| } q
W | S )N)rangerU   )r   nir   r   r   _pointer   s    zCythonType._pointerN)r   )r   r   r   ri   r   r   r   r   re      s   re   c               @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )PointerTypeNc                sf   t |ttfr& fdd|jD  _n<t |trF fdd|D  _n|d ksV|dkr^g  _ntd S )Nc                s   g | ]}t  j|qS r   )rQ   	_basetype).0rG   )r   r   r   
<listcomp>   s    z(PointerType.__init__.<locals>.<listcomp>c                s   g | ]}t  j|qS r   )rQ   rk   )rl   rG   )r   r   r   rm      s    r   )r   	ArrayTyperj   _itemslist
ValueError)r   rY   r   )r   r   r      s    
zPointerType.__init__c             C   s   |dk rt d| j| S )Nr   z"negative indexing not allowed in C)
IndexErrorro   )r   rb   r   r   r   rc      s    zPointerType.__getitem__c             C   s&   |dk rt dt| j|| j|< d S )Nr   z"negative indexing not allowed in C)rr   rQ   rk   ro   )r   rb   rY   r   r   r   __setitem__   s    zPointerType.__setitem__c             C   s:   |d kr| j sdS t| t|kr&dS | j  o4|j  S d S )NTF)ro   rO   )r   rY   r   r   r   __eq__   s
    zPointerType.__eq__c             C   s   d| j f S )Nz%s *)rk   )r   r   r   r   r      s    zPointerType.__repr__)N)r   r   r   r   rc   rs   rt   r   r   r   r   r   rj      s
   

rj   c               @   s   e Zd Zdd ZdS )rn   c             C   s   d g| j  | _d S )N)_nro   )r   r   r   r   r     s    zArrayType.__init__N)r   r   r   r   r   r   r   r   rn     s   rn   c               @   s    e Zd ZefddZdd ZdS )
StructTypec             K   s   |t k	r^t|dkrtdt|t| k	r8td| xF|j D ]\}}t| || qDW n"x | D ]\}}t| || qhW d S )Nr   z-Cannot accept keyword arguments when casting.zCannot cast from %s)rX   r"   rq   rO   __dict__itemssetattr)r   	cast_fromdatakeyrY   r   r   r   r     s    zStructType.__init__c             C   s2   || j kr"t| j | || j|< ntd| d S )NzStruct has no member '%s')_membersrQ   rw   AttributeError)r   r|   rY   r   r   r   __setattr__  s    
zStructType.__setattr__N)r   r   r   rX   r   r   r   r   r   r   rv   	  s   rv   c               @   s    e Zd ZefddZdd ZdS )	UnionTypec             K   s   |t k	rRt|dkrtdt|tr,|}qVt|t| krD|j}qVtd| n|}t|dkrjtdx | D ]\}}t	| || qtW d S )Nr   z-Cannot accept keyword arguments when casting.zCannot cast from %sr   z)Union can only store one field at a time.)
rX   r"   rq   r   dictrO   rw   r~   rx   ry   )r   rz   r{   Zdatadictr|   rY   r   r   r   r   !  s    
zUnionType.__init__c             C   sJ   |dkrt | || n.|| jkr:|t| j| |i| _ntd| d S )Nrw   zUnion has no member '%s')re   r   r}   rQ   rw   r~   )r   r|   rY   r   r   r   r   3  s
    
zUnionType.__setattr__N)r   r   r   rX   r   r   r   r   r   r   r     s   r   c                s   G  fdddt }|S )Nc                   s   e Zd Z ZdS )z pointer.<locals>.PointerInstanceN)r   r   r   rk   r   )basetyper   r   PointerInstance<  s   r   )rj   )r   r   r   )r   r   rU   ;  s    rU   c                s   G  fdddt }|S )Nc                   s   e Zd Z ZZdS )zarray.<locals>.ArrayInstanceN)r   r   r   rk   ru   r   )r   rg   r   r   ArrayInstanceA  s   r   )rn   )r   rg   r   r   )r   rg   r   r'   @  s    r'   c                 s2   G  fdddt }x D ]}t||d  qW |S )Nc                   s   e Zd Z ZdS )zstruct.<locals>.StructInstanceN)r   r   r   r}   r   )membersr   r   StructInstanceG  s   r   )rv   ry   )r   r   r|   r   )r   r   structF  s    
r   c                 s2   G  fdddt }x D ]}t||d  qW |S )Nc                   s   e Zd Z ZdS )zunion.<locals>.UnionInstanceN)r   r   r   r}   r   )r   r   r   UnionInstanceN  s   r   )r   ry   )r   r   r|   r   )r   r   unionM  s    
r   c               @   s*   e Zd ZdddZdd Zdd ZeZdS )	typedefNc             C   s   || _ || _d S )N)rk   name)r   rO   r   r   r   r   r   V  s    ztypedef.__init__c             G   s   t | jf| }|S )N)rQ   rk   )r   r=   rY   r   r   r   r2   Z  s    ztypedef.__call__c             C   s   | j pt| jS )N)r   strrk   )r   r   r   r   r   ^  s    ztypedef.__repr__)N)r   r   r   r   r2   r   r*   rc   r   r   r   r   r   T  s   
r   c               @   s   e Zd ZeZdS )
_FusedTypeN)r   r   r   r*   rc   r   r   r   r   r   c  s   r   c              G   sL   | st dd}x4| D ](}|ttttfkr,P t||kr|}qW |S t S )Nz&Expected at least one type as argumentr   )	TypeErrorpy_intpy_longpy_float
py_complextype_orderingindexr   )rB   ZrankrO   Zresult_typer   r   r   
fused_typeg  s    
r   c             C   s   t ddS )zCPerhaps this should be implemented in a TreeFragment in Cython codezyet to be implementedN)r   )Z
signaturesrB   rP   r   r   r   _specialized_from_args|  s    r   r%   longfloatzdouble complexcharshort
Py_UNICODEPy_UCS4longlongZ
Py_ssize_tZsize_t
longdoubledoublelongdoublecomplexdoublecomplexfloatcomplexcomplexbintvoidPy_tss_tz	long longzlong doublezlong double complexzfloat complex)r   r   r   r   r   unicode)r   r   z	unsigned uzsigned r   r      z%s_%spZp_voidc               @   s6   e Zd ZdZdddgZdddZdddZdd ZdS )CythonDotParallelz%
    The cython.parallel module.
    parallelprangethreadidNc             C   s   t S )N)nogil)r   num_threadsr   r   r   r     s    zCythonDotParallel.parallelr   r   Fc             C   s   |d kr|}d}t |||S )Nr   )rf   )r   r   r   r   r   Zschedule	chunksizer   r   r   r   r     s    zCythonDotParallel.prangec             C   s   dS )Nr   r   )r   r   r   r   r     s    zCythonDotParallel.threadid)N)r   Nr   FNNN)r   r   r   r`   __all__r   r   r   r   r   r   r   r     s
   


r   zcython.parallel)NT)r
__future__r   __version____builtin__r   ImportErrorr   rW   r   r*   compiledrX   r,   r-   r/   r0   r1   r8   ZcclassZccallZcfuncZreturnsZ
wraparoundZboundscheckZinitializedcheckZ	nonecheckZembedsignatureZ	cdivisionZcdivision_warningsZalways_allows_keywordsZprofileZ	linetraceZinfer_typesZunraisable_tracebacksZfreelistZ	exceptvalZoverflowcheckoptimizationfoldZ
use_switchZunpack_method_callsfinalZinternalZtype_version_tagZno_gc_clearZno_gcZbindingr?   rD   rF   rJ   rL   rQ   rR   rT   rV   rZ   r[   r   ZgilrO   ra   rd   re   rj   rn   rv   r   rU   r'   r   r   r   r   r   r   r%   r   r   r   	NameErrorr   r   r   r   	int_typesZfloat_typesZcomplex_typesZother_typesgetto_reprglobalsgsbuiltinsgetattrr   Zreprnameendswithr$   r   r   r   trf   rh   ri   ZNULLZintegralZfloatingnumericr   r   sysmodulesr   r   r   r   <module>   s   
)<
		!












*