U
    d»{jÓ×  ã                   @   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ddddg¡dd„ ƒƒZej dddddg¡dd„ ƒZej dddddg¡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/d0„ Z%ed1gƒd2d3„ ƒZ&d4d5„ Z'd6d7„ Z(ed8gƒd9d:„ ƒZ)d;d<„ Z*d=d>„ Z+ej d?e j,d@dA�e-dBdCdDƒfe j,dEdF�dGdH„ e-ddId
ƒD ƒfe j,dDdJ�dKdH„ e-d dLd	ƒD ƒfe j,dMdN�dOdH„ e-d dPƒD ƒfg¡dQdR„ ƒZ.dSdT„ Z/e%dUdV„ ƒZ0e%dWdX„ ƒZ1dYdZ„ Z2d[d\„ Z3ej d]e j,d^d_�d`fe j,ddN�dafe j,ddJ�dbfe j,ddF�dcfe j,ddA�ddfe j,dedA�dffe j,dgdA�dffg¡dhdi„ ƒZ4djdk„ Z5ej d]e j,d@dA�e-dldmdDƒfe j,dndF�dodpdqdrdsdtdudvdwdpdqgfe j,dndJ�dxdydzd{d|d}d~dydzd{d|gfe j,d	d_�dd€d�d‚dƒd„d…gfg¡d†d‡„ ƒZ6dˆd‰„ Z7dŠd‹„ Z8dŒd�„ Z9dŽd�„ Z:ed�gƒd‘d’„ ƒZ;d“d”„ Z<d•d–„ Z=d—d˜„ Z>d™dš„ Z?d›dœ„ Z@ejjAd�dž„ ƒZBejjAdŸd „ ƒZCd¡d¢„ ZDd£d¤„ ZEd¥d¦„ ZFej d§de j,ddF�fdd¨ge j,ddF�e j,d¨dF�gfg¡d©dª„ ƒZGd«d¬„ ZHd­d®„ ZId¯d°„ ZJd±d²„ ZKd³d´„ ZLdµd¶„ ZMd·d¸„ ZNd¹dº„ ZOd»d¼„ ZPej d½d¾¡d¿dÀ„ ƒZQdÁdÂ„ ZRej dÃdÄejSfdejTfdÅejUfdnejVfdÆejWfdÇejXff¡dÈdÉ„ ƒZYdÊdË„ ZZdÌdÍ„ Z[ej dÎdÏ¡dÐdÑ„ ƒZ\dÒdÓ„ Z]dÔdÕ„ 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 d	d
dg¡}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© úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/matplotlib/tests/test_dates.pyÚ
<listcomp>   s     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_NaT6   s
    
r5   ÚunitsÚsÚmsÚusÚnsc                 C   s$   t  t d| ¡¡}t |¡s t‚d S )Nr2   )r-   r.   r   Ú
datetime64ÚisnanÚAssertionError)r6   r4   r   r   r   Útest_date2num_NaT_scalarB   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ú
1970-01-01z
1970-01-02ú
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_emptyH   s&    ÿÿ
ÿÿrH   c                  C   sH   t  ¡ } |  ¡ }| ddgddg¡ |j ¡  tj | 	¡ ddg¡ d S )Né2   éF   r   r   )
r    r!   r"   r#   ÚxaxisZ	axis_dater   r$   rC   rD   rG   r   r   r   Útest_date_not_empty^   s
    
rL   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    rA   Úaxhliner#   r   r;   r$   rC   rD   r-   r.   rE   rF   rG   r   r   r   Útest_axhlineg   s&    
 ÿÿ

 ÿÿrO   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    rA   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   rQ   éÚ  rR   rS   rT   rU   iÐ  r   )r
   r    rA   ZaxvspanÚset_xlimr   Úautofmt_xdater\   r   r   r   Útest_date_axvspan‡   s    ÿrc   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 ©NrP   r   rQ   é   rS   r   ©ÚcolorZlwrW   r   rT   rX   )r
   r    rA   rN   rZ   r   r[   r\   r   r   r   Útest_date_axhline“   s    ÿrh   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   rQ   rR   Úredr   rf   rW   r   )r
   r    rA   Zaxvlinera   r   rb   r\   r   r   r   Útest_date_axvlineŸ   s    ÿrj   c              	   C   sì   |   d¡ t ddd¡}t ddd¡}t ¡ \}}t t¡�>}|j||fdd� t|ƒdks`t	‚dt
|d jƒksvt	‚W 5 Q R X | g g ¡ |j t ¡ ¡ |j ¡ ƒ }t|ƒd	ks¸t	‚| jrÒtd
d„ | jD ƒƒsÖt	‚t| jƒdksèt	‚d S )NÚWARNINGr_   r   rQ   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.tickerrk   N)ÚnameÚ	levelname)r   Úrecordr   r   r   Ú	<genexpr>Á   s   ÿz+test_too_many_date_ticks.<locals>.<genexpr>)Z	set_levelr
   r    rA   ÚpytestÚwarnsÚUserWarningra   Úlenr=   ÚstrÚmessager#   rK   Úset_major_locatorr-   Ú
