
    Bwgӫ                     d   d dl Zd dl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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 ej6                  j8                  j:                  Zej6                  j8                  j>                  Zej6                  j8                  j@                  Z ej6                  j8                  jB                  Z"ej6                  j8                  jF                  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)MaskedRecords)assert_equal)assert_assert_raises)drop_fieldsrename_fieldsget_fieldstructurerecursive_fill_fieldsfind_duplicatesmerge_arraysappend_fieldsstack_arraysjoin_byrepack_fieldsunstructured_to_structuredstructured_to_unstructuredapply_along_fieldsrequire_fieldsassign_fields_by_namec                   Z    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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      }||||f| _        y N      
         A      ?B       @r!   z|S3r$   dtyper   r         @            @abbabbnparrayfloatintdataselfxyzws        X/var/www/horilla/myenv/lib/python3.12/site-packages/numpy/lib/tests/test_recfunctions.pysetup_methodzTestRecFunctions.setup_method   s    HHaXHH\"HHi+(3,79HHm]3 #Je}tSk.J(KLN1aL	    c                 D   | j                   \  }}}}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 )NTflatten Fr&   r$   r1   r3   r4   r2   )r:   	zip_descrr   r6   r(   r9   r8   )r<   r@   r=   r>   r?   tests         rA   test_zip_descrzTestRecFunctions.test_zip_descr   s   yyAq! !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rC   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,   r1   r2   r3   r4   r'   )r*   )r.   r   r-   )r   )r+   )r-   )r0    )r6   r7   r9   r8   r   r   r<   r1   rI   controls       rA   test_drop_fieldsz!TestRecFunctions.test_drop_fields@   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#rC   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/   r0   g      N@r1   r2   r3   r4   r'   r!   BB)r1   r4   )r6   r7   r9   r8   r   viewr   r(   )r<   r1   rI   newdtyperP   s        rA   test_rename_fieldsz#TestRecFunctions.test_rename_fields`   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#rC   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$   r1   r2   r3   r4   )r1   )r2   )r3   r4   )r1   )r2   rN   rN   )r6   r(   r8   	get_namesr   r9   r<   ndtyperI   s      rA   test_get_nameszTestRecFunctions.test_get_namesk   s    <#u67 T:&C:tUmdC[-I'JKL T56C:Ry12 T+," T2rC   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$   rY   r1   r2   r3   r4   )r1   r2   r3   r4   r1   r2   rN   )r6   r(   r8   get_names_flatr   r9   r[   s      rA   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rC   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$   rY   r!   BArT   z|S1)r!   r$   rc   rT   rT   BBABBB)r!   r$   rc   rT   re   rf   )r6   r(   r8   r	   r   r9   )r<   r\   rI   rP   s       rA   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rC   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   rj   ri   )r   )r"   r$   ri   )r   )r%   C)r   r   r   rl   rl   rl   )r   rm   )r   r   r   r!   r$   rc   rd   maskr(   FT
ignoremaskreturn_indexr   r   )keyrs   )r   r   r      r/   )r   r   r   r-   rT   )r   r   r   rv   r-   )mar7   r9   r8   r   r   sortedrO   s       rA   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*rC   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 )Nr1   )r   r   r   r   r   rv   rv   )r   r   r   r   r   r   r   rp   Trq   )r   r   rv   r-   rt   r   F)r   r   r   rv   r-      )r9   rw   r7   rU   r   r   rx   )r<   r\   r1   rI   rP   s        rA   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*rC   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'      )	r6   r(   zerosr   r   itemsizerecordr   type)r<   dtr1   s      rA   test_repack_fieldsz#TestRecFunctions.test_repack_fields   s    XXj-HHQb!]2&(<=]1%..3]=#4DA2F XXryy"o&b!&&"))34rC   c           	      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-   )r1   i4)r2   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?   rt   )axis)r+   g      @      "@      &@)r"         @      @      $@r   r   )r"   r   r+   r   r/   )r0   r          @r   r   )r   r   g      *@g      ,@   )g      0@   g      2@g      3@r   r2   )f0r   )f1u2)r   r   r   )gUUUUUU@gUUUUUU@gUUUUUU!@r   )r   )r>   r   )r?   r   r   r   r   r   r   rv   r|   r   	   r      )x0r   x1)r   r   x2)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   rv   r   )r   r   r   r   r   r   r       @   )r   r   r   )ignoredu1)r   r   r   r>   r1   r   )r   r|   c                 0    t        j                  | |f      S N)r6   r(   )r   shapes     rA   subarrayzBTestRecFunctions.test_structured_to_unstructured.<locals>.subarray:  s    88RK((rC   c            	          t        j                  t        |       D cg c]  \  }}dj                  |      |f c}}      S c c}}w )Nzx{})r6   r(   	enumerateformat)dtsir   s      rA   
structuredzDTestRecFunctions.test_structured_to_unstructured.<locals>.structured=  s4    88	#Ouq"ell1or2OPPOs   A
c                     t        j                  d|       }t        ||      }t        ||       }|j                  |j
                  |j
                  fS )NrN   r'   )r6   r   r   r   r   r(   )r   r(   arrretbackarrs        rA   inspectzATestRecFunctions.test_structured_to_unstructured.<locals>.inspect@  sC    ((2r"C,S>C0b9G99cii66rC   )r|   rM   rL   )r/   )rv   r   r   r   rv   r-   )r2   r   T)copyFmemmapzw+)moder(   r   r   )r6   r   r   r   r7   meanarangereshaper   r(   r   r   shares_memoryr9   int32r   
