B
    ·ôJdxÀ  ã               @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ dd„ Zej de   dddd dd¡e   dddd dd¡e   dddddd¡ge   dddd dd¡e   dddddd¡ge   dddd	dd¡e   dddd
dd¡ggg¡ej d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dBdC„ e.dDdEdFƒD ƒfe j-dGdHdIdC„ e.ddJd
ƒD ƒfe j-dFdKdLdC„ e.d dMd	ƒD ƒfe j-dNdOdPdC„ e.d dQƒD ƒfg¡dRdS„ ƒZ/dTdU„ Z0e&dVdW„ ƒZ1e&dXdY„ ƒZ2dZd[„ Z3d\d]„ Z4ej d^e j-d_d`dafe j-ddOdbfe j-ddKdcfe j-ddHddfe j-ddAdefe j-dfdAdgfe j-dhdAdgfg¡didj„ ƒZ5dkdl„ Z6ej d^e j-d@dAdmdC„ e.dndodFƒD ƒfe j-dpdHdqdrdsdtdudvdwdxdydrdsgfe j-dpdKdzd{d|d}d~dd€d{d|d}d~gfe j-d	d`dd‚dƒd„d…d†d‡gfg¡dˆd‰„ ƒZ7dŠd‹„ Z8dŒd„ Z9dŽd„ Z:dd‘„ Z;ed’gƒd“d”„ ƒZ<d•d–„ Z=d—d˜„ Z>d™dš„ Z?d›dœ„ Z@ddž„ ZAejjBdŸd „ ƒZCejjBd¡d¢„ ƒZDd£d¤„ ZEd¥d¦„ ZFd§d¨„ ZGej d©de j-ddHfddªge j-ddHe j-dªdHgfg¡d«d¬„ ƒZHd­d®„ ZId¯d°„ ZJd±d²„ ZKd³d´„ ZLdµd¶„ ZMd·d¸„ ZNd¹dº„ ZOdS )»é    N)Ú
rc_contextÚstyle)Úimage_comparisonc                 sð   t   ddd¡‰ ‡ fdd„tddƒD ƒ} tj| dd}t 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 )Niá  é   c                s   g | ]}ˆ t j|d  ‘qS ))Údays)ÚdatetimeÚ	timedelta)Ú.0Úx)Úbase© úM/var/www/html/venv/lib/python3.7/site-packages/matplotlib/tests/test_dates.pyú
<listcomp>   s    z$test_date_numpyx.<locals>.<listcomp>r   é   zdatetime64[ns])Údtypeg        g       @g      ð?)é
   é   )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"   Út0iá  r   r   r   r   zdatetime64[s]zdatetime64[us]zdatetime64[ms]zdatetime64[ns]c             C   s4   t  | ¡}tj| |d}t  |¡}tj ||¡ d S )N)r   )ÚmdatesÚdate2numr   r   r   r   )r#   r   r   ÚtnpÚnptimer   r   r   Útest_date_date2num_numpy#   s    

r(   c             C   sR   t   dddddd¡}t |¡tjg}tj|dg| d}t |¡}tj ||¡ d S )Niá  r   r   ÚNaT)r   )r   r$   r%   r   Únanr   r   Zassert_array_equal)r   r#   Útmplr&   r'   r   r   r   Útest_date2num_NaT7   s
    
