U
    {hL                     @   s  d Z G dd dZdd ZdZe Zdd Zdd	 Zd
d Zdd Z	G dd dZ
G dd dZe
  Z ZZdd  Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z  Z! Z" Z# Z$ Z% Z& Z' Z( Z)Z*dd Z+dd Z,dddZ-e Z.dd  e_/ e*_0 e._1e._2e Z3 Z4 Z5 Z6 Z7 Z8Z9dd Z:G dd dZ;da<dd Z=dd  Z>d!d" Z?d#d$ Z@d%d& ZAd'd( ZBd)d* ZCd+d, ZDd-d. ZEdefd/d0ZFG d1d2 d2ZGeG ZHeG ZIeG ZJ[GG d3d4 d4ZKG d5d6 d6eLZMeMd7efi ZNG d8d9 d9eNZOG d:d; d;eOZPG d<d= d=ePZQG d>d? d?eOZRG d@dA dAeOZSG dBdC dCePZTG dDdE dEeQZUdFdG ZVdHdI ZWG dJdK dKeOZXG dLdM dMeXZYG dNdO dOeXZZG dPdQ dQeOZ[dRdS Z\dTdU Z]eXe^dVZ_eXe^dWZ`eXeadXZbeXecdYZddZd[d\dVd]dWd^d_d`dadbdcgZedddedXgZfdfdgdhdigZgdjdkdlgZhdmdndodYdpdqjiZjek ZleXemdreldr< eeD ]`ZnejenenZoeXe_eoelen< endskrVenpdasVeXe_dteo elduen < eXe_dveo eldwen < qVefD ]ZneXebejenenelen< qegD ]ZneXedejenenelen< q[n[oeXeqdjZreXddkZseXddlZteeef eg eh D ]FZueudueu dweu fD ](ZueuelkrDeYeleu eueldxeu < qDq*evdydzD ]lZwd{D ]ZxeeD ]vZueudueu dweu fD ]XZueuelkreTeld|ewdy   ewdykrd}nd~ ex eu  eld|ew  d}ex eu < qqefeg D ]NZueTeld|ewdy   ewdykr0d}nd~ ex eu  eld|ew  d}ex eu < qqeTeld|ewdy   ewdykrd}nd~ d eld|ew  d< ehD ]FZueTeld|ewdy   ewdykrd}nd~ eu  eld|ew  d}eu < qq|[u[x[weld dZy[ldd Zze[  Z{ Z|Z}e_e`ebedgZ~G dd dZG dd dZG dd dZddlZddlZe ejd< eejd< ededejd< edejd dejd< ed Zejd< [[G dd dZeZdS )z3.1.4c                   @   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
   1/tmp/pip-unpacked-wheel-fhl22ezh/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::1    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_arrayZsubtypesr   r   r
   r
   r
   r   r   	   s       
	r   c                    s   G dd dt   fdd}t|trd}t|D ]D\}}|| |jrh|s`|dt|d fkrh d|jdkr2|}q2t| t||t|d k|dkd	S t|tr|| t| dt|jd
S t	||kst
t| |S 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)	base_typeitemr   Zstep_idxidxr   r
   r   r   
index_type!   s*    



r,   Fc                 C   s   | S r   r
   )xr
   r
   r   _empty_decoratorP   s    r.   c                  K   s   t S r   r.   )Z	arg_typesr
   r
   r   localsS   s    r0   c                  G   s   t S r   r/   pathsr
   r
   r   test_assert_path_existsV   s    r3   c                  G   s   t S r   r/   r1   r
   r
   r   test_fail_if_path_existsY   s    r4   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_EmptyDecoratorAndManagerc                 C   s   |S r   r
   r	   r-   r
   r
   r   __call__]   s    z"_EmptyDecoratorAndManager.__call__c                 C   s   d S r   r
   r	   r
   r
   r   	__enter___   s    z#_EmptyDecoratorAndManager.__enter__c                 C   s   d S r   r
   r	   exc_type	exc_value	tracebackr
   r
   r   __exit__a   s    z"_EmptyDecoratorAndManager.__exit__N)r   r   r   r7   r9   r>   r
   r
   r
   r   r5   \   s   r5   c                   @   s   e Zd ZdS )_OptimizationNr   r
   r
   r
   r   r?   d   s   r?   c                 C   s   t  S r   r5   _r
   r
   r   <lambda>q       rC   c                 C   s   t  S r   r@   rA   r
   r
   r   rC   t   rD   c                 C   s   t  S r   r@   rA   r
   r
   r   rC   v   rD   NTc                 C   s   t  S r   r@   )rB   checkr
   r
   r   rC   x   rD   c                 C   s   t  S r   r@   argr
   r
   r   rC   ~   rD   c                 C   s   t S r   r/   rA   r
   r
   r   rC      rD   c                   @   s(   e Zd Zdd  Z Z Z Z ZZdS )warnc                 C   s   t  S r   r@   rA   r
   r
   r   rC      rD   zwarn.<lambda>N)	r   r   r   Z
undeclaredZunreachableZmaybe_uninitializedZunusedZ
unused_argZunused_resultr
   r
   r
   r   rH      s
    rH   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    str_cython_inlineCython.Build.InlinerI   r#   r'   )fargskwdsr
   r
   r   inline   s    
"rP   c                 C   s   ddl m} || S )Nr   )RuntimeCompiledFunction)rL   rQ   )rM   rQ   r
   r
   r   compile   s    rR   c                 C   s4   | dk r|  } | }|dk r,| | d | S | | S )Nr   r   r
   )abr
   r
   r   cdiv   s    rU   c                 C   s$   | | }| | dk r |r ||8 }|S Nr   r
   )rS   rT   rr
   r
   r   cmod   s    rX   c                 O   sf   | dd  |rtt| tr&| | S t| tr^t|dksV|d d ks^t|d | s^| | S |d S )NZ	typecheckr   r   )popr'   r    typedeftyper#   )trN   kwargsr
   r
   r   cast   s    

&r^   c                 C   s   dS r   r
   rF   r
   r
   r   sizeof   s    r_   c                 C   s   | j jS r   )	__class__r   rF   r
   r
   r   typeof   s    ra   c                 C   s   t t| | gS r   )pointerr[   rF   r
   r
   r   address   s    rc   c                 C   s.   t | trt| jS t | to,t| tttfS r   )	r    rZ   _is_value_type	_basetyper[   
issubclass
StructType	UnionType	ArrayType)r\   r
   r
   r   rd      s    

rd   c                 K   s(   |t k	rt| |S t| r |  S d S d S r   )_Unspecifiedr^   rd   )r\   valuerO   r
   r
   r   declare   s
    
rl   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 r   )callabler6   r
   r
   r   r7      s    z_nogil.__call__c                 C   s   d S r   r
   r8   r
   r
   r   r9      s    z_nogil.__enter__c                 C   s   |d kS r   r
   r	   	exc_classexctbr
   r
   r   r>      s    z_nogil.__exit__N)r   r   r   __doc__r7   r9   r>   r
   r
   r
   r   rm      s   rm   c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )critical_sectionNc                 C   s
   || _ d S r   arg0)r	   rv   Zarg1r
   r
   r   r      s    zcritical_section.__init__c                 O   s   | j ||S r   ru   )r	   rN   rO   r
   r
   r   r7      s    zcritical_section.__call__c                 C   s   d S r   r
   r8   r
   r
   r   r9      s    zcritical_section.__enter__c                 C   s   dS )NFr
   ro   r
   r
   r   r>      s    zcritical_section.__exit__)N)r   r   r   r   r7   r9   r>   r
   r
   r
   r   rt      s   
rt   c                   @   s   e Zd Zdd ZdS )CythonMetaTypec                 C   s
   t | |S r   )r(   )r[   ixr
   r
   r   __getitem__   s    zCythonMetaType.__getitem__N)r   r   r   ry   r
   r
   r
   r   rw      s   rw   CythonTypeObjectc                   @   s   e Zd ZdddZdS )
CythonTyper   c                 C   s   t |D ]}t| } q| S r   )rangerb   )r	   nir
   r
   r   _pointer   s    
zCythonType._pointerN)r   )r   r   r   r   r
   r
   r
   r   r{      s   r{   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
   r^   re   .0rS   r8   r
   r   
<listcomp>	  s     z(PointerType.__init__.<locals>.<listcomp>c                    s   g | ]}t  j|qS r
   r   r   r8   r
   r   r     s     r   )r    ri   r   _itemslist
ValueErrorr	   rk   r
   r8   r   r     s    
zPointerType.__init__c                 C   s   |dk rt d| j| S Nr   z"negative indexing not allowed in C)
IndexErrorr   )r	   rx   r
   r
   r   ry     s    zPointerType.__getitem__c                 C   s&   |dk rt dt| j|| j|< d S r   )r   r^   re   r   )r	   rx   rk   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)r   r[   r   r
   r
   r   __eq__  s
    zPointerType.__eq__c                 C   s   | j  dS )Nz *)re   r8   r
   r
   r   r   #  s    zPointerType.__repr__)N)r   r   r   r   ry   r   r   r   r
   r
   r
   r   r     s
   

r   c                       s   e Zd Zd fdd	Z  ZS )ri   Nc                    s(   |d krd g| j  | _nt | d S r   )_nr   superr   r   r`   r
   r   r   )  s    zArrayType.__init__)N)r   r   r   r   __classcell__r
   r
   r   r   ri   '  s   ri   c                   @   s   e Zd Zdd Zdd ZdS )rg   c                 O   s*  |s|sd S |r|rt d|r@t|dkr@d|kr@|d}nt|dkrpt|d t| krp|d d }}nj|rt| j|D ]\}}t| || qd S | D ]2\}}|| jkrt d| jj	|f t| || qd S |rt dt|t| k	rt d| |j
 D ]\}}t| || qd S )	Nz4Cannot accept both positional and keyword arguments.r   	cast_fromr   r
   z#Invalid struct attribute for %s: %s-Cannot accept keyword arguments when casting.Cannot cast from %s)r   r#   rY   r[   zip_memberssetattritemsr`   r   __dict__)r	   Zposargsdatar   keyrG   rk   r
   r
   r   r   2  s4     
 zStructType.__init__c                 C   s2   || j kr"t| j | || j|< ntd| d S )NzStruct has no member '%s')r   r^   r   AttributeErrorr	   r   rk   r
   r
   r   __setattr__Q  s    
