
    P/Ph                     h
   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 Zej                            d e j         dddd dd           e j         dddd dd           e j         dddddd          g e j         dddd dd           e j         dddddd          g e j         dddddd           e j         dddd	dd          ggg          ej                            d
g d          d                         Zej                            d
g d          d             Zej                            dg d          d             Zd Zd Zd Zd Z edg          d             Z  edg          d             Z! edg          d             Z" edg          d             Z#d Z$d Z% edg          d              Z&d! Z'd" Z( ed#g          d$             Z)d% Z*d& Z+ej                            d' e j,        d()          d*  e-d+d,d-          D             f e j,        d./          d0  e-dd1d	          D             f e j,        d-2          d3  e-d d4d          D             f e j,        d56          d7  e-d d8          D             fg          d9             Z.d: Z/e%d;             Z0e%d<             Z1d= Z2d> Z3ej                            d? e j,        d@A          dBf e j,        d6          dCf e j,        d2          dDf e j,        d/          dEf e j,        d)          dFf e j,        dG)          dHf e j,        dI)          dHfg          dJ             Z4dK Z5dL Z6dM Z7ej                            d? e j,        d()          dN  e-dOdPd-          D             f e j,        dQ/          g dRf e j,        dQ2          g dSf e j,        dA          g dTfg          dU             Z8dV Z9dW Z:dX Z;dY Z< edZg          d[             Z=d\ Z>d] Z?d^ Z@d_ ZAd` ZBej        jC        da             ZDej        jC        db             ZEdc ZFdd ZGde ZHej                            dfd e j,        d/          fddgg e j,        d/           e j,        dg/          gfg          dh             ZIdi ZJdj ZKdk ZLdl ZMdm ZNdn ZOdo ZPej                            dpdq          dr             ZQds ZRdt ZSej                            dudv          dw             ZTdx ZUdy ZVdS )z    N)
rc_contextstyle)image_comparisonc                  T   t          j         ddd          fdt          dd          D             } t          j        | d          }t          j        g d          }t	          j        d	
          }|                    ddd          }|                    | |          \  }|                    ||          \  }t          j        	                    |
                    d          |
                    d                     t	          j        d	
          }|                    ddd          }|                    ||           \  }|                    ||          \  }t          j        	                    |                    d          |                    d                     d S )N     c                 @    g | ]}t          j        |           z   S )daysdatetime	timedelta).0xbases     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_dates.py
<listcomp>z$test_date_numpyx.<locals>.<listcomp>   s,    CCC!D8%1----CCC    r      datetime64[ns]dtype)        g       @      ?)
      )figsizeF)orig)r   rangenparraypltfigureadd_subplotplottestingassert_equal	get_xdata	get_ydata)timetimenpdatafigaxhhnpr   s          @r   test_date_numpyxr1      sp   T1a((DCCCCuQ{{CCCDXd"2333F8LLL!!D
*W
%
%
%C	Aq	!	!B	t		BA7764  DCJAKKUK33S]]]5N5NOOO
*W
%
%
%C	Aq	!	!B	t		BA774  DCJAKKUK33S]]]5N5NOOOOOr   t0r   r   r   r   r   )zdatetime64[s]zdatetime64[us]zdatetime64[ms]r   c                     t          j        |           }t          j        | |          }t          j        |          }t          j                            ||           d S )Nr   )mdatesdate2numr    r!   r&   r'   )r2   r   r*   tnpnptimes        r   test_date_date2num_numpyr8   "   sT     ?2D
(2U
#
#
#C_S!!FJD&)))))r   c                    t          j         dddddd          }t          j        |          t          j        g}t          j        |dg|           }t          j        |          }t          j                            ||           d S )Nr   r   r   NaTr   )r   r4   r5   r    nanr!   r&   assert_array_equal)r   r2   tmplr6   r7   s        r   test_date2num_NaTr>   6   sy    
 
	4Aq!Q	/	/BOB(D
(B;e
,
,
,C_S!!FJ!!$/////r   units)smsusnsc                     t          j        t          j        d|                     }t          j        |          sJ d S )Nr:   )r4   r5   r    
datetime64isnan)r?   r=   s     r   test_date2num_NaT_scalarrG   B   s7    ?2=6677D8D>>r   c                     t          j         ddd          t          j                            fdt	          d          D             g d          } t          j        |           }t          j                            t          j        	                    |          d           t          j         dddt
          j
        	          t          j                            fd
t	          d          D             g d          } t          j        |           }t          j                            t          j        	                    |          d           d S )N        c                 F    g | ]}t          j        d |z            z   S r   r
   r   r   ir   s     r   r   z(test_date2num_masked.<locals>.<listcomp>K   @     , , ,  2Q @ @ @@ , , ,r      )r   r   r   r   r   r   r   )mask)FTTFFFTtzinfoc                 F    g | ]}t          j        d |z            z   S rM   r   rN   s     r   r   z(test_date2num_masked.<locals>.<listcomp>T   rP   r   )r   r    mar!   r   r4   r5   r&   r<   getmaskUTC)datesnpdatesr   s     @r   test_date2num_maskedr[   H   s\   T2r**DEKK , , , ,"'((, , ,2G2G2G  I IEoe$$GJ!!"%--"8"8#)* * *
 T2r&*===DEKK , , , ,"'((, , ,2G2G2G  I IEoe$$GJ!!"%--"8"8#)* * * * *r   c            	      b   t          j                    \  } }|                                 |                                  t          j                            |                                t          j	        t	          j
        d                    t          j	        t	          j
        d                    g           t          j                     t          j        d           t          j                    \  } }|                                 |                                  t          j                            |                                t          j	        t	          j
        d                    t          j	        t	          j
        d                    g           t          j                     d S )N
1970-01-01z
1970-01-02
0000-12-31)r"   subplots
xaxis_datedraw_without_renderingr    r&   assert_allcloseget_xlimr4   r5   rE   _reset_epoch_test_example	set_epochr-   r.   s     r   test_date_emptyrg   \   sO    lnnGCMMOOO   Jr{{}} &l0K0K L L &l0K0K L L NO O O $&&&
\"""lnnGCMMOOO   Jr{{}} &l0K0K L L &l0K0K L L NO O O $&&&&&r   c                  "   t          j                    } |                                 }|                    ddgddg           |j                                         t          j                            |	                                ddg           d S )N2   F   r   r   )
r"   r#   r$   r%   xaxis	axis_dater    r&   rb   rc   rf   s     r   test_date_not_emptyrm   r   sv    
*,,C			BGGRHq!fHJr{{}}r2h77777r   c            	         t          j                    \  } }|                    d           |                    t	          j        d          t	          j        d          gddg           t          j                            |                                t          j
        t	          j        d                    t          j
        t	          j        d                    g           t          j                     t          j        d           t          j                    \  } }|                    d           |                    t	          j        d          t	          j        d          gddg           t          j                            |                                t          j
        t	          j        d                    t          j
        t	          j        d                    g           t          j                     d S )N      ?z
2016-01-01z
2016-01-02r   r   r^   )r"   r_   axhliner%   r    rE   r&   rb   rc   r4   r5   rd   re   rf   s     r   test_axhlinerq   {   s   lnnGCJJsOOOGGR]<(("-*E*EFAOOOJr{{}} &l0K0K L L &l0K0K L L NO O O $&&&
\"""lnnGCJJsOOOGGR]<(("-*E*EFAOOOJr{{}} &l0K0K L L &l0K0K L L NO O O $&&&&&r   zdate_axhspan.pngc                  l   t          j         ddd          } t          j         ddd          }t          j                    \  }}|                    | |dd           |                    | t          j        d	          z
  |t          j        d	          z              |                    d
           d S )N  r         blue      ?	facecoloralpha   r
   left)r   r"   r_   axhspanset_ylimr   subplots_adjustr2   tfr-   r.   s       r   test_date_axhspanr      s     
	4B	'	'B		4B	'	'BlnnGCJJr2tJ444KKX'Q////X'Q////1 1 1T"""""r   zdate_axvspan.pngc                  h   t          j         ddd          } t          j         ddd          }t          j                    \  }}|                    | |dd           |                    | t          j        d	
          z
  |t          j        d	
          z              |                                 d S )N  r   rt     ru   rv   rw   rx   i  r
   )r   r"   r_   axvspanset_xlimr   autofmt_xdater   s       r   test_date_axvspanr      s     
	4B	'	'B		4B	'	'BlnnGCJJr2tJ444KKX'S1111X'S11113 3 3r   zdate_axhline.pngc                  j   t          j         ddd          } t          j         ddd          }t          j                    \  }}|                    | dd           |                    | t          j        d	          z
  |t          j        d	          z              |                    d
           d S Nrs   r   rt      rv   r   colorlwr{   r
   rw   r|   )r   r"   r_   rp   r   r   r   r   s       r   test_date_axhliner      s     
	4B	'	'B		4B	'	'BlnnGCJJrAJ&&&KKX'Q////X'Q////1 1 1T"""""r   zdate_axvline.pngc                  f   t          j         ddd          } t          j         ddd          }t          j                    \  }}|                    | dd           |                    | t          j        d	          z
  |t          j        d	          z              |                                 d S )
