
    G/Ph                        d dl Z 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j        j        j        Zej        j        j         Z ej        j        j!        Z!ej        j        j"        Z#ej        j        j$        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-dS )    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                   \    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dS )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| _        d S N      
         A      ?B       @r!   z|S3r$   dtyper   r         @            @abbabbnparrayfloatintdataselfxyzws        a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/lib/tests/test_recfunctions.pysetup_methodzTestRecFunctions.setup_method   s    HaXH\\\""Hi+(3,79 9 9Hm]3 #Je}tSk.J(KLN N N1aL			    c                    | 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                     d S )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   yAq! !Q...TXCy2s)455	7 	7 	7!Q///TXCy2s)455	7 	7 	7 !Q...TXCy,eEFF	H 	H 	H!Q///TXCy "\C<$@AC D D	E 	E 	E
 !Q...TXCy #Sz $e}tSk; < <	= 	= 	= !Q///TXCy "c3Z&)T5MD#;+G%H%J  KL M M	N 	N 	N 	N 	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          ||           d S )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_fieldsA   s   Hm]3 #Je}tSk.J(KLN N N 1c""(K5#&$s(D"E!FH H HT7### 1c""(D$<c
|<<<T7### 1th''(K5#&*sdC[M.B!CE E 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}|                    |          }t          |j        |           t          ||           d S )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_fieldsa   s    Hq1sCj/*QS#J,@A #J D%=4%2D"EFHI I I Qc 6 677#Je}teQZ6H&I JK&&""TZ***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
           d S )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_namesl   s    <#u677  T:&&&C:tUmdC[-I'JKLL  T5666C:Ry12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
           d S )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7f%%T:&&&C:tUmdC[-I'JKLLf%%T1222C:Ry122f%%T:&&&"f%%T2rC   c           	      V   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            d S )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   sX    <#u677!&))T"--... C:tUm]-K'LMNN!&))T"SGC5IIJJJ C:4+#'5#,)E"F"H IJ K 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                             d S )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   s
   H F F FB B B #Je}m.L(MN	P P P qUFF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                    dt           fg}t          j        g dg d                              |          }t	          |dd          }g d}t          t          |d                   |           t          |d	         ||d                             t	          |d