DayLocatorZget_major_locatorÚrecordsÚall)Zcaplogr,   r]   r(   r)   Z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)r-   rE   rF   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   rm   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ÚRRuleLocatorrK   rx   Úset_major_formatterÚAutoDateFormatterÚautoscale_viewrb   )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-   ry   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sjt‚d S )	NrW   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Úmaprv   Únum2daterŸ   r=   )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–   rb   )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} d
ddg}t  ¡ \}}| | |¡ |j t d¡¡ |j	 
¡  dd„ | ¡ D ƒ}ddddddg}||ksªt‚|j t ¡ ¡ |j t d¡¡ t d¡}|j t |¡¡ |j t d¡¡ |j	 
¡  dd„ |jdd�D ƒ}ddddd g}||k�s6t‚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   %  s     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)rW   é7   )é   é   )é   é-   c                 S   s   g | ]}|  ¡ ‘qS r   r³   rµ   r   r   r   r   1  s     Úminor)Úwhichz30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r    ÚrcParamsr
   rA   r#   rK   rx   r-   ÚMinuteLocatorÚcanvasÚdrawÚget_xticklabelsr=   ÚmtickerZNullLocatorZset_minor_locatorZset_minor_formatterr•   )Útr   r(   r)   Z
ticklabelsr¬   Z	decoy_locr   r   r   Útest_locator_set_formatter  s4    
þ

  ÿ

rÅ   c                  C   sN   G dd„ dƒ} dd„ }t  | ƒ ¡}||jd< |t ddd¡gƒd	gksJt‚d S )
Nc                   @   s   e Zd Zdd„ ZdS )z.test_date_formatter_callable.<locals>._Locatorc                 S   s   dS )Niõÿÿÿr   )Úselfr   r   r   Ú	_get_unit9  ó    z8test_date_formatter_callable.<locals>._Locator._get_unitN)Ú__name__Ú
__module__Ú__qualname__rÇ   r   r   r   r   Ú_Locator8  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   <  s     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Ì   rÑ   Ú	formatterr   r   r   Útest_date_formatter_callable6  s
    
rÕ   zdelta, expectedé (  ©ÚweekséÆ  i{  rQ   r°   r   c                 C   s   g | ]}d | ‘qS )z1990-01-%02dr   )r   r›   r   r   r   r   G  s     r   é    ©Úhoursc                 C   s   g | ]}d | ‘qS )z
01-01 %02dr   )r   Úhourr   r   r   r   I  s     rR   r   ©Úminutesc                 C   s   g | ]}d | ‘qS )z
01 00:%02dr   )r   Zminur   r   r   r   K  s     é   c                    s†   t  d¡ t ddd¡}||  }tjdd�}| ¡  |j t |¡t |¡¡ tj	|dd�‰ ‡ fdd	„|ƒ D ƒd
d	„ |D ƒks‚t
‚d S )NÚdefaultrÙ   r   F©Úinterval_multiplesT©Zusetexc                    s   g | ]}ˆ |ƒ‘qS r   r   )r   r    ©rÔ   r   r   r   X  s     z.test_date_formatter_usetex.<locals>.<listcomp>c                 S   s   g | ]}d | ‘qS ©z+{\fontfamily{\familydefault}\selectfont %s}r   ©r   r7   r   r   r   r   X  s    )r   Zuser
   r-   ÚAutoDateLocatorÚcreate_dummy_axisÚaxisÚset_view_intervalr.   r•   r=   )Údeltar¬   rª   r«   r—   r   rå   r   Útest_date_formatter_usetexC  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sNt‚|t jdd� }tt | ||¡ƒdksxt‚|t jdd� }tt | ||¡ƒdks¢t‚t j dddtjd�}t jd	d�}t | ||¡}t|ƒd
ksàt‚t |d ¡|| ksút‚dS )zj
    This test should check if drange works as expected, and if all the
    rounding errors are fixed
    éÛ  r   ©rœ   r   rÛ   é   ©ÚmicrosecondsrÓ   é   é   éÿÿÿÿN)r
   r-   rž   r   ru   Zdranger=   r©   )ÚstartÚendrì   Z	dateranger   r   r   Útest_drange\  s    rø   c                  C   sà  dd„ } t   ddd¡}t jdd�ddd	d
