a
    ضaƿ                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ dd Zejde  dddd dde  dddd dde  ddddddge  dddd dde  ddddddge  dddd	dde  dddd
ddgggejdg ddd Zejdg ddd Zejdg ddd Zdd Zdd Zdd Z edgdd Z!edgdd  Z"ed!gd"d# Z#ed$gd%d& Z$d'd( Z%d)d* Z&ed+gd,d- Z'd.d/ Z(d0d1 Z)ed2gd3d4 Z*d5d6 Z+d7d8 Z,ejd9e j-d:d;d<d= e.d>d?d@D fe j-dAdBdCd= e.ddDd
D fe j-d@dEdFd= e.d dGd	D fe j-dHdIdJd= e.d dKD fgdLdM Z/dNdO Z0e&dPdQ Z1e&dRdS Z2dTdU Z3dVdW Z4ejdXe j-dYdZd[fe j-ddId\fe j-ddEd]fe j-ddBd^fe j-dd;d_fe j-d`d;dafe j-dbd;dafgdcdd Z5dedf Z6ejdXe j-d:d;dgd= e.dhdid@D fe j-djdBg dkfe j-djdEg dlfe j-d	dZg dmfgdndo Z7dpdq Z8drds Z9dtdu Z:dvdw Z;edxgdydz Z<d{d| Z=d}d~ Z>dd Z?dd Z@dd ZAejjBdd ZCejjBdd ZDdd ZEdd ZFdd ZGejdde j-ddBfddge j-ddBe j-ddBgfgdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdS )    N)
rc_contextstyle)image_comparisonc                     s   t  ddd  fddtddD } tj| dd}tg d	}tjd
d}|ddd}|| |\}|||\}tj	|j
dd|j
dd tjd
d}|ddd}||| \}|||\}tj	|jdd|jdd d S )N     c                    s   g | ]} t j|d  qS )days)datetime	timedelta).0xbase k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_dates.py
<listcomp>       z$test_date_numpyx.<locals>.<listcomp>r      datetime64[ns]dtype)               @      ?)
      )ZfigsizeF)orig)r	   rangenparraypltfigureadd_subplotplottestingassert_equalZ	get_xdataZ	get_ydata)timeZtimenpdatafigaxhZhnpr   r   r   test_date_numpyx   s    r+   t0r   r   r   r   r   )zdatetime64[s]zdatetime64[us]zdatetime64[ms]r   c                 C   s4   t | }tj| |d}t |}tj|| d S )Nr   )mdatesdate2numr   r   r$   r%   )r,   r   r&   tnpnptimer   r   r   test_date_date2num_numpy#   s    

r1   c                 C   sR   t  dddddd}t|tjg}tj|dg| d}t|}tj|| d S )Nr   r   r   NaTr   )r	   r-   r.   r   nanr   r$   Zassert_array_equal)r   r,   tmplr/   r0   r   r   r   test_date2num_NaT7   s
    
r5   units)smsusnsc                 C   s$   t td| }t|s J d S )Nr2   )r-   r.   r   
datetime64isnan)r6   r4   r   r   r   test_date2num_NaT_scalarC   s    r=   c               	   C   s   t  \} }|  |   tj| t	t
dt	t
dg t  td t  \} }|  |   tj| t	t
dt	t
dg t  d S )N
2000-01-01z
2010-01-01
0000-12-31)r    subplotsZ
xaxis_datedraw_without_renderingr   r$   assert_allcloseget_xlimr-   r.   r;   _reset_epoch_test_example	set_epochr(   r)   r   r   r   test_date_emptyI   s&    
rG   c                  C   sH   t  } |  }|ddgddg |j  tj|	 ddg d S )N2   F   r   r   )
r    r!   r"   r#   xaxisZ	axis_dater   r$   rB   rC   rF   r   r   r   test_date_not_empty_   s
    
rK   c               	   C   s   t  \} }|d |tdtdgddg tj| t	
tdt	
tdg t	  t	d t  \} }|d |tdtdgddg tj| t	
tdt	
tdg t	  d S )N      ?z
2016-01-01z
2016-01-02r   r   r?   )r    r@   axhliner#   r   r;   r$   rB   rC   r-   r.   rD   rE   rF   r   r   r   test_axhlineh   s&    
 

 rN   zdate_axhspan.pngc                  C   sn   t  ddd} t  ddd}t \}}|j| |ddd || t jdd	 |t jdd	  |jdd
 d S )N  r         blue      ?Z	facecoloralpha   r   left)r	   r    r@   Zaxhspanset_ylimr
   subplots_adjustr,   tfr(   r)   r   r   r   test_date_axhspan|   s    r]   zdate_axvspan.pngc                  C   sj   t  ddd} t  ddd}t \}}|j| |ddd || t jd	d
 |t jd	d
  |  d S )N  r   rP     rQ   rR   rS   rT   i  r   )r	   r    r@   Zaxvspanset_xlimr
   autofmt_xdater[   r   r   r   test_date_axvspan   s    rb   zdate_axhline.pngc                  C   sl   t  ddd} t  ddd}t \}}|j| ddd || t jdd	 |t jdd	  |jd
d d S NrO   r   rP      rR   r   colorZlwrV   r   rS   rW   )r	   r    r@   rM   rY   r
   rZ   r[   r   r   r   test_date_axhline   s    rg   zdate_axvline.pngc                  C   sh   t  ddd} t  ddd}t \}}|j| ddd || t jdd	 |t jdd	  |  d S )
Nr^   r   rP   rQ   redr   re   rV   r   )r	   r    r@   Zaxvliner`   r
   ra   r[   r   r   r   test_date_axvline   s    ri   c                 C   s   |  d tddd}tddd}t \}}ttH}|j||fdd t|dks`J dt	|d j
v svJ W d    n1 s0    Y  |g g  |jt  |j  }t|d	ksJ | jrtd
d | jD sJ t| jdksJ d S )NWARNINGr^   r   rP   T)autoz)Attempting to set identical left == rightr     c                 s   s"   | ]}|j d ko|jdkV  qdS )zmatplotlib.tickerrj   N)name	levelname)r   recordr   r   r   	<genexpr>   s   z+test_too_many_date_ticks.<locals>.<genexpr>)Z	set_levelr	   r    r@   pytestwarnsUserWarningr`   lenstrmessager#   rJ   set_major_locatorr-   
DayLocatorZget_major_locatorrecordsall)Zcaplogr,   r\   r(   r)   recvr   r   r   test_too_many_date_ticks   s"    
$r}   c                    s   t   fdd}|S )Nc                      s$   t   t d    t   d S )Nr>   )r-   rD   rE   r   thefuncr   r   wrapper   s    
z%_new_epoch_decorator.<locals>.wrapper)	functoolswraps)r   r   r   r~   r   _new_epoch_decorator   s    r   zRRuleLocator_bounds.pngc                  C   s   dd l m  m}  |   tddd}tddd}t }t }|d |j	||gddgdd	 t
jtjjd
d}t
|}|j| |jt
| |  |  d S )Nr   rl   r   ip  Tr   r   omarker  interval)matplotlib.testing.jpl_unitsr$   	jpl_unitsregisterr	   r    r!   subplotset_autoscale_onr#   r-   rrulewrapperdateutilrruleZYEARLYRRuleLocatorrJ   rw   set_major_formatterAutoDateFormatterautoscale_viewra   )r6   r,   r\   r(   r)   r   locatorr   r   r   test_RRuleLocator   s    

