o
    hӫ                     @   s&  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 dZ%G dd	 d	Z&G d
d dZ'G dd dZ(G dd dZ)G dd dZ*G dd dZ+G d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                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestRecFunctionsc                 C   r   t ddg}t g d}t jddgddtfgd}t jd	d
gdtfddtfdtfgfgd}||||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w r?   u/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/numpy/lib/tests/test_recfunctions.pysetup_method   s   


zTestRecFunctions.setup_methodc                 C   sH  | j \}}}}t||fdd}t|tdtfdtfg t||fdd}t|tdtfdtfg t||fdd}t|tdtfddtfg t||fdd}t|tdtfdddtfgfg t||fdd}t|tdtfdtfdtfd	tfg t||fdd}t|t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"   r/   r1   r2   r0   )r8   	zip_descrr   r4   r&   r7   r6   )r:   r>   r;   r<   r=   testr?   r?   r@   test_zip_descr   sD   


zTestRecFunctions.test_zip_descrc                 C   s&  t jddgdtfddtfdtfgfgd}t|d}t jdd	gddtfdtfgfgd}t|| t|d}t jd
dgdtfgd}t|| t|dg}t jddgdtfddtfgfgd}t|| t|ddg}t jd
dgdtfgd}t|| t|ddg}t jddgg d}t|| d S )Nr'   r*   r/   r0   r1   r2   r%   )r(   )r,   r   r+   )r   )r)   )r+   )r.   r?   )r4   r5   r7   r6   r   r   r:   r/   rF   controlr?   r?   r@   test_drop_fields@   s,   