ddddddg
gt jdd�ddddddddddddggt jdd�dd d!d"d#d$d%ggt jd&d�d'd(d)d*d+d,ggt jd&d-�dd.d/d0d1d2d3d4d5d6d7ggt jd8d9�dd:d;d<d=ggt jd&d>�dd?d@dAdBdCdDdEdFg	gt jdGdH�dIddJdKdLdMggf}|D ]<\}}|| }| ||ƒ}tttt |ƒ ¡ƒƒ|k�st‚�qtjdNdO�}|j	dPdQdPdQdPdPdRdSœk�s|t‚tjt
jjdTidU�}|j	dPdTdPdQdPdPdRdSœk�s°t‚tjdTdU�}|j	dTdTdTdTdTdTdTdSœk�sÜt‚d S )VNc                 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_locator~  s    z9test_auto_date_locator.<locals>._create_auto_date_locatorrÙ   r   rÖ   r×   z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:00é4   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Û   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:00rQ   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©Úsecondsz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:00z 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à   r¸   r±   )r   r   r   ró   rW   rô   é   rW   )Úmaxticks)r
   r   r§   r¨   rv   r-   r©   r=   rè   r  r‘   r’   ZMONTHLY)rý   rª   ÚresultsÚt_deltar¬   r«   r—   r   r   r   Útest_auto_date_locator|  sÀ    
    üÿ
     ûÿ
  ýÿ
  þÿ
    ûÿ
 þÿ
   üÿ
ûÿÒ8
$  r  c                  C   sh  dd„ } t jdd�ddddd	d
ddddddggt jdd�ddddddddddddggt jdd�dd dd!dd"dd#dd$g
gt jd%d�dd&d'd(d)d*d+d,dd-d.ggt jd%d/�dd0d1d2d3d4d5d6d7d8d9ggt jd:d;�dd<d=d>d?ggt jd%d@�ddAdBdCdDdEdFdGdHg	gt jdIdJ�dKddLdMdNdOggf}t   dPdQdQ¡}|D ]<\}}|| }| ||ƒ}tttt |ƒ ¡ƒƒ|k�s&t‚�q&d S )RNc                 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×   ú1980-01-01 00:00:00+00:00ú2000-01-01 00:00:00+00:00r¦   ú2040-01-01 00:00:00+00:00ú2060-01-01 00:00:00+00:00ú2080-01-01 00:00:00+00:00ú2100-01-01 00:00:00+00:00ú2120-01-01 00:00:00+00:00ú2140-01-01 00:00:00+00:00ú2160-01-01 00:00:00+00:00ú2180-01-01 00:00:00+00:00ú2200-01-01 00:00:00+00:00rþ   z1997-01-01 00:00:00+00:00z1997-02-01 00:00:00+00:00z1997-03-01 00:00:00+00:00z1997-04-01 00:00:00+00:00z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   z1997-01-15 00:00:00+00:00z1997-02-15 00:00:00+00:00z1997-03-15 00:00:00+00:00z1997-04-15 00:00:00+00:00z1997-05-15 00:00:00+00:00r   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:00z1997-02-05 00:00:00+00:00z1997-02-09 00:00:00+00:00rÛ   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:00rQ   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  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:00z 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¨   rv   r-   r©   r=   )rý   r  rª   r  r¬   r«   r—   r   r   r   Útest_auto_date_locator_intmultÌ  sÈ    
     ûÿ
     ûÿ
    üÿ
    ûÿ
    ûÿ
 þÿ
   üÿ
ûÿÍ=
r  c                  C   sT   t jdd�} t  | ¡}d}| ||dt j  |dt j  g¡}|dddgksPt‚d S )	NTrâ   g    €BÃ@rˆ   i„  ú00:00z00.0005z00.0009)r-   rè   ÚConciseDateFormatterÚformat_ticksZMUSECONDS_PER_DAYr=   )r—   rÔ   Z	year_1996Ústringsr   r   r   Ú test_concise_formatter_subsecond  s    
ýr  c                  C   sR  dd„ } t   ddd¡}t jdd�dd„ td	d
dƒD ƒgt jdd�ddddddddddddggt jdd�ddddddddddg
gt jdd�dddd d!d"d#d$dddggt jdd%�d&d'd(d)d*d+d,d'd(d)d*ggt jdd-�d.d/d0d1d2ggt jdd3�d.dd4dd5d#d6d7d8g	gt jd9d3�d:d.d;d<d=d>d?ggf}|D ]*\}}|| }| ||ƒ}||k�s"t‚�q"d 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   -  s     zMtest_concise_formatter.<locals>._create_auto_date_locator.<locals>.<listcomp>©r    rA   r-   rè   r  Úyaxisrx   r”   rZ   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   ©rv   ©r   rÄ   r   r   r   r   2  s     z*test_concise_formatter.<locals>.<listcomp>é¼  é™  rQ   rþ   Ú1997ÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecrÿ   r   ÚJanÚ15r   Ú05Ú09Ú13Ú17Ú21Ú25Ú29rÛ   úJan-01ú04:00ú08:00ú12:00ú16:00ú20:00úJan-02rÞ   r  ú00:05ú00:10ú00:15ú00:20r  Ú10Ú20Ú30Ú35Ú40r   ú59.5ú00.5ú01.0ú01.5ú02.0ú02.5©r
   r   r   r=   ©rý   rª   r  r  r¬   r«   r  r   r   r   Útest_concise_formatter#  s`    