ValueErrorNotImplementedErrorrU   recarrayr   r   r   )r<   tmp_pathr1   outr2   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                           rA   test_structured_to_unstructuredz0TestRecFunctions.test_structured_to_unstructured   s   HHQKL(+S"((556HHEBDgg0C:?bIS"((#;<=gg0C5:DS"((#;<=IIbM!!%((AGG4xx1i24i24i#s4i#s46 ( <">?-/	0 	S$HHEBD'3XX>?	A'C:?XX67	9 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	)	Q	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+-88E+J	L ((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+&rC   c                     t        j                  d      }dt        fdt        fg}t        j                  |      }t	        ||      }t	        ||      }t        ||       y )N)r   r   r=   r>   r'   )r6   r   r8   r(   r   r   )r<   r1   test_dtype_args
test_dtypefield1field2s         rA   test_unstructured_to_structuredz0TestRecFunctions.test_unstructured_to_structuredx  sR    HHW<#u6XXo.
+A_E+AZ@VV$rC   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   r2   r   r   r   r'   r2   r   r   r   r   F)zero_unassigned)r   r   r   )r   rv   r-   )r   r   r   )r   rv   r-   r1   r   )r   )rv   )r   )r   rv   ))r   r   ))r   rv   rv   r   rN   )r6   onesr   r   r7   r   r(   )r<   r1   newdtr2   s       rA   test_field_assignment_by_namez.TestRecFunctions.test_field_assignment_by_name  s   GGADEk*^Au-rwwq%/@AHHeU^51aE:Q''!2!''BCa#Q''!2!''BC GGAs[+$>?@A}%&^Au-rwwq%/@AHHgw'u5aE:Q(H!5QWWEFa#Q(H!5QWWEF xx{BHHQK1a#QrUArC   N)__name__
__module____qualname__rB   rJ   rQ   rW   r]   ra   rg   ry   r}   r   r   r   r   rN   rC   rA   r   r      sI    !NB$@	$$$6+B+
5P'd%rC   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           )r6   r7   r9   r8   r   r(   r
   r   r<   r1   r2   rI   rP   s        rA   test_simple_flexiblez,TestRecursiveFillFields.test_simple_flexible  so    HHh)3*sEl1KLHHT)$Q*((8#&*sEl!;=T7#rC   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   rn   r!   r$   ro   r   r'   r   )r   rn   rm   )rw   r7   r9   r8   r   r(   r
   r   r   s        rA   test_masked_flexiblez,TestRecursiveFillFields.test_masked_flexible  s~    HHh)0@ #Je57HHT)$Q*((8 8#&*sEl!;= 	T7#rC   N)r   r   r   r   r   rN   rC   rA   r   r     s    $	$rC   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| _        y )Nr   r   r   r    r#   r&   r$   r'   r   )r   r+   rN   r-   )r/   r0   rN   r1   r2   r3   r4   bcr5   r;   s        rA   rB   zTestMergeArrays.setup_method  s    HHaXHH\"HH	"<#u*FHHH 12:tUmdC[4*%MNOQ 1aL	rC   c                 (   | j                   \  }}}}t        |      }t        j                  ddgdt        fg      }t        ||       t        |f      }t        ||       t        |d      }t        ||       t        |d      }t        ||       y )NrL   r   r   r'   FrE   T)r:   r   r6   r7   r9   r   r<   _r=   r?   rI   rP   s         rA   	test_solozTestMergeArrays.test_solo  s    yyAq!A((D$<s}=T7#QD!T7#Au-T1At,T1rC   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   FrE   T)r   r   r+   )r-   r/   r0   r1   r3   r4   r'   )r:   r   r   r6   r7   r9   r8   r<   r@   rI   rP   s       rA   test_solo_w_flattenz#TestMergeArrays.test_solo_w_flatten  sg    IIaLAu-T1At,((K5#&*tUmdC[!IKT7#rC   c                 t   | 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   )rt   r   r   r   r'   Trm   rm   rn   ro   )r:   r   r6   r7   r9   r   rw   rp   r<   r  r=   r>   rI   rP   s         rA   test_standardzTestMergeArrays.test_standard  s     yyAq!QFE2((7#'+c{!;=T7#QFD1((7 8#'+c{!;= 	T7#TYY-rC   c                 8   | 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 )NTrE   )r   r!   r"   )r   r$   r%   r   r&   r$   r'   F)r   r    )r   r#   r   r:   r   r6   r7   r9   r8   r   r   s         rA   test_flattenzTestMergeArrays.test_flatten  s    yyAq!QFD1((L,7#'+|c5\!JLT7#QFE2((NN;#'+#',e)E"F"HI 	T7#rC   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dt
        fdt        fdg fgfgfg}t        j                  ddg|	      }t        ||       y )NTrE   )r   r   r   r+   )r   r-   r/   r0   r   r1   r3   r4   r'   Fr   r2   r   )r"   r   )r   r   r  )r<   r@   r=   r  rI   rP   controldtypes          rA   test_flatten_wflexiblez&TestMergeArrays.test_flatten_wflexible  s    yyAq!QFD1((NN;#'+#&*tUmdC["JK 	T7#QFE2s!%c
),e}tSkDRT:.V(W(Y !Z[ ((35KL!-/T7#rC   c                 P   | j                   \  }}}}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 )Nr   r   rv   r   r   r   r{   Tr  )r   r   r   )rt   rv   )r   rm   rn   r   r   ro   )r  
asrecarray)	r:   rw   r7   r   r9   r   r   
isinstancer   )r<   r  r=   mxrI   rP   s         rA   test_wmasked_arraysz#TestMergeArrays.test_wmasked_arrays
  s    yyAq!XXii0QGT2((4 8#'+c{!;= 	T7#QGTdCT7#
4/0rC   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   r1   )r   r   rS   )r   r   )rt   rS   r
  r   ro   )r   r6   r7   rU   r9   rw   r8   r   )r<   rI   rP   s      rA   test_w_singlefieldz"TestMergeArrays.test_w_singlefield  sm    RXXq!f-22S#J<@XXo68 :((: 8#&*tUm!<> 	T7#rC   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 )Nrt   r   rk   )r!   r"   r   r$   r%   r   )z-1rt   r   r&   r$   r'   )r:   r   r6   r7   rU   r9   r8   )r<   r?   s     rA   test_w_shorter_flexz#TestMergeArrays.test_w_shorter_flex   sZ    IIbM 	a,/44sCj\BCD
