
    8`iū                        d dl Z d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ e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)append_fieldsapply_along_fieldsassign_fields_by_namedrop_fieldsfind_duplicatesget_fieldstructurejoin_bymerge_arraysrecursive_fill_fieldsrename_fieldsrepack_fieldsrequire_fieldsstack_arraysstructured_to_unstructuredunstructured_to_structured)MaskedRecords)assert_equal)assert_assert_raisesc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
          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          }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 )N      
         A      ?B       @r    z|S3r#   dtyper   r         @            @abbabbTflatten F)nparrayfloatint	zip_descrr   r'   )selfxyzwtests         ]/root/collector_daemon/venv/lib/python3.11/site-packages/numpy/lib/tests/test_recfunctions.pytest_zip_descrzTestRecFunctions.test_zip_descr#   s   HaXH\\\""Hi+(3,79 9 9Hm]3 #Je}tSk.J(KLN N N !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    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+   r0   r1   r2   r3   r&   )r)   )r-   r   r,   )r   )r*   )r,   )r/    )r7   r8   r:   r9   r   r   r<   r0   rA   controls       rB   test_drop_fieldsz!TestRecFunctions.test_drop_fieldsI   s   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#####rD   c           	      `   t          j        ddddgffddddgffgd	t          fd
dt          fdt          dffgfg          }t	          |ddd          }dt          fd
dt          fdt          dffgfg}|                    |          }t          |j        |           t          ||           d S )Nr   r   r*         >@r,   r.   r/   g      N@r0   r1   r2   r3   r&   r    BB)r0   r3   )r7   r8   r:   r9   r   viewr   r'   )r<   r0   rA   newdtyperJ   s        rB   test_rename_fieldsz#TestRecFunctions.test_rename_fieldsi   s    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#####rD   c                    t          j        ddt          fg          }t          |          }t	          |d           t          j        dt
          fddt          fdt
          fgfg          }t          |          }t	          |d           t          j        dt
          fdg fg          }t          |          }t	          |d	           t          j        g           }t          |          }t	          |d
           d S )Nr%   r#   r    r#   r0   r1   r2   r3   )r0   )r1   )r2   r3   )r0   )r1   rH   rH   )r7   r'   r9   	get_namesr   r:   r<   ndtyperA   s      rB   test_get_nameszTestRecFunctions.test_get_namest   s    <#u677  T:&&&C:tUmdC[-I'JKLL  T5666C:Ry122  T+,,,"  T2rD   c                    t          j        ddt          fg          }t          |          }t	          |d           t          j        dt
          fddt          fdt
          fgfg          }t          |          }t	          |d           t          j        dt
          fdg fg          }t          |          }t	          |d	           t          j        g           }t          |          }t	          |d
           d S )Nr%   r#   rS   r0   r1   r2   r3   )r0   r1   r2   r3   r0   r1   rH   )r7   r'   r9   get_names_flatr   r:   rU   s      rB   test_get_names_flatz$TestRecFunctions.test_get_names_flat   s    <#u67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rD   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#   rS   r    BArN   z|S1)r    r#   r]   rN   rN   BBABBB)r    r#   r]   rN   r_   r`   )r7   r'   r9   r   r   r:   )r<   rV   rA   rJ   s       rB   test_get_fieldstructurez(TestRecFunctions.test_get_fieldstructure   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rD   c                    t          j        g dg ddt          fddt          fdgfg          }t	          |dd	
          }ddg}t          t          |d                   |           t          |d         ||d                             t	          |dd	          }g d}t          t          |d                   |           t          |d         ||d                             t	          |dd	          }g d}t          t          |d                   |           t          |d         ||d                             t	          |dd	          }g d}t          t          |d                   |           t          |d         ||d                             t	          |dd	          }g d}t          t          |d                   |           t          |d         ||d                             d S )N)r   r$   r#   )r   rd   rc   )r   )r!   r#   rc   )r   )r$   C)r   r   r   rf   rf   rf   )r   rg   )r   r   r   r    r#   r]   r^   maskr'   FT
