U
    ce}C                     @   s  d dl mZ dZz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" Z# Z$ Z% Z& Z' Z( Z) Z* Z+ Z, Z- Z.Z/dd Z0dddZ1dd Z2e Z3dd  e_4 e2_5 e3_6e3_7e Z8 Z9 Z: Z; Z< Z=Z>dd Z?G dd dZ@daAd d! ZBd"d# ZCd$d% ZDd&d' ZEd(d) ZFd*d+ ZGd,d- ZHd.d/ ZId0d1 ZJdefd2d3ZKG d4d5 d5eZLeL ZMeL ZNeL ZO[LG d6d7 d7ePZQeQd8efi ZRG d9d: d:eRZSG d;d< d<eSZTG d=d> d>eTZUG d?d@ d@eSZVG dAdB dBeSZWdCdD ZXdEdF ZYdGdH ZZdIdJ Z[G dKdL dLeSZ\G dMdN dNeSZ]dOdP Z^dQdR Z_e\e`dSZaze\ebdTZcW n  edk
r   e\e`dTZcY nX e\eedUZfe\egdVZhdWdXdYdSdZdTd[d\d]d^d_d`gZidadbdUgZjdcdddedfgZkdgdhdigZldjdkdldVdmdnjmZneo Zpzd dlZqW n ek
r   d dlqZqY nX e\ereqdoedoepdo< [qeiD ]`ZsenesesZte\eaetepes< esdpkresud^se\eadqet epdres < e\eadset epdtes < qejD ]Zse\efenesesepes< qekD ]Zse\ehenesesepes< q4e\evdgZwe\ddhZxe\ddiZyeiD ]Zze{dudvD ]vZ|epez }e|epdwdxe| ezf < drez epkrepdrez  }e|epdydxe| ezf < epdtez  }e|epdzdxe| ezf < qqrejek el D ]6Zze{dudvD ]$Z|epez }e|epdwdxe| ezf < qq[z[|epd{ d Z~e]  Z ZZeaecefehgZG d|d} d}eZG d~d deZG dd deZd dlZd dlZe ejd< edejd< edejd< eejd< ed Zejd< [[dS )    )absolute_importz3.0.8)
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   ,lib/python3.8/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_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_slice0   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 r   r   )xr   r   r   _empty_decoratorV   s    r/   c                  K   s   t S r   r/   )Z	arg_typesr   r   r   localsY   s    r1   c                  G   s   t S r   r0   pathsr   r   r   test_assert_path_exists\   s    r4   c                  G   s   t S r   r0   r2   r   r   r   test_fail_if_path_exists_   s    r5   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__c   s    z"_EmptyDecoratorAndManager.__call__c                 C   s   d S r   r   r   r   r   r   	__enter__e   s    z#_EmptyDecoratorAndManager.__enter__c                 C   s   d S r   r   )r   exc_type	exc_value	tracebackr   r   r   __exit__g   s    z"_EmptyDecoratorAndManager.__exit__N)r   r   r   r8   r:   r>   r   r   r   r   r6   b   s   r6   c                   @   s   e Zd ZdS )_OptimizationNr   r   r   r   r   r?   j   s   r?   c                 C   s   t  S r   r6   _r   r   r   <lambda>v       rC   c                 C   s   t  S r   r@   rA   r   r   r   rC   y   rD   NTc                 C   s   t  S r   r@   )rB   Zcheckr   r   r   rC   {   rD   c                 C   s   t  S r   r@   rA   r   r   r   rC   }   rD   c                 C   s   t  S r   r@   argr   r   r   rC      rD   c                 C   s   t S r   r0   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   rG      s
    rG   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.InlinerH   r%   r)   )fargskwdsr   r   r   inline   s    
"rN   c                 C   s   ddl m} || S )Nr   )RuntimeCompiledFunction)rJ   rO   )rK   rO   r   r   r   compile   s    rP   c                 C   s4   | dk r|  } | }|dk r,| | d | S | | S )Nr   r   r   )abr   r   r   cdiv   s    rS   c                 C   s$   | | }| | dk r |r ||8 }|S Nr   r   )rQ   rR   rr   r   r   cmod   s    rV   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%   )trL   kwargsr   r   r   cast   s    

&r\   c                 C   s   dS r   r   rE   r   r   r   sizeof   s    r]   c                 C   s   | j jS r   )	__class__r   rE   r   r   r   typeof   s    r_   c                 C   s   t t| | gS r   )pointerrY   rE   r   r   r   address   s    ra   c                 C   s.   t | trt| jS t | to,t| tttfS r   )	r"   rX   _is_value_type	_basetyperY   
issubclass
StructType	UnionType	ArrayType)rZ   r   r   r   rb      s    

rb   c                 K   s(   |t k	rt| |S t| r |  S d S d S r   )_Unspecifiedr\   rb   )rZ   valuerM   r   r   r   declare   s
    
rj   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   )callabler7   r   r   r   r8      s    z_nogil.__call__c                 C   s   d S r   r   r9   r   r   r   r:      s    z_nogil.__enter__c                 C   s   |d kS r   r   )r   Z	exc_classexctbr   r   r   r>      s    z_nogil.__exit__N)r   r   r   __doc__r8   r:   r>   r   r   r   r   rk      s   rk   c                   @   s   e Zd Zdd ZdS )CythonMetaTypec                 C   s
   t | |S r   )r*   )rY   ixr   r   r   __getitem__   s    zCythonMetaType.__getitem__N)r   r   r   rr   r   r   r   r   rp      s   rp   CythonTypeObjectc                   @   s   e Zd ZdddZdS )
CythonTyper   c                 C   s   t |D ]}t| } q| S r   )ranger`   )r   nir   r   r   _pointer   s    
zCythonType._pointerN)r   )r   r   r   rx   r   r   r   r   rt      s   rt   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\   rc   .0rQ   r9   r   r   
<listcomp>   s     z(PointerType.__init__.<locals>.<listcomp>c                    s   g | ]}t  j|qS r   rz   r{   r9   r   r   r}     s     r   )r"   rg   ry   _itemslist
ValueErrorr   ri   r   r9   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   rq   r   r   r   rr     s    zPointerType.__getitem__c                 C   s&   |dk rt dt| j|| j|< d S r   )r   r\   rc   r~   )r   rq   ri   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~   rY   r   r   r   r   __eq__  s
    zPointerType.__eq__c                 C   s   d| j f S )Nz%s *)rc   r9   r   r   r   r     s    zPointerType.__repr__)N)r   r   r   r   rr   r   r   r   r   r   r   r   ry      s
   

