
    ڏDjP                        d dl mZmZ d dlmZ d dlmZmZmZ d dlmZ ddlm	Z	 d dl
mZmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d Z&e!e"e#e$e%e&d!Z'd"d#d$d%d&d'd!Z(d( Z)	 dgd)Z*	 dhd*Z+d+ Z,d, Z-d- Z.did.Z/ G d/ d0ej`                        Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6djd6Z7 G d7 d8      Z8 G d9 d:e8      Z9 G d; d<e8      Z:d= Z;d> Z<d? Z=d@ Z>dA Z?dB Z@dCdDdEdFdGdHdIZAdJ ZBdK ZCdL ZDdM ZEdkdOZF	 dldNdPdQZGdR ZHej                  ej                  ej                  j                  dSdTZMdU ZN eGdVdWeMX      ZO eGdY      ZPdZ ZQd[ ZR eGd\      ZS eGd]      ZT eGd^      ZU eGd_      ZV eGd`eMP      ZW eGda      ZX eGdb      ZYe	j                  dc        Z[e	j                  dd        Z\de Z]dfZ^yN)m   )CompileErrorerror)	ExprNodes)IntNodeNameNodeAttributeNode)Options   )Utils)UtilityCodeTempitaUtilityCode)CythonUtilityCodeCythonSharedUtilityCode)Buffer)Naming)
PyrexTypeszStart must not be given.z3Axis specification only allowed in the 'step' slot.z.Step must be omitted, 1, or a valid specifier.z>Cannot specify an array that is both C and Fortran contiguous.zInvalid axis specification.z+Variable was not cimported from cython.viewz=no expressions allowed in axis spec, only names and literals.z<Invalid axis specification for a C/Fortran contiguous array.zdCannot check if memoryview %s is initialized without the GIL, consider using initializedcheck(False)PyBUF_FORMATz#(PyBUF_C_CONTIGUOUS | PyBUF_FORMAT)z#(PyBUF_F_CONTIGUOUS | PyBUF_FORMAT)z%(PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT)PyBUF_FULL_ROPyBUF_RECORDS_RO__Pyx_MEMVIEW_DIRECT__Pyx_MEMVIEW_PTR__Pyx_MEMVIEW_FULL__Pyx_MEMVIEW_CONTIG__Pyx_MEMVIEW_STRIDED__Pyx_MEMVIEW_FOLLOW)directptrfullcontigstridedfollowdpfcs_c                 T    |j                  d| z         |j                  d| z         y )Nz%s.data = NULL;z%s.memview = NULL;)putln)mv_cnamecodes     ^C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Compiler/MemoryView.pyput_init_entryr-   :   s&    JJ 8+,JJ#h./    c           	         |j                   j                  sJ |j                         xs |j                         }|r|j	                         }nC|j
                  j                  |d      }|j                  |d|j                  |      d       t        | ||||||       |s|j
                  j                  |       yy)zEWe can avoid decreffing the lhs if we know it is the first assignmentF
manage_ref = ;)have_gilfirst_assignmentN)typeis_memoryviewsliceresult_in_temp	is_simpleresult	funcstateallocate_tempr)   	result_asput_assign_to_memviewslicerelease_temp)		lhs_cnamelhs_typelhs_posrhsr+   r4   r5   
pretty_rhsrhstmps	            r,   put_acquire_memoryviewslicerF   C   s     88&&&##%8J--h5-I

x)@AB y#vx(0CSU ##F+ r.   c                     | |k(  r|j                  d       y |s|j                  | ||       |j                         s|j                  |       |j                  | d|d       y )Nz&/* memoryview self assignment no-op */r4   r2   r3   )r)   put_xdecrefr8   make_owned_memoryviewslice)r@   rC   	rhs_cnamememviewslicetyper+   r4   r5   s          r,   r>   r>   X   sg    I 	