Nr   r   rt   ru   redr   r   r{   r
   )r   r"   r_   axvliner   r   r   r   s       r   test_date_axvliner      s     
	4B	'	'B		4B	'	'BlnnGCJJr1J%%%KKX'Q////X'Q////1 1 1r   c                     |                      d           t          j        ddd          }t          j        ddd          }t          j                    \  }}t	          j        t                    5 }|                    ||fd           t          |          dk    sJ dt          |d         j
                  v sJ 	 d d d            n# 1 swxY w Y   |                    g g            |j                            t          j                                |j                                                    }t          |          d	k    sJ | j        rt%          d
 | j        D                       sJ t          | j                  dk    sJ d S )NWARNINGr   r   rt   T)autoz.Attempting to set identical low and high xlimsr     c              3   B   K   | ]}|j         d k    o
|j        dk    V  dS )zmatplotlib.tickerr   N)name	levelname)r   records     r   	<genexpr>z+test_too_many_date_ticks.<locals>.<genexpr>   sK       "& "& 	**Lv/?9/L"& "& "& "& "& "&r   )	set_levelr   r"   r_   pytestwarnsUserWarningr   lenstrmessager%   rk   set_major_locatorr4   
DayLocatorget_major_locatorrecordsall)caplogr2   r   r-   r.   recvs          r   test_too_many_date_ticksr      s    Y		4B	'	'B		4B	'	'BlnnGC	k	"	" (c
RH4(((3xx1}}}}@s1v~&&' ' ' ' '( ( ( ( ( ( ( ( ( ( ( ( ( ( (
 GGBOOOHv022333$""$$&&Aq66D==== > &c "& "&n"& "& "& & & & & & v~""""""s   1ACCCc                 F     t          j                    fd            }|S )Nc                      t          j                     t          j        d                          t          j                     d S )N
2000-01-01)r4   rd   re   )thefuncs   r   wrapperz%_new_epoch_decorator.<locals>.wrapper   sC    (***&&&			(*****r   )	functoolswraps)r   r   s   ` r   _new_epoch_decoratorr      s8    _W+ + + + +
 Nr   zRRuleLocator_bounds.pngc                     dd l mc m}  |                                  t	          j        ddd          }t	          j        ddd          }t          j                    }t          j                    }|                    d           |	                    ||gddgd	           t          j        t          j        j        d
          }t          j        |          }|j                            |           |j                            t          j        |                     |                                 |                                 d S )Nr   r   r   ip  Tr   r   omarker  interval)matplotlib.testing.jpl_unitsr&   	jpl_unitsregisterr   r"   r#   subplotset_autoscale_onr%   r4   rrulewrapperdateutilrruleYEARLYRRuleLocatorrk   r   set_major_formatterAutoDateFormatterautoscale_viewr   )r?   r2   r   r-   r.   r   locators          r   test_RRuleLocatorr      s,   000000000	NN 
	4A	&	&B		4A	&	&B
*,,C	BGGRHsCjG--- 5DDDE!%((GHw'''H  !9'!B!BCCCr   c                      t          j                    } t          j        dddt           j                  }t          j        dddt           j                  }|                     ||           d S )Nr   )yearmonthdayrT      )r4   r   r   rX   tick_values)locx1y1s      r   test_RRuleLocator_dayranger      s`    



C		&*	E	E	EB		6:	F	F	FBOOBr   c                  z   t          j        t          j        j        d          } t          j        |           }t          j        ddd          }t          j        dddd          }ddg}t          t          t          t          j
        |                    ||                                        |k    sJ d S )	Nr{   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)r4   r   r   r   SECONDLYr   r   listmapr   num2dater   )r   r   d1d2expecteds        r   test_RRuleLocator_close_minmaxr     s      7!DDDE

e
$
$C		A1	5	5	5B		A1!	D	D	DB+24HCR)@)@AABBCCxOOOOOOr   z#DateFormatter_fractionalSeconds.pngc                     dd l mc m}  |                                  t	          j        dddddd          }t	          j        dddddd          }t          j                    }t          j                    }|                    d           |	                    ||gddgd           |
                                 |                                 d S )	Nr   i  r   Tr   r   r   r   )r   r&   r   r   r   r"   r#   r   r   r%   r   r   )r?   r2   r   r-   r.   s        r   test_DateFormatterr     s    000000000	NN
 
	4Aq!Q	/	/B		4Aq!Q	/	/B
*,,C	BGGRHsCjG--- r   c            	          dt           j        d<   t          j        ddddd          t          j        ddddd          t          j        dddd	d          g} g d
}t          j                    \  }}|                    | |           |j                            t          j        d                     |j	        
                                 d |                                D             }g d}||k    sJ |j                            t          j                               |j                            t          j        d                     t          j        d          }|j                            t          j        |                     |j                            t          j        d                     |j	        
                                 d |                    d          D             }g d}||k    sJ 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                 6    g | ]}|                                 S  get_textr   tls     r   r   z.test_locator_set_formatter.<locals>.<listcomp>9  s     ???B"++--???r   )z30 08:00z30 08:30z30 09:00z30 09:30z30 10:00z30 10:30)r{   7   )rJ      )rK   -   c                 6    g | ]}|                                 S r   r   r   s     r   r   z.test_locator_set_formatter.<locals>.<listcomp>E  s     LLLB"++--LLLr   minor)which)z30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)r"   rcParamsr   r_   r%   rk   r   r4   MinuteLocatorcanvasdrawget_xticklabelsmtickerNullLocatorset_minor_locatorset_minor_formatterr   )tr   r-   r.   
ticklabelsr   	decoy_locs          r   test_locator_set_formatterr  *  s   
 1;CL,-		4B1	-	-		4B2	.	.		4BB	/	/	1A 			AlnnGCGGAqMMMHv3G<<===JOO??"*<*<*>*>???J4 4 4H!!!!Hw244555Hv3G<<===$X..IH  !9)!D!DEEEHv3H==>>>JOOLL"*<*<7*<*K*KLLLJKKKH!!!!!!r   c                       G d d          } d }t          j         |                       }||j        d<    |t          j        ddd          g          dgk    sJ d S )	Nc                       e Zd Zd ZdS ).test_date_formatter_callable.<locals>._Locatorc                     dS )Nir   )selfs    r   	_get_unitz8test_date_formatter_callable.<locals>._Locator._get_unitM  s    CCr   N)__name__
__module____qualname__r	  r   r   r   _Locatorr  L  s        '''''r   r  c                     d | D             S )Nc                 8    g | ]}|                     d           S )z	%d-%m//%Y)strftime)r   dts     r   r   zVtest_date_formatter_callable.<locals>.callable_formatting_function.<locals>.<listcomp>P  s$    999RK((999r   r   )rY   _s     r   callable_formatting_functionzBtest_date_formatter_callable.<locals>.callable_formatting_functionO  s    9959999r   i  rJ      z25-12//2014)r4   r   scaledr   )r  r  	formatters      r   test_date_formatter_callabler  J  s    ( ( ( ( ( ( ( (: : : (44I8IS9h'b"55677M?JJJJJJr   zdelta, expected(  weeksc                     g | ]}d |z  S z$\mathdefault{%d}$r   )r   r   s     r   r   r   Y  s    EEEtd"EEEr     i{  rt   r   r
   c                     g | ]}d |z  S )z $\mathdefault{1990{-}01{-}%02d}$r   )r   r   s     r   r   r   [  s    KKKC)C/KKKr       hoursc                     g | ]}d |z  S )z$\mathdefault{01{-}01\;%02d}$r   )r   hours     r   r   r   ]  s    JJJ$&-JJJr   ru   r   minutesc                     g | ]}d |z  S )z$\mathdefault{01\;00{:}%02d}$r   )r   minus     r   r   r   _  s    GGG$&-GGGr      c                    t          j        d           t          j        ddd          }|| z   }t          j        d          }|                                 |j                            t          j        |          t          j        |                     t          j	        |d          fd |            D             |k    sJ d S )	Ndefaultr  r   Finterval_multiplesTusetexc                 &    g | ]} |          S r   r   )r   r   r  s     r   r   z.test_date_formatter_usetex.<locals>.<listcomp>l  s!    000sIIcNN000r   )
r   user   r4   AutoDateLocatorcreate_dummy_axisaxisset_view_intervalr5   r   )deltar   r   r   r   r  s        @r   test_date_formatter_usetexr7  W  s     
Ii		4A	&	&B	eB$>>>GL""6?2#6#68K8KLLL(>>>I0000ggii000H<<<<<<r   c                     t          j         dddt          j                  } t          j         dddt          j                  }t          j        d          }t	          t          j        | ||                    dk    sJ |t          j        d          z
  }t	          t          j        | ||                    dk    sJ |t          j        d          z   }t	          t          j        | ||                    dk    sJ t          j         dddt          j                  }t          j        d	          }t          j        | ||          }t	          |          d
k    sJ t          j        |d                   ||z
  k    sJ dS )zj
    This test should check if drange works as expected, and if all the
    rounding errors are fixed
      r   rS   r   r!     microsecondsr        N)r   r4   rX   r   r   dranger   )startendr6  	dateranges       r   test_drangerD  o  s}   
 dAq<<<E

D!Qvz
:
:
:CQ'''E v}UC//00B6666 "222
2Cv}UC//00B6666 "222
2Cv}UC//00B6666 
D!Qvz
:
:
:C Q'''EeS%00Iy>>Q?9R=))cEk::::::r   c            
         d } t          j         ddd          }t          j        d          g dgt          j        d          g dgt          j        d	
          g dgt          j        d
          g dgt          j        d          g dgt          j        d          g dgt          j        d          g dgt          j        d          g dgf}|D ]X\  }}||z   } | ||          }t          t          t          t          j         |                                          |k    sJ Yt          j        d          }|j        ddddddddk    sJ t          j        t          j
        j        di          }|j        ddddddddk    sJ t          j        d          }|j        ddddddddk    sJ d S ) Nc                     t          j        d          }|                                  |j        j        t          j        | |g            |S )NFr,  r4   r2  r3  r4  r5  r5   date1date2r   s      r   _create_auto_date_locatorz9test_auto_date_locator.<locals>._create_auto_date_locator  sL    (EBBB!!###&&(G(GHHr   r  r   r  r  )
1990-01-01 00:00:00+00:00z2010-01-01 00:00:00+00:00z2030-01-01 00:00:00+00:00z2050-01-01 00:00:00+00:00z2070-01-01 00:00:00+00:00z2090-01-01 00:00:00+00:00z2110-01-01 00:00:00+00:00z2130-01-01 00:00:00+00:00z2150-01-01 00:00:00+00:00z2170-01-01 00:00:00+00:004   )rL  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!  )rL  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:00rt   r%  )rL  z1990-01-01 00:05:00+00:00z1990-01-01 00:10:00+00:00z1990-01-01 00:15:00+00:00z1990-01-01 00:20:00+00:00seconds)	rL  z1990-01-01 00:00:05+00:00z1990-01-01 00:00:10+00:00z1990-01-01 00:00:15+00:00z1990-01-01 00:00:20+00:00z1990-01-01 00:00:25+00:00z1990-01-01 00:00:30+00:00z1990-01-01 00:00:35+00:00z1990-01-01 00:00:40+00:00  r;  )z 1989-12-31 23:59:59.999500+00:00rL  z 1990-01-01 00:00:00.000500+00:00z 1990-01-01 00:00:00.001000+00:00z 1990-01-01 00:00:00.001500+00:00z 1990-01-01 00:00:00.002000+00:00Fr,  r)  rJ   r   )r   r   r   r=  r{   r>  rQ   r{   )maxticks)r   r   r   r   r   r4   r   r2  rS  r   r   MONTHLY)rK  r   resultst_deltar   r   r   s          r   test_auto_date_locatorrW    s      
	4A	&	&B"222K K K ",,,K K K ",,,. . . "+++K K K
 ",,,. . . "2.... . .
 "2.... . . "5555 5 5]6Gp % F F'\++B33CV_WWYY778899XEEEEE$>>>G2"rbQOOOOOO$x~/Eq.IJJJG2!rbRANNNNNN$a000G1qQ1qIIIIIIIIr   c            
      r   d } t          j        d          g dgt          j        d          g dgt          j        d          g d	gt          j        d
          g dgt          j        d
          g dgt          j        d          g dgt          j        d
          g dgt          j        d          g dgf}t          j         ddd          }|D ]X\  }}||z   } | ||          }t          t          t          t          j         |                                          |k    sJ Yd S )Nc                     t          j        d          }|                                  |j        j        t          j        | |g            |S )NTr,  rG  rH  s      r   rK  zAtest_auto_date_locator_intmult.<locals>._create_auto_date_locator  sL    (DAAA!!###&&(G(GHHr   r  r  z1980-01-01 00:00:00+00:00z2000-01-01 00:00:00+00:00r   z2040-01-01 00:00:00+00:00z2060-01-01 00:00:00+00:00z2080-01-01 00:00:00+00:00z2100-01-01 00:00:00+00:00z2120-01-01 00:00:00+00:00z2140-01-01 00:00:00+00:00z2160-01-01 00:00:00+00:00z2180-01-01 00:00:00+00:00z2200-01-01 00:00:00+00:00rM  )1997-01-01 00:00:00+00:001997-02-01 00:00:00+00:001997-03-01 00:00:00+00:001997-04-01 00:00:00+00:001997-05-01 00:00:00+00:00z1997-06-01 00:00:00+00:00z1997-07-01 00:00:00+00:00z1997-08-01 00:00:00+00:00z1997-09-01 00:00:00+00:00z1997-10-01 00:00:00+00:00z1997-11-01 00:00:00+00:00z1997-12-01 00:00:00+00:00rN  r
   )
r[  z1997-01-15 00:00:00+00:00r\  z1997-02-15 00:00:00+00:00r]  z1997-03-15 00:00:00+00:00r^  z1997-04-15 00:00:00+00:00r_  z1997-05-15 00:00:00+00:00rO  )r[  z1997-01-05 00:00:00+00:00z1997-01-09 00:00:00+00:00z1997-01-13 00:00:00+00:00z1997-01-17 00:00:00+00:00z1997-01-21 00:00:00+00:00z1997-01-25 00:00:00+00:00z1997-01-29 00:00:00+00:00r\  z1997-02-05 00:00:00+00:00z1997-02-09 00:00:00+00:00r!  )r[  z1997-01-01 04:00:00+00:00z1997-01-01 08:00:00+00:00z1997-01-01 12:00:00+00:00z1997-01-01 16:00:00+00:00z1997-01-01 20:00:00+00:00z1997-01-02 00:00:00+00:00z1997-01-02 04:00:00+00:00z1997-01-02 08:00:00+00:00z1997-01-02 12:00:00+00:00z1997-01-02 16:00:00+00:00rt   r%  )r[  z1997-01-01 00:05:00+00:00z1997-01-01 00:10:00+00:00z1997-01-01 00:15:00+00:00z1997-01-01 00:20:00+00:00rP  )	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:00rR  r;  )z 1996-12-31 23:59:59.999500+00:00r[  z 1997-01-01 00:00:00.000500+00:00z 1997-01-01 00:00:00.001000+00:00z 1997-01-01 00:00:00.001500+00:00z 1997-01-01 00:00:00.002000+00:00  r   r   r   r   r   r   r4   r   )rK  rU  r   rV  r   r   r   s          r   test_auto_date_locator_intmultrb    s      "222K K K ",,,K K K ",,,K K K "+++. . . ",,,. . . "2.... . .
 "2.... . . "5555 5 5g;Gz 
	4A	&	&B$ F F'\++B33CV_WWYY778899XEEEEEF Fr   c                      t          j        d          } t          j        |           }d}|                    ||dt           j        z  z   |dt           j        z  z   g          }|g dk    sJ d S )NTr,  g    B@r   i  )00:00z00.0005z00.0009)r4   r2  ConciseDateFormatterformat_ticksMUSECONDS_PER_DAY)r   r  	year_1996stringss       r    test_concise_formatter_subsecondrj  +  s    $===G+G44II$$C&222C&222&4 5 5G 555555555r   c            
      ,   d } t          j         ddd          }t          j        d          d t          ddd	          D             gt          j        d
          g dgt          j        d          g dgt          j        d          g dgt          j        d          g dgt          j        d	          g dgt          j        d          g dgt          j        d          g dgf}|D ]\  }}||z   } | ||          }||k    sJ d S )Nc                    t          j                    \  }}t          j        d          }t          j        |          }|j                            |           |j                            |           |                    | |           |j	        
                                 d |                                D             }|S )NTr,  c                 6    g | ]}|                                 S r   r   r   sts     r   r   zMtest_concise_formatter.<locals>._create_auto_date_locator.<locals>.<listcomp>@       <<<r{{}}<<<r   r"   r_   r4   r2  re  yaxisr   r   r   r   r   get_yticklabels)rI  rJ  r-   r.   r   r  stss          r   rK  z9test_concise_formatter.<locals>._create_auto_date_locator7  s    ,..R(DAAA/88	
""7+++
$$Y///
E5!!!
<<r'9'9';';<<<
r   r`  r   r  r  c                 ,    g | ]}t          |          S r   r   r   r   s     r   r   z*test_concise_formatter.<locals>.<listcomp>E      777AQ777r       rt   rM  )1997FebMarAprMayJunJulAugSepOctNovDecrN  r
   )
Jan15r|  r  r}  r  r~  r  r  r  rO  )r  05091317212529r|  r  r  r!  )zJan-0104:0008:0012:0016:0020:00zJan-02r  r  r  r  r%  )rd  00:0500:1000:1500:20rP  )	rd  r  10r  20r  303540r   )59.5rd  00.501.001.502.002.5r   r   r   )rK  r   rU  rV  r   r   ri  s          r   test_concise_formatterr  6  s   
 
 
 
	4A	&	&B"22277tT2!6!6777 ",,,- - - ",,,   "+++   ",,,? ? ? "2...=== "2...III "1---III3G: % # #'\++B33("""""# #r   zt_delta, expectedg{Gz?rP  z1997-Jan-01 00:00z1997-Jan-01 00:011997-Jan-011997-Jan-021997-Jan      c                    t          j         ddd          }|| z   }t          j                    \  }}t          j                    }t          j        |          }|j                            |           |j                            |           |	                    ||gddg           |j
                                         |                                |k    sJ d S )Nr`  r   r   )r   r"   r_   r4   r2  re  rk   r   r   r%   r   r   
get_offset)rV  r   r   r   r-   r.   r   r  s           r   "test_concise_formatter_show_offsetr  g  s     
	4A	&	&B	gBlnnGC$&&G+G44IHw'''H  +++GGRHq!fJOO!!X------r   c                     t          j         ddd          } | t          j        d          z   }t          j                    \  }}t	          j                    }t	          j        |          }|j                            |           |j        	                    |           |
                                 |                    | |gddg           |j                                         |                                dk    sJ d S )Nr`  r   <   r
   r   r  )r   r   r"   r_   r4   r2  re  rk   r   r   invert_xaxisr%   r   r   r  )r   r   r-   r.   r   r  s         r   +test_concise_formatter_show_offset_invertedr    s    		4A	&	&B	h b)))	)BlnnGC$&&G+G44IHw'''H  +++OOGGRHq!fJOO!!Z//////r   c                     t          j         ddd          t          j         ddd          g} ddg}t          j                    \  }}|                    | |           t	          j                    }t          j        t          d          5  |j	        
                    |           d d d            n# 1 swxY w Y   |j	        j        J  |j        |   |j	                                        |k    sJ d S )	Nr   r   r   r   rt   r   zalready has a convertermatch)r   r"   r_   r%   r4   ConciseDateConverterr   r   r   rk   set_converterr?   r   get_converter)r   yr-   r.   convs        r   test_concise_converter_staysr    s&    
	4A	&	&(9$2(F(FGA	
AAlnnGCGGAqMMM&((D	k)B	C	C	C % %
t$$$% % % % % % % % % % % % % % %8>!!!BKOO8!!##t++++++s   B22B69B6c                     t          j                    \  } }t          j        ddd          }|t          j        d          z   }t	          j                    }t	          j        |          }|j                            |           |j        	                    |           |
                    ||gddg           |                                  |                                dk    sJ |                    ||t          j        d          z              |                                  |                                dk    sJ |                    |t          j        d	          z   |t          j        d
          z              |                                  |                                dk    sJ |                    ||t          j        d          z              |                                  |                                dk    sJ d S )Nr`  r   r  r  r   r  r   r  rQ   r   r{  )r"   r_   r   r   r4   r2  re  rk   r   r   r%   ra   r  r   )r-   r.   r   r   r   r  s         r   test_offset_changesr    s   lnnGC		4A	&	&B	h s+++	+B$&&G+G44IHw'''H  +++GGRHq!f   !!R''''KKB+!4444555   !!Z////KKX'a0000X'b11113 3 3   !!V++++KKB+#6666777   !!R''''''r   c                     g | ]}d |fz  	S r  r   rw  s     r   r   r     s     CCCqe#CCCr   ry  rz  rO  )r  $\mathdefault{05}$$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$r|  r  r  )zJan$\mathdefault{{-}01}$$\mathdefault{04{:}00}$$\mathdefault{08{:}00}$$\mathdefault{12{:}00}$$\mathdefault{16{:}00}$z$\mathdefault{20{:}00}$zJan$\mathdefault{{-}02}$r  r  r  r  )z$\mathdefault{59.5}$z$\mathdefault{00{:}00}$z$\mathdefault{00.5}$z$\mathdefault{01.0}$z$\mathdefault{01.5}$z$\mathdefault{02.0}$z$\mathdefault{02.5}$c                 ~   t          j         ddd          }|| z   }t          j        d          }|                                 |j                            t          j        |          t          j        |                     t          j        |d          }|                     |                      |k    sJ d S )Nr`  r   Tr,  r.  )	r   r4   r2  r3  r4  r5  r5   re  rf  )rV  r   r   r   r   r  s         r   test_concise_formatter_usetexr    s    , 
	4A	&	&B	gB$===GL""6?2#6#68K8KLLL+GDAAAI!!'')),,888888r   c            
      :   g dfd} t          j         ddd          }t          j        d          d t          dd	d
          D             gt          j        d          g dgt          j        d          g dgt          j        d          g dgt          j        d          g dgt          j        d
          g dgt          j        d          g dgt          j        d          g dgf}|D ]\  }}||z   } | ||          }||k    sJ d S )N)%Yz%m/%Yzday: %d%H hr %M minr  z	%S.%f secc                    t          j                    \  }}t          j        d          }t          j        |          }|j                            |           |j                            |           |                    | |           |j	        
                                 d |                                D             }|S )NTr,  )formatsc                 6    g | ]}|                                 S r   r   rn  s     r   r   zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>  rp  r   rq  )rI  rJ  r-   r.   r   r  rt  r  s          r   rK  zAtest_concise_formatter_formats.<locals>._create_auto_date_locator  s    ,..R(DAAA/III	
""7+++
$$Y///
E5!!!
<<r'9'9';';<<<
r   r`  r   r  r  c                 ,    g | ]}t          |          S r   rv  rw  s     r   r   z2test_concise_formatter_formats.<locals>.<listcomp>  s*     . . .c!ff . . .r   ry  rz  rt   rM  )r{  02/199703/199704/199705/1997z06/1997z07/1997z08/1997z09/1997z10/1997z11/1997z12/1997rN  r
   )
01/1997day: 15r  r  r  r  r  r  r  r  rO  )r  day: 05day: 09zday: 13zday: 17zday: 21zday: 25zday: 29r  r  r  r!  )zday: 0104 hr 00 min08 hr 00 min12 hr 00 min16 hr 00 minz20 hr 00 minzday: 02r  r  r  r  r%  )00 hr 00 minz00 hr 05 minz00 hr 10 minz00 hr 15 minz00 hr 20 minrP  )	r  z05.000000 secz10.000000 secz15.000000 secz20.000000 secz25.000000 secz30.000000 secz35.000000 secz40.000000 secr   )z59.500000 secr  z00.500000 secz01.000000 secz01.500000 secz02.000000 secz02.500000 secr  )rK  r   rU  rV  r   r   ri  r  s          @r   test_concise_formatter_formatsr    s   < < <G
 
 
 
 
 
	4A	&	&B		(	+	+	+ . .eD	r? ? . . . 			"	%	%	% ( ( ( 	 
		%	%	% ( ( ( 	 
		$	$	$ ' ' ' 	 
	"	%	%	% ( ( ( 	
 
	B	'	'	' *9 *9 *9 	:		B	'	'	' * * * 	
 
	A	&	&	& ) ) ) 	7
G@ % # #'\++B33("""""# #r   c            
      :   g dfd} t          j         ddd          }t          j        d          d t          dd	d
          D             gt          j        d          g dgt          j        d          g dgt          j        d          g dgt          j        d          g dgt          j        d
          g dgt          j        d          g dgt          j        d          g dgf}|D ]\  }}||z   } | ||          }||k    sJ d S )N)r  z'%yz%Bz%m-%dz%Sz%S.%fc                    t          j                    \  }}t          j        d          }t          j        |          }|j                            |           |j                            |           |                    | |           |j	        
                                 d |                                D             }|S )NTr,  )zero_formatsc                 6    g | ]}|                                 S r   r   rn  s     r   r   zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>&  rp  r   rq  )rI  rJ  r-   r.   r   r  rt  r  s          r   rK  zBtest_concise_formatter_zformats.<locals>._create_auto_date_locator  s    ,..R(DAAA/,0 0 0	
""7+++
$$Y///
E5!!!
<<r'9'9';';<<<
r   r`  r   r  r  c                 ,    g | ]}t          |          S r   rv  rw  s     r   r   z3test_concise_formatter_zformats.<locals>.<listcomp>+  rx  r   ry  rz  rt   rM  )z'97r|  r}  r~  r  r  r  r  r  r  r  r  rN  r
   )