z!TestRecFunctions.test_drop_fieldsc                 C   s   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d}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@r/   r0   r1   r2   r%   r   BB)r/   r2   )r4   r5   r7   r6   r   viewr   r&   )r:   r/   rF   newdtyperK   r?   r?   r@   test_rename_fields`   s   " 
z#TestRecFunctions.test_rename_fieldsc                 C      t ddtfg}t|}t|d t dtfddtfdtfgfg}t|}t|d t dtfdg fg}t|}t|d	 t g }t|}t|d
 d S )Nr$   r"   r   r"   r/   r0   r1   r2   )r/   )r0   )r1   r2   )r/   )r0   r?   r?   )r4   r&   r6   	get_namesr   r7   r:   ndtyperF   r?   r?   r@   test_get_namesk      
"


zTestRecFunctions.test_get_namesc                 C   rR   )Nr$   r"   rS   r/   r0   r1   r2   )r/   r0   r1   r2   r/   r0   r?   )r4   r&   r6   get_names_flatr   r7   rU   r?   r?   r@   test_get_names_flat}   rX   z$TestRecFunctions.test_get_names_flatc              	   C   s   t ddtfg}t|}t|g g d t dtfddtfdgfg}t|}t|g g dgdgd t 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 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_   )r4   r&   r6   r   r   r7   )r:   rV   rF   rK   r?   r?   r@   test_get_fieldstructure   s&   


z(TestRecFunctions.test_get_fieldstructurec                 C   sf  t jg dg ddtfddtfdgfgd}t|dd	d
}ddg}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   t|dd	d}g d}tt|d | t|d ||d   d S )N)r   r#   r"   )r   rb   ra   )r   )r    r"   ra   )r   )r#   C)r   r   r   rd   rd   rd   )r   re   )r   r   r   r   r"   r\   r]   maskr&   FT
ignoremaskreturn_indexr   r   )keyrk   )r   r   r      r-   )r   r   r   r+   rN   )r   r   r   rn   r+   )mar5   r7   r6   r
   r   sortedrJ   r?   r?   r@   test_find_duplicates   s0   
z%TestRecFunctions.test_find_duplicatesc                 C   s   dt fg}tjg dg dd|}t|ddd}g d}tt|d | t|d	 ||d   t|d
dd}g d}tt|d | t|d	 ||d   d S )Nr/   )r   r   r   r   r   rn   rn   )r   r   r   r   r   r   r   rh   Tri   )r   r   rn   r+   rl   r   F)r   r   r   rn   r+      )r7   ro   r5   rO   r
   r   rp   )r:   rV   r/   rF   rK   r?   r?   r@   test_find_duplicates_ignoremask   s   

z0TestRecFunctions.test_find_duplicates_ignoremaskc                 C   s~   t jddd}t jd|d}tt|t d tt|jd ttt|dd| t t j|f}tt|jt ju  d S )Nzu1,f4,i8Talignr   r%      )	r4   r&   zerosr   r   itemsizerecordr   type)r:   dtr/   r?   r?   r@   test_repack_fields   s   z#TestRecFunctions.test_repack_fieldsc                 C   s  t jdg dd}t|}t|t jddd t jg dg dd}t jt|dd	g d
d}t|t g d t jt|dg d
d}t|t g d t 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d}t|| t jg dg dd}tt
t j|t g d$ tt
t j|dd	g t g d t jg dg d%d}t|}t||j	}	tt || tt |	| t|d	dg }
t|
dd&gd'dgd(d'gd)dgg tt |
| 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d}t|}t||j	}	tt || tt |	| |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d}t|g d: }tt || t|g d3g d2g t 	dtfd;tfg}t 	d<|fd |fd=|fg}t d|}t|td}t|t jd>td d?d@ }dAdB }dSdCdD}|||t jt jd+}t||dEt j|f |||t jd*d*}t||dFt j|f |t j}t||dGt j|f |t j||t jd*d*}t||dHt j|f | }tttt d+| tttt d+|t jd tttt jdIt jd t jdJdKgddLgd}t|dMdN}|t j}t|dOdN}t|dMdN}	tt || tt|t ju  tt|	t ju  t|| t|	| t j|dP dQ|j	|jdR}||d d < t|dOdN}t|dMdN}	tt || tt|t ju  tt|	t ju  t|| t|	| d S )TNr+   )r/   i4)r0   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=   rl   )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~   r0   )f0r   )f1u2)r   r   r   )gUUUUUU@gUUUUUU@gUUUUUU!@r   )r   )r<   r   )r=   r   r   r   r   r   r   rn   rs   r   	   rw      )x0r   x1)r   r   x2)r   r   r   )r   r   r   r   r   rw   r   )r   r   rn   r+   r-   rs   r   )r   r   r   )r+   r-   rs   r   r   rn   r   )r   r   rw   r   r   r   r       @   )r   r   r   )ignoredu1)r   r   r   r<   r/   r   )r   rs   c                 S   s   t | |fS N)r4   r&   )r|   shaper?   r?   r@   subarray:  s   zBTestRecFunctions.test_structured_to_unstructured.<locals>.subarrayc                  W   s   t dd t| D S )Nc                 S   s   g | ]\}}d  ||fqS )zx{})format).0ir|   r?   r?   r@   
<listcomp>>  s    zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r4   r&   	enumerate)dtsr?   r?   r@   
structured=  s   zDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredc                 S   s2   t d| }t||d}t|| }|j|j|jfS )Nr?   r%   )r4   rx   r   r   r   r&   )r|   r&   arrretbackarrr?   r?   r@   inspect@  s   
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rs   rI   rH   )r-   )rn   r   r   r   rn   r+   )r0   r   T)copyFmemmapzw+)moder&   r   r   )r4   rx   r   r   r5   meanarangereshaper   r&   r   r   shares_memoryr7   int32r   
ValueErrorNotImplementedErrorrO   recarrayr{   r   r   )r:   tmp_pathr/   outr0   r   wantdddddddd_attrib_revd_revdd_revd_attrib_revpointtriangler   resr   r   r   r|   d_plaindd_expectedr?   r?   r@   test_structured_to_unstructured   s   




"








z0TestRecFunctions.test_structured_to_unstructuredc                 C   sJ   t d}dtfdtfg}t |}t||d}t||d}t|| d S )N)r   r   r;   r<   r%   )r4   rx   r6   r&   r   r   )r:   r/   test_dtype_args
test_dtypefield1field2r?   r?   r@   test_unstructured_to_structuredx  s   

z0TestRecFunctions.test_unstructured_to_structuredc                 C   s\  t jdg dd}ddg}tt||t d| t jddg|d}t||dd	 t|t jd
dg|jd t|| t|t jddg|jd t jddddgfgd}ddgfg}tt||t d| t jddg|d}t||dd	 t|t jddg|jd t|| t|t jddg|jd t dt d}}t|| t|d d d S )Nr   )r~   r0   r   r   r   r%   r0   r   r   r   r   F)zero_unassigned)r   r   r   )r   rn   r+   )r   r   r   )r   rn   r+   r/   r   )r   )rn   )r   )r   rn   ))r   r   ))r   rn   rn   r   r?   )r4   onesr   r   r5   r   r&   )r:   r/   newdtr0   r?   r?   r@   test_field_assignment_by_name  s&   


z.TestRecFunctions.test_field_assignment_by_nameN)__name__
__module____qualname__rA   rG   rL   rQ   rW   r[   r`   rq   rt   r}   r   r   r   r?   r?   r?   r@   r      s    	! ! 	r   c                   @   s   e Zd Zdd Zdd ZdS )TestRecursiveFillFieldsc                 C   sd   t jddgdtfdtfgd}t jd|jd}t||}t jg ddtfdtfgd}t|| d S )Nr   r   r         4@r   r"   r%   r   r   r   )r           )r4   r5   r7   r6   rx   r&   r	   r   r:   r/   r0   rF   rK   r?   r?   r@   test_simple_flexible  s   

