
    ij9                        d dl Z d dlZd dl d dlZg dZ ee       ee      k(  reZeZ	n+ ee
       ee      k(  re
ZeZ	n ee       ee      k(  reZeZ	 ee      Ze ee      k  reZn1e ee      k  reZn#d e       v re ee      k  reZn edefz         G d de      Z ee      Z	 ej.                  Zee_        ege_        ej6                  Zee_        ege_        	 ej:                  Zee_        eege_        ej>                  Zee_        eege_        ej@                  Z ee _        ege _         e!de      Z"ejF                  Z#ee#_        ee ee"      ge#_        d
 Z$dZ%dZ&dZ'dZ(dZ)dZ* G d d      Z+d Z,d Z-d Z. G d d      Z/ G d de/      Z0 G d dejb                        Z2 G d dejb                        Z3e4dk(  r ejj                          yy# e$ r d ZY w xY w# e$ r d	 ZY w xY w)    N)*)PAI_CONTIGUOUSPAI_FORTRANPAI_ALIGNEDPAI_NOTSWAPPEDPAI_WRITEABLEPAI_ARR_HAS_DESCRArrayInterface
c_longlongzUnrecognized pointer size %ic            
       ^    e Zd Zdefdefdefdefdefd ee      fd ee      fdefd	efg	Z	y
)PyArrayInterfacetwondtypekinditemsizeflagsshapestridesdatadescrN)
__name__
__module____qualname__c_intc_charPOINTERPy_intptr_tc_void_p	py_object_fields_     j/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/test_utils/arrinter.pyr   r   &   sY    		u	V	U	%	'+&'	GK()		)
Hr"   r   c                     t        d      )NzNot available)	TypeError)os    r#   PyCObject_AsVoidPtrr'   :   s    ((r"   c                      yNr   r!   )capsulenames     r#   PyCapsule_IsValidr,   H   s    r"   c                 .    t        t        |       d d       S N)PyCapsule_New	addressof)ps    r#   capsule_newr2   [   s    1tT22r"            i   i   i   c                       e Zd Zd Zd Zd Zy)r
   c                    	 |j                   | _        | j                  st        d      	 t	        | j                        }t        | j                        | _        t        |t              d   | _        y # t        $ r t        d      w xY w# t        $ rU t        | j                  d       rt        | j                  d       }nt        d      t        | j                        | _        Y w xY w)Nz)The array object lacks an array structurez1The array object has a NULL array structure valuez/The array object has an invalid array structurer   )__array_struct___cobjAttributeErrorr%   r'   PyCObject_GetDescdescr,   PyCapsule_GetPointerPyCapsule_GetContextcastPAI_Ptr_inter)selfarrvps      r#   __init__zArrayInterface.__init__h   s    	I--DJ zzOPP		6$TZZ0B *$**5DI2w'*  	IGHH	I  	9 T2)$**d; QRR,TZZ8DI	9s   A3 B 3BAC)(C)c                     |dk(  r%| j                   j                  j                  d      S t        | j                   |      S )Nr   zlatin-1)rA   r   decodegetattr)rB   r+   s     r#   __getattr__zArrayInterface.__getattr__{   s6    :;;''..y99t{{D))r"   c           
      L   t        | j                  t              r| j                  d   }nd}d| j                  | j                  | j
                  t        | j                        t        | j                  | j                        t        | j                  | j                        |fz  S )Nr   zN/AzInd: %i
typekind: %s
itemsize: %i
flags: %s
shape: %s
strides: %s
ver: %s
)
isinstancer<   tupler   r   r   format_flagsr   format_shaper   format_stridesr   )rB   vers     r#   __str__zArrayInterface.__str__   s    dii'))A,CC TZZ(TWWdjj1tww5	
r"   N)r   r   r   rE   rI   rQ   r!   r"   r#   r
   r
   g   s    +&*

r"   r
   c                     g }t         dft        dft        dft        dft        dft
        dffD ]  \  }}|| z  s|j                  |        dj                  |      S )N