r   c                  C   s@   t  } tjdddt jd}tjdddt jd}| || d S )Nr   )yearmonthdaytzinfo   )r-   rx   r	   UTCtick_values)locx1y1r   r   r   test_RRuleLocator_dayrange   s    r   c               	   C   sn   t jtjjdd} t | }tjdddd}tjddddd}ddg}ttt	t 
||||ksjJ d S )	NrV   r   i  r   )r   r   r   )r   r   r   microsecond2020-01-01 00:00:00+00:00z 2020-01-01 00:00:00.000001+00:00)r-   r   r   r   ZSECONDLYr   r	   listmapru   num2dater   )r   r   d1d2expectedr   r   r   test_RRuleLocator_close_minmax   s    
r   z#DateFormatter_fractionalSeconds.pngc                  C   s   dd l m  m}  |   tdddddd}tdddddd}t }t }|d |j	||gddgdd |
  |  d S )	Nr   i  r   Tr   r   r   r   )r   r$   r   r   r	   r    r!   r   r   r#   r   ra   )r6   r,   r\   r(   r)   r   r   r   test_DateFormatter   s    
r   c               	   C   s*  dt jd< tdddddtdddddtdddd	dg} g d
}t  \}}|| | |jtd |j	
  dd | D }g d}||ksJ |jt  |jtd td}|jt| |jtd |j	
  dd |jddD }g d}||ks&J dS )zh
    Test if setting the locator only will update the AutoDateFormatter to use
    the new locator.
    z%d %H:%Mzdate.autoformatter.minutei  	         r   ;   r   )r   r   r   )r   r   c                 S   s   g | ]}|  qS r   get_textr   tlr   r   r   r   &  r   z.test_locator_set_formatter.<locals>.<listcomp>)z30 08:00z30 08:30z30 09:00z30 09:30z30 10:00z30 10:30)rV   7   )      )   -   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r   2  r   minor)which)z30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r    rcParamsr	   r@   r#   rJ   rw   r-   ZMinuteLocatorcanvasdrawget_xticklabelsmtickerZNullLocatorZset_minor_locatorZset_minor_formatterr   )tr   r(   r)   Z
ticklabelsr   Z	decoy_locr   r   r   test_locator_set_formatter  s,    



r   c                  C   sN   G dd d} dd }t |  }||jd< |tdddgd	gksJJ d S )
Nc                   @   s   e Zd Zdd ZdS )z.test_date_formatter_callable.<locals>._Locatorc                 S   s   dS )Nir   )selfr   r   r   	_get_unit:  r   z8test_date_formatter_callable.<locals>._Locator._get_unitN)__name__
__module____qualname__r   r   r   r   r   _Locator9  s   r   c                 S   s   dd | D S )Nc                 S   s   g | ]}| d qS )z	%d-%m//%Y)strftime)r   dtr   r   r   r   =  r   zVtest_date_formatter_callable.<locals>.callable_formatting_function.<locals>.<listcomp>r   )dates_r   r   r   callable_formatting_function<  s    zBtest_date_formatter_callable.<locals>.callable_formatting_functioni  r      z25-12//2014)r-   r   Zscaledr	   )r   r   	formatterr   r   r   test_date_formatter_callable7  s
    