zStructType.__setattr__N)r   r   r   r   r   r
   r
   r
   r   rg   0  s   rg   c                   @   s    e Zd ZefddZdd ZdS )rh   c                 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| D ]\}}t	| || qrd S )Nr   r   r   r   z)Union can only store one field at a time.)
rj   r#   r   r    dictr[   r   r   r   r   )r	   r   r   Zdatadictr   rk   r
   r
   r   r   Z  s    
zUnionType.__init__c                 C   sJ   |dkrt | || n.|| jkr:|t| j| |i| _ntd| d S )Nr   zUnion has no member '%s')r{   r   r   r^   r   r   r   r
   r
   r   r   l  s
    
zUnionType.__setattr__N)r   r   r   rj   r   r   r
   r
   r
   r   rh   X  s   rh   c                   @   s   e Zd Zdd Zdd ZdS )rb   c                    s   G  fdddt }|S )Nc                       s   e Zd Z ZdS )z(pointer.__new__.<locals>.PointerInstanceN)r   r   r   re   r
   basetyper
   r   PointerInstancex  s   r   )r   )clsr   r   r
   r   r   __new__w  s    zpointer.__new__c                 C   s   | |S r   r
   )r   r   r
   r
   r   __class_getitem__|  s    zpointer.__class_getitem__Nr   r   r   r   r   r
   r
   r
   r   rb   u  s   rb   c                   @   s   e Zd Zdd Zdd ZdS )r(   c                    s   G  fdddt }|S )Nc                       s   e Zd Z ZZdS )z$array.__new__.<locals>.ArrayInstanceN)r   r   r   re   r   r
   r   r}   r
   r   ArrayInstance  s   r   )ri   )r   r   r}   r   r
   r   r   r     s    zarray.__new__c                 C   s   |\}}| ||S r   r
   )r   r*   r   r}   r
   r
   r   r     s    zarray.__class_getitem__Nr   r
   r
   r
   r   r(     s   r(   c                     s.   G  fdddt } D ]}t||d  q|S )Nc                       s   e Zd Z ZdS )zstruct.<locals>.StructInstanceNr   r   r   r   r
   membersr
   r   StructInstance  s   r   )rg   r   )r   r   r   r
   r   r   struct  s    r   c                     s.   G  fdddt } D ]}t||d  q|S )Nc                       s   e Zd Z ZdS )zunion.<locals>.UnionInstanceNr   r
   r   r
   r   UnionInstance  s   r   )rh   r   )r   r   r   r
   r   r   union  s    r   c                   @   s*   e Zd ZdddZdd Zdd ZeZdS )	rZ   Nc                 C   s   || _ || _d S r   )re   namer	   r[   r   r
   r
   r   r     s    ztypedef.__init__c                 G   s   t | jf| }|S r   r   )r	   rG   rk   r
   r
   r   r7     s    ztypedef.__call__c                 C   s   | j pt| jS r   )r   rJ   re   r8   r
   r
   r   r     s    ztypedef.__repr__)N)r   r   r   r   r7   r   r,   ry   r
   r
   r
   r   rZ     s   