CONTIGUOUSFORTRANALIGNED
NOTSWAPPED	WRITEABLEARR_HAS_DESCR, )r   r   r   r   r   r	   appendjoin)r   namesflagr+   s       r#   rM   rM      sr    E	&	i 	i 	&	$	O, 	
d %<LL	 99Ur"   c           	      t    dj                  t        |       D cg c]  }t        ||          c}      S c c}w NrY   r[   rangestr)r   r   is      r#   rN   rN      s+    99U2Y7c%(m7887   5c           	      t    dj                  t        |       D cg c]  }t        ||          c}      S c c}w r_   r`   )r   r   rc   s      r#   rO   rO      s+    99uRy9!c'!*o9::9rd   c                   .    e Zd Z	 ddZ ed       Zd Zy)ExporterNc                 B   |d}|d}|t         t        z  t        z  }|	|t        z  }t	        |      dk7  rt        d      t	              }|| _        || _        || _        t              | _
        t        | j                  z  | j                   | _        t        | j                  z         | _        | j                  | j                  | j                  dz
  <   t        | j                  dz
  dd      D ]1  }| j                  |   | j                  |   z  | j                  |dz
  <   3 t        | j                        | _        nNt	              |k(  r5t              | _        t        | j                  z  | j                   | _        nt        d      || _        | j#                  d      r	|t$        z  }| j#                  d      r	|t&        z  }|| _        t+        fd	t        |      D              }	t-        |	z         | _        t1        | j.                        | _        t5        d
||j7                  d      ||| j                  | j                  | j2                  |	      | _        || _        t        |      D ]$  }| xj                  | j                  |   z  c_        & y )Nur3   z+Argument 'typekind' must be length 1 stringr   z'Mismatch in length of strides and shapeCFc              3   4   K   | ]  }|   |   z    y wr.   r!   ).0rc   r   r   s     r#   	<genexpr>z$Exporter.__init__.<locals>.<genexpr>   s     :1qGAJ&:s   r4   latin_1)r   r   r   r	   len
ValueErrorr   r   r   rL   r   	c_ssize_t_shape_stridesra   r   r   is_contiguousr   r   r   maxc_ubyte_datar0   r   r   encoderA   )
rB   r   r   r   r   r   r   r   rc   szs
    `  `     r#   rE   zExporter.__init__   sE    HH=!K/.@E&&Ex=AJKKZ  5\
 477*TZZ8?&03DM)-DMM$''A+&477Q;2. H'+zz!}t}}Q7G'Ga!e$HDMM*G"DL\R >DL&04<<@DMFGG
c"^#Ec"[ E
:b	::l%
djj)	&OOI&KKMMII

 r 	&AHH

1%H	&r"   c                 ,    t        | j                        S r.   )r2   rA   rB   s    r#   <lambda>zExporter.<lambda>   s    [-E r"   c                    |dv rp| j                   d   | j                  k(  rTt        | j                  dz
  dd      D ]6  }| j                   |dz
     | j                  |   | j                   |   z  k7  s6 n y|dv ro| j                   d   | j                  k(  rSt        d| j                  dz
        D ]6  }| j                   |dz      | j                  |   | j                   |   z  k7  s6 y yy)NCArj   r3   r   TFAF)r   r   ra   r   r   )rB   fortranrc   s      r#   rv   zExporter.is_contiguous   s    d?||B4==0tww{Ar2  A||AE*djjmdll1o.MM   d?||A$--/q$''A+.  A||AE*djjmdll1o.MM    r"   )NNNNN)r   r   r   rE   propertyr8   rv   r!   r"   r#   rg   rg      s    SW5&n   EFr"   rg   c            	       F     e Zd Zeeeeeee	e
dZ fdZd Zd Zd Z xZS )Array))ri   r3   )ri   r4   )ri      )ri      )rc   r3   )rc   r4   )rc   r   )rc   r   c                    t        |   |i | 	 | j                  t        z  r&| j                  | j
                  | j                  f   }nut        j                  t        u r0| j                  | j
                  | j                  f   j                  }n/| j                  | j
                  | j                  f   j                  }|| _        t        |      | _        y # t        $ r t        | j                  z  }Y 6w xY wr.   )superrE   r   r   _ctypesr   r   r   __ctype_le____ctype_be__KeyErrorc_uint8_ctyper   _ctype_p)rB   argskwdsct	__class__s       r#   rE   zArray.__init__  s    $'$'	)zzN*\\$--">?##u,\\$--">?LL\\$--">?LL   	)4==(B	)s   B.C C76C7c                 R    t        | j                  |      | j                        d   S r)   r?   _addr_atr   )rB   keys     r#   __getitem__zArray.__getitem__  s!    DMM#&6q99r"   c                 T    |t        | j                  |      | j                        d<   y r)   r   )rB   r   values      r#   __setitem__zArray.__setitem__  s     5:T]]3/2r"   c                 `   t        |t              s|f}t        |      | j                  k7  rt	        d      t        | j                        D ].  }d||   cxk  r| j                  |   k  rn t        d| d       | j                  t        d t        || j                        D              z   S )Nzwrong number of indexesr   zindex z out of rangec              3   ,   K   | ]  \  }}||z    y wr.   r!   )rn   rc   ss      r#   ro   z!Array._addr_at.<locals>.<genexpr>$  s     HAq1uHs   )rK   rL   rq   r   rr   ra   r   
