o
    V=ºiF  ã                   @   s    d dl Zd dlmZmZmZ d dlZd dlmZ dd„ Z	dd„ Z
dd	„ Zej d
d¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ dƒZdS )é    N)Úassert_array_equalÚassert_equalÚassert_raises)Úchainc                  C   s”   g d¢g d¢gg d¢g d¢gg} dD ])}t j| |d�}t j|dd�}t|jt jƒ t|t  d	gd
ggdgdggg¡ƒ qttt jt j| t	d�ƒ d S )N)é   r   r   )r   r   r   )r   r   r   )r   r   r   ú?bBhHiIlLqQ©Údtypeéÿÿÿÿ©Úaxisé    é@   éÀ   é    )
ÚnpÚarrayÚpackbitsr   r	   Úuint8r   r   Ú	TypeErrorÚfloat)ÚaÚdtÚarrÚb© r   úcC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/lib/tests/test_packbits.pyÚtest_packbits   s   ÿ&r   c                  C   sR   g d¢} dD ] }| D ]}t j||d�}t  |¡}t|jt jƒ t|jdƒ q
qd S )N)©r   ©é
   é   r   ©r    r   r!   ©r   r    r!   ©r!   r   r   ©r   r!   r   ©r   r   r!   ©r   r   r   r   r   r   )r   Úemptyr   r   r	   r   Úshape)Úshapesr   r)   r   r   r   r   r   Útest_packbits_empty   s   
üÿr+   c               
   C   s¶   ddgfdg d¢fdg d¢fdg d¢fdg d	¢fd
g d¢fdg d¢fdg d¢fg} dD ]-}| D ](\}}t |ƒD ]\}}tj||d�}tj||d�}t|jtjƒ t|j|ƒ q7q/q+d S )Nr   r   ))é   r!   r   )r    é   r   r   r"   ))r,   r   r!   r"   )r    r   r-   r#   )r#   )r   r,   r!   )r   r    r-   r$   )©r-   r   r   r$   r$   r%   )r%   ©r   r-   r   r%   r&   )r&   r&   ©r   r   r-   r'   ©r'   r'   r'   r   r   r   )Ú	enumerater   r(   r   r   r	   r   r)   )r*   r   Úin_shapeZ
out_shapesÚaxÚ	out_shaper   r   r   r   r   Útest_packbits_empty_with_axis    s&   






ø
üÿÿr6   Úbitorder©ÚlittleÚbigc                    sâ  t  g d¢¡}| d¡}dD �]“}t j||d�‰ t jˆ d | d�}t|jt jƒ g d¢}| dkr4t||ƒ tt j|| d�d d	… |ƒ ‡ fd
d„t	ddƒD ƒ}t|g d¢ƒ ˆ  
dd¡‰ t jˆ dd�}t|jt jƒ t|g d¢g d¢g d¢g d¢g d¢gƒ t jˆ dd�}t|jt jƒ t|g g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d ¢‘g d!¢‘g d"¢‘g d#¢‘g d$¢‘g d%¢‘g d&¢‘g d'¢‘g d(¢‘g d)¢‘g d*¢‘g d+¢‘g d ¢‘g d,¢‘g d-¢‘g d.¢‘g d/¢‘g d0¢‘g d1¢‘g d2¢‘g d3¢‘g d4¢‘g d5¢‘g d6¢‘g d7¢‘g d8¢‘g d9¢‘g d:¢‘ƒ ˆ j ¡ ‰ t jˆ dd�}t|jt jƒ t|g d;¢g d<¢g d=¢g d>¢gƒ t jˆ dd�}t|jt jƒ t|g d?¢g d@¢g dA¢g dB¢g dC¢g dD¢g dE¢g dF¢g dG¢g dH¢g dI¢g dJ¢g dK¢g dL¢g dM¢g dN¢g dO¢g dP¢g dQ¢g dR¢g dS¢g dT¢g dU¢g dV¢g dW¢gƒ qdXD ]=}t j||d�‰ t jjt  |¡jt  |¡jˆ j|dY�}d||dk< ˆ | |¡9 ‰ t jˆ dZd�}tt  |¡d d	… |ƒ �q¥ttt jt j|td�ƒ d S )[N(,  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   r   r   ©r   r7   )qéü   é   r   r-   éþ   é   r<   r   r?   é   éð   r   é   r   éÿ   r<   éq   éø   r-   rC   r   rB   é   r   rB   é~   r   éà   r=   rC   éã   éŽ   r?   r@   rJ   é?   rB   rG   é8   rI   rA   r   rI   é€   rK   rH   é   rL   r<   ép   rL   rC   éñ   rE   r-   rA   rL   rH   rO   rK   rC   rC   éÇ   rH   rN   r   r@   é�   r   r-   rC   rQ   r   r   rC   rH   r   rC   r<   rG   rK   r   r   r   r<   rN   rK   r   rF   rQ   r<   rD   rC   r-   rM   rL   r<   rN   r?   r   rD   rC   rC   rJ   rL   rI   é�   rE   rI   rS   rQ   r@   rM   r:   ©r7   éüÿÿÿc                    s(   g | ]}t jˆ d | … d d�d ‘qS )Nr   r
   )r   r   )Ú.0Úi©r   r   r   Ú