Januaryr  Februaryr  Marchr  Aprilr  r  r  rO  )r  r  r  r  r  r  r  r  r  r  r  r!  )z01-01r  r  r  r  r  z01-02r  r  r  r  r%  )00r  r  r  r  rP  )	r  r  r  r  r  r  r  r  r  r   )r  z00.0r  r  r  r  r  r  )rK  r   rU  rV  r   r   ri  r  s          @r   test_concise_formatter_zformatsr    s   <<<L     
	4A	&	&B"22277tT2!6!6777 ",,,> > > ",,,6 6 6 "+++8 8 8 ",,,A A A "2...::: "2...FFF "1---HHH3G: % # #'\++B33("""""# #r   c                     d } t          j         ddd                              t           j        j                  }t          j        d          g ddgt          j        d	
          g ddgt          j        d          g ddgt          j        d          g ddgf}t          j        t          j        d                    }|D ]+\  }}}||z   } | |||          \  }}	||k    sJ |	|k    sJ ,d S )Nc                    t          j                    \  }}t          j        d          }t          j        ||          }|j                            |           |j                            |           |                    | |           |j	        
                                 d |                                D             }||j                                                                        fS )NTr,  tzc                 6    g | ]}|                                 S r   r   rn  s     r   r   zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>W  rp  r   )r"   r_   r4   r2  re  rr  r   r   r   r   r   rs  get_offset_textr   )rI  rJ  r  r-   r.   r   r  rt  s           r   rK  z<test_concise_formatter_tz.<locals>._create_auto_date_locatorN  s    ,..R(DAAA/B???	
