a
    s=icZ$                     @   s  d dl m Z mZmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlZd dlZG dd dZejdd	 Zed
gde dkrd ndddd Zedgdde dkrd ndddd Zdd Zedgddidddd Zedgddidddd  Zd!d" Zd#d$ Zd%d& Ze
d'gd(d)d* Z d+d, Z!d-d. Z"d/d0 Z#d1d2 Z$G d3d4 d4Z%d5d6 Z&dS )7    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)UnitDatac                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Quantityc                 C   s   || _ || _d S N)	magnitudeunits)selfdatar    r   l/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_units.py__init__   s    zQuantity.__init__c                 C   sL   ddddddd}| j |kr:|| j |f }t|| j |S t| j| j S d S )Ni  g?<   g0(?   i  ))hoursseconds)minutesr   )r   r   )feetmiles)r   inches)r   r   )r   r	   r   )r   Z	new_unitsZfactorsZmultr   r   r   to   s    
zQuantity.toc                 C   s   t | j| jS r
   )r	   r   r   r   r   r   r   __copy__   s    zQuantity.__copy__c                 C   s   t | j|S r
   )getattrr   )r   attrr   r   r   __getattr__    s    zQuantity.__getattr__c                 C   s0   t | jrt| j| | jS t| j| jS d S r
   )npiterabler   r	   r   )r   itemr   r   r   __getitem__#   s    zQuantity.__getitem__c                 C   s   t | jS r
   )r    Zasarrayr   r   r   r   r   	__array__)   s    zQuantity.__array__N)	__name__
__module____qualname__r   r   r   r   r#   r$   r   r   r   r   r	      s   
r	   c                  C   sD   t  } dd }dd }t|d| _tdd d| _t|d| _| S )Nc                    sx   t | dr| jS t| r^zfdd| D W S  tyZ    fdd| D  Y S 0 nt|   jS d S )Nr   c                    s   g | ]}|  jqS r   )r   r   .0v)unitr   r   
<listcomp>8       z7quantity_converter.<locals>.convert.<locals>.<listcomp>c                    s"   g | ]}t |  jqS r   )r	   	get_unitsr   r   r(   axisr+   r   r   r,   :   s   )hasattrr   r   r    r!   AttributeErrorr	   r.   )valuer+   r0   r   r/   r   convert3   s    

z#quantity_converter.<locals>.convertc                 S   s@   t | dr| jS t| r<| D ]}t |dr|j  S qd S d S )Nr   )r1   r   r    r!   )r3   r0   r*   r   r   r   default_units?   s    


z)quantity_converter.<locals>.default_units)Zside_effectc                 S   s   t j| ddS )Nr   d   )labelZdefault_limits)munitsZAxisInfo)uar   r   r   <lambda>I   s    z$quantity_converter.<locals>.<lambda>)r9   ZConversionInterfacer   r4   axisinfor5   )Zqcr4   r5   r   r   r   quantity_converter-   s    	r>   zplot_pint.pngZmpl20x86_64g{Gz?)styletolc                 C   s   dt jd< | tjt< ttddd}ttddd}t  \}}|jdd	 |	||d
 |j
tdddd |jtdddd |jd |jd | jjsJ | jjsJ | jjsJ d S )N)i   zaxes.formatter.limitsr      r      r   g333333?leftztab:bluei g  r   ztab:red)colorx   r   z	tab:greenr   r   )pltZrcParamsr9   registryr	   r    linspacesubplotsZsubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisr4   calledr=   r5   )r>   yxfigaxr   r   r   test_numpy_facadeQ   s    

rX   zplot_masked_units.pngT)Zremove_textr@   rA   c                  C   sL   t dd} t jj| | dk| dk @ d}t|d}t \}}|| d S )NrD      )maskmeters)r    rK   maarrayr	   rI   rL   rM   )r   Zdata_maskedZdata_masked_unitsrV   rW   r   r   r   test_plot_masked_unitsl   s
    