;<$4"* 	 	, &&t,JJY	23r.   c                 |    t        |       \  }}|rt        S |rt        S t        |  \  }}d|v sd|v rt        S t
        S )Nr   r   )is_cf_contigmemview_c_contiguousmemview_f_contiguouszipmemview_full_accessmemview_strided_accessspecsis_c_contigis_f_contigaccesspackings        r,   get_buf_flagsrZ   j   sJ    +E2K##	##5kOFG5F?""%%r.   c                     dg|z  }|j                  | j                         t        j                  | j                  |      S )Nr   r    )extendaxesr   MemoryViewSliceTypedtype)memoryviewtypenr^   s      r,   insert_newaxesrc   z   s:    !"Q&DKK##$)).*>*>EEr.   c                     t        | j                  |j                  z
        }| j                  |j                  k  rt        | |      |fS | t        ||      fS N)absndimrc   )srcdstrb   s      r,   broadcast_typesrj      sM    CHHsxx A
xx#((c1%s**N3***r.   c                     | j                   r| j                  j                  ry| t        j                  u ry| j
                  rB| j                  dk(  r3| j                  j                  D ]  }t        |j                        r y y| j                  xs} | j                  xr  |dk  xr t        | j                  |dz         xsM | j                  xs? | j                  xs1 | j                   xs# | j"                  xr t        | j$                        S )z
    Return whether type dtype can be used as the base type of a
    memoryview slice.

    We support structs, numeric types and objects
    FstructT   r   )
is_complex	real_typeis_intr   c_bint_type	is_structkindscopevar_entriesvalid_memslice_dtyper6   is_erroris_array	base_type
is_numericis_pyobjectis_fused
is_typedeftypedef_base_type)r`   imembers      r,   rv   rv      s     EOO22
&&&5::1kk-- 	F'4	  	 	M 
 
6AE 
6	eooq1u	5		M
 		M 		M 		M 
			K253J3JK
r.   c                   <    e Zd ZdZd Zd Zd Zd Zd Zd
dZ	d Z
y	)MemoryViewSliceBufferEntryz
    May be used during code generation time to be queried for
    shape/strides/suboffsets attributes, or to perform indexing or slicing.
    c                    || _         |j                  | _        |j                  | _        d| j                  z  | _        | j                   j                  j                  }t        j                  |      | _        | j                          y )Nz%s.data)	entryr6   cnamebuf_ptrr`   r   CPtrTypebuf_ptr_typeinit_attributes)selfr   r`   s      r,   __init__z#MemoryViewSliceBufferEntry.__init__   sa    
JJ	[[
 4::-

%%&//6r.   c                 $    | j                  d      S )N%s.suboffsets[%d]_for_all_ndimr   s    r,   get_buf_suboffsetvarsz0MemoryViewSliceBufferEntry.get_buf_suboffsetvars   s    !!"566r.   c                 $    | j                  d      S )N%s.strides[%d]r   r   s    r,   get_buf_stridevarsz-MemoryViewSliceBufferEntry.get_buf_stridevars   s    !!"233r.   c                 $    | j                  d      S )N%s.shape[%d]r   r   s    r,   get_buf_shapevarsz,MemoryViewSliceBufferEntry.get_buf_shapevars   s    !!.11r.   c           	          t        | j                  j                        D cg c]  \  }\  }}|||   ||f }}}}| j                  ||      S c c}}}w re   )	enumerater6   r^   _generate_buffer_lookup_code)r   r+   index_cnamesdimrX   rY   r^   s          r,   generate_buffer_lookup_codez6MemoryViewSliceBufferEntry.generate_buffer_lookup_code   se    2;DIINN2KM M..fg l3'9 M M00t<<Ms   Ac           
      4   | j                   }| j                  j                  j                         }|D ]  \  }}}}	d| j                  |fz  }
d| j                  |fz  }d| j                  |fz  }t        ||	      }|dv r/|j                  j                  t               d|d|d|d|d	}nW|dk(  rd	|d
|d|d}d|d|d}n<|dk(  rd|d
|d|d}n*|dk(  rd	|d
|d|d}n|dk(  sJ |       d|d|d|d}d||fz  } |r	d|d|dS |S )zl
        Generate a single expression that indexes the memory view slice
        in each dimension.
        r   r   r   )genericgeneric_contiguousz__pyx_memviewslice_index_full(z, )indirect(z +  * z(*((char **) z) + indirect_contiguousr    
contiguousz((char *) ((( *) z))z( /* dim=%d */ %s )z(()	r   r6   r`   empty_declaration_coder   get_memoryview_flagglobalstateuse_utility_codememviewslice_index_helpers)r   r+   r^   cast_resultbufp	type_declr   indexrX   rY   shapestride	suboffsetflags                 r,   r   z7MemoryViewSliceBufferEntry._generate_buffer_lookup_code   s?   
 ||IIOO::<	+/ 	7'C"djj#%66E%S(99F+tzz3.??I&vw7D88
   112LM-15&)M #+/?48)D..8<eYO"+/? |+1T1+:CT5Q(C;6D?	7B $-t44r.   c           	         | j                   }j                  dt               z         j                  dt               z         j                  |||       t	        d | j
                  j                  D              }	g fd}