""7+++
$$Y///
E5!!!
<<r'9'9';';<<<BH,,..779999r   r`  r   rS   rO  r!  )03:0007:0011:0015:0019:00z23:00r  r  r  r  r  r  rt   r%  )r  z03:05z03:10z03:15z03:20r  rP  )	r  r  r  r  r  r  r  r  r  z1997-Jan-01 03:00r   )r  r  r  r  r  r  r  r   )r   replacetimezoneutcr   )
rK  r   rU  new_tzrV  expected_stringsexpected_offsetr   ri  offsets
             r   test_concise_formatter_tzr  M  sa   
: 
: 
: 
	4A	&	&	.	.h6G6K	.	L	LB",,,> > >
 "2...=== "2...III# "1---III#G& x1:::;;F6= ) )2!?'\33BFCC*****(((((	) )r   c                     d } t          j        d          g dgt          j        d          g dgt          j        d          g d	gt          j        d
          g dgt          j        d
          g dgt          j        d          g dgt          j        d
          g dgf}t          j                            d          }t          j         ddd|          }|D ]\  }}t          ddi          5  ||z   } | |||          }t          t          t          t          j
         |            |                              }||k    sJ 	 d d d            n# 1 swxY w Y   d S )Nc                     t          j        d|          }|                                  |j        j        t          j        | |g            |S )NTr-  r  rG  )rI  rJ  r  r   s       r   rK  zDtest_auto_date_locator_intmult_tz.<locals>._create_auto_date_locatorw  sN    (DRHHH!!###&&(G(GHHr   r  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:00rM  )1997-01-01 00:00:00-08:001997-02-01 00:00:00-08:001997-03-01 00:00:00-08:001997-04-01 00:00:00-08:001997-05-01 00:00:00-07:00z1997-06-01 00:00:00-07:00z1997-07-01 00:00:00-07:00z1997-08-01 00:00:00-07:00z1997-09-01 00:00:00-07:00z1997-10-01 00:00:00-07:00z1997-11-01 00:00:00-08:00z1997-12-01 00:00:00-08:00rN  r
   )
r  z1997-01-15 00:00:00-08:00r  z1997-02-15 00:00:00-08:00r  z1997-03-15 00:00:00-08:00r   z1997-04-15 00:00:00-07:00r  z1997-05-15 00:00:00-07:00rO  )r  z1997-01-05 00:00:00-08:00z1997-01-09 00:00:00-08:00z1997-01-13 00:00:00-08:00z1997-01-17 00:00:00-08:00z1997-01-21 00:00:00-08:00z1997-01-25 00:00:00-08:00z1997-01-29 00:00:00-08:00r  z1997-02-05 00:00:00-08:00z1997-02-09 00:00:00-08:00r!  )r  z1997-01-01 04:00:00-08:00z1997-01-01 08:00:00-08:00z1997-01-01 12:00:00-08:00z1997-01-01 16:00:00-08:00z1997-01-01 20:00:00-08:00z1997-01-02 00:00:00-08:00z1997-01-02 04:00:00-08:00z1997-01-02 08:00:00-08:00z1997-01-02 12:00:00-08:00z1997-01-02 16:00:00-08:00rt   r%  )r  z1997-01-01 00:05:00-08:00z1997-01-01 00:10:00-08:00z1997-01-01 00:15:00-08:00z1997-01-01 00:20:00-08:00rP  )	r  z1997-01-01 00:00:05-08:00z1997-01-01 00:00:10-08:00z1997-01-01 00:00:15-08:00z1997-01-01 00:00:20-08:00z1997-01-01 00:00:25-08:00z1997-01-01 00:00:30-08:00z1997-01-01 00:00:35-08:00z1997-01-01 00:00:40-08:00zCanada/Pacificr`  r   rS   z_internal.classic_modeFr  )r   r   r   r  gettzr   r   r   r   r4   r   )	rK  rU  r  r   rV  r   r   r   ro  s	            r   !test_auto_date_locator_intmult_tzr  v  sE      "000K K K ",,,K K K ",,,K K K "+++. . . ",,,. . . "2.... . .
 "2.... . .Y3Gj 
		+	,	,B		4Ab	1	1	1B$ " "159:: 	" 	"gB//B;;Gc#vwwyyR@@@AABBB>>>>>		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" "s   =AE##E'	*E'	zdate_inverted_limit.pngc                     t          j         ddd          } t          j         ddd          }t          j                    \  }}|                    | dd           |                    | t          j        d	          z
  |t          j        d	          z              |                                 |                    d
           d S r   )r   r"   r_   rp   r   r   invert_yaxisr   r   s       r   test_date_inverted_limitr    s     
	4B	'	'B		4B	'	'BlnnGCJJrAJ&&&KKX'Q////X'Q////1 1 1OOT"""""r   c                    t           j                            d          }t          j        }t          j        ddddd|          }t          j        dd	          }|j        d
