a
    b2                     @   s~  d dl mZ dZzd dlmZ W n ey6   eZY n0 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"dmd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ZMzeHeNdOZOW n ePy   eHeLdOZOY n0 eHeQdPZReHeSdQZTg dRZUg dSZVg dTZWg dUZXdVdWdXdQdYdZjYZZe[ Z\zd dlZ]W n ey   d dl]Z]Y n0 eHe^e]d[ed[e\d[< []eUD ]`Z_eZe_e_Z`eHeMe`e\e_< e_d\vr&e_ad]s&eHeMd^e` e\d_e_ < eHeMd`e` e\dae_ < q&eVD ]Z_eHeReZe_e_e\e_< qeWD ]Z_eHeTeZe_e_e\e_< qeHebdbZceHddcZdeHdddZeeUeV eW eX D ]6ZfegdedfD ]$Zhe\ef iehe\dgdheh eff < qqe\di d ZjeI  Zk ZlZmeMeOeReTgZnG djdk dkeZod dlpZpeo epjqdl< [pdS )n    )absolute_importz0.29.28)
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   ]/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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v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sJ 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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_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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_decoratorU   s    r.   c                  K   s   t S r   r.   )Z	arg_typesr   r   r   localsX   s    r0   c                  G   s   t S r   r/   pathsr   r   r   test_assert_path_exists[   s    r3   c                  G   s   t S r   r/   r1   r   r   r   test_fail_if_path_exists^   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__b   s    z"_EmptyDecoratorAndManager.__call__c                 C   s   d S r   r   r   r   r   r   	__enter__d   s    z#_EmptyDecoratorAndManager.__enter__c                 C   s   d S r   r   )r   exc_type	exc_value	tracebackr   r   r   __exit__f   s    z"_EmptyDecoratorAndManager.__exit__N)r   r   r   r7   r9   r=   r   r   r   r   r5   a   s   r5   c                   @   s   e Zd ZdS )_OptimizationNr   r   r   r   r   r>   i   s   r>   c                 C   s   t  S r   r5   _r   r   r   <lambda>r       rB   NTc                 C   s   t  S r   r?   )rA   checkr   r   r   rB   t   rC   c                 C   s   t  S r   r?   r@   r   r   r   rB   v   rC   c                 C   s   t  S r   r?   argr   r   r   rB   z   rC   c                 C   s   t S r   r/   r@   r   r   r   rB   ~   rC   c                 O   s^   t | tr4td u rddlma t| g|R i |S t|t|  krPdksVn J | S d S )Nr   )cython_inline)r"   r   _cython_inlineCython.Build.InlinerG   r%   )fargskwdsr   r   r   inline   s    
"rM   c                 C   s   ddl m} || S )Nr   )RuntimeCompiledFunction)rI   rN   )rJ   rN   r   r   r   compile   s    rO   c                 C   s   | | }|dk r|d7 }|S )Nr   r   r   )abqr   r   r   cdiv   s    rS   c                 C   s    | | }| | dk r||8 }|S Nr   r   )rP   rQ   rr   r   r   cmod   s    rV   c                 O   s2   | dd  |rJ t| dr&| | S |d S d S )NZ	typecheckr7   r   )pophasattr)typerK   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    r`   c                 K   s6   | d t fvr.t| dr.|tur&| |S |  S n|S d S )Nr7   )objectrX   _Unspecified)rY   valuerL   r   r   r   declare   s
    rd   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 u 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   re      s   re   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   rm   r   r   r   r   rk      s   rk   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   rs   r   r   r   r   ro      s   ro   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 u sV|dkr^g  _ntd S )Nc                    s   g | ]}t  j|qS r   r[   	_basetype.0rP   r8   r   r   
<listcomp>   rC   z(PointerType.__init__.<locals>.<listcomp>c                    s   g | ]}t  j|qS r   ru   rw   r8   r   r   ry      rC   r   )r"   	ArrayTypert   _itemslist
ValueErrorr   rc   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   rl   r   r   r   rm      s    zPointerType.__getitem__c                 C   s&   |dk rt dt| j|| j|< d S r   )r   r[   rv   r{   )r   rl   rc   r   r   r   __setitem__   s    zPointerType.__setitem__c                 C   s:   |d u 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 *)rv   r8   r   r   r   r      s    zPointerType.__repr__)N)r   r   r   r   rm   r   r   r   r   r   r   r   rt      s
   