d}d}|D ]  }|j                  r(dD ]  \  }}j                  d	||||fz          |d
z  }8|d
z  }| j
                  j                  |   \  }}|j                  rt        t                     }dj                         D ]:  }t        ||      }|j                   x}|d|z   <   |r|j                         nd||<   < |d   s|d   s|d   s||d<   d}n?d}j                  j                  t               j!                  |j"                        |d<   |d
z  }n|j                         }|dk7  }|r"|dk(  }|dk7  rt%        |j"                  d      c S t        t               t'        |d         t'        |d               }|d   rj!                  |j"                        |d<   d}t)        j*                  |d|      \  }}j-                  |        rj.                  j1                  d          yy)a  
        Slice a memoryviewslice.

        indices     - list of index nodes. If not a SliceNode, or NoneNode,
                      then it must be coercible to Py_ssize_t

        Simply call __pyx_memoryview_slice_memviewslice with the right
        arguments, unless the dimension is omitted or a bare ':', in which
        case we copy over the shape/strides/suboffsets attributes directly
        for that dimension.
        z%(dst)s.data = %(src)s.data;z"%(dst)s.memview = %(src)s.memview;rH   c              3   ,   K   | ]  \  }}|d k(    yw)r   N ).0rX   rY   s      r,   	<genexpr>zHMemoryViewSliceBufferEntry.generate_buffer_slice_code.<locals>.<genexpr>  s     #]?67Fh$6#]s   c                      sPj                   j                  t        j                  d      } j	                  d| z         j                  |        d   S )NFr0   z%s = -1;    )r;   r<   r   
c_int_typer)   append)suboffset_dimr+   suboffset_dim_temps    r,   get_suboffset_dimzPMemoryViewSliceBufferEntry.generate_buffer_slice_code.<locals>.get_suboffset_dim  sP    % $ < <Z=R=R_d < e

:56"))-8%a((r.   r   ))r   r   )stridesr   )
suboffsetsr   z%s.%s[%d] = %d;r   zstart stop stephave_0
have_start	have_stop	have_steprX   SimpleSlice
ToughSlice
error_gotor   r   z7All preceding dimensions must be indexed and not sliced
wraparoundboundscheck)r   r   
SliceIndexMemoryView_C.ccontextN)r   r)   localsput_incref_memoryviewsliceallr6   r^   is_noneis_slicedictsplitgetattrr:   r   r   slice_memviewslice_utilityr   posr   intr   load_as_stringputr;   r?   )r   r+   indicesri   dst_typer4   have_slices
directivesrh   all_dimensions_directr   r   new_ndimr   attribvaluerX   rY   r"   r&   idxhave_idx	util_namer   r   r'   implr   s    `                         @r,   generate_buffer_slice_codez5MemoryViewSliceBufferEntry.generate_buffer_slice_code   s    jj

