o
    liI                     @   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
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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'd0d1 Z(d2d3 Z)ed4gd5d6 Z*d7d8 Z+d9d: Z,ejd;e j-d<d=d>d? e.d@dAdBD fe j-dCdDdEd? e.ddFd
D fe j-dBdGdHd? e.d dId	D fe j-dJdKdLd? e.d dMD fgdNdO Z/dPdQ Z0e&dRdS Z1e&dTdU Z2dVdW Z3dXdY Z4ejdZe j-d[d\d]fe j-ddKd^fe j-ddGd_fe j-ddDd`fe j-dd=dafe j-dbd=dcfe j-ddd=dcfgdedf Z5dgdh Z6didj Z7ejdZe j-d<d=dkd? e.dldmdBD fe j-dndDg dofe j-dndGg dpfe j-d	d\g dqfgdrds Z8dtdu Z9dvdw Z:dxdy Z;dzd{ Z<ed|gd}d~ Z=dd Z>dd Z?dd Z@dd ZAdd ZBejjCdd ZDejjCdd ZEdd ZFdd ZGdd ZHejdde j-ddDfddge j-ddDe j-ddDgfgdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQejdddd ZRdd ZSejddejTfdejUfdejVfdnejWfdejXfdejYffdd ZZdd Z[ejdddd Z\dd Z]dd Z^dS )    N)_api
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 Y/home/ubuntu/SoloSpeech/.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   "r1   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'   )r2   r   r*   tnpnptimer   r   r   test_date_date2num_numpy"   s   

r7   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   r3   r4   r    nanr!   r&   assert_array_equal)r   r2   tmplr5   r6   r   r   r   test_date2num_NaT6   s
   
r<   units)smsusnsc                 C   s$   t td| }t|sJ d S )Nr8   )r3   r4   r    
datetime64isnan)r=   r;   r   r   r   test_date2num_NaT_scalarB   s   rD   c                     s   t  ddd tjj fddtdD g dd} t| }tjtj	|d	 t j dddtj
d
 tjj fddtdD g dd} t| }tjtj	|d	 d S )N        c                        g | ]} t jd | d qS r   r   r
   r   ir   r   r   r   K       z(test_date2num_masked.<locals>.<listcomp>   )r   r   r   r   r   r   r   )mask)FTTFFFTtzinfoc                    rH   rI   r
   rJ   r   r   r   r   T   rL   )r   r    mar!   r   r3   r4   r&   r:   getmaskUTC)datesnpdatesr   r   r   test_date2num_maskedH   s(   

rV   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
1970-01-01z
1970-01-02
0000-12-31)r"   subplots
xaxis_datedraw_without_renderingr    r&   assert_allcloseget_xlimr3   r4   rB   _reset_epoch_test_example	set_epochr-   r.   r   r   r   test_date_empty\   s&   
ra   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%   xaxis	axis_dater    r&   r\   r]   r`   r   r   r   test_date_not_emptyr   s
   
rf   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   rX   )r"   rY   axhliner%   r    rB   r&   r\   r]   r3   r4   r^   r_   r`   r   r   r   test_axhline{   s&   
 

 ri   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"   rY   axhspanset_ylimr   subplots_adjustr2   tfr-   r.   r   r   r   test_date_axhspan   s   rz   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   rk     rl   rm   rn   ro   i  r   )r   r"   rY   axvspanset_xlimr   autofmt_xdaterx   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 Nrj   r   rk      rm   r   colorlwrr   r   rn   rs   )r   r"   rY   rh   rv   r   rw   rx   r   r   r   test_date_axhline   s   r   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   rk   rl   redr   r   rr   r   )r   r"   rY   axvliner~   r   r   rx   r   r   r   test_date_axvline   s   r   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WARNINGr{   r   rk   T)autoz.Attempting to set identical low and high xlimsr     c                 s   s$    | ]}|j d ko|jdkV  qdS )zmatplotlib.tickerr   N)name	levelname)r   recordr   r   r   	<genexpr>   s
    