r   zdelta, expected(  weeksc                 C   s   g | ]}d | qS z$\mathdefault{%d}$r   )r   r   r   r   r   r   F  r   r     i{  rP   r   r   c                 C   s   g | ]}d | qS )z $\mathdefault{1990{-}01{-}%02d}$r   )r   r   r   r   r   r   H  r       hoursc                 C   s   g | ]}d | qS )z$\mathdefault{01{-}01\;%02d}$r   )r   hourr   r   r   r   J  r   rQ   r   minutesc                 C   s   g | ]}d | qS )z$\mathdefault{01\;00{:}%02d}$r   )r   Zminur   r   r   r   L  r      c                    s|   t d tddd}||  }tjdd}|  |jt|t| tj	|dd  fdd	| D |ksxJ d S )
Ndefaultr   r   Finterval_multiplesTZusetexc                    s   g | ]} |qS r   r   )r   r   r   r   r   r   Y  r   z.test_date_formatter_usetex.<locals>.<listcomp>)
r   Zuser	   r-   AutoDateLocatorcreate_dummy_axisaxisset_view_intervalr.   r   )deltar   r   r   r   r   r   r   test_date_formatter_usetexD  s    
r   c                  C   s   t j dddtjd} t j dddtjd}t jdd}tt| ||dksNJ |t jdd }tt| ||dksxJ t j dddtjd}t jd	d}t| ||}t|d
ksJ t|d || ksJ dS )zj
    This test should check if drange works as expected, and if all the
    rounding errors are fixed
    i  r   r   r   r      microsecondsr         N)r	   r-   r   r
   rt   Zdranger   )startendr   Z	dateranger   r   r   test_drange\  s    r   c               
   C   s   dd } t  ddd}t jddg dgt jddg d	gt jd
dg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgf}|D ]8\}}|| }| ||}tttt| |ksJ qd S )Nc                 S   s.   t jdd}|  |jjt | |g  |S )NFr   r-   r   r   r   r   r.   date1date2r   r   r   r   _create_auto_date_locatorz  s    z9test_auto_date_locator.<locals>._create_auto_date_locatorr   r   r   r   )
1990-01-01 00:00:00+00:00z2010-01-01 00:00:00+00:00z2030-01-01 00:00:00+00:00z2050-01-01 00:00:00+00:00z2070-01-01 00:00:00+00:00z2090-01-01 00:00:00+00:00z2110-01-01 00:00:00+00:00z2130-01-01 00:00:00+00:00z2150-01-01 00:00:00+00:00z2170-01-01 00:00:00+00:004   )r   z1990-02-01 00:00:00+00:00z1990-03-01 00:00:00+00:00z1990-04-01 00:00:00+00:00z1990-05-01 00:00:00+00:00z1990-06-01 00:00:00+00:00z1990-07-01 00:00:00+00:00z1990-08-01 00:00:00+00:00z1990-09-01 00:00:00+00:00z1990-10-01 00:00:00+00:00z1990-11-01 00:00:00+00:00z1990-12-01 00:00:00+00:00   r   )z1990-01-05 00:00:00+00:00z1990-01-26 00:00:00+00:00z1990-02-16 00:00:00+00:00z1990-03-09 00:00:00+00:00z1990-03-30 00:00:00+00:00z1990-04-20 00:00:00+00:00z1990-05-11 00:00:00+00:00(   )z1990-01-03 00:00:00+00:00z1990-01-10 00:00:00+00:00z1990-01-17 00:00:00+00:00z1990-01-24 00:00:00+00:00z1990-01-31 00:00:00+00:00z1990-02-07 00:00:00+00:00r   )r   z1990-01-01 04:00:00+00:00z1990-01-01 08:00:00+00:00z1990-01-01 12:00:00+00:00z1990-01-01 16:00:00+00:00z1990-01-01 20:00:00+00:00z1990-01-02 00:00:00+00:00z1990-01-02 04:00:00+00:00z1990-01-02 08:00:00+00:00z1990-01-02 12:00:00+00:00z1990-01-02 16:00:00+00:00rP   r   )r   z1990-01-01 00:05:00+00:00z1990-01-01 00:10:00+00:00z1990-01-01 00:15:00+00:00z1990-01-01 00:20:00+00:00seconds)	r   z1990-01-01 00:00:05+00:00z1990-01-01 00:00:10+00:00z1990-01-01 00:00:15+00:00z1990-01-01 00:00:20+00:00z1990-01-01 00:00:25+00:00z1990-01-01 00:00:30+00:00z1990-01-01 00:00:35+00:00z1990-01-01 00:00:40+00:00  r   )z 1989-12-31 23:59:59.999500+00:00r   z 1990-01-01 00:00:00.000500+00:00z 1990-01-01 00:00:00.001000+00:00z 1990-01-01 00:00:00.001500+00:00z 1990-01-01 00:00:00.002000+00:00r	   r
   r   r   ru   r-   r   )r   r   resultst_deltar   r   r   r   r   r   test_auto_date_locatorx  s>    







8
r  c               
   C   s   dd } t jddg dgt jddg dgt jdd	g d
