m {Ec!@s dZdZeZeZeZdddddddgZd kZd kZd kZ d k Z d k l Z l Z d Zd Zeid ZeiddZdei fdYZeZZdZee_dZee_hZdZdei fdYZhdZee_dZedjo enddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgZddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRddddddddddddSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdddOdPdQdRdSdTdUdVdWdXdYdddddddddddddddddddddddddddd d d d d ddddddddddZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddd d!d"d#d$d%d&d'd(dddd)d*d+d,d-ddddddddddddddddddddddddddddddddddddddddd.d/d0d1d2d3d4ddddddddddddddd5d6d7d8d9g!Z d S(:s datetime.tzinfo timezone definitions generated from the Olson timezone database: ftp://elsie.nci.nih.gov/pub/tz*.tar.gz See the datetime section of the Python Library Reference for information on how to use these modules. t2006jttimezonet all_timezonestcommon_timezonestutctAmbiguousTimeErrortcountry_timezonest_N(sAmbiguousTimeErrors unpicklercCst|}|idjotSndg|id}di|}yt|t t }Wnt j ot |nX|}x!|dD]}t||}qWt||d}t|ttjpt|S(s Return a datetime.tzinfo implementation for the given timezone >>> from datetime import datetime, timedelta >>> utc = timezone('UTC') >>> eastern = timezone('US/Eastern') >>> eastern.zone 'US/Eastern' >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) >>> loc_dt = utc_dt.astimezone(eastern) >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' >>> loc_dt.strftime(fmt) '2002-10-27 01:00:00 EST (-0500)' >>> (loc_dt - timedelta(minutes=10)).strftime(fmt) '2002-10-27 00:50:00 EST (-0500)' >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt) '2002-10-27 01:50:00 EDT (-0400)' >>> (loc_dt + timedelta(minutes=10)).strftime(fmt) '2002-10-27 01:10:00 EST (-0500)' tUTCtzoneinfot/t.iiN(t _munge_zonetzonetupperRtsplitt zone_bitstjoint module_namet __import__tglobalstlocalstmodulet ImportErrortKeyErrortrvtbittgetattrttypetsystAssertionError(R RRRRR((t,/data/zmath/zope/lib/python/pytz/__init__.pyR)s"   cCs|iddiddS(sK Convert a zone into a string suitable for use as a Python identifier t+t_plus_t-t_minus_N(R treplace(R ((RR RsithoursiRcBsbtZdZdZdZdZdZdZedZ edZ dZ d Z RS( sUTC Identical to the reference UTC implementation given in Python docs except that it unpickles using the single module global instance defined beneath this class declaration. Also contains extra attributes and methods to match other pytz tzinfo instances. RcCstS(N(tZERO(tselftdt((Rt utcoffsethscCsdS(NR((R'R(((RttznamekscCstS(N(R&(R'R(((RtdstnscCs tffS(N(t_UTC(R'((Rt __reduce__qscCs-|idj o tdn|id|S(s Convert naive time to local times*Not naive datetime (tzinfo is already set)ttzinfoN(R(R.tNonet ValueErrorR$R'(R'R(tis_dst((Rtlocalizets cCs-|idjo tdn|id|S(s6Correct the timezone information on the given datetimesNaive time - no tzinfo setR.N(R(R.R/R0R$R'(R'R(R1((Rt normalizezs cCsdS(Ns((R'((Rt__repr__scCsdS(NR((R'((Rt__str__s( t__name__t __module__t__doc__R R)R*R+R-tFalseR2R3R4R5(((RR\s        cCstS(sWFactory function for utc unpickling. Makes sure that unpickling a utc instance always returns the same module global. These examples belong in the UTC class above, but it is obscured; or in the README.txt, but we are not depending on Python 2.4 so integrating the README.txt examples with the unit tests is not trivial. >>> import datetime, pickle >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc) >>> naive = dt.replace(tzinfo=None) >>> p = pickle.dumps(dt, 1) >>> naive_p = pickle.dumps(naive, 1) >>> len(p), len(naive_p), len(p) - len(naive_p) (60, 43, 17) >>> new = pickle.loads(p) >>> new == dt True >>> new is dt False >>> new.tzinfo is dt.tzinfo True >>> utc is UTC is timezone('UTC') True >>> utc is timezone('GMT') False N(R(((RR,scGs t|S(sFactory function for unpickling pytz tzinfo instances. Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle by shortening the path. N(t unpicklertargs(R;((Rt_pscCs|i}tpy dkl}|td}Wn:tj o.tt i i t i i t d}nXx|D]t}|idoqwn|iddd \}}}yt|i|Wqwtj o|gt|>> country_timezones('ch') ['Europe/Zurich'] >>> country_timezones('CH') ['Europe/Zurich'] >>> country_timezones('XXX') Traceback (most recent call last): ... KeyError: 'XXX' (sresource_streamszone.tabt#iiN(t iso3166_codeRt_country_timezones_cachet pkg_resourcestresource_streamR6tzone_tabRtopentostpathRtdirnamet__file__tlinet startswithRR/tcodet coordinatesR tappendR(R>RJR RARKRHRB((RRs$   ,t _FixedOffsetcBs\tZdZdZdZdZdZdZdZ e dZ e dZ RS( NcCsHt|djotd|n||_tid||_dS(Nisabsolute offset is too largetminutes(tabsRNR0R't_minutestdatetimet timedeltat_offset(R'RN((Rt__init__s cCs|iS(N(R'RS(R'R(((RR)scCst|iffS(N(t FixedOffsetR'RP(R'((RR-scCsdS(N(R/(R'R(((RR+scCsdS(N(R/(R'R(((RR*scCs d|iS(Nspytz.FixedOffset(%d)(R'RP(R'((RR4scCs-|idj o tdn|id|S(s Convert naive time to local times*Not naive datetime (tzinfo is already set)R.N(R(R.R/R0R$R'(R'R(R1((RR2s cCs-|idjo tdn|id|S(s6Correct the timezone information on the given datetimesNaive time - no tzinfo setR.N(R(R.R/R0R$R'(R'R(R1((RR3s ( R6R7R/R RTR)R-R+R*R4R9R2R3(((RRMs       cCsQ|djotSn|i|}|djo|i|t|}n|S(s7return a fixed-offset timezone based off a number of minutes. >>> one = FixedOffset(-330) >>> one pytz.FixedOffset(-330) >>> one.utcoffset(datetime.datetime.now()) datetime.timedelta(-1, 66600) >>> two = FixedOffset(1380) >>> two pytz.FixedOffset(1380) >>> two.utcoffset(datetime.datetime.now()) datetime.timedelta(0, 82800) The datetime.timedelta must be between the range of -1 and 1 day, non-inclusive. >>> FixedOffset(1440) Traceback (most recent call last): ... ValueError: ('absolute offset is too large', 1440) >>> FixedOffset(-1440) Traceback (most recent call last): ... ValueError: ('absolute offset is too large', -1440) An offset of 0 is special-cased to return UTC. >>> FixedOffset(0) is UTC True There should always be only one instance of a FixedOffset per timedelta. This should be true for multiple creation calls. >>> FixedOffset(-330) is one True >>> FixedOffset(1380) is two True It should also be true for pickling. >>> import pickle >>> pickle.loads(pickle.dumps(one)) is one True >>> pickle.loads(pickle.dumps(two)) is two True iN(toffsetRt_tzinfostgettinfoR/t setdefaultRM(RVRWRY((RRUs1  cCsGdk}dk}dk}|iid|idk}|i|S(Ni(tdoctestRDRREtinserttpardirtpytzttestmod(RR^RDR[((Rt_test>s t__main__sAfrica/Abidjans Africa/AccrasAfrica/Addis_AbabasAfrica/Algierss Africa/Asmeras Africa/Bamakos Africa/Banguis Africa/Banjuls Africa/BissausAfrica/BlantyresAfrica/BrazzavillesAfrica/Bujumburas Africa/CairosAfrica/Casablancas Africa/CeutasAfrica/Conakrys Africa/DakarsAfrica/Dar_es_SalaamsAfrica/Djiboutis Africa/DoualasAfrica/El_AaiunsAfrica/FreetownsAfrica/Gaborones Africa/HararesAfrica/JohannesburgsAfrica/KampalasAfrica/Khartoums Africa/KigalisAfrica/Kinshasas Africa/LagossAfrica/Librevilles Africa/Lomes Africa/LuandasAfrica/Lubumbashis Africa/Lusakas Africa/Malabos Africa/Maputos Africa/MaserusAfrica/MbabanesAfrica/MogadishusAfrica/MonroviasAfrica/NairobisAfrica/Ndjamenas Africa/NiameysAfrica/NouakchottsAfrica/OuagadougousAfrica/Porto-NovosAfrica/Sao_TomesAfrica/TimbuktusAfrica/Tripolis Africa/TunissAfrica/Windhoeks America/AdaksAmerica/AnchoragesAmerica/AnguillasAmerica/AntiguasAmerica/Araguainas America/ArubasAmerica/AsuncionsAmerica/Atikokans America/Atkas America/BahiasAmerica/Barbadoss America/BelemsAmerica/BelizesAmerica/Blanc-SablonsAmerica/Boa_VistasAmerica/Bogotas America/BoisesAmerica/Buenos_AiressAmerica/Cambridge_BaysAmerica/Campo_GrandesAmerica/CancunsAmerica/CaracassAmerica/CatamarcasAmerica/CayennesAmerica/CaymansAmerica/ChicagosAmerica/ChihuahuasAmerica/Coral_HarboursAmerica/CordobasAmerica/Costa_RicasAmerica/CuiabasAmerica/CuracaosAmerica/DanmarkshavnsAmerica/DawsonsAmerica/Dawson_CreeksAmerica/DenversAmerica/DetroitsAmerica/DominicasAmerica/EdmontonsAmerica/EirunepesAmerica/El_SalvadorsAmerica/EnsenadasAmerica/Fort_WaynesAmerica/FortalezasAmerica/Glace_BaysAmerica/GodthabsAmerica/Goose_BaysAmerica/Grand_TurksAmerica/GrenadasAmerica/GuadeloupesAmerica/GuatemalasAmerica/GuayaquilsAmerica/GuyanasAmerica/HalifaxsAmerica/HavanasAmerica/HermosillosAmerica/IndianapolissAmerica/InuviksAmerica/IqaluitsAmerica/Jamaicas America/JujuysAmerica/JuneausAmerica/Knox_INsAmerica/La_Pazs America/LimasAmerica/Los_AngelessAmerica/LouisvillesAmerica/MaceiosAmerica/ManaguasAmerica/ManaussAmerica/MartiniquesAmerica/MazatlansAmerica/MendozasAmerica/MenomineesAmerica/MeridasAmerica/Mexico_CitysAmerica/MiquelonsAmerica/MonctonsAmerica/MonterreysAmerica/MontevideosAmerica/MontrealsAmerica/MontserratsAmerica/NassausAmerica/New_YorksAmerica/Nipigons America/NomesAmerica/NoronhasAmerica/PanamasAmerica/PangnirtungsAmerica/ParamaribosAmerica/PhoenixsAmerica/Port-au-PrincesAmerica/Port_of_SpainsAmerica/Porto_AcresAmerica/Porto_VelhosAmerica/Puerto_RicosAmerica/Rainy_RiversAmerica/Rankin_InletsAmerica/RecifesAmerica/ReginasAmerica/Rio_BrancosAmerica/RosariosAmerica/SantiagosAmerica/Santo_DomingosAmerica/Sao_PaulosAmerica/ScoresbysundsAmerica/ShiprocksAmerica/St_JohnssAmerica/St_KittssAmerica/St_LuciasAmerica/St_ThomassAmerica/St_VincentsAmerica/Swift_CurrentsAmerica/Tegucigalpas America/ThulesAmerica/Thunder_BaysAmerica/TijuanasAmerica/TorontosAmerica/TortolasAmerica/VancouversAmerica/VirginsAmerica/WhitehorsesAmerica/WinnipegsAmerica/YakutatsAmerica/YellowknifesAntarctica/CaseysAntarctica/DavissAntarctica/DumontDUrvillesAntarctica/MawsonsAntarctica/McMurdosAntarctica/PalmersAntarctica/RotherasAntarctica/South_PolesAntarctica/SyowasAntarctica/VostoksArctic/Longyearbyens Asia/Adens Asia/Almatys Asia/Ammans Asia/Anadyrs Asia/Aqtaus Asia/Aqtobes Asia/AshgabatsAsia/Ashkhabads Asia/Baghdads Asia/Bahrains Asia/Bakus Asia/Bangkoks Asia/Beiruts Asia/Bishkeks Asia/Bruneis Asia/CalcuttasAsia/ChoibalsansAsia/ChongqingsAsia/Chungkings Asia/Colombos Asia/Daccas Asia/Damascuss Asia/Dhakas Asia/Dilis Asia/Dubais Asia/Dushanbes Asia/Gazas Asia/HarbinsAsia/Hong_Kongs Asia/Hovds Asia/Irkutsks Asia/Istanbuls Asia/Jakartas Asia/JayapurasAsia/Jerusalems Asia/KabulsAsia/Kamchatkas Asia/Karachis Asia/Kashgars Asia/KatmandusAsia/KrasnoyarsksAsia/Kuala_Lumpurs Asia/Kuchings Asia/Kuwaits Asia/Macaos Asia/Macaus Asia/Magadans Asia/Makassars Asia/Manilas Asia/Muscats Asia/NicosiasAsia/Novosibirsks Asia/Omsks Asia/OralsAsia/Phnom_PenhsAsia/PontianaksAsia/Pyongyangs Asia/QatarsAsia/Qyzylordas Asia/Rangoons Asia/Riyadhs Asia/Saigons Asia/SakhalinsAsia/Samarkands Asia/Seouls Asia/ShanghaisAsia/Singapores Asia/Taipeis Asia/Tashkents Asia/Tbilisis Asia/Tehrans Asia/Tel_Avivs Asia/Thimbus Asia/Thimphus Asia/TokyosAsia/Ujung_PandangsAsia/UlaanbaatarsAsia/Ulan_Bators Asia/UrumqisAsia/VientianesAsia/Vladivostoks Asia/YakutsksAsia/Yekaterinburgs Asia/YerevansAtlantic/AzoressAtlantic/BermudasAtlantic/CanarysAtlantic/Cape_VerdesAtlantic/FaeroesAtlantic/Jan_MayensAtlantic/MadeirasAtlantic/ReykjaviksAtlantic/South_GeorgiasAtlantic/St_HelenasAtlantic/Stanleys Australia/ACTsAustralia/AdelaidesAustralia/BrisbanesAustralia/Broken_HillsAustralia/CanberrasAustralia/CurriesAustralia/DarwinsAustralia/Hobarts Australia/LHIsAustralia/LindemansAustralia/Lord_HowesAustralia/Melbournes Australia/NSWsAustralia/NorthsAustralia/PerthsAustralia/QueenslandsAustralia/SouthsAustralia/SydneysAustralia/TasmaniasAustralia/VictoriasAustralia/WestsAustralia/Yancowinnas Brazil/AcresBrazil/DeNoronhas Brazil/Easts Brazil/WestsCanada/AtlanticsCanada/CentralsCanada/East-SaskatchewansCanada/EasternsCanada/MountainsCanada/NewfoundlandsCanada/PacificsCanada/Saskatchewans Canada/YukonsChile/ContinentalsChile/EasterIslandsEurope/AmsterdamsEurope/Andorras Europe/AthenssEurope/BelfastsEurope/Belgrades Europe/BerlinsEurope/BratislavasEurope/BrusselssEurope/BucharestsEurope/BudapestsEurope/ChisinausEurope/Copenhagens Europe/DublinsEurope/GibraltarsEurope/GuernseysEurope/HelsinkisEurope/Isle_of_MansEurope/Istanbuls Europe/JerseysEurope/Kaliningrads Europe/Kievs Europe/LisbonsEurope/Ljubljanas Europe/LondonsEurope/Luxembourgs Europe/Madrids Europe/MaltasEurope/Mariehamns Europe/Minsks Europe/Monacos Europe/MoscowsEurope/Nicosias Europe/Oslos Europe/Pariss Europe/Pragues Europe/Rigas Europe/Romes Europe/SamarasEurope/San_MarinosEurope/SarajevosEurope/Simferopols Europe/Skopjes Europe/SofiasEurope/StockholmsEurope/Tallinns Europe/TiranesEurope/TiraspolsEurope/Uzhgorods Europe/VaduzsEurope/Vaticans Europe/ViennasEurope/VilniussEurope/Volgograds Europe/Warsaws Europe/ZagrebsEurope/Zaporozhyes Europe/ZurichtGMTsIndian/Antananarivos Indian/ChagossIndian/Christmass Indian/Cocoss Indian/ComorosIndian/Kerguelens Indian/MahesIndian/MaldivessIndian/MauritiussIndian/MayottesIndian/ReunionsMexico/BajaNortesMexico/BajaSursMexico/Generals Pacific/ApiasPacific/AucklandsPacific/ChathamsPacific/Easters Pacific/EfatesPacific/EnderburysPacific/Fakaofos Pacific/FijisPacific/FunafutisPacific/GalapagossPacific/GambiersPacific/Guadalcanals Pacific/GuamsPacific/HonolulusPacific/JohnstonsPacific/KiritimatisPacific/KosraesPacific/KwajaleinsPacific/MajurosPacific/MarquesassPacific/Midways Pacific/Naurus Pacific/NiuesPacific/NorfolksPacific/NoumeasPacific/Pago_Pagos Pacific/PalausPacific/PitcairnsPacific/PonapesPacific/Port_MoresbysPacific/RarotongasPacific/Saipans Pacific/SamoasPacific/TahitisPacific/TarawasPacific/Tongatapus Pacific/Truks Pacific/WakesPacific/Walliss Pacific/Yaps US/Alaskas US/Aleutians US/Arizonas US/CentralsUS/East-Indianas US/Easterns US/HawaiisUS/Indiana-Starkes US/Michigans US/Mountains US/PacificsUS/Pacific-NewsUS/SamoasAmerica/Argentina/Buenos_AiressAmerica/Argentina/Catamarcas America/Argentina/ComodRivadaviasAmerica/Argentina/CordobasAmerica/Argentina/JujuysAmerica/Argentina/La_RiojasAmerica/Argentina/MendozasAmerica/Argentina/Rio_GallegossAmerica/Argentina/San_JuansAmerica/Argentina/TucumansAmerica/Argentina/UshuaiasAmerica/Indiana/IndianapolissAmerica/Indiana/KnoxsAmerica/Indiana/MarengosAmerica/Indiana/PetersburgsAmerica/Indiana/VevaysAmerica/Indiana/VincennessAmerica/Kentucky/LouisvillesAmerica/Kentucky/MonticellosAmerica/North_Dakota/CentersAmerica/North_Dakota/New_SalemtCETtCST6CDTtCubatEETtESTtEST5EDTtEgypttEiresEtc/GMTs Etc/GMT+0s Etc/GMT+1s Etc/GMT+10s Etc/GMT+11s Etc/GMT+12s Etc/GMT+2s Etc/GMT+3s Etc/GMT+4s Etc/GMT+5s Etc/GMT+6s Etc/GMT+7s Etc/GMT+8s Etc/GMT+9s Etc/GMT-0s Etc/GMT-1s Etc/GMT-10s Etc/GMT-11s Etc/GMT-12s Etc/GMT-13s Etc/GMT-14s Etc/GMT-2s Etc/GMT-3s Etc/GMT-4s Etc/GMT-5s Etc/GMT-6s Etc/GMT-7s Etc/GMT-8s Etc/GMT-9sEtc/GMT0s Etc/GreenwichsEtc/UCTsEtc/UTCs Etc/UniversalsEtc/ZulutGBsGB-EiresGMT+0sGMT-0tGMT0t GreenwichtHSTtHongkongtIcelandtIrantIsraeltJamaicatJapant KwajaleintLibyatMETtMSTtMST7MDTtNZsNZ-CHATtNavajotPRCtPST8PDTtPolandtPortugaltROCtROKt SingaporetTurkeytUCTt UniversalsW-SUtWETtZulut posixrules(!R8t OLSON_VERSIONtVERSIONt __version__t OLSEN_VERSIONt__all__RRQtos.pathRDtgettextR.RR:RR RRR&tHOURRRR,tTruet__safe_for_unpickling__R<R?RRMRUR`R6RR(RRMRR`RQRRR,RR:RR<R?RRR RRR&RRURRRRRD((Rt? sB$ ) +      !% @    E