z+test_too_many_date_ticks.<locals>.<genexpr>)	set_levelr   r"   rY   pytestwarnsUserWarningr~   lenstrmessager%   rd   set_major_locatorr3   
DayLocatorget_major_locatorrecordsall)caplogr2   ry   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)r3   r^   r_   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   r   r   ip  Tr   r   omarker  interval)matplotlib.testing.jpl_unitsr&   	jpl_unitsregisterr   r"   r#   subplotset_autoscale_onr%   r3   rrulewrapperdateutilrruleYEARLYRRuleLocatorrd   r   set_major_formatterAutoDateFormatterautoscale_viewr   )r=   r2   ry   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dayrP      )r3   r   r   rS   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s5J d S )	Nrr   r     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)r3   r   r   r   SECONDLYr   r   listmapr   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   r   )r=   r2   ry   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   9      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)rr   7   )rF      )rG   -   c                 S   r   r   r   r   r   r   r   r   E  r   minor)which)z30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r"   rcParamsr   rY   r%   rd   r   r3   MinuteLocatorcanvasdrawget_xticklabelsmtickerNullLocatorset_minor_locatorset_minor_formatterr   )tr   r-   r.   
ticklabelsr   	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_unitM  s    z8test_date_formatter_callable.<locals>._Locator._get_unitN)__name__
__module____qualname__r   r   r   r   r   _LocatorL  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   P      zVtest_date_formatter_callable.<locals>.callable_formatting_function.<locals>.<listcomp>r   )rT   _r   r   r   callable_formatting_functionO  s   zBtest_date_formatter_callable.<locals>.callable_formatting_functioni  rF      z25-12//2014)r3   r   scaledr   )r   r   	formatterr   r   r   test_date_formatter_callableJ  s
   
"r   zdelta, expected(  weeksc                 C      g | ]}d | qS z$\mathdefault{%d}$r   )r   r   r   r   r   r   Y  r   r     i{  rk   r   r   c                 C   r  )z $\mathdefault{1990{-}01{-}%02d}$r   )r   r   r   r   r   r   [  r       hoursc                 C   r  )z$\mathdefault{01{-}01\;%02d}$r   )r   hourr   r   r   r   ]  r   rl   r   minutesc                 C   r  )z$\mathdefault{01\;00{:}%02d}$r   )r   minur   r   r   r   _  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s<J d S )
Ndefaultr  r   Finterval_multiplesTusetexc                    s   g | ]} |qS r   r   )r   r   r   r   r   r   l  r   z.test_date_formatter_usetex.<locals>.<listcomp>)
r   user   r3   AutoDateLocatorcreate_dummy_axisaxisset_view_intervalr4   r   )deltar   r   r   r   r   r  r   test_date_formatter_usetexW  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 }tt| ||dksQJ t j dddtjd}t jd	d}t| ||}t|d
kspJ t|d || ks}J dS )zj
    This test should check if drange works as expected, and if all the
    rounding errors are fixed
      r   rO   r   r     microsecondsr         N)r   r3   rS   r   r   dranger   )startendr  	dateranger   r   r   test_drangeo  s   r%  c               
   C   sr  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 qWtjdd}|jddddddddksJ tjt	j
jdid }|jddddddddksJ tjdd }|jddddddddksJ d S )!Nc                 S   .   t jdd}|  |jjt | |g  |S )NFr  r3   r  r  r  r  r4   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:00rk   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:00Fr  r  rF   r   )r   r   r   r  rr   r  rM   rr   )maxticks)r   r   r   r   r   r3   r   r  r4  r   r   MONTHLY)r+  r   resultst_deltar   r   r   r   r   r   test_auto_date_locator  sJ   







8
 "r8  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: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:00r0  )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:00rk   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:00r1  )	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:00r3  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   r3   r   )r+  r6  r   r7  r   r   r   r   r   r   test_auto_date_locator_intmult  s@   