gt jdd	g dgt jddg dgt jddg dgt jddg dgt jddg dgf}t  ddd}|D ]8\}}|| }| ||}tttt| |ksJ qd S )Nc                 S   s.   t jdd}|  |jjt | |g  |S )NTr   r   r   r   r   r   r     s    zAtest_auto_date_locator_intmult.<locals>._create_auto_date_locatorr   r   z1980-01-01 00:00:00+00:00z2000-01-01 00:00:00+00:00r   z2040-01-01 00:00:00+00:00z2060-01-01 00:00:00+00:00z2080-01-01 00:00:00+00:00z2100-01-01 00:00:00+00:00z2120-01-01 00:00:00+00:00z2140-01-01 00:00:00+00:00z2160-01-01 00:00:00+00:00z2180-01-01 00:00:00+00:00z2200-01-01 00:00:00+00:00r   )1997-01-01 00:00:00+00:001997-02-01 00:00:00+00:001997-03-01 00:00:00+00:001997-04-01 00:00:00+00:001997-05-01 00:00:00+00:00z1997-06-01 00:00:00+00:00z1997-07-01 00:00:00+00:00z1997-08-01 00:00:00+00:00z1997-09-01 00:00:00+00:00z1997-10-01 00:00:00+00:00z1997-11-01 00:00:00+00:00z1997-12-01 00:00:00+00:00r   r   )
r  z1997-01-15 00:00:00+00:00r  z1997-02-15 00:00:00+00:00r  z1997-03-15 00:00:00+00:00r  z1997-04-15 00:00:00+00:00r  z1997-05-15 00:00:00+00:00r   )r  z1997-01-05 00:00:00+00:00z1997-01-09 00:00:00+00:00z1997-01-13 00:00:00+00:00z1997-01-17 00:00:00+00:00z1997-01-21 00:00:00+00:00z1997-01-25 00:00:00+00:00z1997-01-29 00:00:00+00:00r  z1997-02-05 00:00:00+00:00z1997-02-09 00:00:00+00:00r   )r  z1997-01-01 04:00:00+00:00z1997-01-01 08:00:00+00:00z1997-01-01 12:00:00+00:00z1997-01-01 16:00:00+00:00z1997-01-01 20:00:00+00:00z1997-01-02 00:00:00+00:00z1997-01-02 04:00:00+00:00z1997-01-02 08:00:00+00:00z1997-01-02 12:00:00+00:00z1997-01-02 16:00:00+00:00rP   r   )r  z1997-01-01 00:05:00+00:00z1997-01-01 00:10:00+00:00z1997-01-01 00:15:00+00:00z1997-01-01 00:20:00+00:00r   )	r  z1997-01-01 00:00:05+00:00z1997-01-01 00:00:10+00:00z1997-01-01 00:00:15+00:00z1997-01-01 00:00:20+00:00z1997-01-01 00:00:25+00:00z1997-01-01 00:00:30+00:00z1997-01-01 00:00:35+00:00z1997-01-01 00:00:40+00:00r   r   )z 1996-12-31 23:59:59.999500+00:00r  z 1997-01-01 00:00:00.000500+00:00z 1997-01-01 00:00:00.001000+00:00z 1997-01-01 00:00:00.001500+00:00z 1997-01-01 00:00:00.002000+00:00  r   r   )r   r   r   r  r   r   r   r   r   r   test_auto_date_locator_intmult  s>    







=
r
  c                  C   sR   t jdd} t | }d}|||dt j  |dt j  g}|g dksNJ d S )NTr   g    B@r   i  )00:00z00.0005z00.0009)r-   r   ConciseDateFormatterformat_ticksZMUSECONDS_PER_DAY)r   r   Z	year_1996stringsr   r   r    test_concise_formatter_subsecond  s    
r  c               
   C   s   dd } t  ddd}t jdddd td	d
dD gt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgf}|D ]&\}}|| }| ||}||ksJ qd S )Nc                 S   sf   t  \}}tjdd}t|}|j| |j| || | |j	
  dd | D }|S )NTr   c                 S   s   g | ]}|  qS r   r   r   str   r   r   r      r   zMtest_concise_formatter.<locals>._create_auto_date_locator.<locals>.<listcomp>r    r@   r-   r   r  yaxisrw   r   rY   r   r   get_yticklabelsr   r   r(   r)   r   r   stsr   r   r   r     s    

z9test_concise_formatter.<locals>._create_auto_date_locatorr	  r   r   r   c                 S   s   g | ]}t |qS r   ru   r   r   r   r   r   r   %  r   z*test_concise_formatter.<locals>.<listcomp>    rP   r   )1997FebMarAprMayJunJulAugSepOctNovDecr   r   )
Jan15r  r(  r  r(  r  r(  r  r(  r   )r'  05091317212529r  r)  r*  r   )zJan-0104:0008:0012:0016:0020:00zJan-02r0  r1  r2  r3  r   )r  00:0500:1000:1500:20r   )	r  r)  10r(  20r.  303540r   )59.5r  00.501.001.502.002.5r	   r
   r   r   r   r   r  r   r   r  r   r   r   test_concise_formatter  s>    








rF  zt_delta, expectedg{Gz?r   z1997-Jan-01 00:00z1997-Jan-01 00:011997-Jan-011997-Jan-021997-Jan      c                 C   s~   t  ddd}||  }t \}}t }t|}|j| |j| |	||gddg |j
  | |kszJ d S )Nr	  r   r   )r	   r    r@   r-   r   r  rJ   rw   r   r#   r   r   