?$sElS#J?	ArC   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?   rI   rP   s          rA   test_singlerecordz!TestMergeArrays.test_singlerecord/  sx    yyAq!QqT1Q41.>((-.#'+#'+#',e)E"F"HI 	T7#rC   N)r   r   r   rB   r  r  r  r  r  r  r  r   r$  rN   rC   rA   r   r     s5    !	$. $$"1$A$rC   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| _        y r   r5   r;   s        rA   rB   zTestAppendFields.setup_method<      HHaXHH\"HH	"<#u*FHHHm]3 #Je}tSk.J(KLN1aL	rC   c                     | j                   \  }}}}t        |dg d      }t        j                  g dg ddt        fdt        fg      }t        ||       y )Nr!   r   r:   r	  r
  r   ro   r:   r   rw   r7   r9   r   r<   r  r=   rI   rP   s        rA   test_append_singlez#TestAppendFields.test_append_singleE  sQ    yyAq!Q,7((7 8#'+Sz!:= 	T7#rC   c                     | j                   \  }}}}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 )NrY   r   d      r*  ))r   r   r/  )r   r   r0  )rt   r   rt   )r   r   r   r1  )r   r   r   r   r!   r$   ro   r+  r,  s        rA   test_append_doublez#TestAppendFields.test_append_doubleN  sa    yyAq!Q
