o
    0Zc                     @   s.  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 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                   @   l   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 )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@   W/var/www/chikooza/env/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#   r0   r2   r3   r1   )r9   	zip_descrr   r5   r'   r8   r7   )r;   r?   r<   r=   r>   testr@   r@   rA   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+   r0   r1   r2   r3   r&   )r)   )r-   r   r,   )r   )r*   )r,   )r/   r@   )r5   r6   r8   r7   r   r   r;   r0   rG   controlr@   r@   rA   test_drop_fieldsA   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@r0   r1   r2   r3   r&   r    BB)r0   r3   )r5   r6   r8   r7   r   viewr   r'   )r;   r0   rG   newdtyperL   r@   r@   rA   test_rename_fieldsa   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#   r0   r1   r2   r3   )r0   )r1   )r2   r3   )r0   )r1   r@   r@   )r5   r'   r7   	get_namesr   r8   r;   ndtyperG   r@   r@   rA   test_get_namesl      
"


zTestRecFunctions.test_get_namesc                 C   rS   )Nr%   r#   rT   r0   r1   r2   r3   )r0   r1   r2   r3   r0   r1   r@   )r5   r'   r7   get_names_flatr   r8   rV   r@   r@   rA   test_get_names_flat~   rY   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#   rT   r    BArO   z|S1)r    r#   r]   rO   rO   BBABBB)r    r#   r]   rO   r_   r`   )r5   r'   r7   r   r   r8   )r;   rW   rG   rL   r@   r@   rA   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   rc   rb   )r   )r!   r#   rb   )r   )r$   C)r   r   r   re   re   re   )r   rf   )r   r   r   r    r#   r]   r^   maskr'   FT
ignoremaskreturn_indexr   r   )keyrl   )r   r   r      r.   )r   r   r   r,   rO   )r   r   r   ro   r,   )mar6   r8   r7   r
   r   sortedrK   r@   r@   rA   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 )Nr0   )r   r   r   r   r   ro   ro   )r   r   r   r   r   r   r   ri   Trj   )r   r   ro   r,   rm   r   F)r   r   r   ro   r,      )r8   rp   r6   rP   r
   r   rq   )r;   rW   r0   rG   rL   r@   r@   rA   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&      )	r5   r'   zerosr   r   itemsizerecordr   type)r;   dtr0   r@   r@   rA   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|j|u  t|j|u  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|j|u  t|j|u  t 	dtfd2tfg}	t 	d3|	fd |	fd4|	fg}
t d|
}t|td}t|t jd5td d6d7 }d8d9 }dAd:d;}|||t jt jd(}t||d<t j|f |||t jd'd'}t||d=t j|f |t j}t||d>t j|f |t j||t jd'd'}t||d?t j|f | }tttt d(| tttt d(|t jd tttt jd@t jd d S )BNr,   )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>   rm   )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   ro   rt   r   r   	   r   r   rx      ))x0r   )x1)r   r   )x2)r   r   r   r=   r0   r   )r   rt   c                 S   s   t | |fS N)r5   r'   )r}   shaper@   r@   rA   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@   rA   
<listcomp>$  s    zXTestRecFunctions.test_structured_to_unstructured.<locals>.structured.<locals>.<listcomp>)r5   r'   	enumerate)dtsr@   r@   rA   
structured#  s   zDTestRecFunctions.test_structured_to_unstructured.<locals>.structuredc                 S   s2   t d| }t||d}t|| }|j|j|jfS )Nr@   r&   )r5   ry   r   r   r   r'   )r}   r'   arrretbackarrr@   r@   rA   inspect&  s   
zATestRecFunctions.test_structured_to_unstructured.<locals>.inspect)rt   rJ   rI   )r.   )ro   r   r   )r5   ry   r   r   r6   meanarangereshaper   r'   r   r   baser8   int32r   
ValueErrorNotImplementedError)r;   r0   outr1   r   wantddddddpointtriangler   resr   r   r   r}   r@   r@   rA   test_structured_to_unstructured   s   






z0TestRecFunctions.test_structured_to_unstructuredc                 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   r1   r   r   u1r&   r1   r   r   r   r   )ro   r,   F)zero_unassigned)r   r   r   )r   ro   r,   )r   r   r   )r   ro   r,   r0   r   )r   )ro   )r   )r   ro   ))r   r   ))r   ro   ro   r   r@   )r5   onesr   r   r6   r   r'   )r;   r0   newdtr1   r@   r@   rA   test_field_assignment_by_nameA  s&   