z  d} | |||          } |||          }dt          j        t          j
        d                    z   fdt          |          D             }	t          t          j        |                    }
|
|	k    sJ d S )NzEurope/Brusselsr  r   r   r   rS   !   r   )r&  rQ  iQ r   )rA  freqperiodsg    p&Ar^   c                      g | ]
}|z  z   S r   r   )r   rO   interval_daysr2   s     r   r   z&_test_date2num_dst.<locals>.<listcomp>  s#    DDDaq=01DDDr   )r   r  r  r4   rX   r   r   rQ  r5   r    rE   r   r   )
date_range
tz_convertBRUSSELSrX   dtstartr   Ndt_utcdt_bxlexpected_ordinalfactual_ordinalfr  r2   s              @@r   _test_date2num_dstr    s     {  !233H
*C aQ#>>>G!"b999H$u,M	AZgHa@@@FZ))F	FOBM,$?$?@@	@BDDDDD588DDD6?62233O///////r   c                  h     G d dt           j                   fd} d }t          | |           d S )Nc                   L     e Zd ZdZ fdZ fdZ fdZed             Z xZ	S )%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                    t                                          |          }t          |dd           }|(t          |dd           }||                    |          }t	          |t
          j                  r|                     |          }|S )NrT   	normalize)super__sub__getattrr  
