U
    ÂmœdIß  ã                   @   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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/d0„ Z%d1d2„ Z&ed3gƒd4d5„ ƒZ'd6d7„ Z(d8d9„ Z)ed:gƒd;d<„ ƒZ*d=d>„ Z+d?d@„ Z,ej dAe j-dBdC�dDdE„ e.dFdGdHƒD ƒfe j-dIdJ�dKdE„ e.ddLd
ƒD ƒfe j-dHdM�dNdE„ e.d dOd	ƒD ƒfe j-dPdQ�dRdE„ e.d dSƒD ƒfg¡dTdU„ ƒZ/dVdW„ Z0e&dXdY„ ƒZ1e&dZd[„ ƒZ2d\d]„ Z3d^d_„ Z4ej d`e j-dadb�dcfe j-ddQ�ddfe j-ddM�defe j-ddJ�dffe j-ddC�dgfe j-dhdC�dife j-djdC�difg¡dkdl„ ƒZ5dmdn„ Z6dodp„ Z7ej d`e j-dBdC�dqdE„ e.drdsdHƒD ƒfe j-dtdJ�dudvdwdxdydzd{d|d}dvdwgfe j-dtdM�d~dd€d�d‚dƒd„dd€d�d‚gfe j-d	db�d…d†d‡dˆd‰dŠd‹gfg¡dŒd�„ ƒZ8dŽd�„ Z9d�d‘„ Z:d’d“„ Z;d”d•„ Z<ed–gƒd—d˜„ ƒZ=d™dš„ Z>d›dœ„ Z?d�dž„ Z@dŸd „ ZAd¡d¢„ ZBejjCd£d¤„ ƒZDejjCd¥d¦„ ƒZEd§d¨„ ZFd©dª„ ZGd«d¬„ ZHej d­de j-ddJ�fdd®ge j-ddJ�e j-d®dJ�gfg¡d¯d°„ ƒZId±d²„ ZJd³d´„ ZKdµd¶„ ZLd·d¸„ ZMd¹dº„ ZNd»d¼„ ZOd½d¾„ ZPd¿dÀ„ ZQej dÁdÂ¡dÃdÄ„ ƒZRdÅdÆ„ ZSej dÇdÈejTfdejUfdÉejVfdtejWfdÊejXfdËejYff¡dÌ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© úT/home/sam/Atlas/atlas_env/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    

r2   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%   Úassert_array_equal)r   r-   Útmplr0   r1   r   r   r   Útest_date2num_NaT6   s
    