ÿ
   ÿÿ
 ÿÿ
 ÿÿ
    ÿÿ
ÿ
ÿ
ÿç
rT  zt_delta, expectedg{®Gáz„?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szt‚d S )Nr  r   r   )r
   r    rA   r-   rè   r  rK   rx   r”   r#   rÀ   rÁ   Ú
get_offsetr=   )r  r¬   rª   r«   r(   r)   r—   rÔ   r   r   r   Ú"test_concise_formatter_show_offsetT  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€t‚| ||tjdd� ¡ |  ¡  | ¡ dks°t‚| |tjd	d� |tjd
d� ¡ |  ¡  | ¡ dksìt‚| ||tjdd� ¡ |  ¡  | ¡ dk�st‚d S )Nr  r   rZ  r×   r   rY  r   rW  r  r°   r'  )r    rA   r
   r   r-   rè   r  rK   rx   r”   r#   rB   r[  r=   ra   )r(   r)   rª   r«   r—   rÔ   r   r   r   Útest_offset_changesl  s*    
ÿr]  r%  r&  r   r3  r5  r6  r7  r8  r9  r:  r;  r(  r<  r=  r>  r?  r@  rA  rB  rL  r  rM  rN  rO  rP  rQ  c                 C   st   t   ddd¡}||  }tjdd�}| ¡  |j t |¡t |¡¡ tj|dd�}| |ƒ ¡dd„ |D ƒkspt	‚d S )Nr  r   Trâ   rä   c                 S   s   g | ]}d | ‘qS ræ   r   rç   r   r   r   r   š  s    z1test_concise_formatter_usetex.<locals>.<listcomp>)
r
   r-   rè   ré   rê   rë   r.   r  r  r=   )r  r¬   rª   r«   r—   rÔ   r   r   r   Útest_concise_formatter_usetex†  s    ÿr^  c                     sf  ddddddg‰ ‡ fdd„} t   dd	d	¡}t jd
d�dd„ tdddƒD ƒgt jdd�ddddddddddddggt jdd�d d!dd!dd!dd!dd!g
gt jd"d�d d#d$d%d&d'd(d)dd#d$ggt jd"d*�d+d,d-d.d/d0d1d,d-d.d/ggt jdd2�d3d4d5d6d7ggt jd"d8�d3d9d:d;d<d=d>d?d@g	gt jdAd8�dBd3dCdDdEdFdGggf}|D ]*\}}|| }| ||ƒ}||k�s6t‚�q6d S )HNú%Yz%m/%Yzday: %dz%H hr %M minz	%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   «  s     zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>r  r!  r`  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   °  s     z2test_concise_formatter_formats.<locals>.<listcomp>r%  r&  rQ   rþ   r'  z02/1997z03/1997z04/1997z05/1997z06/1997z07/1997z08/1997z09/1997z10/1997z11/1997z12/1997rÿ   r   z01/1997zday: 15r   zday: 05zday: 09zday: 13zday: 17zday: 21zday: 25zday: 29rÛ   zday: 01z04 hr 00 minz08 hr 00 minz12 hr 00 minz16 hr 00 minz20 hr 00 minzday: 02rÞ   z00 hr 00 minz00 hr 05 minz00 hr 10 minz00 hr 15 minz00 hr 20 minr  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 secz00.500000 secz01.000000 secz01.500000 secz02.000000 secz02.500000 secrR  rS  r   r`  r   Útest_concise_formatter_formatsž  sº      ÿ ÿ
          þ
        þ
         þ
        ý  ÿ
      ý
     þå 