=
 rA  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)r3   r  ConciseDateFormatterformat_ticksMUSECONDS_PER_DAY)r   r   	year_1996stringsr   r   r    test_concise_formatter_subsecond+  s   
rH  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"   rY   r3   r  rC  yaxisr   r   rv   r   r   get_yticklabelsr)  r*  r-   r.   r   r   stsr   r   r   r+  7  s   

z9test_concise_formatter.<locals>._create_auto_date_locatorr?  r   r   r   c                 S      g | ]}t |qS r   r   r   r   r   r   r   r   E  r   z*test_concise_formatter.<locals>.<listcomp>    rk   r.  )1997FebMarAprMayJunJulAugSepOctNovDecr/  r   )
Jan15rV  rb  rW  rb  rX  rb  rY  rb  r0  )ra  05091317212529rV  rc  rd  r  )zJan-0104:0008:0012:0016:0020:00zJan-02rj  rk  rl  rm  r	  )rB  00:0500:1000:1500:20r1  )	rB  rc  10rb  20rh  303540r   )59.5rB  00.501.001.502.002.5r   r   r   r+  r   r6  r7  r   r   rG  r   r   r   test_concise_formatter6  s@   








r  zt_delta, expectedg{Gz?r1  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s=J d S )Nr?  r   r   )r   r"   rY   r3   r  rC  rd   r   r   r%   r   r   
get_offset)r7  r   r   r   r-   r.   r   r   r   r   r   "test_concise_formatter_show_offsetg  s   


r  c                  C   sz   t  dddt  dddg} ddg}t \}}|| | t  |j_}|jjd u s.J |j	|   |jj|ks;J d S )Nr{   r   r   r   rk   r   )
r   r"   rY   r%   r3   ConciseDateConverterrd   	converterr=   r~   )r   yr-   r.   convr   r   r   test_concise_converter_stays  s   

r  c                  C   s   t  \} }tddd}|tjdd }t }t|}|j| |j	| |
||gddg |   | dks@J |||tjdd  |   | dksXJ ||tjd	d |tjd
d  |   | dksvJ |||tjdd  |   | dksJ d S )Nr?  r   r  r   r   r  r   r  rM   r   rU  )r"   rY   r   r   r3   r  rC  rd   r   r   r%   r[   r  r~   )r-   r.   r   r   r   r   r   r   r   test_offset_changes  s*   
r  c                 C   s   g | ]}d |f qS r  r   rR  r   r   r   r     r   rS  rT  r0  )ra  $\mathdefault{05}$$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$rV  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  r  r  r  )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s3J d S )Nr?  r   Tr  r  )	r   r3   r  r  r  r  r4   rC  rD  )r7  r   r   r   r   r   r   r   r   test_concise_formatter_usetex  s   r  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)%Yz%m/%Yzday: %d%H hr %M minr  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   rI  r   r   r   r     r   zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>rK  rN  r  r   r   r+    s   
zAtest_concise_formatter_formats.<locals>._create_auto_date_locatorr?  r   r   r   c                 S   rP  r   rQ  rR  r   r   r   r     r   z2test_concise_formatter_formats.<locals>.<listcomp>rS  rT  rk   r.  )rU  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: 15r  r  r  r  r  r  r  r  r0  )r  day: 05day: 09zday: 13zday: 17zday: 21zday: 25zday: 29r  r  r  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: 02r  r  r  r  r	  )00 hr 00 minz00 hr 05 minz00 hr 10 minz00 hr 15 minz00 hr 20 minr1  )	r  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 secr  z00.500000 secz01.000000 secz01.500000 secz02.000000 secz02.500000 secr~  r  r   r  r   test_concise_formatter_formats  s&    
r  c               
      r  )N)r  z'%yz%Bz%m-%dz%Sz%S.%fc                    r  )NTr  zero_formatsc                 S   r   r   r   rI  r   r   r   r     r   zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>rK  rN  r  r   r   r+  	  s   
