
    4ic                       % S SK Jr  S SKrS SKrS SKJrJr  S SKrS SKJrJ	r	J
r
  S SKrS SK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K+J,s  J-r.  S SK/J0r0  S SK1J2r2J3r3J4r4  S SK5J,s  J6s  J7r6  \(       a  S SK8J9r9  S SK:J;r;  S SK<J=r=  S SKJ>r>  0 r?S\@S'   S9S jrAS:S jrB\R                  S;S j5       rDS<S jrES<S jrFS=S jrGS rH " S S\R                  5      rJ " S S\R                  R                  5      rM " S S\R                  5      rOS>S  jrP " S! S"\R                  5      rQ " S# S$\R                  5      rS " S% S&\R                  5      rU " S' S(\R                  5      rWS?S) jrXS@S* jrYSAS+ jrZSBS, jr[SCS- jr\\R                  SDS. j5       r^\R                  SDS/ j5       r_\R                  SDS0 j5       r`\R                  SDS1 j5       raS>S2 jrb " S3 S4\R                  R                  5      rd " S5 S6\R                  R                  5      re " S7 S8\R                  R                  5      rfg)E    )annotationsN)datetimetzinfo)TYPE_CHECKINGAnycast)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)
BaseOffset)TimeUnitdict
_mpl_unitsc                     [         [        4[        [        4[        R
                  [        4[        R                  [        4[        R                  [        4[        R                  [        4/n U $ N)r
   DatetimeConverterr   PeriodConverterpydtr   datetimeTimeConverternp
datetime64)pairss    g/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/plotting/_matplotlib/converter.py	get_pairsr.   F   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>.wrapperW   s"     (( !  s   
,)	functoolswrapsr   r   )r5   r6   s   ` r-   %register_pandas_matplotlib_convertersr:   R   s/    
 __T) ) 7r/   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-   r2   r2   _   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#   )r.   munitsregistry
