
    giū                     l   d dl Z d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ ej8                  j:                  j<                  Zej8                  j:                  j@                  Z ej8                  j:                  jB                  Z!ej8                  j:                  jD                  Z#ej8                  j:                  jH                  Z% G d d      Z& G d d	      Z' G d
 d      Z( G d d      Z) G d d      Z* G d d      Z+ G d d      Z, G d d      Z-y)    N)append_fieldsapply_along_fieldsassign_fields_by_namedrop_fieldsfind_duplicatesget_fieldstructurejoin_bymerge_arraysrecursive_fill_fieldsrename_fieldsrepack_fieldsrequire_fieldsstack_arraysstructured_to_unstructuredunstructured_to_structured)MaskedRecords)assert_equal)assert_assert_raisesc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
      d        Zd Zd Zy)TestRecFunctionsc                 "   t        j                  ddg      }t        j                  g d      }t        j                  ddgddt        fg      }t        j                  d	d
gdt        fddt        fdt        fgfg      }t	        ||fd      }t        |t        j                  dt        fdt        fg             t	        ||fd      }t        |t        j                  dt        fdt        fg             t	        ||fd      }t        |t        j                  dt        fddt        fg             t	        ||fd      }t        |t        j                  dt        fdddt        fgfg             t	        ||fd      }t        |t        j                  dt        fdt        fdt        fdt        fg             t	        ||fd      }t        |t        j                  dt        fddt        fddt        fdt        fgfgfg             y )N      
         A      ?B       @r    z|S3r#   dtyper   r         @            @abbabbTflatten F)nparrayfloatint	zip_descrr   r'   )selfxyzwtests         Y/var/www/html/audio_env/lib/python3.12/site-packages/numpy/lib/tests/test_recfunctions.pytest_zip_descrzTestRecFunctions.test_zip_descr#   s   HHaXHH\"HHi+(3,79HHm]3 #Je}tSk.J(KLN !Q.TXXCy2s)45	7!Q/TXXCy2s)45	7 !Q.TXXCy,eEF	H!Q/TXXCy "\C<$@AC D	E
 !Q.TXXCy #Sz $e}tSk; <	= !Q/TXXCy "c3Z&)T5MD#;+G%H%J  KL M	N    c                    t        j                  ddgdt        fddt        fdt        fgfg      }t	        |d      }t        j                  dd	gddt        fdt        fgfg      }t        ||       t	        |d      }t        j                  d
dgdt        fg      }t        ||       t	        |dg      }t        j                  ddgdt        fddt        fgfg      }t        ||       t	        |ddg      }t        j                  d
dgdt        fg      }t        ||       t	        |ddg      }t        j                  ddgg       }t        ||       y )Nr(   r+   r0   r1   r2   r3   r&   )r)   )r-   r   r,   )r   )r*   )r,   )r/    )r7   r8   r:   r9   r   r   r<   r0   rA   controls       rB   test_drop_fieldsz!TestRecFunctions.test_drop_fieldsI   s[   HHm]3 #Je}tSk.J(KLN 1c"((K5#&$s(D"E!FHT7# 1c"((D$<c
|<T7# 1th'((K5#&*sdC[M.B!CET7# 1tTl+((D$<c
|<T7# 1sCj)((B82.T7#rD   c           	      >   t        j                  ddddgffddddgffgd	t        fd
dt        fdt        dffgfg      }t	        |ddd      }dt        fd
dt        fdt        dffgfg}|j                  |      }t        |j                  |       t        ||       y )Nr   r   r*         >@r,   r.   r/   g      N@r0   r1   r2   r3   r&   r    BB)r0   r3   )r7   r8   r:   r9   r   viewr   r'   )r<   r0   rA   newdtyperJ   s        rB   test_rename_fieldsz#TestRecFunctions.test_rename_fieldsi   s    HHq1sCj/*QS#J,@A #J D%=4%2D"EFHI Qc 67#Je}teQZ6H&I JK&&"TZZ*T7#rD   c                    t        j                  ddt        fg      }t        |      }t	        |d       t        j                  dt
        fddt        fdt
        fgfg      }t        |      }t	        |d       t        j                  dt
        fdg fg      }t        |      }t	        |d	       t        j                  g       }t        |      }t	        |d
       y )Nr%   r#   r    r#   r0   r1   r2   r3   )r0   )r1   )r2   r3   )r0   )r1   rH   rH   )r7   r'   r9   	get_namesr   r:   r<   ndtyperA   s      rB   test_get_nameszTestRecFunctions.test_get_namest   s    <#u67 T:&C:tUmdC[-I'JKL T56C:Ry12 T+," T2rD   c                    t        j                  ddt        fg      }t        |      }t	        |d       t        j                  dt
        fddt        fdt
        fgfg      }t        |      }t	        |d       t        j                  dt
        fdg fg      }t        |      }t	        |d	       t        j                  g       }t        |      }t	        |d
       y )Nr%   r#   rS   r0   r1   r2   r3   )r0   r1   r2   r3   r0   r1   rH   )r7   r'   r9   get_names_flatr   r:   rU   s      rB   test_get_names_flatz$TestRecFunctions.test_get_names_flat   s    <#u67f%T:&C:tUmdC[-I'JKLf%T12C:Ry12f%T:&"f%T2rD   c           	         t        j                  ddt        fg      }t        |      }t	        |g g d       t        j                  dt
        fddt        fdgfg      }t        |      }t	        |g g dgdgd       t        j                  dt
        fddt
        fdd	t
        fd