rZ   c                       s&   e Zd Zd fdd	Zdd Z  ZS )constNc                    s$   d|pt | }t || d S )Nzconst reprr   r   r   r   r
   r   r     s    zconst.__init__c                 C   s   t |S r   )r   r   r)   r
   r
   r   r     s    zconst.__class_getitem__)Nr   r   r   r   r   r   r
   r
   r   r   r     s   r   c                       s&   e Zd Zd fdd	Zdd Z  ZS )volatileNc                    s$   d|pt | }t || d S )Nz	volatile r   r   r   r
   r   r     s    zvolatile.__init__c                 C   s   t |S r   )r   r   r
   r
   r   r     s    zvolatile.__class_getitem__)Nr   r
   r
   r   r   r     s   r   c                   @   s   e Zd ZeZdS )
_FusedTypeN)r   r   r   r,   ry   r
   r
   r
   r   r     s   r   c                  G   sJ   | st dd}| D ]*}|ttttfkr, qDt||kr|}q|S t S )Nz&Expected at least one type as argumentr   )	TypeErrorpy_intpy_longpy_float
py_complextype_orderingindexr   )rN   Zrankr[   Zresult_typer
   r
   r   
fused_type  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
signaturesrN   r]   r
   r
   r   _specialized_from_args  s    r   r&   longfloatzdouble complexcharshort