r`   c                 C   sJ   | t jt< t \}}|tddtdd |tddtdd d S )Nr]      r      )r9   rJ   r	   rI   rL   set_xlimset_ylim)r>   rV   rW   r   r   r    test_empty_set_limits_with_unitsw   s    
rf   zjpl_bar_units.pngZdpirH   )Zsavefig_kwargr@   c                  C   s   dd l m  m}  |   | dd}d| j d| j d| j g}d| d| d| g}| jdtddd	d
}t	 \}}|j
|||d ||d|  ||d  d|  g d S )Nr   ET     @   r[              dt)bottomra   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   rI   rL   barre   r   dayrU   wbrV   rW   r   r   r   test_jpl_bar_units   s    r~   zjpl_barh_units.pngc                  C   s   dd l m  m}  |   | dd}d| j d| j d| j g}d| d| d| g}| jdtddd	d
}t	 \}}|j
|||d ||d|  ||d  d|  g d S )Nr   rg   rh   ri   r[   rj   rk   rl   rm   rn   rE   ra   rq   )rr   rs   rt   ru   rv   rw   rx   r   rI   rL   Zbarhrd   rz   r   r   r   test_jpl_barh_units   s    r   c                   C   s    t tjg ddtg  d S )Nzdatetime64[ns]Zdtype)rI   scatterr    r_   r   r   r   r   test_empty_arrays   s    r   c                  C   sR   t jdddd} t jt| td}t j|d< t \}}|| | |j	  d S )Nz2005-02z2005-03zdatetime64[D]r   r   )
r    arangelenfloatnanrI   rL   r   canvasdraw)timesrT   rV   rW   r   r   r   test_scatter_element0_masked   s    
r   c                  C   sF   t d} dd | D }t \}}|| |tdd |j  d S )N
   c                 S   s    g | ]}t d d|d d qS )  rD   r[   ri   )r   r)   ir   r   r   r,      r-   z-test_errorbar_mixed_units.<locals>.<listcomp>g      ?)days)r    r   rI   rL   Zerrorbarr   r   r   )rU   rT   rV   rW   r   r   r   test_errorbar_mixed_units   s
    
r   Zpng)
extensionsc                 C   sH   G dd dt }|  |ddddd | t ddddd d S )Nc                   @   s   e Zd ZdS )ztest_subclass.<locals>.subdateN)r%   r&   r'   r   r   r   r   subdate   s   r   i  ri   r   o)r   rL   rM   )Zfig_testZfig_refr   r   r   r   test_subclass   s    r   c                 C   s2  | t jt< ttdddd}ttdddd}ttdddd}tjddd	d	d
\}\}}||| ||| |j	 |j	   krdksn J |j
	 |j
	   krdksn J |jd |j
d |j	 |j	   krdksn J |j
	 |j
	   kr(dks.n J d S )Nr   ri   r   r   r[   r   rj   rl   allZsharexshareyr   r   )r9   rJ   r	   r    rK   rI   rL   rM   rR   r.   rP   rQ   )r>   rU   y1y2rV   ax1ax2r   r   r   test_shared_axis_quantity   s    
&&(r   c                  C   s   dd t ddD } dd t ddD }tjdddd\}\}}||  || |jttd	d
 |jjttd	d
ksJ d S )Nc                 S   s   g | ]}t d |dtjdqS )r   ri   tzinfor   r   utcr   r   r   r   r,      r-   z-test_shared_axis_datetime.<locals>.<listcomp>ri      c                 S   s   g | ]}t d |dtjdqS )i  ri   r   r   r   r   r   r   r,      r-   r[   T)r   rD   )r   )	rangerI   rL   rM   rP   rQ   r   r   r   )r   r   rV   r   r   r   r   r   test_shared_axis_datetime   s    

r   c                  C   s   ddd} ddd}t jddddd\}\}}||  |   || |  |jtdd	g d|j j	 v sJ d S )
Nri   r[   )r;   r}   rj   rl   Tr   cd)
rI   rL   rM   keysvaluesrR   rQ   r   r.   _mapping)d1d2rV   r   r   r   r   r   test_shared_axis_categorical   s    

r   c              	   C   s  | t jt< t \}}|jtdgd |  | dksBJ |j	tdgd |  |
 dksnJ t \}}|d |ttdddttdddd	 |  | d
ksJ |
 dksJ t \}}|d |ttdddttdddd	 |  | dks0J |
 dksBJ t \}}|jtdgd |d |  | dksJ |
 dksJ t \}}|j	tdgd |d |  |
 dksJ | dksJ d S )Nr   r   r6   rC   r   rj   rb   r[   r   )r   r[   )r   rC   )r   rl   )g     <@g     ?@)r9   rJ   r	   rI   rL   rR   Zupdate_unitsZdraw_without_renderingZget_xlimrP   Zget_ylimrN   rM   r    r   rO   )r>   rV   r   rW   r   r   r   test_empty_default_limits   sH    




r   c                   @   s(   e Zd Zdd Zdd Zedd ZdS )Kernelc                 C   s   t || _d S r
   )r    Z
asanyarray_array)r   r_   r   r   r   r     s    zKernel.__init__c                 C   s   | j S r
   )r   r   r   r   r   r$     s    zKernel.__array__c                 C   s   | j jS r
   )r   shaper   r   r   r   r     s    zKernel.shapeN)r%   r&   r'   r   r$   propertyr   r   r   r   r   r     s   r   c                  C   s   t g d} t|  d S )N)ri   r[   rj   rl   rD   )r   rI   rM   )Zkernelr   r   r   test_plot_kernel  s    r   )'r   r   r   platformZunittest.mockr   Zmatplotlib.pyplotZpyplotrI   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.unitsr   r9   Zmatplotlib.categoryr   numpyr    Zpytestr	   Zfixturer>   machinerX   r`   rf   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sN   
#


		

	

*