t
        fgfgfg      }t        |      }g g dgdgddgddgd}t	        ||       t        j                  g       }t        |      }t	        |i        y )Nr%   r#   rS   r    BArN   z|S1)r    r#   r]   rN   rN   BBABBB)r    r#   r]   rN   r_   r`   )r7   r'   r9   r   r   r:   )r<   rV   rA   rJ   s       rB   test_get_fieldstructurez(TestRecFunctions.test_get_fieldstructure   s    <#u67!&)T"-. C:tUm]-K'LMN!&)T"SGC5IJ C:4+#'5#,)E"F"H IJ K "&)C5+sDk;T7# "!&)T2rD   c                    t        j                  g dg ddt        fddt        fdgfg      }t	        |dd	
      }ddg}t        t        |d         |       t        |d   ||d             t	        |dd	      }g d}t        t        |d         |       t        |d   ||d             t	        |dd	      }g d}t        t        |d         |       t        |d   ||d             t	        |dd	      }g d}t        t        |d         |       t        |d   ||d             t	        |dd	      }g d}t        t        |d         |       t        |d   ||d             y )N)r   r$   r#   )r   rd   rc   )r   )r!   r#   rc   )r   )r$   C)r   r   r   rf   rf   rf   )r   rg   )r   r   r   r    r#   r]   r^   maskr'   FT
ignoremaskreturn_indexr   r   )keyrm   )r   r   r      r.   )r   r   r   r,   rN   )r   r   r   rp   r,   )mar8   r:   r9   r   r   sortedrI   s       rB   test_find_duplicatesz%TestRecFunctions.test_find_duplicates   si   HH FB #Je}m.L(MN	P qUFa&VDH%w/T!WaRk*qc=!VDH%w/T!WaRk*qc=VDH%w/T!WaRk*qd>VDH%w/T!WaRk*qd>!VDH%w/T!WaRk*rD   c                 f   dt         fg}t        j                  g dg d      j                  |      }t	        |dd      }g d}t        t        |d         |       t        |d	   ||d             t	        |d
d      }g d}t        t        |d         |       t        |d	   ||d             y )Nr0   )r   r   r   r   r   rp   rp   )r   r   r   r   r   r   r   rj   Trk   )r   r   rp   r,   rn   r   F)r   r   r   rp   r,      )r:   rq   r8   rO   r   r   rr   )r<   rV   r0   rA   rJ   s        rB   test_find_duplicates_ignoremaskz0TestRecFunctions.test_find_duplicates_ignoremask   s    *HH*/115f 	
qTEVDH%w/T!WaRk*qUF$VDH%w/T!WaRk*rD   c                    t        j                  dd      }t        j                  d|      }t        t	        |      t        j                  d             t        t	        |      j
                  d       t        t	        t	        |      d      |       t        j                  t         j                  |f      }t        t	        |      j                  t         j                  u        y )Nzu1,f4,i8Talignr   r&      )	r7   r'   zerosr   r   itemsizerecordr   type)r<   dtr0   s      rB   test_repack_fieldsz#TestRecFunctions.test_repack_fields   s    XXj-HHQb!]2&(<=]1%..3]=#4DA2F XXryy"o&b!&&"))34rD   z"memmap is thread-unsafe (gh-29126))reasonc           	      4   t        j                  dg d      }t        |      }t        |t        j                  dd             t        j                  g dg d      }t        j
                  t        |dd	g         d
      }t        |t        j                  g d             t        j
                  t        |dg         d
      }t        |t        j                  g d             t        j                  d      j                  d      }t        ||j                        }t        j                  ddddgfddddgfddddgfddddgfgdd d!d"gfd#g      }t        ||       t        j                  g dg d      }t        t        t         j
                  |      t        j                  g d$             t        t        t         j
                  |dd	g         t        j                  g d             t        j                  g dg d%      }t        |      }t        ||j                        }	t        t        j                  ||             t        t        j                  |	|             t        |d	dg         }
t        |
dd&gd'dgd(d'gd)dgg       t        t        j                  |
|             t        j                  d&d*d+gddgd,d'ggfd-d.dgd(d)gd/d0ggfgg d1      }t        |      }t        ||j                        }	t        t        j                  ||             t        t        j                  |	|             |d d d
   }t        |      }t        |g d2g d3g       |g d4   }t        |      }