z.TestRecFunctions.test_field_assignment_by_nameN)__name__
__module____qualname__rB   rH   rM   rR   rX   r\   ra   rr   ru   r~   r   r   r@   r@   r@   rA   r      s    	! !Zr   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           )r5   r6   r8   r7   ry   r'   r	   r   r;   r0   r1   rG   rL   r@   r@   rA   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   rg   r    r#   rh   r   r&   r   )r   rg   rf   )rp   r6   r8   r7   ry   r'   r	   r   r   r@   r@   rA   test_masked_flexibleh  s   

z,TestRecursiveFillFields.test_masked_flexibleN)r   r   r   r   r   r@   r@   r@   rA   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@   r0   r1   r2   r3   bcr4   r:   r@   r@   rA   rB   w  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 )NrI   r   r   r&   FrC   T)r9   r   r5   r6   r8   r   r;   _r<   r>   rG   rL   r@   r@   rA   	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   FrC   T)r   r   r*   )r,   r.   r/   r0   r2   r3   r&   )r9   r   r   r5   r6   r8   r7   r;   r?   rG   rL   r@   r@   rA   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   )rm   r   r   r   r&   Trf   rf   rg   rh   )r9   r   r5   r6   r8   r   rp   ri   r;   r   r<   r=   rG   rL   r@   r@   rA   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 )NTrC   )r   r    r!   )r   r#   r$   r   r%   r#   r&   F)r   r   )r   r"   r   r9   r   r5   r6   r8   r7   r   r   r@   r@   rA   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 )NTrC   )r   r   r   r*   )r   r,   r.   r/   r   r0   r2   r3   r&   Fr   r1   r   )r!   r   )r   r   r   )r;   r?   r<   r   rG   rL   controldtyper@   r@   rA   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   ro   r   r   r   rs   Tr   )r   r   r   )rm   ro   )r   rf   rg   r   r   rh   )r   
asrecarray)	r9   rp   r6   r   r8   r   r   
isinstancer   )r;   r   r<   mxrG   rL   r@   r@   rA   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   r0   )r   r   rN   )r   r   )rm   rN   r   r   rh   )r   r5   r6   rP   r8   rp   r7   r   )r;   rG   rL   r@   r@   rA   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 )Nrm   r   rd   )r    r!   r   r#   r$   r   )z-1rm   r   r%   r#   r&   )r9   r   r5   r6   rP   r8   r7   )r;   r>   r@   r@   rA   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>   rG   rL   r@   r@   rA   test_singlerecord  s   z!TestMergeArrays.test_singlerecordN)r   r   r   rB   r   r   r   r   r   r   r   r   r   r@   r@   r@   rA   r   t  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   r4   r:   r@   r@   rA   rB        
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   r9   r   r   r   rh   r9   r   rp   r6   r8   r   r;   r   r<   rG   rL   r@   r@   rA   test_append_single  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 )NrT   r   d      r   ))r   r   r   )r   r   r   )rm   r   rm   )r   r   r   r   )r   r   r   r   r    r#   rh   r   r   r@   r@   rA   test_append_double  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 )
Nrm   rd   r   r   )r   r   )rm         r   )r   r   r   r   r   r%   r#   rh   )r9   r   rp   r6   r7   r8   r   )r;   r>   rG   rL   r@   r@   rA   test_append_on_flex  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   rd   r   r   ))r   r)   r   )r,   r-   r   )rm   )rm   r   r   )r   rf   r   r   )r   r   r   r0   r1   r2   r3   rh   )r9   r   rp   r6   r8   r7   r   r   r@   r@   rA   test_append_on_nested   s   