<listcomp>Y   s   ( z'test_packbits_large.<locals>.<listcomp>r   é   )rM   rM   rM   r@   é   rB   é   rZ   r   r   r   rQ   éÆ   éÄ   r   é$   é   r   r   )é¾   éº   é²   rc   é–   é×   éW   éS   rg   éÃ   rQ   éÎ   éÌ   rj   éŒ   rk   éˆ   rl   é   é(   éi   ék   éK   éJ   éX   )éH   éØ   rE   rP   rI   rh   éÊ   éZ   rw   rg   rg   éw   r=   ém   éI   r   éÐ   éô   é½   é-   é)   éh   éz   rw   é   )rD   éx   rE   ru   é˜   r\   é<   é4   é¶   rd   rd   rd   é’   éÒ   r‰   éö   rC   rC   éß   é—   é   é   rŽ   éƒ   é£   )éÖ   r‰   r‰   r   éD   é   r“   r   rt   rs   é\   r”   éN   én   é'   éµ   é•   éÜ   éÞ   éÚ   rœ   rv   éê   éª   é¨   )r   rM   rM   r   éP   rO   é0   r   r   rH   rA   r{   é�   rM   r   rH   rA   r{   r¢   r¢   é°   rA   rH   r   rM   )r<   r=   r   r   )r?   r<   rF   rM   )rA   r   rB   r   )rC   rM   r   rM   )r   r@   rC   rM   )rJ   rK   r   r   )rC   rA   r?   r   )r?   rH   rN   r   )rG   r   rH   r   )rC   rC   rQ   r   )rL   rB   rG   r   )rD   rE   rI   rM   )rI   rJ   rK   r   )r   rB   rO   r   )rF   rE   r-   rM   )rB   rG   rL   r   )rL   rC   rP   rM   )rA   r?   rH   r   )rI   rS   r   rM   )rC   rC   r>   r   )r-   rP   rE   r   )r   rC   rP   rM   )rM   r   rC   rM   )rH   r   rC   rM   )rE   r<   rG   r   )r   r?   r-   rM   )rH   rD   rE   r   )r   r<   r=   rM   )rJ   rK   rH   r   )rH   rN   rK   r   )r?   r-   rM   r   )rD   rC   rC   rM   )rB   rD   rQ   r   )r?   rI   rJ   r   )rN   rL   r<   r   )$r<   r?   rA   rC   r   rJ   rC   r?   rG   rC   rL   rD   rI   r   rF   rB   rL   rA   rI   rC   rG   r-   r   rM   rH   rE   r   rH   r   rJ   rH   r?   rD   rB   r?   rN   )$r=   r<   r   rM   r@   rK   rA   rH   r   rC   rB   rE   rJ   rB   rE   rG   rC   r?   rS   rC   r   rP   rC   r   r   r<   r?   rD   r<   rK   rN   r-   rC   rD   rI   rL   )$r   rF   rB   r   rC   r   r?   rN   rH   rQ   rG   rI   rK   rO   r-   rL   rP   rH   r   r>   rH   rE   rP   rC   rC   rG   r-   rE   r=   rH   rK   rM   rC   rQ   rJ   r<   )$r   rM   r   rM   rM   r   r   r   r   r   r   rM   r   r   rM   r   rM   r   rM   r   r   r   rM   rM   rM   r   rM   r   rM   r   r   r   rM   r   r   r   )ra   rt   rD   r‘   r   )rb   ru   rƒ   r‰   rM   )rc   rE   rE   r‰   rM   )rc   rP   ru   r   r   )rd   rI   r„   r’   r    )re   rh   r\   r“   rO   )rf   rv   r…   r“   r¡   )rg   rw   r†   r   r   )rg   rw   r‡   rt   r   )rh   rg   rd   rs   rH   )rQ   rg   rd   r”   rA   )ri   rx   rd   r”   r{   )rj   r=   rˆ   r•   r¢   )rj   ry   r‰   r–   rM   )rk   rz   r‰   r—   r   )rk   r   rŠ   r˜   rH   )rl   r{   rC   r™   rA   )rl   r|   rC   rš   r{   )rm   r}   r‹   r›   r¢   )rn   r~   rŒ   rœ   r¢   )ro   r   r�   rœ   r£   )rp   r€   rŽ   rv   rA   )rq   r�   rŽ   r�   rH   )rr   rw   r�   rž   r   )rs   r‚   r�   rŸ   rM   Z
bBhHiIlLqQ)ÚlowÚhighÚsizer	   r
   )r   r   Úrepeatr   r   r	   r   r   Ú