d          }g d}t          t          |d                   |           t          |d	         ||d                             d S )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    *H***///1 1 115f 	
qTEEE,,VDH%%w///T!WaRk***qUFF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            d S )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    Xj---HQb!!!]2&&(<(<===]1%%.333]=#4#4DAAA2FFF Xry"o&&b!!&")344444rC   c           	         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                              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          }|                    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          |	|           d S )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                 .    t          j        | |f          S N)r6   r(   )r   shapes     rA   subarrayzBTestRecFunctions.test_structured_to_unstructured.<locals>.subarray;  s    8RK(((rC   c                  X    t          j        d t          |           D                       S )Nc                 B    g | ]\  }}d                      |          |fS )zx{})format).0ir   s      rA   
<listcomp>zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>?  s+    OOOuq"ell1oor2OOOrC   )r6   r(   	enumerate)dtss    rA   
structuredzDTestRecFunctions.test_structured_to_unstructured.<locals>.structured>  s'    8OO	#OOOPPPrC   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>.inspectA  sG    (2r""C,S>>>C0b99G9ci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   sK	   HQKKKLLL(++S"(5555666HEEEBBBD D Dg0C:??bIIIS"(#;#;#;<<===g0C5::DDDS"(#;#;#;<<===IbMM!!%(((AG44x1i24i24i#s4i#s46 ( <">?-/	0 0 0 	S$HEEEBBBD D D'33X>>>??	A 	A 	A'C:??X66677	9 	9 	9 HEEEBBBD D D'**(QW55 Q''((( a(())) 31c3Z=AA]aVaVb!Wr2h$GHHH 22333 Hq1q'a!HAh#781b'RHr2h#78:4 4 45 5 5 (**(QW55 Q''((( a(())) $$B$+E22V8883335 	6 	6 	6 +++,2<@@]%:%:%:%?%?%?%A 	B 	B 	B Hq1q'QFQF#3R81b'RHr2h#7<>G G GH H H (*<*<*<(=>> Q''(((R///4446 	7 	7 	7 3*sCj1228c5\C<#uFGGhr8$$(C888S"(7#666777	) 	) 	)	Q 	Q 	Q	7 	7 	7 	7 ZBHbh!?!?CCDDWWR[[42"6777Z"(A!6!6::;;WWR[[42"6777Z!!WWR[[42"6777Z((88BHa+@+@!"D"DEEWWR[[42"6777Z\\j"<bhq"ooNNN 	)+E+-8Ar??"(	L 	L 	L 	L)+E+-8E+J+J+J	L 	L 	L (FF+K3MNNN0tDDD LL%%'666(666 B''(((RBK'(((S		R[()))R%%%S+&&& Ih)#M#M+ + + !!!'666(666 B''(((RBI%&&&S		RY&'''R%%%S+&&&&&rC   c                     t          j        d          }dt          fdt          fg}t          j        |          }t	          ||          }t	          ||          }t          ||           d S )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_structuredy  sl    HW<#u6Xo..
+A_EE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           d S )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   GADDDEEEk*^Au--rwq%/@/@AAAHeU^5111aE::::Q''!2!'BBBCCCa###Q''!2!'BBBCCC GAs[+$>?@AAA}%&^Au--rwq%/@/@AAAHgw'u555aE::::Q(H!5QWEEEFFFa###Q(H!5QWEEEFFF x{{BHQKK1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      s        ! ! !N N NB$ $ $@	$ 	$ 	$  $  $  6+ + +B+ + +
5 
5 
5P' P' P'd% % %    rC   r   c                       e Zd Zd Zd ZdS )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          ||           d S )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  s    Hh)3*sEl1KLLLHT)))$Q**(88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          ||           d S )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    Hh)0@ #Je57 7 7HT)))$Q**(888 8 8 8#&*sEl!;= = = 	T7#####rC   N)r   r   r   r   r   rN   rC   rA   r   r     s2        $ $ $	$ 	$ 	$ 	$ 	$rC   r   c                   J    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S )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| _        d S )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    HaXH\\\""H	"<#u*FH H HH 12:tUmdC[4*%MNOQ Q 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          ||           d S )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    y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          ||           d S )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  s    IaLAu---T1At,,,(K5#&*tUmdC[!IK K KT7#####rC   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                   d S )
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     yAq!QFE222(777#'+c{!;= = =T7###QFD111(777 8 8 8#'+c{!;= = = 	T7###TY-----rC   c                 T   | 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          ||           d S )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    yAq!QFD111(L,7#'+|c5\!JL L LT7###QFE222(NN;#'+#',e)E"F"HI I 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          ||           d S )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	   yAq!QFD111(NN;#'+#&*tUmdC["JK K K 	T7###QFE222s!%c
),e}tSkDRT:.V(W(Y !Z[ (35KL!-/ / /T7#####rC   c                 z   | 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                               d S )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    yAq!Xiiiiii000QGT222(444 8 8 8#'+c{!;= = = 	T7###QGTdCCCT7###
4//00000rC   c                 $   t          t          j        ddg                              dt          fg          t          j        g d          f          }t          j        g dg ddt          fdt          fg          }t          ||           d S )	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  s    RXq!f--22S#J<@@Xooo668 : :(::: 8 8 8#&*tUm!<> > > 	T7#####rC   c                     | j         d         }t          |t          j        g d                              dt
          fg          f           t          j        g dddt          fdt
          fg           d S )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!  s    IbM 	a,,,//44sCj\BBCDDD
???$sElS#J?	A 	A 	A 	A 	A 	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          ||           d S )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_singlerecord0  s    yAq!QqT1Q41.>>>(-.#'+#'+#',e)E"F"HI I I 	T7#####rC   N)r   r   r   rB   r  r  r  r  r  r  r  r#  r'  rN   rC   rA   r   r     s        ! ! !  	$ 	$ 	$. . . $ $ $$ $ $"1 1 1$ $ $A A A$ $ $ $ $rC   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )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| _        d S r   r5   r;   s        rA   rB   zTestAppendFields.setup_method=      HaXH\\\""H	"<#u*FH H HHm]3 #Je}tSk.J(KLN N N1aL			rC   c                     | j         \  }}}}t          |dg d          }t          j        g dg ddt          fdt          fg          }t          ||           d S )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_singleF  sy    yAq!Q,,,777(777 8 8 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          ||           d S )NrY   r   d      r-  ))r   r   r2  )r   r   r3  )rt   r   rt   )r   r   r   r4  )r   r   r   r   r!   r$   ro   r.  r/  s        rA   test_append_doublez#TestAppendFields.test_append_doubleO  s    yAq!Q
,,,c
1KLLL(EEE A A A#'+SzC:!FI I 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          ||           d S )
Nrt   rk   r   r-  )r!  r"  )rt         r   )r4  r4  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_flexX  sz    IbMQ,,,777(HHH A A A".esCj!IL L 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          ||           d S )Nr   rk   r   r-  ))r   r*   r   )r-   r.   r   )rt   )rt   r7  r   )r   rm   r   r;  )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_nesteda  s    IaLQ,,,777( 1 1 1!N !N !N#&*#&$s(D"E#&*".0 0 0 	T7#####rC   N)r   r   r   rB   r0  r5  r9  r<  rN   rC   rA   r)  r)  :  s_        ! ! !$ $ $$ $ $$ $ $$ $ $ $ $rC   r)  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )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| _        d S r   r5   r;   s        rA   rB   zTestStackArrays.setup_methodr  r+  rC   c                     | j         \  }}}}t          |f          }t          ||           t          ||u            t          |          }t          ||           t          ||u            d S r   )r:   r   r   r   )r<   r  r=   rI   s       rA   r  zTestStackArrays.test_solo{  su    yAq!QD!!T1	AT1	rC   c                 t   | 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	          ||           d S )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    yAq!QFE222(<<<((T7###QFE222(---..T7###QFE222(---..T7#####rC   c                 V   | 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          ||           d S )N))r   rt   rt   )r   rt   rt   )rt   r!   r   )rt   r$   r   )r   r   r   rD  r  r  r   r&   r$   ro   )r!   r   rt   r$   r   rt   rt   rt   r   rt   rt   r   )r   r   r   rI  r8  r8  r&  )rE  rF  rE  rF  rG  rH  )rI  rI  rI  rI  r8  r8  )r:   r   rw   r7   r9   r8   r   rp   r  s         rA   test_unnamed_and_named_fieldsz-TestStackArrays.test_unnamed_and_named_fields  s   yAq!QF##( 8 8 8!7 !7 !7#'+|c5\!J	L L L
 	T7###TY---QF##( 8 8 8!7 !7 !7".etSk!J	L L L
 	T7###TY---Q1I&&( 8 8 8!7 !7 !7 #/etSk!JL L 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                   d S )Nr1   r         Y@r2   r         i@r   rS        r@r&   r$   rk   r'   )rE  rF  rM  rO  rQ  rI  rI  r4  r4  r4  r(   rp   f3))r!   r   rt   rt   )r$   r   rt   rt   )r1   r   rN  rt   )r2   r   rP  rt   )r   rS   rR  rt   )rt   rt   rt   r   )rt   rt   rt   r   )r   r   r   r   rV  r   r   r   r   rW  rW  r   r   r   r   rX  )	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_   yAq!XLLL)C<#uFH H HQG$$( U U U #/esEl!K!B !B !B	C C C 	T7###TY---QAJ''esElT3KH( > > > "(!= != !=> > > 	T7###TY-----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                   d S )NrL  r&   r$   rk   r'   z???g     8    g    i)r!   r$   rk   D)defaults))r!   r   r\  )r$   r   r\  rM  rO  rQ  rS  rT  )r:   r6   r7   r8   r   rw   r   rp   )r<   r  r?   rY  r^  rI   rP   s          rA   test_defaultszTestStackArrays.test_defaults  s    yAq!XLLL)C<#uFH H HUgFFQGh777( U U U #/esEl!K!B !B !B	C C C 	T7###TY---TY-----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            d S # 1 swxY w Y   d S )Nr!   r$   rk   r  r   r   r   ro   r-   r/   r|   r'   r4  T)autoconvertF)
r9   boolr8   rw   r7   r   r   rp   r   	TypeError)r<   adtyper1   bdtyper2   rP   rI   s          rA   test_autoconversionz#TestStackArrays.test_autoconversion  sL   *sDkC<8Hi[	{&AAA*sElS%L9Hi[///(Iy1I8N!') ) )QF555T7###TY---9%% 	4 	4!QU3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   C22C69C6c                 z   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                   d S )
N)r1   r!   )r2   r$   )r   rk   r  ra  ro   rb  r'   r4  )r9   rd  r8   rw   r7   r   r   rp   )r<   rf  r1   rg  r2   rI   rP   s          rA   test_checktitlesz TestStackArrays.test_checktitles  s    s#j$%7*e9LMHi[	{&AAAs#j$%7*e9LMHi[///QF##(Iy1I8N!') ) )T7###TY-----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                   d S )Nr%  )r$   r   r&   r$   rL   r'   r1   r   rN  r2   r   rP  r   rS   rR  rk      Ar"   r      Br%      a   b   cFT)r:   rp   r(   )r6   r7   r8   r   rw   r(   r   rp   )r<   r?   rY  r   expecteds        rA   test_subdtypezTestStackArrays.test_subdtype  s|   Hh
eT 235 5 5 X3%seT 2S3%4F
eT 2S%LAC C C Ar7##8ua ua vu%vu%vu%' $'$'''' (
 
 
  	SY///S(###SXx}-----rC   N)r   r   r   rB   r  rB  rJ  rZ  r_  rh  rj  rr  rN   rC   rA   r>  r>  p  s        ! ! !	 	 	$ $ $ $ $ $@. . .8. . ."4 4 4