get_offset)r  r   r   r   r(   r)   r   r   r   r   r   "test_concise_formatter_show_offsetG  s    


rN  c                  C   s   t  \} }tddd}|tjdd }t }t|}|j| |j	| |
||gddg |   | dksJ |||tjdd  |   | dksJ |||tjdd  |   | dksJ d S )	Nr	  r   rL  r   r   rK  r   rI  )r    r@   r	   r
   r-   r   r  rJ   rw   r   r#   rA   rM  r`   )r(   r)   r   r   r   r   r   r   r   test_offset_changes_  s     
rO  c                 C   s   g | ]}d |f qS r   r   r  r   r   r   r   w  r   r  r  r   )r'  $\mathdefault{05}$$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$r  rP  rQ  )zJan$\mathdefault{{-}01}$$\mathdefault{04{:}00}$$\mathdefault{08{:}00}$$\mathdefault{12{:}00}$$\mathdefault{16{:}00}$z$\mathdefault{20{:}00}$zJan$\mathdefault{{-}02}$rR  rS  rT  rU  )z$\mathdefault{59.5}$z$\mathdefault{00{:}00}$z$\mathdefault{00.5}$z$\mathdefault{01.0}$z$\mathdefault{01.5}$z$\mathdefault{02.0}$z$\mathdefault{02.5}$c                 C   sj   t  ddd}||  }tjdd}|  |jt|t| tj|dd}|| |ksfJ d S )Nr	  r   Tr   r   )	r	   r-   r   r   r   r   r.   r  r  )r  r   r   r   r   r   r   r   r   test_concise_formatter_usetexu  s    rV  c               
      s   g d  fdd} t  ddd}t jdddd	 td
ddD gt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgf}|D ]&\}}|| }| ||}||ksJ qd S )N)z%Yz%m/%Yzday: %d%H hr %M minrW  z	%S.%f secc                    sj   t  \}}tjdd}tj| d}|j| |j| || | |j	
  dd | D }|S )NTr   formatsc                 S   s   g | ]}|  qS r   r   r  r   r   r   r     r   zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>r  r  rX  r   r   r     s    