isinstancer   
mk_tzaware)r  otherrrT   	localizer	__class__s        r   r  z-test_date2num_dst.<locals>.dt_tzaware.__sub__  s    &&AQ$//F!#FK>>	(((++A!X.// 'OOA&&Hr   c                 l    |                      t                                          |                    S N)r   r  __add__)r  r!  r$  s     r   r'  z-test_date2num_dst.<locals>.dt_tzaware.__add__  s%    ??577??5#9#9:::r   c                 p    t                                          |          }|                     |          S r&  )r  
astimezoner   )r  rT   r  r$  s      r   r)  z0test_date2num_dst.<locals>.dt_tzaware.astimezone  s,    ##F++B??2&&&r   c                 T    i }d}|D ]}t          ||d           }||||<    | di |S )N)r   r   r   r$  minutesecondr   rT   r   )r  )clsdatetime_objkwargsattrsattrvals         r   r   z0test_date2num_dst.<locals>.dt_tzaware.mk_tzaware   sQ    FE  ' 'lD$77?#&F4L3==== r   )
r
  r  r  __doc__r  r'  r)  classmethodr   __classcell__)r$  s   @r   
dt_tzawarer    s        	 		 	 	 	 		; 	; 	; 	; 	;	' 	' 	' 	' 	' 
	! 	! 
	! 	! 	! 	! 	!r   r6  c                 j                         |           fdt          |          D             S )Nc                      g | ]
}|z  z   S r   r   )r   rO   r  r	  s     r   r   z9test_date2num_dst.<locals>.date_range.<locals>.<listcomp>  s"    ===1t8$===r   )r   r   )rA  r	  r
  r  r6  s    ` @r   r  z%test_date2num_dst.<locals>.date_range  s;    ''..=====eGnn====r   c                      fd| D             S )Nc                 :    g | ]}|                               S r   )r)  )r   drT   s     r   r   z9test_date2num_dst.<locals>.tz_convert.<locals>.<listcomp>  s%    666V$$666r   r   )dt_listrT   s    `r   r  z%test_date2num_dst.<locals>.tz_convert  s    6666g6666r   )r   r  )r  r  r6  s     @r   test_date2num_dstr=    sq    .! .! .! .! .!X& .! .! .!b> > > > >7 7 7 z:.....r   c                 <      fd}t           j        |           d S )Nc                  R     j         j        |                      t                    S r&  )DatetimeIndexr  astypeobject)argspds    r   r  z,test_date2num_dst_pandas.<locals>.tz_convert$  s$    *r*D188@@@r   )r  r  )rD  r  s   ` r   test_date2num_dst_pandasrE     s;    A A A A A r}j11111r   c           	          |d          } | t          j         dddd          |          } | t          j         dddd          |          }t          j        t          j        j        |          }|                    ||          }t          j         ddddt          j                                                  t          j         ddd	d
t          j                                                  g}||k    sJ d S )NAustralia/Sydneyr   r=  r   r   )r	  r     rS   r      )	r   r4   r   r   r   DAILYbetweenr  tzutc)	attach_tzget_tzSYDr  dtendruleactexps           r   _test_rrulewrapperrT  *  s    
&#
$
$Ci)$1a88#>>GIh'aA66<<EHN$8'JJJD
,,w
&
&CT1aHK4E4E4G4GHHHT1aHK4E4E4G4GHHHJC #::::::r   c            	      2   d } t          | t          j        j                   t          j                            d          }t	          j        dddd          }t	          j        dddd          }t          j        t          j        j        |||          }|	                    |          t	          j        ddddd|	          k    sJ |
                    |          t	          j        ddd
dd|	          k    sJ |j        |k    sJ |j        dk    sJ d S )Nc                 .    |                      |          S )NrS   )r  r  zis     r   rM  z$test_rrulewrapper.<locals>.attach_tz:  s    zzz$$$r   rG  r   r=  r   r   )r	  r  rT   untilr   rS   r   )rT  r   r  r  r   r4   r   r   rJ  afterbefore_base_tzinfo	_interval)rM  rO  r  rP  rQ  s        r   test_rrulewrapperr^  9  sM   % % % y(+"3444
+

.
/
/CaA..GdAq!,,EHN$8'&)8 8 8D::g("3D!Q1;>#@ #@ #@ @ @ @ @;;u!24Aq!:="? "? "? ? ? ? ? ####>Qr   c                  ^    t          j        d          } d }t          || j                   d S )Npytzc                 ,    |                     |           S r&  )localizerW  s     r   rM  z)test_rrulewrapper_pytz.<locals>.attach_tzS  s    {{2r   )r   importorskiprT  r  )r`  rM  s     r   test_rrulewrapper_pytzrd  N  s=     v&&D   y$-00000r   c            	      T   t          j        d          } |                     d          fdt          d          D             }t	          j        d          }|                                 |j                            t	          j	        |d                   dz
  t	          j	        |d	                   dz              t          j        g d
          }|t	          j	        t          j        d                    z   }t          j                            | |                       g d}t          t!          t"          t	          j         |                                          }||k    sJ t          j        |                    |d         |d                   t          j        g d                    sJ t          j        |                    |d         |d                                       |d         |d                   t          j        g d                    sJ d S )Nr`  zAmerica/New_Yorkc           	          g | ]@}                     t          j        d dd                    t          j        |          z   AS )r   r   )rb  r   r   )r   rO   r  s     r   r   z)test_yearlocator_pytz.<locals>.<listcomp>^  sW     	7 	7 	7%& 