rb  c                     sf  ddddddg‰ ‡ fdd„} t   d	d
d
¡}t jdd�dd„ tdddƒD ƒgt jdd�ddddddddddddggt jdd �d!d"d#d"d$d"d%d"dd"g
gt jd&d �d!d'd(d)d*d+d,d-d#d'd(ggt jd&d.�d/d0d1d2d3d4d5d0d1d2d3ggt jdd6�d7d8d9d:d;ggt jd&d<�d7d'd=d"d>d,d?d@dAg	gt jdBd<�dCdDdEdFdGdHdIggf}|D ]*\}}|| }| ||ƒ}||k�s6t‚�q6d S )JNrY  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â   ©Úzero_formatsc                 S   s   g | ]}|  ¡ ‘qS r   r³   r  r   r   r   r   â  s     zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>r  r!  rc  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   ç  s     z3test_concise_formatter_zformats.<locals>.<listcomp>r%  r&  rQ   rþ   z'97r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  rÿ   r   ÚJanuaryr4  ÚFebruaryZMarchZAprilr   r5  r6  r7  r8  r9  r:  r;  rÛ   z01-01r=  r>  r?  r@  rA  z01-02rÞ   Z00rC  rD  rE  rF  r  rG  rH  rI  rJ  rK  r   rL  z00.0rM  rN  rO  rP  rQ  rR  rS  r   rc  r   Útest_concise_formatter_zformatsÕ  sr    
ÿ
     ÿÿ

    ÿÿ
    ÿÿ
    ÿÿ
ÿ
ÿ
ÿç
rg  c            
      C   sü   dd„ } t   ddd¡jt jjd�}t jdd�dd	d
ddddd	d
ddgdgt jdd�dddddgdgt jdd�dddddddddg	dgt jd d�d!dd"d#d$d%d&gdgf}t  t jd'd�¡}|D ]:\}}}|| }| |||ƒ\}}	||ksêt‚|	|ks¼t‚q¼d 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     s     zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>)r    rA   r-   rè   r  r  rx   r”   rZ   rÀ   rÁ   r   Zget_offset_textr´   )rû   rü   ri  r(   r)   r—   rÔ   r"  r   r   r   rý   
  s    
z<test_concise_formatter_tz.<locals>._create_auto_date_locatorr  r   rï   r   rÛ   z03:00z07:00z11:00z15:00z19:00z23:00rV  rQ   rÞ   z03:05z03:10z03:15z03:20rU  r  r5  rG  r4  rH  r:  rI  rJ  rK  z1997-Jan-01 03:00r   rL  rM  rN  rO  rP  rQ  r   )r
   ÚreplaceÚtimezoneÚutcr   r=   )
rý   rª   r  Znew_tzr  Zexpected_stringsZexpected_offsetr«   r  Úoffsetr   r   r   Útest_concise_formatter_tz	  s>    
    ÿý
þ
þ
þórn  c            	      C   s€  dd„ } t jdd�ddddd	d
ddddddggt jdd�ddddddddddddggt jdd�dd dd!dd"dd#dd$g
gt jd%d�dd&d'd(d)d*d+d,dd-d.ggt jd%d/�dd0d1d2d3d4d5d6d7d8d9ggt jd:d;�dd<d=d>d?ggt jd%d@�ddAdBdCdDdEdFdGdHg	gf}tj dI¡}t j dJdKdK|dL�}|D ]^\}}tdMdNiƒ�B || }| |||ƒ}tttt	j
|ƒ |dO�ƒƒ}||k�snt‚W 5 Q R X �qd S )PNc                 S   s0   t jd|d�}| ¡  |jjt  | |g¡Ž  |S )NT©rã   ri  rù   )rû   rü   ri  r—   r   r   r   rý   3  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þ   z1997-01-01 00:00:00-08:00z1997-02-01 00:00:00-08:00z1997-03-01 00:00:00-08:00z1997-04-01 00:00:00-08:00z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   z1997-01-15 00:00:00-08:00z1997-02-15 00:00:00-08:00z1997-03-15 00:00:00-08:00z1997-04-15 00:00:00-07:00z1997-05-15 00:00:00-07:00r   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:00z1997-02-05 00:00:00-08:00z1997-02-09 00:00:00-08:00rÛ   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:00rQ   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  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_modeFrh  )r
   r   r‘   ri  Úgettzr   r§   r¨   rv   r-   r©   r=   )	rý   r  ri  rª   r  r¬   r«   r—   r  r   r   r   Ú!test_auto_date_locator_intmult_tz2  s¼    
     ûÿ
     ûÿ
    üÿ
    ûÿ
    ûÿ
 þÿ
   üÿÔ5rq  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 rd   )r
   r    rA   rN   rZ   r   Zinvert_yaxisr[   r\   r   r   r   Útest_date_inverted_limitx  s    ÿrr  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s¢t‚d S )NzEurope/BrusselsrÒ   r   r°   r   rï   é!   r»   )rß   r  é€Q r±   ©rö   ÚfreqZperiodsg    ´p&Ar@   c                    s   g | ]}ˆ|ˆ   ‘qS r   r   ©r   Úi©Zinterval_daysr,   r   r   r   •  s     z&_test_date2num_dst.<locals>.<listcomp>)r‘   ri  rp  r-   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   ry  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 k	r>t|dd ƒ}|d k	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   s8   i }d}|D ] }t ||d ƒ}|d k	r|||< q| f |Ž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   rw  ©r|  rv  r   r   r   Ó  s     z9test_date2num_dst.<locals>.date_range.<locals>.<listcomp>)r„  r   ru  ©r—  r˜  r   rz  Ð  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   ×  s     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~  )rz  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~  rz  )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s’t	‚d S )NúAustralia/Sydneyr   ró   r   r   )rv  r|  é   rï   r   é   )