zBtest_concise_formatter_zformats.<locals>._create_auto_date_locatorr?  r   r   r   c                 S   rP  r   rQ  rR  r   r   r   r     r   z3test_concise_formatter_zformats.<locals>.<listcomp>rS  rT  rk   r.  )z'97rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  r/  r   )
Januaryrb  Februaryrb  Marchrb  Aprilrb  rY  rb  r0  )r  rc  rd  re  rf  rg  rh  ri  r  rc  rd  r  )z01-01rj  rk  rl  rm  rn  z01-02rj  rk  rl  rm  r	  )00ro  rp  rq  rr  r1  )	r  rc  rs  rb  rt  rh  ru  rv  rw  r   )rx  z00.0ry  rz  r{  r|  r}  r~  r  r   r  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   rI  r   r   r   r   D  r   zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>)r"   rY   r3   r  rC  rL  r   r   rv   r   r   rM  get_offset_textr   )r)  r*  r  r-   r.   r   r   rO  r   r   r   r+  ;  s   
z<test_concise_formatter_tz.<locals>._create_auto_date_locatorr?  r   rO   r0  r  )03:0007:0011:0015:0019:00z23:00r  r  r  r  r  r  rk   r	  )r  z03:05z03:10z03:15z03:20r  r1  )	r  rc  rs  rb  rt  rh  ru  rv  rw  z1997-Jan-01 03:00r   )rx  r  ry  rz  r{  r|  r}  r   )r   replacetimezoneutcr   )
r+  r   r6  new_tzr7  expected_stringsexpected_offsetr   rG  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   s0   t jd|d}|  |jjt | |g  |S )NTr  r  r'  )r)  r*  r  r   r   r   r   r+  d  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:00r0  )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:00rk   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:00r1  )	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   rO   z_internal.classic_modeFr  )r   r   r   r  gettzr   r   r   r   r3   r   )	r+  r6  r  r   r7  r   r   r   rJ  r   r   r   !test_auto_date_locator_intmult_tzc  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"   rY   rh   rv   r   invert_yaxisrw   rx   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	}|jd
  d}| |||d}|||}dtt	
d  fddt|D }	tt|}
|
|	ksQJ d S )NzEurope/Brusselsr   r   r   r   rO   !   r   )r
  r2  iQ r   r"  freqperiodsg    p&ArX   c                    s   g | ]}|   qS r   r   rJ   interval_daysr2   r   r   r         z&_test_date2num_dst.<locals>.<listcomp>)r   r  r  r3   rS   r   r   r2  r4   r    rB   r   r   )
date_range
tz_convertBRUSSELSrS   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 )NrP   	normalize)super__sub__getattrr  
isinstancer   
mk_tzaware)r   otherrrP   	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       z-test_date2num_dst.<locals>.dt_tzaware.__add__c                    s   t  |}| |S r  )r  
astimezoner  )r   rP   r   r  r   r   r    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secondr   rP   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   rJ   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   drO   r   r   r     r   z9test_date2num_dst.<locals>.tz_convert.<locals>.<listcomp>r   )dt_listrP   r   rO   r   r    r  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  )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 )NAustralia/Sydneyr   r  r   r   )r  r     rO   r      )	r   r3   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 tjd}tdddd}tdddd}tjtjj|||d}|	|tjddd	dd|d
ks>J |
|tjddddd|d
ksPJ |j|ksWJ |jdks^J d S )Nc                 S   s   | j |dS )NrO   )r  r   zir   r   r   r
  '  s   z$test_rrulewrapper.<locals>.attach_tzr  r   r  r   r   )r  r  rP   untilr   rO   r   )r  r   r  r  r   r3   r   r   r  afterbefore_base_tzinfo	_interval)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 r  )localizer  r   r   r   r
  @  s   