r7   ÚunitsÚsÚmsÚusÚnsc                 C   s$   t  t d| ¡¡}t |¡s t‚d S )Nr3   )r.   r/   r   Ú
datetime64ÚisnanÚAssertionError)r8   r6   r   r   r   Útest_date2num_NaT_scalarB   s    r@   c               	      sÆ   t   ddd¡‰ tjj‡ fdd„tdƒD ƒdddddddgd	�} t | ¡}tj tj 	|¡d
¡ t j dddtj
d�‰ tjj‡ fdd„tdƒD ƒdddddddgd	�} t | ¡}tj tj 	|¡d
¡ d S )Néæ  é   é   c                    s    g | ]}ˆ t jd | d� ‘qS ©r   r   r
   ©r   Úir   r   r   r   K   s   ÿz(test_date2num_masked.<locals>.<listcomp>é   r   r   )Úmask)FTTFFFT©Útzinfoc                    s    g | ]}ˆ t jd | d� ‘qS rD   r
   rE   r   r   r   r   T   s   ÿ)r   r   Úmar    r   r.   r/   r%   r5   ZgetmaskÚUTC)ÚdatesZnpdatesr   r   r   Útest_date2num_maskedH   s(    ÿÿ
ÿÿÿ
ÿrN   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_empty\   s&    ÿÿ
ÿÿrX   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%   rS   rT   rW   r   r   r   Útest_date_not_emptyr   s
    
r\   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   rP   )r!   rQ   Úaxhliner$   r   r=   r%   rS   rT   r.   r/   rU   rV   rW   r   r   r   Útest_axhline{   s&    
 ÿÿ

 ÿÿr_   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!   rQ   ZaxhspanÚset_ylimr   Úsubplots_adjust©r-   Útfr)   r*   r   r   r   Útest_date_axhspan�   s    ÿrn   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   ra   éÚ  rb   rc   rd   re   iÐ  r   )r   r!   rQ   ZaxvspanÚset_xlimr   Úautofmt_xdaterl   r   r   r   Útest_date_axvspan›   s    ÿrs   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 ©Nr`   r   ra   é   rc   r   ©ÚcolorZlwrg   r   rd   rh   )r   r!   rQ   r^   rj   r   rk   rl   r   r   r   Útest_date_axhline§   s    ÿrx   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 )
Nro   r   ra   rb   Úredr   rv   rg   r   )r   r!   rQ   Zaxvlinerq   r   rr   rl   r   r   r   Útest_date_axvline³   s    ÿrz   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ÚWARNINGro   r   ra   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>)Z	set_levelr   r!   rQ   ÚpytestÚwarnsÚUserWarningrq   Úlenr?   ÚstrÚmessager$   r[   Úset_major_locatorr.   Ú
DayLocatorZget_major_locatorÚrecordsÚall)Zcaplogr-   rm   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.   rU   rV   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$   r.   ÚrrulewrapperÚdateutilÚrruleZYEARLYÚRRuleLocatorr[   rˆ   Úset_major_formatterÚAutoDateFormatterÚautoscale_viewrr   )r8   r-   rm   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ÚdayrJ   é   )r.   r‰   r   rL   Ú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 )	Nrg   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)r.   r    r¡   r¢   ZSECONDLYr£   r   ÚlistÚmapr†   Ú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¦   rr   )r8   r-   rm   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   9  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)rg   é7   )rB   é   )rC   é-   c                 S   s   g | ]}|  ¡ ‘qS r   rÂ   rÄ   r   r   r   r   E  s     Úminor)Úwhichz30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r!   ÚrcParamsr   rQ   r$   r[   rˆ   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_unitM  ó    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  s     zVtest_date_formatter_callable.<locals>.callable_formatting_function.<locals>.<listcomp>r   )rM   Ú_r   r   r   Úcallable_formatting_functionO  s    zBtest_date_formatter_callable.<locals>.callable_formatting_functioniöÿÿÿéÞ  rB   é   z25-12//2014)r.   r¥   Zscaledr   r?   )rÙ   rÝ   Ú	formatterr   r   r   Útest_date_formatter_callableJ  s
    
rá   zdelta, expectedé (  ©Úweeksc                 C   s   g | ]}d | ‘qS ©z$\mathdefault{%d}$r   )r   r©   r   r   r   r   Y  s     r   éÆ  i{  ra   r¿   r   c                 C   s   g | ]}d | ‘qS )z $\mathdefault{1990{-}01{-}%02d}$r   )r   r«   r   r   r   r   [  s     é    ©Úhoursc                 C   s   g | ]}d | ‘qS )z$\mathdefault{01{-}01\;%02d}$r   )r   Úhourr   r   r   r   ]  s     rb   r   ©Úminutesc                 C   s   g | ]}d | ‘qS )z$\mathdefault{01\;00{:}%02d}$r   )r   Zminur   r   r   r   _  s     é   c                    s|   t  d¡ t ddd¡}||  }tjdd�}| ¡  |j t |¡t |¡¡ tj	|dd�‰ ‡ fdd	„|ƒ D ƒ|ksxt
‚d S )
NÚdefaultræ   r   F©Úinterval_multiplesT©Zusetexc                    s   g | ]}ˆ |ƒ‘qS r   r   )r   r®   ©rà   r   r   r   l  s     z.test_date_formatter_usetex.<locals>.<listcomp>)r   Zuser   r.   ÚAutoDateLocatorÚcreate_dummy_axisÚaxisÚset_view_intervalr/   r¥   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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   rI   r   rè   é   ©Úmicrosecondsrß   é   é   éÿÿÿÿN)r   r.   rL   r   r…   Zdranger?   r¸   )ÚstartÚendr÷   Z	dateranger   r   r   Útest_drangeo  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:00ra   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í   rB   rÀ   )r   r   r   rý   rg   rþ   rG   rg   )Úmaxticks)r   r   r¶   r·   r†   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:00ra   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·   r†   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!   rQ   r.   ró   r!  Úyaxisrˆ   r¤   rj   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   s   g | ]}t |ƒ‘qS r   ©r†   ©r   rÑ   r   r   r   r   E  s     z*test_concise_formatter.<locals>.<listcomp>é¼  é™  ra   r  Ú1997ÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecr	  r   ÚJanÚ15r
  Ú05Ú09Ú13Ú17Ú21Ú25Ú29rè   zJan-01ú04:00ú08:00ú12:00ú16:00ú20:00z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_formatter6  s`    
ÿ
   ÿÿ
 ÿÿ
 ÿÿ
    ÿÿ
