o
    j-                     @   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mZ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rsd 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%d)d* Z&e
d+gd,d-d. Z'd/d0 Z(d1d2 Z)d3d4 Z*d5d6 Z+d7d8 Z,G d9d: d:Z-d;d< Z.d=d> Z/dS )?    )datetimetimezone	timedeltaN)	MagicMock)check_figures_equalimage_comparison)StrCategoryConverterUnitData)DateConverterc                   @   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   \/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_units.py__init__   s   
zQuantity.__init__c                 C   sH   ddddddd}| j |kr|| j |f }t|| j |S t| j| j 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__      zQuantity.__copy__c                 C   s   t | j|S r   )getattrr   )r   attrr   r   r   __getattr__"      zQuantity.__getattr__c                 C   s,   t | jrt| j| | jS t| j| jS r   )npiterabler   r   r   )r   itemr   r   r   __getitem__%   s   zQuantity.__getitem__c                 C   s   t | jS r   )r$   asarrayr   r   r   r   r   	__array__+   r#   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                    sr   t | dr| jS t| r.z
fdd| D W S  ty-    fdd| D  Y S w t|   jS )Nr   c                    s   g | ]}|  jqS r   )r   r   .0v)unitr   r   
<listcomp>:   s    z7quantity_converter.<locals>.convert.<locals>.<listcomp>c                    s"   g | ]}t |  jqS r   )r   	get_unitsr   r   r-   axisr0   r   r   r1   <   s    )hasattrr   r   r$   r%   AttributeErrorr   r2   )valuer0   r4   r   r3   r   convert5   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   )r5   r   r$   r%   )r7   r4   r/   r   r   r   default_unitsA   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>K   r   z$quantity_converter.<locals>.<lambda>)r=   ZConversionInterfacer   r8   axisinfor9   )Zqcr8   r9   r   r   r   quantity_converter/   s   	rB   zplot_pint.pngZmpl20x86_64gQ?)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sUJ | jjs[J | jjsaJ 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rcParamsr=   registryr   r$   linspacesubplotsZsubplots_adjustplotaxhlineaxvlineyaxis	set_unitsxaxisr8   ZcalledrA   r9   )rB   yxfigaxr   r   r   test_numpy_facadeS   s   

r[   zplot_masked_units.pngTg{Gz?)Zremove_textrD   rE   c                  C   sL   t dd} t jj| | dk| dk @ d}t|d}t \}}|| d S )NrH      )maskmeters)r$   rO   maarrayr   rM   rP   rQ   )r   Zdata_maskedZdata_masked_unitsrY   rZ   r   r   r   test_plot_masked_unitsn   s
   
