
    (?e+                     p
   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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: Z0e&d;             Z1e&d<             Z2d= Z3d> Z4e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             Z5dK Z6dL Z7ej                            d? e j-        d()          dM  e.dNdOd-          D             f e j-        dP/          g dQf e j-        dP2          g dRf e j-        dA          g dSfg          dT             Z8dU Z9dV Z:dW Z;dX Z< edYg          dZ             Z=d[ Z>d\ Z?d] Z@d^ ZAd_ ZBej        jC        d`             ZDej        jC        da             ZEdb ZFdc ZGdd ZHej                            ded e j-        d/          fddfg e j-        d/           e j-        df/          gfg          dg             ZIdh ZJdi ZKdj ZLdk ZMdl ZNdm ZOdn ZPdo ZQej                            dpdq          dr             ZRds ZSdt ZTej                            dudv          dw             ZUdx ZVdy ZWd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     ;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)               @      ?)
      )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_numpyxr2      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(   )r3   r   r+   tnpnptimes        r   test_date_date2num_numpyr9   #   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   r5   r6   r!   nanr"   r'   assert_array_equal)r   r3   tmplr7   r8   s        r   test_date2num_NaTr?   7   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;   )r5   r6   r!   
datetime64isnan)r@   r>   s     r   test_date2num_NaT_scalarrH   C   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>L   @     , , ,  2Q @ @ @@ , , ,r      )r   r   r   r   r   r   r   )mask)FTTFFFTtzinfoc                 F    g | ]}t          j        d |z            z   S rN   r   rO   s     r   r   z(test_date2num_masked.<locals>.<listcomp>U   rQ   r   )r   r!   mar"   r    r5   r6   r'   r=   getmaskUTC)datesnpdatesr   s     @r   test_date2num_maskedr\   I   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_xlimr5   r6   rF   _reset_epoch_test_example	set_epochr.   r/   s     r   test_date_emptyrh   ]   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'   rc   rd   rg   s     r   test_date_not_emptyrn   s   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!   rF   r'   rc   rd   r5   r6   re   rf   rg   s     r   test_axhlinerr   |   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r3   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   ru     rv   rw   rx   ry   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 Nrt   r   ru      rw   r   colorlwr|   r
   rx   r}   )r   r#   r`   rq   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   ru   rv   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   ru   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&   rl   set_major_locatorr5   
DayLocatorget_major_locatorrecordsall)caplogr3   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)r5   re   rf   )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&   r5   rrulewrapperdateutilrruleYEARLYRRuleLocatorrl   r   set_major_formatterAutoDateFormatterautoscale_viewr   )r@   r3   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dayrU      )r5   r   r   rY   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)r5   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@   r3   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>:  s     ???B"++--???r   )z30 08:00z30 08:30z30 09:00z30 09:30z30 10:00z30 10:30)r|   7   )rK      )rL   -   c                 6    g | ]}|                                 S r   r   r   s     r   r   z.test_locator_set_formatter.<locals>.<listcomp>F  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&   rl   r   r5   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_unitN  s    CCr   N)__name__
__module____qualname__r
  r   r   r   _Locatorr  M  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>Q  s$    999RK((999r   r   )rZ   _s     r   callable_formatting_functionzBtest_date_formatter_callable.<locals>.callable_formatting_functionP  s    9959999r   i  rK      z25-12//2014)r5   r   scaledr   )r  r  	formatters      r   test_date_formatter_callabler  K  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   Z  s    EEEtd"EEEr     i{  ru   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   rv   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>m  s!    000sIIcNN000r   )
r   user   r5   AutoDateLocatorcreate_dummy_axisaxisset_view_intervalr6   r   )deltar   r   r   r   r  s        @r   test_date_formatter_usetexr8  X  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   rT   r   r"     microsecondsr        N)r   r5   rY   r   r   dranger   )startendr7  	dateranges       r   test_drangerE  p  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-  r5   r3  r4  r5  r6  r6   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   )rM  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"  )rM  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:00ru   r&  )rM  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)	rM  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:00rM  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*  rK   r   )r   r   r   r>  r|   r?  rR   r|   )maxticks)r   r   r   r   r   r5   r   r3  rT  r   r   MONTHLY)rL  r   resultst_deltar   r   r   s          r   test_auto_date_locatorrX    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-  rH  rI  s      r   rL  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:00rN  )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:00rO  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:00rP  )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:00ru   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:00rQ  )	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:00rS  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   r5   r   )rL  rV  r   rW  r   r   r   s          r   test_auto_date_locator_intmultrc    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)r5   r3  ConciseDateFormatterformat_ticksMUSECONDS_PER_DAY)r   r  	year_1996stringss       r    test_concise_formatter_subsecondrk  ,  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>A       <<<r{{}}<<<r   r#   r`   r5   r3  rf  yaxisr   r   r   r   r   get_yticklabels)rJ  rK  r.   r/   r   r  stss          r   rL  z9test_concise_formatter.<locals>._create_auto_date_locator8  s    ,..R(DAAA/88	
""7+++
$$Y///
E5!!!
<<r'9'9';';<<<
r   ra  r   r  r  c                 ,    g | ]}t          |          S r   r   r   r  s     r   r   z*test_concise_formatter.<locals>.<listcomp>F      777AQ777r       ru   rN  )1997FebMarAprMayJunJulAugSepOctNovDecrO  r
   )