X&tQ22	3	3a  
! 	7 	7 	7r   r   Tr  r   r   r?  )g{ja&Ag{jd&Ag{jtg&Ag{jNj&Ag{j*m&Ag{jp&Ag{jr&Ar^   )z2009-01-01 00:00:00-05:00z2010-01-01 00:00:00-05:00z2011-01-01 00:00:00-05:00z2012-01-01 00:00:00-05:00z2013-01-01 00:00:00-05:00z2014-01-01 00:00:00-05:00z2015-01-01 00:00:00-05:00r  r   )	g@g*@g:@gJ@gZ@gj@gz@g@g@)r   rc  r  r   r4   r2  r3  r4  r5  r5   r    r!   rE   r&   rb   r   r   r   r   allcloser   get_locator)r`  r   r   r   r   ro  r  s         @r   test_yearlocator_pytzri  Y  s@   v&&D	)	*	*B	7 	7 	7 	7*/++	7 	7 	7A$DDDGL""6?1Q4#8#8#<#)?1R5#9#9##=? ? ?
 N N N 	O 	OA 	
FOBM,77888AJq'')),,,J J JH 
c#vwwyyR88899	:	:B>>>>;w**1Q4166	 	 	9 9      ;w**1Q4166BB1Q41NNx	 	 	       r   c            
         d } t          j         ddd          }t          j        d          ddddg dgt          j        d          dd	d
dg dgt          j        d          ddddddggf}|D ]W\  }}}||z   } | ||fi |}t          t          t          t          j         |                                          |k    sJ Xd S )Nc                     t          j        di |}|                                 |j                            t          j        |           t          j        |                     |S )Nr   )r4   YearLocatorr3  r4  r5  r5   )rI  rJ  r/  r   s       r   _create_year_locatorz.test_YearLocator.<locals>._create_year_locator{  sb    $..v..!!###&&vu'='='-u'='=	? 	? 	?r   r  r   r  r  rt   )r   r   r   rZ  r{   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:00ra  )rm  r   rU  r6  	argumentsr   r   r   s           r   test_YearLocatorro  z  sG      
	4A	&	&B"222a22K K K "222a33K K K "000a33,.IJ%G0 '. F F"y(%Z&&r2;;;;CV_WWYY778899XEEEEEF Fr   c                  `   t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        d           d S )Nr?  r   g      r   g?r   )r   raises
ValueErrorr4   r   r   r   r   test_DayLocatorrs    s    	z	"	" ' '2&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	z	"	" ) )4(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	z	"	" & &1%%%%& & & & & & & & & & & & & & &	z	"	" ( (3''''( ( ( ( ( ( ( ( ( ( ( ( ( ( (
s######sE   <A A  BB	B&CCC,DDDc                  ~    t          j         dddt          j                  } |                                 dk    sJ d S )N  r   rS   rX   )r   r4   rX   tznamer  s    r   test_tz_utcrx    s<    		4Afj	9	9	9B99;;%r   z	x, tdeltaro   c                 >    t          j        |           }||k    sJ d S r&  )r4   num2timedelta)r   tdeltar  s      r   test_num2timedeltar|    s%    
 
	a	 	 B<<<<<<r   c                  8   t          j        d          t          j        d          g} t          j        |           }t          j        ddg          t          j        t          j        d                    z   }t           j                            ||           d S )Nr   z
2001-01-01    H&Ag    J&Ar^   )r    rE   r4   r5   r!   r&   r'   )r  dnr   s      r   test_datetime64_in_listr    s}    
-
%
%r}\'B'B	CB			B	7W%	&	&	|44	5	5
6AJB"""""r   c                     t          j        d          } t          j                     t          j                     t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j                     t          j        d           | t          j        d          z
  	                    d          }|	                    d          }t           j
                            t          j        |           t          |                     t          j                     t          j        d           t           j
                            t          j        |           d           t          j                     t          j        d           t           j
                            t          j        |           |d	z
             t          j                     t          j        d
           t           j
                            t          j        t          j        d                    d           d S )Nr   z
0000-01-01r]   datetime64[D]intr^   r~  z1970-01-01T01:00:00gUUUUUU?z1970-01-01T00:00:00z1970-01-01T12:00:00g      ?)r    rE   r4   rd   	get_epochr   rq  RuntimeErrorre   rA  r&   r'   r5   floatrb   )dater  s     r   test_change_epochr    s   =&&D $&&&
	|	$	$ ' ' 	&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '
 $&&&
\"""
|,,
,	4	4_	E	EB	5		BJFOD11599===
$&&&
\"""JFOD118<<<
$&&&
*+++Jvt44b6kBBB
$&&&
*+++J&;<<==    s   A55A9<A9c                     t          j        ddd          } t          j        d          }dg|j        d<   |                                 |j                            t          j        | d	                   t          j        | d
                              t          j
        t          d          5   |            }d d d            d S # 1 swxY w Y   d S )Nz
2001-01-10z
2001-03-04r  r   Fr,  r   r   r   r?  zAutoDateLocator was unabler  )r    aranger4   r2  	intervaldr3  r4  r5  r5   r   r   r   )rY   r   locss      r   test_warn_notintervalsr    s   IlLHHHE$>>>G3GaL""6?58#<#<#)?59#=#=? ? ?	k)E	F	F	F  wyy                 s   2C

CCc                     dt           j        d<   t          j        ddd          } t          j                    \  }}|                    | t          j        t          |                                |j                                         |	                                d         
                                dk    sJ |	                                d	         
                                d
k    sJ dt           j        d<   t          j                    \  }}|                    | t          j        t          |                                |j                                         |	                                d         
                                dk    sJ |	                                d	         
                                dk    sJ t          j        t                    5  dt           j        d<   d d d            d S # 1 swxY w Y   d S )N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  r_   r%   r   r   r   r   r   r   rq  rr  rY   r-   r.   s      r   test_change_converterr    s   %.CL!"IlLHHHElnnGCGGE29SZZ(()))JOO"++--6666"++--5555%+CL!"lnnGCGGE29SZZ(()))JOO"++-->>>>"++-->>>>	z	"	" / /).%&/ / / / / / / / / / / / / / / / / /s   G<<H H c                     dt           j        d<   t          j        ddd          } t          j                    \  }}|                    | t          j        t          |                                |j                                         |	                                d         
                                dk    sJ |	                                d	         
                                d
k    sJ dt           j        d<   t          j                    \  }}|                    | t          j        t          |                                |j                                         |	                                d         
                                dk    sJ |	                                d	         
                                dk    sJ 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  r_   r%   r   r   r   r   r   r  s      r   test_change_interval_multiplesr    sz   .3CL*+IlLHHHElnnGCGGE29SZZ(()))JOO"++-->>>>"++-->>>>.4CL*+lnnGCGGE29SZZ(()))JOO"++-->>>>"++-->>>>>>r   c            
      p   t          j                    } |                     dt          j                  dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                                  |                                 t          j        dddddt          j        j	                  t          j        dddddt          j        j	                  fk    sJ | j
        t           j        k    sJ d}t          j
                            |          }| j
        |k    sJ |                     d           | j
        |k    sJ |                                   | j        j        t          j        d	d
g            |                                 t          j        ddddd|          t          j        ddddd|          fk    sJ |t$          j        d<   t          j                    } | j
        |k    sJ t)          j        t,          d          5  t          j        d           d d d            n# 1 swxY w Y   t)          j        t.          d          5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   )r   ru  rS   r   Iceland
2022-01-10z
2022-01-08rI   r   r   r  z Aiceland is not a valid timezoner  Aicelandr  z%tz must be string or tzinfo subclass.)r4   DateLocatornonsingularr    infr3  datalim_to_dtr   r  r  r  rX   r   r  
set_tzinfor4  set_data_intervalr5   r"   r   r   rq  rr  	TypeError)r   tz_str
iceland_tzs      r   test_DateLocatorr    sq    ""Gq"&))V3333q!$$....q!$$....q!$$////  ""$1a83D3HIII$1a83D3HIII'K K K K K
 :####F""6**J:####y!!!:####"GL"FO\5A5C %D %D E E  ""$1a:>>>$2q!J???'A A A A A
  &CL  ""G:#### 
z)K	L	L	L * *j))))* * * * * * * * * * * * * * *	yD
F 
F 
F ! !a    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s$    I""I&)I&J++J/2J/c                     t          j        d          dk    sJ t          j        ddd          } t          j        d|           dk    sJ t	          j        t          j        dd	g|           t	          j        dd
g          k              sJ t          j        g           j        dk    sJ t          j        g t          j        ddd                    j        dk    sJ d S )Nr      @rI   r   r   r   z2022-01)r+  z2022-02g    @@r   )r4   datestr2numr   r  r    r   r!   sizerw  s    r   test_datestr2numr  E  s#   l++w6666	Dr	2	2	2Bi444????6&$	I
 
 
Xvv&''( ) ) ) ) ) b!!&!++++b(-T67R#A #A #A B BBF!L L L L L Lr   kwarg)r  r  offset_formatsc                     t          j                    }| ddgi}|  d}t          j        t          |          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S )Nr  r  z argument must be a listr  )r4   r2  r   rq  rr  re  )r  r   r/  r  s       r   !test_concise_formatter_exceptionsr  Q  s     $&&Gb$Z F...E	z	/	/	/ 7 7#G66v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   AA!Ac                      t          j                    } t          j        |           } |d          dk    sJ |                    d          dk    sJ d S )Nr  2022z2022-01-10 00:00:00)r4   r2  re  format_data_short)r   r  s     r   test_concise_formatter_callr  [  sa    $&&G+G44I9W''''&&w//3HHHHHHHr   c                  V   t          j        d t          dd          D                       } t          j        g d          }t           j                            |d          }t          j                    \  }}|                    | |           |                                dk    sJ d S )Nc                 :    g | ]}t          j         d d|          S )r   r   )r   )r   ns     r   r   z(test_datetime_masked.<locals>.<listcomp>e  s'    EEEA(#D!Q//EEEr   r   r>  )r   r   r   r=  r{   r   r  )	r    r!   r   rV   masked_greaterr"   r_   r%   rc   )r   r  mr-   r.   s        r   test_datetime_maskedr  b  s     	EEq!EEEFFA
!!A
Q""AlnnGCGGAqMMM;;==F""""""r   r2  )ii c                     t          j        t          d|  d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )NzDate ordinal z	 convertsr  )r   rq  rr  r4   r   )r2  s    r   test_num2date_errorr  n  s    	z)G)G)G)G	H	H	H                   s   AA	Ac                     t          j        d          t          j        dddddddt          j        j                  k    sJ t          j        d	          t          j        dddddd
t          j        j                  k    sJ d S )Ngj<  j@i  r      r   r=  i,B rS   gq<  j@r{   )r4   r   r   r  r  r   r   r   test_num2date_roundoffr  t  s    ?,--1Bb"aAvh.?.C2E 2E 2E E E E E ?,--1Bb"aAh&7&;2= 2= 2= = = = = = =r   c            
         t          j        t          j        dddddt           j                            } t          j        d          } ||           dk    sJ |                    d            ||           dk    sJ d S )	Nr9  r   r   rS   z%Y-%b-%d %H:%Mz2011-Jan-01 00:00zPacific/Kiritimatiz2011-Jan-01 14:00)r4   r5   r   rX   DateFormatterr  )r*   r  s     r   test_DateFormatter_settzr  |  s    ?8,T1aA4:J@ @ @ A AD$%566I9T??11111 -...9T??1111111r   )Wr   dateutil.tzr   dateutil.rruler   numpyr    r   