z&TestAppendFields.test_append_on_nestedN)r   r   r   rB   r   r   r   r  r@   r@   r@   rA   r     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   r4   r:   r@   r@   rA   rB   1  r   zTestStackArrays.setup_methodc                 C   sP   | j \}}}}t|f}t|| t||u  t|}t|| t||u  d S r   )r9   r   r   r   )r;   r   r<   rG   r@   r@   rA   r   :  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   )r9   r   r5   r6   r   r   r@   r@   rA   test_unnamed_fieldsE  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   rm   rm   )r   rm   rm   )rm   r    r   )rm   r#   r   )r   r   r   r  r   r   r   r%   r#   rh   )r    r   rm   r#   r   rm   rm   rm   r   rm   rm   r   )r   r   r   r	  r   r   r   )r  r  r  r  r  r  )r	  r	  r	  r	  r   r   )r9   r   rp   r6   r8   r7   r   ri   r   r@   r@   rA   test_unnamed_and_named_fieldsU  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r0   r         Y@r1   r         i@r   rN        r@r%   r#   rd   r&   )r  r  r  r  r  r	  r	  r   r   r   r'   ri   f3))r    r   rm   rm   )r#   r   rm   rm   )r0   r   r  rm   )r1   r   r  rm   )r   rN   r  rm   )rm   rm   rm   r   )rm   rm   rm   r   )r   r   r   r   r  r   r   r   r   r  r  r   r   r   r   r  )	r9   r5   r6   r7   r   rp   r   ri   r8   )r;   r   r<   r>   zzrG   rL   rW   r@   r@   rA   test_matching_named_fieldsu  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#   rd   r&   z???g     8    g    i)r    r#   rd   D)defaults))r    r   r  )r#   r   r  r  r  r  r  r  )r9   r5   r6   r7   r   rp   r   ri   )r;   r   r>   r  r  rG   rL   r@   r@   rA   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#   rd   r   r   r   r   rh   r,   r.   rt   r&   r   T)autoconvertF)
r8   boolr7   rp   r6   r   r   ri   r   	TypeError)r;   adtyper0   bdtyper1   rL   rG   r@   r@   rA   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)r0   r    )r1   r#   )r   rd   r   r  rh   r  r&   r   )r8   r!  r7   rp   r6   r   r   ri   )r;   r#  r0   r$  r1   rG   rL   r@   r@   rA   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#   rI   r&   r0   r   r  r1   r   r  r   rN   r  rd      Ar!   r      Br$      a   b   cFT)r9   ri   r'   )r5   r6   r7   r   rp   r'   r   ri   )r;   r>   r  r   expectedr@   r@   rA   test_subdtype  s:   










zTestStackArrays.test_subdtypeN)r   r   r   rB   r   r  r
  r  r  r%  r&  r-  r@   r@   r@   rA   r  /  s    	 r  c                   @   r   )
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   r0   r1   r   r&   r.   r   A   K   r   r5   r6   listzipr   r8   r0   r1   r;   r@   r@   rA   rB     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 )
Nr0   inner)jointype))r.   7   r2  i   r   )rt   8   B   j   e   )r   9   C   k   f   )r   :   D   l   g   )r   ;   E   m   h   b1b2r   r   r&   r0   r1   r   r5   r6   r8   r   r   r@   r@   rA   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 )NrZ   ))r.   r:  r;  r   )rt   r<  r>  r?  )r   r@  rB  rC  )r   rD  rF  rG  )r   rH  rJ  rK  r0   r1   r   r   r&   )r0   r1   r   r5   r6   r8   r;   r0   r1   r@   r@   rA   	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 )NrI   rn   r&   r   r   )valueuint16ro   )r5   r6   r8   r   r   rP   rp   MaskedArray)r;   foobarr   r@   r@   rA   test_join_subdtype  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 )
NrZ   outer)r   r/  r   rm   r   3   r?  rm   r   4   rC  rm   ro   5   rG  rm   r,   6   rK  rm   r.   r:  r;  rm   )r.   r2  rm   r   rt   r<  r>  rm   )rt   r=  rm   r?  r   r@  rB  rm   )r   rA  rm   rC  r   rD  rF  rm   )r   rE  rm   rG  r   rH  rJ  rm   )r   rI  rm   rK  )r   F   rm   r;  )r   G   rm   r>  )r   H   rm   rB  )rx   I   rm   rF  )r   J   rm   rJ  )r  r  r  r  r  r  r   r   r   r   r  rm  r  rm  r  rm  r  rm  rm  rm  rm  rm  rm  r0   r1   r   r   rh   r0   r1   r   rp   r6   r8   r   r   r@   r@   rA   test_outer_join  s   


