U
    ÂmœdZ$  ã                   @   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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$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   úT/home/sam/Atlas/atlas_env/lib/python3.8/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                    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>8   s     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+   r/   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   )r0   r   r    r!   )r2   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>I   s    z$quantity_converter.<locals>.<lambda>)r8   ZConversionInterfacer   r3   Úaxisinfor4   )Zqcr3   r4   r   r   r   Úquantity_converter-   s    	r=   zplot_pint.pngZmpl20Úx86_64g{®Gáz„?)Ú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sªt‚| jjs¶t‚| jjsÂt‚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rcParamsr8   Úregistryr	   r    ÚlinspaceÚsubplotsZsubplots_adjustÚplotÚaxhlineÚaxvlineÚyaxisÚ	set_unitsÚxaxisr3   ÚcalledÚAssertionErrorr<   r4   )r=   ÚyÚxÚfigÚaxr   r   r   Útest_numpy_facadeQ   s    

rX   zplot_masked_units.pngT)Zremove_textr?   r@   c                  C   sL   t  dd¡} t jj| | dk| dk @ d�}t|dƒ}t ¡ \}}| |¡ d S )NéûÿÿÿrC   éþÿÿÿé   )ÚmaskÚmeters)r    rJ   ÚmaÚarrayr	   rH   rK   rL   )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 )Néÿÿÿÿr]   é   r   é   )r8   rI   r	   rH   rK   Úset_xlimÚset_ylim)r=   rV   rW   r   r   r   Ú test_empty_set_limits_with_unitsw   s    
rf   zjpl_bar_units.pngZdpirG   )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   çj¼t“ð?)Úmatplotlib.testing.jpl_unitsÚtestingÚ	jpl_unitsÚregisterÚDurationÚkmÚEpochr   rH   rK   Ú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   rD   ra   rq   )rr   rs   rt   ru   rv   rw   rx   r   rH   rK   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)rH   Ú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ÚnanrH   rK   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 )éä  rC   r[   ri   )r   ©r)   Úir   r   r   r,   ¯   s     z-test_errorbar_mixed_units.<locals>.<listcomp>g      à?)Údays)r    rƒ   rH   rK   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   rK   rL   )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 t
‚|j 	¡ |j 	¡   kr¾dksÄn t
‚|j d¡ |j d¡ |j 	¡ |j 	¡   krþdk�sn t
‚|j 	¡ |j 	¡   k�r(dk�s.n t
‚d S )Nr   ri   r‹   r   r[   r   rj   rl   Úall©ZsharexÚshareyr   r   )r8   rI   r	   r    rJ   rH   rK   rL   rQ   r-   rS   rO   rP   )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s„t	‚d S )Nc                 S   s   g | ]}t d |dtjd�‘qS )rŒ   ri   ©Útzinfo©r   r   Úutcr�   r   r   r   r,   Ð   s     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,   Ñ   s     r[   T)r—   rC   )r   )
ÚrangerH   rK   rL   rO   rP   r   r   r   rS   )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	 ¡ ks‚t
‚d S )
Nri   r[   )r:   r}   rj   rl   Tr–   ÚcÚd)rH   rK   rL   ÚkeysÚvaluesrQ   rP   r   r-   Ú_mappingrS   )Zd1Z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sBt	‚|j
 tdgdƒ¡ | ¡  | ¡ dksnt	‚t ¡ \}}| d¡ | tt dd¡dƒtt ddd¡d	ƒ¡ | ¡  | ¡ d
ksÆt	‚| ¡ dksÖt	‚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�s†t	‚| ¡ dk�s˜t	‚t ¡ \}}|j
 tdgdƒ¡ | d¡ | ¡  | ¡ dk�sÜt	‚| ¡ dk�sît	‚d S )Nr‹   r   r5   rB   r   rj   rb   r[   r   )r   r[   )r   rB   )r   rl   )g     €<@g     €?@)r8   rI   r	   rH   rK   rQ   Zupdate_unitsZdraw_without_renderingZget_xlimrS   rO   Zget_ylimrM   rL   r    rƒ   rN   )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 dddddgƒ} t | ¡ d S )Nri   r[   rj   rl   rC   )r«   rH   rL   )Zkernelr   r   r   Útest_plot_kernel  s    r¯   )'r   r   r   ÚplatformZunittest.mockr   Zmatplotlib.pyplotZpyplotrH   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.unitsr   r8   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>   sR   
#ÿ

ÿ
		 ÿ
 ÿ
	

*