matplotlibr   r   matplotlib.datesrY   r4   matplotlib.pyplotpyplotr"   matplotlib.testing.decoratorsr   matplotlib.tickertickerr   r1   markparametrizer8   r>   rG   r[   rg   rm   rq   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r7  rD  rW  rb  rj  r  r  r  r  r  r  r  r  r  r  r  r  r=  rE  rT  r^  r`  rd  ri  ro  rs  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     sd
                     ( ( ( ( ( ( ( ( ! ! ! ! ! !       : : : : : : # # # # # #P P P$  1 1$1aA F F!2!24Aq!Q!G!G!2!24Aq!Q!G!G!I #4("3D!Q1a"H"H"3("3D!Q1a"H"H"J"3("3D!Q1a"H"H"3("3D!Q1a"H"H"J!K L M M  #5 #5 #5 6 6* *	6 6M M*  #5 #5 #5 6 60 0	6 60 "9"9"9::  ;:
* * *(' ' ',8 8 8' ' '( %&''# # ('# %&''  (' %&''# # ('# %&''  ('# # #8   ,-..  /..  	P 	P 	P 89::  ;:0" " "@
K 
K 
K *Xh'''EEuuT4/D/DEEEGXR   KK55B??KKKMXb!!!JJ%%2q//JJJLX###GG%%2,,GGGI	- 	 	= =	 	=; ; ;@ LJ LJ LJ^ HF HF HFV6 6 6.# .# .#b ,X%%%':;X"""$78Xa   -0XQ/Xa   *-Xb!!!2&Xc"""B'/  . . .0 0 0", , ,.( ( (4 ,Xh'''CCUU4r-B-BCCCEXR   4 4 45
 Xb!!!" " "# X"""   /  *	9 	9+ *	94# 4# 4#n1# 1# 1#h&) &) &)RC" C" C"L ,-..	# 	# /.	#0 0 0,>/ >/ >/B2 2 2    * 1 1 1   @$F $F $FN	$ 	$ 	$     
 0h0a8889s8&8h&8a&@&@&@&8h&8c&B&B&B&D EFG G 	G G
# # #  @  / / /*? ? ?&+! +! +!\	L 	L 	L FH H7 7H H7I I I	# 	# 	#  455  65
= = =	2 	2 	2 	2 	2r   