ignoremaskreturn_indexr   r   )keyrm   )r   r   r      r.   )r   r   r   r,   rN   )r   r   r   rp   r,   )mar8   r:   r9   r   r   sortedrI   s       rB   test_find_duplicatesz%TestRecFunctions.test_find_duplicates   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*****rD   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 )Nr0   )r   r   r   r   r   rp   rp   )r   r   r   r   r   r   r   rj   Trk   )r   r   rp   r,   rn   r   F)r   r   r   rp   r,      )r:   rq   r8   rO   r   r   rr   )r<   rV   r0   rA   rJ   s        rB   test_find_duplicates_ignoremaskz0TestRecFunctions.test_find_duplicates_ignoremask   s    *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*****rD   c                    t          j        dd          }t          j        d|          }t          t	          |          t          j        d                     t          t	          |          j        d           t          t	          t	          |          d          |           t          j        t           j        |f          }t          t	          |          j        t           j        u            d S )Nzu1,f4,i8Talignr   r&      )	r7   r'   zerosr   r   itemsizerecordr   type)r<   dtr0   s      rB   test_repack_fieldsz#TestRecFunctions.test_repack_fields   s    Xj---HQb!!!]2&&(<(<===]1%%.333]=#4#4DAAA2FFF Xry"o&&b!!&")344444rD   z"memmap is thread-unsafe (gh-29126))reasonc           	         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,   )r0   i4)r1   zf4,u2)cf4r   r&   )r,   r.   f8))r   r   r.   )r,   r.      )r         )r   r      )r=   r   )r>   r   )r?   r   r=   r?   rn   )axis)r*   g      @      "@      &@)r!         @      @      $@r   r   )r!   r   r*   r   r.   )r/   r          @r   r   )r   r   g      *@g      ,@   )g      0@   g      2@g      3@r   r1   )f0r   )f1u2)r   r   r   )gUUUUUU@gUUUUUU@gUUUUUU!@r   )r   )r>   r   )r?   r   r   r   r   r   r   rp   rv   r   	   r{      )x0r   x1)r   r   x2)r   r   r   )r   r   r   r   r   r{   r   )r   r   rp   r,   r.   rv   r   )r   r   r   )r,   r.   rv   r   r   rp   r   )r   r   r{   r   r   r   r       @   )r   r   r   )ignoredu1)r   r   r   r>   r0   r   )r   rv   c                 .    t          j        | |f          S N)r7   r'   )r   shapes     rB   subarrayzBTestRecFunctions.test_structured_to_unstructured.<locals>.subarrayC  s    8RK(((rD   c                  X    t          j        d t          |           D                       S )Nc                 "    g | ]\  }}d | |fS )r=   rH   ).0ir   s      rB   
<listcomp>zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>G  s&    GGGuq"g!ggr]GGGrD   )r7   r'   	enumerate)dtss    rB   
structuredzDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredF  s'    8GG	#GGGHHHrD   c                     t          j        d|           }t          ||          }t          ||           }|j        |j        |j        fS )NrH   r&   )r7   r|   r   r   r   r'   )r   r'   arrretbackarrs        rB   inspectzATestRecFunctions.test_structured_to_unstructured.<locals>.inspectI  sG    (2r""C,S>>>C0b99G9ci66rD   )rv   rG   rF   )r.   )rp   r   r   r   rp   r,   )r1   r   T)copyFmemmapzw+)moder'   r   r   )r7   r|   r   r   r8   meanarangereshaper   r'   r   r   shares_memoryr:   int32r   
ValueErrorNotImplementedErrorrO   recarrayr   r   r   )r<   tmp_pathr0   outr1   r   wantdddddddd_attrib_revd_revdd_revd_attrib_revpointtriangler   resr   r   r   r   d_plaindd_expecteds                           rB   test_structured_to_unstructuredz0TestRecFunctions.test_structured_to_unstructured   sK	   HQKKKLLL(++S"(6666777HEEEBBBD D Dg0C:??bIIIS"(#7#7#788999g0C5::DDDS"(#7#7#788999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CCCDD	F 	F 	F'C:??X33344	6 	6 	6 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	) 	) 	)	I 	I 	I	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+-8F"(+K+K+K	M 	M 	M (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+&&&&&rD   c                     t          j        d          }dt          fdt          fg}t          j        |          }t	          ||          }t	          ||          }t          ||           d S )N)r   r   r=   r>   r&   )r7   r|   r9   r'   r   r   )r<   r0   test_dtype_args
test_dtypefield1field2s         rB   test_unstructured_to_structuredz0TestRecFunctions.test_unstructured_to_structured  sl    HW<#u6Xo..
+A_EEE+AZ@@@VV$$$$$rD   c                     t          j        dg d          }ddg}t          t          ||          t          j        d|                     t          j        ddg|          }t          ||d	           t          |t          j        d
dg|j                             t          ||           t          |t          j        ddg|j                             t          j        ddddgfg          }ddgfg}t          t          ||          t          j        d|                     t          j        ddg|          }t          ||d	           t          |t          j        ddg|j                             t          ||           t          |t          j        ddg|j                             t          j        d          t          j        d          }}t          ||           t          |d         d           d S )Nr   )r   r1   r   r   r   r&   r1   r   r   r   r   F)zero_unassigned)r   r   r   )r   rp   r,   )r   r   r   )r   rp   r,   r0   r   )r   )rp   )r   )r   rp   ))r   r   ))r   rp   rp   r   rH   )r7   onesr   r   r8   r   r'   )r<   r0   newdtr1   s       rB   test_field_assignment_by_namez.TestRecFunctions.test_field_assignment_by_name  s   GADDDEEEk*^Au--rwq%/@/@AAAHff%U333aE::::Q)Y!7qwGGGHHHa###Q)Y!7qwGGGHHH GAs[+$>?@AAA}%&^Au--rwq%/@/@AAAHgw'u555aE::::Q)Y!7qwGGGHHHa###Q)Y!7qwGGGHHH x{{BHQKK1a###QrUArD   N)__name__
__module____qualname__rC   rK   rQ   rW   r[   ra   rs   rw   r   pytestmarkthread_unsafer   r   r   rH   rD   rB   r   r   !   s        $N $N $NL$ $ $@	$ 	$ 	$  $  $  6+ + +B+ + +
5 
5 
5 [&JKKO' O' LKO'b% % %    rD   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           )r7   r8   r:   r9   r|   r'   r   r   r<   r0   r1   rA   rJ   s        rB   test_simple_flexiblez,TestRecursiveFillFields.test_simple_flexible  s    Hh)3*sEl1KLLLHT)))$Q**(888#&*sEl!;= = =T7#####rD   c                 (   t          j        ddgddgdt          fdt          fg          }t          j        d|j        	          }t          ||          }t          j        g d
g ddt          fdt          fg          }t          ||           d S )Nr   r   r   r   rh   r    r#   ri   r   r&   r   )r   rh   rg   )rq   r8   r:   r9   r|   r'   r   r   r   s        rB   test_masked_flexiblez,TestRecursiveFillFields.test_masked_flexible  s    Hh)0@ #Je57 7 7HT)))$Q**(888 8 8 8#&*sEl!;= = = 	T7#####rD   N)r   r   r   r   r   rH   rD   rB   r   r     s2        $ $ $	$ 	$ 	$ 	$ 	$rD   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S )Nr   r   r   r   r"   r%   r#   r&   r   )r   r*   rH   r,   )r.   r/   rH   r0   r1   r2   r3   bcr7   r8   r9   r:   r<   r=   r>   r?   r@   s        rB   _create_arrayszTestMergeArrays._create_arrays  s    HaXH\\\""H	"<#u*FH H HH 12:tUmdC[4*%MNOQ Q Q !QzrD   c                 z   |                                  \  }}}}t          |          }t          j        ddgdt          fg          }t          ||           t          |f          }t          ||           t          |d          }t          ||           t          |d          }t          ||           d S )NrF   r   r   r&   Fr4   T)r  r
   r7   r8   r:   r   r<   _r=   r?   rA   rJ   s         rB   	test_solozTestMergeArrays.test_solo  s    ((**
1aA(D$<s}===T7###QD!!T7###Au---T1At,,,T1rD   c                    |                                  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   Fr4   T)r   r   r*   )r,   r.   r/   r0   r2   r3   r&   )r  r
   r   r7   r8   r:   r9   r<   r@   rA   rJ   s       rB   test_solo_w_flattenz#TestMergeArrays.test_solo_w_flatten  s    !!!$Au---T1At,,,(K5#&*tUmdC[!IK K KT7#####rD   c                    |                                  \  }}}}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   )rn   r   r   r   r&   Trg   rg   rh   ri   )r  r
   r7   r8   r:   r   rq   rj   r<   r  r=   r>   rA   rJ   s         rB   test_standardzTestMergeArrays.test_standard  s     ((**
1aQFE222(777#'+c{!;= = =T7###QFD111(777 8 8 8#'+c{!;= = = 	T7###TY-----rD   c                 n   |                                  \  }}}}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 )NTr4   )r   r    r!   )r   r#   r$   r   r%   r#   r&   F)r   r   )r   r"   r   r  r
   r7   r8   r:   r9   r   r  s         rB   test_flattenzTestMergeArrays.test_flatten  s    ((**
1aQFD111(L,7#'+|c5\!JL L LT7###QFE222(NN;#'+#',e)E"F"HI I I 	T7#####rD   c                    |                                  \  }}}}t          ||fd          }t          j        ddgdt          fdt          fdt
          fdt          fg	          }t          ||           t          ||fd
          }dt          fddt
          fdt          fdg fgfg}dt          fd|fg}t          j        ddg|	          }t          ||           d S )NTr4   )r   r   r   r*   )r   r,   r.   r/   r   r0   r2   r3   r&   Fr1   r   r   )r!   r   )r   r   r  )r<   r@   r=   r  rA   rJ   f1_descrcontroldtypes           rB   test_flatten_wflexiblez&TestMergeArrays.test_flatten_wflexible  s
   ((**
1aQFD111(NN;#'+#&*tUmdC["JK K K 	T7###QFE222#Je}tSkD":&N OPsdH%56(35KL!-/ / /T7#####rD   c                    |                                  d         }t          j        g dg d          }t          ||fd          }t          j        g dg dd	t          fd
t          fg          }t          ||           t          ||fdd          }t          ||           t          t          |t                               d S )Nr   r   r   rp   r   r   r   ru   Tr
  )r   r   r   )rn   rp   )r   rg   rh   r   r   ri   )r  