isinstancer!   )r,   type_clspreviouss       r-   r=   r=   u   s^    KE
FOO#Jvu7Ms,S,Su-H (Ju!$ r/   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#   )r.   typerA   rB   getpopr!   itemsr$   r%   r)   )rD   rE   unit	formatters       r-   r>   r>      sw    k
##E*+s2OO& " &++-	?#4o}"UU$-FOOD! .r/   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_ordinalfrW      s8    ggnryy2~-		9BNNU<RRGNr/   c                    [        U [        5      (       a$  [        U 5      n[        UR	                  5       5      $ [        U [
        R                  5      (       a  [        U 5      $ U $ r#   )rC   strr
   rW   r(   r&   )dparseds     r-   time2numr\      sI    !S1FKKM**!TYYAHr/   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#   )rY   r&   r(   rC   r   r   r\   r   maplisttupler*   ndarray)r?   rL   axisvalid_typesxs        r-   convertTimeConverter.convert   s    DII&e))Z->->(5//E?"eU##99X&&edE2::u=>>)./AHQK// 0s   /C	c                    U S:w  a  g [         R                  R                  5       n[        U5      n[        R
                  " X#SS9$ )Nr(   )majlocmajfmtlabel)mpltickerAutoLocatorTimeFormatterrA   AxisInfo)rL   rd   rj   rk   s       r-   axisinfoTimeConverter.axisinfo   s9    6>'')v&f6JJr/   c                    g)Nr(    )rf   rd   s     r-   default_unitsTimeConverter.default_units   s    r/   ru   N)returnzmunits.AxisInfo | None)rx   rY   )	__name__
__module____qualname____firstlineno__staticmethodrg   rr   rv   __static_attributes__ru   r/   r-   r)   r)      s>      K K  r/   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    	r/   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.%frP     rO      r   N%H:%M:%S%H:%M)introunddivmodr&   r(   strftime)r   rf   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0r/   r   Nrx   Noner   r   z
int | Nonerx   rY   )ry   rz   r{   r|   r   r   r~   ru   r/   r-   rp   rp      s    !1 !1r/   rp   c                  P    \ rS rSr\SS j5       r\SS j5       r\SS j5       rSrg)	r%      c                    [        US5      (       d  [        S5      e[        UR                  SS9n[        R                  X5      $ )Nfreqz/Axis must have `freq` set to convert to PeriodsT	is_period)hasattr	TypeErrorr   r   r%   convert_from_freq)valuesrL   rd   r   s       r-   rg   PeriodConverter.convert   s>     tV$$MNNd300>>r/   c                    [        U 5      (       a'  U  Vs/ s H  n[        R                  X!5      PM     n nU $ [        R                  X5      n U $ s  snf r#   )r   r%   _convert_1d)r   r   vs      r-   r   !PeriodConverter.convert_from_freq   sP    v&&DJKFqo11!:FFK  %00>F Ls   Ac                  ^ [         [        [        [        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5      sS S S 5        $ [        U [        5      (       a$  U R!                  T5      R"                  sS S S 5        $ [        U [$        5      (       a  U R'                  U4S j5      sS S S 5        $ [(        R*                  " U SS9S:X  a  [        U TS	9R"                  sS S S 5        $ [        U [,        [.        [
        R0                  45      (       a&  U  Vs/ s H  n[        UT5      PM     snsS S S 5        $  S S S 5        U $ s  snf ! , (       d  f       U $ = f)
Nignore#Period with BDay freq is deprecatedcategoryPeriodDtype\[B\] is deprecatedc                   > [        U T5      $ r#   )_get_datevalue)rf   r   s    r-   <lambda>-PeriodConverter._convert_1d.<locals>.<lambda>  s    N1d,Cr/   F)skipnaperiod)r   )rY   r   r   r&   r'   r*   r+   warningscatch_warningsfilterwarningsFutureWarningrC   r   r   r   r   asfreqasi8r   r`   r	   infer_dtypera   rb   rc   )r   r   re   rf   s    `  r-   r   PeriodConverter._convert_1d   sh   HfdiiG$$&##?- ##;m 6//f%%F##%fd3 '& FK00}}T*// '& FE**zz"CD! '&" 6(B #65::) '&* FT5"**$=>>9?@Aq$/@- '&* ?+ '.  A- '&. s7   A0G /G9)G,,G".GF=&G=G
Gru   Nrd   r   r   r   )	ry   rz   r{   r|   r}   rg   r   r   r~   ru   r/   r-   r%   r%      s<    
? 
?    r/   r%   c                h   [        U [        5      (       a  U R                  U5      R                  $ [        U [        [
        [        R                  [        R                  45      (       a  [        X5      R                  $ [        U 5      (       d  [        U 5      (       a  U $ U c  g [        SU  S35      e)NzUnrecognizable date '')rC   r   r   ordinalrY   r   r&   r'   r*   r+   r   r   
ValueError)r'   r   s     r-   r   r     s    ${{4 (((	D3$))R]]C	D	Dd!)))	D		Xd^^	
,TF!4
55r/   c                  L    \ rS rSr\SS j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   rL   rd   r   s       r-   rg   DatetimeConverter.convert#  sW     v&&LRSFq'33ATBFFS  '226FF Ts    A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_parse4  s5    u'8'8'@AA s   ), ;;)rC   r   r&   r'   r*   r+   r(   r   r   r   r   rY   ra   rb   rc   r   r   r   comasarray_tuplesafer   r   r   r   r   )r   rL   rd   r   s       r-   r   DatetimeConverter._convert_1d2  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     i   )rj   rk   rl   default_limits)PandasAutoDateLocatorPandasAutoDateFormatterr&   r'   rA   rq   )rL   rd   r   rj   rk   datemindatemaxs          r-   rr   DatetimeConverter.axisinfoV  s\     &"-(7))D!Q'))D!Q'GCU
 	
r/   ru   Nr   )rL   ztzinfo | Nonerx   zmunits.AxisInfo)	ry   rz   r{   r|   r}   rg   r   rr   r~   ru   r/   r-   r$   r$   "  s=      ! !F 
 
r/   r$   c                  "    \ rS rSrSSS jjrSrg)r   ij  Nc                D    [         R                  R                  XX#5        g r#   )r   AutoDateFormatterr   )r   locatorr   
defaultfmts       r-   r    PandasAutoDateFormatter.__init__k  s      ))$Hr/   ru   )Nz%Y-%m-%d)r   rY   rx   r   )ry   rz   r{   r|   r   r~   ru   r/   r-   r   r   j  s    I Ir/   r   c                       \ rS rSrS rS rSrg)r   io  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_axisrd   set_view_intervalget_view_intervalset_data_intervalget_data_intervalr   AutoDateLocatorget_locator)r   dmindmaxrV   r   s        r-   r   !PandasAutoDateLocator.get_locatorp  s    ;--/w<$--'DJ(1GTYY' LL**,,. LL**,,. N%%11$dCCr/   c                @    [         R                  U R                  5      $ r#   )r   get_unit_genericr   r   s    r-   	_get_unitPandasAutoDateLocator._get_unit  s    !224::>>r/   )r   N)ry   rz   r{   r|   r   r   r~   ru   r/   r-   r   r   o  s    D*?r/   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-r/   c                $    U R                  S5      $ )Nr   )r   r   s    r-   r   MilliSecondLocator._get_unit  s    $$R((r/   c                p    [         R                  R                  U 5      nUS:  a  [        R                  $ U$ )Nr   )r   RRuleLocatorr   r   UNIT)r   rL   s     r-   r   #MilliSecondLocator.get_unit_generic  s0    ""33D9!8%***r/   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 rZ   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    ~~r/   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   nonsingular)r   r   r   vminvmaxs        r-   	autoscaleMilliSecondLocator.autoscale  sA    
 '')
t$t$++r/   r)  Nr   )ry   rz   r{   r|   r  r   r   r}   r   r   r  r0  r~   ru   r/   r-   r   r     s5    #D)  +Z
,r/   r   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  )r5  r  r  )r5     iX  )r  r  r   r   ru   )nyearsmin_spacingmaj_spacingfactors       r-   _get_default_annual_spacingr;    s     {%+" %% 
"%+" %% 
"%+" %% 
#%," %% 
#%," %% 
#%-" %% 4!#&,rk6C<k%%r/   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_breakrA    s"     e,D::dAr/   c                X    [        X5      n[        U SU R                  -  -
  U5      nX#:g  $ )Nr   )getattrr   )r?  r   currentrF   s       r-   r=  r=    s.    e$Guq5::~-v6Hr/   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size)label_flagsr.  s     r-   has_level_labelrJ  	  s;     1A+a.A"5$(S.r/   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_HRr?   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_ymdrc    s    ((J11*=J
CY__***dkk*3hCi	y''	'	y''	'	y	&	y''	'	y''	'	y''	'!$;J<"HIIS=r/   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   rF  rG  )rI  	vmin_origs    r-   first_label"_daily_finder.<locals>.first_labelb  s<    Nak&6&6&:)a-SVAVq>!q>!r/   daymonthyearc                   > 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 )NrQ   Tr   r   %H:%M
%d-%b%H:%M
%d-%b
%Y)rQ   r=  rJ  )label_intervalforce_year_starttargetr@  dates_	day_startrm  info_fmtinfo_majinfo_minrl  
year_starts       r-   _hour_finder#_daily_finder.<locals>._hour_findern  s    [[F%ff5D"&HY>BHTn49:;>EHTn49:;"0HY#5HZ 
I(N(N3EY/0 )Or/   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 )NrQ   rR   Tr   r   rs  rt  )rR   rA  r=  )
ru  rw  
hour_startr@  rx  ry  rz  r{  r|  r}  s
       r-   _minute_finder%_daily_finder.<locals>._minute_findery  sp    ]]F&vv6J%fh7D#'HZ >BHTn49:;>EHTn49:;"0HY#5HZ r/   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 )NrR   rS   Tr   r   z%H:%M:%S
%d-%bz%H:%M:%S
%d-%b
%Y)rS   rA  r=  )
ru  rw  minute_startr@  rx  ry  rz  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 r/   i.  ip  r  i`	  r5  i  r  i      i        F   r   rP  r        @Fg      ?g      ?rN  rQ  z%dz%d
%bz%d
%b
%Yweekz

%bz

%b
%Yffffff?%b%b
%Yquarter   r3  %Y)ru  r   rv  boolrx   r   )ru  r   rx   r   )rS  rc  r   r   r   r   r   r   r   r*   zerosint64r  r   rA  rJ  r   rU  r?   rp  rq  r;  )r.  r/  r   r^  periodsperdayperiodspermonthperiodsperyearspaninfomonth_startr~  r  r  
week_startquarter_startmonth_break
jan_or_jul
year_breakr7  
min_anndef
maj_anndef	major_idx	minor_idxrx  ry  rm  rz  r{  r|  rl  r}  s                          @@@@@@@@r-   _daily_finderr  =  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   rf  rg  rh  r   z|S8ri  r   r   rP  r   r  Tr  r  r  rN  rQ  r  r3  r  
rc  r   r*   r  r  aranger>  rJ  rH  r;  )r.  r/  r   r   r  rl  r  r  rx  r}  r{  rz  idxr  r  r7  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:"Kr/   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   rf  rg  rh  r  ri  r   r   rQ  r   g      @TzQ%qzQ%q
%Fr3  z%Fi  r  )r.  r/  r   r   r  rl  r  r  rx  r{  rz  r}  r  r  r7  r  r  r  s                     r-   _quarterly_finderr  M  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:"Kr/   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   rf  rg  rh  r  ri  r   r   r   Tr  )r   r*   r  r  r  r;  )
r.  r/  r   r  r  rx  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	Kr/   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)NrR  )rS  r   rT  r\  r  r[  r  rZ  r  rW  r?   rY  r  r]  )r   r^  fgroups      r-   
get_finderr    s    ((J--j9F!!!	9##	#  	9##	#
	((..
.6Y__3L!$;J<"HIIr/   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   rd   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 NTr   r   )r   r   baser  rp  ro  isminor	isdynamicoffsetplot_objr  finder)	r   r   minor_locatordynamic_moder  r  rp  ro  r  s	            r-   r   TimeSeries_DateLocator.__init__  sP     .		07,tz48$%  &r/   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.rh  rf  rg  )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>::r/   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   )	rb   rd   r   r  r  r  r   ra   range)r   vir.  r/  r   r  rZ   r   s           r-   r   TimeSeries_DateLocator.__call__  s     499..01
;$>>))$5D  99DD'FQET>D d1Hd34Dr/   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[        R                  R                  X5      $ )zN
Sets the view limits to the nearest multiples of base that contain the
data.
r   r   r   )rd   r   r  rm   
transformsr-  )r   r.  r/  r   s       r-   r0   TimeSeries_DateLocator.autoscale  sc     yy224%%d1QG}<AIDAID~~))$55r/   )
r  ro  r  r   r  r  rp  r  r  r  )FTr   r   r   r   N)r   r   r  r  r  r  r  r   r  r   rp  r   ro  r   rx   r   )ry   rz   r{   r|   __doc____annotations__r   r  r   r0  r~   ru   r/   r-   r  r    s    " J
 $!'' ' 	'
 ' ' ' ' 
'*;&6r/   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   rd   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$%  &r/   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.rh  rg  )r  r   r  r*   r  logical_notr  )r   r.  r/  r  r  rf   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   rb   rd   r   r  )r   r   r.  r/  s       r-   set_locs!TimeSeries_DateFormatter.set_locs,  s:    
 	TYY88:;; 4  ,r/   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   re  )r  rJ   rC   r*   bytes_decoder   r   r   r   r   r   r   r   )r   rf   r   r   r   s        r-   r   !TimeSeries_DateFormatter.__call__8  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  rx   r   r   r   r   )ry   rz   r{   r|   r  r  r   r  r  r   r~   ru   r/   r-   r  r    sX     J
 $!'' ' 	' 
'$	
-( (r/   r  c                  f   ^  \ rS rSr% SrS	S
U 4S jjjrS\S'   \SSS jj5       rSSS jjr	Sr
U =r$ )TimeSeries_TimedeltaFormatteriJ  zJ
Formats the ticks along an axis controlled by a :class:`TimedeltaIndex`.
c                .   > Xl         [        TU ]	  5         g r#   )rL   superr   )r   rL   	__class__s     r-   r   &TimeSeries_TimedeltaFormatter.__init__O  s    	r/   r   rd   c                F   [        U SU-  5      u  pE[        US5      u  pd[        US5      u  pv[        US5      u  p[        USX#-
  -  -  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'
r  rO   r   02d:r   .0rZ   z days )r   r   )
rf   r   
n_decimalsexpr   nsr   r   rZ   decimalss
             r-   format_timedelta_ticks4TimeSeries_TimedeltaFormatter.format_timedelta_ticksU  s    
 q"c'"a}a}a}rB:#34451vcl!CF3<qQ5>1Xa
|1_-..A6q6!*F1#&Ar/   c                :   SSSSS.U R                      n[        U R                  R                  5       5      u  pE[	        [        [        R                  " [        R                  " SSU-  -  [        XT-
  5      -  5      5      5      U5      nU R                  XXc5      $ )N	   r  rN  r   )r  r   r   r   r  r  )rL   rb   rd   r   rh  r   r*   ceillog10r   r  )r   rf   r   r  r.  r/  r  s          r-   r   &TimeSeries_TimedeltaFormatter.__call__f  s}    aqq1$))<TYY88:;RWWRXXcBGmc$+>N.N%OPQSVW
**1:CCr/   )rL   )r  )rL   r   )r  )r  r   r  r   rx   rY   r   r   )ry   rz   r{   r|   r  r   r  r}   r  r   r~   __classcell__)r  s   @r-   r  r  J  s7      J  D Dr/   r  )rx   z-list[tuple[type, type[mdates.DateConverter]]])r5   r   rx   r   )rx   zGenerator[None]r   )rU   z	pydt.timerx   floatr   )rx   ztuple[int, int])r?  r   r   rY   rx   npt.NDArray[np.intp])r?  r   r   rY   rx   znpt.NDArray[np.bool_])rI  r  r.  r  rx   r  )r   r   rx   ztuple[int, int, int])r.  r  r/  r  r   r   rx   z
np.ndarray)g
__future__r   
contextlibr   r&   r   r8   typingr   r   r   r   
matplotlibrm   matplotlib.datesr?  r   matplotlib.unitsunitsrA   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   r   r!   r  r.   r:   contextmanagerr2   r=   r>   rW   r\   ConversionInterfacer)   rn   	Formatterrp   DateConverterr%   r   r$   r   r   r   r   r  r   r;  rA  r=  rJ  rc  cacher  r  r  r  r  Locatorr  r  r  ru   r/   r-   <module>r     s+   "    
   ! !  
  
 !   4 
 , +)$6' 
D 	
  *'.
F.. 6%1CJJ(( %1V0f** 0f	6E
,, E
PIf66 I
?F22 ?4K,++ K,j&, !H D DN D DN , ,^  ,J"Q6SZZ// Q6rI(szz33 I(X DCJJ$8$8  Dr/   