o
    g9                     @   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	 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edg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#ed-gd.d/ Z$d0d1 Z%d2d3 Z&ejd4e j'd5d6d7d8 e(d9d:d;D fe j'd<d=d>d8 e(dd?d
D fe j'd;d@dAd8 e(d dBd	D fgdCdD Z)dEdF Z*e!dGdH Z+e!dIdJ Z,dKdL Z-dMdN Z.ejdOe j'dPdQdRfe j'ddSdTfe j'dd@dUfe j'dd=dVfe j'dd6dWfe j'dXd6dYfe j'dZd6dYfgd[d\ Z/ejdOe j'd5d6d]d8 e(d^d_d;D fe j'd`d=g dafe j'd`d@g dbfe j'd	dQg dcfgddde Z0dfdg Z1dhdi Z2djdk Z3dldm Z4edngdodp Z5dqdr Z6dsdt Z7dudv Z8dwdx Z9dydz Z:ejj;d{d| Z<ejj;d}d~ Z=dd Z>dd Z?ejdde j'dd=fddge j'dd=e j'dd=gfgdd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdS )    N)
rc_context)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 Y/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/matplotlib/tests/test_dates.py
<listcomp>   s    z$test_date_numpyx.<locals>.<listcomp>r      datetime64[ns]dtype)               @      ?)
      )figsizeF)orig)r   rangenparraypltfigureadd_subplotplottestingassert_equal	get_xdata	get_ydata)timetimenpdatafigaxh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   

r4   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   r0   r1   r   nanr   r#   assert_array_equal)r   r/   tmplr2   r3   r   r   r   test_date2num_NaT6   s
   
r9   units)smsusnsc                 C   s$   t td| }t|sJ d S )Nr5   )r0   r1   r   
datetime64isnan)r:   r8   r   r   r   test_date2num_NaT_scalarB   s   rA   zdate_empty.pngc                  C   s   t  \} }|  d S N)r   subplots
xaxis_date)r*   r+   r   r   r   test_date_emptyH   s   rE   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      ?	facecoloralpha   r   left)r   r   rC   axhspanset_ylimr	   subplots_adjustr/   tfr*   r+   r   r   r   test_date_axhspanQ   s   rV   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   rG     rH   rI   rJ   rK   i  r   )r   r   rC   axvspanset_xlimr	   autofmt_xdaterT   r   r   r   test_date_axvspan]   s   r\   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 NrF   r   rG      rI   r   colorlwrN   r   rJ   rO   )r   r   rC   axhlinerR   r	   rS   rT   r   r   r   test_date_axhlinei   s   rc   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 )
NrW   r   rG   rH   redr   r_   rN   r   )r   r   rC   axvlinerZ   r	   r[   rT   r   r   r   test_date_axvlineu   s   rf   c                 C   s   |  d tddd}tddd}t \}}tt$}|j||fdd t|dks0J dt	|d j
v s;J W d    n1 sEw   Y  |g g  |jt  |j  }t|d	ksfJ | jrstd
d | jD suJ t| jdks~J d S )NWARNINGrW   r   rG   T)autoz)Attempting to set identical left == rightr     c                 s   s$    | ]}|j d ko|jdkV  qdS )zmatplotlib.tickerrg   N)name	levelname)r
   recordr   r   r   	<genexpr>   s
    
z+test_too_many_date_ticks.<locals>.<genexpr>)	set_levelr   r   rC   pytestwarnsUserWarningrZ   lenstrmessager"   xaxisset_major_locatorr0   
DayLocatorget_major_locatorrecordsall)caplogr/   rU   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 )N
2000-01-01)r0   _reset_epoch_test_example	set_epochr   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   ri   r   ip  Tr   r   omarker  interval)matplotlib.testing.jpl_unitsr#   	jpl_unitsregisterr   r   r    subplotset_autoscale_onr"   r0   rrulewrapperdateutilrruleYEARLYRRuleLocatorru   rv   set_major_formatterAutoDateFormatterautoscale_viewr[   )r:   r/   rU   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   )r0   rw   r   UTCtick_values)locx1y1r   r   r   test_RRuleLocator_dayrange   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   r[   )r:   r/   rU   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sPJ |jt  |jtd td}|jt| |jtd |j	
  dd |jddD }g d}||ksJ 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      g | ]}|  qS r   get_textr
   tlr   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)rN   7   )      )   -   c                 S   r   r   r   r   r   r   r   r      r   minor)which)z30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r   rcParamsr   rC   r"   ru   rv   r0   MinuteLocatorcanvasdrawget_xticklabelsmtickerNullLocatorset_minor_locatorset_minor_formatterr   )tr   r*   r+   