t        |
g d5g d6g       t        j                  d&d*d+gddgd,d'ggd7fd-d.dgd(d)gd/d0ggd8fgg d9      }t        |g d:         }t        t        j                  ||             t        |g d3g d2g       t        j                  dt        fd;t        fg      }t        j                  d<|fd |fd=|fg      }t        j                  d|      }t        |t              }t        |t        j                  d>t                     d? }d@ }dPdA} | | |t         j                  t         j                        d+            }t         ||      dBt         j                  |f        | | |t         j                  d*      d*            }t         ||      dCt         j                  |f        |t         j                        }t         ||      dDt         j                  |f        |t         j                   | |t         j                  d*      d*            }t         ||      dEt         j                  |f        |       }t        t         t        t        j                  d+|             t        t"        t        t        j                  d+|      t         j                         t        t"        t        t        j                  dFt         j                               t        j                  dGdHgddIg      }t        |dJK      }|j%                  t         j&                        }t        |dLK      }t        |dJK      }	t        t        j                  ||             t        t)        |      t         j&                  u        t        t)        |	      t         j&                  u        t        ||       t        |	|       t        j*                  |dMz  dN|j                  |j,                  O      }||d d  t        |dLK      }t        |dJK      }	t        t        j                  ||             t        t)        |      t         j*                  u        t        t)        |	      t         j*                  u        t        ||       t        |	|       y )QNr,   )r0   i4)r1   zf4,u2)cf4r   r&   )r,   r.   f8))r   r   r.   )r,   r.      )r         )r   r      )r=   r   )r>   r   )r?   r   r=   r?   rn   )axis)r*   g      @      "@      &@)r!         @      @      $@r   r   )r!   r   r*   r   r.   )r/   r          @r   r   )r   r   g      *@g      ,@   )g      0@   g      2@g      3@r   r1   )f0r   )f1u2)r   r   r   )gUUUUUU@gUUUUUU@gUUUUUU!@r   )r   )r>   r   )r?   r   r   r   r   r   r   rp   rv   r   	   r{      )x0r   x1)r   r   x2)r   r   r   )r   r   r   r   r   r{   r   )r   r   rp   r,   r.   rv   r   )r   r   r   )r,   r.   rv   r   r   rp   r   )r   r   r{   r   r   r   r       @   )r   r   r   )ignoredu1)r   r   r   r>   r0   r   )r   rv   c                 0    t        j                  | |f      S N)r7   r'   )r   shapes     rB   subarrayzBTestRecFunctions.test_structured_to_unstructured.<locals>.subarrayC  s    88RK((rD   c                  z    t        j                  t        |       D cg c]  \  }}d| |f c}}      S c c}}w )Nr=   )r7   r'   	enumerate)dtsir   s      rB   
structuredzDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredF  s1    88	#Guq"!gr]GHHGs   7
c                     t        j                  d|       }t        ||      }t        ||       }|j                  |j
                  |j
                  fS )NrH   r&   )r7   r|   r   r   r   r'   )r   r'   arrretbackarrs        rB   inspectzATestRecFunctions.test_structured_to_unstructured.<locals>.inspectI  sC    ((2r"C,S>C0b9G99cii66rD   )rv   rG   rF   )r.   )rp   r   r   r   rp   r,   )r1   r   T)copyFmemmapzw+)moder'   r   r   )r7   r|   r   r   r8   meanarangereshaper   r'   r   r   shares_memoryr:   int32r   
ValueErrorNotImplementedErrorrO   recarrayr   r   r   )r<   tmp_pathr0   outr1   r   wantdddddddd_attrib_revd_revdd_revd_attrib_revpointtriangler   resr   r   r   r   d_plaindd_expecteds                           rB   test_structured_to_unstructuredz0TestRecFunctions.test_structured_to_unstructured   s   HHQKL(+S"((667HHEBDgg0C:?bIS"((#789gg0C5:DS"((#789IIbM!!&)(AGG4xx1i24i24i#s4i#s46 ( <">?-/	0 	S$HHEBD'3XXCD	F'C:?XX34	6 HHEBD'*(QWW5  Q'(  a() 31c3Z=A]aVaVb!Wr2h$GH  23 HHq1q'a!HAh#781b'RHr2h#78:45 (*(QWW5  Q'(  a() $B$+E2V835 	6 +,2<@]%:%?%A 	B HHq1q'QFQF#3R81b'RHr2h#7<>GH (*<(=>  Q'(R/46 	7 3*sCj1288c5\C<#uFGhhr8$(C8S"((7#67	)	I	7 BHHbhh!?CDWR[42"67"((A!6:;WR[42"67!WR[42"67(8BHHa+@!"DEWR[42"67\j"<bhhq"oN 	)+E+-88Ar?"((	L)+E+-88F"((+K	M ((FF+K3MN0tD LL%'6(6  B'(RBKK'(S	R[[()R%S+& IIh)#MM#MM+ !'6(6  B'(RBII%&S	RYY&'R%S+&rD   c                     t        j                  d      }dt        fdt        fg}t        j                  |      }t	        ||      }t	        ||      }t        ||       y )N)r   r   r=   r>   r&   )r7   r|   r9   r'   r   r   )r<   r0   test_dtype_args
test_dtypefield1field2s         rB   test_unstructured_to_structuredz0TestRecFunctions.test_unstructured_to_structured  sR    HHW<#u6XXo.
+A_E+AZ@VV$rD   c                    t        j                  dg d      }ddg}t        t        ||      t        j                  d|             t        j                  ddg|      }t        ||d	       t        |t        j                  d
dg|j                               t        ||       t        |t        j                  ddg|j                               t        j                  ddddgfg      }ddgfg}t        t        ||      t        j                  d|             t        j                  ddg|      }t        ||d	       t        |t        j                  ddg|j                               t        ||       t        |t        j                  ddg|j                               t        j                  d      t        j                  d      }}t        ||       t        |d   d       y )Nr   )r   r1   r   r   r   r&   r1   r   r   r   r   F)zero_unassigned)r   r   r   )r   rp   r,   )r   r   r   )r   rp   r,   r0   r   )r   )rp   )r   )r   rp   ))r   r   ))r   rp   rp   r   rH   )r7   onesr   r   r8   r   r'   )r<   r0   newdtr1   s       rB   test_field_assignment_by_namez.TestRecFunctions.test_field_assignment_by_name  s   GGADEk*^Au-rwwq%/@AHHff%U3aE:Q)Y!7qwwGHa#Q)Y!7qwwGH GGAs[+$>?@A}%&^Au-rwwq%/@AHHgw'u5aE:Q)Y!7qwwGHa#Q)Y!7qwwGH xx{BHHQK1a#QrUArD   N)__name__
__module____qualname__rC   rK   rQ   rW   r[   ra   rs   rw   r   pytestmarkthread_unsafer   r   r   rH   rD   rB   r   r   !   sh    $NL$@	$$$6+B+
5 [[&JKO' LO'b%rD   r   c                       e Zd Zd Zd Zy)TestRecursiveFillFieldsc                    t        j                  ddgdt        fdt        fg      }t        j                  d|j
                        }t        ||      }t        j                  g ddt        fdt        fg      }t        ||       y )Nr   r   r         4@r    r#   r&   r   r   r   )r           )r7   r8   r:   r9   r|   r'   r   r   r<   r0   r1   rA   rJ   s        rB   test_simple_flexiblez,TestRecursiveFillFields.test_simple_flexible  so    HHh)3*sEl1KLHHT)$Q*((8#&*sEl!;=T7#rD   c                    t        j                  ddgddgdt        fdt        fg      }t        j                  d|j
                  	      }t        ||      }t        j                  g d