unpackbitsÚrangeZreshapeÚTÚcopyÚrandomÚrandintZiinfoÚminÚmaxr¦   Zastyper   r   r   )r7   r   r	   r   ÚrZrndr   rX   r   Útest_packbits_large4   s  



ôÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý
%
ô
èþr±   c                  C   s>   t ddƒD ]} dD ]}tjd| ftd�}tj|dd� q	qd S )Ni¶  i  r   éÈ   r   r   r   )r©   r   ZonesÚboolr   )Úsr   Úxr   r   r   Útest_packbits_very_largeÖ   s   þÿr¶   c                  C   s^   t jdgdgdggt jd�} t j| dd�}t|jt jƒ t|t  g d¢g d¢g d	¢g¡ƒ d S )
Nr,   r?   é   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r¨   r   r	   r   ©r   r   r   r   r   Útest_unpackbitsß   s   þr¹   c                  C   sÒ   t jdgdgdggt jd�} t j| dd�}t|jt jƒ t j| ddd�}t j| dd	d�}t||ƒ t| t j|ddd�ƒ t|d d …d d d
…f |ƒ t| t j|dd	d�ƒ tt	t j| dd� tt
t j| dd� d S )Nr,   r?   r·   r   r   r   r9   r;   r:   r
   r°   rT   r    )r   r   r   r¨   r   r	   r   r   r   Ú
ValueErrorr   )r   r   Zb_littleZb_bigr   r   r   Útest_pack_unpack_orderè   s   
r»   c                  C   s<   t jdt jd�} t  | ¡}t|jt jƒ t|t  d¡ƒ d S )Nr   r   )r   r(   r   r¨   r   r	   r   r¸   r   r   r   Útest_unpackbits_empty÷   s   
r¼   c               	   C   s®   dgdfg d¢dfg d¢dfg d¢dfg d¢d	fg d
¢dfg d¢dfg d¢dfg} | D ])\}}t |ƒD ] \}}tj|tjd�}tj||d�}t|jtjƒ t|j|ƒ q3q+d S )Nr   ))r,   r\   r   )rZ   r-   r   ©rZ   r\   r   r½   ))r,   r   r\   ©rZ   r   r\   )rZ   r   r-   r¾   )©r   rZ   r\   )r   r,   r\   )r   rZ   r-   r¿   )r.   ©r\   r   r   rÀ   rÀ   )©r   r\   r   r/   rÁ   rÁ   )©r   r   r\   rÂ   r0   rÂ   r1   r'   r   r   )r2   r   r(   r   r¨   r   r	   r)   )r*   Z	in_shapesr5   r4   r3   r   r   r   r   r   Útest_unpackbits_empty_with_axisþ   s"   






