o
    Ô­já«  ã                   @   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                   @   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?   ú^/var/www/html/CropPilot/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_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@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_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"   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_namesl   ó   
"


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@   ÚinspectA  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_structuredy  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_singlerecord0  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_singleF  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_doubleO  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_flexX  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_nesteda  s   

þûz&TestAppendFields.test_append_on_nestedN)rÛ   rÜ   rÝ   rA   r  r  r  r  r?   r?   r?   r@   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   r3   r9   r?   r?   r@   rA   r  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î   {  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  p  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_join0  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_subdtypeD  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_joinM  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_joini  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_orderz  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É  ).ÚpytestÚ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>   s4    D




    6 , %A