ry   c                       s   e Zd Zd fdd	Z  ZS )rg   Nc                    s,   |d krd g| j  | _ntt| | d S r   )_nr~   superrg   r   r   r^   r   r   r     s    zArrayType.__init__)N)r   r   r   r   __classcell__r   r   r   r   rg     s   rg   c                   @   s   e Zd Zdd Zdd ZdS )re   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%   rW   rY   zip_memberssetattritemsr^   r   __dict__)r   Zposargsdatar   keyrF   ri   r   r   r   r   (  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   ri   r   r   r   __setattr__G  s    
zStructType.__setattr__N)r   r   r   r   r   r   r   r   r   re   &  s   re   c                   @   s    e Zd ZefddZdd ZdS )rf   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.)
rh   r%   r   r"   dictrY   r   r   r   r   )r   r   r   Zdatadictr   ri   r   r   r   r   P  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')rt   r   r   r\   r   r   r   r   r   r   r   b  s
    
zUnionType.__setattr__N)r   r   r   rh   r   r   r   r   r   r   rf   N  s   rf   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   rc   r   basetyper   r   PointerInstancek  s   r   )ry   )r   r   r   r   r   r`   j  s    r`   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   rc   r   r   r   rv   r   r   ArrayInstancep  s   r   )rg   )r   rv   r   r   r   r   r*   o  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   StructInstancev  s   r   )re   r   )r   r   r   r   r   r   structu  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   )rf   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 )	rX   Nc                 C   s   || _ || _d S r   )rc   name)r   rY   r   r   r   r   r     s    ztypedef.__init__c                 G   s   t | jf| }|S r   rz   )r   rF   ri   r   r   r   r8     s    ztypedef.__call__c                 C   s   | j pt| jS r   )r   strrc   r9   r   r   r   r     s    ztypedef.__repr__)N)r   r   r   r   r8   r   r-   rr   r   r   r   r   rX     s   
rX   c                   @   s   e Zd ZeZdS )
_FusedTypeN)r   r   r   r-   rr   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   )rL   ZrankrY   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
signaturesrL   r[   r   r   r   _specialized_from_args  s    r   r(   longfloatzdouble complexcharZshort
Py_UNICODEPy_UCS4longlong	Py_hash_tZ
Py_ssize_tZsize_tZssize_t	ptrdiff_t
longdoubleZdoublelongdoublecomplexdoublecomplexfloatcomplexcomplexbintvoidPy_tss_tz	long longzlong doublezlong double complexzfloat complex)r   r   r   r   r   Zunicode)r   r   r   r   z	unsigned uzsigned r   r      z%s_%spz%s_u%sz%s_s%sZ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 r   )nogil)r   num_threadsr   r   r   r     s    zCythonDotParallel.parallelr   r   Fc                 C   s   |d kr|}d}t |||S rT   )ru   )r   r   r   r   r   ZscheduleZ	chunksizer   r   r   r   r     s    zCythonDotParallel.prangec                 C   s   dS rT   r   r9   r   r   r   r   $  s    zCythonDotParallel.threadid)N)r   Nr   FNNN)r   r   r   ro   __all__r   r   r   r   r   r   r   r     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   .  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   __getattr__4  s    z*CythonDotImportedFromElsewhere.__getattr__Nr   r   r   ro   r   r   r   r   r   r   r   *  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                 C   s   g | _ d | _|| _|| _d S r   r   r   r   r   r   r   F  s    zCythonCImports.__init__c                 C   sd   | dr|drt|z
t|W S  tk
r^   dd l}t|}|jdkrVd |_|Y nX d S )N__r   )   r   )
startswithendswithr   
__import__r   r   version_info	__cause__)r   r+   r   exr   r   r   r   L  s    

zCythonCImports.__getattr__Nr   r   r   r   r   r   B  s   r   zcython.parallelzcython.cimportszcython.cimports.libczcython.cimports.libc.mathdataclasseszcython.dataclasses)NT)Z
__future__r   __version__Z__builtin__r   r   r   objectr   r-   Zcompiledrh   r/   r1   r4   r5   r6   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fast_getattrZ	exceptvalZoverflowcheckoptimizeformatZfoldZ
use_switchZunpack_method_callsfinalZinternalZtype_version_tagZno_gc_clearZno_gctotal_orderingZufuncZbindingrG   rI   rN   rP   rS   rV   r\   r]   r_   ra   rb   rj   rk   r   ZgilZwith_gilrY   rp   rs   rt   ry   rg   re   rf   r`   r*   r   r   rX   r   r   r   r(   r   r   r   	NameErrorr   r   r   r   Z	int_typesZfloat_typesZcomplex_typesZother_typesgetZto_reprglobalsZgsbuiltinsr   r   Zreprnamer   r'   r   r   r   rZ   ru   rw   rx   ZNULLZintegralZfloatingnumericr   r   r   r   Zmathr   r   r   r   r   r   r   <module>   sr  
)	 
	!	(






"*&