g ddt        fdt        fg      }t        ||       y )Nr   r   r   r   rh   r    r#   ri   r   r&   r   )r   rh   rg   )rq   r8   r:   r9   r|   r'   r   r   r   s        rB   test_masked_flexiblez,TestRecursiveFillFields.test_masked_flexible  s~    HHh)0@ #Je57HHT)$Q*((8 8#&*sEl!;= 	T7#rD   N)r   r   r   r   r   rH   rD   rB   r   r     s    $	$rD   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestMergeArraysc           	         t        j                  ddg      }t        j                  g d      }t        j                  ddgddt        fg      }t        j                  d	d
gdt        fddt        fdt        fdg fgfg      }||||fS )Nr   r   r   r   r"   r%   r#   r&   r   )r   r*   rH   r,   )r.   r/   rH   r0   r1   r2   r3   bcr7   r8   r9   r:   r<   r=   r>   r?   r@   s        rB   _create_arrayszTestMergeArrays._create_arrays  s    HHaXHH\"HH	"<#u*FHHH 12:tUmdC[4*%MNOQ !QzrD   c                 0   | j                         \  }}}}t        |      }t        j                  ddgdt        fg      }t        ||       t        |f      }t        ||       t        |d      }t        ||       t        |d      }t        ||       y )NrF   r   r   r&   Fr4   T)r   r
   r7   r8   r:   r   r<   _r=   r?   rA   rJ   s         rB   	test_solozTestMergeArrays.test_solo  s    ((*
1aA((D$<s}=T7#QD!T7#Au-T1At,T1rD   c                     | j                         d   }t        |d      }t        ||       t        |d      }t        j                  ddgdt
        fdt        fd	t
        fg
      }t        ||       y )Nr   Fr4   T)r   r   r*   )r,   r.   r/   r0   r2   r3   r&   )r   r
   r   r7   r8   r:   r9   r<   r@   rA   rJ   s       rB   test_solo_w_flattenz#TestMergeArrays.test_solo_w_flatten  sm    !!$Au-T1At,((K5#&*tUmdC[!IKT7#rD   c                 |   | j                         \  }}}}t        ||fd      }t        j                  g ddt        fdt        fg      }t        ||       t        ||fd      }t        j                  g dg ddt        fdt        fg	      }t        ||       t        |j                  |j                         y )
NFusemask)r   r   )r   r   )rn   r   r   r   r&   Trg   rg   rh   ri   )r   r
   r7   r8   r:   r   rq   rj   r<   r  r=   r>   rA   rJ   s         rB   test_standardzTestMergeArrays.test_standard  s     ((*
1aQFE2((7#'+c{!;=T7#QFD1((7 8#'+c{!;= 	T7#TYY-rD   c                 @   | j                         \  }}}}t        ||fd      }t        j                  ddgdt        fddt
        fg      }t        ||       t        ||fd	      }t        j                  d
dgdt        fdddt
        fgfg      }t        ||       y )NTr4   )r   r    r!   )r   r#   r$   r   r%   r#   r&   F)r   r   )r   r"   r   r   r
   r7   r8   r:   r9   r   r   s         rB   test_flattenzTestMergeArrays.test_flatten  s    ((*
1aQFD1((L,7#'+|c5\!JLT7#QFE2((NN;#'+#',e)E"F"HI 	T7#rD   c                    | j                         \  }}}}t        ||fd      }t        j                  ddgdt        fdt        fdt
        fdt        fg	      }t        ||       t        ||fd
      }dt        fddt
        fdt        fdg fgfg}dt        fd|fg}t        j                  ddg|	      }t        ||       y )NTr4   )r   r   r   r*   )r   r,   r.   r/   r   r0   r2   r3   r&   Fr1   r   r   )r!   r   )r   r   r  )r<   r@   r=   r  rA   rJ   f1_descrcontroldtypes           rB   test_flatten_wflexiblez&TestMergeArrays.test_flatten_wflexible  s    ((*
1aQFD1((NN;#'+#&*tUmdC["JK 	T7#QFE2#Je}tSkD":&N OPsdH%56((35KL!-/T7#rD   c                 T   | j                         d   }t        j                  g dg d      }t        ||fd      }t        j                  g dg dd	t        fd
t        fg      }t        ||       t        ||fdd      }t        ||       t        t        |t                     y )Nr   r   r   rp   r   r   r   ru   Tr  )r   r   r   )rn   rp   )r   rg   rh   r   r   ri   )r  
asrecarray)	r   rq   r8   r
   r:   r   r   
isinstancer   )r<   r=   mxrA   rJ   s        rB   test_wmasked_arraysz#TestMergeArrays.test_wmasked_arrays  s    !!$XXii0QGT2((4 8#'+c{!;= 	T7#QGTdCT7#
4/0rD   c                 
   t        t        j                  ddg      j                  dt        fg      t        j                  g d      f      }t        j                  g dg ddt        fdt        fg      }t        ||       y )	Nr   r   r0   )r   r   rM   )r   r   )rn   rM   r
  r   ri   )r
   r7   r8   rO   r:   rq   r9   r   )r<   rA   rJ   s      rB   test_w_singlefieldz"TestMergeArrays.test_w_singlefield  sm    RXXq!f-22S#J<@XXo68 :((: 8#&*tUm!<> 	T7#rD   c                     | j                         d   }t        |t        j                  g d      j	                  dt
        fg      f       t        j                  g dddt        fdt
        fg       y )Nrn   r   re   )r    r!   r   r#   r$   r   )z-1rn   r   r%   r#   r&   )r   r
   r7   r8   rO   r:   r9   )r<   r?   s     rB   test_w_shorter_flexz#TestMergeArrays.test_w_shorter_flex(  s`    !"% 	a,/44sCj\BCD
