o
    eB                     @   s  d dl mZ dZzd dlmZ W n ey   eZY nw 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#dxddZ$dd Z%e Z&dd  e_' e%_( e&_)e&_*e Z+ Z, Z- Z. Z/Z0dd Z1da2dd Z3dd  Z4d!d" Z5d#d$ Z6d%d& Z7d'd( Z8d)d* Z9d+d, Z:d-d. Z;defd/d0Z<G d1d2 d2eZ=e= Z>e= Z?e= Z@[=G d3d4 d4eAZBeBd5efi ZCG d6d7 d7eCZDG d8d9 d9eDZEG d:d; d;eEZFG d<d= d=eDZGG d>d? d?eDZHd@dA ZIdBdC ZJdDdE ZKdFdG ZLG dHdI dIeDZMG dJdK dKeDZNdLdM ZOdNdO ZPeMeQdPZRzeMeSdQZTW n eUyW   eMeQdQZTY nw eMeVdRZWeMeXdSZYg dTZZg dUZ[g dVZ\g dWZ]dXdYdZdSd[d\j^Z_e` Zazd dlZbW n ey   d dlbZbY nw eMecebd]ed]ead]< [beZD ]0Zde_ededZeeMeReeeaed< edd^vredfd_seMeRd`ee eadaed < eMeRdbee eadced < qe[D ]ZdeMeWe_ededeaed< qe\D ]ZdeMeYe_ededeaed< qeMegddZheMddeZieMddfZjeZe[ e\ e] D ]ZkeldgdhD ]Zmeaek nemeadidjem ekf < qq	eadk d ZoeN  Zp ZqZreReTeWeYgZsG dldm dmeZtG dndo doeZuG dpdq dqeZvd dlwZwd dlxZxet exjydr< evdsexjyds< evdtexjydt< ewexjydu< eudv Zzexjydw< [w[xdS )y    )absolute_importz3.0.2)
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   =D:\Projects\ConvertPro\env\Lib\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rNd}t|D ]"\}}|| |jr4|s0|dt|d fvr4 d|jdkr;|}qt| t||t|d k|dkd	S t|tra|| t| dt|jd
S t	||ksiJ t
| |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                   @      e Zd ZdS )z,index_type.<locals>.InvalidTypeSpecificationNr   r   r   r   r   r   r   InvalidTypeSpecification-       r   c                    s"   | j s| js| jdv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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      r1   c                  K      t S r   r1   )Z	arg_typesr   r   r   localsY   r2   r5   c                  G   r3   r   r4   pathsr   r   r   test_assert_path_exists\   r2   r8   c                  G   r3   r   r4   r6   r   r   r   test_fail_if_path_exists_   r2   r9   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_EmptyDecoratorAndManagerc                 C   s   |S r   r   r   r0   r   r   r   __call__c   r2   z"_EmptyDecoratorAndManager.__call__c                 C      d S r   r   r   r   r   r   	__enter__e   r2   z#_EmptyDecoratorAndManager.__enter__c                 C   r=   r   r   )r   exc_type	exc_value	tracebackr   r   r   __exit__g   r2   z"_EmptyDecoratorAndManager.__exit__N)r   r   r   r<   r?   rC   r   r   r   r   r:   b   s    r:   c                   @   r   )_OptimizationNr   r   r   r   r   rD   j   r   rD   c                 C      t  S r   r:   _r   r   r   <lambda>s       rI   NTc                 C   rE   r   rF   )rH   checkr   r   r   rI   u   rJ   c                 C   rE   r   rF   rG   r   r   r   rI   w   rJ   c                 C   rE   r   rF   argr   r   r   rI   |   rJ   c                 C   r3   r   r4   rG   r   r   r   rI      s    c                 O   s\   t | trtd u rddlma t| g|R i |S t|t|  kr)dks,J  J | S )Nr   )cython_inline)r%   r   _cython_inlineCython.Build.InlinerN   r(   )fargskwdsr   r   r   inline   s   
$rT   c                 C   s   ddl m} || S )Nr   )RuntimeCompiledFunction)rP   rU   )rQ   rU   r   r   r   compile   s   rV   c                 C   s4   | dk r
|  } | }|dk r| | d | S | | S )Nr   r   r   )abr   r   r   cdiv   s   rY   c                 C   s$   | | }| | dk r|r||8 }|S Nr   r   )rW   rX   rr   r   r   cmod   s   r\   c                 O   sf   | dd  |r
J t| tr| | S t| tr/t|dks+|d d u s/t|d | s/| | S |d S )NZ	typecheckr   r   )popr%   typedeftyper(   )trR   kwargsr   r   r   cast   s   