rc   c                 C   sJ   | t jt< t \}}|tddtdd |tddtdd d S )Nr`      r      )r=   rN   r   rM   rP   set_xlimset_ylim)rB   rY   rZ   r   r   r    test_empty_set_limits_with_unitsy   s   
ri   zjpl_bar_units.pngZdpirL   )Zsavefig_kwargrD   c                  C      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)bottomrd   jt?)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterDurationkmEpochr   rM   rP   barrh   r   dayrX   wbrY   rZ   r   r   r   test_jpl_bar_units   s   *r   zjpl_barh_units.pngc                  C   rj   )Nr   rk   rl   rm   r^   rn   ro   rp   rq   rr   rI   rd   ru   )rv   rw   rx   ry   rz   r{   r|   r   rM   rP   Zbarhrg   r~   r   r   r   test_jpl_barh_units   s   *r   c                  C   sp   dd l m  m}  |   tddd}| jd|d}tj|	|d d }tj|	|d d }||ks6J d S )Nr   ro   rp   rq   rk   rr   )
rv   rw   rx   ry   r   r|   r=   rN   get_converterr8   )r   rs   ZjplZdt_convZjpl_convr   r   r   "test_jpl_datetime_units_consistent   s   r   c                   C   s    t tjg ddtg  d S )Nzdatetime64[ns]dtype)rM   scatterr$   rb   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nanrM   rP   r   canvasdraw)timesrW   rY   rZ   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 )  rH   r^   rm   )r   r.   ir   r   r   r1      s     z-test_errorbar_mixed_units.<locals>.<listcomp>g      ?)days)r$   r   rM   rP   Zerrorbarr   r   r   )rX   rW   rY   rZ   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  rm   r   o)r   rP   rQ   )Zfig_testZfig_refr   r   r   r   test_subclass   s   r   c                 C   s4  | 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rMdksPJ  J |j
	 |j
	   kradksdJ  J |jd |j
d |j	 |j	   krdksJ  J |j
	 |j
	   krdksJ  J d S )Nr   rm   r   r   r^   r   rn   rp   allZsharexshareyr   r   )r=   rN   r   r$   rO   rM   rP   rQ   rV   r2   rT   rU   )rB   rX   y1y2rY   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sBJ d S )Nc                 S      g | ]}t d |dtjdqS )r   rm   tzinfor   r   utcr   r   r   r   r1          z-test_shared_axis_datetime.<locals>.<listcomp>rm      c                 S   r   )i  rm   r   r   r   r   r   r   r1      r   r^   T)r   rH   )r   )	rangerM   rP   rQ   rT   rU   r   r   r   )r   r   rY   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 sAJ d S )
Nrm   r^   r?   r   rn   rp   Tr   cd)
rM   rP   rQ   keysvaluesrV   rU   r	   r2   _mapping)d1Zd2rY   r   r   r   r   r   test_shared_axis_categorical   s   

r   c            
      C   s4  ddd} t  }t  }t }t \}}|j| |j |ks#J ||  | 	  |j |ks6J |j| t
t |j| W d    n1 sRw   Y  t \}}||  | 	  |j| t \}}	|	|  | 	  t
  |	j| W d    d S 1 sw   Y  d S )Nrm   r^   r   )r   r
   rM   rP   rV   Zset_converterr   rQ   r   r   pytestZraisesRuntimeErrorZwarns)
r   Zstr_cat_converterZstr_cat_converter_2Zdate_converterZfig1r   Zfig2r   Zfig3Zax3r   r   r   test_explicit_converter   s*   

"r   c              	   C   s  | t jt< t \}}|jtdgd |  | dks!J |j	tdgd |  |
 dks7J t \}}|d |ttdddttdddd	 |  | d
kscJ |
 dkskJ t \}}|d |ttdddttdddd	 |  | dksJ |
 dksJ 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   r:   rG   r   rn   re   r^   r   )r   r^   )r   rG   )r   rp   )g     <@g     ?@)r=   rN   r   rM   rP   rV   Zupdate_unitsdraw_without_renderingZget_xlimrT   Zget_ylimrR   rQ   r$   r   rS   )rB   rY   r   rZ   r   r   r   test_empty_default_limits  sH   




r   c                   @   s*   e Zd Zdd ZdddZedd ZdS )	Kernelc                 C   s   t || _d S r   )r$   Z
asanyarray_array)r   rb   r   r   r   r   =  s   zKernel.__init__Nc                 C   s\   |d ur|| j jkr|d ur|std| j j d| dtj| j |d}|s)|S t|S )NzConverting array from z to z requires a copyr   )r   r   
ValueErrorr$   r(   copy)r   r   r   arrr   r   r   r)   @  s   zKernel.__array__c                 C   s   | j jS r   )r   shaper   r   r   r   r   K  s   zKernel.shape)NN)r*   r+   r,   r   r)   propertyr   r   r   r   r   r   <  s
    
r   c                  C   s   t g d} t|  d S )N)rm   r^   rn   rp   rH   )r   rM   rQ   )Zkernelr   r   r   test_plot_kernelP  s   r   c                 C   sl   t jddd\}\}}| d}|| d}|| tj|dfd|fdd||d}|| |  d S )	Nr^   )r   rH   )ZnrowsZfigsizez2017-01-01T12z	test testr   r   )ZcoordsAZcoordsBZaxesAZaxesB)	rM   rP   	TimestamprS   rR   mpatchesZConnectionPatchZ
add_artistr   )pdrY   r   r   rX   rW   r   r   r   r   test_connection_patch_unitsV  s   



r   )0r   r   r   platformZunittest.mockr   Zmatplotlib.pyplotZpyplotrM   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.patchesZpatchesr   Zmatplotlib.unitsr   r=   Zmatplotlib.categoryr   r	   Zmatplotlib.datesr
   numpyr$   r   r   ZfixturerB   machiner[   rc   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sZ    
#


		

	

!*