rL i ddlZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z ddlmZddlmZddlmZdZej.j1dejddddddejddddddejddddddgejddddddejddddddgejddddddejdddd ddgggej.j1d gd d Zej.j1d gd d Zej.j1dgddZdZdZdZdZedgdZ edgdZ!edgdZ"edgdZ#dZ$dZ%edgd Z&d!Z'd"Z(ed#gd$Z)d%Z*d&Z+ej.j1d'ejXd()e-d*d+d,Dcgc]}d-|z c}fejXd./e-dd0d Dcgc]}d1|z c}fejXd,2e-dd3dDcgc]}d4|z c}fejXd56e-dd7Dcgc]}d8|z c}fgd9Z.d:Z/e%d;Z0e%d<Z1d=Z2d>Z3ej.j1d?ejXd@AdBfejXd6dCfejXd2dDfejXd/dEfejXd)dFfejXdG)dHfejXdI)dHfgdJZ4dKZ5dLZ6dMZ7ej.j1d?ejXd()e-dNdOd,Dcgc]}d-|fz c}fejXdP/gdQfejXdP2gdRfejXdAgdSfgdTZ8dUZ9dVZ:dWZ;dXZ<edYgdZZ=d[Z>d\Z?d]Z@d^ZAd_ZBej.jd`ZDej.jdaZEdbZFdcZGddZHej.j1dedejXd/fddfgejXd/ejXdf/gfgdgZIdhZJdiZKdjZLdkZMdlZNdmZOdnZPej.j1dodpdqZQdrZRdsZSej.j1dtdudvZTdwZUdxZVycc}wcc}wcc}wcc}wcc}w)yN) rc_contextstyle)image_comparisonc<tjddd}tddDcgc]}|tj|z}}tj|d}tjgd}t j d }|jddd}|j||\}|j||\}tjj|jd |jd t j d }|jddd}|j||\}|j||\}tjj|jd |jd ycc}w) Nrdaysdatetime64[ns]dtype)g@?) )figsizeF)orig) datetimerange timedeltanparraypltfigure add_subplotplottesting assert_equal get_xdata get_ydata) basextimetimenpdatafigaxhhnps a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_dates.pytest_date_numpyxr,s@   T1a (D7>r4c ,tjddd}tjjt dDcgc]}|tj d|zz c}gd}t j|}tjjtjj|d tjdddt j }tjjt dDcgc]}|tj d|zz c}gd}t j|}tjjtjj|d ycc}wcc}w) N rr )rrrrrrr)mask)FTTFFFTtzinfo) rrmarrrr/r0rr8getmaskUTC)r"idatesnpdatess r+test_date2num_maskedrRHs6   T2r *D EEKK"'(, 2 2Q @@,2G  IEooe$GJJ!!"%%--"8#)*   T2r&** =D EEKK"'(, 2 2Q @@,2G  IEooe$GJJ!!"%%--"8#)*,,s #F  #Fc Jtj\}}|j|jtj j |jtjt jdtjt jdgtjtjdtj\}}|j|jtj j |jtjt jdtjt jdgtjy)N 1970-01-01z 1970-01-02 0000-12-31) rsubplots xaxis_datedraw_without_renderingrrassert_allcloseget_xlimr/r0rA_reset_epoch_test_example set_epochr'r(s r+test_date_emptyr^\s llnGCMMO JJr{{} & l0K L & l0K L NO $$& \"llnGCMMO JJr{{} & l0K L & l0K L NO $$&r4c tj}|j}|jddgddg|jj t jj|jddgy)N2Frr) rrrrxaxis axis_daterrrYrZr]s r+test_date_not_emptyrdrs] **,C  BGGRHq!fHHJJr{{}r2h7r4c tj\}}|jd|jt j dt j dgddgtj j|jtjt j dtjt j dgtjtjdtj\}}|jd|jt j dt j dgddgtj j|jtjt j dtjt j dgtjy)N?z 2016-01-01z 2016-01-02rrrU) rrVaxhlinerrrArrYrZr/r0r[r\r]s r+ test_axhlinerh{sHllnGCJJsOGGR]]< ("-- *E FAOJJr{{} & l0K L & l0K L NO $$& \"llnGCJJsOGGR]]< ("-- *E FAOJJr{{} & l0K L & l0K L NO $$&r4zdate_axhspan.pngc\tjddd}tjddd}tj\}}|j||dd|j |tj d z |tj d z|j d y) Nrblue? facecoloralphar left)rrrVaxhspanset_ylimrsubplots_adjustr-tfr'r(s r+test_date_axhspanrzs   4B 'B   4B 'BllnGCJJr2tJ4KKX''Q//X''Q//1T"r4zdate_axvspan.pngcXtjddd}tjddd}tj\}}|j||dd|j |tj d z |tj d z|j y) Nrrkrlrmrnroir )rrrVaxvspanset_xlimr autofmt_xdaterxs r+test_date_axvspanrs   4B 'B   4B 'BllnGCJJr2tJ4KKX''S11X''S113r4zdate_axhline.pngcZtjddd}tjddd}tj\}}|j|dd|j |tj d z |tj d z|j d y Nrjrrkrmr colorlwrrr rnrs)rrrVrgrvrrwrxs r+test_date_axhliners   4B 'B   4B 'BllnGCJJrAJ&KKX''Q//X''Q//1T"r4zdate_axvline.pngcVtjddd}tjddd}tj\}}|j|dd|j |tj d z |tj d z|j y) Nr|rrkrlredr rrrr )rrrVaxvlinerrrrxs r+test_date_axvliners   4B 'B   4B 'BllnGCJJr1J%KKX''Q//X''Q//1r4c|jdtjddd}tjddd}tj\}}t j t 5}|j||fdt|dk(sJdt|djvsJ ddd|jgg|jjtj|jj!}t|d kDsJ|j"rt%d |j"DsJt|j"dkDsJy#1swYxYw) NWARNINGr|rrkT)autoz.Attempting to set identical low and high xlimsrc3\K|]$}|jdk(xr|jdk(&yw)zmatplotlib.tickerrN)name levelname).0records r+ z+test_too_many_date_ticks..s5"&   **Lv/?/?9/LL"&s*,) set_levelrrrVpytestwarns UserWarningrlenstrmessagerrbset_major_locatorr/ DayLocatorget_major_locatorrecordsall)caplogr-ryr'r(recvs r+test_too_many_date_ticksrsG  Y   4B 'B   4B 'BllnGC k "(c RH4 (3x1}}@s1v~~&' ('( GGBOHHv0023$""$&A q6D== >>c"&nn"&&& & v~~  "" "((s 0AE..E7cBtjfd}|S)Nctjtjdtjy)N 2000-01-01)r/r[r\)thefuncsr+wrapperz%_new_epoch_decorator..wrappers.((*& ((*r4) functoolswraps)rrs` r+_new_epoch_decoratorrs%__W++ Nr4zRRuleLocator_bounds.pngcddlmcm}|jt jddd}t jddd}t j }t j}|jd|j||gddgd tjtjjd }tj|}|j j#||j j%tj&||j)|j+y) NrrripTrromarkerinterval)matplotlib.testing.jpl_unitsr jpl_unitsregisterrrrsubplotset_autoscale_onrr/ rrulewrapperdateutilrruleYEARLY RRuleLocatorrbrset_major_formatterAutoDateFormatterautoscale_viewr)r;r-ryr'r(rlocators r+test_RRuleLocatorrs00 NN   4A &B   4A &B **,C BGGRHsCjG-    5 5 DE!!%(GHHw'HH  !9!9'!BCr4ctj}tjdddtj}tjdddtj}|j ||y)Nr)yearmonthdayrK)r/rrrN tick_values)locx1y1s r+test_RRuleLocator_dayrangersR    C   &** EB   6:: FBOOBr4c xtjtjjd}tj |}t j ddd}t j dddd}ddg}ttttj|j|||k(sJy) Nrrrrrrr)rrr microsecond2020-01-01 00:00:00+00:00z 2020-01-01 00:00:00.000001+00:00) r/rrrSECONDLYrrlistmaprnum2dater)rrd1d2expecteds r+test_RRuleLocator_close_minmaxrs    7 7! DE   e $C   A1 5B   A1! DB+24H CR)@AB Cx OO Or4z#DateFormatter_fractionalSeconds.pngcddlmcm}|jt jdddddd}t jdddddd}t j }t j}|jd|j||gddgd|j|jy) NrirTrrrr) rrrrrrrrrrrr)r;r-ryr'r(s r+test_DateFormatterrs00 NN   4Aq!Q /B   4Aq!Q /B **,C BGGRHsCjG-r4c ddtjd<tjdddddtjdddddtjdddd dg}gd }tj\}}|j |||j j tjd |jj|jDcgc]}|j}}gd }||k(sJ|j j tj|j jtjd tjd}|j j!tj"||j jtjd|jj|jdDcgc]}|j}}gd}||k(sJycc}wcc}w)zh Test if setting the locator only will update the AutoDateFormatter to use the new locator. z%d %H:%Mzdate.autoformatter.minutei r;r)rr r)rr)z30 08:00z30 08:30z30 09:00z30 09:30z30 10:00z30 10:30)rr7)rF)rG-minor)which)z30 08:15z30 08:45z30 09:15z30 09:45z30 10:15N)rrcParamsrrVrrbrr/ MinuteLocatorcanvasdrawget_xticklabelsget_textmticker NullLocatorset_minor_locatorset_minor_formatterr)tr#r'r(tl ticklabelsr decoy_locs r+test_locator_set_formatterr*s 1;CLL,-   4B1 -   4B2 .   4BB / 1A AllnGCGGAqMHHv33G<=JJOO*,*<*<*>?B"++-?J?4H  !! !HHw2245HHv33G<=$$X.IHH  !9!9)!DEHHv33H=>JJOO*,*<*<7*<*KLB"++-LJLKH  !! !@Ms %H(H-cGdd}d}tj|}||jd<|tjdddgdgk(sJy) NceZdZdZy).test_date_formatter_callable.._Locatorcy)Ni)selfs r+ _get_unitz8test_date_formatter_callable.._Locator._get_unitMsCr4N)__name__ __module__ __qualname__rrr4r+_LocatorrLs'r4rcJ|Dcgc]}|jdc}Scc}w)Nz %d-%m//%Y)strftime)rP_dts r+callable_formatting_functionzBtest_date_formatter_callable..callable_formatting_functionOs389R K(999 irFz 25-12//2014)r/rscaledr)rr formatters r+test_date_formatter_callabler Js\((:((4I8IS h''b"56 7M? JJ Jr4zdelta, expected(weeksi{rkz$\mathdefault{%d}$rr z $\mathdefault{1990{-}01{-}%02d}$hoursrlz$\mathdefault{01{-}01\;%02d}$rminutes z$\mathdefault{01\;00{:}%02d}$ctjdtjddd}||z}tjd}|j |j jtj|tj|tj|d}|Dcgc] }|| c}|k(sJycc}w)NdefaultrrFinterval_multiplesTusetex) ruserr/AutoDateLocatorcreate_dummy_axisaxisset_view_intervalr0r)deltarrrrr rs r+test_date_formatter_usetexr#Ws IIi   4A &B eB$$>G  LL""6??2#68KL((>I&-i 0sIcN 0H << < 0s:Cctjdddtj}tjdddtj}tjd}t tj |||dk(sJ|tjdz }t tj |||dk(sJ|tjdz}t tj |||dk(sJtjdddtj}tjd }tj |||}t |d k(sJtj |d ||z k(sJy ) zj This test should check if drange works as expected, and if all the rounding errors are fixed rrJrr microsecondsr N)rr/rNrrdranger)startendr" dateranges r+ test_dranger0osI   dAq Q   ??9R= )cEk :: :r4c d}tjddd}tjdgdgtjdgdgtjd gd gtjd gd gtjd gdgtjdgdgtjd gdgtjdgdgf}|D]I\}}||z}|||}tttt j ||k(rIJt jd}|jddddddddk(sJt jtjjdi}|jddddddddk(sJt jd}|jddddddddk(sJy) Nctjd}|j|jjtj ||g|S)NFrr/rrr r!r0date1date2rs r+_create_auto_date_locatorz9test_auto_date_locator.._create_auto_date_locatorsD((EB!!#& &&(GHr4rrr r) 1990-01-01 00:00:00+00:00z2010-01-01 00:00:00+00:00z2030-01-01 00:00:00+00:00z2050-01-01 00:00:00+00:00z2070-01-01 00:00:00+00:00z2090-01-01 00:00:00+00:00z2110-01-01 00:00:00+00:00z2130-01-01 00:00:00+00:00z2150-01-01 00:00:00+00:00z2170-01-01 00:00:00+00:004) r8z1990-02-01 00:00:00+00:00z1990-03-01 00:00:00+00:00z1990-04-01 00:00:00+00:00z1990-05-01 00:00:00+00:00z1990-06-01 00:00:00+00:00z1990-07-01 00:00:00+00:00z1990-08-01 00:00:00+00:00z1990-09-01 00:00:00+00:00z1990-10-01 00:00:00+00:00z1990-11-01 00:00:00+00:00z1990-12-01 00:00:00+00:00r )z1990-01-05 00:00:00+00:00z1990-01-26 00:00:00+00:00z1990-02-16 00:00:00+00:00z1990-03-09 00:00:00+00:00z1990-03-30 00:00:00+00:00z1990-04-20 00:00:00+00:00z1990-05-11 00:00:00+00:00()z1990-01-03 00:00:00+00:00z1990-01-10 00:00:00+00:00z1990-01-17 00:00:00+00:00z1990-01-24 00:00:00+00:00z1990-01-31 00:00:00+00:00z1990-02-07 00:00:00+00:00r) r8z1990-01-01 04:00:00+00:00z1990-01-01 08:00:00+00:00z1990-01-01 12:00:00+00:00z1990-01-01 16:00:00+00:00z1990-01-01 20:00:00+00:00z1990-01-02 00:00:00+00:00z1990-01-02 04:00:00+00:00z1990-01-02 08:00:00+00:00z1990-01-02 12:00:00+00:00z1990-01-02 16:00:00+00:00rkr)r8z1990-01-01 00:05:00+00:00z1990-01-01 00:10:00+00:00z1990-01-01 00:15:00+00:00z1990-01-01 00:20:00+00:00seconds) r8z1990-01-01 00:00:05+00:00z1990-01-01 00:00:10+00:00z1990-01-01 00:00:15+00:00z1990-01-01 00:00:20+00:00z1990-01-01 00:00:25+00:00z1990-01-01 00:00:30+00:00z1990-01-01 00:00:35+00:00z1990-01-01 00:00:40+00:00r')z 1989-12-31 23:59:59.999500+00:00r8z 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:00FrrrFr)rrr r)rrr*rHrr)maxticks) rrrrrr/rrr?rrMONTHLY)r7rresultst_deltarrrs r+test_auto_date_locatorrCs   4A &B""2K"",K"",. ""+K "",.""2.. ""2..""55]6Gp%F '\+B3CV__WY789XEEEF $$>G   2"rbQO OO O$$x~~/E/Eq.IJG   2!rbRAN NN N$$a0G   1qQ1qI II Ir4c hd}tjdgdgtjdgdgtjdgd gtjd gd gtjd gd gtjdgdgtjd gdgtjdgdgf}tjddd}|D]I\}}||z}|||}tttt j ||k(rIJy)Nctjd}|j|jjtj ||g|SNTrr3r4s r+r7zAtest_auto_date_locator_intmult.._create_auto_date_locatorsD((DA!!#& &&(GHr4r r z1980-01-01 00:00:00+00:00z2000-01-01 00:00:00+00:00rz2040-01-01 00:00:00+00:00z2060-01-01 00:00:00+00:00z2080-01-01 00:00:00+00:00z2100-01-01 00:00:00+00:00z2120-01-01 00:00:00+00:00z2140-01-01 00:00:00+00:00z2160-01-01 00:00:00+00:00z2180-01-01 00:00:00+00:00z2200-01-01 00:00:00+00:00r9) 1997-01-01 00:00:00+00:001997-02-01 00:00:00+00:001997-03-01 00:00:00+00:001997-04-01 00:00:00+00:001997-05-01 00:00:00+00:00z1997-06-01 00:00:00+00:00z1997-07-01 00:00:00+00:00z1997-08-01 00:00:00+00:00z1997-09-01 00:00:00+00:00z1997-10-01 00:00:00+00:00z1997-11-01 00:00:00+00:00z1997-12-01 00:00:00+00:00r:r ) rHz1997-01-15 00:00:00+00:00rIz1997-02-15 00:00:00+00:00rJz1997-03-15 00:00:00+00:00rKz1997-04-15 00:00:00+00:00rLz1997-05-15 00:00:00+00:00r;) rHz1997-01-05 00:00:00+00:00z1997-01-09 00:00:00+00:00z1997-01-13 00:00:00+00:00z1997-01-17 00:00:00+00:00z1997-01-21 00:00:00+00:00z1997-01-25 00:00:00+00:00z1997-01-29 00:00:00+00:00rIz1997-02-05 00:00:00+00:00z1997-02-09 00:00:00+00:00r) rHz1997-01-01 04:00:00+00:00z1997-01-01 08:00:00+00:00z1997-01-01 12:00:00+00:00z1997-01-01 16:00:00+00:00z1997-01-01 20:00:00+00:00z1997-01-02 00:00:00+00:00z1997-01-02 04:00:00+00:00z1997-01-02 08:00:00+00:00z1997-01-02 12:00:00+00:00z1997-01-02 16:00:00+00:00rkr)rHz1997-01-01 00:05:00+00:00z1997-01-01 00:10:00+00:00z1997-01-01 00:15:00+00:00z1997-01-01 00:20:00+00:00r<) rHz1997-01-01 00:00:05+00:00z1997-01-01 00:00:10+00:00z1997-01-01 00:00:15+00:00z1997-01-01 00:00:20+00:00z1997-01-01 00:00:25+00:00z1997-01-01 00:00:30+00:00z1997-01-01 00:00:35+00:00z1997-01-01 00:00:40+00:00r>r')z 1996-12-31 23:59:59.999500+00:00rHz 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:00rrrrrrr/r)r7rArrBrrrs r+test_auto_date_locator_intmultrOsI ""2K"",K"",K""+."",.""2.. ""2..""55g;Gz   4A &B$F '\+B3CV__WY789XEEEFr4ctjd}tj|}d}|j||dtjz z|dtjz zg}|gdk(sJy)NTrgB@ri)00:00z00.0005z00.0009)r/rConciseDateFormatter format_ticksMUSECONDS_PER_DAY)rr  year_1996stringss r+ test_concise_formatter_subsecondrW+sv$$=G++G4II$$C&2222C&2222&45G 5 55 5r4c Td}tjddd}tjdtdddDcgc] }t|c}gtjd gd gtjd gd gtjd gdgtjdgdgtjdgdgtjdgdgtjdgdgf}|D]\}}||z}|||}||k(rJycc}w)Nctj\}}tjd}tj|}|j j ||j j||j|||jj|jDcgc]}|j}}|Scc}wrF rrVr/rrRyaxisrrrvrrget_yticklabelsr)r5r6r'r(rr ststss r+r7z9test_concise_formatter.._create_auto_date_locator7s,,.R((DA//8  ""7+ $$Y/ E5! ')'9'9';<r{{}<< =s7CrMrr rrkr9) 1997FebMarAprMayJunJulAugSepOctNovDecr:r ) Jan15rbrnrcrnrdrnrernr;) rm05091317212529rbrorpr) zJan-0104:0008:0012:0016:0020:00zJan-02rvrwrxryr)rQ00:0500:1000:1500:20r<) rQro10rn20rt303540r)59.5rQ00.501.001.502.002.5rrrr)r7rrrArBrrrVs r+test_concise_formatterr6s@    4A &B""2!&tT2!67AQ7"",-"",""+"",?""2.=""2.I""1-I3G:%# '\+B3("""#98sD%zt_delta, expectedg{Gz?r<z1997-Jan-01 00:00z1997-Jan-01 00:01 1997-Jan-01 1997-Jan-021997-Janctjddd}||z}tj\}}tj}tj |}|j j||j j||j||gddg|jj|j|k(sJy)NrMrr) rrrVr/rrRrbrrrrr get_offset)rBrrrr'r(rr s r+"test_concise_formatter_show_offsetrgs   4A &B gBllnGC$$&G++G4IHHw'HH  +GGRHq!fJJOO    !X -- -r4ctjddd}|tjdz}tj\}}t j }t j |}|jj||jj||j|j||gddg|jj|jdk(sJy)NrMr<r rr)rrrrVr/rrRrbrr invert_xaxisrrrr)rrr'r(rr s r++test_concise_formatter_show_offset_invertedrs   4A &B h  b) )BllnGC$$&G++G4IHHw'HH  +OOGGRHq!fJJOO    !Z // /r4ctjdddtjdddg}ddg}tj\}}|j||t j }t jtd5|jj|ddd|jjJ|j||jj|k(sJy#1swYPxYw) Nr|rrrrkrzalready has a convertermatch)rrrVrr/ConciseDateConverterrrrrb set_converterr;r get_converter)r#yr'r(convs r+test_concise_converter_staysrs   4A &(9(9$2(FGA AAllnGCGGAqM  & & (D k)B C% t$% 88>> !! !BKKO 88 ! ! #t ++ + %%s C66C?ctj\}}tjddd}|tjdz}t j }t j |}|jj||jj||j||gddg|j|jdk(sJ|j||tjdz|j|jdk(sJ|j|tjd z|tjd z|j|jd k(sJ|j||tjdz|j|jdk(sJy) NrMrrrrrr rrHrra)rrVrrr/rrRrbrrrrXrr)r'r(rrrr s r+test_offset_changesrsllnGC   4A &B h  s+ +B$$&G++G4IHHw'HH  +GGRHq!f    !R '' 'KKB++!445    !Z // /KKX''a00X''b113    !V ++ +KKB++#667    !R '' 'r4r_r`r;) rm$\mathdefault{05}$$\mathdefault{09}$z$\mathdefault{13}$z$\mathdefault{17}$z$\mathdefault{21}$z$\mathdefault{25}$z$\mathdefault{29}$rbrr) zJan$\mathdefault{{-}01}$$\mathdefault{04{:}00}$$\mathdefault{08{:}00}$$\mathdefault{12{:}00}$$\mathdefault{16{:}00}$z$\mathdefault{20{:}00}$zJan$\mathdefault{{-}02}$rrrr)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}$cptjddd}||z}tjd}|j|jj tj |tj |tj|d}|j||k(sJy)NrMrTrr) rr/rrr r!r0rRrS)rBrrrrr s r+test_concise_formatter_usetexrs,   4A &B gB$$=G  LL""6??2#68KL++GDAI  ! !') , 88 8r4c bgdfd}tjddd}tjdtddd Dcgc] }t|c}gtjd gd gtjd gdgtjd gdgtjdgdgtjd gdgtjdgdgtjdgdgf}|D]\}}||z}|||}||k(rJycc}w)N)%Yz%m/%Yzday: %d %H hr %M minrz %S.%f secctj\}}tjd}tj|}|j j ||j j||j|||jj|jDcgc]}|j}}|Scc}w)NTr)formatsrZ) r5r6r'r(rr r]r^rs r+r7zAtest_concise_formatter_formats.._create_auto_date_locators,,.R((DA//I  ""7+ $$Y/ E5! ')'9'9';<r{{}<< =:CrMrr rr_r`rkr9) ra02/199703/199704/199705/1997z06/1997z07/1997z08/1997z09/1997z10/1997z11/1997z12/1997r:r ) 01/1997day: 15rrrrrrrrr;) rday: 05day: 09zday: 13zday: 17zday: 21zday: 25zday: 29rrrr) zday: 01 04 hr 00 min 08 hr 00 min 12 hr 00 min 16 hr 00 minz 20 hr 00 minzday: 02rrrrr) 00 hr 00 minz 00 hr 05 minz 00 hr 10 minz 00 hr 15 minz 00 hr 20 minr<) rz 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 secrz 00.500000 secz 01.000000 secz 01.500000 secz 02.000000 secz 02.500000 secr) r7rrrArBrrrVrs @r+test_concise_formatter_formatsrsQ._create_auto_date_locators,,.R((DA// ,0  ""7+ $$Y/ E5! ')'9'9';<r{{}<< =rrMrr rr_r`rkr9) z'97rbrcrdrerfrgrhrirjrkrlr:r ) JanuaryrnFebruaryrnMarchrnAprilrnrernr;) rrorprqrrrsrtrurrorpr) z01-01rvrwrxryrzz01-02rvrwrxryr)00r{r|r}r~r<) rrorrnrrtrrrr)rz00.0rrrrrr) r7rrrArBrrrVrs @r+test_concise_formatter_zformatsrsG"",6""+8"",A""2.:""2.F""1-H3G:%# '\+B3("""#98rcd}tjdddjtjj}tjdgddgtjd gd d gtjd gddgtjd gddgf}tjtjd}|D]&\}}}||z}||||\}} ||k(sJ| |k(r&Jy)Nctj\}}tjd}tj||}|j j ||j j||j|||jj|jDcgc]}|j}}||j jjfScc}w)NTrtz)rrVr/rrRr[rrrvrrr\rget_offset_text) r5r6rr'r(rr r]r^s r+r7z._create_auto_date_locatorNs,,.R((DA//B?  ""7+ $$Y/ E5! ')'9'9';<r{{}<<BHH,,.77999=s9C<rMrrJr;r) 03:0007:0011:0015:0019:00z23:00rrrrrrrkr)rz03:05z03:10z03:15z03:20rr<) rrorrnrrtrrrz1997-Jan-01 03:00r)rrrrrrrr )rreplacetimezoneutcr) r7rrAnew_tzrBexpected_stringsexpected_offsetrrVoffsets r+test_concise_formatter_tzrMs :   4A & . .h6G6G6K6K . LB"",> ""2.=""2.I#""1-I#G&  x11: ;F6=)2!? '\3BFC****((( )r4c d}tjdgdgtjdgdgtjdgd gtjd gd gtjd gd gtjdgdgtjd gdgf}tjj d}tjddd|}|D]e\}}t ddi5||z}||||}t tttj||}||k(sJ dddgy#1swYrxYw)Nctjd|}|j|jjtj ||g|S)NTrrr3)r5r6rrs r+r7zDtest_auto_date_locator_intmult_tz.._create_auto_date_locatorwsF((DRH!!#& &&(GHr4r r) z1980-01-01 00:00:00-08:00z2000-01-01 00:00:00-08:00z2020-01-01 00:00:00-08:00z2040-01-01 00:00:00-08:00z2060-01-01 00:00:00-08:00z2080-01-01 00:00:00-08:00z2100-01-01 00:00:00-08:00z2120-01-01 00:00:00-08:00z2140-01-01 00:00:00-08:00z2160-01-01 00:00:00-08:00z2180-01-01 00:00:00-08:00z2200-01-01 00:00:00-08:00r9) 1997-01-01 00:00:00-08:001997-02-01 00:00:00-08:001997-03-01 00:00:00-08:001997-04-01 00:00:00-08:001997-05-01 00:00:00-07:00z1997-06-01 00:00:00-07:00z1997-07-01 00:00:00-07:00z1997-08-01 00:00:00-07:00z1997-09-01 00:00:00-07:00z1997-10-01 00:00:00-07:00z1997-11-01 00:00:00-08:00z1997-12-01 00:00:00-08:00r:r ) rz1997-01-15 00:00:00-08:00rz1997-02-15 00:00:00-08:00rz1997-03-15 00:00:00-08:00rz1997-04-15 00:00:00-07:00rz1997-05-15 00:00:00-07:00r;) rz1997-01-05 00:00:00-08:00z1997-01-09 00:00:00-08:00z1997-01-13 00:00:00-08:00z1997-01-17 00:00:00-08:00z1997-01-21 00:00:00-08:00z1997-01-25 00:00:00-08:00z1997-01-29 00:00:00-08:00rz1997-02-05 00:00:00-08:00z1997-02-09 00:00:00-08:00r) rz1997-01-01 04:00:00-08:00z1997-01-01 08:00:00-08:00z1997-01-01 12:00:00-08:00z1997-01-01 16:00:00-08:00z1997-01-01 20:00:00-08:00z1997-01-02 00:00:00-08:00z1997-01-02 04:00:00-08:00z1997-01-02 08:00:00-08:00z1997-01-02 12:00:00-08:00z1997-01-02 16:00:00-08:00rkr)rz1997-01-01 00:05:00-08:00z1997-01-01 00:10:00-08:00z1997-01-01 00:15:00-08:00z1997-01-01 00:20:00-08:00r<) rz1997-01-01 00:00:05-08:00z1997-01-01 00:00:10-08:00z1997-01-01 00:00:15-08:00z1997-01-01 00:00:20-08:00z1997-01-01 00:00:25-08:00z1997-01-01 00:00:30-08:00z1997-01-01 00:00:35-08:00z1997-01-01 00:00:40-08:00zCanada/PacificrMrrJz_internal.classic_modeFr) rrrrgettzrrrrr/r) r7rArrrBrrrr]s r+!test_auto_date_locator_intmult_tzrvss ""0K"",K"",K""+."",.""2.. ""2..Y3Gj   + ,B   4Ab 1B$" 159 : "gB/B;Gc#vwyR@ABB> !>  " "" " "s A EE! zdate_inverted_limit.pngcztjddd}tjddd}tj\}}|j|dd|j |tj d z |tj d z|j |jd yr)rrrVrgrvr invert_yaxisrwrxs r+test_date_inverted_limitrs   4B 'B   4B 'BllnGCJJrAJ&KKX''Q//X''Q//1OOT"r4ctjjd}tj}t j ddddd|}t j dd }|jd z }d }|||| }|||} d tjtjdz} t|D cgc] } | | |zz } } ttj| } | | k(sJycc} w)NzEurope/Brusselsrr rrrJ!r)rr=iQr)r-freqperiodsgp&ArU) rrrr/rNrrr=r0rrArr) date_range tz_convertBRUSSELSrNdtstartr interval_daysNdt_utcdt_bxlr-rOexpected_ordinalfactual_ordinalfs r+_test_date2num_dstrs{{  !23H **CaQ#>G!!"b9H$$u,M A gHa @F  )F FOOBMM,$?@ @B;@8Daq=01DD6??623O / // /Es?C6c`Gddtjfd}d}t||y)NcFeZdZdZfdZfdZfdZedZxZ S)%test_date2num_dst..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. ct||}t|dd}| t|dd}||j|}t |t j r|j |}|S)NrK normalize)super__sub__getattrr isinstancer mk_tzaware)rotherrrK localizer __class__s r+rz-test_date2num_dst..dt_tzaware.__sub__sl&AQ$/F!#FK> (((+A!X../OOA&Hr4c@|jt| |SN)rr__add__)rrrs r+rz-test_date2num_dst..dt_tzaware.__add__s??57?5#9: :r4cDt||}|j|Sr)r astimezoner)rrKrrs r+r z0test_date2num_dst..dt_tzaware.astimezones!#F+B??2& &r4cRi}d}|D]}t||d}||||<|di|S)N)rrrhourminutesecondrrKr)r)cls datetime_objkwargsattrsattrvals r+rz0test_date2num_dst..dt_tzaware.mk_tzawaresIFE 'lD$7?#&F4L ' == r4) rrr__doc__rrr  classmethodr __classcell__)rs@r+ dt_tzawarers+   ; '  !  !r4rcnj|}t|Dcgc] }|||zz c}Scc}wr)rr)r-rrrrOrs r+rz%test_date2num_dst..date_ranges4''..3Gn=1t8$===s2cJ|Dcgc]}|j|c}Scc}wr)r )dt_listrKds r+rz%test_date2num_dst..tz_converts.56 V$666r)rr)rrrs @r+test_date2num_dstrs,.!X&&.!b> 7z:.r4c<fd}tj|y)Nc\jj|jtSr) DatetimeIndexrastypeobject)argspds r+rz,test_date2num_dst_pandas..tz_convert$s'*r**D188@@r4)rr)r$rs` r+test_date2num_dst_pandasr% sAr}}j1r4c |d}|tjdddd|}|tjdddd|}tjtjj |}|j ||}tjddddtjjtjddd d tjjg}||k(sJy) NAustralia/Sydneyrr)rr)rr rJr) rr/rrrDAILYbetweenrtzutc) attach_tzget_tzSYDrdtendruleactexps r+_test_rrulewrapperr4*s # $C))$1a8#>G h''aA6 .attach_tz:szzz$$r4r'rr)rr)rrrKuntilrrJr ) r4rrrrr/rrr*afterbefore _base_tzinfo _interval)r-r/rr0r1s r+test_rrulewrapperr>9s%y(++"3"34 ++  . /CaA.G   dAq! ,E   HNN$8$8'&) 8D ::g ("3"3D!Q1;>#@ @@ @ ;;u !2!24Aq!:="? ?? ?    ## # >>Q  r4c`tjd}d}t||jy)Npytzc$|j|Sr)localizer7s r+r-z)test_rrulewrapper_pytz..attach_tzSs{{2r4)r importorskipr4r)r@r-s r+test_rrulewrapper_pytzrDNs)   v &Dy$--0r4c jtjd}|jd}tdDcgc]>}|j t j dddt j |z@}}tjd|}|j|jjtj|dd z tj|d d ztjgd }|tjtjd z}tj j#||gd }t%t't(tj*||}||k(sJtj,|j/|d|dtjgdsJtj,|j1|d|dj/|d|dtjgdsJycc}w)Nr@zAmerica/New_Yorkr|r}rTrrrr+)g{ja&Ag{jd&Ag{jtg&Ag{jNj&Ag{j*m&Ag{jp&Ag{jr&ArU)z2009-01-01 00:00:00-05:00z2010-01-01 00:00:00-05:00z2011-01-01 00:00:00-05:00z2012-01-01 00:00:00-05:00z2013-01-01 00:00:00-05:00z2014-01-01 00:00:00-05:00z2015-01-01 00:00:00-05:00r) g@g*@g:@gJ@gZ@gj@gz@g@g@)rrCrrrBrrr/rrr r!r0rrrArrYrrrrallcloser get_locator)r@rrOr#rrrr]s r+test_yearlocator_pytzrHYs   v &D ) *B*/+ 7%& X&&tQ2 3   a  ! 7A 7$$DG  LL""6??1Q4#8#<#)??1R5#9##=? N OA FOOBMM,7 88AJJq'),JH c#vwyR89 :B >> ;;w**1Q416 9   ;;w**1Q416BB1Q41Nxx   + 7sAH0c d}tjddd}tjdddddgdgtjddd d dgd gtjd dd ddddggf}|D]K\}}}||z}|||fi|}tttt j ||k(rKJy)Nctjdi|}|j|jj tj |tj ||S)Nr)r/ YearLocatorrr r!r0)r5r6rrs r+_create_year_locatorz.test_YearLocator.._create_year_locator{sO$$.v.!!# &&vu'='-u'= ?r4rrr rrk)r"rrrGrrr) z1980-05-16 00:00:00+00:00z2000-05-16 00:00:00+00:00z2020-05-16 00:00:00+00:00z2040-05-16 00:00:00+00:00z2060-05-16 00:00:00+00:00z2080-05-16 00:00:00+00:00z2100-05-16 00:00:00+00:00z2120-05-16 00:00:00+00:00z2140-05-16 00:00:00+00:00z2160-05-16 00:00:00+00:00z2180-05-16 00:00:00+00:00z2200-05-16 00:00:00+00:00irr z1980-09-25 00:00:00+00:00z2000-09-25 00:00:00+00:00rN)rLrrAr" argumentsrrrs r+test_YearLocatorrNzs   4A &B""2a2K""2a3K""0a3,.IJ%G0'.F"y( %Z&r2;;CV__WY789XEEEFr4cPtjt5tjddddtjt5tjddddtjt5tjddddtjt5tjddddtjdy#1swYxYw#1swYxYw#1swYpxYw#1swYDxYw)Nr+rgrg?r)rraises ValueErrorr/rrr4r+test_DayLocatorrRs z "'2&' z ")4() z "&1%& z "(3'( s#''))&&((s/C8D DD8DD DD%c|tjdddtj}|jdk(sJy)NrrJrN)rr/rNtznamers r+ test_tz_utcrWs0   4Afjj 9B 99;%  r4z x, tdeltarfc<tj|}||k(sJyr)r/ num2timedelta)r#tdeltars r+test_num2timedeltar[s   a B <G3Ga  LL""6??58#<#)??59#=? k)E Fys 2CC cdtjd<tjddd}tj\}}|j |tjt ||jj|jdjdk(sJ|jd jd k(sJd tjd<tj\}}|j |tjt ||jj|jdjd k(sJ|jd jd k(sJtjt5dtjd<dddy#1swYyxYw)Nconcisezdate.converterz 2020-01-01 2020-05-01rar rrmrrnrz Jan 01 2020 Jan 15 2020boo)rrrrirVrrrrrrrrPrQrPr'r(s r+test_change_converterrssf%.CLL!" IIlL HEllnGCGGE299SZ()JJOO    " + + - 66 6    " + + - 55 5%+CLL!"llnGCGGE299SZ()JJOO    " + + - >> >    " + + - >> > z "/). %&///s .G  Gc,dtjd<tjddd}tj\}}|j |tjt ||jj|jdjdk(sJ|jd jd k(sJd tjd<tj\}}|j |tjt ||jj|jdjd k(sJ|jd jd k(sJy)NFzdate.interval_multiplesz 2020-01-10rorar rz Jan 10 2020rz Jan 24 2020Truerpz Feb 01 2020) rrrrirVrrrrrrrrs r+test_change_interval_multiplesrvs6.3CLL*+ IIlL HEllnGCGGE299SZ()JJOO    " + + - >> >    " + + - >> >.4CLL*+llnGCGGE299SZ()JJOO    " + + - >> >    " + + - >> >r4c tj}|jdtjdk(sJ|jdddk(sJ|jdddk(sJ|jdddk(sJ|j |j tjdddddtjjtjdddddtjjfk(sJ|jtjk(sJd}tjj|}|j|k7sJ|jd|j|k(sJ|j |jj tj"d d g|j tjd dd dd|tjd dd dd|fk(sJ|t$j&d<tj}|j|k(sJt)j*t,d5tjddddt)j*t.d5tjddddy#1swYDxYw#1swYyxYw)Nrrrr)rrTrJrIceland 2022-01-10z 2022-01-08rErrrz Aiceland is not a valid timezonerAicelandrz%tz must be string or tzinfo subclass.)r/ DateLocator nonsingularrinfr datalim_to_dtrrrrrNrr set_tzinfor set_data_intervalr0rrrrPrQ TypeError)rtz_str iceland_tzs r+test_DateLocatorrs  "G   q"&& )V 33 3   q! $ .. .   q! $ .. .   q! $ // /   "$1a83D3D3H3HI$1a83D3D3H3HI'K KK K :: ## # F""6*J :: ## # y! :: ## # "GLL""FOO\5A5C%DE  "$1a:>$2q!J?'A AA A &CLL  "G :: ## # z)K L*j)* yD F!a !!**!!sJ/J;/J8;Kctjddk(sJtjddd}tjd|dk(sJt j tjdd g|t j dd gk(sJtjgjd k(sJtjgtjdddjd k(sJy) Nr{@rErrrz2022-01)rz2022-02g@@r)r/ datestr2numrrfrrrsizerVs r+test_datestr2numrEs   l +w 66 6 Dr 2B   i 4 ?? ? 66&$$ I XXvv& '( )) )   b ! & &! ++ +   b(--T67R#A BBF$! LL Lr4kwarg)rroffset_formatsctj}|ddgi}|d}tjt|5tj |fi|dddy#1swYyxYw)Nrrz argument must be a listr)r/rrrPrQrR)rrrrs r+!test_concise_formatter_exceptionsrQsc$$&Gb$Z Fg- .E z /7##G6v6777s AA$ctj}tj|}|ddk(sJ|jddk(sJy)Nr2022z2022-01-10 00:00:00)r/rrRformat_data_short)rr s r+test_concise_formatter_callr[sM$$&G++G4I W  '' '  & &w /3H HH Hr4c |tjtddDcgc]}tjdd|c}}tjgd}tjj |d}t j\}}|j|||jdk(sJycc}w)Nrr*r)rrr r)rrrrx) rrrrrLmasked_greaterrrVrrZ)nr#rmr'r(s r+test_datetime_maskedrbs q!EA(##D!Q/EFA !A Q"AllnGCGGAqM ;;=F "" " FsB9r)iictjtd|d5tj|dddy#1swYyxYw)Nz Date ordinal z convertsr)rrPrQr/r)rs r+test_num2date_errorrns: z=Y)G Hs ?Ac 6tjdtjdddddddtjjk(sJtjd tjdddddd tjjk(sJy) Ngj<j@irrr)i,BrJgq<j@rr)r/rrrrrr4r+test_num2date_roundoffrts ??, -1B1B b"aAvh.?.?.C.C2E EE E ??, -1B1B b"aAh&7&7&;&;2= == =r4c tjtjdddddtj}tjd}||dk(sJ|j d||dk(sJy) Nr%rrrJz%Y-%b-%d %H:%Mz2011-Jan-01 00:00zPacific/Kiritimatiz2011-Jan-01 14:00)r/r0rrN DateFormatterr)r$r s r+test_DateFormatter_settzr|sx ??8,,T1aA4:JJ@ AD$$%56I T?1 11 1-. T?1 11 1r4)Wr dateutil.tzrdateutil.rrulernumpyrr matplotlibrrmatplotlib.datesrPr/matplotlib.pyplotpyplotrmatplotlib.testing.decoratorsrmatplotlib.tickertickerrr,mark parametrizer3r:rCrRr^rdrhrzrrrrrrrrrrr rrr#r0rCrOrWrrrrrrrrrrrrrr%r4r>r@rDrHrNrRrWr[r_rgrlrsrvrrrrrrrr)rrr minurs00000r+rs (!:#P$ 1 1 1$1aA F!2!2!24Aq!Q!G!2!2!24Aq!Q!G!I#4("3"3D!Q1a"H"3("3"3D!Q1a"H"J"3("3"3D!Q1a"H"3("3"3D!Q1a"H"J!K  LM#56* 6M*#560 60"9:; *(',8'(%&'#(#%&'(%&'#(#%&'(#8,-./. P89:;0"@ K*Xh'/4T4/DEtd"EGXR ;@B?KC)C/KMXb!:?2q/J$&-JLX#:?2,G$&-GI -  =  =;@LJLJ^HFHFV6.#b,X%':;X"$78Xa -0XQ/Xa *-Xb!2&Xc"B'/ . .0",.(4,Xh'-24r-BCqe#CEXR 45 Xb!"#X" /* 9+* 94#n1#h&)RC"L,-. #/ #0,>/B2 *11@$FN $ 0h00a89s8&8h&8&8a&@&8h&8&8c&B&DEFG G # @/*?&+!\ LFH7H7I # 456 = 2G!FKJGH Ds U > U + U U6 U