asrecarray)	r  rq   r8   r
   r:   r   r   
isinstancer   )r<   r=   mxrA   rJ   s        rB   test_wmasked_arraysz#TestMergeArrays.test_wmasked_arrays  s    !!!$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0rD   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   r0   )r   r   rM   )r   r   )rn   rM   r  r   ri   )r
   r7   r8   rO   r:   rq   r9   r   )r<   rA   rJ   s      rB   test_w_singlefieldz"TestMergeArrays.test_w_singlefield  s    RXq!f--22S#J<@@Xooo668 : :(::: 8 8 8#&*tUm!<> > > 	T7#####rD   c                    |                                  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 )Nrn   r   re   )r    r!   r   r#   r$   r   )z-1rn   r   r%   r#   r&   )r  r
   r7   r8   rO   r:   r9   )r<   r?   s     rB   test_w_shorter_flexz#TestMergeArrays.test_w_shorter_flex(  s    !!"% 	a,,,//44sCj\BBCDDD
???$sElS#J?	A 	A 	A 	A 	A 	ArD   c           	      
   |                                  \  }}}}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?   rA   rJ   s          rB   test_singlerecordz!TestMergeArrays.test_singlerecord6  s    ((**
1aQqT1Q41.>>>(-.#'+#'+#',e)E"F"HI I I 	T7#####rD   N)r   r   r   r  r  r  r  r  r  r  r   r$  r(  rH   rD   rB   r   r     s            	$ 	$ 	$. . . $ $ $$ $ $ 1 1 1$ $ $A A A$ $ $ $ $rD   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S Nr   r   r   r   r"   r%   r#   r&   r(   r+   r0   r1   r2   r3   r   r   s        rB   r  zTestAppendFields._create_arraysC      HaXH\\\""H	"<#u*FH H HHm]3 #Je}tSk.J(KLN N N!QzrD   c                     |                                  d         }t          |dg d          }t          j        g dg ddt          fdt          fg          }t          ||           d S )	Nr   r    r   datar  r  r   ri   r  r   rq   r8   r:   r   r<   r=   rA   rJ   s       rB   test_append_singlez#TestAppendFields.test_append_singleL  s    !!!$Q,,,777(777 8 8 8#'+Sz!:= = = 	T7#####rD   c                     |                                  d         }t          |dg dddgg          }t          j        g dg dd	t          fd
t          fdt          fg          }t          ||           d S )Nr   rS   r   d      r/  ))r   r   r5  )r   r   r6  )rn   r   rn   )r   r   r   r7  )r   r   r   r   r    r#   ri   r1  r2  s       rB   test_append_doublez#TestAppendFields.test_append_doubleU  s    !!!$Q
,,,c
1KLLL(EEE A A A#'+SzC:!FI I I 	T7#####rD   c                     |                                  d         }t          |dg d          }t          j        g dg dddt          fdt
          fg	          }t          ||           d S )