1FH<=

7&(BC''X'I ##]diinn#] ]	)  5	E}}%W SMFEJJ0C53QQRS A1HC"iinnS1OFG~~N*002 =A!%+C47KK?Hq1~+33::<AaD=
 ,1[>Q{^ #)AhK -I ,I$$556PQ&*ooeii&@AlOA lln!X-$.G1}$UYY&> ? ? H":l#;< #J}$= >
 ]#&*ooeii&@AlO(	(77	CS]^_GAtHHTNk5	n NN''(:1(=> r.   N)T)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r.   r,   r   r      s,    	742=
,\X?r.   r   c                 ^    t        j                  |       }t        j                  | |||      S )N)startstopstep)r   NoneNode	SliceNode)r   nones     r,   empty_slicer   P  s.    c"Ds$$(t5 5r.   c                 Z   g }d}d}| D cg c]  }|j                   s| }}t        |       t        |      z
  }| D ]  }t        |t        j                        rKd}t        |j                        }	|r|j                  |	       H||z
  dz   }
|j                  |	g|
z         d}h|xs |j                  xs |j                   }|j                  |        t        |      t        |      z
  }||k  r2d}||z
  }
|j                  t        | d   j                        g|
z         |||fS c c}w )NFTr   r   )
r   len
isinstancer   EllipsisNoder   r   r   r]   r   )r   rg   r:   seen_ellipsisr   newaxisnewaxes	n_indicesr   
full_slicenslicesresult_lengths               r,   unellipsifyr  V  s&   FMK&-A7wAGAGs7|+I !eY334K$UYY/Jj)*Q.zlW45 $%HH5==KMM% ! K#g,.Mt&{72;??34w>?''1 Bs
   D(D(c                     | dk(  r|dv ry| dk(  r|dk(  ry| dk(  r|dv ry| dk(  r|dk(  ry| d	k(  r|dv ry
| |fdk(  s	J | |f       y)Nr   )r    r!   r   r   r   r   r   r   r   r    r   r   r   r   )rX   rY   s     r,   r   r   v  s{    G'<<	6	g1#	5W(==	5W0$	8	+@ @ $88K67:KKr.   c                     | dv sJ d| |fz  S )NCFz!__pyx_memviewslice_is_contig_%s%dr   )contig_typerg   s     r,   get_is_contig_func_namer    s    *$$.+t1DDDr.   c                 \    | dv sJ t        t        ||       }t        d|t        g      }|S )Nr  )rg   r
  MemviewSliceCheckContigr   requires)r   template_contextload_memview_c_utilityis_contig_utility)r
  rg   r  utilitys       r,   get_is_contig_utilityr    s7    *$$DkBA$%>/@.ACGNr.   c                 n    | j                   s| j                  r|st        | |||      S t        | |||      S re   )rV   rW   ContigSliceIterStridedSliceIter)
slice_typeslice_resultrg   r+   force_strideds        r,   
slice_iterr    s7    *"8"8-z<tDD
L$EEr.   c                       e Zd Zd Zy)	SliceIterc                 <    || _         || _        || _        || _        y re   )r  r  r+   rg   )r   r  r  rg   r+   s        r,   r   zSliceIter.__init__  s    $(		r.   N)r   r   r   r   r   r.   r,   r  r    s    r.   r  c                       e Zd Zd Zd Zy)r  c                      j                   }|j                           j                  j                  j	                         }dj                   fdt         j                        D              }|j                  d|z         |j                  d       |j                  |d|d j                  d       |j                  d       y	)
Nr   c              3   @   K   | ]  }d j                   |fz    yw)r   N)r  )r   r   r   s     r,   r   z.ContigSliceIter.start_loops.<locals>.<genexpr>  s)       ;$% !/$2C2CQ1G G  ;s   z"Py_ssize_t __pyx_temp_extent = %s;zPy_ssize_t __pyx_temp_idx;z *__pyx_temp_pointer = (r   z.data;zPfor (__pyx_temp_idx = 0; __pyx_temp_idx < __pyx_temp_extent; __pyx_temp_idx++) {__pyx_temp_pointer)
r+   begin_blockr  r`   r   joinrangerg   r)   r  )r   r+   r   
total_sizes   `   r,   start_loopszContigSliceIter.start_loops  s    yyOO))@@B	ZZ  ;).tyy)9 ; ;