Py_UNICODEPy_UCS4longlong	Py_hash_tZ
Py_ssize_tZsize_tZssize_t	ptrdiff_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   r   r   z	unsigned uzsigned r   const_r      ) r   prB   r   Z
const_bintZ_const_bintZp_voidr   c                 C   s4   | dkr"dd l }|dt t S td| d S )Ngsr   zQ'gs' is not a publicly exposed name in cython.*. Use vars() or globals() instead.z'cython' has no attribute )warningsrH   DeprecationWarningglobalsr   )r   r   r
   r
   r   __getattr__>  s    r   c                   @   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 r   )nogil)r	   num_threadsr
   r
   r   r   T  s    zCythonDotParallel.parallelr   r   Fc                 C   s   |d kr|}d}t |||S rV   )r|   )r	   r   r   r   r   schedule	chunksizer   r
   r
   r   r   W  s    zCythonDotParallel.prangec                 C   s   dS rV   r
   r8   r
   r
   r   r   ]  s    zCythonDotParallel.threadid)N)r   Nr   FNNN)r   r   r   rs   __all__r   r   r   r
   r
   r
   r   r   M  s
   


r   c                   @   s    e Zd ZdZdd Zdd ZdS )CythonDotImportedFromElsewherezW
    cython.dataclasses just shadows the standard library modules of the same name
    c                 C   s   g | _ d | _|| _|| _d S r   )__path____file__r   __package__)r	   moduler
   r
   r   r   g  s    z'CythonDotImportedFromElsewhere.__init__c                 C   sd   ddl m} dd l}z|| j}W n& tk