Nrn   re   r   r/  )r"  r#  )rn         r   )r7  r7  r   r   r   r%   r#   ri   )r  r   rq   r8   r9   r:   r   )r<   r?   rA   rJ   s       rB   test_append_on_flexz$TestAppendFields.test_append_on_flex^  s    !!"%Q,,,777(HHH A A A".esCj!IL L L 	T7#####rD   c           	          |                                  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   re   r   r/  ))r   r)   r   )r,   r-   r   )rn   )rn   r:  r   )r   rg   r   r>  )r   r  r   r0   r1   r2   r3   ri   )r  r   rq   r8   r:   r9   r   r  s       rB   test_append_on_nestedz&TestAppendFields.test_append_on_nestedg  s    !!!$Q,,,777( 1 1 1!N !N !N#&*#&$s(D"E#&*".0 0 0 	T7#####rD   N)r   r   r   r  r3  r8  r<  r?  rH   rD   rB   r*  r*  @  s_          $ $ $$ $ $$ $ $$ $ $ $ $rD   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S r,  r   r   s        rB   r  zTestStackArrays._create_arraysx  r-  rD   c                     |                                  d         }t          |f          }t          ||           t          ||u            t          |          }t          ||           t          ||u            d S )Nr   )r  r   r   r   )r<   r=   rA   s      rB   r  zTestStackArrays.test_solo  s|    !!!$QD!!T1	AT1	rD   c                    |                                  \  }}}}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   r7   r8   r   r  s         rB   test_unnamed_fieldsz#TestStackArrays.test_unnamed_fields  s    ((**
1aQFE222(<<<((T7###QFE222(---..T7###QFE222(---..T7#####rD   c                 p   |                                  \  }}}}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   rn   rn   )r   rn   rn   )rn   r    r   )rn   r#   r   )r   r   r   rG  r  r  r   r%   r#   ri   )r    r   rn   r#   r   rn   rn   rn   r   rn   rn   r   )r   r   r   rL  r;  r;  r'  )rH  rI  rH  rI  rJ  rK  )rL  rL  rL  rL  r;  r;  )r  r   rq   r8   r:   r9   r   rj   r  s         rB   test_unnamed_and_named_fieldsz-TestStackArrays.test_unnamed_and_named_fields  s   ((**
1aQF##( 8 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#####rD   c                 <   |                                  \  }}}}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r0   r         Y@r1   r         i@r   rM        r@r%   r#   re   r&   )rH  rI  rP  rR  rT  rL  rL  r7  r7  r7  r'   rj   f3))r    r   rn   rn   )r#   r   rn   rn   )r0   r   rQ  rn   )r1   r   rS  rn   )r   rM   rU  rn   )rn   rn   rn   r   )rn   rn   rn   r   )r   r   r   r   rY  r   r   r   r   rZ  rZ  r   r   r   r   r[  )	r  r7   r8   r9   r   rq   r   rj   r:   )r<   r  r=   r?   zzrA   rJ   rV   s           rB   test_matching_named_fieldsz*TestStackArrays.test_matching_named_fields  si   ((**
1a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-----rD   c                    |                                  d         }t          j        g dddt          fdt          fg          }ddd	d
d}t	          ||f|          }t          j        g dddt          fdt          fgg d          }t          ||           t          |j        |j                   t          |j        |j                   d S )Nrn   rO  r%   r#   re   r&   z???g     8    g    i)r    r#   re   D)defaults))r    r   r_  )r#   r   r_  rP  rR  rT  rV  rW  )	r  r7   r8   r9   r   rq   r   r0  rj   )r<   r?   r\  ra  rA   rJ   s         rB   test_defaultszTestStackArrays.test_defaults  s   !!"%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-----rD   c                    dt           fdt          fdt          fg}t          j        dgdg|          }dt           fdt          fdt          fg}t          j        dg|          }t          j        ddgdd	g|          }t          ||fd
          }t          ||           t          |j        |j                   t          t                    5  t          ||fd           d d d            d S # 1 swxY w Y   d S )Nr    r#   re   r  r   r   r   ri   r,   r.   rv   r&   r7  T)autoconvertF)