?$sElS#J?	ArD   c           	          | j                         \  }}}}t        |d   |d   |d   fd      }t        j                  dgdt        fdt        fddd	t
        fgfg
      }t        ||       y )Nr   Fr  )r   r   r    r   r   r   f2r%   r#   r&   r  )r<   r  r=   r>   r?   rA   rJ   s          rB   test_singlerecordz!TestMergeArrays.test_singlerecord6  s}    ((*
1aQqT1Q41.>((-.#'+#'+#',e)E"F"HI 	T7#rD   N)r   r   r   r   r  r  r  r  r  r  r  r!  r%  rH   rD   rB   r   r     s5    	$. $$ 1$A$rD   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestAppendFieldsc                    t        j                  ddg      }t        j                  g d      }t        j                  ddgddt        fg      }t        j                  d	d
gdt        fddt        fdt        fgfg      }||||fS Nr   r   r   r   r"   r%   r#   r&   r(   r+   r0   r1   r2   r3   r   r   s        rB   r   zTestAppendFields._create_arraysC      HHaXHH\"HH	"<#u*FHHHm]3 #Je}tSk.J(KLN!QzrD   c                     | j                         d   }t        |dg d      }t        j                  g dg ddt        fdt        fg      }t        ||       y )	Nr   r    r   datar	  r
  r   ri   r   r   rq   r8   r:   r   r<   r=   rA   rJ   s       rB   test_append_singlez#TestAppendFields.test_append_singleL  sS    !!$Q,7((7 8#'+Sz!:= 	T7#rD   c                     | j                         d   }t        |dg dddgg      }t        j                  g dg dd	t        fd
t        fdt        fg      }t        ||       y )Nr   rS   r   d      r,  ))r   r   r2  )r   r   r3  )rn   r   rn   )r   r   r   r4  )r   r   r   r   r    r#   ri   r.  r/  s       rB   test_append_doublez#TestAppendFields.test_append_doubleU  sc    !!$Q
,c
1KL((E A#'+SzC:!FI 	T7#rD   c                     | j                         d   }t        |dg d      }t        j                  g dg dddt        fdt
        fg	      }t        ||       y )
Nrn   re   r   r,  )r  r   )rn         r   )r4  r4  r   r   r   r%   r#   ri   )r   r   rq   r8   r9   r:   r   )r<   r?   rA   rJ   s       rB   test_append_on_flexz$TestAppendFields.test_append_on_flex^  sV    !"%Q,7((H A".esCj!IL 	T7#rD   c           	          | j                         d   }t        |dg d      }t        j                  g dg ddt        fdd	t
        fd
t        fgfdt        fg      }t        ||       y )Nr   re   r   r,  ))r   r)   r   )r,   r-   r   )rn   )rn   r7  r   )r   rg   r   r;  )r   r  r   r0   r1   r2   r3   ri   )r   r   rq   r8   r:   r9   r   r  s       rB   test_append_on_nestedz&TestAppendFields.test_append_on_nestedg  sp    !!$Q,7(( 1!N#&*#&$s(D"E#&*".0 	T7#rD   N)r   r   r   r   r0  r5  r9  r<  rH   rD   rB   r'  r'  @  s    $$$$rD   r'  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestStackArraysc                    t        j                  ddg      }t        j                  g d      }t        j                  ddgddt        fg      }t        j                  d	d
gdt        fddt        fdt        fgfg      }||||fS r)  r   r   s        rB   r   zTestStackArrays._create_arraysx  r*  rD   c                     | j                         d   }t        |f      }t        ||       t        ||u        t        |      }t        ||       t        ||u        y )Nr   )r   r   r   r   )r<   r=   rA   s      rB   r  zTestStackArrays.test_solo  sV    !!$QD!T1	AT1	rD   c                 Z   | j                         \  }}}}t        ||fd      }t        j                  g d      }t	        ||       t        ||fd      }t        j                  g d      }t	        ||       t        ||fd      }t        j                  g d      }t	        ||       y )NFr  )r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r7   r8   r   r  s         rB   test_unnamed_fieldsz#TestStackArrays.test_unnamed_fields  s    ((*
1aQFE2((<(T7#QFE2((-.T7#QFE2((-.T7#rD   c                 H   | j                         \  }}}}t        ||f      }t        j                  g dg ddt        fddt
        fg      }t        ||       t        |j                  |j                         t        ||f      }t        j                  g dg dddt
        fd	t        fg      }t        ||       t        |j                  |j                         t        |||f      }t        j                  g d
g dddt
        fd	t        fg      }t        ||       y )N))r   rn   rn   )r   rn   rn   )rn   r    r   )rn   r#   r   )r   r   r   rD  r  r  r   r%   r#   ri   )r    r   rn   r#   r   rn   rn   rn   r   rn   rn   r   )r   r   r   rI  r8  r8  r$  )rE  rF  rE  rF  rG  rH  )rI  rI  rI  rI  r8  r8  )r   r   rq   r8   r:   r9   r   rj   r   s         rB   test_unnamed_and_named_fieldsz-TestStackArrays.test_unnamed_and_named_fields  s   ((*