. 
. 
.. . . . .rC   r>  c                   V    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S )
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	          | _        d S )Nr   2   <   r2  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    $s29R==")B2C2C#%9S##6#6 8  8 9 9"%sc3Z#s DF F F $s29Q#3#3RYr25F5F#%9S##6#6 8  8 9 9"%sc3Z#s DF F 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          ||           d S )
Nr1   inner)jointype))r/   7   ry  i   r2  )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$  s    vtv1sAq7333( 3 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           d S )Nr_   ))r/   r  r  r2  )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_join0  sv    vtv1 	
Aq!!!
 % % % sc3Zsc3Z1	2 	2 	2 	2 	2 	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	          ||                    t          j                             d S )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_subdtypeD  s    hv$cl^- - -hBHWWW--./$cl,BCE E EeS#&&S#((2>223333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          ||           d S )
Nr_   outer)r   rv  r2  rt   r   3   r  rt   r   4   r  rt   rv   5   r  rt   r-   6   r  rt   r/   r  r  rt   )r/   ry  rt   r2  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  )rW  rW  rW  rW  rW  rW  r   r   r   r   rW  r  rW  r  rW  r  rW  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_joinM  s    vtv1z1a11( 	B 	B 	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          ||           d S )
Nr_   	leftouter)
r  r  r  r  r  r  r  r  r  r  )
rW  rW  rW  rW  rW  rW  rW  rW  rW  rW  r1   r2   r   r   ro   r  r   s        rA   test_leftouter_joinzTestJoinBy.test_leftouter_joini  s    vtv1z1a55( @ @ @
!= != !=
 $'*sCj3*sCj!Q
S 
S 
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
           d S )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_orderz  su    HQEEEFFFGADDDEEES#J1wFFFQW]$:$:$:;;;;;rC   c                     t          j        dg d          }t          j        dg d          }t          t          t
          g d||           d S )Nrv   r  r'   r  )r1   r2   r2   )r6   r   r   r   r   r   r  s      rA   test_duplicate_keyszTestJoinBy.test_duplicate_keys  sX    HQEEEFFFGADDDEEEj'???AqAAAAArC   c                 6   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        |           d S )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 #B #B C C Ho}5WEEEHo}5WEEEeQ""SY/////rC   c                 6   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        |           d S )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 #C #C D D Ho}5WEEEHo}5WEEEeQ""SY/////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          ||           d S )
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  rq  r   s           rA   test_subarray_keyzTestJoinBy.test_subarray_key  s   (UCO\:;;Hyyy"%(999c*:;7KKK(UCO\:;;Hyyy!nyyy#&67wGGGE3?L,"OPP8iii23>JJJeQ""SY///S(#####rC   c                 X   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        |           d S )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    XgT***BHq!!!Hff%r**Hff%r**c1a    #
 #
 #
   	SY/////rC   N)r   r   r   rB   r  r  r  r  r  r  r  r  r  r  r  rN   rC   rA   rt  rt    s        F F F
$ 
$ 
$2 2 2(4 4 4$ $ $8$ $ $"< < <B B B

0 
0 
00 0 0$ $ $0 0 0 0 0rC   rt  c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )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	          | _        d S )Nr   rv  rw  r2  rx  r1   r2   r   r'   ry  rz  r   r{  )clss    rA   rB   zTestJoinBy2.setup_method  s    c")B--2r1B1B"$)C"5"57 7 8 8!$c
S#Jc
CE E E c")B--2r1B1B"$)C"5"57 7 8 8!$c
S#Jc
CE E 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          ||           d S )Nr1   rG   2r  	r1postfix	r2postfixr  
)r   rv  ry  r2  r2  )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  s    vtv1AsWF F F( J J J
 $'*sCj4+#&*sCj":; ; ; 	T7#####rC   c           	      Z    t          t          t          d| j        | j        dd           d S )Nr1   rG   )r  r  )r   r   r   r1   r2   r~  s    rA   test_no_postfixzTestJoinBy2.test_no_postfix  s6    j'3 "b	2 	2 	2 	2 	2 	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          ||           d S )Nr1   1rG   r  r  r  r  r2   r   r   r'   r  r   s        rA   test_no_r2postfixzTestJoinBy2.test_no_r2postfix  s    vtv1AWF F F( J J 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          ||           d S )Nr   r   r/   r   rv  rw  r   r  r1   r2   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   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   r|  r}  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   HT#bgr2h22BIbillA4N4N iB//2r1B1BD D E E #Jc
S#Jc
KM M M HT#bgr2h22BIbillA4N4N iB//1b1A1AC C D D #Jc
S#Jc
KM M M ( L L L
 $'*sCj4+#'+c{T3K"IJ J J #J1sWN N NTZ///T7#####rC   N)	r   r   r   classmethodrB   r  r  r  r  rN   rC   rA   r  r    sl        E E [E$ $ $2 2 2$ $ $$ $ $ $ $rC   r  c                       e Zd ZdZd Zd ZdS )TestAppendFieldsObjz;
    Test append_fields with arrays containing objects
    c                 R    ddl m} t           |ddd                    | _        d S )Nr   )datei  r   )obj)datetimer  dictr:   )r<   r  s     rA   rB   z TestAppendFieldsObj.setup_method  s8    !!!!!!TT$1--...			rC   c                 d   | 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          ||           dS )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    iHsBi#r+!6]S%L9; ; ;Hb"XS)))Q!U;;;(S#rNS#rN;#&-#uSz!JL L LT7#####rC   N)r   r   r   __doc__rB   r  rN   rC   rA   r	  r	     s<         
/ / /	$ 	$ 	$ 	$ 	$rC   r	  ).pytest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>  rt  r  r	  rN   rC   rA   <module>r!     s              + + + + + + + + + + + + 0 0 0 0 0 0 0 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
 #2F)	$3F*	F*	G G G G G G G GT$ $ $ $ $ $ $ $.B$ B$ B$ B$ B$ B$ B$ B$J3$ 3$ 3$ 3$ 3$ 3$ 3$ 3$lh. h. h. h. h. h. h. h.Va0 a0 a0 a0 a0 a0 a0 a0H?$ ?$ ?$ ?$ ?$ ?$ ?$ ?$B$ $ $ $ $ $ $ $ $ $rC   