r:   boolr9   rq   r8   r   r   rj   r   	TypeError)r<   adtyper0   bdtyper1   rJ   rA   s          rB   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)r0   r    )r1   r#   )r   re   r  rd  ri   re  r&   r7  )r:   rg  r9   rq   r8   r   r   rj   )r<   ri  r0   rj  r1   rA   rJ   s          rB   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-----rD   c           
         t          j        ddgddt          dfg          }t          j        ddgd	fd
dgdfddgdfgddt          dfdt          fg          }t          ||f          }t	          j        ddgdfddgdfddgd	fddgdfddgdfgddgdfddgdfddgdfddgdfddgdfg|j                  }t          |j        |j                   t          ||           t          |j        |j                   d S )Nr&  )r#   r   r%   r#   rF   r&   r0   r   rQ  r1   r   rS  r   rM   rU  re      Ar!   r      Br$      a   b   cFT)r0  rj   r'   )r7   r8   r9   r   rq   r'   r   rj   )r<   r?   r\  r   expecteds        rB   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}-----rD   N)r   r   r   r  r  rE  rM  r]  rb  rk  rm  ru  rH   rD   rB   rA  rA  v  s          	 	 	$ $ $ $ $ $@. . .8. . ."4 4 4
. 
. 
.. . . . .rD   rA  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	          }||fS )Nr   2   <   r5  n   r0   r1   r   r&   r.   r   A   K   r   )r7   r8   listzipr   r:   r<   r0   r1   s      rB   r  zTestJoinBy._create_arrays"  s    HT#bimmRYr2->->#%9S##6#68 8 9 9"%sc3Z#s DF F F HT#bi2..	"b0A0A#%9S##6#68 8 9 9"%sc3Z#s DF F F !trD   c           	          |                                  \  }}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 )
Nr0   inner)jointype))r.   7   r|  i   r5  )rv   8   B   j   e   )r   9   C   k   f   )r   :   D   l   g   )r   ;   E   m   h   b1b2r   r   r&   )r  r	   r7   r8   r:   r   r   s        rB   test_inner_joinzTestJoinBy.test_inner_join+  s    ""$$1sAq7333( 3 3 3 $'*tSkD#;#&*sCj":; ; ;
 	T7#####rD   c                     |                                  \  }}t          d||           t          j        g ddt          fdt          fdt          fdt          fg           d S )NrY   ))r.   r  r  r5  )rv   r  r  r  )r   r  r  r  )r   r  r  r  )r   r  r  r  r0   r1   r   r   r&   )r  r	   r7   r8   r:   r  s      rB   	test_joinzTestJoinBy.test_join6  s~    ""$$1 	
Aq!!!
 % % % sc3Zsc3Z1	2 	2 	2 	2 	2 	2rD   c                 ,   t          j        dgdt          fg          }t          j        dt          j        g d          fgdt          fdg          }t          d||          }t	          ||                    t          j                             d S )NrF   ro   r&   r   r  )valueuint16rp   )r7   r8   r:   r	   r   rO   rq   MaskedArray)r<   foobarr   s       rB   test_join_subdtypezTestJoinBy.test_join_subdtypeG  s    hv$cl^- - -hBHYYY//01$cl,BCE E EeS#&&S#((2>2233333rD   c           	          |                                  \  }}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 )
