a
    LfD                     @   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 ]R}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   V/var/www/ai-form-bot/venv/lib/python3.9/site-packages/numpy/lib/tests/test_packbits.pytest_packbits   s    &r   c                  C   sR   g d} dD ]@}| D ]6}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 ]Z}| D ]P\}}t |D ]>\}}tj||d}tj||d}t|jtj t|j| qnq^qVd 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rht|| 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 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:g$  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 ]z}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       z'test_packbits_large.<locals>.<listcomp>r      )rM   rM   rM   r@      rB      r[   r   r   r   rQ         r   $      r   r   )         rd         W   S   rh      rQ         rk      rl      rm      (   i   k   K   J   X   )H      rE   rP   rI   ri      Z   rx   rh   rh   w   r=   m   I   r            -   )   h   z   rx      )rD   x   rE   rv      r]   <   4      re   re   re         r      rC   rC               r         )   r   r   r   D      r   r   ru   rt   \   r   N   n   '                  r   rw            )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   )rb   ru   rD   r   r   )rc   rv   r   r   rM   )rd   rE   rE   r   rM   )rd   rP   rv   r   r   )re   rI   r   r   r   )rf   ri   r]   r   rO   )rg   rw   r   r   r   )rh   rx   r   r   r   )rh   rx   r   ru   r   )ri   rh   re   rt   rH   )rQ   rh   re   r   rA   )rj   ry   re   r   r|   )rk   r=   r   r   r   )rk   rz   r   r   rM   )rl   r{   r   r   r   )rl   r   r   r   rH   )rm   r|   rC   r   rA   )rm   r}   rC   r   r|   )rn   r~   r   r   r   )ro   r   r   r   r   )rp   r   r   r   r   )rq   r   r   rw   rA   )rr   r   r   r   rH   )rs   rx   r   r   r   )rt   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 ]R\}}t |D ]@\}}tj|tjd}tj||d}t|jtj t|j| qfqVd 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   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   N1   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_countrn   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rjt|| j	d dd | jj
d f  n6t|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  n6t|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   Zzerosr   ZravelZpadded1br   r   pytestmarkparametrizer   r   r   r   r   r   r   r   r   r   r   r     sH   	

r   )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    
 "		