,c
1KL((E A#'+SzC:!FI 	T7#rC   c                     | j                   d   }t        |dg d      }t        j                  g dg dddt        fdt
        fg	      }t        ||       y )
Nrt   rk   r   r*  )r  r  )rt         r   )r1  r1  r   r   r   r&   r$   ro   )r:   r   rw   r7   r8   r9   r   )r<   r?   rI   rP   s       rA   test_append_on_flexz$TestAppendFields.test_append_on_flexW  sP    IIbMQ,7((H A".esCj!IL 	T7#rC   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   rk   r   r*  ))r   r*   r   )r-   r.   r   )rt   )rt   r4  r   )r   rm   r   r8  )r   r  r   r1   r2   r3   r4   ro   )r:   r   rw   r7   r9   r8   r   r  s       rA   test_append_on_nestedz&TestAppendFields.test_append_on_nested`  sj    IIaLQ,7(( 1!N#&*#&$s(D"E#&*".0 	T7#rC   N)r   r   r   rB   r-  r2  r6  r9  rN   rC   rA   r&  r&  9  s    !$$$$rC   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| _        y r   r5   r;   s        rA   rB   zTestStackArrays.setup_methodq  r(  rC   c                     | j                   \  }}}}t        |f      }t        ||       t        ||u        t        |      }t        ||       t        ||u        y r   )r:   r   r   r   )r<   r  r=   rI   s       rA   r  zTestStackArrays.test_soloz  sT    yyAq!QD!T1	AT1	rC   c                 R   | 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   r6   r7   r   r  s         rA   test_unnamed_fieldsz#TestStackArrays.test_unnamed_fields  s    yyAq!QFE2((<(T7#QFE2((-.T7#QFE2((-.T7#rC   c                 @   | 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   rt   rt   )r   rt   rt   )rt   r!   r   )rt   r$   r   )r   r   r   rA  r  r  r   r&   r$   ro   )r!   r   rt   r$   r   rt   rt   rt   r   rt   rt   r   )r   r   r   rF  r5  r5  r#  )rB  rC  rB  rC  rD  rE  )rF  rF  rF  rF  r5  r5  )r:   r   rw   r7   r9   r8   r   rp   r   s         rA   test_unnamed_and_named_fieldsz-TestStackArrays.test_unnamed_and_named_fields  s
   yyAq!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#rC   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r1   r         Y@r2   r         i@r   rS        r@r&   r$   rk   r'   )rB  rC  rJ  rL  rN  rF  rF  r1  r1  r1  r(   rp   f3))r!   r   rt   rt   )r$   r   rt   rt   )r1   r   rK  rt   )r2   r   rM  rt   )r   rS   rO  rt   )rt   rt   rt   r   )rt   rt   rt   r   )r   r   r   r   rS  r   r   r   r   rT  rT  r   r   r   r   rU  )	r:   r6   r7   r8   r   rw   r   rp   r9   )r<   r  r=   r?   zzrI   rP   r\   s           rA   test_matching_named_fieldsz*TestStackArrays.test_matching_named_fields  s    yyAq!XXL)C<#uFHQG$(( U #/esEl!K!B	C 	T7#TYY-QAJ'esElT3KH(( > "(!=> 	T7#TYY-rC   c                    | j                   \  }}}}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 )NrI  r&   r$   rk   r'   z???g     8    g    i)r!   r$   rk   D)defaults))r!   r   rY  )r$   r   rY  rJ  rL  rN  rP  rQ  )r:   r6   r7   r8   r   rw   r   rp   )r<   r  r?   rV  r[  rI   rP   s          rA   test_defaultszTestStackArrays.test_defaults  s    yyAq!XXL)C<#uFHUgFQGh7(( U #/esEl!K!B	C 	T7#TYY-TYY-rC   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$   rk   r  r   r   r   ro   r-   r/   r|   r'   r1  T)autoconvertF)
r9   boolr8   rw   r7   r   r   rp   r   	TypeError)r<   adtyper1   bdtyper2   rP   rI   s          rA   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)r1   r!   )r2   r$   )r   rk   r  r^  ro   r_  r'   r1  )r9   ra  r8   rw   r7   r   r   rp   )r<   rc  r1   rd  r2   rI   rP   s          rA   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-rC   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$   rL   r'   r1   r   rK  r2   r   rM  r   rS   rO  rk      Ar"   r      Br%      a   b   cFT)r:   rp   r(   )r6   r7   r8   r   rw   r(   r   rp   )r<   r?   rV  r   expecteds        rA   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}}-rC   N)r   r   r   rB   r  r?  rG  rW  r\  re  rg  ro  rN   rC   rA   r;  r;  o  s0    !	$ $@.8."4
..rC   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	      | _        y )Nr   2   <   r/  n   r1   r2   r   r'   r/   r   A   K   r   r6   r7   listzipr   r9   r1   r2   r<   s    rA   rB   zTestJoinBy.setup_method  s    $s299R="))B2C#%99S##6 8 9"%sc3Z#s DF $s299Q#3RYYr25F#%99S##6 8 9"%sc3Z#s DFrC   c           	          | j                   | 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 )
Nr1   inner)jointype))r/   7   rv  i   r/  )r|   8   B   j   e   )r   9   C   k   f   )r   :   D   l   g   )r   ;   E   m   h   b1b2r   r   r'   r1   r2   r   r6   r7   r9   r   r   s        rA   test_inner_joinzTestJoinBy.test_inner_join#  si    vvtvv1sAq73(( 3 $'*tSkD#;#&*sCj":;
 	T7#rC   c                     | j                   | j                  }}t        d||       t        j                  g ddt
        fdt
        fdt
        fdt
        fg       y )Nr_   ))r/   r  r  r/  )r|   r  r  r  )r   r  r  r  )r   r  r  r  )r   r  r  r  r1   r2   r   r   r'   )r1   r2   r   r6   r7   r9   r<   r1   r2   s      rA   	test_joinzTestJoinBy.test_join/  sS    vvtvv1 	