r
   r-   r�   r‘   r’   ÚDAILYZbetweenri  Ztzutcr=   )Ú	attach_tzZget_tzÚSYDr|  ÚdtendÚruleZ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|t
‚| |¡tjddddd|d
�ks t
‚|j|ks®t
‚|jdks¼t
‚d S )Nc                 S   s   | j |d�S )Nrï   )rj  ©rÎ   Zzir   r   r   r¦  ö  s    z$test_rrulewrapper.<locals>.attach_tzr¢  r   ró   r   r   )rv  r|  rœ   Zuntilr   rï   r   )r«  r‘   ri  rp  r
   r-   r�   r’   r¥  Úafterr=   ÚbeforeZ_base_tzinfoZ	_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)rr   Úimportorskipr«  rk  )r°  r¦  r   r   r   Útest_rrulewrapper_pytz
  s    
r³  c                     sf  t  d¡} |  d¡‰ ‡ fdd„tdƒD ƒ}tjdˆ d�}| ¡  |j t 	|d ¡d	 t 	|d
 ¡d	 ¡ t
 dddddddg¡}|t 	t
 d¡¡ }t
j ||ƒ ¡ dddddddg}ttttj|ƒ ˆ d�ƒƒ}||ksÞt‚t
 | |d |d ¡t
 ddddd d!d"d#d$g	¡¡�st‚t
 | |d |d ¡ |d |d ¡t
 ddddd d!d"d#d$g	¡¡�sbt‚d S )%Nr°  zAmerica/New_Yorkc              	      s*   g | ]"}ˆ   t d dd¡¡t |¡ ‘qS )r`   r   )r±  r
   r   rw  rh  r   r   r     s   ÿÿz)test_yearlocator_pytz.<locals>.<listcomp>r_   Tro  r   r   rõ   g{ŸªjÀa&Ag{Ÿªjšd&Ag{Ÿªjtg&Ag{ŸªjNj&Ag{Ÿªj*m&Ag{Ÿªjp&Ag{ŸªjÞr&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:00rh  r   g‚£ªª‰Ì@g‚£ªª*‰Ì@g‚£ªª:‰Ì@g‚£ªªJ‰Ì@g‚£ªªZ‰Ì@g‚£ªªj‰Ì@g‚£ªªz‰Ì@g‚£ªªŠ‰Ì@g‚£ªªš‰Ì@)rr   r²  rk  r   r-   rè   ré   rê   rë   r.   r   r   r;   r$   rC   r§   r¨   rv   r©   r=   ZallcloserŸ   Zget_locator)r°  r   r—   rÄ   r¬   r  r   rh  r   Útest_yearlocator_pytz  s`    


ÿÿ
   ÿ   ý   þÿ&   þÿÿr´  c                  C   sÞ   dd„ } t   ddd¡}t jdd�ddddœd	d
ddddddddddggt jdd�ddddœdddddddddd d!d"ggt jd#d�dd$d%dœd&d'ggf}|D ]>\}}}|| }| ||f|Ž}tttt |ƒ ¡ƒƒ|ksšt‚qšd S )(Nc                 [   s2   t jf |Ž}| ¡  |j t  | ¡t  |¡¡ |S r‰  )r-   ÚYearLocatorré   rê   rë   r.   )rû   rü   r�  r—   r   r   r   Ú_create_year_locator7  s    ÿz.test_YearLocator.<locals>._create_year_locatorrÙ   r   rÖ   r×   rQ   )r   rš   r›   r	  r
  r¦   r  r  r  r  r  r  r  r  r  rW   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_YearLocator6  sR    

     ûþ	

     ûþ	

þîr¸  c                	   C   s˜   t  t¡� tjdd� W 5 Q R X t  t¡� tjdd� W 5 Q R X t  t¡� tjdd� W 5 Q R X t  t¡� tjdd� W 5 Q R X tjdd� d S )Nrõ   r‰   g      ø¿r   gÍÌÌÌÌÌô?r   )rr   ÚraisesÚ
ValueErrorr-   ry   r   r   r   r   Útest_DayLocator]  s    r»  c                  C   s(   t j dddtjd�} |  ¡ dks$t‚d S )Né²  r   rï   rž   )r
   r-   rž   Útznamer=   ©rÎ   r   r   r   Útest_tz_utci  s    r¿  z	x, tdeltarM   c                 C   s   t  | ¡}||kst‚d S r‰  )r-   Znum2timedeltar=   )r   ZtdeltarÎ   r   r   r   Útest_num2timedeltan  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_listw  s    