ÿ
ÿ
ÿç
r[  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!   rQ   r.   ró   r!  r[   rˆ   r¤   r$   rÍ   rÎ   Ú
get_offsetr?   )r  r»   r¹   rº   r)   r*   r§   rà   r   r   r   Ú"test_concise_formatter_show_offsetg  s    


rc  c                  C   sz   t   ddd¡t   ddd¡g} ddg}t ¡ \}}| | |¡ t ¡  |j_}|jjd ks\t	‚|j
| Ž  |jj|ksvt	‚d S )Nro   r   r²   r   ra   r   )r   r!   rQ   r$   r.   ZConciseDateConverterr[   Ú	converterr8   r?   rq   )r   Úyr)   r*   Úconvr   r   r   Útest_concise_converter_stays  s    

rg  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   ra  rã   r   r`  r   r^  rG   r¿   r0  )r!   rQ   r   r   r.   ró   r!  r[   rˆ   r¤   r$   rR   rb  r?   rq   )r)   r*   r¹   rº   r§   rà   r   r   r   Útest_offset_changes”  s*    
ÿrh  c                 C   s   g | ]}d |f ‘qS rå   r   r-  r   r   r   r   °  s     r.  r/  r
  r<  z$\mathdefault{05}$z$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$r1  zJan$\mathdefault{{-}01}$z$\mathdefault{04{:}00}$z$\mathdefault{08{:}00}$z$\mathdefault{12{:}00}$z$\mathdefault{16{:}00}$z$\mathdefault{20{:}00}$zJan$\mathdefault{{-}02}$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sft	‚d S )Nr  r   Trï   rñ   )
r   r.   ró   rô   rõ   rö   r/   r!  r"  r?   )r  r»   r¹   rº   r§   rà   r   r   r   Útest_concise_formatter_usetex®  s    ri  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*  rk  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/  ra   r  r0  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 secrY  rZ  r   rk  r   Útest_concise_formatter_formatsÏ  sº      ÿ ÿ
          þ
        þ
         þ
        ý  ÿ
      ý
     þå 
rm  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 )JNr`  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*  rn  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/  ra   r  z'97r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r	  r   ÚJanuaryr=  ÚFebruaryZMarchZAprilr
  r>  r?  r@  rA  rB  rC  rD  rè   z01-01rE  rF  rG  rH  rI  z01-02rë   Z00rJ  rK  rL  rM  r  rN  rO  rP  rQ  rR  r   rS  z00.0rT  rU  rV  rW  rX  rY  rZ  r   rn  r   Útest_concise_formatter_zformats  sr    
ÿ
     ÿÿ

    ÿÿ
    ÿÿ
    ÿÿ
ÿ
ÿ
ÿç
rr  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   D  s     zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>)r!   rQ   r.   ró   r!  r(  rˆ   r¤   rj   rÍ   rÎ   r)  Zget_offset_textrÃ   )r  r  rt  r)   r*   r§   rà   r+  r   r   r   r  ;  s    
z<test_concise_formatter_tz.<locals>._create_auto_date_locatorr  r   rI   r
  rè   z03:00z07:00z11:00z15:00z19:00z23:00r]  ra   rë   z03:05z03:10z03:15z03:20r\  r  r>  rN  r=  rO  rC  rP  rQ  rR  z1997-Jan-01 03:00r   rS  rT  rU  rV  rW  rX  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>    
    ÿý
þ
þ
þóry  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ð   rt  r  )r  r  rt  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  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:00ra   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   rI   z_internal.classic_modeFrs  )r   r   r¡   rt  Úgettzr   r¶   r·   r†   r.   r¸   r?   )	r  r  rt  r¹   r  r»   rº   r§   r&  r   r   r   Ú!test_auto_date_locator_intmult_tzc  s¼    
     ûÿ
     ûÿ
    üÿ
    ûÿ
    ûÿ
 þÿ
   üÿÔ5r|  zdate_inverted_limit.pngc                  C   st   t   ddd¡} t   ddd¡}t ¡ \}}|j| ddd� | | t jdd	� |t jdd	� ¡ | ¡  |jd
d� d S rt   )r   r!   rQ   r^   rj   r   Zinvert_yaxisrk   rl   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s¢t‚d S )NzEurope/BrusselsrÞ   r   r¿   r   rI   é!   rÈ   )rì   r  i€Q rÀ   ©r   ÚfreqZperiodsg    ´p&ArP   c                    s   g | ]}ˆ|ˆ   ‘qS r   r   rE   ©Zinterval_daysr-   r   r   r   Æ  s     z&_test_date2num_dst.<locals>.<listcomp>)r¡   rt  r{  r.   rL   r   r   r  r/   r   r=   r   r¶   r?   )Ú
date_rangeÚ
tz_convertZBRUSSELSrL   Údtstartrš   ÚNZdt_utcZdt_bxlZexpected_ordinalfZactual_ordinalfr   r�  r   Ú_test_date2num_dst¶  s    