Aq!
 % sc3Zsc3Z1	2rC   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 )NrL   ru   r'   r   r  )valueuint16rv   )r6   r7   r9   r   r   rU   rw   MaskedArray)r<   foobarr   s       rA   test_join_subdtypezTestJoinBy.test_join_subdtypeC  sq    hhv$cl^-hhBHHW-./$cl,BCEeS#&S#((2>>23rC   c           	          | j                   | 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 )
Nr_   outer)r   rs  r/  rt   r   3   r  rt   r   4   r  rt   rv   5   r  rt   r-   6   r  rt   r/   r  r  rt   )r/   rv  rt   r/  r|   r  r  rt   )r|   r  rt   r  r   r  r  rt   )r   r  rt   r  r   r  r  rt   )r   r  rt   r  r   r  r  rt   )r   r  rt   r  )r   F   rt   r  )r   G   rt   r  )r   H   rt   r  )r   I   rt   r  )r   J   rt   r  )rT  rT  rT  rT  rT  rT  r   r   r   r   rT  r  rT  r  rT  r  rT  r  r  r  r  r  r  r1   r2   r   r   ro   r1   r2   r   rw   r7   r9   r   r   s        rA   test_outer_joinzTestJoinBy.test_outer_joinL  si    vvtvv1z1a1(( 	B	!= $'*sCj#&*sCj":);, 	T7#rC   c           	          | j                   | 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 )
Nr_   	leftouter)
r  r  r  r  r  r  r  r  r  r  )
rT  rT  rT  rT  rT  rT  rT  rT  rT  rT  r1   r2   r   r   ro   r  r   s        rA   test_leftouter_joinzTestJoinBy.test_leftouter_joinh  sg    vvtvv1z1a5(( @
!=
 $'*sCj3*sCj!Q
S 	T7#rC   c                     t        j                  dg d      }t        j                  dg d      }t        ddg||dd	      }t	        |j
                  j                  g d
       y )Nrv   r   r   r   r'   r   r   r   r   r2   r}  F)r~  r  )r2   r   a1a2)r6   r   r   r   r   r(   names)r<   r1   r2   js       rA   test_different_field_orderz%TestJoinBy.test_different_field_ordery  sM    HHQEFGGADES#J1wFQWW]]$:;rC   c                     t        j                  dg d      }t        j                  dg d      }t        t        t
        g d||       y )Nrv   r  r'   r  )r1   r2   r2   )r6   r   r   r   r   r   r  s      rA   test_duplicate_keyszTestJoinBy.test_duplicate_keys  s4    HHQEFGGADEj'?AqArC   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)ru   S5r  <f4ru   S10)r  value1r  )value2r  Sarahr   Johnr0   r'   r  r   r  r   ru   r6   r(   r7   r   r   r<   a_dtypeb_dtypeexpected_dtyper1   r2   r   s          rA   #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/rC   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))ru   z|S10r  )r  r  r  r  r'   r  r  ru   r  r  s          rA   test_same_name_different_dtypesz*TestJoinBy.test_same_name_different_dtypes  s    ((N,<=>((N,<=> #C D HHo}5WEHHo}5WEeQ"SYY/rC   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posrv   )fr  )r   r   r   r  r   r'   )gr  )rv   r   r   )r6   r(   r9   r7   pir   r   )r<   r  r1   r  r2   r  rn  r   s           rA   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(#rC   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,f4Tr   )kvrv   r   )rv   r   r  r   r  ))r  i1)v1r   )v2r   )	r6   r(   r  r   lendescrr7   r   r   )r<   r   r1   r2   r   r  s         rA   test_padded_dtypezTestJoinBy.test_padded_dtype  s    XXgT*BHHq!HHff%r*HHff%r*c1a   #
  	SYY/rC   N)r   r   r   rB   r  r  r  r  r  r  r  r  r  r  r  rN   rC   rA   rq  rq    s@    F
$2(4$8$"<B

00$0rC   rq  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   rs  rt  r/  ru  r1   r2   r   r'   rv  rw  r   rx  )clss    rA   rB   z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rC   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 )Nr1   rG   2r}  	r1postfix	r2postfixr~  
)r   rs  rv  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  )r   r  r  r  r  )r   r  r  r  r  )r   r  r  r  r  r2   r  r   r   r'   r  r   s        rA   test_no_r1postfixzTestJoinBy2.test_no_r1postfix  sr    vvtvv1AsWF(( J
 $'*sCj4+#&*sCj":; 	T7#rC   c           	      `    t        t        t        d| j                  | j                  dd       y )Nr1   rG   )r  r  )r   r   r   r1   r2   r{  s    rA   test_no_postfixzTestJoinBy2.test_no_postfix  s!    j'3 "b	2rC   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 )Nr1   1rG   r}  r  r  r  r2   r   r   r'   r  r   s        rA   test_no_r2postfixzTestJoinBy2.test_no_r2postfix  sr    vvtvv1AWF(( J
 $'*tSkC:#&*sCj":; 	T7#rC   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   rs  rt  r   r  r1   r2   r   r'   rv  rw  r   )
)r   r   rs  rv  r   r   )r   r   r  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   rv   r  r     r|   )r   rv   r  r  r   r   )r   r-   r  r     r   )r   r-   r  r     r   r  r  c1c2r  r  r}  r  )r6   r7   ry  rz  tilerepeatr   r9   r   r   r(   )r<   r1   r2   rP   rI   s        rA   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#rC   N)	r   r   r   classmethodrB   r  r  r  r  rN   rC   rA   r  r    s*    E E$2$$rC   r  c                       e Zd ZdZd Zd Zy)TestAppendFieldsObjz;
    Test append_fields with arrays containing objects
    c                 B    ddl m} t         |ddd            | _        y )Nr   )datei  r   )obj)datetimer  dictr:   )r<   r  s     rA   rB   z TestAppendFieldsObj.setup_method  s    !T$1-.	rC   c                 P   | j                   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	  r"   r%   r!   r$   r'   r   r   rk   F)r:   r  N)r:   r6   r7   objectr8   r9   r   r   )r<   r	  r=   r>   rI   rP   s         rA   test_append_to_objectsz*TestAppendFieldsObj.test_append_to_objects	  s    iiHHsBi#r+!6]S%L9;HHb"XS)Q!U;((S#rNS#rN;#&-#uSz!JLT7#rC   N)r   r   r   __doc__rB   r  rN   rC   rA   r  r    s    
/	$rC   r  )-numpyr6   numpy.marw   numpy.ma.mrecordsr   numpy.ma.testutilsr   numpy.testingr   r   numpy.lib.recfunctionsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   librecfunctions_get_fieldspecget_fieldspecrZ   r`   
_zip_descrrH   
_zip_dtype	zip_dtyper   r   r   r&  r;  rq  r  r  rN   rC   rA   <module>r     s      + + 0? ? ? ? ?
 ##22FF))	$$33FF**	FF**	G GT$ $.B$ B$J3$ 3$lh. h.Va0 a0H?$ ?$B$ $rC   