ÿrÃ  c               	   C   s  t  d¡} t ¡  t ¡  t t¡� t d¡ W 5 Q R X 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-01r?   údatetime64[D]Úintr@   rÁ  z1970-01-01T01:00:00gUUUUUU¥?ú1970-01-01T00:00:00z1970-01-01T12:00:00g      à?)r   r;   r-   rE   Z	get_epochrr   r¹  ÚRuntimeErrorrF   rœ  r$   r%   r.   ÚfloatrC   )ÚdaterÎ   r   r   r   Útest_change_epoch€  s,    





þrÊ  c               	   C   sv   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 5 Q R X 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.   rr   rs   rt   )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^t‚| 	¡ d	  
¡ d
ksvt‚dt jd< t  ¡ \}}| | t t| ƒ¡¡ |j ¡  | 	¡ d  
¡ dksÄt‚| 	¡ d	  
¡ dksÜt‚t t¡� dt jd< W 5 Q R X d S )NZconcisezdate.converterz
2020-01-01ú
2020-05-01rÄ  r   r   r3  r   r4  rl   zJan 01 2020úJan 15 2020Úboo)r    r¾   r   rÍ  rA   r#   ru   rÀ   rÁ   rÂ   r´   r=   rr   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^t‚| 	¡ d	  
¡ d
ksvt‚dt jd< t  ¡ \}}| | t t| ƒ¡¡ |j ¡  | 	¡ d  
¡ dksÄt‚| 	¡ d	  
¡ dksÜt‚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Í  rA   r#   ru   rÀ   rÁ   rÂ   r´   r=   rÒ  r   r   r   Útest_change_interval_multiplesÀ  s    



rÕ  c                	   C   s„   t  ¡ �r t ¡  t d¡ t d¡dks.t‚t d¡dks@t‚t ¡  t d¡ t d¡dksdt‚t d¡dksvt‚W 5 Q R X d S )	Nr@   rt  ç    xò%Aç    zò%Ai £ rÆ  r   r   )r   Z'suppress_matplotlib_deprecation_warningr-   rE   rF   Z	epoch2numr=   Z	num2epochr   r   r   r   Útest_epoch2numÓ  s    


rØ  c                   C   sp   t  ¡  t  d¡ t  d¡dks$t‚t  d¡dks6t‚t  ¡  t  d¡ t  d¡dksZt‚t  d¡dkslt‚d S )	Nr@   g   @ÆžBArÖ  r×  g   ÀÆžBArÆ  r   r   )r-   rE   rF   Z
julian2numr=   Z
num2julianr   r   r   r   Útest_julian2numà  s    

rÙ  c               
   C   s²  t  ¡ } |  dtj¡dkst‚|  dd¡dks2t‚|  dd¡dksFt‚|  dd¡dksZt‚|  ¡  |  ¡ tjdddddtj	j
d�tjdddddtj	j
d�fks¢t‚| jt jks²t‚d}tj |¡}| j|ksÐt‚|  d¡ | j|ksèt‚|  ¡  | jjt  d	d
g¡Ž  |  ¡ tjddddd|d�tjddddd|d�fk�s@t‚|tjd< t  ¡ } | j|k�sbt‚tjtdd�� t jdd� W 5 Q R X tjtdd�� t jdd� W 5 Q R X d S )Nr   ©r   r   r   )éþÿÿÿr   r¼  rï   r   ZIcelandú
2022-01-10z
2022-01-08éæ  r±   r   rk  z Aiceland is not a valid timezonerË  ZAicelandrh  z%tz must be string or tzinfo subclass.)r-   ZDateLocatorZnonsingularr   Úinfr=   ré   Zdatalim_to_dtr
   rk  rl  ri  rž   r‘   rp  Ú
set_tzinforê   Zset_data_intervalr.   r    r¾   rr   r¹  rº  Ú	TypeError)r—   Ztz_strZ
iceland_tzr   r   r   Útest_DateLocatorî  sB    þ