r†  c                     s4   G dd„ dt j ƒ‰ ‡ fdd„} dd„ }t| |ƒ d S )Nc                       sD   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡ fdd„Zedd	„ ƒZ‡  Z	S )
z%test_date2num_dst.<locals>.dt_tzawarezü
        This bug specifically occurs because of the normalization behavior of
        pandas Timestamp objects, so in order to replicate it, we need a
        datetime-like object that applies timezone normalization after
        subtraction.
        c                    sX   t ƒ  |¡}t|dd ƒ}|d k	r>t|dd ƒ}|d k	r>| |¡}t|tjƒrT|  |¡}|S )NrJ   Ú	normalize)ÚsuperÚ__sub__Úgetattrr‡  Ú
isinstancer   Ú
mk_tzaware)rÓ   ÚotherÚrrJ   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Ó   rJ   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´   rJ   )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   rE   ©r„  r€  r   r   r     s     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   ÚdrI   r   r   r     s     z9test_date2num_dst.<locals>.tz_convert.<locals>.<listcomp>r   )Zdt_listrJ   r   rI   r   rƒ    s    z%test_date2num_dst.<locals>.tz_convert)r   r†  )r‚  rƒ  r   r¡  r   Útest_date2num_dstÌ  s    1r£  c                    s   ‡ fdd„}t ˆ j|ƒ d S )Nc                     s   ˆ j j| Ž  t¡S r‘  )ZDatetimeIndexrƒ  ÚastypeÚobject)Úargs©Úpdr   r   rƒ    s    z,test_date2num_dst_pandas.<locals>.tz_convert)r†  r‚  )r¨  rƒ  r   r§  r   Útest_date2num_dst_pandas  s    r©  c                 C   s–   |dƒ}| t   dddd¡|ƒ}| t   dddd¡|ƒ}tjtjj|d�}| ||¡}t j ddddtj ¡ d�t j ddd	d
tj ¡ d�g}||ks’t	‚d S )NúAustralia/Sydneyr   rý   r   r   )r€  r„  é   rI   r   é   )
r   r.   r    r¡   r¢   ÚDAILYZbetweenrt  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 )NrI   )ru  ©rÛ   Zzir   r   r   r®  '  s    z$test_rrulewrapper.<locals>.attach_tzrª  r   rý   r   r   )r€  r„  rJ   Zuntilr   rI   r   )r³  r¡   rt  r{  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)r‚   Úimportorskipr³  rv  )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 )rp   r   )r¹  r   r   rE   rs  r   r   r   K  s   ÿÿz)test_yearlocator_pytz.<locals>.<listcomp>ro   Trz  r   r   rÿ   g{ŸªjÀa&Ag{Ÿªjšd&Ag{Ÿªjtg&Ag{ŸªjNj&Ag{Ÿªj*m&Ag{Ÿªjp&Ag{ŸªjÞr&ArP   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:00rs  r   g‚£ªª‰Ì@g‚£ªª*‰Ì@g‚£ªª:‰Ì@g‚£ªªJ‰Ì@g‚£ªªZ‰Ì@g‚£ªªj‰Ì@g‚£ªªz‰Ì@g‚£ªªŠ‰Ì@g‚£ªªš‰Ì@)r‚   rº  rv  r   r.   ró   rô   rõ   rö   r/   r   r    r=   r%   rS   r¶   r·   r†   r¸   r?   Zallcloser­   Zget_locator)r¸  r   r§   rÑ   r»   r&  r   rs  r   Útest_yearlocator_pytzF  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_locatorh  s    ÿz.test_YearLocator.<locals>._create_year_locatorræ   r   râ   rã   ra   )r   rª   r«   r  r  rµ   r  r  r  r  r  r  r  r  r  rg   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_YearLocatorg  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   )r‚   ÚraisesÚ
ValueErrorr.   r‰   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   rI   rL   )r   r.   rL   Útznamer?   ©rÛ   r   r   r   Útest_tz_utcš  s    rÇ  z	x, tdeltar]   c                 C   s   t  | ¡}||kst‚d S r‘  )r.   Znum2timedeltar?   )r   Z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&ArP   )r   r=   r.   r/   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 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-01rO   údatetime64[D]ÚintrP   rÉ  z1970-01-01T01:00:00gUUUUUU¥?ú1970-01-01T00:00:00z1970-01-01T12:00:00g      à?)r   r=   r.   rU   Z	get_epochr‚   rÁ  ÚRuntimeErrorrV   r¤  r%   r&   r/   ÚfloatrS   )Ú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/   r‚   rƒ   r„   )rM   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   r<  r   r=  r|   zJan 01 2020úJan 15 2020Úboo)r!   rË   r   rÕ  rQ   r$   r…   rÍ   rÎ   rÏ   rÃ   r?   r‚   rÁ  rÂ  ©rM   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Õ  rQ   r$   r…   rÍ   rÎ   rÏ   rÃ   r?   rÚ  r   r   r   Útest_change_interval_multiplesñ  s    