&rb   c                 C      dS r   r   rL   r   r   r   sizeof   r2   rd   c                 C   s   | j jS r   )	__class__r   rL   r   r   r   typeof      rf   c                 C   s   t t| | gS r   )pointerr_   rL   r   r   r   address   s   ri   c                 C   s.   t | tr
t| jS t | tot| tttfS r   )	r%   r^   _is_value_type	_basetyper_   
issubclass
StructType	UnionType	ArrayType)r`   r   r   r   rj      s   

rj   c                 K   s$   |t ur	t| |S t| r|  S d S r   )_Unspecifiedrb   rj   )r`   valuerS   r   r   r   declare   s
   
rr   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   )callabler;   r   r   r   r<      s   z_nogil.__call__c                 C   r=   r   r   r>   r   r   r   r?      r2   z_nogil.__enter__c                 C   s   |d u S r   r   )r   	exc_classexctbr   r   r   rC      rg   z_nogil.__exit__N)r   r   r   __doc__r<   r?   rC   r   r   r   r   rs      s
    rs   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   r{   r   r   r   r   ry      s    ry   CythonTypeObjectc                   @   s   e Zd ZdddZdS )
CythonTyper   c                 C   s   t |D ]}t| } q| S r   )rangerh   )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                    sh   t |ttfr fdd|jD  _d S t |tr% fdd|D  _d S |d u s-|dkr2g  _d S t)Nc                       g | ]}t  j|qS r   rb   rk   .0rW   r>   r   r   
<listcomp>       z(PointerType.__init__.<locals>.<listcomp>c                    r   r   r   r   r>   r   r   r      r   r   )r%   ro   r   _itemslist
ValueErrorr   rq   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)
IndexErrorr   )r   rz   r   r   r   r{      s   
zPointerType.__getitem__c                 C   s&   |dk rt dt| j|| j|< d S r   )r   rb   rk   r   )r   rz   rq   r   r   r   __setitem__  s   zPointerType.__setitem__c                 C   s6   |d u r	| j s	dS t| t|krdS | j  o|j  S )NTF)r   r_   r   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__r   )r   r   r   r   r{   r   r   r   r   r   r   r   r      s    

r   c                       s   e Zd Zd fdd	Z  ZS )ro   Nc                    s.   |d u rd g| j  | _d S tt| | d S r   )_nr   superro   r   r   re   r   r   r     s   zArrayType.__init__r   )r   r   r   r   __classcell__r   r   r   r   ro     s    ro   c                   @   s   e Zd Zdd Zdd ZdS )rm   c                 O   s&  |s|sd S |r|rt d|r t|dkr d|v r |d}nMt|dkr8t|d t| u r8|d d}}n5|rMt| j|D ]
\}}t| || q@d S | D ]\}}|| jvrdt d| jj	|f t| || qQd S |rst dt|t| urt d| |j
 D ]
\}}t| || qd 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(   r]   r_   zip_memberssetattritemsre   r   __dict__)r   Zposargsdatar   keyrM   rq   r   r   r   r     s4    
zStructType.__init__c                 C   s0   || j v rt| j | || j|< d S td| )NzStruct has no member '%s')r   rb   r   AttributeErrorr   r   rq   r   r   r   __setattr__;  s   
zStructType.__setattr__N)r   r   r   r   r   r   r   r   r   rm     s    rm   c                   @   s    e Zd ZefddZdd ZdS )rn   c                 K   s   |t ur(t|dkrtdt|tr|}nt|t| u r"|j}ntd| |}t|dkr4td| D ]
\}}t	| || q8d S )Nr   r   r   r   z)Union can only store one field at a time.)
rp   r(   r   r%   dictr_   r   r   r   r   )r   r   r   Zdatadictr   rq   r   r   r   r   D  s   
zUnionType.__init__c                 C   sJ   |dkrt | || d S || jv r|t| j| |i| _d S td| )Nr   zUnion has no member '%s')r}   r   r   rb   r   r   r   r   r   r   r   V  s
   