zAtest_concise_formatter_formats.<locals>._create_auto_date_locatorr	  r   r   r   c                 S   s   g | ]}t |qS r   r  r  r   r   r   r     r   z2test_concise_formatter_formats.<locals>.<listcomp>r  r  rP   r   )r  02/199703/199704/199705/1997z06/1997z07/1997z08/1997z09/1997z10/1997z11/1997z12/1997r   r   )
01/1997day: 15rZ  r_  r[  r_  r\  r_  r]  r_  r   )r^  day: 05day: 09zday: 13zday: 17zday: 21zday: 25zday: 29rZ  r`  ra  r   )zday: 0104 hr 00 min08 hr 00 min12 hr 00 min16 hr 00 minz20 hr 00 minzday: 02rb  rc  rd  re  r   )00 hr 00 minz00 hr 05 minz00 hr 10 minz00 hr 15 minz00 hr 20 minr   )	rf  z05.000000 secz10.000000 secz15.000000 secz20.000000 secz25.000000 secz30.000000 secz35.000000 secz40.000000 secr   )z59.500000 secrf  z00.500000 secz01.000000 secz01.500000 secz02.000000 secz02.500000 secrD  rE  r   rX  r   test_concise_formatter_formats  s$     
rg  c               
      s   g d  fdd} t  ddd}t jdddd	 td
ddD gt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgt jddg dgf}|D ]&\}}|| }| ||}||ksJ qd S )N)rK  z'%yz%Bz%m-%dz%Sz%S.%fc                    sj   t  \}}tjdd}tj| d}|j| |j| || | |j	
  dd | D }|S )NTr   Zzero_formatsc                 S   s   g | ]}|  qS r   r   r  r   r   r   r     r   zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>r  r  rh  r   r   r     s    
zBtest_concise_formatter_zformats.<locals>._create_auto_date_locatorr	  r   r   r   c                 S   s   g | ]}t |qS r   r  r  r   r   r   r     r   z3test_concise_formatter_zformats.<locals>.<listcomp>r  r  rP   r   )z'97r  r  r  r  r   r!  r"  r#  r$  r%  r&  r   r   )
Januaryr(  Februaryr(  ZMarchr(  ZAprilr(  r  r(  r   )ri  r)  r*  r+  r,  r-  r.  r/  rj  r)  r*  r   )z01-01r0  r1  r2  r3  r4  z01-02r0  r1  r2  r3  r   )00r5  r6  r7  r8  r   )	rk  r)  r9  r(  r:  r.  r;  r<  r=  r   )r>  z00.0r?  r@  rA  rB  rC  rD  rE  r   rh  r   test_concise_formatter_zformats  s@    








rl  c            
      C   s   dd } t  dddjt jjd}t jddg dd	gt jd
dg ddgt jddg ddgt jddg ddgf}t t jdd}|D ]:\}}}|| }| |||\}}	||ksJ |	|ksJ qd S )Nc                 S   sx   t  \}}tjdd}tj||d}|j| |j| || | |j	
  dd | D }||j  fS )NTr   tzc                 S   s   g | ]}|  qS r   r   r  r   r   r   r     r   zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>)r    r@   r-   r   r  r  rw   r   rY   r   r   r  Zget_offset_textr   )r   r   rn  r(   r)   r   r   r  r   r   r   r     s    
z<test_concise_formatter_tz.<locals>._create_auto_date_locatorr	  r   r   r   r   )03:0007:0011:0015:0019:00z23:00ro  rp  rq  rr  rs  rH  rP   r   )ro  z03:05z03:10z03:15z03:20rG  r   )	ro  r)  r9  r(  r:  r.  r;  r<  r=  z1997-Jan-01 03:00r   )r>  ro  r?  r@  rA  rB  rC  r   )r	   replacetimezoneutcr
   )
r   r   r   Znew_tzr  Zexpected_stringsZexpected_offsetr   r  offsetr   r   r   test_concise_formatter_tz  s2    



rx  c            	   	   C   s"  dd } t jddg dgt jddg dgt jdd	g d
gt jdd	g dgt jddg dgt jddg dgt jddg dgf}tjd}t j ddd|d}|D ]p\}}tddiJ || }| |||}tttt	j
| |d}||ksJ W d    q1 s0    Y  qd S )Nc                 S   s0   t jd|d}|  |jjt | |g  |S )NTr   rn  r   )r   r   rn  r   r   r   r   r   +  s    zDtest_auto_date_locator_intmult_tz.<locals>._create_auto_date_locatorr   r   )z1980-01-01 00:00:00-08:00z2000-01-01 00:00:00-08:00z2020-01-01 00:00:00-08:00z2040-01-01 00:00:00-08:00z2060-01-01 00:00:00-08:00z2080-01-01 00:00:00-08:00z2100-01-01 00:00:00-08:00z2120-01-01 00:00:00-08:00z2140-01-01 00:00:00-08:00z2160-01-01 00:00:00-08:00z2180-01-01 00:00:00-08:00z2200-01-01 00:00:00-08:00r   )1997-01-01 00:00:00-08:001997-02-01 00:00:00-08:001997-03-01 00:00:00-08:001997-04-01 00:00:00-08:001997-05-01 00:00:00-07:00z1997-06-01 00:00:00-07:00z1997-07-01 00:00:00-07:00z1997-08-01 00:00:00-07:00z1997-09-01 00:00:00-07:00z1997-10-01 00:00:00-07:00z1997-11-01 00:00:00-08:00z1997-12-01 00:00:00-08:00r   r   )
rz  z1997-01-15 00:00:00-08:00r{  z1997-02-15 00:00:00-08:00r|  z1997-03-15 00:00:00-08:00r}  z1997-04-15 00:00:00-07:00r~  z1997-05-15 00:00:00-07:00r   )rz  z1997-01-05 00:00:00-08:00z1997-01-09 00:00:00-08:00z1997-01-13 00:00:00-08:00z1997-01-17 00:00:00-08:00z1997-01-21 00:00:00-08:00z1997-01-25 00:00:00-08:00z1997-01-29 00:00:00-08:00r{  z1997-02-05 00:00:00-08:00z1997-02-09 00:00:00-08:00r   )rz  z1997-01-01 04:00:00-08:00z1997-01-01 08:00:00-08:00z1997-01-01 12:00:00-08:00z1997-01-01 16:00:00-08:00z1997-01-01 20:00:00-08:00z1997-01-02 00:00:00-08:00z1997-01-02 04:00:00-08:00z1997-01-02 08:00:00-08:00z1997-01-02 12:00:00-08:00z1997-01-02 16:00:00-08:00rP   r   )rz  z1997-01-01 00:05:00-08:00z1997-01-01 00:10:00-08:00z1997-01-01 00:15:00-08:00z1997-01-01 00:20:00-08:00r   )	rz  z1997-01-01 00:00:05-08:00z1997-01-01 00:00:10-08:00z1997-01-01 00:00:15-08:00z1997-01-01 00:00:20-08:00z1997-01-01 00:00:25-08:00z1997-01-01 00:00:30-08:00z1997-01-01 00:00:35-08:00z1997-01-01 00:00:40-08:00zCanada/Pacificr	  r   r   z_internal.classic_modeFrm  )r	   r
   r   rn  gettzr   r   r   ru   r-   r   )	r   r   rn  r   r  r   r   r   r  r   r   r   !test_auto_date_locator_intmult_tz*  s>    






5r  zdate_inverted_limit.pngc                  C   st   t  ddd} t  ddd}t \}}|j| ddd || t jdd	 |t jdd	  |  |jd
d d S rc   )r	   r    r@   rM   rY   r
   Zinvert_yaxisrZ   r[   r   r   r   test_date_inverted_limitp  s    r  c                    s   t jd}tj}tjddddd|d}tjddd	}d
 d}| |||d}|||}dtt	d  fddt
|D }	tt|}
|
|	ksJ d S )NzEurope/Brusselsr   r   r   r   r   !   r   )r   r   g      ?r   r   freqZperiodsg    p&Ar?   c                    s   g | ]}|   qS r   r   r   iZinterval_daysr,   r   r   r     r   z&_test_date2num_dst.<locals>.<listcomp>)r   rn  r  r-   r   r	   r
   r.   r   r;   r   r   )
date_range
tz_convertZBRUSSELSr   dtstartr   NZdt_utcZdt_bxlZexpected_ordinalfZactual_ordinalfr   r  r   _test_date2num_dst}  s    
r  c                     s4   G dd dt j   fdd} dd }t| | d S )Nc                       sD   e Zd ZdZ fddZ fddZ fddZedd	 Z  Z	S )
z%test_date2num_dst.<locals>.dt_tzawarez
        This bug specifically occurs because of the normalization behavior of
        pandas Timestamp objects, so in order to replicate it, we need a
        datetime-like object that applies timezone normalization after
        subtraction.
        c                    sX   t  |}t|dd }|d ur>t|dd }|d ur>||}t|tjrT| |}|S )Nr   	normalize)super__sub__getattrr  
isinstancer	   
mk_tzaware)r   otherrr   Z	localizer	__class__r   r   r    s    

z-test_date2num_dst.<locals>.dt_tzaware.__sub__c                    s   |  t |S N)r  r  __add__)r   r  r  r   r   r    s    z-test_date2num_dst.<locals>.dt_tzaware.__add__c                    s   t  |}| |S r  )r  
astimezoner  )r   r   r   r  r   r   r    s    z0test_date2num_dst.<locals>.dt_tzaware.astimezonec                 S   s<   i }d}|D ] }t ||d }|d ur|||< q| f i |S )N)r   r   r   r   minutesecondr   r   )r  )clsdatetime_objkwargsattrsattrvalr   r   r   r    s    	
z0test_date2num_dst.<locals>.dt_tzaware.mk_tzaware)
r   r   r   __doc__r  r  r  classmethodr  __classcell__r   r   r  r   
dt_tzaware  s   r  c                    s"    |   fddt|D S )Nc                    s   g | ]} |  qS r   r   r  r  r  r   r   r     r   z9test_date2num_dst.<locals>.date_range.<locals>.<listcomp>)r  r   r  r  r  r   r    s    
z%test_date2num_dst.<locals>.date_rangec                    s    fdd| D S )Nc                    s   g | ]}|  qS r   )r  )r   dr   r   r   r     r   z9test_date2num_dst.<locals>.tz_convert.<locals>.<listcomp>r   )Zdt_listr   r   r   r   r    s    z%test_date2num_dst.<locals>.tz_convert)r	   r  )r  r  r   r  r   test_date2num_dst  s    1r  c                    s    fdd}t  j| d S )Nc                     s    j j|  tS r  )ZDatetimeIndexr  astypeobject)argspdr   r   r    s    z,test_date2num_dst_pandas.<locals>.tz_convert)r  r  )r  r  r   r  r   test_date2num_dst_pandas  s    r  c                 C   s   |d}| t  dddd|}| t  dddd|}tjtjj|d}|||}t j ddddtj dt j ddd	d
tj dg}||ksJ d S )NzAustralia/Sydneyr   r   r   r   )r  r     r   r      )	r	   r-   r   r   r   ZDAILYZbetweenrn  Ztzutc)	attach_tzZget_tzZSYDr  ZdtendZruleZactexpr   r   r   _test_rrulewrapper  s    r  c                  C   s   dd } t | tjj d S )Nc                 S   s   | j |dS )Nr   )rt  r   Zzir   r   r   r    s    z$test_rrulewrapper.<locals>.attach_tz)r  r   rn  r  )r  r   r   r   test_rrulewrapper  s    r  c                  C   s"   t d} dd }t|| j d S )Npytzc                 S   s
   | | S r  )localizer  r   r   r   r    s    z)test_rrulewrapper_pytz.<locals>.attach_tz)rq   importorskipr  ru  )r  r  r   r   r   test_rrulewrapper_pytz  s    
r  c                     s   t d} | d  fddtdD }tjd d}|  |jt	|d d	 t	|d
 d	  t
g d}|t	t
d }t
j||  g d}ttttj|  d}||ksJ d S )Nr  zAmerica/New_Yorkc              	      s*   g | ]"}  td ddt| qS )r_   r   )r  r	   r
   r  rm  r   r   r     s   z)test_yearlocator_pytz.<locals>.<listcomp>r^   Try  r   r   r   )g{ja&Ag{jd&Ag{jtg&Ag{jNj&Ag{j*m&Ag{jp&Ag{jr&Ar?   )z2009-01-01 00:00:00-05:00z2010-01-01 00:00:00-05:00z2011-01-01 00:00:00-05:00z2012-01-01 00:00:00-05:00z2013-01-01 00:00:00-05:00z2014-01-01 00:00:00-05:00z2015-01-01 00:00:00-05:00rm  )rq   r  ru  r   r-   r   r   r   r   r.   r   r   r;   r$   rB   r   r   ru   r   )r  r   r   r   r   r  r   rm  r   test_yearlocator_pytz  s     


r  c                  C   s   dd } t  ddd}t jddddddg d	gt jdddd
ddg dgt jddddddddggf}|D ]B\}}}|| }| ||fi |}tttt| |ksrJ qrd S )Nc                 [   s6   t jf i |}|  |jt | t | |S r  )r-   ZYearLocatorr   r   r   r.   )r   r   r  r   r   r   r   _create_year_locator  s    z.test_YearLocator.<locals>._create_year_locatorr   r   r   r   rP   )r   r   r   r  rV   r   )z1980-05-16 00:00:00+00:00z2000-05-16 00:00:00+00:00z2020-05-16 00:00:00+00:00z2040-05-16 00:00:00+00:00z2060-05-16 00:00:00+00:00z2080-05-16 00:00:00+00:00z2100-05-16 00:00:00+00:00z2120-05-16 00:00:00+00:00z2140-05-16 00:00:00+00:00z2160-05-16 00:00:00+00:00z2180-05-16 00:00:00+00:00z2200-05-16 00:00:00+00:00i  r   r   z1980-09-25 00:00:00+00:00z2000-09-25 00:00:00+00:00r   )r  r   r   r   	argumentsr   r   r   r   r   r   test_YearLocator  s&    

	

	

r  c                   C   s   t t tjdd W d    n1 s,0    Y  t t tjdd W d    n1 sb0    Y  t t tjdd W d    n1 s0    Y  t t tjdd W d    n1 s0    Y  tjdd d S )Nr   r   g      r   g?r   )rq   raises
ValueErrorr-   rx   r   r   r   r   test_DayLocator>  s    ****r  c                  C   s    t j dddtjd} |   d S )Ni  r   r   )r	   r-   r   tzname)r   r   r   r   test_tz_utcJ  s    r  z	x, tdeltarL   c                 C   s   t | }||ksJ d S r  )r-   Znum2timedelta)r   Ztdeltar   r   r   r   test_num2timedeltaO  s    
r  c                  C   sN   t dt dg} t| }t ddgtt d }t j|| d S )Nr>   z
2001-01-01    H&Ag    J&Ar?   )r   r;   r-   r.   r   r$   r%   )r   dnr   r   r   r   test_datetime64_in_listX  s    
r  c                  C   s  t d} t  t  tt td W d    n1 sD0    Y  t  td | t d 	d}|	d}t j
t| t| t  td t j
t| d t  td t j
t| |d	  t  td
 t j
tt dd d S )Nr>   z
0000-01-01z
1970-01-01datetime64[D]intr?   r  z1970-01-01T01:00:00gUUUUUU?1970-01-01T00:00:00z1970-01-01T12:00:00g      ?)r   r;   r-   rD   Z	get_epochrq   r  RuntimeErrorrE   r  r$   r%   r.   floatrB   )dater   r   r   r   test_change_epocha  s,    
(




r  c                  C   s   t jdddd} tjdd}dg|jd< |  |jt| d	 t| d
  t	j
tdd}| }W d    n1 s|0    Y  d S )Nz
2001-01-10z
2001-03-04r  r   Fr   r   r   r   r   zAutoDateLocator was unable)match)r   aranger-   r   Z	intervaldr   r   r   r.   rq   rr   rs   )r   r   r{   Zlocsr   r   r   test_warn_notintervals  s    r  c                  C   s  dt jd< tjdddd} t  \}}|| tt|  |j  |	 d 
 dks^J |	 d	 
 d
ksvJ dt jd< t  \}}|| tt|  |j  |	 d 
 dksJ |	 d	 
 dksJ tt dt jd< W d    n1 s0    Y  d S )NZconcisezdate.converterz
2020-01-01
2020-05-01r  r   r   r'  r   r(  rk   zJan 01 2020Jan 15 2020Zboo)r    r   r   r  r@   r#   rt   r   r   r   r   rq   r  r  r   r(   r)   r   r   r   test_change_converter  s    



r  c                  C   s   dt jd< tjdddd} t  \}}|| tt|  |j  |	 d 
 dks^J |	 d	 
 d
ksvJ dt jd< t  \}}|| tt|  |j  |	 d 
 dksJ |	 d	 
 dksJ d S )NFzdate.interval_multiplesz
2020-01-10r  r  r   r   zJan 10 2020r   zJan 24 2020Truer  zFeb 01 2020)r    r   r   r  r@   r#   rt   r   r   r   r   r  r   r   r   test_change_interval_multiples  s    



r  c                   C   s   t  | t  td tddks.J tddks@J t  td tddksdJ tddksvJ W d    n1 s0    Y  d S )	Nr?   iQ     x%A    z%Ai  r  r   r   )_apiZ'suppress_matplotlib_deprecation_warningr-   rD   rE   Z	epoch2numZ	num2epochr   r   r   r   test_epoch2num  s    


r  c                   C   sp   t   t d t ddks$J t ddks6J t   t d t ddksZJ t ddkslJ d S )	Nr?   g   @ƞBAr  r  g   ƞBAr  r   r   )r-   rD   rE   Z
julian2numZ
num2julianr   r   r   r   test_julian2num  s    

r  )Pr	   Zdateutil.tzr   Zdateutil.rruler   Znumpyr   rq   Z
matplotlibr   r   Zmatplotlib.datesr   r-   Zmatplotlib.pyplotZpyplotr    Zmatplotlib.testing.decoratorsr   Zmatplotlib.tickerZtickerr   Zmatplotlib._apir  r+   markZparametrizer1   r5   r=   rG   rK   rN   r]   rb   rg   ri   r}   r   r   r   r   r   r   r   r
   r   r   r   r  r
  r  rF  rN  rO  rV  rg  rl  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s  	

	






 






F
K1	





74)F
A



'

	 