z,TestRecursiveFillFields.test_simple_flexiblec                 C   sp   t jddgddgdtfdtfgd}t jd|jd	}t||}t jg d
g ddtfdtfgd}t|| d S )Nr   r   r   r   rf   r   r"   rg   r   r%   r   )r   rf   re   )ro   r5   r7   r6   rx   r&   r	   r   r   r?   r?   r@   test_masked_flexible  s   

z,TestRecursiveFillFields.test_masked_flexibleN)r   r   r   r   r   r?   r?   r?   r@   r     s    	r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestMergeArraysc                 C   sx   t ddg}t g d}t jddgddtfgd}t jd	d
gdtfddtfdtfdg fgfgd}||||f| _d S )Nr   r   r   r   r!   r$   r"   r%   r   )r   r)   r?   r+   )r-   r.   r?   r/   r0   r1   r2   bcr3   r9   r?   r?   r@   rA     s    zTestMergeArrays.setup_methodc                 C   s|   | j \}}}}t|}tjddgdtfgd}t|| t|f}t|| t|dd}t|| t|dd}t|| d S )NrH   r   r   r%   FrB   T)r8   r   r4   r5   r7   r   r:   _r;   r=   rF   rK   r?   r?   r@   	test_solo  s   



zTestMergeArrays.test_soloc                 C   s^   | j d }t|dd}t|| t|dd}tjddgdtfdtfd	tfgd
}t|| d S )Nr   FrB   T)r   r   r)   )r+   r-   r.   r/   r1   r2   r%   )r8   r   r   r4   r5   r7   r6   r:   r>   rF   rK   r?   r?   r@   test_solo_w_flatten  s   


z#TestMergeArrays.test_solo_w_flattenc                 C   s   | j \}}}}t||fdd}tjg ddtfdtfgd}t|| t||fdd}tjg dg ddtfdtfgd	}t|| t|j|j d S )
NFusemask)r   r   )r   r   )rl   r   r   r   r%   Tre   re   rf   rg   )r8   r   r4   r5   r7   r   ro   rh   r:   r   r;   r<   rF   rK   r?   r?   r@   test_standard  s   



zTestMergeArrays.test_standardc                 C   s   | j \}}}}t||fdd}tjddgdtfddtfgd}t|| t||fd	d}tjd
dgdtfdddtfgfgd}t|| d S )NTrB   )r   r   r    )r   r"   r#   r   r$   r"   r%   F)r   r   )r   r!   r   r8   r   r4   r5   r7   r6   r   r   r?   r?   r@   test_flatten  s   


zTestMergeArrays.test_flattenc                 C   s   | j \}}}}t||fdd}tjddgdtfdtfdtfdtfgd	}t|| t||fd
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|d	}t|| d S )NTrB   )r   r   r   r)   )r   r+   r-   r.   r   r/   r1   r2   r%   Fr   r0   r   )r    r   )r   r   r   )r:   r>   r;   r   rF   rK   controldtyper?   r?   r@   test_flatten_wflexible  s$   


z&TestMergeArrays.test_flatten_wflexiblec                 C   s   | j \}}}}tjg dg dd}t||fdd}tjg dg ddtfd	tfgd
}t|| t||fddd}t|| tt|t d S )Nr   r   rn   r   r   r   rr   Tr   )r   r   r   )rl   rn   )r   re   rf   r   r   rg   )r   
asrecarray)	r8   ro   r5   r   r7   r   r   
isinstancer   )r:   r   r;   mxrF   rK   r?   r?   r@   test_wmasked_arrays
  s   


