
    Mh                    $   S SK Jr  S SKrS SKrS SKJrJrJr  S SKrS SKJ	r	J
r
Jr  S SKrS SKJr  S SKJrJrJr  S SKJr  S SKJr  S SKrS SKJr  S SKJrJr  S S	K J!r!J"r"  S S
K#J$r$J%r%  S SK&J'r'J(r(J)r)J*r*J+r+  S SK,J-r-J.r.J/r/  S SK0J1s  J2r3  S SK4J5r5  S SK6J7r7J8r8J9r9  S SK:J1s  J;s  J<r;  \	(       a  S SK=J>r>  S SK?J@r@  S SKAJBrB  0 rCS rDS9S jrE\R                  S:S j5       rGS;S jrHS;S jrIS<S jrJS rK " S S\R                  5      rM " S S\5      rN " S S\R                  5      rPS rQ " S  S!\R                  5      rR " S" S#\R                  5      rT " S$ S%\R                  5      rV " S& S'\R                  5      rXS=S>S( jjrYS?S) jrZS@S* jr[SAS+ jr\SBS, jr]SCS- jr^\R                  SDS. j5       r`\R                  SDS/ j5       ra\R                  SDS0 j5       rb\R                  SDS1 j5       rcSES2 jrd " S3 S4\5      re " S5 S6\5      rf " S7 S8\5      rgg)F    )annotationsN)datetime	timedeltatzinfo)TYPE_CHECKINGAnycast)AutoLocator	FormatterLocator)nonsingular)lib)	Timestamp	to_offset)	FreqGroupperiods_per_day)Fnpt)is_floatis_float_dtype
is_integeris_integer_dtypeis_nested_list_like)IndexSeries
get_option)
date_range)PeriodPeriodIndexperiod_range)	Generator)Axis)
BaseOffsetc                     [         [        4[        [        4[        R
                  [        4[        R                  [        4[        R                  [        4[        R                  [        4/n U $ N)r   DatetimeConverterr   PeriodConverterpydtr   datetimeTimeConverternp
datetime64)pairss    W/var/www/html/env/lib/python3.13/site-packages/pandas/plotting/_matplotlib/converter.py	get_pairsr0   K   sT    	%&	!	)*	%&	M"	)*E L    c                b   ^  [         R                  " T 5      U 4S j5       n[        [        U5      $ )z'
Decorator applying pandas_converters.
c                 ^   > [        5          T" U 0 UD6sS S S 5        $ ! , (       d  f       g = fr%   )pandas_converters)argskwargsfuncs     r/   wrapper6register_pandas_matplotlib_converters.<locals>.wrapper\   s"     (( !  s   
,)	functoolswrapsr	   r   )r7   r8   s   ` r/   %register_pandas_matplotlib_convertersr<   W   s/    
 __T) ) 7r1   c               #     #    [        S5      n U (       a
  [        5          Sv   U S:X  a  [        5         gg! U S:X  a  [        5         f f = f7f)z
Context manager registering pandas' converters for a plot.

See Also
--------
register_pandas_matplotlib_converters : Decorator that applies this.
z'plotting.matplotlib.register_convertersNauto)r   register
deregister)values    r/   r4   r4   d   sD      @AE
F?L 5F?L s   A6 AA		Ac                    [        5       n U  Ho  u  pU[        R                  ;   a>  [        [        R                  U   U5      (       d  [        R                  U   nU[        U'   U" 5       [        R                  U'   Mq     g r%   )r0   munitsregistry
isinstance
_mpl_units)r.   type_clspreviouss       r/   r?   r?   z   s^    KE
FOO#Jvu7Ms,S,Su-H (Ju!$ r1   c                 b   [        5        HQ  u  p[        [        R                  R	                  U 5      5      UL d  M2  [        R                  R                  U 5        MS     [        R                  5        H8  u  p#[        U5      [        [        [        1;  d  M%  U[        R                  U'   M:     g r%   )r0   typerC   rD   getpoprF   itemsr&   r'   r+   )rG   rH   unit	formatters       r/   r@   r@      sw    k
##E*+s2OO& " &++-	?#4o}"UU$-FOOD! .r1   c                ~    U R                   S-  U R                  S-  -   U R                  -   U R                  S-  -   nU$ )Ni  <   @B )hourminutesecondmicrosecond)tmtot_secs     r/   _to_ordinalfrZ      s8    ggnryy2~-		9BNNU<RRGNr1   c                    [        U [        5      (       a$  [        U 5      n[        UR	                  5       5      $ [        U [
        R                  5      (       a  [        U 5      $ U $ r%   )rE   strr   rZ   r*   r(   )dparseds     r/   time2numr_      sI    !S1FKKM**!TYYAHr1   c                  L    \ rS rSr\S 5       r\SS j5       r\SS j5       rSrg)	r+      c                   [         [        R                  4n[        X5      (       d   [	        U 5      (       d  [        U 5      (       a  [        U 5      $ [        U [        5      (       a  U R                  [        5      $ [        U [        [        [        R                  [        45      (       a  U  Vs/ s H  n[        U5      PM     sn$ U $ s  snf r%   )r\   r(   r*   rE   r   r   r_   r   maplisttupler,   ndarray)rA   rO   axisvalid_typesxs        r/   convertTimeConverter.convert   s    DII&e))Z->->(5//E?"eU##99X&&edE2::u=>>)./AHQK// 0s   /C	c                d    U S:w  a  g [        5       n[        U5      n[        R                  " X#SS9$ )Nr*   )majlocmajfmtlabel)r
   TimeFormatterrC   AxisInfo)rO   rg   rm   rn   s       r/   axisinfoTimeConverter.axisinfo   s.    6>v&f6JJr1   c                    g)Nr*    ri   rg   s     r/   default_unitsTimeConverter.default_units   s    r1   ru   N)returnzmunits.AxisInfo | None)ry   r\   )	__name__
__module____qualname____firstlineno__staticmethodrj   rr   rw   __static_attributes__ru   r1   r/   r+   r+      s>      K K  r1   r+   c                  ,    \ rS rSrSS jrSSS jjrSrg)	rp      c                    Xl         g r%   locs)selfr   s     r/   __init__TimeFormatter.__init__   s    	r1   c                   Sn[        U5      n[        X-
  S-  5      nUS-  nUS-  n[        US5      u  p[        US5      u  p[        U	S5      u  pUS:w  a&  [        R                  " XXE5      R                  U5      $ US:w  a)  [        R                  " XXE5      R                  U5      SS $ US:w  a&  [        R                  " XU5      R                  S	5      $ [        R                  " X5      R                  S
5      $ )aN  
Return the time of day as a formatted string.

Parameters
----------
x : float
    The time of day specified as seconds since 00:00 (midnight),
    with up to microsecond precision.
pos
    Unused

Returns
-------
str
    A string in HH:MM:SS.mmmuuu format. Microseconds,
    milliseconds and seconds are only displayed if non-zero.
z%H:%M:%S.%frS     rR      r   N%H:%M:%S%H:%M)introunddivmodr(   r*   strftime)r   ri   posfmtsmsusmsusmh_s              r/   __call__TimeFormatter.__call__   s    $ Faeu_%T\D[a}a}a}799Q1+44S991W99Q1+44S9#2>>!V99Q1%..z::yy''00r1   r   Nry   Noner   r   z
int | Nonery   r\   )rz   r{   r|   r}   r   r   r   ru   r1   r/   rp   rp      s    !1 !1r1   rp   c                  4    \ rS rSr\S 5       r\S 5       rSrg)r'      c                    [        U 5      (       a(  U  Vs/ s H  n[        R                  X1U5      PM     n nU $ [        R                  XU5      n U $ s  snf r%   )r   r'   _convert_1d)valuesunitsrg   vs       r/   rj   PeriodConverter.convert   sT    v&&KQR6ao11!DA6FR  %00EF S    Ac                X  ^ [        TS5      (       d  [        S5      e[        [        [        [
        R                  [
        R                  [        R                  4n[        R                  " 5          [        R                  " SS[        S9  [        R                  " SS[        S9  [        X5      (       d   [        U 5      (       d  [!        U 5      (       a  [#        U TR$                  5      sS S S 5        $ [        U [&        5      (       a.  U R)                  TR$                  5      R*                  sS S S 5        $ [        U [,        5      (       a  U R/                  U4S j5      sS S S 5        $ [0        R2                  " U SS	9S
:X  a'  ['        U TR$                  S9R*                  sS S S 5        $ [        U [4        [6        [        R8                  [,        45      (       a0  U  Vs/ s H  n[#        UTR$                  5      PM     snsS S S 5        $  S S S 5        U $ s  snf ! , (       d  f       U $ = f)Nfreqz/Axis must have `freq` set to convert to Periodsignore#Period with BDay freq is deprecatedcategoryPeriodDtype\[B\] is deprecatedc                0   > [        U TR                  5      $ r%   )get_datevaluer   rv   s    r/   <lambda>-PeriodConverter._convert_1d.<locals>.<lambda>  s    M!TYY,Gr1   F)skipnaperiod)r   )hasattr	TypeErrorr\   r   r   r(   r)   r*   r,   r-   warningscatch_warningsfilterwarningsFutureWarningrE   r   r   r   r   r   asfreqasi8r   rc   r   infer_dtyperd   re   rf   )r   r   rg   rh   ri   s     `  r/   r   PeriodConverter._convert_1d   s   tV$$MNNHfdiiBMMR$$&##?- ##;m 6//f%%F##$VTYY7 '& FK00}}TYY/44 '& FE**zz"GH! '&" 6(B #6		:??) '&* FT5"**e$DEE=CDVa3VD- '&* F+ '.  E- '&. s7   1A:H59H8)H+6H+3H H>HH
H)ru   N)rz   r{   r|   r}   r~   rj   r   r   ru   r1   r/   r'   r'      s(       r1   r'   c                   [        U [        5      (       a  U R                  U5      R                  $ [        U [        [
        [        R                  [        R                  [        R                  45      (       a  [        X5      R                  $ [        U 5      (       dE  [        U 5      (       d5  [        U [        R                  [        45      (       a  U R                  S:X  a  U $ U c  g [!        SU  S35      e)N   zUnrecognizable date '')rE   r   r   ordinalr\   r   r(   r)   r*   r,   r-   r   r   rf   r   size
ValueError)r)   r   s     r/   r   r     s    ${{4 (((	D3$))TYYN	O	Od!)))4D>>tbjj%011tyyA~	
,TF!4
55r1   c                  H    \ rS rSr\S 5       r\S 5       r\SS j5       rSrg)r&   i   c                    [        U 5      (       a(  U  Vs/ s H  n[        R                  X1U5      PM     n nU $ [        R                  XU5      n U $ s  snf r%   )r   r&   r   )r   rO   rg   r   s       r/   rj   DatetimeConverter.convert!  sW     v&&LRSFq'33ATBFFS  '226FF Tr   c                N   S n[        U [        [        R                  [        R
                  [        R                  45      (       a  [        R                  " U 5      $ [        U 5      (       d  [        U 5      (       a  U $ [        U [        5      (       a  U" U 5      $ [        U [        [        [        R                  [        [         45      (       a  [        U [         5      (       a  [        U 5      n [        U [        5      (       a  U R"                  n [        U [        R                  5      (       d  [$        R&                  " U 5      n [)        U 5      (       d  [+        U 5      (       a  U $  [,        R.                  " U 5      n [        R                  " U 5      n U $ ! [0         a     N$f = f)Nc                |     [         R                  " [        R                  " U 5      5      $ ! [         a    U s $ f = fr%   )mdatesdate2numtoolsto_datetime	Exception)r   s    r/   	try_parse0DatetimeConverter._convert_1d.<locals>.try_parse,  s5    u'8'8'@AA s   ), ;;)rE   r   r(   r)   r,   r-   r*   r   r   r   r   r\   rd   re   rf   r   r   r   comasarray_tuplesafer   r   r   r   r   )r   rO   rg   r   s       r/   r   DatetimeConverter._convert_1d*  s/   	 fxBMM499MNN??6**8F#3#3M$$V$$ubjj% HII&&)) v&%((fbjj11..v6''>&+A+A**62 __V,F  s   )F 
F$#F$c                    U n[        US9n[        X2S9n[        R                  " SSS5      n[        R                  " SSS5      n[        R
                  " X4SXV4S9$ )z
Return the :class:`~matplotlib.units.AxisInfo` for *unit*.

*unit* is a tzinfo instance or None.
The *axis* argument is required but not used.
)tzi  r   i   )rm   rn   ro   default_limits)PandasAutoDateLocatorPandasAutoDateFormatterr(   r)   rC   rq   )rO   rg   r   rm   rn   datemindatemaxs          r/   rr   DatetimeConverter.axisinfoN  s\     &"-(7))D!Q'))D!Q'GCU
 	
r1   ru   N)rO   tzinfo | Nonery   zmunits.AxisInfo)	rz   r{   r|   r}   r~   rj   r   rr   r   ru   r1   r/   r&   r&      s=      ! !F 
 
r1   r&   c                  "    \ rS rSrSSS jjrSrg)r   ib  Nc                D    [         R                  R                  XX#5        g r%   )r   AutoDateFormatterr   )r   locatorr   
defaultfmts       r/   r    PandasAutoDateFormatter.__init__c  s      ))$Hr1   ru   )Nz%Y-%m-%d)r   r\   ry   r   )rz   r{   r|   r}   r   r   ru   r1   r/   r   r   b  s    I Ir1   r   c                       \ rS rSrS rS rSrg)r   ig  c                   X!-
  R                  5       n[        U5      U R                  :  a  SU l        [	        U R
                  5      nUR                  U R                  5        UR                  R                  " U R                  R                  5       6   UR                  R                  " U R                  R                  5       6   U$ [        R                  R                  XU5      $ )z*Pick the best locator based on a distance.)total_secondsabsminticks_freqMilliSecondLocatorr   set_axisrg   set_view_intervalget_view_intervalset_data_intervalget_data_intervalr   AutoDateLocatorget_locator)r   dmindmaxrY   r   s        r/   r   !PandasAutoDateLocator.get_locatorh  s    ;--/w<$--'DJ(1GTYY' LL**,,. LL**,,. N%%11$dCCr1   c                @    [         R                  U R                  5      $ r%   )r   get_unit_genericr   r   s    r/   	_get_unitPandasAutoDateLocator._get_unit}  s    !224::>>r1   )r   N)rz   r{   r|   r}   r   r   r   ru   r1   r/   r   r   g  s    D*?r1   r   c                  J    \ rS rSrSrSS jrS r\S 5       rS r	S r
S rS	rg
)r   i  gLH>c                P    [         R                  R                  X5        SU l        g )Ng      ?)r   DateLocatorr   	_interval)r   r   s     r/   r   MilliSecondLocator.__init__  s    ##D-r1   c                $    U R                  S5      $ )Nr   )r   r   s    r/   r   MilliSecondLocator._get_unit  s    $$R((r1   c                p    [         R                  R                  U 5      nUS:  a  [        R                  $ U$ )Nr   )r   RRuleLocatorr   r   UNIT)r   rO   s     r/   r   #MilliSecondLocator.get_unit_generic  s0    ""33D9!8%***r1   c                2    U R                  5       u  p[        R                  " X!45      u  p4X4-
  S-  S-  nSnS H  nXWUS-
  -  ::  a  Xpl          OSU l        M     X4-
  U R                  5       U R                  5       -  -  nXR                  S-  :  a'  [        SUS	 S
U SU SU R                  S-  S	 S3	5      eU R                  5       nU S3n	U R                  R                  S 5      n
UR                  S S9nUR                  S S9n[        XXS9R                  [        5      n [        U5      S:  a'  U R!                  [        R                  " U5      5      nU$  [        R                  " X/5      nU$ ! [         a    / s $ f = f! ["         a     N7f = f)NiQ r      )r   
   2   d      i  r   g     @@   z)MillisecondLocator estimated to generate r]   z ticks from z to z: exceeds Locator.MAXTICKS* 2 (z) r   )r   )startendr   r   r   )viewlim_to_dtr   r   r   r   r   _get_intervalMAXTICKSRuntimeErrorr   tznamereplacer   astypeobjectlenraise_if_exceedsr   )r   r   r   nmaxnminnummax_millis_ticksintervalestimater   r   sted	all_datesr   limss                   r/   r   MilliSecondLocator.__call__  s   	++-JD
 __d\2
{e#d*2H"2Q"677!)#DN 3 KDNN$4t7I7I7K$KLmma'';A,l4&TF ;)!,B0  %%'2WW^^D!\\\&\\\&RdBII&Q		9~!,,V__Y-GH " |,O  	I	F  		s#   E7 '5F	 7FF	
FFc                    U R                   $ r%   r   r   s    r/   r   MilliSecondLocator._get_interval  s    ~~r1   c                    U R                  5       u  p[        R                  " U5      n[        R                  " U5      nU R                  X45      $ )z0
Set the view limits to include the data range.
)datalim_to_dtr   r   r   )r   r   r   vminvmaxs        r/   	autoscaleMilliSecondLocator.autoscale  sA    
 '')
t$t$++r1   r'  Nr   )rz   r{   r|   r}   r  r   r   r~   r   r   r  r-  r   ru   r1   r/   r   r     s5    #D)  +Z
,r1   r   c           
        [        U 5      n[        R                  " U5      n[        U 5      U-
  n[	        SU-  S5      u  pT[	        SU-  S5      u  pd[	        SU-  S5      u  pt[        SU-  5      nUS:  a  Sn[        UR
                  UR                  UR                  [        U5      [        U5      [        U5      U5      nUb  UR                  U5      nUS:  a  U[        SU-
  S9-  nU$ )	Nr   r   rR   rS   r
  r   i6B )microseconds)
r   r   fromordinalfloatr   yearmonthday
astimezoner   )	ri   r   ixdt	remainderrT   rU   rV   rW   s	            r/   _from_ordinalr:    s    	QB			b	!Ba2IR)^Q/ODrI~q1FrI~q1Fi)+,KR	
2663t9c&k3v;
B 
~]]2V
iY%<==Ir1   c                    U S:  a  Su  pX4$ U S:  a  Su  pX4$ U S:  a  Su  pX4$ U S:  a  Su  pX4$ U S	:  a  S
u  pX4$ U S:  a  Su  pX4$ U S-  S-   nUS-  US-  p!X4$ )zF
Returns a default spacing between consecutive ticks for annual data.
   )r   r      )r   r  r  )r      r  )r>  r
  r  )r>     iX  )r
  r  r   r   ru   )nyearsmin_spacingmaj_spacingfactors       r/   _get_default_annual_spacingrD    s     {%+" %% 
"%+" %% 
"%+" %% 
#%," %% 
#%," %% 
#%-" %% 4!#&,rk6C<k%%r1   c                J    [        X5      n[        R                  " U5      S   $ )z
Returns the indices where the given period changes.

Parameters
----------
dates : PeriodIndex
    Array of intervals to monitor.
period : str
    Name of the period to monitor.
r   )_period_break_maskr,   nonzero)datesr   masks      r/   _period_breakrJ    s"     e,D::dAr1   c                X    [        X5      n[        U SU R                  -  -
  U5      nX#:g  $ )Nr   )getattrr   )rH  r   currentrI   s       r/   rF  rF    s.    e$Guq5::~-v6Hr1   c                j    U R                   S:X  d"  U R                   S:X  a  U S   S:X  a
  US-  S:  a  gg)z
Returns true if the ``label_flags`` indicate there is at least one label
for this level.

if the minimum view limit is not an exact integer, then the first tick
label won't be shown, so we must adjust for that.
r   r           FTr   )label_flagsr+  s     r/   has_level_labelrR    s;     1A+a.A"5$(S.r1   c                   U R                   n[        R                  " U5      nSnU[        R                  R                  :  a   [        U R                  5      nSU-  nSU-  nOU[        R                  :X  a  SnSnOU[        R                  :X  a  SnSnOrU[        R                  :X  a  SnSnOYU[        R                  :X  a  SnS	nO@U[        R                  :X  a  SnS
nO'U[        R                  :X  a  SnSnO[        SU 35      eX4U4$ )Nr      im     i     4   r         Unsupported frequency: )_period_dtype_coder   from_period_dtype_codeFR_HRrA   r   _cresoFR_BUSFR_DAYFR_WKFR_MTHFR_QTRFR_ANNNotImplementedError)r   
dtype_code
freq_groupppdppmppys         r/   _get_periods_per_ymdrk  '  s    ((J11*=J
CY__***dkk*3hCi	y''	'	y''	'	y	&	y''	'	y''	'	y''	'!$;J<"HIIS=r1   c           	     x
  ^^^^^^^^ UR                   n[        U5      u  pEnU m[        U 5      [        U5      pX-
  S-   n[        R                  " 5          [        R
                  " SS[        S9  [        R
                  " SS[        S9  [        [        XS9[        XS9US9mS S S 5        [        R                  " US[        R                  4S	[        4S
[        4S/S9nTR                  US   S S & SUS   S S & SUS	   SS/'   US	   mUS
   mUS   mU4S jmXu::  Ga  [        TS5      m[        TS5      n	[        TS5      mS<UUUUUUUU4S jjn
S=UUUUUU4S jjnS=UUUUUU4S jjnXtS-  :  a
  U" S5        U$ XtS-  :  a
  U" S5        U$ XtS-  :  a
  U" S5        U$ XtS-  :  a
  U" S5        U$ XtS -  :  a
  U" S!5        U$ XtS"-  :  a
  U" S#5        U$ XtS$-  :  a
  U" S5        U$ XtS%-  :  a
  U" S5        U$ XtS&-  :  a
  U" S5        U$ XtS'-  :  a
  U" S!5        U$ XtS(-  :  a
  U" S#5        U$ XtS)-  :  a  U
" SS*5        U$ XtS+-  :  a  U
" SS*5        U$ XtS,-  :  a  U
" S-S*5        U$ XtS)-  :  a  U
" S(S5        U$ XtS.-  :  a  U
" S'S5        U$ STU	'   STT'   S/TT'   S0TU	'   S1TT'   [        TT5      (       d)  [        U	T5      (       d  S1TT" T5      '   U$ S1TT" U	5      '   U$ XvS.-  ::  a  [        TS5      n	STU	'   U[         R"                  R$                  :  a  SUS
'   O[        TS5      mSUS
   T'   [        TS25      n[        TS5      mS/TU'   S3TU	'   S4TT'   [        TT5      (       d)  [        U	T5      (       d  S4TT" U5      '   U$ S4TT" U	5      '   U$ US5U-  ::  a`  [        TS5      m[        TS5      n	[        TS25      nSTU	'   STU'   S*TT'   S*TU	'   S6TU	'   S7TT'   [        TT5      (       d  S7TT" U	5      '   U$ US)U-  ::  a:  [        TS5      m[        TS85      n[        TS5      n	STU'   STU	'   S6TU'   S7TT'   U$ US.U-  ::  aO  [        TS5      m[        TS5      n	STT'   STU	'   S*TT'   TU	   R&                  nXS:H  US9:H  -     nS6TU'   S7TT'   U$ US:U-  ::  a.  [        TS5      m[        TS85      nSTT'   STU'   S*TT'   S;TT'   U$ [        TS5      mTT   R(                  nXv-  n[+        U5      u  nnTUU-  S:H     nSTU'   TUU-  S:H     nSTU'   S;TU'   U$ ! , (       d  f       GN= f)>Nr   r   r   r   r   r   r   )r  r  r   valmajmin)r   z|S20dtyper   r   Tr   r   c                \   > U S   S:X  a  U R                   S:  a  TS-  S:  a  U S   $ U S   $ )Nr   r   rO  rP  )rQ  	vmin_origs    r/   first_label"_daily_finder.<locals>.first_labelp  s<    Nak&6&6&:)a-SVAVq>!q>!r1   r5  r4  r3  c                   > TR                   n[        TS5      nSTT'   ST	X2U -  S:H  -  '   STX2U -  S:H  -  '   STT'   STT'   U(       a  [        TT
5      (       d  STT" T5      '   g g g )NrT   Tr   r   %H:%M
%d-%b%H:%M
%d-%b
%Y)rT   rF  rR  )label_intervalforce_year_starttargetrI  dates_	day_startru  info_fmtinfo_majinfo_minrt  
year_starts       r/   _hour_finder#_daily_finder.<locals>._hour_finder|  s    [[F%ff5D"&HY>BHTn49:;>EHTn49:;"0HY#5HZ 
I(N(N3EY/0 )Or1   c                   > TR                   n[        TS5      n[        TS5      nSTU'   STX1U -  S:H  -  '   STX1U -  S:H  -  '   STT'   STT	'   g )NrT   rU   Tr   r   rx  ry  )rU   rJ  rF  )
rz  r|  
hour_startrI  r}  r~  r  r  r  r  s
       r/   _minute_finder%_daily_finder.<locals>._minute_finder  sp    ]]F&vv6J%fh7D#'HZ >BHTn49:;>EHTn49:;"0HY#5HZ r1   c                   > TR                   n[        TS5      n[        TS5      nSTU'   STX1U -  S:H  -  '   STX1U -  S:H  -  '   STT'   STT	'   g )NrU   rV   Tr   r   z%H:%M:%S
%d-%bz%H:%M:%S
%d-%b
%Y)rV   rJ  rF  )
rz  r|  minute_startrI  r}  r~  r  r  r  r  s
       r/   _second_finder%_daily_finder.<locals>._second_finder  sp    ]]F(:L%fh7D%)H\">BHTn49:;>HHTn49:;"3HY#8HZ r1   i.  ip  r  i`	  r>  i  r
  i      i        F   r   rX  r	        @Fg      ?g      ?rV  rY  z%dz%d
%bz%d
%b
%Yweekz

%bz

%b
%Yffffff?%b%b
%Yquarter   r<  %Y)rz  r   r{  boolry   r   )rz  r   ry   r   )r[  rk  r   r   r   r   r   r    r   r,   zerosint64r  r   rJ  rR  r   r]  rA   r4  r3  rD  )r+  r,  r   rf  periodsperdayperiodspermonthperiodsperyearspaninfomonth_startr  r  r  
week_startquarter_startmonth_break
jan_or_jul
year_breakr@  
min_anndef
maj_anndef	major_idx	minor_idxr}  r~  ru  r  r  r  rt  r  s                          @@@@@@@@r/   _daily_finderr  K  s    ((J5I$5O2MN IIs4y4;?D		 	 	";m	
 	7-	
 1t/
 
# 88eRXX&t}oVD [[DKNDKNDKBE{HE{HE{H" !&%0	#FG4"662
		F 		F	6 	6	9 	9 %''1h Kg D((1d Kc D((1` K_ D((2\ K[ C''2X KW C''2T KS C''1P KO B&&1L KK B&&1H KG B&&2D KC A%%2@ K C''E"| K{ C''E"x Kw D((E"t Ks C''D!p Ko A%%T"l Ki %)H[!"&HY"&HY$,H[!#/HZ ":y99&{I>>7CH[34Z KW :FH[56V KQ 
1$	$#FG4 $	---DK%fe4I%)DK	""662
"662
# (+z955";	::4@Z01r Ko 6B[12n Kk 
&	&"662
#FG4"662
 $#$ % $'z95519H[-.T KQ 
~%	%"662
%fi8#FG4"& $"&'B K? 
^#	#"662
#FG4# $$[)// "2{a7G!HI
#'* K' 
n$	$"662
%fi8#"&$# K #662
J',,
&#>v#F Z
Z 71 <>	"
Z 71 <>	""Ks 
#	"s   AT**
T9c                   [        U5      u    p4U n[        U 5      [        U5      pX-
  S-   n[        R                  " US[        4S[        4S[        4S/S9n[        R
                  " XS-   5      US'   US   nSUS'   US	-  S
:H  R                  5       S
   n	US   n
US   nUSU-  ::  a=  SX'   SUS'   SUS S & SX'   [        X5      (       d  UR                  S:  a  SnOS
nSX'   U$ USU-  ::  a1  US-  S
:H  R                  5       nSX'   SUS   U'   SUS'   SX'   SX'   U$ USU-  ::  a$  SX'   SUS'   US	-  S
:H  US	-  S:H  -  nSX'   SX'   U$ USU-  ::  a(  US-  S
:H  R                  5       nSX'   SUS   U'   SX'   U$ Xd-  n[        U5      u  nnX   S	-  S-   nU	UU-  S
:H     nSU
U'   SUS   U	UU-  S
:H     '   SUU'   U$ )Nr   rn  ro  rp  r   z|S8rq  r   r   rX  r   r  Tr  r  r  rV  rY  r	  r<  r  
rk  r   r,   r  r  arangerG  rR  r   rD  )r+  r,  r   r   r  rt  r  r  r}  r  r  r  idxr  r  r@  r  r  yearsr  s                       r/   _monthly_finderr    s   /5AqIIs4y4;?D 88eS\E4=5$-PD ))D(+DK%[FDK2+"++-a0JE{HE{Htn$$#U'z55{{Q$HML KI 
~%	%!q113# &*UM"U"&'6 K3 
^#	##UrkQ&6B;!+;<
#'& K# 
n$	$!q113#%)UM"# K &#>v#F Z"b(1,
 2a 79	"=AUJ
 2a 79:"Kr1   c                   [        U5      u    p4U n[        U 5      [        U5      pX-
  S-   n[        R                  " US[        4S[        4S[        4S/S9n[        R
                  " XS-   5      US'   SUS'   US   nUS   n	US   n
US	-  S
:H  R                  5       S
   nUSU-  ::  a=  SX'   SUS'   SU
S S & SX'   [        X5      (       d  UR                  S:  a  SnOS
nSX'   U$ USU-  ::  a  SX'   SUS'   SX'   U$ X   S	-  S-   nXd-  n[        U5      u  nnXU-  S
:H     nSU	U'   SUS   XU-  S
:H     '   SU
U'   U$ )Nr   rn  ro  rp  r  rq  r   r   rY  r   g      @TzQ%qzQ%q
%Fr<  z%Fi  r  )r+  r,  r   r   r  rt  r  r  r}  r  r  r  r  r  r@  r  r  r  s                     r/   _quarterly_finderr  [  s   /5AqIIs4y4;?D88eS\E4=5$-PD ))D(+DKDK%[FE{HE{H1*/**,Q/Js^###U(z55{{Q%HM" K 
n$	$#U# K "a'$.&#>v#F Z
 2a 79	"=AUJ
 2a 79:"Kr1   c                L   [        U 5      [        US-   5      pX-
  S-   n[        R                  " US[         4S[        4S[        4S/S9n[        R                  " XS-   5      US'   SUS'   US   n[        U5      u  pgXW-  S	:H  nXV-  S	:H  n	S
US   U'   S
US   U	'   SUS   U'   U$ )Nr   rn  ro  rp  r  rq  r   r   r   Tr  )r   r,   r  r  r  rD  )
r+  r,  r   r  r  r}  r  r  r  r  s
             r/   _annual_finderr    s     Is4!8}4;?D88eS\E4=5$-PD ))D(+DKDK%[F:4@Z#q(I#q(I!DK	!DK	!DK	Kr1   c                n   U R                   n[        R                  " U5      nU[        R                  :X  a  [        $ U[        R
                  :X  a  [        $ U[        R                  :X  a  [        $ U[        R                  R                  :  d  U[        R                  :X  a  [        $ [        SU 35      e)NrZ  )r[  r   r\  rd  r  rc  r  rb  r  r_  rA   ra  r  re  )r   rf  fgroups      r/   
get_finderr    s    ((J--j9F!!!	9##	#  	9##	#
	((..
.6Y__3L!$;J<"HIIr1   c                  p    \ rS rSr% SrS\S'          S               SS jjrS rS rS	 r	S
r
g)TimeSeries_DateLocatori  a  
Locates the ticks along an axis controlled by a :class:`Series`.

Parameters
----------
freq : BaseOffset
    Valid frequency specifier.
minor_locator : {False, True}, optional
    Whether the locator is for minor ticks (True) or not.
dynamic_mode : {True, False}, optional
    Whether the locator should work in dynamic mode.
base : {int}, optional
quarter : {int}, optional
month : {int}, optional
day : {int}, optional
r"   rg   Nc	                    [        USS9nXl        X@l        XVUsU l        U l        U l        X l        X0l        SU l        Xl	        [        U5      U l        g NT)	is_periodr   )r   r   baser  r4  r5  isminor	isdynamicoffsetplot_objr  finder)	r   r   minor_locatordynamic_moder  r  r4  r5  r  s	            r/   r   TimeSeries_DateLocator.__init__  sP     .		07,tz48$%  &r1   c                    U R                  XU R                  5      nU R                  (       a  [        R                  " US   US   5      $ [        R                  " US   US   5      $ )z'Returns the default locations of ticks.rp  rn  ro  )r  r   r  r,   compress)r   r+  r,  r   s       r/   _get_default_locs(TimeSeries_DateLocator._get_default_locs  sO    ++d$))4<<;;wu~wu~>>{{75>75>::r1   c                   [        U R                  R                  5       5      nUu  p#X2:  a  X2p2U R                  (       a  U R	                  X#5      nU$ U R
                  n[        X%5      u  pgUS-   U-  n[        [        X#S-   U5      5      nU$ )z"Return the locations of the ticks.r   )	re   rg   r   r  r  r  r   rd   range)r   vir+  r,  r   r  r]   r   s           r/   r   TimeSeries_DateLocator.__call__  s     499..01
;$>>))$5D  99DD'FQET>D d1Hd34Dr1   c                    U R                   R                  5       u  pU R                  X5      nUSS/   u  pX:X  a
  US-  nUS-  n[        X5      $ )zN
Sets the view limits to the nearest multiples of base that contain the
data.
r   r   r   )rg   r   r  r   )r   r+  r,  r   s       r/   r-   TimeSeries_DateLocator.autoscale  sY     yy224%%d1QG}<AIDAID4&&r1   )
r  r5  r  r   r  r  r4  r  r  r  )FTr   r   r   r   N)r   r#   r  r  r  r  r  r   r  r   r4  r   r5  r   ry   r   )rz   r{   r|   r}   __doc____annotations__r   r  r   r-  r   ru   r1   r/   r  r    s    " J
 $!'' ' 	'
 ' ' ' ' 
'*;&'r1   r  c                  d    \ rS rSr% SrS\S'      S       SS jjrS rSS jrSSS	 jjr	S
r
g)TimeSeries_DateFormatteri  an  
Formats the ticks along an axis controlled by a :class:`PeriodIndex`.

Parameters
----------
freq : BaseOffset
    Valid frequency specifier.
minor_locator : bool, default False
    Whether the current formatter should apply to minor ticks (True) or
    major ticks (False).
dynamic_mode : bool, default True
    Whether the formatter works in dynamic mode or not.
r"   rg   Nc                    [        USS9nS U l        Xl        / U l        S U l        X l        X0l        SU l        X@l        [        U5      U l
        g r  )r   formatr   r   
formatdictr  r  r  r  r  r  )r   r   r  r  r  s        r/   r   !TimeSeries_DateFormatter.__init__  sL     .	!	15$%  &r1   c           	     `   U R                  XU R                  5      nU R                  (       a5  [        R                  " US   [        R
                  " US   5      -  U5      nO[        R                  " US   U5      nU VVVs0 s H	  u  n  pgXW_M     snnnU l        U R                  $ s  snnnf )z"Returns the default ticks spacing.rp  ro  )r  r   r  r,   r  logical_notr  )r   r+  r,  r  r  ri   r   fs           r/   _set_default_format,TimeSeries_DateFormatter._set_default_format/  s    {{4tyy1<<[[er~~d5k/J!JDQF[[ed3F4:;FLQ114F; <s   B)c                    Xl         [        U R                  R                  5       5      u  p#X2:  a  X2p2U R	                  X#5        g)zSets the locations of the ticksN)r   re   rg   r   r  )r   r   r+  r,  s       r/   set_locs!TimeSeries_DateFormatter.set_locs:  s:    
 	TYY88:;; 4  ,r1   c                   U R                   c  gU R                   R                  US5      n[        U[        R                  5      (       a  UR                  S5      n[        R                  " 5          [        R                  " SS[        S9  [        [        U5      U R                  S9nS S S 5        [        W[        5      (       d   eUR                  U5      $ ! , (       d  f       N6= f)Nr   zutf-8r   r   r   rm  )r  rM   rE   r,   bytes_decoder   r   r   r   r   r   r   r   )r   ri   r   r   r   s        r/   r   !TimeSeries_DateFormatter.__call__F  s    ??"//%%a,C#ryy))jj)((*''9*
  ATYY? + ff----??3'' +*s   08C
C&)	r  r  r  r   r  r  r   r  r  )FTN)r   r#   r  r  r  r  ry   r   r   r   r   )rz   r{   r|   r}   r  r  r   r  r  r   r   ru   r1   r/   r  r    sX     J
 $!'' ' 	' 
'$	
-( (r1   r  c                  F    \ rS rSr% SrS\S'   \S	S j5       rS
SS jjrSr	g)TimeSeries_TimedeltaFormatteriX  zJ
Formats the ticks along an axis controlled by a :class:`TimedeltaIndex`.
r"   rg   c                B   [        U S5      u  p4[        US5      u  pS[        US5      u  pe[        US5      u  pv[        USUS-
  -  -  5      n[        U5      S S[        U5      S S[        U5      S 3nUS:  a  US	US
U S3 3-  nUS:w  a  [        U5      S SU 3nU$ )z(
Convert seconds to 'D days HH:MM:SS.F'
i ʚ;rR   r   r
  	   02d:r   .0r]   z days )r   r   )	ri   r   
n_decimalsr   nsr   r   r]   decimalss	            r/   format_timedelta_ticks4TimeSeries_TimedeltaFormatter.format_timedelta_ticks_  s    
 q% a}a}a}rB:>2231vcl!CF3<qQ5>1Xa
|1_-..A6q6!*F1#&Ar1   c                   [        U R                  R                  5       5      u  p4[        [	        [
        R                  " [
        R                  " S[        XC-
  5      -  5      5      5      S5      nU R                  XU5      $ )Nl    h] r  )
re   rg   r   rp  r   r,   ceillog10r   r  )r   ri   r   r+  r,  r  s         r/   r   &TimeSeries_TimedeltaFormatter.__call__p  s^    TYY88:;RWWRXXkC<L.L%MNOQRS
**1:>>r1   ru   N)r  r   ry   r\   r   r   )
rz   r{   r|   r}   r  r  r~   r  r   r   ru   r1   r/   r  r  X  s*     J  ? ?r1   r  )r7   r   ry   r   )ry   zGenerator[None, None, None]r   )rX   z	pydt.timery   r2  r%   )r   r   ry   r   )ry   ztuple[int, int])rH  r   r   r\   ry   npt.NDArray[np.intp])rH  r   r   r\   ry   znpt.NDArray[np.bool_])rQ  r  r+  r2  ry   r  )r   r#   ry   ztuple[int, int, int])r+  r2  r,  r2  r   r#   ry   z
np.ndarray)r   r#   )h
__future__r   
contextlibr   r(   r   r   r:   typingr   r   r	   r   matplotlib.datesrH  r   matplotlib.tickerr
   r   r   matplotlib.transformsr   matplotlib.unitsr   rC   numpyr,   pandas._libsr   pandas._libs.tslibsr   r   pandas._libs.tslibs.dtypesr   r   pandas._typingr   r   pandas.core.dtypes.commonr   r   r   r   r   pandasr   r   r   pandas.core.commoncorecommonr   pandas.core.indexes.datetimesr   pandas.core.indexes.periodr   r   r    pandas.core.tools.datetimesr   	datetimescollections.abcr!   matplotlib.axisr"   pandas._libs.tslibs.offsetsr#   rF   r0   r<   contextmanagerr4   r?   r@   rZ   r_   ConversionInterfacer+   rp   DateConverterr'   r   r&   r   r   r   r   r   r   r:  rD  rJ  rF  rR  rk  cacher  r  r  r  r  r  r  r  ru   r1   r/   <module>r     s   "   
  
  ! 
 . !  
  
 !   4 
 , +)$6 
	
  *'.
F.. 6%1I %1V%f** %P6"?
,, ?
DIf66 I
?F22 ?4K,++ K,\:&, !H D DN D DN , ,^  ,J"Q'W Q'rI(y I(X?I ?r1   