IndexErrorr   sumzipr   )rB   r   rc   s      r#   r   zArray._addr_at  s    #u%&Cs8tww677tww 	<AQ/$**Q-/ 6!M!:;;	< yy3HS$,,1GHHHHr"   )r   r   r   r   c_uint16c_uint32c_uint64c_int8c_int16c_int32c_int64r   rE   r   r   r   __classcell__)r   s   @r#   r   r      s7    	G$:;Ir"   r   c                   "    e Zd Zd Zd Z	 ddZy)ExporterTestc           	         | j                  ddddddd       | j                  ddddd	d	d       | j                  dd
ddddd       | j                  ddddddd       | j                  dd
ddddd       | j                  dd
ddddd       | j                  ddddddd       | j                  ddddddd       | j                  ddddddd       | j                  dddd dd!d       y )"Nr   
   ri   )r4      r4   )      )   r4      )   r   r   )r   r   r4         r      r   iJ  B   r   r4   i  r   rc   )r4      *   x)r4      0      %)i  X   r   r4   iX  )r   r   -)   r   i   r   )r       )r      x   )
check_argsr}   s    r#   test_strideszExporterTest.test_strides(  s    5#tRQ763B:9c;S!D>3tQO9c;S!D9c;S!D>3tQO63c1=63c1=63c1=r"   c                    t        dd      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        dd      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd	
      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd
      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd
      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             t        ddd
      }| j                  |j                  d             t        ddd
      }| j                  |j                  d             t        ddd
      }| j                  |j                  d             t        ddd
      }| j                  |j                  d             y )Nr   r4   )r   rk   rl   A)r   r   r   r   r   r   )r4   r   )r4         i  )r4   r   r   r   )i@  r   r   r4   )r4   r   r   i   )r   r4   r4   )r   r   r   )r      r   )rg   
assertTruerv   assertFalserB   as     r#   test_is_contiguouszExporterTest.test_is_contiguous4  s   UQ',-,-,-Wq),-,--.^aI,-,--.Wq':,-,--.^a9KL,-,--.]QH-.]QH-.YJ?-.YK@-.r"   c	                 l   |dz  r|}	nd }	|dz  r|}
nd }
t        |||
      }| j                  t        |j                        |       | j                  |j                  t        j                  |j                        |z          t        |      }| j                  |j                  |j                         | j                  |j                  |       | j                  t        |j                  d|j                         |       | j                  t        |j                  d|j                         |       y )Nr3   r4   r   r   )rg   assertEqualsizeofry   r   ctypesr0   r
   r   rL   r   r   r   )rB   