z#TestMergeArrays.test_wmasked_arraysc                 C   s^   t tddgdtfgtg df}tjg dg ddtfdtfgd}t|| d S )	Nr   r   r/   )r   r   rM   )r   r   )rl   rM   r   r   rg   )r   r4   r5   rO   r7   ro   r6   r   )r:   rF   rK   r?   r?   r@   test_w_singlefield  s   
z"TestMergeArrays.test_w_singlefieldc                 C   sP   | j d }t|tg ddtfgf tjg dddtfdtfgd d S )Nrl   r   rc   )r   r    r   r"   r#   r   )z-1rl   r   r$   r"   r%   )r8   r   r4   r5   rO   r7   r6   )r:   r=   r?   r?   r@   test_w_shorter_flex   s
   
"	

z#TestMergeArrays.test_w_shorter_flexc                 C   sd   | j \}}}}t|d |d |d fdd}tjdgdtfdtfddd	tfgfgd
}t|| d S )Nr   Fr   )r   r   r   r   r   r   f2r$   r"   r%   r   )r:   r   r;   r<   r=   rF   rK   r?   r?   r@   test_singlerecord/  s   z!TestMergeArrays.test_singlerecordN)r   r   r   rA   r   r   r   r   r   r  r  r  r  r?   r?   r?   r@   r     s    
	r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestAppendFieldsc                 C   r   r   r3   r9   r?   r?   r@   rA   <     
zTestAppendFields.setup_methodc                 C   sR   | j \}}}}t|dg dd}tjg dg ddtfdtfgd}t|| d S )Nr   r   r8   r   r   r   rg   r8   r   ro   r5   r7   r   r:   r   r;   rF   rK   r?   r?   r@   test_append_singleE  s   
z#TestAppendFields.test_append_singlec                 C   s`   | j \}}}}t|dg dddggd}tjg dg ddtfd	tfd
tfgd}t|| d S )NrS   r   d      r  ))r   r   r  )r   r   r  )rl   r   rl   )r   r   r   r  )r   r   r   r   r   r"   rg   r  r  r?   r?   r@   test_append_doubleN  s   
z#TestAppendFields.test_append_doublec                 C   sP   | j d }t|dg dd}tjg dg dddtfdtfgd	}t|| d S )
Nrl   rc   r   r  )r  r  )rl         r   )r  r  r   r   r   r$   r"   rg   )r8   r   ro   r5   r6   r7   r   )r:   r=   rF   rK   r?   r?   r@   test_append_on_flexW  s   

z$TestAppendFields.test_append_on_flexc                 C   s`   | j d }t|dg dd}tjg dg ddtfdd	tfd
tfgfdtfgd}t|| d S )Nr   rc   r   r  ))r   r(   r   )r+   r,   r   )rl   )rl   r  r   )r   re   r   r  )r   r   r   r/   r0   r1   r2   rg   )r8   r   ro   r5   r7   r6   r   r   r?   r?   r@   test_append_on_nested`  s   

z&TestAppendFields.test_append_on_nestedN)r   r   r   rA   r  r  r  r  r?   r?   r?   r@   r	  9  s    				r	  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestStackArraysc                 C   r   r   r3   r9   r?   r?   r@   rA   q  r
  zTestStackArrays.setup_methodc                 C   sP   | j \}}}}t|f}t|| t||u  t|}t|| t||u  d S r   )r8   r   r   r   )r:   r   r;   rF   r?   r?   r@   r   z  s   


zTestStackArrays.test_soloc                 C   s   | j \}}}}t||fdd}tg d}t|| t||fdd}tg d}t|| t||fdd}tg d}t|| d S )NFr   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r8   r   r4   r5   r   r   r?   r?   r@   test_unnamed_fields  s   

z#TestStackArrays.test_unnamed_fieldsc                 C   s   | j \}}}}t||f}tjg dg ddtfddtfgd}t|| t|j|j t||f}tjg dg dddtfd	tfgd}t|| t|j|j t|||f}tjg d
g dddtfd	tfgd}t|| d S )N))r   rl   rl   )r   rl   rl   )rl   r   r   )rl   r"   r   )r   r   r   r  r   r   r   r$   r"   rg   )r   r   rl   r"   r   rl   rl   rl   r   rl   rl   r   )r   r   r   r  r  r  r  )r  r  r  r  r  r  )r  r  r  r  r  r  )r8   r   ro   r5   r7   r6   r   rh   r   r?   r?   r@   test_unnamed_and_named_fields  s*   