r,   ÚunitsÚsÚmsÚusÚnsc             C   s$   t  t d| ¡¡}t |¡s t‚d S )Nr)   )r$   r%   r   Ú
datetime64ÚisnanÚAssertionError)r-   r+   r   r   r   Útest_date2num_NaT_scalarC   s    r5   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 )Nz
2000-01-01z
2010-01-01z
0000-12-31)r   ÚsubplotsZ
xaxis_dateÚdraw_without_renderingr   r   Úassert_allcloseÚget_xlimr$   r%   r2   Ú_reset_epoch_test_exampleÚ	set_epoch)r   r    r   r   r   Útest_date_emptyI   s    
r<   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   r8   r9   )r   r    r   r   r   Útest_date_not_empty_   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 )Ng      ø?z
2016-01-01z
2016-01-02r   r   z
0000-12-31)r   r6   Úaxhliner   r   r2   r   r8   r9   r$   r%   r:   r;   )r   r    r   r   r   Útest_axhlineh   s    
 

 rB   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 )NiÙ  r   é   é   Úblueg      Ð?)Ú	facecolorÚalphaé   )r   )Úleft)r   r   r6   ZaxhspanÚset_ylimr   Úsubplots_adjust)r#   Útfr   r    r   r   r   Útest_date_axhspan|   s    rM   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 )NiÐ  r   rC   iÚ  rD   rE   g      Ð?)rF   rG   iÐ  )r   )r   r   r6   ZaxvspanÚset_xlimr   Úautofmt_xdate)r#   rL   r   r    r   r   r   Útest_date_axvspanˆ   s    rP   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 )NiÙ  r   rC   é   rE   r   )ÚcolorÚlwrH   )r   g      Ð?)rI   )r   r   r6   rA   rJ   r   rK   )r#   rL   r   r    r   r   r   Útest_date_axhline”   s    rT   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 )
NiÐ  r   rC   rD   Úredr   )rR   rS   rH   )r   )r   r   r6   ZaxvlinerN   r   rO   )r#   rL   r   r    r   r   r   Útest_date_axvline    s    rV   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 d 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ÚWARNINGiÐ  r   rC   T)Úautoz)Attempting to set identical left == rightr   iè  c             s   s"   | ]}|j d ko|jdkV  qdS )zmatplotlib.tickerrW   N)ÚnameÚ	levelname)r	   Úrecordr   r   r   ú	<genexpr>Ã   s   z+test_too_many_date_ticks.<locals>.<genexpr>)Z	set_levelr   r   r6   ÚpytestÚwarnsÚUserWarningrN   Úlenr4   ÚstrÚmessager   r?   Úset_major_locatorr$   Ú
DayLocatorZget_major_locatorÚrecordsÚall)Zcaplogr#   rL   r   r    ÚrecÚvr   r   r   Útest_too_many_date_ticks¬   s     
 ri   c                s   t  ˆ ¡‡ fdd„ƒ}|S )Nc                  s$   t  ¡  t  d¡ ˆ ƒ  t  ¡  d S )Nz
2000-01-01)r$   r:   r;   r   )Úthefuncr   r   ÚwrapperÉ   s    
z%_new_epoch_decorator.<locals>.wrapper)Ú	functoolsÚwraps)rj   rk   r   )rj   r   Ú_new_epoch_decoratorÈ   s    rn   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   iè  r   ip  Tg        g      ð?Úo)Úmarkeriô  )Úinterval)Úmatplotlib.testing.jpl_unitsr   Ú	jpl_unitsÚregisterr   r   r   ÚsubplotÚset_autoscale_onr   r$   ÚrrulewrapperÚdateutilÚrruleZYEARLYÚRRuleLocatorr?   rc   Úset_major_formatterÚAutoDateFormatterÚautoscale_viewrO   )r-   r#   rL   r   r    ry   Ú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$   rd   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 )	NrH   )rq   iä  r   )r€   r   r‚   )r€   r   r‚   Úmicrosecondz2020-01-01 00:00:00+00:00z 2020-01-01 00:00:00.000001+00:00)r$   rw   rx   ry   ZSECONDLYrz   r   ÚlistÚmapra   Únum2dater†   r4   )ry   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   Tg        g      ð?ro   )rp   )rr   r   rs   rt   r   r   r   ru   rv   r   r}   rO   )r-   r#   rL   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)rH   é7   )é   é   )é   é-   c             S   s   g | ]}|  ¡ ‘qS r   )r˜   )r	   r™   r   r   r   r   2  s    Úminor)Úwhichz30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r   ÚrcParamsr   r6   r   r?   rc   r$   ZMinuteLocatorÚcanvasÚdrawÚget_xticklabelsr4   ÚmtickerZNullLocatorZset_minor_locatorZset_minor_formatterr|   )Útr
   r   r    Z
ticklabelsr‘   Z	decoy_locr   r   r   Útest_locator_set_formatter  s,    