7*DE

/0

y$"3"35 	6

 . 	/ $r.   c                     | j                   j                  d       | j                   j                  d       | j                   j                          y )Nz__pyx_temp_pointer += 1;})r+   r)   	end_blockr   s    r,   	end_loopszContigSliceIter.end_loops  s3    		23				r.   Nr   r   r   r'  r+  r   r.   r,   r  r    s    $$r.   r  c                       e Zd Zd Zd Zy)r  c                 ,   | j                   }|j                          t        | j                        D ]a  }|| j                  |f}|j                  d|z         |j                  d|z         |j                  d|z         |j                  d|z         c |j                  d| j                  z         t        | j                        D ]8  }|dkD  r|j                  d||dz
  fz         |j                  d	||||fz         : d
| j                  dz
  z  S )Nz/Py_ssize_t __pyx_temp_extent_%d = %s.shape[%d];z1Py_ssize_t __pyx_temp_stride_%d = %s.strides[%d];zchar *__pyx_temp_pointer_%d;zPy_ssize_t __pyx_temp_idx_%d;z__pyx_temp_pointer_0 = %s.data;r   z.__pyx_temp_pointer_%d = __pyx_temp_pointer_%d;r   z\for (__pyx_temp_idx_%d = 0; __pyx_temp_idx_%d < __pyx_temp_extent_%d; __pyx_temp_idx_%d++) {z__pyx_temp_pointer_%d)r+   r#  r%  rg   r  r)   )r   r+   r   ts       r,   r'  zStridedSliceIter.start_loops  s   yytyy! 	<A4$$a'AJJH1LMJJJQNOJJ59:JJ6:;	< 	

4t7H7HHItyy! 	EA1u

KqRSVWRWjXYJJ 5891a|D E		E '$))a-88r.   c                     | j                   }t        | j                  dz
  dd      D ])  }|j                  d||fz         |j                  d       + |j	                          y )Nr   r   z.__pyx_temp_pointer_%d += __pyx_temp_stride_%d;r)  )r+   r%  rg   r)   r*  )r   r+   r   s      r,   r+  zStridedSliceIter.end_loops  sX    yytyy1}b"- 	AJJG1a&PQJJsO	 	r.   Nr,  r   r.   r,   r  r    s    9.r.   r  c                 P    | j                   rd}nd}d| j                         d|S )Nr%   r$   __pyx_memoryview_copy_slice_r'   )rV   specialization_suffix)memviewc_or_fs     r,   copy_c_or_fortran_cnamer6    s0     ))+V5 5r.   c                    |j                   |j                   k7  rF|j                   j                  r#|j                   j                  |j                   k(  st        | d       y t	        |j
                        t	        |j
                        k7  rt        | d       y |j                  s|j                  st        | d       y |j
                  D ]  \  }}|dk7  st        | d        y  |j                  r	d}t        }n|j                  sJ d}t        }t        dt        t        ||j                   j                         ||j                  t        |      t!        |j                   j"                        	      
      S )Nzdtypes must be the same!z!number of dimensions must be samez%to_memview must be c or f contiguous.r   z2cannot handle 'full' or 'ptr' access at this time.r%   fortranCopyContentsUtility)mode