ticklabelsexpected	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s%J 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  s    z8test_date_formatter_callable.<locals>._Locator._get_unitN)__name__
__module____qualname__r   r   r   r   r   _Locator  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         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)r0   r   scaledr   )r   r   	formatterr   r   r   test_date_formatter_callable   s
   
"r   zdelta, expected(  weeksc                 C      g | ]}d |f qS z$\mathdefault{%d}$r   )r
   r   r   r   r   r     r   r     i{  rG   r   r   c                 C   r   )zJan$\mathdefault{ %02d 1990}$r   )r
   r   r   r   r   r     r       hoursc                 C   r   )z$\mathdefault{%02d:00:00}$r   )r
   hourr   r   r   r     r   rH   c                    sp   t  ddd}||  }tjdd}|  |t|t| tj|dd  fdd| D |ks6J d S )	Nr   r   Finterval_multiplesTusetexc                    s   g | ]} |qS r   r   )r
   r   r   r   r   r     r   z.test_date_formatter_usetex.<locals>.<listcomp>)r   r0   AutoDateLocatorcreate_dummy_axisset_view_intervalr1   r   )deltar   d1d2r   r   r   r   test_date_formatter_usetex  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s'J |t jdd }tt| ||dks<J t j dddtjd}t jd	d}t| ||}t|d
ks[J t|d || kshJ 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   r0   r   r	   rr   drangenum2date)startendr   	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 ]\}}|| }| ||}tttt| |kssJ qWd S )Nc                 S   0   t jdd}|  |t | t | |S )NFr   r0   r   r   r   r1   date1date2r   r   r   r   _create_auto_date_locator?     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:00rG   minutes)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	   listmaprs   r0   r   )r  r   resultst_deltar   r   r   r   r   r   test_auto_date_locator=  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 ]\}}|| }| ||}tttt| |kssJ qWd S )Nc                 S   r   )NTr   r   r   r   r   r   r    r  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:00z2020-01-01 00:00:00+00:00z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:00rG   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s'J d S )NTr   g    B@r   i  )00:00z00.0005z00.0009)r0   r   ConciseDateFormatterformat_ticksMUSECONDS_PER_DAY)r   r   	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sqJ q^d S )Nc                 S   sf   t  \}}tjdd}t|}|j| |j| || | |j	
  dd | D }|S )NTr   c                 S   r   r   r   r
   str   r   r   r     r   zMtest_concise_formatter.<locals>._create_auto_date_locator.<locals>.<listcomp>r   rC   r0   r   r  yaxisrv   r   rR   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      g | ]}t |qS r   rs   r
   r   r   r   r   r     r   z*test_concise_formatter.<locals>.<listcomp>    rG   r  )1997FebMarAprMayJunJulAugSepOctNovDecr  r   )
Jan15r-  r9  r.  r9  r/  r9  r0  r9  r  )r8  05091317212529r-  r:  r;  r   )zJan-0104:0008:0012:0016:0020:00zJan-02rA  rB  rC  rD  r  )r  00:0500:1000:1500:20r	  )	r  r:  10r9  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@   








rW  zt_delta, expectedg{Gz?r	  z1997-Jan-01 00:00r  z1997-Jan-01 00:011997-Jan-011997-Jan-02z1997-Jan    i  c                 C   s~   t  ddd}||  }t \}}t }t|}|j| |j| |	||gddg |j
  | |ks=J d S )Nr  r   r   )r   r   rC   r0   r   r  ru   rv   r   r"   r   r   
get_offset)r  r   r   r   r*   r+   r   r   r   r   r   "test_concise_formatter_show_offset  s   