zUnionType.__setattr__N)r   r   r   rp   r   r   r   r   r   r   rn   B  s    rn   c                    s   G  fdddt }|S )Nc                          e Zd Z ZdS )z pointer.<locals>.PointerInstanceN)r   r   r   rk   r   basetyper   r   PointerInstance_      r   )r   )r   r   r   r   r   rh   ^  s   rh   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   r   r   r   r   r   r   ArrayInstanced  s    r   )ro   )r   r   r   r   r   r   r,   c  s   r,   c                     .   G  fdddt } D ]}t||d  q|S )Nc                       r   )zstruct.<locals>.StructInstanceNr   r   r   r   r   membersr   r   StructInstancej  r   r   )rm   r   )r   r   r   r   r   r   structi     r   c                     r   )Nc                       r   )zunion.<locals>.UnionInstanceNr   r   r   r   r   UnionInstanceq  r   r   )rn   r   )r   r   r   r   r   r   unionp  r   r   c                   @   s*   e Zd ZdddZdd Zdd ZeZdS )	r^   Nc                 C   s   || _ || _d S r   )rk   name)r   r_   r   r   r   r   r   y  s   
ztypedef.__init__c                 G   s   t | jg|R  }|S r   r   )r   rM   rq   r   r   r   r<   }  s   ztypedef.__call__c                 C   s   | j pt| jS r   )r   strrk   r>   r   r   r   r     s   ztypedef.__repr__r   )r   r   r   r   r<   r   r/   r{   r   r   r   r   r^   w  s
    
r^   c                   @   s   e Zd ZeZdS )
_FusedTypeN)r   r   r   r/   r{   r   r   r   r   r     r   r   c                  G   sH   | st dd}| D ]}|ttttfvr t S t||kr!|}q
|S )Nz&Expected at least one type as argumentr   )	TypeErrorpy_intpy_longpy_float
py_complextype_orderingindexr   )rR   Zrankr_   Zresult_typer   r   r   
fused_type  s   
r   c                 C   s   t d)zCPerhaps this should be implemented in a TreeFragment in Cython codezyet to be implemented)r$   )Z
signaturesrR   ra   r   r   r   _specialized_from_args  s   r   r+   longfloatzdouble complex)
charZshort
Py_UNICODEr+   Py_UCS4r   longlongZ	Py_hash_tZ
Py_ssize_tsize_t)
longdoubledoubler   )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   z	unsigned uzsigned r!   r   r   r   r      z%s_%spZp_voidc                   @   s4   e Zd ZdZg dZdddZdd	d
Zdd ZdS )CythonDotParallelz%
    The cython.parallel module.
    )parallelprangethreadidNc                 C   r3   r   )nogil)r   num_threadsr   r   r   r     r2   zCythonDotParallel.parallelr   r   Fc                 C   s   |d u r|}d}t |||S rZ   )r~   )r   r   r   r    r   Zschedule	chunksizer   r   r   r   r     s   zCythonDotParallel.prangec                 C   rc   rZ   r   r>   r   r   r   r     r2   zCythonDotParallel.threadidr   )r   Nr   FNNN)r   r   r   rx   __all__r   r   r   r   r   r   r   r     s    

r   c                   @       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      g | _ d | _|| _|| _d S r   __path____file__r   __package__r   moduler   r   r   r        
z'CythonDotImportedFromElsewhere.__init__c                 C   s^   ddl m} dd l}z|| j}W n ty!   td|| jf w ||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__  s   
z*CythonDotImportedFromElsewhere.__getattr__Nr   r   r   rx   r   r   r   r   r   r   r         r   c                   @   r   )CythonCImportszN
    Simplistic module mock to make cimports sort-of work in Python code.
    c                 C   r   r   r   r   r   r   r   r   /  r   zCythonCImports.__init__c                 C   sZ   | dr|drt|zt|W S  ty,   dd l}t|}|jdkr*d |_|w )N__r   )   r   )
startswithendswithr   
__import__r   r   version_info	__cause__)r   r-   r   exr   r   r   r   5  s   

zCythonCImports.__getattr__Nr   r   r   r   r   r   +  r   r   zcython.parallelzcython.cimportszcython.cimports.libczcython.cimports.libc.mathdataclasseszcython.dataclasses)NT){
__future__r   __version____builtin__r   r   r   objectr   r/   compiledrp   r1   r5   r8   r9   r:   rD   ZcclassZccallZcfuncZannotation_typingreturnsZ
wraparoundZboundscheckZinitializedcheckZ	nonecheckZembedsignatureZ	cdivisionZcdivision_warningsZalways_allows_keywordsZprofileZ	linetraceZinfer_typesZunraisable_tracebacksZfreelistZ	exceptvalZoverflowcheckoptimizeformatfoldZ
use_switchZunpack_method_callsfinalZinternalZtype_version_tagZno_gc_clearZno_gctotal_orderingZbindingrO   rT   rV   rY   r\   rb   rd   rf   ri   rj   rr   rs   r   ZgilZwith_gilr_   ry   r|   r}   r   ro   rm   rn   rh   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builtinsr   r   Zreprnamer   r*   r   r   r   r`   r~   r   r   NULLZintegralZfloatingnumericr   r   r   r   mathr   r   r   r   r   r   r   <module>   s  )
	!	(






"