z-TestStackArrays.test_unnamed_and_named_fieldsc                 C   s   | j \}}}}tjg dddtfdtfgd}t||f}tjg dddtfdtfgg dd}t|| t|j|j t|||f}ddtfdtfd	tfg}tjg d
|g dd}t|| t|j|j d S )Nr/   r         Y@r0   r         i@r   rM        r@r$   r"   rc   r%   )r  r  r"  r$  r&  r  r  r  r  r  r&   rh   f3))r   r   rl   rl   )r"   r   rl   rl   )r/   r   r#  rl   )r0   r   r%  rl   )r   rM   r'  rl   )rl   rl   rl   r   )rl   rl   rl   r   )r   r   r   r   r+  r   r   r   r   r,  r,  r   r   r   r   r-  )	r8   r4   r5   r6   r   ro   r   rh   r7   )r:   r   r;   r=   zzrF   rK   rV   r?   r?   r@   test_matching_named_fields  s&   




z*TestStackArrays.test_matching_named_fieldsc                 C   s   | j \}}}}tjg dddtfdtfgd}dddd	d
}t||f|d}tjg dddtfdtfgg dd}t|| t|j |j  t|j|j d S )Nr!  r$   r"   rc   r%   z???g     8    g    i)r   r"   rc   D)defaults))r   r   r0  )r"   r   r0  r"  r$  r&  r(  r)  )r8   r4   r5   r6   r   ro   r   rh   )r:   r   r=   r.  r2  rF   rK   r?   r?   r@   test_defaults  s   


zTestStackArrays.test_defaultsc                 C   s   dt fdtfdtfg}tjdgdg|d}dt fdtfdtfg}tjdg|d}tjddgdd	g|d}t||fd
d}t|| t|j|j tt	 t||fdd W d    d S 1 s`w   Y  d S )Nr   r"   rc   r   r   r   r   rg   r+   r-   rs   r%   r  T)autoconvertF)
r7   boolr6   ro   r5   r   r   rh   r   	TypeError)r:   adtyper/   bdtyper0   rK   rF   r?   r?   r@   test_autoconversion  s   

"z#TestStackArrays.test_autoconversionc                 C   s   dt fdtfdtfg}tjdgdg|d}dt fdtfdtfg}tjdg|d}t||f}tjddgdd	g|d}t|| t|j|j d S )
N)r/   r   )r0   r"   )r   rc   r   r4  rg   r5  r%   r  )r7   r7  r6   ro   r5   r   r   rh   )r:   r9  r/   r:  r0   rF   rK   r?   r?   r@   test_checktitles  s   
z TestStackArrays.test_checktitlesc              	   C   s  t jddgddtdfgd}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d}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d}t|j|j t|| t|j|j d S )Nr  )r"   r   r$   r"   rH   r%   r/   r   r#  r0   r   r%  r   rM   r'  rc      Ar    r      Br#      a   b   cFT)r8   rh   r&   )r4   r5   r6   r   ro   r&   r   rh   )r:   r=   r.  r   expectedr?   r?   r@   test_subdtype  s:   










zTestStackArrays.test_subdtypeN)r   r   r   rA   r   r  r   r/  r3  r;  r<  rC  r?   r?   r?   r@   r  o  s    	 r  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )
TestJoinByc              	   C   s   t jttt dt ddt dddtfdtfdtfgd	| _t jttt d
dt ddt dddtfdtfdtfgd	| _d S )Nr   2   <   r  n   r/   r0   r   r%   r-   r   A   K   r   r4   r5   listzipr   r7   r/   r0   r:   r?   r?   r@   rA     s   

zTestJoinBy.setup_methodc                 C   s\   | j | j}}td||dd}tjg ddtfdtfdtfdtfdtfgd	}t|| d S )
Nr/   inner)jointype))r-   7   rH  i   r  )rs   8   B   j   e   )r   9   C   k   f   )r   :   D   l   g   )r   ;   E   m   h   b1b2r   r   r%   r/   r0   r   r4   r5   r7   r   r   r?   r?   r@   test_inner_join#  s   
zTestJoinBy.test_inner_joinc                 C   sH   | j | j}}td|| tjg ddtfdtfdtfdtfgd d S )NrY   ))r-   rP  rQ  r  )rs   rR  rT  rU  )r   rV  rX  rY  )r   rZ  r\  r]  )r   r^  r`  ra  r/   r0   r   r   r%   )r/   r0   r   r4   r5   r7   r:   r/   r0   r?   r?   r@   	test_join/  s   