z)test_rrulewrapper_pytz.<locals>.attach_tz)r   importorskipr  r  )r  r
  r   r   r   test_rrulewrapper_pytz;  s   
r  c                     s2  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seJ t
||d |d t
g dszJ t
||d |d |d |d t
g dsJ d S )Nr  zAmerica/New_Yorkc              	      s*   g | ]}  td ddt| qS )r|   r   )r  r   r   rJ   r  r   r   r   K  s
    z)test_yearlocator_pytz.<locals>.<listcomp>r{   Tr  r   r   r   )g{ja&Ag{jd&Ag{jtg&Ag{jNj&Ag{j*m&Ag{jp&Ag{jr&ArX   )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  r   )	g@g*@g:@gJ@gZ@gj@gz@g@g@)r   r  r  r   r3   r  r  r  r  r4   r    r!   rB   r&   r\   r   r   r   r   allcloser   get_locator)r  r   r   r   r   rJ  r   r  r   test_yearlocator_pytzF  s0   



&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 ]!\}}}|| }| ||fi |}tttt| |ksZJ q9d S )Nc                 [   s6   t jdi |}|  |jt | t | |S )Nr   )r3   YearLocatorr  r  r  r4   )r)  r*  r  r   r   r   r   _create_year_locatorh  s   z.test_YearLocator.<locals>._create_year_locatorr  r   r   r   rk   )r   r   r   r9  rr   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   r6  r  	argumentsr   r   r   r   r   r   test_YearLocatorg  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   )r   raises
ValueErrorr3   r   r   r   r   r   test_DayLocator  s   r'  c                  C   s(   t j dddtjd} |  dksJ d S )N  r   rO   rS   )r   r3   rS   tznamer   r   r   r   test_tz_utc  s   r+  z	x, tdeltarg   c                 C   s   t | }||ksJ d S r  )r3   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&ArX   )r    rB   r3   r4   r!   r&   r'   )r   dnr   r   r   r   test_datetime64_in_list  s   
r1  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-01rW   datetime64[D]intrX   r/  z1970-01-01T01:00:00gUUUUUU?1970-01-01T00:00:00z1970-01-01T12:00:00g      ?)r    rB   r3   r^   	get_epochr   r%  RuntimeErrorr_   r  r&   r'   r4   floatr\   )dater   r   r   r   test_change_epoch  s.   





r9  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    d S 1 s?w   Y  d S )Nz
2001-01-10z
2001-03-04r2  r   Fr  r   r   r   r   zAutoDateLocator was unablematch)r    aranger3   r  	intervaldr  r  r  r4   r   r   r   )rT   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-01r2  r   r   ra  r   rb  r   zJan 01 2020Jan 15 2020boo)r"   r   r    r<  rY   r%   r   r   r   r   r   r   r%  r&  rT   r-   r.   r   r   r   test_change_converter  s    



"rE  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-10rA  r2  r   r   zJan 10 2020r   zJan 24 2020TruerB  zFeb 01 2020)r"   r   r    r<  rY   r%   r   r   r   r   r   rD  r   r   r   test_change_interval_multiples  s   



rG  c                   C   s   t tj? t  td tddksJ tddks"J t  td tddks4J tddks=J W d    d S 1 sHw   Y  d S )	NrX   g   @ƞBAg    x%Ag    z%Ag   ƞBAr4  r   r   )	r   r   r   MatplotlibDeprecationWarningr3   r^   r_   
julian2num
num2julianr   r   r   r   test_julian2num  s   

"rK  c               
   C   s  t  } | dtjdksJ | dddksJ | dddks#J | dddks-J |   |  tjdddddtjj	dtjdddddtjj	dfksQJ | j