rt   c                   @   s   e Zd Zdd ZdS )rz   c                 C   s   d g| j  | _d S r   )_nr{   r8   r   r   r   r     s    zArrayType.__init__N)r   r   r   r   r   r   r   r   rz     s   rz   c                   @   s    e Zd ZefddZdd ZdS )
StructTypec                 K   s|   |t urZt|dkrtdt|t| ur8td| |j D ]\}}t| || qBn| D ]\}}t| || qbd S )Nr   -Cannot accept keyword arguments when casting.Cannot cast from %s)rb   r%   r}   rY   __dict__itemssetattr)r   	cast_fromdatakeyrc   r   r   r   r     s    zStructType.__init__c                 C   s2   || j v r"t| j | || j|< ntd| d S )NzStruct has no member '%s')_membersr[   r   AttributeErrorr   r   rc   r   r   r   __setattr__  s    
zStructType.__setattr__Nr   r   r   rb   r   r   r   r   r   r   r   	  s   r   c                   @   s    e Zd ZefddZdd ZdS )	UnionTypec                 K   s   |t urRt|dkrtdt|tr,|}qVt|t| u 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.)
rb   r%   r}   r"   dictrY   r   r   r   r   )r   r   r   Zdatadictr   rc   r   r   r   r   !  s    
zUnionType.__init__c                 C   sJ   |dv rt | || n.|| jv r:|t| j| |i| _ntd| d S )Nr   zUnion has no member '%s')ro   r   r   r[   r   r   r   r   r   r   r   3  s
    
zUnionType.__setattr__Nr   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   rv   r   basetyper   r   PointerInstance<  s   r   )rt   )r   r   r   r   r   r_   ;  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   rv   r   r   r   rq   r   r   ArrayInstanceA  s   r   )rz   )r   rq   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   StructInstanceG  s   r   )r   r   )r   r   r   r   r   r   structF  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   UnionInstanceN  s   r   )r   r   )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 r   )rv   name)r   rY   r   r   r   r   r   V  s    ztypedef.__init__c                 G   s   t | jg|R  }|S r   ru   )r   rF   rc   r   r   r   r7   Z  s    ztypedef.__call__c                 C   s   | j pt| jS r   )r   strrv   r8   r   r   r   r   ^  s    ztypedef.__repr__)N)r   r   r   r   r7   r   r,   rm   r   r   r   r   r   T  s   
r   c                   @   s   e Zd ZdS )
_FusedTypeNr   r   r   r   r   r   c  s   r   c                  G   sJ   | st dd}| D ]*}|ttttfv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   )rK   ZrankrY   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
signaturesrK   rZ   r   r   r   _specialized_from_args|  s    r   r(   longfloatzdouble complex)	charshort
Py_UNICODEr(   Py_UCS4r   longlongZ
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   s   t S r   )nogil)r   num_threadsr   r   r   r     s    zCythonDotParallel.parallelr   r   Fc                 C   s   |d u r|}d}t |||S rT   )rp   )r   r   r   r   r   Zschedule	chunksizer   r   r   r   r     s    zCythonDotParallel.prangec                 C   s   dS rT   r   r8   r   r   r   r     s    zCythonDotParallel.threadid)N)r   Nr   FNNN)r   r   r   rj   __all__r   r   r   r   r   r   r   r     s
   

r   zcython.parallel)NT)r
__future__r   __version____builtin__r   ImportErrorr   ra   r   r,   Zcompiledrb   r.   r0   r3   r4   r5   r>   ZcclassZccallZcfunc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bindingrH   rM   rO   rS   rV   r[   r\   r^   r`   rd   re   r   ZgilrY   rk   rn   ro   rt   rz   r   r   r_   r)   r   r   r   r   r   r   r(   r   r   r   	NameErrorr   r   r   r   	int_typesZfloat_typesZcomplex_typesZother_typesgetZto_reprglobalsZgsbuiltinsgetattrr   Zreprnameendswithr'   r   r   r   trp   rr   rs   ZNULLZintegralZfloatingnumericr   r   sysmodulesr   r   r   r   <module>   s   
)
		!






&