r§   c              C   sN   G dd„ dƒ} dd„ }t  | ƒ ¡}||jd< |t ddd¡gƒd	gk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_unit:  ó    z8test_date_formatter_callable.<locals>._Locator._get_unitN)Ú__name__Ú
__module__Ú__qualname__r©   r   r   r   r   Ú_Locator9  s   r®   c             S   s   dd„ | D ƒS )Nc             S   s   g | ]}|  d ¡‘qS )z	%d-%m//%Y)Ústrftime)r	   Údtr   r   r   r   =  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öÿÿÿiÞ  r›   é   z25-12//2014)r$   r|   Zscaledr   r4   )r®   r³   Ú	formatterr   r   r   Útest_date_formatter_callable7  s
    
r¶   zdelta, expectedi (  )Úweeksc             C   s   g | ]}d | ‘qS )z$\mathdefault{%d}$r   )r	   r€   r   r   r   r   F  s    r   iÆ  i{  rC   r•   )r   c             C   s   g | ]}d | ‘qS )z $\mathdefault{1990{-}01{-}%02d}$r   )r	   r‚   r   r   r   r   H  s    é    )Úhoursc             C   s   g | ]}d | ‘qS )z$\mathdefault{01{-}01\;%02d}$r   )r	   Úhourr   r   r   r   J  s    rD   r   )Úminutesc             C   s   g | ]}d | ‘qS )z$\mathdefault{01\;00{:}%02d}$r   )r	   Zminur   r   r   r   L  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ÚdefaultiÆ  r   F)Úinterval_multiplesT)Úusetexc                s   g | ]}ˆ |ƒ‘qS r   r   )r	   r‡   )rµ   r   r   r   Y  s    z.test_date_formatter_usetex.<locals>.<listcomp>)r   Zuser   r$   ÚAutoDateLocatorÚcreate_dummy_axisÚaxisÚset_view_intervalr%   r|   r4   )Údeltar‘   r   r   r~   r   )rµ   r   Útest_date_formatter_usetexD  s    
rÅ   c              C   sÔ   t j dddtjd} t j dddtjd}t jdd}tt | ||¡ƒdksNt‚|t jdd }tt | ||¡ƒdksxt‚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
    iÛ  r   )rƒ   r   )r¹   é   )Úmicrosecondsr´   é   é   éÿÿÿÿN)r   r$   r…   r   r`   Zdranger4   rŽ   )ÚstartÚendrÄ   Z	dateranger   r   r   Útest_drange\  s    rÍ   c              C   sX  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}xD|D ]<\}}|| }| ||ƒ}tttt |ƒ ¡ƒƒ|kst‚qW d S )NNc             S   s.   t jdd}| ¡  |jjt  | |g¡Ž  |S )NF)r¾   )r$   rÀ   rÁ   rÂ   rÃ   r%   )Údate1Údate2r~   r   r   r   Ú_create_auto_date_locatorz  s    z9test_auto_date_locator.<locals>._create_auto_date_locatoriÆ  r   i (  )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:00)r¹   z1990-01-01 04:00:00+00:00z1990-01-01 08:00:00+00:00z1990-01-01 12:00:00+00:00z1990-01-01 16:00:00+00:00z1990-01-01 20:00:00+00:00z1990-01-02 00:00:00+00:00z1990-01-02 04:00:00+00:00z1990-01-02 08:00:00+00:00z1990-01-02 12:00:00+00:00z1990-01-02 16:00:00+00:00rC   )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:00iÜ  )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:00)r   r   rŒ   r   ra   r$   rŽ   r4   )rÐ   r   ÚresultsÚt_deltar‘   r   r~   r   r   r   Útest_auto_date_locatorx  sh    









r×   c              C   sl  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¡}xD|D ]<\}}|| }| ||ƒ}tttt |ƒ ¡ƒƒ|ks(t‚q(W d S )RNc             S   s.   t jdd}| ¡  |jjt  | |g¡Ž  |S )NT)r¾   )r$   rÀ   rÁ   rÂ   rÃ   r%   )rÎ   rÏ   r~   r   r   r   rÐ   Á  s    zAtest_auto_date_locator_intmult.<locals>._create_auto_date_locatori (  )r·   z1980-01-01 00:00:00+00:00z2000-01-01 00:00:00+00:00z2020-01-01 00:00:00+00:00z2040-01-01 00:00:00+00:00z2060-01-01 00:00:00+00:00z2080-01-01 00:00:00+00:00z2100-01-01 00:00:00+00:00z2120-01-01 00:00:00+00:00z2140-01-01 00:00:00+00:00z2160-01-01 00:00:00+00:00z2180-01-01 00:00:00+00:00z2200-01-01 00:00:00+00:00rÑ   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:00)r¹   z1997-01-01 04:00:00+00:00z1997-01-01 08:00:00+00:00z1997-01-01 12:00:00+00:00z1997-01-01 16:00:00+00:00z1997-01-01 20:00:00+00:00z1997-01-02 00:00:00+00:00z1997-01-02 04:00:00+00:00z1997-01-02 08:00:00+00:00z1997-01-02 12:00:00+00:00z1997-01-02 16:00:00+00:00rC   )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:00)rÔ   z1997-01-01 00:00:05+00:00z1997-01-01 00:00:10+00:00z1997-01-01 00:00:15+00:00z1997-01-01 00:00:20+00:00z1997-01-01 00:00:25+00:00z1997-01-01 00:00:30+00:00z1997-01-01 00:00:35+00:00z1997-01-01 00:00:40+00:00iÜ  )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:00iÍ  r   )r   r   rŒ   r   ra   r$   rŽ   r4   )rÐ   rÕ   r   rÖ   r‘   r   r~   r   r   r   Útest_auto_date_locator_intmult¿  sr    









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 )	NT)r¾   g    €BÃ@iô  i„  z00:00z00.0005z00.0009)r$   rÀ   ÚConciseDateFormatterÚformat_ticksZMUSECONDS_PER_DAYr4   )r~   rµ   Z	year_1996Ústringsr   r   r   Ú test_concise_formatter_subsecond  s    
rÜ   c              C   sV  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}x2|D ]*\}}|| }| ||ƒ}||ks$t‚q$W d S )@Nc             S   sf   t  ¡ \}}tjdd}t |¡}|j |¡ |j |¡ | | |¡ |j	 
¡  dd„ | ¡ D ƒ}|S )NT)r¾   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   r6   r$   rÀ   rÙ   Úyaxisrc   r{   rJ   r¢   r£   Úget_yticklabels)rÎ   rÏ   r   r    r~   rµ   Ústsr   r   r   rÐ     s    

z9test_concise_formatter.<locals>._create_auto_date_locatoriÍ  r   i (  )r·   c             S   s   g | ]}t |ƒ‘qS r   )ra   )r	   r¦   r   r   r   r   %  s    z*test_concise_formatter.<locals>.<listcomp>i¼  i™  rC   rÑ   Ú1997ÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecrÒ   )r   ÚJanÚ15rÓ   Ú05Ú09Ú13Ú17Ú21Ú25Ú29)r¹   zJan-01z04:00z08:00z12:00z16:00z20:00zJan-02)r»   z00:00z00:05z00:10z00:15z00:20)rÔ   Ú10Ú20Ú30Ú35Ú40r   z59.5z00.5z01.0z01.5z02.0z02.5)r   r   r   r4   )rÐ   r   rÕ   rÖ   r‘   r   rÛ   r   r   r   Útest_concise_formatter  s4    








rû   zt_delta, expectedg{®Gáz„?)rÔ   z1997-Jan-01 00:00z1997-Jan-01 00:01z1997-Jan-01z1997-Jan-02z1997-Jané   Ú i  c             C   s~   t   ddd¡}||  }t ¡ \}}t ¡ }t |¡}|j |¡ |j |¡ | 	||gddg¡ |j
 ¡  | ¡ |kszt‚d S )NiÍ  r   r   )r   r   r6   r$   rÀ   rÙ   r?   rc   r{   r   r¢   r£   Ú
get_offsetr4   )rÖ   r‘   r   r   r   r    r~   rµ   r   r   r   Ú"test_concise_formatter_show_offsetG  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 )NiÍ  r   i  )r·   r   rý   r   z1997-Jané   r•   rá   )r   r6   r   r   r$   rÀ   rÙ   r?   rc   r{   r   r7   rþ   r4   rN   )r   r    r   r   r~   rµ   r   r   r   Útest_offset_changes_  s(    
r  c             C   s   g | ]}d |f ‘qS )z$\mathdefault{%d}$r   )r	   r¦   r   r   r   r   {  s    i¼  i™  rÓ   rí   z$\mathdefault{05}$z$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$râ   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 )NiÍ  r   T)r¾   )r¿   )
r   r$   rÀ   rÁ   rÂ   rÃ   r%   rÙ   rÚ   r4   )rÖ   r‘   r   r   r~   rµ   r   r   r   Útest_concise_formatter_usetexy  s    r  c                 sj  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}x2|D ]*\}}|| }| ||ƒ}||ks8t‚q8W d S )HNz%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 )NT)r¾   )Úformatsc             S   s   g | ]}|  ¡ ‘qS r   )r˜   )r	   rÝ   r   r   r   r   §  s    zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>)r   r6   r$   rÀ   rÙ   rÞ   rc   r{   rJ   r¢   r£   rß   )rÎ   rÏ   r   r    r~   rµ   rà   )r  r   r   rÐ   ž  s    
zAtest_concise_formatter_formats.<locals>._create_auto_date_locatoriÍ  r   i (  )r·   c             S   s   g | ]}t |ƒ‘qS r   )ra   )r	   r¦   r   r   r   r   ¬  s    z2test_concise_formatter_formats.<locals>.<listcomp>i¼  i™  rC   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: 29)r¹   zday: 01z04 hr 00 minz08 hr 00 minz12 hr 00 minz16 hr 00 minz20 hr 00 minzday: 02)r»   z00 hr 00 minz00 hr 05 minz00 hr 10 minz00 hr 15 minz00 hr 20 min)rÔ   z05.000000 secz10.000000 secz15.000000 secz20.000000 secz25.000000 secz30.000000 secz35.000000 secz40.000000 secr   z59.500000 secz00.500000 secz01.000000 secz01.500000 secz02.000000 secz02.500000 sec)r   r   r   r4   )rÐ   r   rÕ   rÖ   r‘   r   rÛ   r   )r  r   Útest_concise_formatter_formatsš  s@    










r  c                 sj  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}x2|D ]*\}}|| }| ||ƒ}||ks8t‚q8W d 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 )NT)r¾   )Úzero_formatsc             S   s   g | ]}|  ¡ ‘qS r   )r˜   )r	   rÝ   r   r   r   r   Þ  s    zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>)r   r6   r$   rÀ   rÙ   rÞ   rc   r{   rJ   r¢   r£   rß   )rÎ   rÏ   r   r    r~   rµ   rà   )r  r   r   rÐ   Ô  s    

zBtest_concise_formatter_zformats.<locals>._create_auto_date_locatoriÍ  r   i (  )r·   c             S   s   g | ]}t |ƒ‘qS r   )ra   )r	   r¦   r   r   r   r   ã  s    z3test_concise_formatter_zformats.<locals>.<listcomp>i¼  i™  rC   rÑ   z'97râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rÒ   )r   ÚJanuaryrî   ÚFebruaryZMarchZAprilrÓ   rï   rð   rñ   rò   ró   rô   rõ   )r¹   z01-01z04:00z08:00z12:00z16:00z20:00z01-02)r»   Z00z00:05z00:10z00:15z00:20)rÔ   rö   r÷   rø   rù   rú   r   z59.5z00.0z00.5z01.0z01.5z02.0z02.5)r   r   r   r4   )rÐ   r   rÕ   rÖ   r‘   r   rÛ   r   )r  r   Útest_concise_formatter_zformatsÑ  s6    









r  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¡}xB|D ]:\}}}|| }| |||ƒ\}}	||ksìt‚|	|ks¾t‚q¾W d S )(Nc             S   sx   t  ¡ \}}tjdd}tj||d}|j |¡ |j |¡ | | |¡ |j	 
¡  dd„ | ¡ D ƒ}||j ¡  ¡ fS )NT)r¾   )Útzc             S   s   g | ]}|  ¡ ‘qS r   )r˜   )r	   rÝ   r   r   r   r     s    zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>)r   r6   r$   rÀ   rÙ   rÞ   rc   r{   rJ   r¢   r£   rß   Zget_offset_textr˜   )rÎ   rÏ   r	  r   r    r~   rµ   rà   r   r   r   rÐ     s    
z<test_concise_formatter_tz.<locals>._create_auto_date_locatoriÍ  r   )rƒ   rÓ   )r¹   z03:00z07:00z11:00z15:00z19:00z23:00z1997-Jan-02rC   )r»   z03:05z03:10z03:15z03:20z1997-Jan-01)rÔ   rï   rö   rî   r÷   rô   rø   rù   rú   z1997-Jan-01 03:00r   z59.5z00.5z01.0z01.5z02.0z02.5r   )r   ÚreplaceÚtimezoneÚutcr   r4   )
rÐ   r   rÕ   Znew_tzrÖ   Zexpected_stringsZexpected_offsetr   rÛ   Úoffsetr   r   r   Útest_concise_formatter_tz  s*    



r  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}xf|D ]^\}}tdMdNiƒB || }| |||ƒ}tttt	j
|ƒ |dOƒƒ}||kspt‚W d Q R X qW d S )PNc             S   s0   t jd|d}| ¡  |jjt  | |g¡Ž  |S )NT)r¾   r	  )r$   rÀ   rÁ   rÂ   rÃ   r%   )rÎ   rÏ   r	  r~   r   r   r   rÐ   /  s    zDtest_auto_date_locator_intmult_tz.<locals>._create_auto_date_locatori (  )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:00)r¹   z1997-01-01 04:00:00-08:00z1997-01-01 08:00:00-08:00z1997-01-01 12:00:00-08:00z1997-01-01 16:00:00-08:00z1997-01-01 20:00:00-08:00z1997-01-02 00:00:00-08:00z1997-01-02 04:00:00-08:00z1997-01-02 08:00:00-08:00z1997-01-02 12:00:00-08:00z1997-01-02 16:00:00-08:00rC   )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:00)rÔ   z1997-01-01 00:00:05-08:00z1997-01-01 00:00:10-08:00z1997-01-01 00:00:15-08:00z1997-01-01 00:00:20-08:00z1997-01-01 00:00:25-08:00z1997-01-01 00:00:30-08:00z1997-01-01 00:00:35-08:00z1997-01-01 00:00:40-08:00zCanada/PacificiÍ  r   )rƒ   z_internal.classic_modeF)r	  )r   r   rx   r	  Úgettzr   rŒ   r   ra   r$   rŽ   r4   )	rÐ   rÕ   r	  r   rÖ   r‘   r   r~   rÝ   r   r   r   Ú!test_auto_date_locator_intmult_tz.  sj    







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 )NiÙ  r   rC   rQ   rE   r   )rR   rS   rH   )r   g      Ð?)rI   )r   r   r6   rA   rJ   r   Zinvert_yaxisrK   )r#   rL   r   r    r   r   r   Útest_date_inverted_limitt  s    r  c                s    t j d¡}tj}tjddddd|d}tjddd	}d
‰ d}| |||d}|||ƒ}dt t 	d¡¡ ‰‡ ‡fdd„t
|ƒD ƒ}	tt |¡ƒ}
|
|	ksœt‚d S )NzEurope/BrusselsiÞ  r   r•   r   )rƒ   é!   rž   )r»   rÔ   g      ˜?r–   )rË   ÚfreqÚperiodsg    ´p&Az
0000-12-31c                s   g | ]}ˆ|ˆ   ‘qS r   r   )r	   Úi)Úinterval_daysr#   r   r   r   ‘  s    z&_test_date2num_dst.<locals>.<listcomp>)rx   r	  r  r$   r…   r   r   r%   r   r2   r   rŒ   r4   )Ú
date_rangeÚ
tz_convertZBRUSSELSr…   Údtstartrq   ÚNZdt_utcZdt_bxlZexpected_ordinalfZactual_ordinalfr   )r  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 )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 )N)r  Ú
astimezoner!  )r¨   rƒ   r°   )r$  r   r   r&  ´  s    z0test_date2num_dst.<locals>.dt_tzaware.astimezonec             S   s<   i }d}x(|D ] }t ||d ƒ}|d k	r|||< qW | 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
   r2  c                s"   ˆ  | ¡‰ ‡ ‡fdd„t|ƒD ƒS )Nc                s   g | ]}ˆ |ˆ  ‘qS r   r   )r	   r  )r  r  r   r   r   Ï  s    z9test_date2num_dst.<locals>.date_range.<locals>.<listcomp>)r!  r   )rË   r  r  )r2  )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	   Úd)rƒ   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  )r  r  r   )r2  r   Útest_date2num_dst—  s    1r4  c                s   ‡ fdd„}t ˆ j|ƒ d S )Nc                 s   ˆ j j| Ž  t¡S )N)ZDatetimeIndexr  ÚastypeÚobject)Úargs)Úpdr   r   r  Ü  s    z,test_date2num_dst_pandas.<locals>.tz_convert)r  r  )r8  r  r   )r8  r   Útest_date2num_dst_pandasØ  s    r9  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 )NzAustralia/Sydneyiá  rÈ   r   r   )r  r  é   )rƒ   r   é   )
r   r$   rw   rx   ry   ZDAILYZbetweenr	  Ztzutcr4   )Ú	attach_tzZget_tzZSYDr  ZdtendÚruleZactÚexpr   r   r   Ú_test_rrulewrapperâ  s    r?  c              C   s   dd„ } t | tjjƒ d S )Nc             S   s   | j |dS )N)rƒ   )r
  )r°   Úzir   r   r   r<  ò  s    z$test_rrulewrapper.<locals>.attach_tz)r?  rx   r	  r  )r<  r   r   r   Útest_rrulewrapperñ  s    rA  c              C   s"   t  d¡} dd„ }t|| jƒ d S )NÚpytzc             S   s
   |  | ¡S )N)Úlocalize)r°   r@  r   r   r   r<  ý  s    z)test_rrulewrapper_pytz.<locals>.attach_tz)r]   Úimportorskipr?  r  )rB  r<  r   r   r   Útest_rrulewrapper_pytzø  s    
rE  c           	      sâ   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‚d S )NrB  zAmerica/New_Yorkc          	      s*   g | ]"}ˆ   t d dd¡¡t |¡ ‘qS )iÚ  r   )rC  r   r   )r	   r  )r	  r   r   r     s   z)test_yearlocator_pytz.<locals>.<listcomp>iÐ  T)r¾   r	  r   g      ð?rÊ   g{ŸªjÀa&Ag{Ÿªjšd&Ag{Ÿªjtg&Ag{ŸªjNj&Ag{Ÿªj*m&Ag{Ÿªjp&Ag{ŸªjÞr&Az
0000-12-31z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:00)r	  )r]   rD  r  r   r$   rÀ   rÁ   rÂ   rÃ   r%   r   r   r2   r   r8   rŒ   r   ra   rŽ   r4   )rB  r
   r~   r¦   r‘   rÝ   r   )r	  r   Útest_yearlocator_pytz  s$    



rF  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}xF|D ]>\}}}|| }| ||f|Ž}tttt |ƒ ¡ƒƒ|ksœt‚qœW d S )(Nc             [   s2   t jf |Ž}| ¡  |j t  | ¡t  |¡¡ |S )N)r$   ZYearLocatorrÁ   rÂ   rÃ   r%   )rÎ   rÏ   r+  r~   r   r   r   Ú_create_year_locator  s
    z.test_YearLocator.<locals>._create_year_locatoriÆ  r   i (  )r·   rC   )r   r   r‚   z1980-01-01 00:00:00+00:00z2000-01-01 00:00:00+00:00z2020-01-01 00:00:00+00:00z2040-01-01 00:00:00+00:00z2060-01-01 00:00:00+00:00z2080-01-01 00:00:00+00:00z2100-01-01 00:00:00+00:00z2120-01-01 00:00:00+00:00z2140-01-01 00:00:00+00:00z2160-01-01 00:00:00+00:00z2180-01-01 00:00:00+00:00z2200-01-01 00:00:00+00:00rH   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:00)r   r   rŒ   r   ra   r$   rŽ   r4   )rG  r   rÕ   rÄ   Ú	argumentsr‘   r   r~   r   r   r   Útest_YearLocator  s2    





rI  c            	   C   s˜   t  t¡ tjdd W d Q R X t  t¡ tjdd W d Q R X t  t¡ tjdd W d Q R X t  t¡ tjdd W d Q R X tjdd d S )NrÊ   )rq   g      ø¿r   gÍÌÌÌÌÌô?g      ð?)r]   ÚraisesÚ
ValueErrorr$   rd   r   r   r   r   Útest_DayLocatorB  s    rL  c              C   s    t j dddtjd} |  ¡  d S )Ni²  r   )rƒ   )r   r$   r…   Útzname)r°   r   r   r   Útest_tz_utcN  s    rN  z	x, tdeltag      ø?c             C   s   t  | ¡}||kst‚d S )N)r$   Znum2timedeltar4   )r
   Ztdeltar°   r   r   r   Útest_num2timedeltaS  s    
rO  c              C   sN   t  d¡t  d¡g} t | ¡}t  ddg¡t t  d¡¡ }t j ||¡ d S )Nz
2000-01-01z
2001-01-01g    H&Ag    ìJ&Az
0000-12-31)r   r2   r$   r%   r   r   r   )r°   Údnr¦   r   r   r   Útest_datetime64_in_list\  s
    
rQ  c           	   C   s  t  d¡} t ¡  t ¡  t t¡ t d¡ W d 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 )Nz
2000-01-01z
0000-01-01z
1970-01-01zdatetime64[D]Úintz
0000-12-31g    H&Az1970-01-01T01:00:00gUUUUUU¥?z1970-01-01T00:00:00z1970-01-01T12:00:00g      à?)r   r2   r$   r:   Z	get_epochr]   rJ  ÚRuntimeErrorr;   r5  r   r   r%   Úfloatr8   )Údater°   r   r   r   Útest_change_epoche  s*    





rV  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 d Q R X d S )Nz
2001-01-10z
2001-03-04zdatetime64[D])r   F)r¾   r   r   r   rÊ   zAutoDateLocator was unable)Úmatch)r   Úaranger$   rÀ   Z	intervaldrÁ   rÂ   rÃ   r%   r]   r^   r_   )r±   r~   rg   Zlocsr   r   r   Útest_warn_notintervals…  s    rY  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 d Q R X d S )NZconcisezdate.converterz
2020-01-01z
2020-05-01zdatetime64[D])r   r   rí   r   rî   rX   zJan 01 2020zJan 15 2020Úboo)r   r¡   r   rX  r6   r   r`   r¢   r£   r¤   r˜   r4   r]   rJ  rK  )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-10z
2020-05-01zdatetime64[D])r   r   zJan 10 2020r   zJan 24 2020ÚTruezJan 15 2020zFeb 01 2020)r   r¡   r   rX  r6   r   r`   r¢   r£   r¤   r˜   r4   )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 d Q R X d S )	Nz
0000-12-31i€Q g    xò%Ag    zò%Ai £ z1970-01-01T00:00:00g      ð?g       @)Ú_apiZ'suppress_matplotlib_deprecation_warningr$   r:   r;   Z	epoch2numr4   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 )	Nz
0000-12-31g   @ÆžBAg    xò%Ag    zò%Ag   ÀÆžBAz1970-01-01T00:00:00g      ð?g       @)r$   r:   r;   Z
julian2numr4   Z
num2julianr   r   r   r   Útest_julian2numÅ  s    

r`  )Pr   Zdateutil.tzrx   Zdateutil.rrulerl   Únumpyr   r]   Z
matplotlibr   r   Zmatplotlib.datesr±   r$   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.testing.decoratorsr   Zmatplotlib.tickerZtickerr¥   Zmatplotlib._apir^  r"   ÚmarkZparametrizer(   r,   r5   r<   r@   rB   rM   rP   rT   rV   ri   rn   r   rŠ   r’   r“   r§   r¶   r   r   rÅ   rÍ   r×   rØ   rÜ   rû   rÿ   r  r  r  r  r  r  r  r  r4  r9  r?  rA  rB  rE  rF  rI  rL  rN  rO  rQ  rV  rY  r[  r]  r_  r`  r   r   r   r   Ú<module>   sà   

		
 



"GL1



74)FA
'	 