r]  c                 C   r   r   r   r)  r   r   r   r   (  r   r*  r+  r  )r8  $\mathdefault{05}$$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$r-  r^  r_  )zJan$\mathdefault{{-}01}$$\mathdefault{04:00}$$\mathdefault{08:00}$$\mathdefault{12:00}$$\mathdefault{16:00}$z$\mathdefault{20:00}$zJan$\mathdefault{{-}02}$r`  ra  rb  rc  )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   sh   t  ddd}||  }tjdd}|  |t|t| tj|dd}|| |ks2J d S )Nr  r   Tr   r   )r   r0   r   r   r   r1   r  r  )r  r   r   r   r   r   r   r   r   test_concise_formatter_usetex&  s   rd  c               
         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swJ qdd S )N)z%Yz%m/%Yzday: %d%H hr %M minrf  z	%S.%f secc                    j   t  \}}tjdd}tj| d}|j| |j| || | |j	
  dd | D }|S )NTr   formatsc                 S   r   r   r   r   r   r   r   r   T  r   zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>r"  r%  rh  r   r   r  K  s   
zAtest_concise_formatter_formats.<locals>._create_auto_date_locatorr  r   r   r   c                 S   r'  r   r(  r)  r   r   r   r   Y  r   z2test_concise_formatter_formats.<locals>.<listcomp>r*  r+  rG   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: 15rj  ro  rk  ro  rl  ro  rm  ro  r  )rn  day: 05day: 09zday: 13zday: 17zday: 21zday: 25zday: 29rj  rp  rq  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: 02rr  rs  rt  ru  r  )00 hr 00 minz00 hr 05 minz00 hr 10 minz00 hr 15 minz00 hr 20 minr	  )	rv  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 secrv  z00.500000 secz01.000000 secz01.500000 secz02.000000 secz02.500000 secrU  rV  r   rh  r   test_concise_formatter_formatsG  s&    
rw  c               
      re  )N)r[  z'%yz%Bz%m-%dz%Sz%S.%fc                    rg  )NTr   zero_formatsc                 S   r   r   r   r   r   r   r   r     r   zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>r"  r%  rx  r   r   r    s   
zBtest_concise_formatter_zformats.<locals>._create_auto_date_locatorr  r   r   r   c                 S   r'  r   r(  r)  r   r   r   r     r   z3test_concise_formatter_zformats.<locals>.<listcomp>r*  r+  rG   r  )z'97r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r  r   )
Januaryr9  Februaryr9  Marchr9  Aprilr9  r0  r9  r  )rz  r:  r;  r<  r=  r>  r?  r@  r{  r:  r;  r   )z01-01rA  rB  rC  rD  rE  z01-02rA  rB  rC  rD  r  )00rF  rG  rH  rI  r	  )	r~  r:  rJ  r9  rK  r?  rL  rM  rN  r   )rO  z00.0rP  rQ  rR  rS  rT  rU  rV  r   rx  r   test_concise_formatter_zformats~  sB   








r  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s]J |	|kscJ qFd S )Nc                 S   sx   t  \}}tjdd}tj||d}|j| |j| || | |j	
  dd | D }||j  fS )NTr   tzc                 S   r   r   r   r   r   r   r   r     r   zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>)r   rC   r0   r   r  r#  rv   r   rR   r   r   r$  get_offset_textr   )r   r   r  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:00r  r  r  r  r  rY  rG   r  )r  z03:05z03:10z03:15z03:20rX  r	  )	r  r:  rJ  r9  rK  r?  rL  rM  rN  z1997-Jan-01 03:00r   )rO  r  rP  rQ  rR  rS  rT  r   )r   replacetimezoneutcr	   )
r  r   r  new_tzr  expected_stringsexpected_offsetr   r  offsetr   r   r   test_concise_formatter_tz  s4   



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f}tjd}t j ddd|d}|D ]7\}}tddi% || }| |||}tttt	j
| |d}||ks~J W d    n1 sw   Y  qVd S )Nc                 S   s2   t jd|d}|  |t | t | |S )NTr   r  r   )r   r   r  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   )
r  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  )r  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   )r  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:00rG   r  )r  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	  )	r  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_modeFr  )r   r	   r   r  gettzr   r  r  rs   r0   r   )	r  r  r  r   r  r   r   r   r!  r   r   r   !test_auto_date_locator_intmult_tz  sD   






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 r]   )r   r   rC   rb   rR   r	   invert_yaxisrS   rT   r   r   r   test_date_inverted_limit"  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sNJ d S )NzEurope/Brusselsr   r   r   r   r   !   r   )r  r
  g      ?r   r   freqperiodsg    p&A
0000-12-31c                    s   g | ]}|   qS r   r   r
   iinterval_daysr/   r   r   r   ?      z&_test_date2num_dst.<locals>.<listcomp>)r   r  r  r0   r   r   r	   r1   r   r?   r   r  )
date_range
tz_convertBRUSSELSr   dtstartr   Ndt_utcdt_bxlexpected_ordinalf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r*| |}|S )Nr   	normalize)super__sub__getattrr  
isinstancer   
mk_tzaware)r   otherrr   	localizer	__class__r   r   r  Q  s   

z-test_date2num_dst.<locals>.dt_tzaware.__sub__c                    s   |  t |S rB   )r  r  __add__)r   r  r  r   r   r  _     z-test_date2num_dst.<locals>.dt_tzaware.__add__c                    s   t  |}| |S rB   )r  
astimezoner  )r   r   r   r  r   r   r  b  s   
z0test_date2num_dst.<locals>.dt_tzaware.astimezonec                 S   s<   i }d}|D ]}t ||d }|d ur|||< q| di |S )N)r   r   r   r   minutesecondmicrosecondr   r   )r  )clsdatetime_objkwargsattrsattrvalr   r   r   r  f  s   	z0test_date2num_dst.<locals>.dt_tzaware.mk_tzaware)
r   r   r   __doc__r  r  r  classmethodr  __classcell__r   r   r  r   
dt_tzawareI  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  z  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   )dt_listr   r   r   r   r    r  z%test_date2num_dst.<locals>.tz_convert)r   r  )r  r  r   r  r   test_date2num_dstE  s   1r  c                    s    fdd}t  j| d S )Nc                     s    j j|  tS rB   )DatetimeIndexr  astypeobject)argspdr   r   r    r  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sIJ d S )NzAustralia/Sydneyr   r   r   r   )r  r     r   r      )	r   r0   r   r   r   DAILYbetweenr  tzutc)	attach_tzget_tzSYDr  dtendrule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   )r  r   zir   r   r   r    s   z$test_rrulewrapper.<locals>.attach_tz)r  r   r  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 rB   )localizer  r   r   r   r    s   
z)test_rrulewrapper_pytz.<locals>.attach_tz)ro   importorskipr  r  )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}|  |t|d d	 t|d
 d	  t	
g d}|tt	d }t	j||  g d}ttttj|  d}||ksdJ d S )Nr  zAmerica/New_Yorkc              	      s*   g | ]}  td ddt| qS )rX   r   )r  r   r	   r  r  r   r   r     s
    z)test_yearlocator_pytz.<locals>.<listcomp>rW   Tr  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:00r  )ro   r  r  r   r0   r   r   r   r1   r   r   r?   r#   assert_allcloser  r  rs   r   )r  r   r   r   r   r!  r   r  r   test_yearlocator_pytz  s    


r  c                   C   s   t t tjdd W d    n1 sw   Y  t t tjdd W d    n1 s1w   Y  t t tjdd W d    n1 sLw   Y  t t tjdd W d    n1 sgw   Y  tjdd d S )Nr   r   g      r   g?r   )ro   raises
ValueErrorr0   rw   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   r0   r   tzname)r   r   r   r   test_tz_utc  s   r  z	x, tdeltag      ?c                 C   s   t | }||ksJ d S rB   )r0   num2timedelta)r   tdeltar   r   r   r   test_num2timedelta  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?   r0   r1   r   r#   r$   )r   dnr   r   r   r   test_datetime64_in_list  s   
r  c                  C   s  t d} t  t  tt td W d    n1 s"w   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?   r0   r   	get_epochro   r  RuntimeErrorr   r  r#   r$   r1   floatr  )dater   r   r   r   test_change_epoch  s.   





r  c                  C   s   t jdddd} tjdd}dg|jd< |  |t| d	 t| d
  tj	t
dd}| }W d    d S 1 s>w   Y  d S )Nz
2001-01-10z
2001-03-04r  r   Fr   r   r   r   r   zAutoDateLocator was unable)match)r   aranger0   r   	intervaldr   r   r1   ro   rp   rq   )r   r   r|   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s;J dt jd< t  \}}|| tt|  |j  |	 d 
 dksbJ |	 d	 
 dksnJ tt}dt jd< W d    d S 1 sw   Y  d S )Nconcisezdate.converterz
2020-01-01
2020-05-01r  r   r   r8  r   r9  rh   zJan 01 2020Jan 15 2020boo)r   r   r   r  rC   r"   rr   r   r   r   r   ro   rp   rq   )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s;J dt jd< t  \}}|| tt|  |j  |	 d 
 dksbJ |	 d	 
 dksnJ 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  rC   r"   rr   r   r   r   r   )r   r*   r+   r   r   r   test_change_interval_multiples,  s   



r	  c                   C   p   t   t d t ddksJ t ddksJ t   t d t ddks-J t ddks6J d S )	Nr  iQ     x%A    z%Ai  r  r   r   )r0   r   r   	epoch2num	num2epochr   r   r   r   test_epoch2num?  s   

r  c                   C   r
  )	Nr  g   @ƞBAr  r  g   ƞBAr  r   r   )r0   r   r   
julian2num
num2julianr   r   r   r   test_julian2numK  s   

r  )Hr   dateutil.tzr   dateutil.rruler   numpyr   ro   
matplotlibr   matplotlib.datesr   r0   matplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   matplotlib.tickertickerr   r.   markparametrizer4   r9   rA   rE   rV   r\   rc   rf   r~   r   r   r   r   r   r   r	   r   r   r   r  r  r  rW  r]  rd  rw  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   r   <module>   s    	









 




G
L1
	




74)G
A



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