zTestJoinBy.test_outer_joinc                 C   rX  )
NrZ   	leftouter)
rZ  r[  r]  r_  ra  rc  rd  re  rf  rg  )
r  r  r  r  r  r  r  r  r  r  r0   r1   r   r   rh   rn  r   r@   r@   rA   test_leftouter_join(  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 )Nro   r   r   r   r&   r   r   r   r   r1   r8  F)r9  r   )r1   r   a1a2)r5   ry   r   r   r   r'   names)r;   r0   r1   jr@   r@   rA   test_different_field_order9  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 )Nro   rr  r&   rs  )r0   r1   r1   )r5   ry   r   r   r   r   rP  r@   r@   rA   test_duplicate_keysA  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)rn   S5rR  <f4rn   S10)r}  value1r|  )value2r|  Sarahr   Johnr/   r&   r  r   r  r   rn   r5   r'   r6   r   r   r;   a_dtypeb_dtypeexpected_dtyper0   r1   r   r@   r@   rA   #test_same_name_different_dtypes_keyF  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{  )rR  <f8))rn   z|S10r  )r  r  r  r  r&   r  r  rn   r  r  r@   r@   rA   test_same_name_different_dtypesR  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posro   )fr|  )r   r   r   r   r   r&   )gr|  )ro   r   r   )r5   r'   r8   r6   pir   r   )r;   r  r0   r  r1   r  r,  r   r@   r@   rA   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,f4Trv   )kvro   r   )ro   r   r   r   r  ))r  i1)v1r   )v2r   )	r5   r'   rv  r   lendescrr6   r   r   )r;   r}   r0   r1   r   r  r@   r@   rA   test_padded_dtypem  s   zTestJoinBy.test_padded_dtypeN)r   r   r   rB   rO  rQ  rW  ro  rq  rx  ry  r  r  r  r  r@   r@   r@   rA   r.    s    	r.  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   r/  r0  r   r1  r0   r1   r   r&   r2  r3  r   r4  )clsr@   r@   rA   rB     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 )Nr0   rE   2r8  	r1postfix	r2postfixr9  
)r   r/  r2  r   r   )r   r\  r=  r?  r?  )r   r^  rA  rC  rC  )ro   r`  rE  rG  rG  )r,   rb  rI  rK  rK  )r.   r:  rh  r;  r;  )rt   r<  ri  r>  r>  )r   r@  rj  rB  rB  )r   rD  rk  rF  rF  )r   rH  rl  rJ  rJ  r1   rM  r   r   r&   rN  r   r@   r@   rA   test_no_r1postfix     
zTestJoinBy2.test_no_r1postfixc              	   C   s   t ttd| j| jddd d S )Nr0   rE   )r  r  )r   r   r   r0   r1   r7  r@   r@   rA   test_no_postfix  s   
zTestJoinBy2.test_no_postfixc                 C   r  )Nr0   1rE   r8  r  r  rL  r1   r   r   r&   rN  r   r@   r@   rA   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   r/  r0  r   r  r0   r1   r   r&   r2  r3  r   )
)r   r   r/  r2  r   r   )r   r   r\  r=  r   r   )r   r   r^  rA  r   r   )r   r   r`  rE  rx   ro   )r   r   rb  rI  r   r,   )r   r   r:  rh  r   r.   )r   ro   r<  ri     rt   )r   ro   r@  rj  r   r   )r   r,   rD  rk     r   )r   r,   rH  rl     r   rL  rM  c1c2r  r  r8  r  )r5   r6   r5  r6  tilerepeatr   r8   r   r   r'   )r;   r0   r1   rL   rG   r@   r@   rA   test_two_keys_two_vars  s(   &&
z"TestJoinBy2.test_two_keys_two_varsN)	r   r   r   classmethodrB   r  r  r  r  r@   r@   r@   rA   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  dictr9   )r;   r  r@   r@   rA   rB     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   rd   F)r9   r   N)r9   r5   r6   objectr7   r8   r   r   )r;   r  r<   r=   rG   rL   r@   r@   rA   test_append_to_objects  s   
z*TestAppendFieldsObj.test_append_to_objectsN)r   r   r   __doc__rB   r  r@   r@   r@   rA   r    s    r  ).pytestnumpyr5   numpy.marp   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_fieldspecrU   r[   
_zip_descrrF   
_zip_dtype	zip_dtyper   r   r   r   r  r.  r  r  r@   r@   r@   rA   <module>   s2    D




  K 6 , %A