NrY   outer)r   ry  r5  rn   r   3   r  rn   r   4   r  rn   rp   5   r  rn   r,   6   r  rn   r.   r  r  rn   )r.   r|  rn   r5  rv   r  r  rn   )rv   r  rn   r  r   r  r  rn   )r   r  rn   r  r   r  r  rn   )r   r  rn   r  r   r  r  rn   )r   r  rn   r  )r   F   rn   r  )r   G   rn   r  )r   H   rn   r  )r{   I   rn   r  )r   J   rn   r  )rZ  rZ  rZ  rZ  rZ  rZ  r   r   r   r   rZ  r  rZ  r  rZ  r  rZ  r  r  r  r  r  r  r0   r1   r   r   ri   r  r	   rq   r8   r:   r   r   s        rB   test_outer_joinzTestJoinBy.test_outer_joinP  s    ""$$1z1a11( 	B 	B 	B	!= 	!= 	!= $'*sCj#&*sCj":); ; ;, 	T7#####rD   c           	          |                                  \  }}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 )
NrY   	leftouter)
r  r  r  r  r  r  r  r  r  r  )
rZ  rZ  rZ  rZ  rZ  rZ  rZ  rZ  rZ  rZ  r0   r1   r   r   ri   r  r   s        rB   test_leftouter_joinzTestJoinBy.test_leftouter_joink  s    ""$$1z1a55( @ @ @
!= != !=
 $'*sCj3*sCj!Q
S 
S 
S 	T7#####rD   c                     t          j        dg d          }t          j        dg d          }t          ddg||dd	          }t	          |j        j        g d
           d S )Nrp   r   r   r   r&   r   r   r   r   r1   r  F)r  r  )r1   r   a1a2)r7   r|   r   r	   r   r'   names)r<   r0   r1   js       rB   test_different_field_orderz%TestJoinBy.test_different_field_order{  su    HQEEEFFFGADDDEEES#J1wFFFQW]$:$:$:;;;;;rD   c                     t          j        dg d          }t          j        dg d          }t          t          t
          g d||           d S )Nrp   r  r&   r  )r0   r1   r1   )r7   r|   r   r   r   r	   r  s      rB   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ArD   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)ro   S5r  <f4ro   S10)r  value1r  )value2r  Sarahr   Johnr/   r&   r  r   r  r   ro   r7   r'   r8   r	   r   r<   a_dtypeb_dtypeexpected_dtyper0   r1   r   s          rB   #test_same_name_different_dtypes_keyz.TestJoinBy.test_same_name_different_dtypes_key  s    (M+;<==(N,<=>> #B #B #B C C Ho}5WEEEHo}5WEEEeQ""SY/////rD   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))ro   z|S10r  )r  r  r  r  r&   r  r  ro   r  r  s          rB   test_same_name_different_dtypesz*TestJoinBy.test_same_name_different_dtypes  s    (N,<=>>(N,<=>> #C #C #C D D Ho}5WEEEHo}5WEEEeQ""SY/////rD   c                    t          j        dt          dfdg          }t          j        g dt           j        fg ddfg|          }t          j        dt          dfdg          }t          j        g ddfg d	dfg|          }t          j        dt          dfddg          }t          j        g dt           j        dfg|          }t          d||          }t          |j        |           t          ||           d S )