zTestJoinBy.test_joinc                 C   s^   t jdgdtfgd}t jdt g dfgdtfdgd}td||}t||tj d S )NrH   rm   r%   r   r   )valueuint16rn   )r4   r5   r7   r   r   rO   ro   MaskedArray)r:   foobarr   r?   r?   r@   test_join_subdtypeC  s   
zTestJoinBy.test_join_subdtypec                 C   Z   | j | j}}td||d}tjg dg ddtfdtfdtfdtfgd	}t|| d S )
NrY   outer)r   rE  r  rl   r   3   rU  rl   r   4   rY  rl   rn   5   r]  rl   r+   6   ra  rl   r-   rP  rQ  rl   )r-   rH  rl   r  rs   rR  rT  rl   )rs   rS  rl   rU  r   rV  rX  rl   )r   rW  rl   rY  r   rZ  r\  rl   )r   r[  rl   r]  r   r^  r`  rl   )r   r_  rl   ra  )r   F   rl   rQ  )r   G   rl   rT  )r   H   rl   rX  )rw   I   rl   r\  )r   J   rl   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/   r0   r   r   rg   r/   r0   r   ro   r5   r7   r   r   r?   r?   r@   test_outer_joinL  s   


zTestJoinBy.test_outer_joinc                 C   rn  )
NrY   	leftouter)
rp  rq  rs  ru  rw  ry  rz  r{  r|  r}  )
r,  r,  r,  r,  r,  r,  r,  r,  r,  r,  r/   r0   r   r   rg   r  r   r?   r?   r@   test_leftouter_joinh  s   
zTestJoinBy.test_leftouter_joinc                 C   sP   t jdg dd}t jdg dd}tddg||ddd	}t|jjg d
 d S )Nrn   r~   r   r   r%   r   r   r~   r   r0   rN  F)rO  r   )r0   r   a1a2)r4   rx   r   r   r   r&   names)r:   r/   r0   jr?   r?   r@   test_different_field_ordery  s   z%TestJoinBy.test_different_field_orderc                 C   s<   t jdg dd}t jdg dd}tttg d|| d S )Nrn   r  r%   r  )r/   r0   r0   )r4   rx   r   r   r   r   rf  r?   r?   r@   test_duplicate_keys  s   zTestJoinBy.test_duplicate_keysc                 C   sj   t ddg}t ddg}t g d}t jddg|d}t jdd	g|d}td
||}t|j| d S )N)rm   S5rh  <f4rm   S10)r  value1r  )value2r  Sarahr   Johnr.   r%   r  r   r  r   rm   r4   r&   r5   r   r   r:   a_dtypeb_dtypeexpected_dtyper/   r0   r   r?   r?   r@   #test_same_name_different_dtypes_key  s   z.TestJoinBy.test_same_name_different_dtypes_keyc                 C   sj   t ddg}t ddg}t g d}t jddg|d}t jdd	g|d}td
||}t|j| d S )Nr  r  )rh  <f8))rm   z|S10r  )r  r  r  r  r%   r  r  rm   r  r  r?   r?   r@   test_same_name_different_dtypes  s   z*TestJoinBy.test_same_name_different_dtypesc                 C   s   t dtdfdg}t jg dt jfg ddfg|d}t dtdfdg}t jg ddfg d	dfg|d}t dtdfddg}t jg dt jdfg|d}td||}t|j| t|| d S )
Nposrn   )fr  )r   r   r   r   r   r%   )gr  )rn   r   r   )r4   r&   r7   r5   pir   r   )r:   r  r/   r  r0   r  rB  r   r?   r?   r@   test_subarray_key  s   $"zTestJoinBy.test_subarray_keyc                 C   sn   t jddd}d|_tt|jd t ddg|}t dd	g|}td
||}t g d}t|j| d S )Nzi1,f4Tru   )kvrn   r   )rn   r   r   r   r  ))r  i1)v1r   )v2r   )	r4   r&   r  r   lendescrr5   r   r   )r:   r|   r/   r0   r   r  r?   r?   r@   test_padded_dtype  s   zTestJoinBy.test_padded_dtypeN)r   r   r   rA   re  rg  rm  r  r  r  r  r  r  r  r  r?   r?   r?   r@   rD    s    	rD  c                   @   s8   e Zd Zedd Zdd Zdd Zdd Zd	d
 ZdS )TestJoinBy2c              	   C   s   t jttt dt ddt dddtfdtfdtfgd	| _t jttt dt d
dt dddtfdtfdtfgd	| _d S )Nr   rE  rF  r  rG  r/   r0   r   r%   rH  rI  r   rJ  )clsr?   r?   r@   rA     s   

zTestJoinBy2.setup_methodc                 C   `   | j | j}}td||dddd}tjg ddtfdtfdtfd	tfd
tfgd}t|| d S )Nr/   rD   2rN  	r1postfix	r2postfixrO  
)r   rE  rH  r  r  )r   rr  rS  rU  rU  )r   rt  rW  rY  rY  )rn   rv  r[  r]  r]  )r+   rx  r_  ra  ra  )r-   rP  r~  rQ  rQ  )rs   rR  r  rT  rT  )r   rV  r  rX  rX  )r   rZ  r  r\  r\  )r   r^  r  r`  r`  r0   rc  r   r   r%   rd  r   r?   r?   r@   test_no_r1postfix     
zTestJoinBy2.test_no_r1postfixc              	   C   s   t ttd| j| jddd d S )Nr/   rD   )r  r  )r   r   r   r/   r0   rM  r?   r?   r@   test_no_postfix  s   
zTestJoinBy2.test_no_postfixc                 C   r  )Nr/   1rD   rN  r  r  rb  r0   r   r   r%   rd  r   r?   r?   r@   test_no_r2postfix  r  zTestJoinBy2.test_no_r2postfixc              
   C   s&  t jttt ddgdt t ddt ddt dddtfd	tfd