ÿþ
ÿrá  c                  C   sœ   t  d¡dkst‚tjdddd�} t jd| d�dks8t‚t t jdd	g| d�t dd
g¡k¡sbt‚t  g ¡jdksvt‚t  g tjdddd�¡jdks˜t‚d S )NrÜ  ç    €ŽÒ@rÝ  r   r   r¤   z2022-01)rá   z2022-02g    @–Ò@r   )	r-   Zdatestr2numr=   r
   rÉ  r   r{   r   Úsizer¾  r   r   r   Útest_datestr2num  s      ÿþ
 ÿÿrä  Úkwarg)ra  rd  Zoffset_formatsc              	   C   sJ   t  ¡ }| ddgi}| › d�}tjt|d�� t j|f|Ž W 5 Q R X d S )NrY  r_  z argument must be a listrË  )r-   rè   rr   r¹  rº  r  )rå  r—   r�  rÌ  r   r   r   Ú!test_concise_formatter_exceptions(  s
    
ræ  c                  C   s8   t  ¡ } t  | ¡}|dƒdks"t‚| d¡dks4t‚d S )Nrâ  Z2022z2022-01-10 00:00:00)r-   rè   r  r=   Zformat_data_short)r—   rÔ   r   r   r   Útest_concise_formatter_call2  s    
rç  zspan, expected_locatorg{®Gáz”?é   éÈ   r_   c              	   C   s8   t  tj¡�" t | ¡\}}t||ƒs*t‚W 5 Q R X d S r‰  )rr   rs   r   ZMatplotlibDeprecationWarningr-   Zdate_ticker_factoryrƒ  r=   )ÚspanZexpected_locatorr—   rÐ   r   r   r   Útest_date_ticker_factory9  s    rë  c                  C   s,   t  ¡ \} }|j t d¡¡ | j ¡  d S )Nz%d/%m
%Y)r    rA   rK   r”   r-   ÚDateFormatterrÀ   rÁ   rG   r   r   r   Útest_usetex_newlineF  s    rí  c                  C   sh   t  dd„ tddƒD ƒ¡} t  dddddg¡}t j |d	¡}t ¡ \}}| | |¡ | ¡ d
ksdt	‚d S )Nc                 S   s   g | ]}t   d d|¡‘qS )r   r   )r
   )r   Únr   r   r   r   O  s     z(test_datetime_masked.<locals>.<listcomp>r   rô   r   r   ró   rW   r   rÚ  )
r   r   r   ÚmaZmasked_greaterr    rA   r#   rD   r=   )r   ÚyÚmr(   r)   r   r   r   Útest_datetime_maskedL  s    rò  r“  )iÀ½ðÿi€–˜ c              	   C   s0   t jtd| › d�d�� t | ¡ W 5 Q R X d S )NzDate ordinal z	 convertsrË  )rr   r¹  rº  r-   r©   )r“  r   r   r   Útest_num2date_errorX  s    ró  c                   C   sZ   t  d¡tjdddddddtjjd�ks,t‚t  d	¡tjdddddd
tjjd�ksVt‚d S )Ngj®<  jø@iÃ  r   é   r   ró   i,B rï   gq®<  jø@rW   )r-   r©   r
   rk  rl  r=   r   r   r   r   Útest_num2date_roundoff^  s&           ÿ      ÿrõ  c               
   C   sV   t  tjdddddt jd�¡} t  d¡}|| ƒdks8t‚| d¡ || ƒdksRt‚d S )	Nrî   r   r   rï   z%Y-%b-%d %H:%Mz2011-Jan-01 00:00zPacific/Kiritimatiz2011-Jan-01 14:00)r-   r.   r
   rž   rì  r=   rß  )r&   rÔ   r   r   r   Útest_DateFormatter_settzf  s    ÿ

rö  )_r
   Zdateutil.tzr‘   Zdateutil.rruler‚   Únumpyr   rr   Z
matplotlibr   r   r   Zmatplotlib.datesrÏ   r-   Zmatplotlib.pyplotZpyplotr    Zmatplotlib.testing.decoratorsr   Zmatplotlib.tickerZtickerrÃ   r+   ÚmarkZparametrizer1   r5   r>   rH   rL   rO   r^   rc   rh   rj   r}   r„   r˜   r£   r­   r®   rÅ   rÕ   r   r   rí   rø   r  r  r  rT  r\  r]  r^  rb  rg  rn  rq  rr  r~  r›  r¡  r«  r¯  r°  r³  r´  r¸  r»  r¿  rÀ  rÃ  rÊ  rÎ  rÓ  rÕ  rØ  rÙ  rá  rä  ræ  rç  r¿   ZHourLocatorry   ZWeekdayLocatorZMonthLocatorrµ  rë  rí  rò  ró  rõ  rö  r   r   r   r   Ú<module>   sP  ÿÿÿþû	
ý
ý

	






 

ÿ
ÿ
ÿ
ÿù

 
O
K1ù	


ÿ
ÿ
    ÿÿ
ÿø
74)F
A


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