Nposrp   )fr  )r   r   r   r  r   r&   )gr  )rp   r   r   )r7   r'   r:   r8   pir	   r   )r<   r  r0   r  r1   r  rt  r   s           rB   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(#####rD   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,f4Try   )kvrp   r   )rp   r   r  r   r  ))r  i1)v1r   )v2r   )	r7   r'   r  r   lendescrr8   r	   r   )r<   r   r0   r1   r   r  s         rB   test_padded_dtypezTestJoinBy.test_padded_dtype  s    XgT***BHq!!!Hff%r**Hff%r**c1a    #
 #
 #
   	SY/////rD   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  rH   rD   rB   rw  rw  !  s          	$ 	$ 	$2 2 2"4 4 4$ $ $6$ $ $ < < <B B B

0 
0 
00 0 0$ $ $0 0 0 0 0rD   rw  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   ry  rz  r5  r{  r0   r1   r   r&   r|  r}  r   )r7   r8   r~  r  r   r:   r0   r1   )clss    rB   setup_methodz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rD   c           	          | j         | j        }}t          d||ddd          }t          j        g ddt
          fdt
          fdt
          fd	t
          fd
t
          fg          }t          ||           d S )Nr0   r6   2r  	r1postfix	r2postfixr  
)r   ry  r|  r5  r5  )r   r  r  r  r  )r   r  r  r  r  )rp   r  r  r  r  )r,   r  r  r  r  )r.   r  r  r  r  )rv   r  r  r  r  )r   r  r  r  r  )r   r  r  r  r  )r   r  r  r  r  r1   r  r   r   r&   r0   r1   r	   r7   r8   r:   r   r   s        rB   test_no_r1postfixzTestJoinBy2.test_no_r1postfix  s    vtv1AsWF F F( J J J
 $'*sCj4+#&*sCj":; ; ; 	T7#####rD   c           	      Z    t          t          t          d| j        | j        dd           d S )Nr0   r6   )r  r  )r   r   r	   r0   r1   )r<   s    rB   test_no_postfixzTestJoinBy2.test_no_postfix  s6    j'3 "b	2 	2 	2 	2 	2 	2rD   c           	          | j         | j        }}t          d||ddd          }t          j        g ddt
          fdt
          fdt
          fd	t
          fd
t
          fg          }t          ||           d S )Nr0   1r6   r  r  r  r  r1   r   r   r&   r  r   s        rB   test_no_r2postfixzTestJoinBy2.test_no_r2postfix  s    vtv1AWF F F( J J J
 $'*tSkC:#&*sCj":; ; ; 	T7#####rD   c                    t          j        t          t          t          j        ddgd          t          j        t          j        d          d          t          j        dd          t          j        dd                              dt          fd	t          fd
t          fdt          fg          }t          j        t          t          t          j        ddgd          t          j        t          j        d          d          t          j        dd          t          j        dd                              dt          fd	t          fd
t          fdt          fg          }t          j        g ddt          fd	t          fdt          fdt          fdt          fdt          fg          }t          d	dg||ddd          }t          |j
        |j
                   t          ||           d S )Nr   r   r.   r   ry  rz  r   r  r0   r1   r   r&   r|  r}  r   )
)r   r   ry  r|  r   r   )r   r   r  r  r   r   )r   r   r  r  r   r   )r   r   r  r  r{   rp   )r   r   r  r  r   r,   )r   r   r  r  r   r.   )r   rp   r  r     rv   )r   rp   r  r  r   r   )r   r,   r  r     r   )r   r,   r  r     r   r  r  c1c2r  r  r  r  )r7   r8   r~  r  tilerepeatr   r:   r	   r   r'   )r<   r0   r1   rJ   rA   s        rB   test_two_keys_two_varsz"TestJoinBy2.test_two_keys_two_vars  s   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#####rD   N)	r   r   r   classmethodr  r  r  r  r  rH   rD   rB   r  r    sl        E E [E$ $ $2 2 2$ $ $$ $ $ $ $rD   r  c                       e Zd ZdZd ZdS )TestAppendFieldsObjz;
    Test append_fields with arrays containing objects
    c                 p   ddl m}  |ddd          }t          j        |df|dfgdt          fdt
          fg	          }t          j        d
dgt          	          }t          |d|d          }t          j        |dd
f|ddfgdt          fdt
          fdt          fg	          }t          ||           dS )z7Test append_fields when the base array contains objectsr   )datei  r   r!   r$   r    r#   r&   r   r   re   F)r0  r  N)	datetimer  r7   r8   objectr9   r:   r   r   )r<   r  objr=   r>   rA   rJ   s          rB   test_append_to_objectsz*TestAppendFieldsObj.test_append_to_objects  s    !!!!!!d4AHsBi#r+!6]S%L9; ; ;Hb"XS)))Q!U;;;(S#rNS#rN;#&-#uSz!JL L LT7#####rD   N)r   r   r   __doc__r  rH   rD   rB   r  r    s-         

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