a  ze#@sddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZmZmZmZmZddlmZddlmZddlmZmZmZddlmZed Z e!\Z"Z#zej$$d d Z%Wnej$j&yd Z%Yn0da'da(da)e *e+j,d Z-e-dZ.edZ/eddZ0ddZ1ddZ2GdddZ3GdddZ4Gddde3eZ5Gddde5Z6Gddde4e5Z7Gddde4e6Z8Gd d!d!e5Z9Gd"d#d#e9Z:Gd$d%d%e5Z;Gd&d'd'e;Ze=e% d(Gd+d,d,e>Z?Gd-d.d.eZ@Gd/d0d0e@ZAGd1d2d2eZBGd3d4d4eBZCGd5d6d6e3eZDGd7d8d8eDZEGd9d:d:e3eZFGd;d<dd>eZHGd?d@d@eHZIGdAdBdBe3eZJGdCdDdDeJZKGdEdFdFeZLGdGdHdHeLZMGdIdJdJejNZOejPd dKGdLdMdMZQejPd dKGdNdOdOZRGdPdQdQZSGdRdSdSZTdS)T) annotationsN)datedatetimetime timedeltatimezone)cached_property)_support) OS_ENV_LOCKTZPATH_TEST_LOCKZoneInfoTestBase) import_modulelzmaZtzdataTFdatazzoneinfo_data.jsonhourscCs6ttjddatttdatttdddadS)NZzoneinfo)prefixZv2v1T)r) pathlibPathtempfilemkdtempTEMP_DIR ZoneInfoData ZONEINFO_JSON ZONEINFO_DATAZONEINFO_DATA_V1rrT/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_zoneinfo/test_zoneinfo.py setUpModule,sr cCsttdSN)shutilrmtreerrrrrtearDownModule6sr$cs4eZdZeddZeddZfddZZS)TzPathUserMixincCsdSr!rselfrrrtzpathDszTzPathUserMixin.tzpathcCsdS)NTrr&rrr block_tzdataHszTzPathUserMixin.block_tzdatacs`t:}||j|j|jtd||j Wdn1sH0Yt dS)N)r)lock) contextlib ExitStack enter_contexttzpath_contextr(r)r addCleanuppop_allclosesupersetUpr'stack __class__rrr3Ls .zTzPathUserMixin.setUp)__name__ __module__ __qualname__propertyr(r)r3 __classcell__rrr6rr%:s    r%cs,eZdZGdddeZfddZZS)DatetimeSubclassMixinc@seZdZeddZdS)z&DatetimeSubclassMixin.DatetimeSubclassc Cs,||j|j|j|j|j|j|j|j|jd S)N)tzinfofold) yearmonthdayhourminutesecond microsecondr>r?)clsdtrrr from_datetime`sz4DatetimeSubclassMixin.DatetimeSubclass.from_datetimeN)r8r9r: classmethodrIrrrrDatetimeSubclass_srKc#s@t|}|D]*}|j}|j|}tj||d}|VqdS)N) transition)r2load_transition_examplesrLrKrI dataclassesreplace)r'keyZtransition_examplesztrHZnew_dtZnew_ztr6rrrMns   z.DatetimeSubclassMixin.load_transition_examples)r8r9r:rrKrMr<rrr6rr=Zsr=cseZdZeZdZfddZeddZeddZ dd Z d d Z d d Z ddZ ddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)ZZS)* ZoneInfoTestZoneInfocst|jdSr!)r2r3klass clear_cacher&r6rrr3{s zZoneInfoTest.setUpcCstSr!rr&rrr zoneinfo_dataszZoneInfoTest.zoneinfo_datacCs |jjgSr!rWr(r&rrrr(szZoneInfoTest.tzpathcCs ||Sr!rTr'rPrrr zone_from_keyszZoneInfoTest.zone_from_keycCstSr!) ZoneDumpDatatransition_keysr&rrrzonesszZoneInfoTest.zonescCstSr!)r\fixed_offset_zonesr&rrrr_szZoneInfoTest.fixed_offset_zonescCs t|Sr!)r\rMrZrrrrMsz%ZoneInfoTest.load_transition_examplesc Cs|D]H}||*||}|t||Wdq1sF0Yq|jjd}|j|}t|d^}|jd|d0|j |}|t|t |Wdn1s0YWdn1s0YdS)Nrrbz Repr test) test_namepath) r^subTestr[ assertEqualstrrWkeys path_from_keyopenrT from_filerepr)r'rPzifile_key file_pathfzi_ffrrrtest_strs   0    zZoneInfoTest.test_strc Csdtt|}||}|j}|jdd |t||Wdn1sR0Y|jj d}|j |}t |d }|jj ||d}Wdn1s0Y|jdd |t||Wdn1s0Yt |d}|j |}Wdn1s0Y|jdd |t||Wdn1sV0YdS)Nzfrom key)namerr`rPzfrom file with keyzfrom file without key) nextiterr^rT class_namercZ assertRegexrjrWrfrgrhri) r'rPrkrurlrmrnroZzi_ff_nkrrr test_reprs .   .. ,zZoneInfoTest.test_reprc stt}fdd}dj|fdjj|fd|dff}|D]\}}}||}||j|Wdn1s0Y|d@t d|_Wdn1s0YWdqB1s0YqBdS)NcsBtj|d}j|WdS1s40YdS)Nr`)rhrWrgrTri)rPrnr&rrfrom_file_nokeysz8ZoneInfoTest.test_key_attribute..from_file_nokeyzPrimary constructorno_cacheriz : readonlyz Some/Value) rsrtr^rTrxrcrdrP assertRaisesAttributeError)r'rPrwZ constructorsmsg constructorexpectedrkrr&rtest_key_attributes    , zZoneInfoTest.test_key_attributec CsNgd}|D]<}||jj||Wdq 1s>0Yq dS)N)zEurasia/BadzoneZBZQzAmerica.Los_Angelesu🇨🇦uAmerica/NewYork)rymoduleZZoneInfoNotFoundErrorrTr'Zbad_keysZbad_keyrrr test_bad_keysszZoneInfoTest.test_bad_keysc CsJgd}|D]8}|t||Wdq 1s:0Yq dS)N)z/America/Los_AngeleszAmerica/Los_Angeles/z../zoneinfo/America/Los_AngeleszAmerica/../America/Los_AngeleszAmerica/./Los_Angeles)ry ValueErrorrTrrrrtest_bad_keys_pathss z ZoneInfoTest.test_bad_keys_pathsc CsVddg}|D]D}t|}|t|j|Wdq 1sF0Yq dS)NsAAAA3 )ioBytesIOryrrTri)r'Z bad_zonesZbad_zonefobjrrrtest_bad_zoness  zZoneInfoTest.test_bad_zonesc Cstt|}||}tdddtjdtftdddtftdddt ft dt fdt fdt fg}|D]h\}}|j |dD| || |Wdn1s0YWdqh1s0YqhdS)Nr r>rz 2019-01-01)val)rsrtr^r[rrutcrr TypeErrorrrcryfromutc)r'rPzone bad_valuesrexc_typerrrtest_fromutc_errorss    z ZoneInfoTest.test_fromutc_errorscCsN|d}tddd|d}||t||t||ddS)NUTCr r)rTrrd utcoffsetZEROdsttzname)r'rkrHrrrtest_utcs  zZoneInfoTest.test_utcc Csg}|D]P}||D]@}|||jtdd|jf|||jtdd|jfqq |D]\}}}|j|||db||}|j |d}| | |j || | |j || | |j |Wdqb1s0YqbdS)N)Zdays)rPrHoffsetr)r^rMappendrLr offset_before offset_afterrcr[rOrdrrr)r' test_casesrPZzone_transitionrHrtzirrrtest_unambiguouss,   zZoneInfoTest.test_unambiguousc CsNg}|D]}ggd}||D]N}|jr<|d}n|jrL|d}nd}q&|jtdd}||d|jf||d|jf|j}||d|jf||d|jf|jtdd}||d|jf||d|jf|j tdd}||d|jf||d|jf|j }||d|jf||d|jf|j tdd}||d|jf||d|jfq&| D]\}}|||f|fqq |D]\\}}}|j ||dv| |} |D]V\}} } |j | | d}||| j|||| j|||| j|qWdn1s<0YqdS) N)foldsgapsrrr secondsr)rPgrpr?r>)r^rMr?gap anomaly_startrrrr anomaly_enditemsrcr[rOrdrrr) r'rrPZtestsrQZ test_groupZno_peephole_optrHrrr?rrrrtest_folds_and_gaps4sL    z ZoneInfoTest.test_folds_and_gapsc Cs|D]}||}|j|d||D]j}|js:q.|j}|tdd}|tdd}||}||jd||f||}||jd||fq.Wdq1s0YqdS)Nrrr rr) r^r[rcrMr?transition_utcr astimezonerd) r'rPrkrQdt_utcZ dt_before_utcZ dt_after_utcZ dt_beforeZdt_afterrrrtest_folds_from_utcks    z ZoneInfoTest.test_folds_from_utcc Cs|D]|}||}tdddd|d}|j|d@||d||d||dWdq1sz0YqdSN r irrr)r^r[rrcassertIsrrr)r'rPrktrrrtest_time_variable_offset}s  z&ZoneInfoTest.test_time_variable_offsetc Cs|D]\}}||}tdddd|d}|j|dF|||j|||j|||jWdq1s0YqdSr)r_r[rrcrdrrr)r'rPrrkrrrrtest_time_fixed_offsets z#ZoneInfoTest.test_time_fixed_offset)r8r9r: py_zoneinforrur3r;rWr(r[r^r_rMrprvr~rrrrrrrrrrr<rrr6rrRws0      7 rRc@seZdZeZddZdS) CZoneInfoTestc Csdd}ddg}d}||}||D](}|jr(|jjtkr(|jj|d}qRq(dD]h}|rh||}n|}|j|d6| |}| |jd | |jd WdqV1s0YqVdS) Nc Ss@Gdddt|}||j|j|j|j|j|j|j|j|j d S)NcseZdZfddZZS)zLCZoneInfoTest.test_fold_mutate..to_subclass..SameAddSubclasscs|tdkr|St|SNr)rr2__add__)r'otherr6rrrs zTCZoneInfoTest.test_fold_mutate..to_subclass..SameAddSubclass.__add__)r8r9r:rr<rrr6rSameAddSubclasssrr) typer@rArBrCrDrErFr?r>)rHrrrr to_subclasssz3CZoneInfoTest.test_fold_mutate..to_subclassFT Europe/Londonr)FT)subclassr r) r[rMr?rrrrrOrcrrd) r'rrrPrkrQZexamplerHZ dt_fromutcrrrtest_fold_mutates    zCZoneInfoTest.test_fold_mutateN)r8r9r: c_zoneinforrrrrrrsrc@s eZdZdS)ZoneInfoDatetimeSubclassTestNr8r9r:rrrrrsrc@s eZdZdS)CZoneInfoDatetimeSubclassTestNrrrrrrsrcs(eZdZefddZddZZS)ZoneInfoSubclassTestcs4tGddd|j}d|_|j|_||_dS)Nc@s eZdZdS)z3ZoneInfoSubclassTest.setUpClass..ZISubclassNrrrrr ZISubclasssr)r2 setUpClassrTru parent_klass)rGrr6rrrs  zZoneInfoSubclassTest.setUpClasscCs@|d}|d}||||||j|||jdS)Nr)rrT assertIsNotZassertIsInstance)r'Zbase_objZsub_objrrrtest_subclass_own_caches    z,ZoneInfoSubclassTest.test_subclass_own_cache)r8r9r:rJrrr<rrr6rrs rc@seZdZeZdS)CZoneInfoSubclassTestNr8r9r:rrrrrrrsrc@s eZdZeddZddZdS)ZoneInfoV1TestcCstSr!)rr&rrrrWszZoneInfoV1Test.zoneinfo_dataccsZtddd}tdd}||}||}t|D]$}||jkrJ|kr0nq0|Vq0dS)Nr r)rrr\rMrL)r'rPZepochZ max_offset_32Zmin_dtZmax_dtrQrrrrMs  z'ZoneInfoV1Test.load_transition_examplesN)r8r9r:r;rWrMrrrrrs rc@seZdZeZdS)CZoneInfoV1TestNrrrrrrsrz4Skipping tzdata-specific tests: tzdata not installedc@s,eZdZeddZeddZddZdS) TZDataTestscCsgSr!rr&rrrr( szTZDataTests.tzpathcCsdS)NFrr&rrrr)szTZDataTests.block_tzdatacCs |j|dS)NrrrYrZrrrr[szTZDataTests.zone_from_keyN)r8r9r:r;r(r)r[rrrrrs    rc@seZdZeZdS) CTZDataTestsNrrrrrrsrc@sReZdZeZddZddZddZddZd d Z d d Z d dZ dddZ dS) WeirdZoneTestc Cstdtdddd }tdtdd }ttddd d ||g}d }|||}|j|}tddd d |d }tdddd |d }||f||ffD]l\} } |jd| dF|| | j || | j || | j Wdq1s0Yqtddd d |d tddd dddt j d ftddd d|d tddd dt j d fg} | D]h\} } |jd| d>| |}||| | t j }||| Wdn1s0YqRdS)NLMTr)rZminutesrSTDr[ ZSTD6r r local)rqrH r) ZoneOffsetrZoneTransitionrconstruct_zonerTrircrdrrrrrr)r'rr transitionsafterzfrkZdt0Zdt1rHrdtsZdt_localrZ dt_actualZ dt_utc_actualrrrtest_one_transition#s6  2    z!WeirdZoneTest.test_one_transitionc Cstdtt}ttddd||g}d}|||}|j|}tdddtddd tdddtd d dtd ddg}|D]r}|j|d }|j|dF| | |j | | |j | | |j Wdqx1s0YqxdS)NDSTrr zSTD0DST-1,0/0,J365/25lirrrrrrH) rONE_HrrrrTrirOrcrdrrr)r'rrrrrkrrHrrrtest_one_zone_dstLs$         zWeirdZoneTest.test_one_zone_dstc Cstdtt}tddtt}g}tddD]<}|tt|ddd|||tt|ddd||q*d }|||}|j |}td dd|ftdd d|ftddd|ftd dd|fg}|D]x\} } | j |d } |j | dF| | | j | | | j| | | jWdq1s20Yqtd|d } | d@|| d|| d|| dWdn1s0YdS)Nrrrrr ririrrrzTesting datetime.time)rrrrangerrrrrTrirOrcrdrrrrr) r'rrrr@rrrkcasesrHrrrrrtest_no_tz_strfs:     4  zWeirdZoneTest.test_no_tz_strc Cstdtttdttg}|D]}td||g}d}|||}|j|}tdddtdddtdddg}|D]t}|j|d}|j ||d F| | |j | | |j | | |j Wdqp1s0YqpqdS) Nrrrrr rrr)rrH)rrrrrrTrirrOrcrdrrr) r'offsetsrrrrrkrrHrrrtest_tz_before_onlys&         z!WeirdZoneTest.test_tz_before_onlycCsF|gd}|t|j|Wdn1s80YdS)Nr)rryrrTri)r'rrrrtest_empty_zones  zWeirdZoneTest.test_empty_zonec Cstdtdd}tdt}d||fttddd||d||fg}d }|||}|jj|d d }tj|ftj |ftd d d|ftddd|fg}|D]|\}} |j |d} |j d| | dF| | | j | | | j| | | jWdq1s0Yqtjtjtddftdd ddddtdddftd d dddddtdddddddftddddddtddddddftdddtdddftj tj fg} | D]B\} } | j |d} | j tjd}| ||| | | |qdS) Nr8rGMTlxr lZGMT0Africa/Abidjanrriwrrrrr)rqrHriij+4ik;?Brrr)rrrrrrrTriminmaxrOrcrdrrrrrr)r'rrrrrrkZ offset_casesdt_naiverrHZ utc_casesZnaive_dtZ naive_dt_utcrrrrtest_zone_very_large_timestampsD    4"   z,WeirdZoneTest.test_zone_very_large_timestampcCs$tdtt}ttddd||g}d}|||}|jj|dd}tddd|d}|dF|| |j || |j || |j Wdn1s0Yt d |d}|d F|| |j || |j || |j Wdn1s0YdS) Nrrr ZUTC0rrrrzdatetime.datetimerz datetime.time) rrrrrrTrircrdrrrr)r'rrrrrkrHrrrr$test_fixed_offset_phantom_transitions   0  z2WeirdZoneTest.test_fixed_offset_phantom_transitionNrc( Csg}g}g}ggg}ggg}ggg} d} d} | | g} dd} tt| |ddd}|D]}|\}}}t| D]\}\}}||}||}| |}|dur||kr|ksqlql||vr||||vr|||durl|||||qlqVt|}t|}t|}t}d}tt |d fD]}||}||}| |}||}t }g}|D]J} t | j }!t| j}"t|}#||!|"|#f|| jd d 7}qbt|}t|}$t|}%t|}&|d |d ||d|td||||%|$|&|tjd|%|g|R|tjd|%dg|R|D]}'|tjdg|'RqR|t||tj|dg|R|tj|dg|R|tjd|dg|R|dkr.|d||d |dq.|d|S)N)ir)llcSs6t|tr|S|jr$t|j}nd}||j|jfSr!) isinstancetuplerLintrZ timestamprr)rQ trans_timerrr zt_as_tuples  z1WeirdZoneTest.construct_zone..zt_as_tuplecSs|dSrr)xrrr+rz.WeirdZoneTest.construct_zone..rr)lqrasciiTZifs%d >6l>Bz>lbbbrr )sortedmap enumeraterindexlenrrrr bytearrayrrZ total_secondsboolrrencodebyteswritestructpackseek)(r'rrversionZisutcZisstdZ leap_secondsZ offset_listsZtrans_times_listsZtrans_idx_listsZv1_rangeZv2_rangeZrangesrrQrrrvZdt_minZdt_maxrZ trans_timesZ trans_idxisutcntisstdcntleapcntzonefileZ time_typesZ time_typeZabbrstrZttinfosrZutcoffZisdstZabbrindtypecnttimecntcharcntZttinforrrr s       "     zWeirdZoneTest.construct_zone)Nr) r8r9r:rrrrrrrr r rrrrrr s)+$=rc@seZdZeZdS)CWeirdZoneTestNrrrrrr4sr4csheZdZeZdZdZdZefddZ eddZ dd Z d d Z d d Z ddZeddZZS) TZStrTestrr rcst||dSr!)r2r_populate_test_casespopulate_tzstr_headerrGr6rrrs zTZStrTest.setUpClassc CsTt}tdD]6}|d7}|d7}|d7}|tddddddd7}qt||_dS)Nrr3rrr)r#rr(r)r& _tzif_header)rGout_rrrr7s zTZStrTest.populate_tzstr_headercCsVt|j}|dd|d||d|d|d|jj||dS)Nrrrrrr)rrr:r*r'r%rTri)r'tzstrr0rrrzone_from_tzstrs     zTZStrTest.zone_from_tzstrc Cs|jD]\}}|j|d||}Wdn1s>0Y|D]|\}}}|j|d}|j|||dF|||j|||j|||jWdqL1s0YqLq dS)Nr=r)r=rHr) rrrcr>rOrdrrr)r'r=rrkr rr<rHrrrtest_tzstr_localizeds( zTZStrTest.test_tzstr_localizedc Cs|jD]\}}|j|d||}Wdn1s>0Y|D]\}}}||jkrbqL||jjtjd}| |}|j|d} | || ||j kr| |j |j |n| |j d| tj}| ||qLq dS)Nr?rr) rrrcr>GAPrrOrrrrdFOLDr?) r'r=rrkr rZdt_typerZdt_actZdt_exprrrtest_tzstr_from_utcs"(       zTZStrTest.test_tzstr_from_utcc Csgd}|D]p}|j|dPt|}|t|||Wdn1sT0YWdq 1sr0Yq dS)N)ZPST8PDT+11zGMT,M3.2.0/2,M11.1.0/3zGMT0+11,M3.2.0/2,M11.1.0/3zPST8PDT,M3.2.0/2zSTD+25zSTD-25zSTD+374zSTD+374DST,M3.2.0/2,M11.1.0/3zSTD+23DST+25,M3.2.0/2,M11.1.0/3zSTD-23DST-25,M3.2.0/2,M11.1.0/3zAAA4BBB,M1443339,M11.1.0/3zAAA4BBB,M3.2.0/2,0349309483959czAAA4BBB,M13.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M13.1.1/2zAAA4BBB,M0.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M0.1.1/2zAAA4BBB,M1.6.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M1.6.1/2zAAA4BBB,M1.1.7/2,M2.1.1/2zAAA4BBB,M1.1.1/2,M2.1.7/2zAAA4BBB,-1/2,20/2zAAA4BBB,1/2,-1/2zAAA4BBB,367,20/2zAAA4BBB,1/2,367/2zAAA4BBB,J0/2,J20/2zAAA4BBB,J20/2,J366/2r?)rcreescapeZassertRaisesRegexrr>)r'Zinvalid_tzstrsZ invalid_tzstrZ tzstr_regexrrrtest_invalid_tzstrs % zTZStrTest.test_invalid_tzstrcsfdd}|j|j|ji|fdd}|fdd}|fdd}|fdd}|fdd}|fd d}|fd d}|fd d}|fd d}|fd d}|_dS)Ncst}|dSr!)r")rnZprev_len)rrrcallsz,TZStrTest._populate_test_cases..callcsd}tdtddt}tdtddt}tddd |ftddd dd |ftddd d d d d|ftddd d d dd|ftddd d dd d|ftddd d ddd|ftddd|ftddddd dd|ftddddd d d|ftddddd dd|ftddddd |ftdddd d d d|ftdddd d dd|ftddddd dd|ftddddd d d|ftddddd dd|ff|<dS)Nz EST5EDT,M3.2.0/4:00,M11.1.0/3:00ESTrEDTrrrrrrrr?r rrrrrrrrr)r=rIrKrBrANORMALrrr_add+s(z,TZStrTest._populate_test_cases.._addcs(d}tdtt}tdtt}tddd|ftddddd |ftdddd d|ftdd d |ftdd d dd dd|ftdd d dddd|ftdd d d ddd|ftddddd |ftdddd d|ftdd ddd dd|ftdd ddddd|ftdd dd ddd|ff |<dS)Nz"GMT0BST-1,M3.5.0/1:00,M10.5.0/2:00rBSTrrrrrrrr rMrrrrr)r=rrRrOrrrQGs   csjd}tdtddt}tdtddt}tddd |ftddd d d |ftddd d d d d |ftddd dddd |ftddd dd dd |ftddd ddd d |ftddd dd d d |ftddd dddd |ftddd ddd d |ftdddd|ftddd d d |ftddd dddd |ftddd ddd d |ftddd dd|ff|<dS)NzAEST-10AEDT,M10.1.0/2,M4.1.0/3AESTrrAEDTrrrrrr rrMrrrrN)r=rYrZrOrrrQ_s$csBd}tdtt }tdtt}tddd|ftddddd |ftdddd d|ftdd d |ftdd d dd dd|ftdd d dddd|ftdd d dddd|ftdd d d ddd|ftddddd |ftdddd d|ftdd ddd dd|ftdd ddddd|ftdd dd ddd|ff |<dS)NzIST-1GMT0,M10.5.0,M3.5.0/1rISTrrrSrrrrrrTrUr rMrrVrWrX)r=rr\)rBrPrrrrQxs" cs,d}tdddtdtddff|<dS)Nz<+11>-11rr rDrr)rrrr?rPrrrrQs  csRd}tdtdd}tdtddt}tddd |ftdd d |ff|<dS) Nz<-04>4<-03>,M9.1.6/24,M4.1.6/24-04rLr-03rr[r rrrrr)r=ZM04ZM03r]rrrQs csd}tdtddt}tddd|ftddd|ftddd d d d d |ftd dd|ftd dd|ftd dd|ftd dd d d d d |ftddd|ftddd|ftddd d d d d |ff |<dS)NzEST5EDT,0/0,J365/25rKrLrrr rrrrrrrri` ra)r=rKr]rrrQscsd}tdtdd}tdtddt}tddd|ftdd d |ftdd dd d |ftdd dddd|ftdd dddd|ftdd dd|ftdd ddd |ftdd dd dd|ftdd dd dd|ftdd dd|ftddddd d d|ftddd|ftdd d|ftdd dd d |ftdd dddd|ftdd dddd|ftdd dd|ftdd ddd |ftdd dd dd|ftdd dd dd|ftdd dd|ftddddd d d|ff|<dS)NzAAA3BBB,J60/12,J305/12AAAr`rBBBrr rrrrrrrM rrrrrrVrar=rbrcrOrrrQs4csd}tdtdd}tdtddt}tddd |ftddd d d d |ftddd d dd|ftddd d dd|ftddd d|ftdddd |ftdddd dd|ftdddd dd|ftdddd|ff |<dS)Nz <-03>3<-02>,M3.5.0/-2,M10.5.0/-1r_r`rz-02rdrrrUrerrrMr rrra)r=N03ZN02rOrrrQscsd}tdtdd}tdtddt}tddd d d |ftddd d d d d |ftddd d d d d |ftddd dd |ftdd dd ddd|ftdd dd ddd d |ftdd dd ddd d |ftdd dddd|ff|<dS)Nz%AAA3BBB,M3.2.0/01:30,M11.1.0/02:15:45rbr`rrcrdrrr rrSrMrrr,r-rargrOrrrQs)rPrBrAr)rGrHrQrrOrr6 s4    zTZStrTest._populate_test_cases)r8r9r:rrrPrBrArJrr7r>r@rCrGr6r<rrr6rr5s  .r5c@seZdZeZdS) CTZStrTestNrrrrrro srocspeZdZeZfddZeddZeddZddZ d d Z d d Z d dZ ddZ ddZddZZS)ZoneInfoCacheTestcs|jtdSr!)rTrUr2r3r&r6rrr3s zZoneInfoCacheTest.setUpcCstSr!rVr&rrrrWszZoneInfoCacheTest.zoneinfo_datacCs |jjgSr!rXr&rrrr(szZoneInfoCacheTest.tzpathcCs||d|ddSNAmerica/Los_Angeles)rrTr&rrrtest_ephemeral_zones sz&ZoneInfoCacheTest.test_ephemeral_zonescCs$|d}|d}|||dS)NAustralia/Sydney)rTrr'Ztz0Ztz1rrrtest_strong_refs%s  z"ZoneInfoCacheTest.test_strong_refscCs&|d}|jd}|||dS)N Europe/Lisbon)rTrxrrurrr test_no_cache+s  zZoneInfoCacheTest.test_no_cachecCsN|d}|g|d}Wdn1s40Y|||dSrq)rTr.r)r'Zzi0Zzi1rrrtest_cache_reset_tzpath2s  (z)ZoneInfoCacheTest.test_cache_reset_tzpathcCs2|d}|jjdd|d}|||dS)NrrZ only_keys)rTrUr)r'la0la1rrrtest_clear_cache_explicit_none?s  z0ZoneInfoCacheTest.test_clear_cache_explicit_nonecCsT|d}|d}|jjdgd|d}|d}||||||dS)Nrr Europe/DublinrzrTrUrr)r'r{dub0r|dub1rrrtest_clear_cache_one_keyFs     z*ZoneInfoCacheTest.test_clear_cache_one_keycCsv|d}|d}|d}|jjddgd|d}|d}|d}|||||||||dS)Nrrr~ Asia/Tokyorzr)r'r{rZtok0r|rZtok1rrrtest_clear_cache_two_keysSs        z+ZoneInfoCacheTest.test_clear_cache_two_keys)r8r9r:rrr3r;rWr(rsrvrxryr}rrr<rrr6rrps     rpc@seZdZeZdS)CZoneInfoCacheTestNrrrrrresrcs`eZdZeZfddZeddZeddZddZ d d Z d d Z d dZ ddZ ZS)ZoneInfoPickleTestcsb|jt2}|t|j|| j Wdn1sJ0Yt dSr!) rTrUr+r,r- test_supportZset_zoneinfo_modulerr/r0r1r2r3r4r6rrr3ls   .zZoneInfoPickleTest.setUpcCstSr!rVr&rrrrWusz ZoneInfoPickleTest.zoneinfo_datacCs |jjgSr!rXr&rrrr(yszZoneInfoPickleTest.tzpathc CsttjdD]}|j|d|d}tj||d}t|}|jdd|||Wdn1sp0Yt|}|jdd|||Wdn1s0YWdq1s0YqdS)Nr protor~protocolzIs non-pickled ZoneInfotestzIs unpickled ZoneInfo)rpickleHIGHEST_PROTOCOLrcrTdumpsloadsrr'rZzi_inpklzi_rtzi_rt2rrrtest_cache_hit}s  * z!ZoneInfoPickleTest.test_cache_hitc CsttjdD]t}|j|dT|d}tj||d}~|jt|}t|}|||Wdq1sx0YqdS)Nr rr~r) rrrrcrTrrUrrrrrrtest_cache_misss    z"ZoneInfoPickleTest.test_cache_missc Cs(ttjdD]}|j|d|jd}tj||d}t|}|jdd|||Wdn1st0Yt|}|jdd|||Wdn1s0Y|d}|jdd|||Wdn1s0YWdq1s0YqdS) Nr rr~rzNot the pickled objectrzNot a second unpickled objectzNot a cached object) rrrrcrTrxrrr)r'rZ zi_no_cacherrrZzi_cacherrrrxs  * * z ZoneInfoPickleTest.test_no_cachec Csd}t|j|d6}|j|}|d|jj||d}Wdn1sR0Y|df|dfg}|D]\}}ttjdD]l}|j ||dJ| tj tj ||d Wdn1s0YWdq1s0YqqpdS) Nr~r`rrrzZoneInfo with keyzZoneInfo without keyr )rarr) rhrWrgrTrir*rrrrcry PicklingErrorr) r'rPrnZzi_nokeyZzi_keyrrkrarrrrtest_from_files  . z!ZoneInfoPickleTest.test_from_filec Cs@ttjdD]*}|j|dd}||}tj||d}t|}|||t|j |d }|jj ||d}Wdn1s0Ytj||d}t|} ||| | tj tj||dWdn1s0Ytj||d} t| } ||| Wdq1s00YqdS)Nr rr~rr`rr)rrrrcrTrrrrhrWrgriryr) r'rrPrkZpkl_0Zzi_rt_0rnroZpkl_1Zzi_rt_1Zpkl_2Zzi_rt_2rrrtest_pickle_after_from_files"   .  , z.ZoneInfoPickleTest.test_pickle_after_from_file)r8r9r:rrr3r;rWr(rrrxrrr<rrr6rris    rc@seZdZeZdS)CZoneInfoPickleTestNrrrrrrsrc@s,eZdZeZeddZddZddZdS)CallingConventionTestcCstSr!rVr&rrrrWsz#CallingConventionTest.zoneinfo_datac Csnt|jddH}|t|jj|dWdn1sB0YWdn1s`0YdS)Nrr`)r)rhrWrgryrrTri)r'rnrrrrs z$CallingConventionTest.test_from_filecCs<|t|jdgWdn1s.0YdSNr)ryrrTrUr&rrrtest_clear_caches z&CallingConventionTest.test_clear_cacheN) r8r9r:rrr;rWrrrrrrrs  rc@seZdZeZdS)CCallingConventionTestNrrrrrrsrc@sReZdZeZeejddZddZ ddZ ddZ d d Z d d Z d dZdS) TzPathTestc csd}zbt.tj|d}|tj|<dVWdn1s>0YW|dur\tj|=q|tj|<n|durztj|=n |tj|<0dS)NZ PYTHONTZPATH)r osenvironget)valuepath_varZold_envrrrpython_tzpath_contexts &   z TzPathTest.python_tzpath_contextc Csdgfddgfdtjdddgfg}|D]|\}}||Z|j|d.|j|jj}|||Wdn1s~0YWdq*1s0Yq*dS)Nrz /etc/zoneinfo/a/b/cz/d/e/fr()rpathseprrcr reset_tzpathTZPATHassertSequenceEqual)r'Z new_pathsZ new_path_varZexpected_resultr(rrrtest_env_variables   zTzPathTest.test_env_variablec Csddgddgddgddgddgddgg}|D]\}}tj|}|||jd |d H||jj|jWdn1s0YWdn1s0Y|jj }|jd |d | ||Wdn1s0YWdq,1s 0Yq,dS) Npath/to/somewherer/usr/share/zoneinfor)r../relative/pathrrrrrrrwarning)rZfiltered) rrjoinrrcZ assertWarnsrZInvalidTZPathWarningrrr)r'r input_pathsZexpected_pathsrr(rrr test_env_variable_relative_pathss,   Fz+TzPathTest.test_env_variable_relative_pathscCs$|jjdgd||jjddS)Nrto)r)rrrrr&rrrtest_reset_tzpath_kwarg;sz"TzPathTest.test_reset_tzpath_kwargc Cszgd}|D]h}|j|dH|t|jj|dWdn1sL0YWdq 1sj0Yq dS)N)rrrrrr)rr)rcryrrr)r'rrrrr test_reset_tzpath_relative_paths@s  z+TzPathTest.test_reset_tzpath_relative_pathsc Csxgd}|D]f}|j|dF|t|j|Wdn1sJ0YWdq 1sh0Yq dS)N)z!/etc/zoneinfo:/usr/share/zoneinfos!/etc/zoneinfo:/usr/share/zoneinfor)r)rcryrrr)r'rZ bad_valuerrrtest_tzpath_type_errorNs  z!TzPathTest.test_tzpath_type_errorcCsddg}dg}|||jj}Wdn1s60Y|||jj}Wdn1sh0Y||||||dS)Nz/onez/twoz/three)r.rrr)r'Ztzpath_0Ztzpath_1Zquery_0Zquery_1rrrtest_tzpath_attributeZs & & z TzPathTest.test_tzpath_attributeN)r8r9r:rr staticmethodr+contextmanagerrrrrrrrrrrrrs $ rc@seZdZeZdS) CTzPathTestNrrrrrrhsrc@sheZdZeZeddZeddZddZ ddZ d d Z d d Z d dZ ddZddZddZdS) TestModulecCstSr!rVr&rrrrWoszTestModule.zoneinfo_datacCsB|jd}t|d}|WdS1s40YdS)Nrr`)rWrgrhread)r'Z zone_filernrrr _UTC_bytesss  zTestModule._UTC_bytescCstj|st|d|dd^}}|rFtjtj||ddtj||}t|d}||j Wdn1s0YdS)Nz does not exist./r T)exist_okwb) rrbexistsFileNotFoundErrorrsplitmakedirsrrhr'r)r'rPtz_rootroot_dirtailZ zonefile_pathrnrrr touch_zoneys  zTestModule.touch_zonecCs6|t|jjWdn1s(0YdSr!)ryrzrZ NOATTRIBUTEr&rrrtest_getattr_errors zTestModule.test_getattr_errorcCs0t|jj}tt|j}||}||dSr!)setr__all__dir assertFalse)r'Zmodule_all_setZmodule_dir_set differencerrrtest_dir_contains_alls z TestModule.test_dir_contains_allcCs"t|j}t|}|||dSr!)rrrZassertCountEqual)r'Z module_dirZ module_uniquerrrtest_dir_uniques zTestModule.test_dir_uniquecCsl||jjgH||jj|j}t|jj}||@}|||Wdn1s^0YdSr!) r.rWr( assertTruerfravailable_timezonesrrd)r'available_keysZ zoneinfo_keysunionrrrtest_available_timezoness   z#TestModule.test_available_timezonesc Cszt^}|d|||g&|j}|d|Wdn1sN0YWdn1sl0YdS)NzMars/Olympus_Mons)rTemporaryDirectoryrr.rrZassertIn)r'tdrrrr"test_available_timezones_weirdzones    z-TestModule.test_available_timezones_weirdzonec Cs.hd}t|}dd|D}dd|D}d|fd||fd||fd|||fg}t}|D]\}}tj||} t| |D]} || | q|| gP| |&|j } | | |Wdn1s0YWdqf1s0YqfWdn1s 0YdS) N>rrrtAmerica/Santiagorrz Europe/ParisrzAmerica/Indiana/IndianapoliscSsg|]}d|qS)zposix/r.0rrrr rz5TestModule.test_folder_exclusions..cSsg|]}d|qS)zright/rrrrrrr base_treeZbase_and_posixZbase_and_rightZ all_trees) listrrrrbrmkdirrr.rcrrrd) r'r}rZ posix_treeZ right_treerrZ case_nametreerrPactualrrrtest_folder_exclusionss&        z!TestModule.test_folder_exclusionsc Csddh}t|dg}th}|D]}|||q$||g&|j}|||Wdn1sn0YWdn1s0YdS)NzAmerica/New_YorkrZ posixrules)rrrrr.rrrd)r'r}rrrPrrrrtest_exclude_posixruless  z"TestModule.test_exclude_posixrulesN)r8r9r:rrr;rWrrrrrrrrrrrrrrrls     $rc@seZdZeZdS) CTestModuleNrrrrrrsrc@seZdZddZddZdS)ExtensionBuiltTestcCs(|ttjd|ttjddS)NZ _weak_cache)rhasattrrrSrrr&rrrtest_cache_locationsz&ExtensionBuiltTest.test_cache_locationcCs0ddl}||tj||tjdSr)gcrZ is_trackedrrSrr)r'rrrrtest_gc_trackedsz"ExtensionBuiltTest.test_gc_trackedN)r8r9r:rrrrrrrs r)frozenc@s*eZdZUded<ded<eZded<dS)rrerrrrN)r8r9r:__annotations__rrrrrrrs rc@sneZdZUded<ded<ded<eddZedd Zed d Zed d ZeddZ eddZ dS)rrrLrrrcCs|j|jjjtjdS)Nr)rLrrrOrrr&rrrrszZoneTransition.transition_utccCs|jj|jjkSr!rrrr&rrrr?szZoneTransition.foldcCs|jj|jjkSr!rr&rrrrszZoneTransition.gapcCs|jj|jjSr!)rrrr&rrrdelta szZoneTransition.deltacCs|jr|j|jS|jSdSr!r?rLrr&rrrr$s zZoneTransition.anomaly_startcCs|js|j|jS|jSdSr!rr&rrrr+s zZoneTransition.anomaly_endN) r8r9r:rr;rr?rrrrrrrrr s      rc@s6eZdZd ddZddZddZdd Zd d Zd S)rFcCs&t||_g|_||_||dSr!)rrr(rfr_populate_tzpath)r' source_jsonr(rrrr__init__4s zZoneInfoData.__init__cCs |j|Sr!rrZrrrrg:szZoneInfoData.path_from_keyc Cst|d}t|}Wdn1s*0Y|d}|D]\}}|j|||}|jrt||}n|}| |} | j j dddt| d}| |WdqD1s0YqDdS)Nr`rT)rparentsr) rhjsonloadrrfr _decode_textr_convert_to_v1rgparentrr') r'rrnZ zoneinfo_dictrWrPrraw_datarZ destinationrrrr=s (     zZoneInfoData._populate_tzpathcCs&dttj|}t|}t|S)Nr)rrrer%base64Z b85decoder decompress)r'contentsrZdecodedrrrrQs zZoneInfoData._decode_textc Cs|t|dd}d}|d}td|||\}}}}} } |d| d| |d||} | |7} d|d| } | S) Nrr[rjrrrsTZif)rr(unpack) r'rr+Z header_startZ header_endr-r.r/r2r1r3 file_sizer;rrrrWs* zZoneInfoData._convert_to_v1N)F)r8r9r:rrgrrrrrrrr3s  rc@s\eZdZeddZeddZeddZeddZed d Zed d Z d Z d Z d S)r\cCs |Sr!) _get_zonedumprfr8rrrr]uszZoneDumpData.transition_keyscCs ||Sr!)r)rGrPrrrrMysz%ZoneDumpData.load_transition_examplescCs|js||jSr!)_FIXED_OFFSET_ZONES_populate_fixed_offsetsrr8rrrr_}szZoneDumpData.fixed_offset_zonescCs|js||jSr!)_ZONEDUMP_DATA_populate_zonedump_datar8rrrrszZoneDumpData._get_zonedumpcCsdtdtti|_dSr)rrr r8rrrr s z$ZoneDumpData._populate_fixed_offsetsc Csdd}dd}dd}dd}d d }d d }d d}dd}dd} dd} ||||||||| | d |_dS)NcSs0tdtdd}tdt}ttddd||gS)Nrrrrrr rrrrr)rrrrr_Africa_Abidjans z=ZoneDumpData._populate_zonedump_data.._Africa_Abidjanc Sstdtt}tdtt}tdtt }tdtt}ttdddd||ttdddd||ttdd d d||ttdd d d||ttd ddd||ttd d dd||gS)Nz+00z+01irrWrr[rfrrrerr)rrrrr)ZP00_sZP01_dZP00_dZP01_srrr_Africa_Casablancas   z@ZoneDumpData._populate_zonedump_data.._Africa_CasablancacSs>tdtddt}tdtddt}tdtddt}td tddt}td tddt}ttd d d ddd||ttdddd||ttdddd||ttdddd||ttdddd||ttdddd||ttdddd||ttdddd||ttdd dd||ttddd d||ttdd d!d||g S)"Nri&rPSTirPDTiPWTPPTrrrrrri~rrrrUirirrrrSir i rfrrrrrrr)rrrrrrrr_America_Los_Angeless"zBZoneDumpData._populate_zonedump_data.._America_Los_Angelesc Sstdtddt}tdtddt}tdtddt}tdtddt}td td dt}ttd d d ||ttd d d||ttddd ||ttddd||ttddd||ttddd||ttddd||gS)NrirSMTz-05ir^ir_iibr ivr|rirrSrrrrrrr)rrZN05ZN04rkrrr_America_Santiagosz?ZoneDumpData._populate_zonedump_data.._America_SantiagocSsbtdtddt}tdtddt}ttddd||ttdd d d ||ttd d d d ||gS) NJSTi~rJDT頌ir[rrrr ir)rrrrr _Asia_Tokyos z9ZoneDumpData._populate_zonedump_data.._Asia_Tokyoc Sstdtddt}tdtddt}tdtddt}ttdd d ||ttd d d d d ||ttd d dd ||ttddd d ||ttdddd ||ttddd d ||ttdddd ||gS)NričrrYrrZiigrr }rrrWrlrrrrr)rrYrZrrr_Australia_Sydneysz?ZoneDumpData._populate_zonedump_data.._Australia_Sydneyc Ss tdtddt}tdtddt}tdtddt}tdtt}td tt}tdtt }tdtt}ttd d d d ||ttdddd ||ttdddd||ttddd d ||ttdddd||ttdddd ||ttdddd||ttdddd ||gS)Nri$rDMTir\irrRiXrrrrr[rhrr rrrirUrSi rTr)rr ZIST_0ZGMT_0rRZGMT_1ZIST_1rrr_Europe_Dublins    z._Europe_Dublinc Sstdtt}tdtt}tdtt}tdtddt}ttddd d ||ttdd d d ||ttdddd ||ttdd dd||ttdddd ||ttddd d ||gS)NWETWESTCETCESTi rirrVr rrUrirerTrrr)rrrrrr)r"r#r$r%rrr_Europe_Lisbons   z._Europe_Lisbonc Sstdtddt}tdtt}tdtt}ttddd||ttd d d d||ttd d d d||ttdd dd||ttdd dd||gS)NrirrrRi7rr irrUrrSrirVrWr)rrrRrrr_Europe_Londons  z._Europe_LondoncSstdtddt}tdtddt}tdtddt}tdtd dt}ttd d d ||ttd d d ||ttddd||gS)Nrilrz-1040ijz-10i`sz+14iimr irirrr )rZN1040ZN10ZP14rrr_Pacific_Kiritimati!szAZoneDumpData._populate_zonedump_data.._Pacific_Kiritimati) rzAfrica/Casablancarrrrtrr~rwrzPacific/Kiritimati)r ) rGrrrrrrr!r&r'r(rrrr s*  z$ZoneDumpData._populate_zonedump_dataN) r8r9r:rJr]rMr_rr r r r rrrrr\ts      ,r\)UZ __future__rrr+rNimportlib.metadata importlibrrrrrrEr"r(rZunittestrrrrr functoolsrrr rr r r Z test.supportrrZ get_modulesrrmetadataZHAS_TZDATA_PKGZPackageNotFoundErrorrrrr__file__rZDATA_DIRrrrr r$r%r=rRrrrrrrrZskipIfrrrr4r5rorprrrrrrrrrZTestCaserZ dataclassrrrr\rrrrs          6fTrr{  (A