1aQF#(( 8!7#'+|c5\!J	L
 	T7#TYY-QF#(( 8!7".etSk!J	L
 	T7#TYY-Q1I&(( 8!7 #/etSk!JL 	T7#rD   c                 "   | j                         \  }}}}t        j                  g dddt        fdt        fg      }t	        ||f      }t        j                  g dddt        fdt        fgg d      }t        ||       t        |j                  |j                         t	        |||f      }ddt        fdt        fd	t        fg}t        j                  g d
|g d      }t        ||       t        |j                  |j                         y )Nr0   r         Y@r1   r         i@r   rM        r@r%   r#   re   r&   )rE  rF  rM  rO  rQ  rI  rI  r4  r4  r4  r'   rj   f3))r    r   rn   rn   )r#   r   rn   rn   )r0   r   rN  rn   )r1   r   rP  rn   )r   rM   rR  rn   )rn   rn   rn   r   )rn   rn   rn   r   )r   r   r   r   rV  r   r   r   r   rW  rW  r   r   r   r   rX  )	r   r7   r8   r9   r   rq   r   rj   r:   )r<   r  r=   r?   zzrA   rJ   rV   s           rB   test_matching_named_fieldsz*TestStackArrays.test_matching_named_fields  s    ((*
1aXXL)C<#uFHQG$(( U #/esEl!K!B	C 	T7#TYY-QAJ'esElT3KH(( > "(!=> 	T7#TYY-rD   c                    | j                         d   }t        j                  g dddt        fdt        fg      }ddd	d
d}t	        ||f|      }t        j                  g dddt        fdt        fgg d      }t        ||       t        |j                  |j                         t        |j                  |j                         y )Nrn   rL  r%   r#   re   r&   z???g     8    g    i)r    r#   re   D)defaults))r    r   r\  )r#   r   r\  rM  rO  rQ  rS  rT  )	r   r7   r8   r9   r   rq   r   r-  rj   )r<   r?   rY  r^  rA   rJ   s         rB   test_defaultszTestStackArrays.test_defaults  s    !"%XXL)C<#uFHUgFQGh7(( U #/esEl!K!B	C 	T7#TYY-TYY-rD   c                    dt         fdt        fdt        fg}t        j                  dgdg|      }dt         fdt        fdt        fg}t        j                  dg|      }t        j                  ddgdd	g|      }t        ||fd
      }t        ||       t        |j                  |j                         t        t              5  t        ||fd       d d d        y # 1 sw Y   y xY w)Nr    r#   re   r  r   r   r   ri   r,   r.   rv   r&   r4  T)autoconvertF)
r:   boolr9   rq   r8   r   r   rj   r   	TypeError)r<   adtyper0   bdtyper1   rJ   rA   s          rB   test_autoconversionz#TestStackArrays.test_autoconversion  s    *sDkC<8HHi[	{&A*sElS%L9HHi[/((Iy1I8N!')QF5T7#TYY-9% 	4!QU3	4 	4 	4s   C  C)c                 n   dt         fdt        fdt        fg}t        j                  dgdg|      }dt         fdt        fdt        fg}t        j                  dg|      }t        ||f      }t        j                  ddgdd	g|      }t        ||       t        |j                  |j                         y )
N)r0   r    )r1   r#   )r   re   r  ra  ri   rb  r&   r4  )r:   rd  r9   rq   r8   r   r   rj   )r<   rf  r0   rg  r1   rA   rJ   s          rB   test_checktitlesz TestStackArrays.test_checktitles  s    s#j$%7*e9LMHHi[	{&As#j$%7*e9LMHHi[/QF#((Iy1I8N!')T7#TYY-rD   c           
         t        j                  ddgddt        dfg      }t        j                  ddgd	fd
dgdfddgdfgddt        dfdt        fg      }t        ||f      }t	        j                  ddgdfddgdfddgd	fddgdfddgdfgddgdfddgdfddgdfddgdfddgdfg|j
                        }t        |j
                  |j
                         t        ||       t        |j                  |j                         y )Nr#  )r#   r   r%   r#   rF   r&   r0   r   rN  r1   r   rP  r   rM   rR  re      Ar!   r      Br$      a   b   cFT)r-  rj   r'   )r7   r8   r9   r   rq   r'   r   rj   )r<   r?   rY  r   expecteds        rB   test_subdtypezTestStackArrays.test_subdtype  sQ   HHh
eT 235 XX3%seT 2S3%4F
eT 2S%LAC Ar7#88ua ua vu%vu%vu%' &&''' ((
  	SYY/S(#SXXx}}-rD   N)r   r   r   r   r  rB  rJ  rZ  r_  rh  rj  rr  rH   rD   rB   r>  r>  v  s0    	$ $@.8."4
..rD   r>  c                   T    e 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y)
TestJoinByc                    t        j                  t        t        t        j                  d      t        j                  dd      t        j                  dd                  dt
        fdt
        fdt
        fg	      }t        j                  t        t        t        j                  d
d      t        j                  dd      t        j                  dd                  dt
        fdt
        fdt
        fg	      }||fS )Nr   2   <   r2  n   r0   r1   r   r&   r.   r   A   K   r   )r7   r8   listzipr   r:   r<   r0   r1   s      rB   r   zTestJoinBy._create_arrays"  s    HHT#biimRYYr2->#%99S##68 9"%sc3Z#s DF HHT#bii2.		"b0A#%99S##68 9"%sc3Z#s DF !trD   c           	          | j                         \  }}t        d||d      }t        j                  g ddt        fdt        fdt        fdt        fdt        fg	      }t        ||       y )