tfdtfgd}t jttt ddgdt t ddt ddt dddtfd	tfd
tfdtfgd}t jg ddtfd	tfdtfdtfdtfdtfgd}td	dg||dddd}t	|j
|j
 t	|| d S )Nr   r   r-   r   rE  rF  r   r  r/   r0   r   r%   rH  rI  r   )
)r   r   rE  rH  r   r   )r   r   rr  rS  r   r   )r   r   rt  rW  r   r   )r   r   rv  r[  rw   rn   )r   r   rx  r_  r   r+   )r   r   rP  r~  r   r-   )r   rn   rR  r     rs   )r   rn   rV  r  r   r   )r   r+   rZ  r     r   )r   r+   r^  r     r   rb  rc  c1c2r  r  rN  r  )r4   r5   rK  rL  tilerepeatr   r7   r   r   r&   )r:   r/   r0   rK   rF   r?   r?   r@   test_two_keys_two_vars  s(   &&
z"TestJoinBy2.test_two_keys_two_varsN)	r   r   r   classmethodrA   r  r  r  r  r?   r?   r?   r@   r    s    
r  c                   @   s    e Zd ZdZdd Zdd ZdS )TestAppendFieldsObjz;
    Test append_fields with arrays containing objects
    c                 C   s$   ddl m} t|dddd| _d S )Nr   )datei  r   )obj)datetimer  dictr8   )r:   r  r?   r?   r@   rA     s   z TestAppendFieldsObj.setup_methodc                 C   s   | j d }tj|df|dfgdtfdtfgd}tjddgtd}t|d	|d
d}tj|ddf|ddfgdtfdtfd	tfgd}t|| dS )z7Test append_fields when the base array contains objectsr  r    r#   r   r"   r%   r   r   rc   F)r8   r   N)r8   r4   r5   objectr6   r7   r   r   )r:   r  r;   r<   rF   rK   r?   r?   r@   test_append_to_objects	  s   
z*TestAppendFieldsObj.test_append_to_objectsN)r   r   r   __doc__rA   r  r?   r?   r?   r@   r    s    r  )-numpyr4   numpy.maro   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_fieldspecrT   rZ   
_zip_descrrE   
_zip_dtype	zip_dtyper   r   r   r	  r  rD  r  r  r?   r?   r?   r@   <module>   s2   D




    6 , %A