Jan15r}  r  r~  r  r  r  r  r  rP  )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&  )re  00:0500:1000:1500:20rQ  )	re  r  10r  20r  303540r   )59.5re  00.501.001.502.002.5r   r   r    )rL  r   rV  rW  r   r   rj  s          r   test_concise_formatterr  7  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?rQ  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 )Nra  r   r   )r   r#   r`   r5   r3  rf  rl   r   r   r&   r   r   
get_offset)rW  r   r   r   r.   r/   r   r  s           r   "test_concise_formatter_show_offsetr  h  s     
	4A	&	&B	gBlnnGC$&&G+G44IHw'''H  +++GGRHq!fJOO!!X------r   c                  P   t          j         ddd          t          j         ddd          g} ddg}t          j                    \  }}|                    | |           t	          j                    x|j        _        }|j        j        J  |j	        |   |j        j        |k    sJ d S )Nr   r   r   r   ru   r   )
r   r#   r`   r&   r5   ConciseDateConverterrl   	converterr@   r   )r   yr.   r/   convs        r   test_concise_converter_staysr    s     
	4A	&	&(9$2(F(FGA	
AAlnnGCGGAqMMM & ; = ==BH8>!!!BKOO8%%%%%%r   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 )Nra  r   r  r  r   r  r   r  rR   r   r|  )r#   r`   r   r   r5   r3  rf  rl   r   r   r&   rb   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   rx  s     r   r   r     s     CCCqe#CCCr   rz  r{  rP  )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 )Nra  r   Tr-  r/  )	r   r5   r3  r4  r5  r6  r6   rf  rg  )rW  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   ro  s     r   r   zUtest_concise_formatter_formats.<locals>._create_auto_date_locator.<locals>.<listcomp>  rq  r   rr  )rJ  rK  r.   r/   r   r  ru  r  s          r   rL  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   ra  r   r  r  c                 ,    g | ]}t          |          S r   rw  rx  s     r   r   z2test_concise_formatter_formats.<locals>.<listcomp>  s*     . . .c!ff . . .r   rz  r{  ru   rN  )r|  02/199703/199704/199705/1997z06/1997z07/1997z08/1997z09/1997z10/1997z11/1997z12/1997rO  r
   )
01/1997day: 15r  r  r  r  r  r  r  r  rP  )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 minrQ  )	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  )rL  r   rV  rW  r   r   rj  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   ro  s     r   r   zVtest_concise_formatter_zformats.<locals>._create_auto_date_locator.<locals>.<listcomp>  rq  r   rr  )rJ  rK  r.   r/   r   r  ru  r  s          r   rL  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   ra  r   r  r  c                 ,    g | ]}t          |          S r   rw  rx  s     r   r   z3test_concise_formatter_zformats.<locals>.<listcomp>  ry  r   rz  r{  ru   rN  )z'97r}  r~  r  r  r  r  r  r  r  r  r  rO  r
   )
Januaryr  Februaryr  Marchr  Aprilr  r  r  rP  )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  rQ  )	r  r  r  r  r  r  r  r  r  r   )r  z00.0r  r  r  r  r  r  )rL  r   rV  rW  r   r   rj  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   ro  s     r   r   zPtest_concise_formatter_tz.<locals>._create_auto_date_locator.<locals>.<listcomp>E  rq  r   )r#   r`   r5   r3  rf  rs  r   r   r   r   r   rt  get_offset_textr   )rJ  rK  r  r.   r/   r   r  ru  s           r   rL  z<test_concise_formatter_tz.<locals>._create_auto_date_locator<  s    ,..R(DAAA/B???	
""7+++
$$Y///
E5!!!
<<r'9'9';';<<<BH,,..779999r   ra  r   rT   rP  r"  )03:0007:0011:0015:0019:00z23:00r  r  r  r  r  r  ru   r&  )r  z03:05z03:10z03:15z03:20r  rQ  )	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   )
rL  r   rV  new_tzrW  expected_stringsexpected_offsetr   rj  offsets
             r   test_concise_formatter_tzr  ;  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  rH  )rJ  rK  r  r   s       r   rL  zDtest_auto_date_locator_intmult_tz.<locals>._create_auto_date_locatore  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:00rN  )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:00rO  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:00rP  )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:00ru   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:00rQ  )	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/Pacificra  r   rT   z_internal.classic_modeFr  )r   r   r   r  gettzr   r   r   r   r5   r   )	rL  rV  r  r   rW  r   r   r   rp  s	            r   !test_auto_date_locator_intmult_tzr  d  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`   rq   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   rT   !   r   )r'  rR  iQ r   )rB  freqperiodsg    p&Ar_   c                      g | ]
}|z  z   S r   r   )r   rP   interval_daysr3   s     r   r   z&_test_date2num_dst.<locals>.<listcomp>  s#    DDDaq=01DDDr   )r   r  r  r5   rY   r   r   rR  r6   r!   rF   r    r   )
date_range
tz_convertBRUSSELSrY   dtstartr   Ndt_utcdt_bxlexpected_ordinalfactual_ordinalfr  r3   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 )NrU   	normalize)super__sub__getattrr  
isinstancer   
mk_tzaware)r	  otherrrU   	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	  rU   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   rU   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   r0  c                 j                         |           fdt          |          D             S )Nc                      g | ]
}|z  z   S r   r   )r   rP   r
  r  s     r   r   z9test_date2num_dst.<locals>.date_range.<locals>.<listcomp>  s"    ===1t8$===r   )r  r    )rB  r  r  r
  r0  s    ` @r   r  z%test_date2num_dst.<locals>.date_range  s;    ''..=====eGnn====r   c                      fd| D             S )Nc                 :    g | ]}|                               S r   )r#  )r   drU   s     r   r   z9test_date2num_dst.<locals>.tz_convert.<locals>.<listcomp>	  s%    666V$$666r   r   )dt_listrU   s    `r   r  z%test_date2num_dst.<locals>.tz_convert  s    6666g6666r   )r   r  )r  r  r0  s     @r   test_date2num_dstr7    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  )r>  r  s   ` r   test_date2num_dst_pandasr?    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
     rT   r      )	r   r5   r   r   r   DAILYbetweenr  tzutc)	attach_tzget_tzSYDr
  dtendruleactexps           r   _test_rrulewrapperrN    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 )NrT   )r  r  zis     r   rG  z$test_rrulewrapper.<locals>.attach_tz(  s    zzz$$$r   rA  r   r>  r   r   )r  r
  rU   untilr   rT   r   )rN  r   r  r  r   r5   r   r   rD  afterbefore_base_tzinfo	_interval)rG  rI  r
  rJ  rK  s        r   test_rrulewrapperrX  '  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   )localizerQ  s     r   rG  z)test_rrulewrapper_pytz.<locals>.attach_tzA  s    {{2r   )r   importorskiprN  r  )rZ  rG  s     r   test_rrulewrapper_pytzr^  <  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 )NrZ  zAmerica/New_Yorkc           	          g | ]@}                     t          j        d dd                    t          j        |          z   AS )r   r   )r\  r   r   )r   rP   r  s     r   r   z)test_yearlocator_pytz.<locals>.<listcomp>L  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   r]  r  r    r5   r3  r4  r5  r6  r6   r!   r"   rF   r'   rc   r   r   r   r   allcloser   get_locator)rZ  r   r   r  r   rp  r  s         @r   test_yearlocator_pytzrc  G  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   )r5   YearLocatorr4  r5  r6  r6   )rJ  rK  r)  r   s       r   _create_year_locatorz.test_YearLocator.<locals>._create_year_locatori  sb    $..v..!!###&&vu'='='-u'='=	? 	? 	?r   r  r   r  r  ru   )r   r   r   r[  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:00rb  )rg  r   rV  r7  	argumentsr   r   r   s           r   test_YearLocatorri  h  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
ValueErrorr5   r   r   r   r   test_DayLocatorrm    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   rT   rY   )r   r5   rY   tznamer  s    r   test_tz_utcrr    s<    		4Afj	9	9	9B99;;%r   z	x, tdeltarp   c                 >    t          j        |           }||k    sJ d S r   )r5   num2timedelta)r   tdeltar  s      r   test_num2timedeltarv    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!   rF   r5   r6   r"   r'   r(   )r  dnr  s      r   test_datetime64_in_listrz    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_   rx  z1970-01-01T01:00:00gUUUUUU?1970-01-01T00:00:00z1970-01-01T12:00:00g      ?)r!   rF   r5   re   	get_epochr   rk  RuntimeErrorrf   r;  r'   r(   r6   floatrc   )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 unablematch)r!   aranger5   r3  	intervaldr4  r5  r6  r6   r   r   r   )rZ   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   rk  rl  rZ   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                     t          j        d           t          j        t
          j                  5  t          j        d          dk    sJ t          j        d          dk    sJ 	 d d d            n# 1 swxY w Y   t          j                     t          j        d           t          j        t
          j                  5  t          j        d          dk    sJ t          j        d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr_   g   @ƞBAg    x%Ag    z%Ag   ƞBAr~  r   r   )	r5   re   rf   r   r   mplMatplotlibDeprecationWarning
julian2num
num2julianr   r   r   test_julian2numr    s   
$&&&
\"""	c6	7	7 8 8  ++x7777 **i77777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 $&&&
*+++	c6	7	7 3 3 ++s2222 %%222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s$   5BBB5DD"D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   ro  rT   r   Iceland
2022-01-10z
2022-01-08rJ   r   r   r  z Aiceland is not a valid timezoner  Aicelandr  z%tz must be string or tzinfo subclass.)r5   DateLocatornonsingularr!   infr4  datalim_to_dtr   r  r  r  rY   r   r  
set_tzinfor5  set_data_intervalr6   r#   r   r   rk  rl  	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      @rJ   r   r   r   z2022-01)r,  z2022-02g    @@r   )r5   datestr2numr   r  r!   r   r"   sizerq  s    r   test_datestr2numr  C  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  )r5   r3  r   rk  rl  rf  )r  r   r)  r  s       r   !test_concise_formatter_exceptionsr  O  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)r5   r3  rf  format_data_short)r   r  s     r   test_concise_formatter_callr  Y  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>c  s'    EEEA(#D!Q//EEEr   r   r?  )r   r   r   r>  r|   r   r  )	r!   r"   r    rW   masked_greaterr#   r`   r&   rd   )r   r  mr.   r/   s        r   test_datetime_maskedr  `  s     	EEq!EEEFFA
!!A
Q""AlnnGCGGAqMMM;;==F""""""r   r,  )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   rk  rl  r5   r   )r,  s    r   test_num2date_errorr  l  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 rT   gq<  j@r|   )r5   r   r   r  r  r   r   r   test_num2date_roundoffr  r  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 )	Nr:  r   r   rT   z%Y-%b-%d %H:%Mz2011-Jan-01 00:00zPacific/Kiritimatiz2011-Jan-01 14:00)r5   r6   r   rY   DateFormatterr  )r+   r  s     r   test_DateFormatter_settzr  z  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   )Xr   dateutil.tzr   dateutil.rruler   numpyr!   r   
matplotlibr  r   r   matplotlib.datesrZ   r5   matplotlib.pyplotpyplotr#   matplotlib.testing.decoratorsr   matplotlib.tickertickerr   r2   markparametrizer9   r?   rH   r\   rh   rn   rr   r   r   r   r   r   r   r   r   r   r   r  r  r   r    r8  rE  rX  rc  rk  r  r  r  r  r  r  r  r  r  r   r  r7  r?  rN  rX  rZ  r^  rc  ri  rm  rr  rv  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     sp
                         ( ( ( ( ( ( ( ( ! ! ! ! ! !       : : : : : : # # # # # #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'/  . . .& & &*( ( (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
# # #  @  / / /*? ? ?&3 3 3 +! +! +!\	L 	L 	L FH H7 7H H7I I I	# 	# 	#  455  65
= = =	2 	2 	2 	2 	2r   