Nr0   inner)jointype))r.   7   ry  i   r2  )rv   8   B   j   e   )r   9   C   k   f   )r   :   D   l   g   )r   ;   E   m   h   b1b2r   r   r&   )r   r	   r7   r8   r:   r   r   s        rB   test_inner_joinzTestJoinBy.test_inner_join+  sj    ""$1sAq73(( 3 $'*tSkD#;#&*sCj":;
 	T7#rD   c                     | j                         \  }}t        d||       t        j                  g ddt        fdt        fdt        fdt        fg       y )NrY   ))r.   r  r  r2  )rv   r  r  r  )r   r  r  r  )r   r  r  r  )r   r  r  r  r0   r1   r   r   r&   )r   r	   r7   r8   r:   r}  s      rB   	test_joinzTestJoinBy.test_join6  sT    ""$1 	
Aq!
 % sc3Zsc3Z1	2rD   c                    t        j                  dgdt        fg      }t        j                  dt        j                  g d      fgdt        fdg      }t        d||      }t	        ||j                  t        j                               y )NrF   ro   r&   r   r  )valueuint16rp   )r7   r8   r:   r	   r   rO   rq   MaskedArray)r<   foobarr   s       rB   test_join_subdtypezTestJoinBy.test_join_subdtypeG  sq    hhv$cl^-hhBHHY/01$cl,BCEeS#&S#((2>>23rD   c           	          | j                         \  }}t        d||d      }t        j                  g dg ddt        fdt        fdt        fdt        fg	      }t        ||       y )
NrY   outer)r   rv  r2  rn   r   3   r  rn   r   4   r  rn   rp   5   r  rn   r,   6   r  rn   r.   r  r  rn   )r.   ry  rn   r2  rv   r  r  rn   )rv   r  rn   r  r   r  r  rn   )r   r  rn   r  r   r  r  rn   )r   r  rn   r  r   r  r  rn   )r   r  rn   r  )r   F   rn   r  )r   G   rn   r  )r   H   rn   r  )r{   I   rn   r  )r   J   rn   r  )rW  rW  rW  rW  rW  rW  r   r   r   r   rW  r  rW  r  rW  r  rW  r  r  r  r  r  r  r0   r1   r   r   ri   r   r	   rq   r8   r:   r   r   s        rB   test_outer_joinzTestJoinBy.test_outer_joinP  sj    ""$1z1a1(( 	B	!= $'*sCj#&*sCj":);, 	T7#rD   c           	          | j                         \  }}t        d||d      }t        j                  g dg ddt        fdt        fdt        fdt        fg	      }t        ||       y )
NrY   	leftouter)
r  r  r  r  r  r  r  r  r  r  )
rW  rW  rW  rW  rW  rW  rW  rW  rW  rW  r0   r1   r   r   ri   r  r   s        rB   test_leftouter_joinzTestJoinBy.test_leftouter_joink  sh    ""$1z1a5(( @
!=
 $'*sCj3*sCj!Q
S 	T7#rD   c                     t        j                  dg d      }t        j                  dg d      }t        ddg||dd	      }t	        |j
                  j                  g d
       y )Nrp   r   r   r   r&   r   r   r   r   r1   r  F)r  r  )r1   r   a1a2)r7   r|   r   r	   r   r'   names)r<   r0   r1   js       rB   test_different_field_orderz%TestJoinBy.test_different_field_order{  sM    HHQEFGGADES#J1wFQWW]]$:;rD   c                     t        j                  dg d      }t        j                  dg d      }t        t        t
        g d||       y )Nrp   r  r&   r  )r0   r1   r1   )r7   r|   r   r   r   r	   r}  s      rB   test_duplicate_keyszTestJoinBy.test_duplicate_keys  s4    HHQEFGGADEj'?AqArD   c                 8   t        j                  ddg      }t        j                  ddg      }t        j                  g d      }t        j                  ddg|      }t        j                  dd	g|      }t        d
||      }t	        |j                  |       y )N)ro   S5r  <f4ro   S10)r  value1r  )value2r  Sarahr   Johnr/   r&   r  r   r  r   ro   r7   r'   r8   r	   r   r<   a_dtypeb_dtypeexpected_dtyper0   r1   r   s          rB   #test_same_name_different_dtypes_keyz.TestJoinBy.test_same_name_different_dtypes_key  s    ((M+;<=((N,<=> #B C HHo}5WEHHo}5WEeQ"SYY/rD   c                 8   t        j                  ddg      }t        j                  ddg      }t        j                  g d      }t        j                  ddg|      }t        j                  dd	g|      }t        d
||      }t	        |j                  |       y )Nr  r  )r  <f8))ro   z|S10r  )r  r  r  r  r&   r  r  ro   r  r  s          rB   test_same_name_different_dtypesz*TestJoinBy.test_same_name_different_dtypes  s    ((N,<=>((N,<=> #C D HHo}5WEHHo}5WEeQ"SYY/rD   c                    t        j                  dt        dfdg      }t        j                  g dt         j                  fg ddfg|      }t        j                  dt        dfdg      }t        j                  g ddfg d	dfg|      }t        j                  dt        dfddg      }t        j                  g dt         j                  dfg|      }t        d||      }t        |j                  |       t        ||       y )
Nposrp   )fr  )r   r   r   r  r   r&   )gr  )rp   r   r   )r7   r'   r:   r8   pir	   r   )r<   r  r0   r  r1   r  rq  r   s           rB   test_subarray_keyzTestJoinBy.test_subarray_key  s    ((UCO\:;HHy"%%(9c*:;7K((UCO\:;HHy!ny#&67wGE3?L,"OP88i23>JeQ"SYY/S(#rD   c                 R   t        j                  dd      }d|_        t        t	        |j
                        d       t        j                  ddg|      }t        j                  dd	g|      }t        d