dtype_declcontig_flagrg   
func_cnamedtype_is_objectr   )r`   is_cv_qualifiedcv_base_typer   r   r^   rV   rW   rO   rP   r  r   r  r   rg   r6  r   r{   )r   from_memview
to_memviewrX   rY   r:  r<  s          r,   get_copy_new_utilityrC    sG   j...##338J8J8W8W[e[k[k8kc-.
<Z__!55c67""j&<&<c:;).. X#KL
 *%%%*!!''>>@#.z:
 0 0 < <=
 r.   c                    | j                   j                  }|j                          |j                  }t	        dD cg c]  }|j                  |       c}      }t	        dD cg c]  }|j                  |       c}      }d\  }}d\  }	}
|	d}}g }t        |      D ]  \  }}|j                  j                  s$t        |j                  j                  t              |j                  j                  s$t        |j                  j                  t              |j                  j                  r|j                  |	|
f       t!        |j                  t"              rW|j                  j%                  |       dk7  r$t        |j                  j                  t&              |j                  |df       t!        |j                  t(        t*        f      rpt-        | |j                        }|j.                  t0        v r$|j                  t0        |j.                            t        |j                  j                  t2              t        |j                  j                  t2               d}d	}t        |      D ]?  \  }\  }}|dk(  s|r$t        j                  j                  t4              |}|d
f||<   d}A |r|t7        |      dz
  k(  rd}n*d}|r&||dz
     d   dvrt        ||   j                  d      |r7d}t        t9        |            D ]  \  }\  }}|dv st7        |      |z
  dz
  }  |dz   }t7        |      |z
  }t        |||       D ]S  \  }\  }}|dz   |z   }|dk7  rt        ||   j                  d      |d
k(  rt        ||   j                  d      ||f||<   U |r|d   \  }}|d
f|d<   t;        |D cg c]  }|j                  j                   c}|||       |S c c}w c c}w c c}w )z
    get_axes_specs(env, axes) -> list of (access, packing) specs for each axis.
    access is one of 'full', 'ptr' or 'direct'
    packing is one of 'contig', 'strided' or 'follow'
    )r   r   r   r   r    r!   FFr\   r!   r   cfcontigr   Fr   T)r   r   z>Fortran contiguous specifier must follow an indirect dimensionr   r   r   r   z>Indirect dimension may not follow Fortran contiguous dimensionzDimension may not be contiguous)r   cython_scopeload_cythonscope	viewscopetuplelookupr   r   r   r   r   	START_ERRr   STOP_ERRr   r   r   r   compile_time_valueSTEP_ERRr   r   _get_resolved_specnameview_constant_to_access_packingINVALID_ERRBOTH_CF_ERRr   reversedvalidate_axes_specs)envr^   cythonscoperK  rS  access_specspacking_specsrW   rV   default_accessdefault_packing	cf_access
cf_packing
axes_specsr   axisr   
contig_dim	is_contigrX   rY   r   r   ar#   s                            r,   get_axes_specsrf    s    ++**K  "%%I 9; $**40 ; <L ?A %++D1 A BM  ,K&9#NO*HzIJt_ ;	Tzz!!tzz~~	::yy  tyy}}h7799~?@		7+ yy++C0A5"499==(;;y*56		Hm#<=&sDII6Ezz<<!!"A%**"MN"499==+>> tyy}}k::5;: JI"+J"7 fgj "499==+>>J%x0JsOI TQ&KK*Z!^"<Q"??"R"4
#3#7#7#ce e J*3HZ4H*I 5&&fg_,!$TS1!4J5 Q4y;&&/
50F&G 		3"C"&'q.3&C!"49==$BC C (""49==#DF F%z2JsO		3  b>DAq[JrND9D9"##%
 I;Az :s   O-$O2O7c                 V    t        |      t        j                  k\  rt        | d       yy)NzGMore dimensions than the maximum number of buffer dimensions were used.FT)r   r	   buffer_max_dimsr   )r   r^   s     r,   validate_axesri    s)    
4yG+++c 6 	7r.   c                     dx}}t        |       dk(  r| dgk(  rd}||fS | d   dk(  rt        d | d d D              rd}||fS t        |       dkD  r| d   dk(  rt        d | dd  D              rd}||fS )	NFr   r  Tr   c              3   &   K   | ]	  }|d k(    yw)r   r!   Nr   r   rb  s     r,   r   zis_cf_contig.<locals>.<genexpr>  s     C++C   r   c              3   &   K   | ]	  }|d k(    ywrl  r   rm  s     r,   r   zis_cf_contig.<locals>.<genexpr>  s     B++Brn  )r   r   )rU   rV   rW   s      r,   rN   rN     s     %%K+
5zQ5%9$:: ## )*
*Ccr
CC ## e*q.!H++Bab	BB##r.   c                 L    t        |       \  }}|ry|ry| D ]  \  }}|dv s y y)Nr%   r8  rH  r   r    )rN   rT   s        r,   get_moderq    s@    +E2K	  _$ r.   )r   r    r\   )r   r    )r   r   r  )r   r   )r   r    r   r   r   r   c                    d}d}dx}x}x}}	d}
t        |      D ]  \  }\  }}|dk(  s|}
 t        t        | |            D ]  \  }\  }\  }}||v r||v st        |d      |dk(  rd}n|d	k(  ra|rt        |d
      |
dz   t        |      dz
  f}||vr6|dk7  r1|
dz   t        |      dz
  k7  rd|z  }nd|d   z  }t        |d|z        |dk7  }n#|dk(  r|rt        |d      |s|st        |d      |dv sd} y )NrE  )r   r   r   Fr   r   zInvalid axes specification.r    Tr   z1Only one direct contiguous axis may be specified.r   zdimensions %d and %dzdimension %dr   z$Only %s may be contiguous and directr!   zAA memoryview cannot have both follow and strided axis specifiers.z$Invalid use of the follow specifier.rH  )r   rQ   r   r   )	positionsrU   rV   rW   r\  r[  
has_contig
has_followhas_stridedhas_generic_contiglast_indirect_dimensionr   rX   rY   r   valid_contig_dimsdimss                    r,   rX  rX    s~   3M,L BGFJFFk,> "+E"2 *fgU?&)#* *33y%3H)I  %%c$FG,&=(s$ABBiK "3 )A B B !8! ;SZ!^ K++%*Q.#e*q.@14EED),=a,@@D"3(NQU(UVV5J "3(kll;"3(NOO_$K= r.   c                     t        |t              rt        | |      S t        |t              rt	        | |      S t        |j                  t              re   )r   r   _resolve_NameNoder   _resolve_AttributeNoder   r   rU  )rY  specs     r,   rR  rR    sA    $! d++	D-	(%c400488[11r.   c                 :   	 | j                  |j                        j                  }| j                  j                  j                  }|j                  |      }|t        |j                  t              |S # t        $ r t        |j                  t
              w xY wre   )
rM  rS  AttributeErrorr   r   rU  r   rI  rK  NOT_CIMPORTED_ERR)rY  noderesolved_namerK  r   s        r,   r|  r|    s    2

499-22 ((22I]+E}488%677L  2488[112s   %A6 6$Bc                 :   g }t        |t              r9|j                  d|j                         |j                  }t        |t              r9t        |t
              r|j                  d|j                         nt        |j                  t              |d d }|sJ | }|D ]F  }|j                  |      }|r|j                  st        |j                  d|z        |j                  }H |j                  |d         }|st        |j                  d|d   z        |S )Nr   r   zundeclared name not builtin: %szNo such attribute '%s')r   r   insert	attributeobjr   rS  r   r   EXPR_ERRrM  	as_module)rY  r  pathmodnamesrt   modnamemodr   s           r,   r}  r}    s    D
T=
)At~~&xx T=
) $!Atyy!488X..CRyHOE ll7##--HH?'IK K LLb"E488%=R%HIILr.   Nc                 4    t        j                  | dfd|i|S )NzMemoryView.pyxr   )r   load)util_code_namer   kwargss      r,   load_memview_cy_utilityr    s*    !!.2B =*1=5;= =r.   r   c                f    |t        j                  | |fi |S t        j                  | |fd|i|S )Nr   )r   r  r   )r  util_code_filenamer   r  s       r,   r  r    sN     0BMfMM!&&~7I B/6B:@B 	Br.   c                     | j                   j                  ry | j                   j                  }|j                          d|j                  j                  d      _        y )NTarray_cwrapper)r   shared_utility_qualified_namerI  rJ  rK  rM  used)rY  rI  s     r,   use_cython_array_utility_coder  $  sG    
{{00;;++L!!#;?L!!"238r.   rm   )max_dimsmemviewslice_namememslice_initTHREAD_LOCKS_PREALLOCATEDc                  *    t        dt        g       } | S )NMemviewSliceStructr  )r  r  )memviewslice_declare_codes    r,   _get_memviewslice_declare_coder  2  s     6 $! %$r.   AtomicszSynchronization.c)r  r   MemviewSliceIndexc                  :    t        dt        j                  g      S )NBufferFormatFromTypeInfo)r  )r  r   _typeinfo_to_format_coder   r.   r,   _get_typeinfo_to_format_coder  >  s    ""f.M.M-NP Pr.   c                 @    | rt        d| t        g       S t               S )NzBufferFormatFromTypeInfo.pxdr  r  )r   r  r  r  s    r,   get_typeinfo_to_format_coder  B  s)    $&*)-	 	 ,--r.   MemviewSliceIsContigOverlappingSlicesMemviewRefcountMemviewSliceInitr  MemviewSliceCopySliceMemoryviewSlicec                      t        dt        t        j                  t        j                  t
        t        t        t        t        t        t        g	      } | S )NzView.MemoryViewr  )r  r  r   buffer_struct_declare_codebuffer_formats_declare_coder  refcount_utilityatomic_utilityr  overlapping_utilitycopy_contents_new_utilityr   )memoryview_utility_codes    r,   _get_memoryview_utility_coder  V  sG    5$5566-$"%'-.
  #"r.   c           
          t        d| t        t        j                  t        j                  t
        t        t        g      }|S )NzMemoryView.pxdr  )r   r  r   r  r  r  r  r  )r  shared_utility_codes     r,   #_get_memoryview_shared_utility_coder  k  s>    1%)1122) 	 r.   c                 0    | rt        |       S t               S re   )r  r  r  s    r,   get_view_utility_coder  |  s    $23PQQ+--r.   )array
memoryviewr  r   r    r   r   r   )FTrF  )r   )Fre   )r   )_Errorsr   r    r   r   r   r   r	   r   Coder   r   r   r   r   r   r   rN  rO  rQ  rV  rU  r  r  CF_ERRERR_UNINITIALIZEDformat_flagrO   rP   memview_any_contiguousrR   rS   MEMVIEW_DIRECTMEMVIEW_PTRMEMVIEW_FULLMEMVIEW_CONTIGMEMVIEW_STRIDEDMEMVIEW_FOLLOW_spec_to_const_spec_to_abbrevr-   rF   r>   rZ   rc   rj   rv   BufferEntryr   r   r  r   r  r  r  r  r  r  r6  rC  rf  ri  rN   rq  rT  rX  rR  r|  r}  r  r  r  rh  memviewslice_cnamer_   default_valuer  r  r  r   r  r  r  r  r  slice_init_utilityr  r  r   cached_functionr  r  r  view_utility_allowlistr   r.   r,   <module>r     s   '  7 7   1 C   &	@;N+A J	GC  < < @ % + '$%'(' "!"!
 0 BF,, AF4$& F+Bd?!3!3 d?N5(@ E
F i 2y B5$Nod$( 211000# , \2>=
 ,<B B@ ''2233AA!"	 % ("5?OQ 44GH P. ++AB ,-@A )*;< +,>? 23GQab 23EF 34JK  # #(   .1 r.   