a
    ëÝEbº"  ã                   @   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r¢d ndd�dd„ ƒZedgdde ¡ dkrÌd 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   ú[/home/ja/django-apps/lartica_env/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{®Gáz„?)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sªJ ‚| jjs¶J ‚| jjsÂJ ‚d S )N)iùÿÿÿé   zaxes.formatter.limitsr   é   r   é   r   g333333Ã?©Úleftztab:bluei g  r   ztab:red)Úcoloréx   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 )NéûÿÿÿrA   éþÿÿÿé   )Ú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 )NéÿÿÿÿrZ   é   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)Úbottomr^   çj¼t“ð?)Ú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    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   rd   re   rf   rX   rg   rh   ri   rj   rk   rB   r^   rn   )ro   rp   rq   rr   rs   rt   ru   r   rF   rI   Zbarhra   rw   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r˜dksžn J ‚|j
 	¡ |j
 	¡   kr¾dksÄn J ‚|j d¡ |j
 d¡ |j 	¡ |j 	¡   krþd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s„J ‚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 s‚J ‚d S )
Nrf   rX   )r9   rz   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sÆJ ‚| 
¡ dksÖJ ‚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�s†J ‚| 
¡ dk�s˜J ‚t ¡ \}}|j	 tdgdƒ¡ | d¡ | ¡  | 
¡ dk�sÜJ ‚| ¡ dk�sîJ ‚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   Únumpyr   Zpytestr	   Zfixturer<   ÚmachinerU   r]   rc   r{   r|   r   r‡   r�   r‘   r™   r    r¦   r§   r   r   r   r   Ú<module>   sJ   
#
ÿ

ÿ
		ÿ
ÿ
	