rÝ  c                	   C   sˆ   t  tj¡�r t ¡  t d¡ t d¡dks2t‚t 	d¡dksDt‚t ¡  t d¡ t d¡dksht‚t 	d¡dkszt‚W 5 Q R X d S )	NrP   g   @ÆžBAg    xò%Ag    zò%Ag   ÀÆžBArÎ  r   r   )
r‚   rƒ   r   ÚMatplotlibDeprecationWarningr.   rU   rV   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Ä  rI   r   ZIcelandú
2022-01-10z
2022-01-08rA   rÀ   r   rv  z Aiceland is not a valid timezonerÓ  ZAicelandrs  z%tz must be string or tzinfo subclass.)r.   ZDateLocatorZnonsingularr   Úinfr?   rô   Zdatalim_to_dtr   rv  rw  rt  rL   r¡   r{  Ú
set_tzinforõ   Zset_data_intervalr/   r!   rË   r‚   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â  ç    €ŽÒ@rA   r   r   r³   z2022-01)rî   z2022-02g    @–Ò@r   )	r.   Zdatestr2numr?   r   rÑ  r   r‹   r    ÚsizerÆ  r   r   r   Útest_datestr2numA  s      ÿþ
 ÿÿré  Úkwarg)rl  ro  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 )Nr`  rj  z argument must be a listrÓ  )r.   ró   r‚   rÁ  rÂ  r!  )rê  r§   r˜  rÔ  r   r   r   Ú!test_concise_formatter_exceptionsM  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_callW  s    
rì  zspan, expected_locatorg{®Gáz”?é   éÈ   ro   c              	   C   s8   t  tj¡�" t | ¡\}}t||ƒs*t‚W 5 Q R X d S r‘  )r‚   rƒ   r   rÞ  r.   Zdate_ticker_factoryr‹  r?   )ÚspanZexpected_locatorr§   rÜ   r   r   r   Útest_date_ticker_factory^  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   n  s     z(test_datetime_masked.<locals>.<listcomp>r   rþ   r   r   rý   rg   r   rà  )
r   r    r   rK   Zmasked_greaterr!   rQ   r$   rT   r?   )r   re  Úmr)   r*   r   r   r   Útest_datetime_maskedk  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Ó  )r‚   rÁ  rÂ  r.   r¸   )r›  r   r   r   Útest_num2date_errorw  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 rI   gq®<  jø@rg   )r.   r¸   r   rv  rw  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   rI   z%Y-%b-%d %H:%Mz2011-Jan-01 00:00zPacific/Kiritimatiz2011-Jan-01 14:00)r.   r/   r   rL   ZDateFormatterr?   rä  )r'   rà   r   r   r   Útest_DateFormatter_settz…  s    ÿ

r÷  )_r   Zdateutil.tzr¡   Zdateutil.rruler’   Únumpyr   r‚   Z
matplotlibr   r   r   Zmatplotlib.datesrM   r.   Zmatplotlib.pyplotZpyplotr!   Zmatplotlib.testing.decoratorsr   Zmatplotlib.tickerZtickerrÐ   r,   ÚmarkZparametrizer2   r7   r@   rN   rX   r\   r_   rn   rs   rx   rz   r�   r”   r¨   r±   r¼   r½   rÒ   rá   r   r   rø   r  r  r  r$  r[  rc  rg  rh  ri  rm  rr  ry  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Ì   ZHourLocatorr‰   ZWeekdayLocatorZMonthLocatorr½  rð  ró  rô  rö  r÷  r   r   r   r   Ú<module>   sv  ÿÿÿþû	
ý
ý

	






 
ÿ
ÿ
ÿ
ÿù

 
O
K1ù	

ÿ
     ýÿ
    ûÿ
  ýÿñ
74)F
A


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