ø
üÿrÃ   c               	   C   s¦   t jdt jd�} tt  t  | ¡¡| ƒ tt  t  | d d d… ¡¡| d d d… ƒ t  | d¡} tt jt j| dd�dd�| ƒ | j ¡ } tt jt j| dd�dd�| ƒ d S )Ni  r   r,   )r-   r   r   r   r   )	r   Zaranger   r   r   r¨   Ztilerª   r«   )Údr   r   r   Útest_unpackbits_large  s   *
"rÅ   c                   @   s„  e Zd Zejg d¢g d¢g d¢g d¢g d¢g d¢g d¢gejd�Zejd	ejd�Ze 	¡ ed
d…< ejd	ejd�Z
ed
d
d…  ¡  	¡ e
d
d…< ejdejd�Zeed
d…d
d…f< ej dd¡ej deedƒedddƒƒ¡dd„ ƒƒZej di dd
ig¡dd„ ƒZej dd¡ej deedƒedddƒƒ¡dd„ ƒƒZej di dd
iddidd
dœddidd
dœg¡d d!„ ƒZd"d#„ Zd
S )$Ú	TestCount)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   é9   Né1   r
   )é	   rÉ   r?   r7   r8   Úcounté:   éÇÿÿÿc                 C   s\   |dk r	|d }n|}t j| j|d�}t j|||d�}t|jt jƒ t|| jd |… ƒ d S )Nr   r   rT   )rÊ   r7   ©	r   r   rµ   r¨   r   r	   r   r   Úpadded1)Úselfr7   rÊ   ÚcutoffÚpackedÚunpackedr   r   r   Útest_roundtrip.  s   
zTestCount.test_roundtripÚkwargsc                 C   sD   t  | j¡}t j|fi |¤Ž}t|jt jƒ t|| jd d… ƒ d S )Nr
   rÍ   )rÏ   rÔ   rÑ   rÒ   r   r   r   Ú
test_count<  s   zTestCount.test_countrm   é÷ÿÿÿc                 C   sÆ   |dk r	|d }n|}t j| jd|d�}t j|d||d�}t|jt jƒ t|| jd |…d | jj	d …f ƒ t j| jd|d�}t j|d||d�}t|jt jƒ t|| jd | jj	d …d |…f ƒ d S )Nr   r   r;   )r   rÊ   r7   )
r   r   rµ   r¨   r   r	   r   r   Úpadded2r)   )rÏ   r7   rÊ   rÐ   Úpacked0Ú	unpacked0Úpacked1Ú	unpacked1r   r   r   Útest_roundtrip_axisE  s   

ÿ$
ÿ(zTestCount.test_roundtrip_axisr9   )r7   rÊ   r:   c                 C   sF  t j| jdd�}t j|fddi|¤Ž}t|jt jƒ | dd¡dkr5t|| j	d d…d | jj
d …f ƒ nt|d d d…d d …f | j	d d…d | jj
d …f ƒ t j| jdd�}t j|fddi|¤Ž}t|jt jƒ | dd¡dkr†t|| j	d | jj
d …d d…f ƒ d S t|d d …d d d…f | j	d | jj
d …d d…f ƒ d S )Nr   r   r   r7   r:   r
   r   )r   r   rµ   r¨   r   r	   r   Úgetr   r×   r)   )rÏ   rÔ   rØ   rÙ   rÚ   rÛ   r   r   r   Útest_axis_countZ  s   &6(:zTestCount.test_axis_countc                 C   sj   t j| jdd�}ttt j|ddd� t j| jdd�}ttt j|ddd� t  | j¡}ttt j|dd� d S )Nr   r   rÖ   )r   rÊ   r   rÌ   )rÊ   )r   r   rµ   r   rº   r¨   )rÏ   rØ   rÚ   rÑ   r   r   r   Útest_bad_countr  s   zTestCount.test_bad_count)Ú__name__Ú
__module__Ú__qualname__r   r   r   rµ   ÚzerosrÎ   ZravelZpadded1br«   r×   ÚpytestÚmarkÚparametrizer   r©   rÓ   rÕ   rÜ   rÞ   rß   r   r   r   r   rÆ     sJ    ùø	ÿ
û
rÆ   )Znumpyr   Znumpy.testingr   r   r   rä   Ú	itertoolsr   r   r+   r6   rå   ræ   r±   r¶   r¹   r»   r¼   rÃ   rÅ   rÆ   r   r   r   r   Ú<module>   s"    
 "		