a
    ضa"                     @   sl  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$dS )3    )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   k/Users/vegardjervell/Documents/master/model/venv/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|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                    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>5       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   )r1   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>)r7   ZConversionInterfacer   r2   axisinfor3   )Zqcr2   r3   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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rcParamsr7   registryr	   r   linspacesubplotsZsubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisr2   calledr;   r3   )r<   yxfigaxr   r   r   test_numpy_facadeN   s    

rU   zplot_masked_units.pngTc                  C   sL   t dd} t jj| | dk| dk @ d}t|d}t \}}|| d S )NrA      )maskmeters)r   rH   maarrayr	   rF   rI   rJ   )r   Zdata_maskedZdata_masked_unitsrS   rT   r   r   r   test_plot_masked_unitsi   s
    
r]   c                 C   sJ   | t jt< t \}}|tddtdd |tddtdd d S )NrZ      r      )r7   rG   r	   rF   rI   set_xlimset_ylim)r<   rS   rT   r   r   r    test_empty_set_limits_with_unitst   s    
rc   zjpl_bar_units.pngZdpirE   )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     @   rX              dt)Zbottomr^   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   rF   rI   barrb   r   dayrR   wbrS   rT   r   r   r   test_jpl_bar_units}   s    rz   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   rd   re   rf   rX   rg   rh   ri   rj   rk   rB   r^   rm   )rn   ro   rp   rq   rr   rs   rt   r   rF   rI   Zbarhra   rv   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)rF   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nanrF   rI   r}   canvasdraw)timesrQ   rS   rT   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 )  rA   rX   rf   )r   r'   ir   r   r   r*      r+   z-test_errorbar_mixed_units.<locals>.<listcomp>g      ?)days)r   r   rF   rI   Zerrorbarr   r   r   )rR   rQ   rS   rT   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  rf   r   o)r   rI   rJ   )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   rf   r   r   rX   r   rg   ri   allZsharexshareyr   r   )r7   rG   r	   r   rH   rF   rI   rJ   rO   r,   rM   rN   )r<   rR   y1y2rS   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   rf   tzinfor   r   utcr   r   r   r   r*      r+   z-test_shared_axis_datetime.<locals>.<listcomp>rf      c                 S   s   g | ]}t d |dtjdqS )i  rf   r   r   r   r   r   r   r*      r+   rX   T)r   rA   )r   )	rangerF   rI   rJ   rM   rN   r   r   r   )r   r   rS   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 )
Nrf   rX   )r9   ry   rg   ri   Tr   cd)
rF   rI   rJ   keysvaluesrO   rN   r   r,   _mapping)Zd1Zd2rS   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   r4   r@   r   rg   r_   rX   r   )r   rX   )r   r@   )r   ri   )g     <@g     ?@)r7   rG   r	   rF   rI   rO   Zupdate_unitsZdraw_without_renderingZget_xlimrM   Zget_ylimrK   rJ   r   r   rL   )r<   rS   r   rT   r   r   r   test_empty_default_limits   sH    




r   )%r   r   r   platformZunittest.mockr   Zmatplotlib.pyplotZpyplotrF   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.unitsr   r7   Zmatplotlib.categoryr   Znumpyr   Zpytestr	   Zfixturer<   machinerU   r]   rc   rz   r{   r~   r   r   r   r   r   r   r   r   r   r   r   <module>   sJ   
#



		

	