||      }t        j                  g d      }t        |j                  |       y )Nzi1,f4Try   )kvrp   r   )rp   r   r  r   r  ))r  i1)v1r   )v2r   )	r7   r'   r  r   lendescrr8   r	   r   )r<   r   r0   r1   r   r  s         rB   test_padded_dtypezTestJoinBy.test_padded_dtype  s    XXgT*BHHq!HHff%r*HHff%r*c1a   #
  	SYY/rD   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  rH   rD   rB   rt  rt  !  s?    	$2"4$6$ <B

00$0rD   rt  c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestJoinBy2c                    t        j                  t        t        t        j                  d      t        j                  dd      t        j                  dd                  dt
        fdt
        fdt
        fg	      | _        t        j                  t        t        t        j                  d      t        j                  d
d      t        j                  dd                  dt
        fdt
        fdt
        fg	      | _        y )Nr   rv  rw  r2  rx  r0   r1   r   r&   ry  rz  r   )r7   r8   r{  r|  r   r:   r0   r1   )clss    rB   setup_methodzTestJoinBy2.setup_method  s    c"))B-2r1B"$))C"57 8!$c
S#Jc
CE c"))B-2r1B"$))C"57 8!$c
S#Jc
CErD   c           	          | j                   | j                  }}t        d||ddd      }t        j                  g ddt
        fdt
        fdt
        fd	t
        fd
t
        fg      }t        ||       y )Nr0   r6   2r  	r1postfix	r2postfixr  
)r   rv  ry  r2  r2  )r   r  r  r  r  )r   r  r  r  r  )rp   r  r  r  r  )r,   r  r  r  r  )r.   r  r  r  r  )rv   r  r  r  r  )r   r  r  r  r  )r   r  r  r  r  )r   r  r  r  r  r1   r  r   r   r&   r0   r1   r	   r7   r8   r:   r   r   s        rB   test_no_r1postfixzTestJoinBy2.test_no_r1postfix  sr    vvtvv1AsWF(( J
 $'*sCj4+#&*sCj":; 	T7#rD   c           	      `    t        t        t        d| j                  | j                  dd       y )Nr0   r6   )r  r  )r   r   r	   r0   r1   )r<   s    rB   test_no_postfixzTestJoinBy2.test_no_postfix  s!    j'3 "b	2rD   c           	          | j                   | j                  }}t        d||ddd      }t        j                  g ddt
        fdt
        fdt
        fd	t
        fd
t
        fg      }t        ||       y )Nr0   1r6   r  r  r  r  r1   r   r   r&   r  r   s        rB   test_no_r2postfixzTestJoinBy2.test_no_r2postfix  sr    vvtvv1AWF(( J
 $'*tSkC:#&*sCj":; 	T7#rD   c                    t        j                  t        t        t        j                  ddgd      t        j
                  t        j                  d      d      t        j                  dd      t        j                  dd                  dt        fd	t        fd
t        fdt        fg      }t        j                  t        t        t        j                  ddgd      t        j
                  t        j                  d      d      t        j                  dd      t        j                  dd                  dt        fd	t        fd
t        fdt        fg      }t        j                  g ddt        fd	t        fdt        fdt        fdt        fdt        fg      }t        d	dg||ddd      }t        |j                  |j                         t        ||       y )Nr   r   r.   r   rv  rw  r   r  r0   r1   r   r&   ry  rz  r   )
)r   r   rv  ry  r   r   )r   r   r  r  r   r   )r   r   r  r  r   r   )r   r   r  r  r{   rp   )r   r   r  r  r   r,   )r   r   r  r  r   r.   )r   rp   r  r     rv   )r   rp   r  r  r   r   )r   r,   r  r     r   )r   r,   r  r     r   r  r  c1c2r  r  r  r  )r7   r8   r{  r|  tilerepeatr   r:   r	   r   r'   )r<   r0   r1   rJ   rA   s        rB   test_two_keys_two_varsz"TestJoinBy2.test_two_keys_two_vars  s{   HHT#bggr2h2BIIbiilA4N iiB/2r1BD E #Jc
S#Jc
KM HHT#bggr2h2BIIbiilA4N iiB/1b1AC D #Jc
S#Jc
KM (( L
 $'*sCj4+#'+c{T3K"IJ #J1sWNTZZ/T7#rD   N)	r   r   r   classmethodr  r  r  r  r  rH   rD   rB   r  r    s*    E E$2$$rD   r  c                       e Zd ZdZd Zy)TestAppendFieldsObjz;
    Test append_fields with arrays containing objects
    c                 R   ddl m}  |ddd      }t        j                  |df|dfgdt        fdt
        fg	      }t        j                  d
dgt        	      }t        |d|d      }t        j                  |dd
f|ddfgdt        fdt
        fdt        fg	      }t        ||       y)z7Test append_fields when the base array contains objectsr   )datei  r   r!   r$   r    r#   r&   r   r   re   F)r-  r  N)	datetimer
  r7   r8   objectr9   r:   r   r   )r<   r
  objr=   r>   rA   rJ   s          rB   test_append_to_objectsz*TestAppendFieldsObj.test_append_to_objects  s    !4AHHsBi#r+!6]S%L9;HHb"XS)Q!U;((S#rNS#rN;#&-#uSz!JLT7#rD   N)r   r   r   __doc__r  rH   rD   rB   r  r    s    

$rD   r  ).r   numpyr7   numpy.marq   numpy.lib.recfunctionsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.ma.mrecordsr   numpy.ma.testutilsr   numpy.testingr   r   librecfunctions_get_fieldspecget_fieldspecrT   rZ   
_zip_descrr;   
_zip_dtype	zip_dtyper   r   r   r'  r>  rt  r  r  rH   rD   rB   <module>r     s          " , + 0##22FF))	$$33FF**	FF**	B BJ$ $.@$ @$F3$ 3$lh. h.V\0 \0~?$ ?$D$ $rD   