rH   td|| jf Y nX ||jd| j < t||S )Nr   import_modulez3%s: the standard library module %s is not availablez	cython.%s)	importlibr   sysr   ImportErrorr   modulesgetattr)r	   attrr   r   modr
   r
   r   r   m  s    z*CythonDotImportedFromElsewhere.__getattr__Nr   r   r   rs   r   r   r
   r
   r
   r   r   c  s   r   c                   @   s    e Zd ZdZdd Zdd ZdS )CythonCImportszN
    Simplistic module mock to make cimports sort-of work in Python code.
    c                 K   s,   g | _ d | _|| _|| _|r(| j| d S r   )r   r   r   r   r   update)r	   r   
attributesr
   r
   r   r     s    zCythonCImports.__init__c                 C   sv   | dr|drt|| jtdd  }ddlm} z|||pFd W S  tk
rp   t|}d |_|Y nX d S )N__zcython.cimports.r   r   )	
startswithendswithr   r   r#   r   r   r   	__cause__)r	   r*   packager   exr
   r
   r   r     s    zCythonCImports.__getattr__Nr   r
   r
   r
   r   r   {  s   r   zcython.parallelzcython.cimports.libc.mathzcython.cimports.libc)mathzcython.cimports)libcdataclasseszcython.dataclassesc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )pymutexc                 C   s   dd l }| | _d S rV   )	threadingLock_l)r	   r  r
   r
   r   r     s    zpymutex.__init__c                 C   s
   | j  S r   )r  acquirer8   r
   r
   r   r    s    zpymutex.acquirec                 C   s
   | j  S r   )r  releaser8   r
   r
   r   r    s    zpymutex.releasec                 C   s
   | j  S r   )r  r9   r8   r
   r
   r   r9     s    zpymutex.__enter__c                 C   s   | j |||S r   )r  r>   r:   r
   r
   r   r>     s    zpymutex.__exit__N)r   r   r   r   r  r  r9   r>   r
   r
   r
   r   r    s
   r  )NT)__version__r   r,   Zcompiledobjectrj   r.   r0   r3   r4   r5   r?   ZcclassZccallZcfuncZannotation_typingZreturnsZ
wraparoundZboundscheckZinitializedcheckZ	nonecheckZembedsignatureZ	cdivisionZcdivision_warningsZalways_allow_keywordsZprofileZ	linetraceZinfer_typesZunraisable_tracebacksZfreelistZauto_pickleZcpowZtrashcanZ
auto_cpdefZc_api_binop_methodsZallow_none_for_extension_argsZcallspecZshow_performance_hintsZ
cpp_localsZ
py2_importZiterable_coroutineZremove_unreachableZoverflowcheckZfast_getattrZc_compile_guardZ	exceptvaloptimizeformatfoldZ
use_switchZunpack_method_callsfinalZinternalZtype_version_tagZno_gc_clearZno_gctotal_orderingZufuncZbindingrH   rK   rP   rR   rU   rX   r^   r_   ra   rc   rd   rl   rm   r   ZgilZwith_gilrt   r[   rw   rz   r{   r   ri   rg   rh   rb   r(   r   r   rZ   r   r   r   r   r   r&   r   r   r   r   r   r   	int_typesZfloat_typesZcomplex_typesZother_typesgetZto_reprr   r   rJ   r   Zreprnamer   r%   r   r   r   r\   r|   r~   r   ZNULLr   ZintegralZfloatingnumericr   r   r   r   r   r   r   r  r  Zpythread_type_lockr
   r
   r
   r   <module>   sx  )

	"	(		








 
PP:H
