U
    \	a                     @   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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e
d%gd&d'd( Zd)d* Z d+d, Z!d-d. Z"dS )/    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)UnitDatac                   @   s4   e Z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   ?/tmp/pip-unpacked-wheel-wjyw_3jo/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|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	      s
   
r	   c                  C   sD   t  } dd }dd }t|d| _tdd d| _t|d| _| S )Nc                    sz   t | dr| jS t| r`zfdd| D W S  tk
r\    fdd| D  Y S X nt|   jS d S )Nr   c                    s   g | ]}|  jqS r   )r   r   .0v)unitr   r   
<listcomp>5   s     z7quantity_converter.<locals>.convert.<locals>.<listcomp>c                    s"   g | ]}t |  jqS r   )r	   	get_unitsr   r   r&   axisr)   r   r   r*   7   s   )hasattrr   r   r   r   AttributeErrorr	   r+   )valuer)   r-   r   r,   r   convert0   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   )r.   r   r   r   )r0   r-   r(   r   r   r   default_units<   s    


z)quantity_converter.<locals>.default_units)Zside_effectc                 S   s   t j| dS )N)label)munitsZAxisInfo)uar   r   r   <lambda>F       z$quantity_converter.<locals>.<lambda>)r4   ZConversionInterfacer   r1   axisinfor2   )Zqcr1   r2   r   r   r   quantity_converter*   s    	r:   zplot_pint.pngFZmpl20x86_64g{Gz?)Zremove_textstyleZ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st| jjst| jjst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rcParamsr4   registryr	   r   linspacesubplotsZsubplots_adjustplotZaxhlineZaxvlineyaxis	set_unitsxaxisr1   calledAssertionErrorr9   r2   )r:   yxfigaxr   r   r   test_numpy_facadeM   s    

rR   zplot_masked_units.pngTc                  C   sL   t dd} t jj| | dk| dk @ d}t|d}t \}}|| d S )Nr?      )maskmeters)r   rF   maarrayr	   rD   rG   rH   )r   Zdata_maskedZdata_masked_unitsrP   rQ   r   r   r   test_plot_masked_unitsh   s
    
rZ   c                 C   sJ   | t jt< t \}}|tddtdd |tddtdd d S )NrW      r      )r4   rE   r	   rD   rG   set_xlimset_ylim)r:   rP   rQ   r   r   r    test_empty_set_limits_with_unitss   s    
r`   zjpl_bar_units.pngZdpirC   )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     @   rU              dt)Zbottomr[   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   rD   rG   barr_   r   dayrO   wbrP   rQ   r   r   r   test_jpl_bar_units|   s    rw   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   ra   rb   rc   rU   rd   re   rf   rg   rh   r@   r[   rj   )rk   rl   rm   rn   ro   rp   rq   r   rD   rG   Zbarhr^   rs   r   r   r   test_jpl_barh_units   s    rx   c                   C   s    t tjg ddtg  d S )Nzdatetime64[ns]Zdtype)rD   scatterr   rY   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]ry   r   )
r   ZarangelenfloatnanrD   rG   rz   ZcanvasZdraw)timesrN   rP   rQ   r   r   r   test_scatter_element0_masked   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  rc   r   o)r   rG   rH   )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 t
|j	 |j	   krdksn t
|jd |jd |j	 |j	   krdksn t
|j	 |j	   kr(dks.n t
d S )Nr   rc   
   r   rU   r   rd   rf   allZsharexshareyr   r   )r4   rE   r	   r   rF   rD   rG   rH   rK   r+   rM   rI   rJ   )r:   rO   y1y2rP   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st	d S )Nc                 S   s   g | ]}t d |dtjdqS )i  rc   tzinfor   r   utcr'   ir   r   r   r*      s     z-test_shared_axis_datetime.<locals>.<listcomp>rc      c                 S   s   g | ]}t d |dtjdqS )i  rc   r   r   r   r   r   r   r*      s     rU   T)r   r?   )r   )
rangerD   rG   rH   rI   rJ   r   r   r   rM   )r   r   rP   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	 kst
d S )
Nrc   rU   )r6   rv   rd   rf   Tr   cd)rD   rG   rH   keysvaluesrK   rJ   r   r+   _mappingrM   )d1Zd2rP   r   r   r   r   r   test_shared_axis_categorical   s    

r   )#r   r   r   platformZunittest.mockr   Zmatplotlib.pyplotZpyplotrD   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.unitsr   r4   Zmatplotlib.categoryr   Znumpyr   Zpytestr	   Zfixturer:   machinerR   rZ   r`   rw   rx   r{   r   r   r   r   r   r   r   r   r   <module>   sJ   
"



		 
 
	

