o
    hD                     @   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   q/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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_shape
out_shapesax	out_shaper   r   r   r   r   test_packbits_empty_with_axis    s&   







r7   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	 | qt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   r8   )q      r   r-         r=   r   r@         r      r      r=   q      r-   rD   r   rC      r   rC   ~   r      r>   rD         r@   rA   rK   ?   rC   rH   8   rJ   rB   r   rJ      rL   rI      rM   r=   p   rM   rD      rF   r-   rB   rM   rI   rP   rL   rD   rD      rI   rO   r   rA      r   r-   rD   rR   r   r   rD   rI   r   rD   r=   rH   rL   r   r   r   r=   rO   rL   r   rG   rR   r=   rE   rD   r-   rN   rM   r=   rO   r@   r   rE   rD   rD   rK   rM   rJ      rF   rJ   rT   rR   rA   rN   r;   r8   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      )rN   rN   rN   rA      rC      r[   r   r   r   rR         r   $      r   r   )         rd         W   S   rh      rR         rk      rl      rm      (   i   k   K   J   X   )H      rF   rQ   rJ   ri      Z   rx   rh   rh   w   r>   m   I   r            -   )   h   z   rx      )rE   x   rF   rv      r]   <   4      re   re   re         r      rD   rD               r         )   r   r   r   D      r   r   ru   rt   \   r   N   n   '                  r   rw            )r   rN   rN   r   P   rP   0   r   r   rI   rB   r|      rN   r   rI   rB   r|   r   r      rB   rI   r   rN   )r=   r>   r   r   )r@   r=   rG   rN   )rB   r   rC   r   )rD   rN   r   rN   )r   rA   rD   rN   )rK   rL   r   r   )rD   rB   r@   r   )r@   rI   rO   r   )rH   r   rI   r   )rD   rD   rR   r   )rM   rC   rH   r   )rE   rF   rJ   rN   )rJ   rK   rL   r   )r   rC   rP   r   )rG   rF   r-   rN   )rC   rH   rM   r   )rM   rD   rQ   rN   )rB   r@   rI   r   )rJ   rT   r   rN   )rD   rD   r?   r   )r-   rQ   rF   r   )r   rD   rQ   rN   )rN   r   rD   rN   )rI   r   rD   rN   )rF   r=   rH   r   )r   r@   r-   rN   )rI   rE   rF   r   )r   r=   r>   rN   )rK   rL   rI   r   )rI   rO   rL   r   )r@   r-   rN   r   )rE   rD   rD   rN   )rC   rE   rR   r   )r@   rJ   rK   r   )rO   rM   r=   r   )$r=   r@   rB   rD   r   rK   rD   r@   rH   rD   rM   rE   rJ   r   rG   rC   rM   rB   rJ   rD   rH   r-   r   rN   rI   rF   r   rI   r   rK   rI   r@   rE   rC   r@   rO   )$r>   r=   r   rN   rA   rL   rB   rI   r   rD   rC   rF   rK   rC   rF   rH   rD   r@   rT   rD   r   rQ   rD   r   r   r=   r@   rE   r=   rL   rO   r-   rD   rE   rJ   rM   )$r   rG   rC   r   rD   r   r@   rO   rI   rR   rH   rJ   rL   rP   r-   rM   rQ   rI   r   r?   rI   rF   rQ   rD   rD   rH   r-   rF   r>   rI   rL   rN   rD   rR   rK   r=   )$r   rN   r   rN   rN   r   r   r   r   r   r   rN   r   r   rN   r   rN   r   rN   r   r   r   rN   rN   rN   r   rN   r   rN   r   r   r   rN   r   r   r   )rb   ru   rE   r   r   )rc   rv   r   r   rN   )rd   rF   rF   r   rN   )rd   rQ   rv   r   r   )re   rJ   r   r   r   )rf   ri   r]   r   rP   )rg   rw   r   r   r   )rh   rx   r   r   r   )rh   rx   r   ru   r   )ri   rh   re   rt   rI   )rR   rh   re   r   rB   )rj   ry   re   r   r|   )rk   r>   r   r   r   )rk   rz   r   r   rN   )rl   r{   r   r   r   )rl   r   r   r   rI   )rm   r|   rD   r   rB   )rm   r}   rD   r   r|   )rn   r~   r   r   r   )ro   r   r   r   r   )rp   r   r   r   r   )rq   r   r   rw   rB   )rr   r   r   r   rI   )rs   rx   r   r   r   )rt   r   r   r   rN   
bBhHiIlLqQ)lowhighsizer	   r
   )r   r   repeatr   r   r	   r   r   
unpackbitsrangereshapeTcopyrandomrandintiinfominmaxr   astyper   r   r   )r8   r   r	   r   rrndr   rY   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   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   r:   r<   r;   r
   r   rU   r    )r   r   r   r   r   r	   r   r   r   
ValueErrorr   )r   r   b_little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   )r[   r-   r   r[   r]   r   r   ))r,   r   r]   r[   r   r]   )r[   r   r-   r   )r   r[   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*   	in_shapesr6   r5   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   aranger   r   r   r   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@   r8   r9   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   rU   )r   r8   	r   r   r   r   r   r	   r   r   padded1)selfr8   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   r8   )
r   r   r   r   r   r	   r   r   padded2r)   )r   r8   r   r   packed0	unpacked0packed1	unpacked1r   r   r   test_roundtrip_axisE  s   

$
(zTestCount.test_roundtrip_axisr:   )r8   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rt|| 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   r8   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   ravelpadded1br   r   pytestmarkparametrizer   r   r   r   r   r   r   r   r   r   r   r     sJ    	

r   )numpyr   numpy.testingr   r   r   r   	itertoolsr   r   r+   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s"    
 "		