B
    Jd $                 @   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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               @   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   M/var/www/html/venv/lib/python3.7/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|S )N)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 )N)npiterabler
   r	   r   )r   itemr   r   r   __getitem__    s    zQuantity.__getitem__c             C   s   t | jS )N)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                st   t | dr| jS t| rZyfdd| D S  tk
rV    fdd| D 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%   r&   )axisr'   r   r   r(   7   s   )hasattrr   r
   r   r   AttributeErrorr	   r)   )valuer'   r*   r   )r*   r'   r   convert0   s    

z#quantity_converter.<locals>.convertc             S   s@   t | dr| jS t| r<x| D ]}t |dr |jS q W d S d S )Nr   )r+   r   r   r   )r-   r*   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>F   s    z$quantity_converter.<locals>.<lambda>)r2   ZConversionInterfacer   r.   axisinfor/   )Zqcr.   r/   r   r   r   quantity_converter*   s    	r7   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rcParamsr2   registryr	   r   linspacesubplotsZsubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisr.   calledAssertionErrorr6   r/   )r7   yxfigaxr   r   r   test_numpy_facadeN   s    

rP   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   rB   maarrayr	   r@   rC   rD   )r   Zdata_maskedZdata_masked_unitsrN   rO   r   r   r   test_plot_masked_unitsi   s
    
rX   c             C   sJ   | t jt< t \}}|tddtdd |tddtdd d S )NrU      r      )r2   rA   r	   r@   rC   set_xlimset_ylim)r7   rN   rO   r   r   r    test_empty_set_limits_with_unitst   s    
r^   zjpl_bar_units.pngZdpir?   )Zsavefig_kwargr9   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   ETg     @   rS      i        )dt)bottomrY   gjt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   r@   rC   barr]   )r   dayrM   wbrN   rO   r   r   r   test_jpl_bar_units}   s    rq   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   r_   g     @r`   rS   ra   i  rb   rc   )rd   )r=   rY   gjt?)rf   rg   rh   ri   rj   rk   rl   r   r@   rC   Zbarhr\   )r   rn   rM   ro   rp   rN   rO   r   r   r   test_jpl_barh_units   s    rr   c               C   s    t tjg ddtg  d S )Nzdatetime64[ns])dtype)r@   scatterr   rW   r   r   r   r   test_empty_arrays   s    ru   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])rs   r   )
r   arangelenfloatnanr@   rC   rt   canvasdraw)timesrL   rN   rO   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 )i  r<   rS   r`   )r   )r%   ir   r   r   r(      s    z-test_errorbar_mixed_units.<locals>.<listcomp>g      ?)days)r   rv   r@   rC   Zerrorbarr   rz   r{   )rM   rL   rN   rO   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  r`   r   o)r   rC   rD   )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   r`   r~   r   rS   r   ra   rb   all)sharexshareyr   r   )r2   rA   r	   r   rB   r@   rC   rD   rI   r)   rK   rG   rH   )r7   rM   y1y2rN   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  r`   )tzinfo)r   r   utc)r%   r   r   r   r   r(      s    z-test_shared_axis_datetime.<locals>.<listcomp>r`      c             S   s   g | ]}t d |dtjdqS )i  r`   )r   )r   r   r   )r%   r   r   r   r   r(      s    rS   T)r   r<   )r   )
ranger@   rC   rD   rG   rH   r   r   r   rK   )r   r   rN   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 )
Nr`   rS   )r4   rp   ra   rb   T)r   r   cd)r@   rC   rD   keysvaluesrI   rH   r   r)   _mappingrK   )Zd1Zd2rN   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sBt	|j
tdgd |  | dksnt	t \}}|d |ttdddttdddd	 |  | d
kst	| dkst	t \}}|d |ttdddttdddd	 |  | dks0t	| dksBt	t \}}|jtdgd |d |  | dkst	| dkst	t \}}|j
tdgd |d |  | dkst	| dkst	d S )Nr~   r   )r   r0   r;   r   ra   rZ   rS   r   )r   rS   )r   r;   )r   rb   )g     <@g     ?@)r2   rA   r	   r@   rC   rI   Zupdate_unitsZdraw_without_renderingZget_xlimrK   rG   Zget_ylimrE   rD   r   rv   rF   )r7   rN   r   rO   r   r   r   test_empty_default_limits   sD    




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 )N)r   Z
asanyarray_array)r   rW   r   r   r   r     s    zKernel.__init__c             C   s   | j S )N)r   )r   r   r   r   r!     s    zKernel.__array__c             C   s   | j jS )N)r   shape)r   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 dddddg} t|  d S )Nr`   rS   ra   rb   r<   )r   r@   rD   )Zkernelr   r   r   test_plot_kernel  s    r   )'r   r   r   platformZunittest.mockr   Zmatplotlib.pyplotZpyplotr@   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.unitsr   r2   Zmatplotlib.categoryr   numpyr   Zpytestr	   Zfixturer7   machinerP   rX   r^   rq   rr   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:   $
 
 
			*