t jksYJ d}tj
|}| j
|kshJ | d | j
|kstJ |   | jjt d	d
g  |  tjddddd|dtjddddd|dfksJ |tjd< t  } | j
|ksJ tjtdd t jdd W d    n1 sw   Y  tjtdd t jdd W d    d S 1 sw   Y  d S )Nr   r   r   r   )r   r(  rO   r   Iceland
2022-01-10z
2022-01-08rE   r   r   r  z Aiceland is not a valid timezoner:  Aicelandr  z%tz must be string or tzinfo subclass.)r3   DateLocatornonsingularr    infr  datalim_to_dtr   r  r  r  rS   r   r  
set_tzinfor  set_data_intervalr4   r"   r   r   r%  r&  	TypeError)r   tz_str
iceland_tzr   r   r   test_DateLocator  sF   



"rZ  c                  C   s   t ddks	J tjdddd} t jd| ddksJ tt jdd	g| dtdd
gks1J t g jdks;J t g tjddddjdksLJ d S )NrO      @rE   r   r   r   z2022-01)r  z2022-02g    @@r   )r3   datestr2numr   r8  r    r   r!   sizer*  r   r   r   test_datestr2numA  s   
r^  kwarg)r  r  offset_formatsc                 C   sd   t  }| ddgi}|  d}tjt|d t j|fi | W d    d S 1 s+w   Y  d S )Nr  r  z argument must be a listr:  )r3   r  r   r%  r&  rC  )r_  r   r  r;  r   r   r   !test_concise_formatter_exceptionsM  s   
"ra  c                  C   s8   t  } t | }|ddksJ |ddksJ d S )Nr[  2022z2022-01-10 00:00:00)r3   r  rC  format_data_short)r   r   r   r   r   test_concise_formatter_callW  s   
rd  zspan, expected_locatorg{Gz?      r{   c                 C   sN   t tj t| \}}t||sJ W d    d S 1 s w   Y  d S r  )r   r   r   rH  r3   date_ticker_factoryr  )spanexpected_locatorr   r   r   r   r   test_date_ticker_factory^  s   "rj  c                  C   sb   t dd tddD } t g d}t j|d}t \}}|| | | dks/J d S )Nc                 S   s   g | ]	}t  d d|qS )r   r   )r   )r   nr   r   r   r   n  s    z(test_datetime_masked.<locals>.<listcomp>r   r  )r   r   r   r  rr   r   rL  )	r    r!   r   rQ   masked_greaterr"   rY   r%   r]   )r   r  mr-   r.   r   r   r   test_datetime_maskedk  s   rn  r  )ii c                 C   sF   t jtd|  dd t|  W d    d S 1 sw   Y  d S )NzDate ordinal z	 convertsr:  )r   r%  r&  r3   r   )r  r   r   r   test_num2date_errorw  s   "ro  c                   C   sZ   t dtjdddddddtjjdksJ t d	tjdddddd
tjjdks+J d S )Ngj<  j@i  r      r   r  i,B rO   gq<  j@rr   )r3   r   r   r  r  r   r   r   r   test_num2date_roundoff}  s   rq  c               
   C   sV   t tjdddddt jd} t d}|| dksJ |d || dks)J d S )	Nr  r   r   rO   z%Y-%b-%d %H:%Mz2011-Jan-01 00:00zPacific/Kiritimatiz2011-Jan-01 14:00)r3   r4   r   rS   DateFormatterrU  )r*   r   r   r   r   test_DateFormatter_settz  s   

rs  )_r   dateutil.tzr   dateutil.rruler   numpyr    r   
matplotlibr   r   r   matplotlib.datesrT   r3   matplotlib.pyplotpyplotr"   matplotlib.testing.decoratorsr   matplotlib.tickertickerr   r1   markparametrizer7   r<   rD   rV   ra   rf   ri   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r%  r8  rA  rH  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r'  r+  r.  r1  r9  r?  rE  rG  rK  rZ  r^  ra  rd  r   HourLocatorr   WeekdayLocatorMonthLocatorr!  rj  rn  ro  rq  rs  r   r   r   r   <module>   s6   	

	






 





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

 '

	 .