call_flagsr   r   r   lengthbufsizer   offsettypekind_argstrides_argr   ms                r#   r   zExporterTest.check_argsR  s     >#LL>!KKUX{C'2!1!1!''!:V!CD1(X.qwwq1440159qyyQTT23W=r"   N)r   )r   r   r   r   r   r   r!   r"   r#   r   r   '  s    
>/> WX>r"   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
	ArrayTestc                 n    t        j                  j                  | g|i | t        ddd      | _        y )N)r   r   rc   r   )unittestTestCaserE   r   r   )rB   r   r   s      r#   rE   zArrayTest.__init__h  s0    ""47$7$7xa(r"   c                     t        | j                  j                  dt        | j                  j                               y r)   )memsetr   r   r   ry   r}   s    r#   setUpzArrayTest.setUpl  s#    tvv{{Avdffll34r"   c                    | j                   }| j                  |j                  d      |j                         | j                  |j                  d      |j                  dz          | j                  |j                  d      |j                  dz          | j                  |j                  d      |j                  dz          y )Nr   r   )r   r3   r   )r3   r   <   )r3   r3   @   )r   r   r   r   r   s     r#   test__addr_atzArrayTest.test__addr_atp  s    FFF+QVV4F+QVVaZ8F+QVVb[9F+QVVb[9r"   c                 0   | j                   }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       d|d<   d|d<   | j                  |d   d       | j                  |d   d       | j                  t        |j                  d	       | j                  t        |j                  d
       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t
        |j                  d       | j                  t
        |j                  d       t        ddd      }d|d<   | j                  |d   d       y )Nr   r   )   r   )r   r   )r   r   )r   r   r   c   )rj   r   )r   rj   )r   r   )r   r   )r   r   r   )r   rc   r   iM  r3   )r   r   assertRaisesr   r   rr   r   r   s     r#   test_indiceszArrayTest.test_indicesw  sX   FF4!$51%51%6A&4!$$$4"%4"%*ammW=*ammW=*ammW=*ammW=*ammQ7*ammY?$Q!1s#r"   c                    t        ddd      }| j                  |j                  t        u        | j                  |j                  t        t              u        t        ddd      }| j                  |j                  t        u        | j                  |j                  t        t              u        t        ddd      }|j                  }| j                  t        |t        j                                | j                  t        |      d       y )Nr3   rc   r   ri   f)r   r   r   r   r   r   r   
issubclassr   r   r   )rB   r   r   s      r#   test_typekindzArrayTest.test_typekind  s    $QG+,

gg&667$QH,-

gh&778$QXX
2v||45Q'r"   c                     dD ]_  }t        dd|      }|j                  }| j                  t        |t        j
                               | j                  t        |      |       a y )N)r3   r4   r   r   r   rc   )r   r   r   r   r   _SimpleCDatar   r   rB   sizer   r   s       r#   test_itemsizezArrayTest.test_itemsize  sU      	/DdC&ABOOJr6+>+>?@VBZ.		/r"   c                     dD ]_  }t        dd|      }|j                  }| j                  t        |t        j                                | j                  t        |      |       a y )N)r   r   r   r   	   r   rc   )r   r   r   r   r   r   r   r   s       r#   test_oddball_itemsizezArrayTest.test_oddball_itemsize  sS    # 	/DdC&ABOOJr6<<89VBZ.		/r"   c           	         t        dddt        t        z        }|j                  }| j	                  |t
        u       t        j                  dk(  r"| j	                  |t
        j                  u        n!| j	                  |t
        j                  u        d}t        |      }||d<   | j                  |d   |       | j                  |j                  dd t        t        |      t        t                    dd	d	          y )
Nr   ri   r   )r   littlei
r   r   rj   )r   r   r   r   r   r   sys	byteorderr   r   r   ry   r?   r0   r   r   )rB   r   r   rc   ns        r#   test_byteswappedzArrayTest.test_byteswapped  s    $Q{]'BDXX(*+==H$OOB("7"778OOB("7"778QK!1q!1tIaL'':J'KAbQSG'TUr"   N)r   r   r   rE   r   r   r   r   r   r  r  r!   r"   r#   r   r   g  s+    )5:$*
(//Vr"   r   __main__)6r  r   r   __all__r   c_uintr   c_size_tr   rs   c_ulongc_longc_ulonglongr   SIZEOF_VOID_Pr   globalsRuntimeError	Structurer   r   r@   	pythonapir'   restyper   argtypesr;   r:   r,   c_char_pr=   r>   	CFUNCTYPEPyCapsule_Destructorr/   r2   r   r   r   r   r   r	   r
   rM   rN   rO   rg   r   r   r   r   r   mainr!   r"   r#   <module>r     s   
    
&>VH%%HIG_x((HIKF8,,HI x F5M!KfVn$KWY=F:4F#FK
58HH
IIy  "
#-#77 #+$-; !33 ("+0!33 !&"+X!6$99#+ %.$9!$99#+ %.K! y1 ''! "Hg6J.KL 3  /
 /
d9;I IX(IH (IV=>8$$ =>@KV!! KV\ zHMMO {  )))  s$   2G! )G0 !G-,G-0G;:G;