Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pytz/__init__.py: 37%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1'''
2datetime.tzinfo timezone definitions generated from the
3Olson timezone database:
5 ftp://elsie.nci.nih.gov/pub/tz*.tar.gz
7See the datetime section of the Python Library Reference for information
8on how to use these modules.
9'''
11import sys
12import datetime
13import os.path
15from pytz.exceptions import AmbiguousTimeError
16from pytz.exceptions import InvalidTimeError
17from pytz.exceptions import NonExistentTimeError
18from pytz.exceptions import UnknownTimeZoneError
19from pytz.lazy import LazyDict, LazyList, LazySet # noqa
20from pytz.tzinfo import unpickler, BaseTzInfo
21from pytz.tzfile import build_tzinfo
24# The IANA (nee Olson) database is updated several times a year.
25OLSON_VERSION = '2024a'
26VERSION = '2024.1' # pip compatible version number.
27__version__ = VERSION
29OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling
31__all__ = [
32 'timezone', 'utc', 'country_timezones', 'country_names',
33 'AmbiguousTimeError', 'InvalidTimeError',
34 'NonExistentTimeError', 'UnknownTimeZoneError',
35 'all_timezones', 'all_timezones_set',
36 'common_timezones', 'common_timezones_set',
37 'BaseTzInfo', 'FixedOffset',
38]
41if sys.version_info[0] > 2: # Python 3.x
43 # Python 3.x doesn't have unicode(), making writing code
44 # for Python 2.3 and Python 3.x a pain.
45 unicode = str
47 def ascii(s):
48 r"""
49 >>> ascii('Hello')
50 'Hello'
51 >>> ascii('\N{TRADE MARK SIGN}') #doctest: +IGNORE_EXCEPTION_DETAIL
52 Traceback (most recent call last):
53 ...
54 UnicodeEncodeError: ...
55 """
56 if type(s) == bytes:
57 s = s.decode('ASCII')
58 else:
59 s.encode('ASCII') # Raise an exception if not ASCII
60 return s # But the string - not a byte string.
62else: # Python 2.x
64 def ascii(s):
65 r"""
66 >>> ascii('Hello')
67 'Hello'
68 >>> ascii(u'Hello')
69 'Hello'
70 >>> ascii(u'\N{TRADE MARK SIGN}') #doctest: +IGNORE_EXCEPTION_DETAIL
71 Traceback (most recent call last):
72 ...
73 UnicodeEncodeError: ...
74 """
75 return s.encode('ASCII')
78def open_resource(name):
79 """Open a resource from the zoneinfo subdir for reading.
81 Uses the pkg_resources module if available and no standard file
82 found at the calculated location.
84 It is possible to specify different location for zoneinfo
85 subdir by using the PYTZ_TZDATADIR environment variable.
86 """
87 name_parts = name.lstrip('/').split('/')
88 for part in name_parts:
89 if part == os.path.pardir or os.sep in part:
90 raise ValueError('Bad path segment: %r' % part)
91 zoneinfo_dir = os.environ.get('PYTZ_TZDATADIR', None)
92 if zoneinfo_dir is not None:
93 filename = os.path.join(zoneinfo_dir, *name_parts)
94 else:
95 filename = os.path.join(os.path.dirname(__file__),
96 'zoneinfo', *name_parts)
97 if not os.path.exists(filename):
98 # http://bugs.launchpad.net/bugs/383171 - we avoid using this
99 # unless absolutely necessary to help when a broken version of
100 # pkg_resources is installed.
101 try:
102 from pkg_resources import resource_stream
103 except ImportError:
104 resource_stream = None
106 if resource_stream is not None:
107 return resource_stream(__name__, 'zoneinfo/' + name)
108 return open(filename, 'rb')
111def resource_exists(name):
112 """Return true if the given resource exists"""
113 try:
114 if os.environ.get('PYTZ_SKIPEXISTSCHECK', ''):
115 # In "standard" distributions, we can assume that
116 # all the listed timezones are present. As an
117 # import-speed optimization, you can set the
118 # PYTZ_SKIPEXISTSCHECK flag to skip checking
119 # for the presence of the resource file on disk.
120 return True
121 open_resource(name).close()
122 return True
123 except IOError:
124 return False
127_tzinfo_cache = {}
130def timezone(zone):
131 r''' Return a datetime.tzinfo implementation for the given timezone
133 >>> from datetime import datetime, timedelta
134 >>> utc = timezone('UTC')
135 >>> eastern = timezone('US/Eastern')
136 >>> eastern.zone
137 'US/Eastern'
138 >>> timezone(unicode('US/Eastern')) is eastern
139 True
140 >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
141 >>> loc_dt = utc_dt.astimezone(eastern)
142 >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
143 >>> loc_dt.strftime(fmt)
144 '2002-10-27 01:00:00 EST (-0500)'
145 >>> (loc_dt - timedelta(minutes=10)).strftime(fmt)
146 '2002-10-27 00:50:00 EST (-0500)'
147 >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt)
148 '2002-10-27 01:50:00 EDT (-0400)'
149 >>> (loc_dt + timedelta(minutes=10)).strftime(fmt)
150 '2002-10-27 01:10:00 EST (-0500)'
152 Raises UnknownTimeZoneError if passed an unknown zone.
154 >>> try:
155 ... timezone('Asia/Shangri-La')
156 ... except UnknownTimeZoneError:
157 ... print('Unknown')
158 Unknown
160 >>> try:
161 ... timezone(unicode('\N{TRADE MARK SIGN}'))
162 ... except UnknownTimeZoneError:
163 ... print('Unknown')
164 Unknown
166 '''
167 if zone is None:
168 raise UnknownTimeZoneError(None)
170 if zone.upper() == 'UTC':
171 return utc
173 try:
174 zone = ascii(zone)
175 except UnicodeEncodeError:
176 # All valid timezones are ASCII
177 raise UnknownTimeZoneError(zone)
179 zone = _case_insensitive_zone_lookup(_unmunge_zone(zone))
180 if zone not in _tzinfo_cache:
181 if zone in all_timezones_set: # noqa
182 fp = open_resource(zone)
183 try:
184 _tzinfo_cache[zone] = build_tzinfo(zone, fp)
185 finally:
186 fp.close()
187 else:
188 raise UnknownTimeZoneError(zone)
190 return _tzinfo_cache[zone]
193def _unmunge_zone(zone):
194 """Undo the time zone name munging done by older versions of pytz."""
195 return zone.replace('_plus_', '+').replace('_minus_', '-')
198_all_timezones_lower_to_standard = None
201def _case_insensitive_zone_lookup(zone):
202 """case-insensitively matching timezone, else return zone unchanged"""
203 global _all_timezones_lower_to_standard
204 if _all_timezones_lower_to_standard is None:
205 _all_timezones_lower_to_standard = dict((tz.lower(), tz) for tz in _all_timezones_unchecked) # noqa
206 return _all_timezones_lower_to_standard.get(zone.lower()) or zone # noqa
209ZERO = datetime.timedelta(0)
210HOUR = datetime.timedelta(hours=1)
213class UTC(BaseTzInfo):
214 """UTC
216 Optimized UTC implementation. It unpickles using the single module global
217 instance defined beneath this class declaration.
218 """
219 zone = "UTC"
221 _utcoffset = ZERO
222 _dst = ZERO
223 _tzname = zone
225 def fromutc(self, dt):
226 if dt.tzinfo is None:
227 return self.localize(dt)
228 return super(utc.__class__, self).fromutc(dt)
230 def utcoffset(self, dt):
231 return ZERO
233 def tzname(self, dt):
234 return "UTC"
236 def dst(self, dt):
237 return ZERO
239 def __reduce__(self):
240 return _UTC, ()
242 def localize(self, dt, is_dst=False):
243 '''Convert naive time to local time'''
244 if dt.tzinfo is not None:
245 raise ValueError('Not naive datetime (tzinfo is already set)')
246 return dt.replace(tzinfo=self)
248 def normalize(self, dt, is_dst=False):
249 '''Correct the timezone information on the given datetime'''
250 if dt.tzinfo is self:
251 return dt
252 if dt.tzinfo is None:
253 raise ValueError('Naive time - no tzinfo set')
254 return dt.astimezone(self)
256 def __repr__(self):
257 return "<UTC>"
259 def __str__(self):
260 return "UTC"
263UTC = utc = UTC() # UTC is a singleton
266def _UTC():
267 """Factory function for utc unpickling.
269 Makes sure that unpickling a utc instance always returns the same
270 module global.
272 These examples belong in the UTC class above, but it is obscured; or in
273 the README.rst, but we are not depending on Python 2.4 so integrating
274 the README.rst examples with the unit tests is not trivial.
276 >>> import datetime, pickle
277 >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
278 >>> naive = dt.replace(tzinfo=None)
279 >>> p = pickle.dumps(dt, 1)
280 >>> naive_p = pickle.dumps(naive, 1)
281 >>> len(p) - len(naive_p)
282 17
283 >>> new = pickle.loads(p)
284 >>> new == dt
285 True
286 >>> new is dt
287 False
288 >>> new.tzinfo is dt.tzinfo
289 True
290 >>> utc is UTC is timezone('UTC')
291 True
292 >>> utc is timezone('GMT')
293 False
294 """
295 return utc
298_UTC.__safe_for_unpickling__ = True
301def _p(*args):
302 """Factory function for unpickling pytz tzinfo instances.
304 Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle
305 by shortening the path.
306 """
307 return unpickler(*args)
310_p.__safe_for_unpickling__ = True
313class _CountryTimezoneDict(LazyDict):
314 """Map ISO 3166 country code to a list of timezone names commonly used
315 in that country.
317 iso3166_code is the two letter code used to identify the country.
319 >>> def print_list(list_of_strings):
320 ... 'We use a helper so doctests work under Python 2.3 -> 3.x'
321 ... for s in list_of_strings:
322 ... print(s)
324 >>> print_list(country_timezones['nz'])
325 Pacific/Auckland
326 Pacific/Chatham
327 >>> print_list(country_timezones['ch'])
328 Europe/Zurich
329 >>> print_list(country_timezones['CH'])
330 Europe/Zurich
331 >>> print_list(country_timezones[unicode('ch')])
332 Europe/Zurich
333 >>> print_list(country_timezones['XXX'])
334 Traceback (most recent call last):
335 ...
336 KeyError: 'XXX'
338 Previously, this information was exposed as a function rather than a
339 dictionary. This is still supported::
341 >>> print_list(country_timezones('nz'))
342 Pacific/Auckland
343 Pacific/Chatham
344 """
345 def __call__(self, iso3166_code):
346 """Backwards compatibility."""
347 return self[iso3166_code]
349 def _fill(self):
350 data = {}
351 zone_tab = open_resource('zone.tab')
352 try:
353 for line in zone_tab:
354 line = line.decode('UTF-8')
355 if line.startswith('#'):
356 continue
357 code, coordinates, zone = line.split(None, 4)[:3]
358 if zone not in all_timezones_set: # noqa
359 continue
360 try:
361 data[code].append(zone)
362 except KeyError:
363 data[code] = [zone]
364 self.data = data
365 finally:
366 zone_tab.close()
369country_timezones = _CountryTimezoneDict()
372class _CountryNameDict(LazyDict):
373 '''Dictionary proving ISO3166 code -> English name.
375 >>> print(country_names['au'])
376 Australia
377 '''
378 def _fill(self):
379 data = {}
380 zone_tab = open_resource('iso3166.tab')
381 try:
382 for line in zone_tab.readlines():
383 line = line.decode('UTF-8')
384 if line.startswith('#'):
385 continue
386 code, name = line.split(None, 1)
387 data[code] = name.strip()
388 self.data = data
389 finally:
390 zone_tab.close()
393country_names = _CountryNameDict()
396# Time-zone info based solely on fixed offsets
398class _FixedOffset(datetime.tzinfo):
400 zone = None # to match the standard pytz API
402 def __init__(self, minutes):
403 if abs(minutes) >= 1440:
404 raise ValueError("absolute offset is too large", minutes)
405 self._minutes = minutes
406 self._offset = datetime.timedelta(minutes=minutes)
408 def utcoffset(self, dt):
409 return self._offset
411 def __reduce__(self):
412 return FixedOffset, (self._minutes, )
414 def dst(self, dt):
415 return ZERO
417 def tzname(self, dt):
418 return None
420 def __repr__(self):
421 return 'pytz.FixedOffset(%d)' % self._minutes
423 def localize(self, dt, is_dst=False):
424 '''Convert naive time to local time'''
425 if dt.tzinfo is not None:
426 raise ValueError('Not naive datetime (tzinfo is already set)')
427 return dt.replace(tzinfo=self)
429 def normalize(self, dt, is_dst=False):
430 '''Correct the timezone information on the given datetime'''
431 if dt.tzinfo is self:
432 return dt
433 if dt.tzinfo is None:
434 raise ValueError('Naive time - no tzinfo set')
435 return dt.astimezone(self)
438def FixedOffset(offset, _tzinfos={}):
439 """return a fixed-offset timezone based off a number of minutes.
441 >>> one = FixedOffset(-330)
442 >>> one
443 pytz.FixedOffset(-330)
444 >>> str(one.utcoffset(datetime.datetime.now()))
445 '-1 day, 18:30:00'
446 >>> str(one.dst(datetime.datetime.now()))
447 '0:00:00'
449 >>> two = FixedOffset(1380)
450 >>> two
451 pytz.FixedOffset(1380)
452 >>> str(two.utcoffset(datetime.datetime.now()))
453 '23:00:00'
454 >>> str(two.dst(datetime.datetime.now()))
455 '0:00:00'
457 The datetime.timedelta must be between the range of -1 and 1 day,
458 non-inclusive.
460 >>> FixedOffset(1440)
461 Traceback (most recent call last):
462 ...
463 ValueError: ('absolute offset is too large', 1440)
465 >>> FixedOffset(-1440)
466 Traceback (most recent call last):
467 ...
468 ValueError: ('absolute offset is too large', -1440)
470 An offset of 0 is special-cased to return UTC.
472 >>> FixedOffset(0) is UTC
473 True
475 There should always be only one instance of a FixedOffset per timedelta.
476 This should be true for multiple creation calls.
478 >>> FixedOffset(-330) is one
479 True
480 >>> FixedOffset(1380) is two
481 True
483 It should also be true for pickling.
485 >>> import pickle
486 >>> pickle.loads(pickle.dumps(one)) is one
487 True
488 >>> pickle.loads(pickle.dumps(two)) is two
489 True
490 """
491 if offset == 0:
492 return UTC
494 info = _tzinfos.get(offset)
495 if info is None:
496 # We haven't seen this one before. we need to save it.
498 # Use setdefault to avoid a race condition and make sure we have
499 # only one
500 info = _tzinfos.setdefault(offset, _FixedOffset(offset))
502 return info
505FixedOffset.__safe_for_unpickling__ = True
508def _test():
509 import doctest
510 sys.path.insert(0, os.pardir)
511 import pytz
512 return doctest.testmod(pytz)
515if __name__ == '__main__':
516 _test()
517_all_timezones_unchecked = \
518['Africa/Abidjan',
519 'Africa/Accra',
520 'Africa/Addis_Ababa',
521 'Africa/Algiers',
522 'Africa/Asmara',
523 'Africa/Asmera',
524 'Africa/Bamako',
525 'Africa/Bangui',
526 'Africa/Banjul',
527 'Africa/Bissau',
528 'Africa/Blantyre',
529 'Africa/Brazzaville',
530 'Africa/Bujumbura',
531 'Africa/Cairo',
532 'Africa/Casablanca',
533 'Africa/Ceuta',
534 'Africa/Conakry',
535 'Africa/Dakar',
536 'Africa/Dar_es_Salaam',
537 'Africa/Djibouti',
538 'Africa/Douala',
539 'Africa/El_Aaiun',
540 'Africa/Freetown',
541 'Africa/Gaborone',
542 'Africa/Harare',
543 'Africa/Johannesburg',
544 'Africa/Juba',
545 'Africa/Kampala',
546 'Africa/Khartoum',
547 'Africa/Kigali',
548 'Africa/Kinshasa',
549 'Africa/Lagos',
550 'Africa/Libreville',
551 'Africa/Lome',
552 'Africa/Luanda',
553 'Africa/Lubumbashi',
554 'Africa/Lusaka',
555 'Africa/Malabo',
556 'Africa/Maputo',
557 'Africa/Maseru',
558 'Africa/Mbabane',
559 'Africa/Mogadishu',
560 'Africa/Monrovia',
561 'Africa/Nairobi',
562 'Africa/Ndjamena',
563 'Africa/Niamey',
564 'Africa/Nouakchott',
565 'Africa/Ouagadougou',
566 'Africa/Porto-Novo',
567 'Africa/Sao_Tome',
568 'Africa/Timbuktu',
569 'Africa/Tripoli',
570 'Africa/Tunis',
571 'Africa/Windhoek',
572 'America/Adak',
573 'America/Anchorage',
574 'America/Anguilla',
575 'America/Antigua',
576 'America/Araguaina',
577 'America/Argentina/Buenos_Aires',
578 'America/Argentina/Catamarca',
579 'America/Argentina/ComodRivadavia',
580 'America/Argentina/Cordoba',
581 'America/Argentina/Jujuy',
582 'America/Argentina/La_Rioja',
583 'America/Argentina/Mendoza',
584 'America/Argentina/Rio_Gallegos',
585 'America/Argentina/Salta',
586 'America/Argentina/San_Juan',
587 'America/Argentina/San_Luis',
588 'America/Argentina/Tucuman',
589 'America/Argentina/Ushuaia',
590 'America/Aruba',
591 'America/Asuncion',
592 'America/Atikokan',
593 'America/Atka',
594 'America/Bahia',
595 'America/Bahia_Banderas',
596 'America/Barbados',
597 'America/Belem',
598 'America/Belize',
599 'America/Blanc-Sablon',
600 'America/Boa_Vista',
601 'America/Bogota',
602 'America/Boise',
603 'America/Buenos_Aires',
604 'America/Cambridge_Bay',
605 'America/Campo_Grande',
606 'America/Cancun',
607 'America/Caracas',
608 'America/Catamarca',
609 'America/Cayenne',
610 'America/Cayman',
611 'America/Chicago',
612 'America/Chihuahua',
613 'America/Ciudad_Juarez',
614 'America/Coral_Harbour',
615 'America/Cordoba',
616 'America/Costa_Rica',
617 'America/Creston',
618 'America/Cuiaba',
619 'America/Curacao',
620 'America/Danmarkshavn',
621 'America/Dawson',
622 'America/Dawson_Creek',
623 'America/Denver',
624 'America/Detroit',
625 'America/Dominica',
626 'America/Edmonton',
627 'America/Eirunepe',
628 'America/El_Salvador',
629 'America/Ensenada',
630 'America/Fort_Nelson',
631 'America/Fort_Wayne',
632 'America/Fortaleza',
633 'America/Glace_Bay',
634 'America/Godthab',
635 'America/Goose_Bay',
636 'America/Grand_Turk',
637 'America/Grenada',
638 'America/Guadeloupe',
639 'America/Guatemala',
640 'America/Guayaquil',
641 'America/Guyana',
642 'America/Halifax',
643 'America/Havana',
644 'America/Hermosillo',
645 'America/Indiana/Indianapolis',
646 'America/Indiana/Knox',
647 'America/Indiana/Marengo',
648 'America/Indiana/Petersburg',
649 'America/Indiana/Tell_City',
650 'America/Indiana/Vevay',
651 'America/Indiana/Vincennes',
652 'America/Indiana/Winamac',
653 'America/Indianapolis',
654 'America/Inuvik',
655 'America/Iqaluit',
656 'America/Jamaica',
657 'America/Jujuy',
658 'America/Juneau',
659 'America/Kentucky/Louisville',
660 'America/Kentucky/Monticello',
661 'America/Knox_IN',
662 'America/Kralendijk',
663 'America/La_Paz',
664 'America/Lima',
665 'America/Los_Angeles',
666 'America/Louisville',
667 'America/Lower_Princes',
668 'America/Maceio',
669 'America/Managua',
670 'America/Manaus',
671 'America/Marigot',
672 'America/Martinique',
673 'America/Matamoros',
674 'America/Mazatlan',
675 'America/Mendoza',
676 'America/Menominee',
677 'America/Merida',
678 'America/Metlakatla',
679 'America/Mexico_City',
680 'America/Miquelon',
681 'America/Moncton',
682 'America/Monterrey',
683 'America/Montevideo',
684 'America/Montreal',
685 'America/Montserrat',
686 'America/Nassau',
687 'America/New_York',
688 'America/Nipigon',
689 'America/Nome',
690 'America/Noronha',
691 'America/North_Dakota/Beulah',
692 'America/North_Dakota/Center',
693 'America/North_Dakota/New_Salem',
694 'America/Nuuk',
695 'America/Ojinaga',
696 'America/Panama',
697 'America/Pangnirtung',
698 'America/Paramaribo',
699 'America/Phoenix',
700 'America/Port-au-Prince',
701 'America/Port_of_Spain',
702 'America/Porto_Acre',
703 'America/Porto_Velho',
704 'America/Puerto_Rico',
705 'America/Punta_Arenas',
706 'America/Rainy_River',
707 'America/Rankin_Inlet',
708 'America/Recife',
709 'America/Regina',
710 'America/Resolute',
711 'America/Rio_Branco',
712 'America/Rosario',
713 'America/Santa_Isabel',
714 'America/Santarem',
715 'America/Santiago',
716 'America/Santo_Domingo',
717 'America/Sao_Paulo',
718 'America/Scoresbysund',
719 'America/Shiprock',
720 'America/Sitka',
721 'America/St_Barthelemy',
722 'America/St_Johns',
723 'America/St_Kitts',
724 'America/St_Lucia',
725 'America/St_Thomas',
726 'America/St_Vincent',
727 'America/Swift_Current',
728 'America/Tegucigalpa',
729 'America/Thule',
730 'America/Thunder_Bay',
731 'America/Tijuana',
732 'America/Toronto',
733 'America/Tortola',
734 'America/Vancouver',
735 'America/Virgin',
736 'America/Whitehorse',
737 'America/Winnipeg',
738 'America/Yakutat',
739 'America/Yellowknife',
740 'Antarctica/Casey',
741 'Antarctica/Davis',
742 'Antarctica/DumontDUrville',
743 'Antarctica/Macquarie',
744 'Antarctica/Mawson',
745 'Antarctica/McMurdo',
746 'Antarctica/Palmer',
747 'Antarctica/Rothera',
748 'Antarctica/South_Pole',
749 'Antarctica/Syowa',
750 'Antarctica/Troll',
751 'Antarctica/Vostok',
752 'Arctic/Longyearbyen',
753 'Asia/Aden',
754 'Asia/Almaty',
755 'Asia/Amman',
756 'Asia/Anadyr',
757 'Asia/Aqtau',
758 'Asia/Aqtobe',
759 'Asia/Ashgabat',
760 'Asia/Ashkhabad',
761 'Asia/Atyrau',
762 'Asia/Baghdad',
763 'Asia/Bahrain',
764 'Asia/Baku',
765 'Asia/Bangkok',
766 'Asia/Barnaul',
767 'Asia/Beirut',
768 'Asia/Bishkek',
769 'Asia/Brunei',
770 'Asia/Calcutta',
771 'Asia/Chita',
772 'Asia/Choibalsan',
773 'Asia/Chongqing',
774 'Asia/Chungking',
775 'Asia/Colombo',
776 'Asia/Dacca',
777 'Asia/Damascus',
778 'Asia/Dhaka',
779 'Asia/Dili',
780 'Asia/Dubai',
781 'Asia/Dushanbe',
782 'Asia/Famagusta',
783 'Asia/Gaza',
784 'Asia/Harbin',
785 'Asia/Hebron',
786 'Asia/Ho_Chi_Minh',
787 'Asia/Hong_Kong',
788 'Asia/Hovd',
789 'Asia/Irkutsk',
790 'Asia/Istanbul',
791 'Asia/Jakarta',
792 'Asia/Jayapura',
793 'Asia/Jerusalem',
794 'Asia/Kabul',
795 'Asia/Kamchatka',
796 'Asia/Karachi',
797 'Asia/Kashgar',
798 'Asia/Kathmandu',
799 'Asia/Katmandu',
800 'Asia/Khandyga',
801 'Asia/Kolkata',
802 'Asia/Krasnoyarsk',
803 'Asia/Kuala_Lumpur',
804 'Asia/Kuching',
805 'Asia/Kuwait',
806 'Asia/Macao',
807 'Asia/Macau',
808 'Asia/Magadan',
809 'Asia/Makassar',
810 'Asia/Manila',
811 'Asia/Muscat',
812 'Asia/Nicosia',
813 'Asia/Novokuznetsk',
814 'Asia/Novosibirsk',
815 'Asia/Omsk',
816 'Asia/Oral',
817 'Asia/Phnom_Penh',
818 'Asia/Pontianak',
819 'Asia/Pyongyang',
820 'Asia/Qatar',
821 'Asia/Qostanay',
822 'Asia/Qyzylorda',
823 'Asia/Rangoon',
824 'Asia/Riyadh',
825 'Asia/Saigon',
826 'Asia/Sakhalin',
827 'Asia/Samarkand',
828 'Asia/Seoul',
829 'Asia/Shanghai',
830 'Asia/Singapore',
831 'Asia/Srednekolymsk',
832 'Asia/Taipei',
833 'Asia/Tashkent',
834 'Asia/Tbilisi',
835 'Asia/Tehran',
836 'Asia/Tel_Aviv',
837 'Asia/Thimbu',
838 'Asia/Thimphu',
839 'Asia/Tokyo',
840 'Asia/Tomsk',
841 'Asia/Ujung_Pandang',
842 'Asia/Ulaanbaatar',
843 'Asia/Ulan_Bator',
844 'Asia/Urumqi',
845 'Asia/Ust-Nera',
846 'Asia/Vientiane',
847 'Asia/Vladivostok',
848 'Asia/Yakutsk',
849 'Asia/Yangon',
850 'Asia/Yekaterinburg',
851 'Asia/Yerevan',
852 'Atlantic/Azores',
853 'Atlantic/Bermuda',
854 'Atlantic/Canary',
855 'Atlantic/Cape_Verde',
856 'Atlantic/Faeroe',
857 'Atlantic/Faroe',
858 'Atlantic/Jan_Mayen',
859 'Atlantic/Madeira',
860 'Atlantic/Reykjavik',
861 'Atlantic/South_Georgia',
862 'Atlantic/St_Helena',
863 'Atlantic/Stanley',
864 'Australia/ACT',
865 'Australia/Adelaide',
866 'Australia/Brisbane',
867 'Australia/Broken_Hill',
868 'Australia/Canberra',
869 'Australia/Currie',
870 'Australia/Darwin',
871 'Australia/Eucla',
872 'Australia/Hobart',
873 'Australia/LHI',
874 'Australia/Lindeman',
875 'Australia/Lord_Howe',
876 'Australia/Melbourne',
877 'Australia/NSW',
878 'Australia/North',
879 'Australia/Perth',
880 'Australia/Queensland',
881 'Australia/South',
882 'Australia/Sydney',
883 'Australia/Tasmania',
884 'Australia/Victoria',
885 'Australia/West',
886 'Australia/Yancowinna',
887 'Brazil/Acre',
888 'Brazil/DeNoronha',
889 'Brazil/East',
890 'Brazil/West',
891 'CET',
892 'CST6CDT',
893 'Canada/Atlantic',
894 'Canada/Central',
895 'Canada/Eastern',
896 'Canada/Mountain',
897 'Canada/Newfoundland',
898 'Canada/Pacific',
899 'Canada/Saskatchewan',
900 'Canada/Yukon',
901 'Chile/Continental',
902 'Chile/EasterIsland',
903 'Cuba',
904 'EET',
905 'EST',
906 'EST5EDT',
907 'Egypt',
908 'Eire',
909 'Etc/GMT',
910 'Etc/GMT+0',
911 'Etc/GMT+1',
912 'Etc/GMT+10',
913 'Etc/GMT+11',
914 'Etc/GMT+12',
915 'Etc/GMT+2',
916 'Etc/GMT+3',
917 'Etc/GMT+4',
918 'Etc/GMT+5',
919 'Etc/GMT+6',
920 'Etc/GMT+7',
921 'Etc/GMT+8',
922 'Etc/GMT+9',
923 'Etc/GMT-0',
924 'Etc/GMT-1',
925 'Etc/GMT-10',
926 'Etc/GMT-11',
927 'Etc/GMT-12',
928 'Etc/GMT-13',
929 'Etc/GMT-14',
930 'Etc/GMT-2',
931 'Etc/GMT-3',
932 'Etc/GMT-4',
933 'Etc/GMT-5',
934 'Etc/GMT-6',
935 'Etc/GMT-7',
936 'Etc/GMT-8',
937 'Etc/GMT-9',
938 'Etc/GMT0',
939 'Etc/Greenwich',
940 'Etc/UCT',
941 'Etc/UTC',
942 'Etc/Universal',
943 'Etc/Zulu',
944 'Europe/Amsterdam',
945 'Europe/Andorra',
946 'Europe/Astrakhan',
947 'Europe/Athens',
948 'Europe/Belfast',
949 'Europe/Belgrade',
950 'Europe/Berlin',
951 'Europe/Bratislava',
952 'Europe/Brussels',
953 'Europe/Bucharest',
954 'Europe/Budapest',
955 'Europe/Busingen',
956 'Europe/Chisinau',
957 'Europe/Copenhagen',
958 'Europe/Dublin',
959 'Europe/Gibraltar',
960 'Europe/Guernsey',
961 'Europe/Helsinki',
962 'Europe/Isle_of_Man',
963 'Europe/Istanbul',
964 'Europe/Jersey',
965 'Europe/Kaliningrad',
966 'Europe/Kiev',
967 'Europe/Kirov',
968 'Europe/Kyiv',
969 'Europe/Lisbon',
970 'Europe/Ljubljana',
971 'Europe/London',
972 'Europe/Luxembourg',
973 'Europe/Madrid',
974 'Europe/Malta',
975 'Europe/Mariehamn',
976 'Europe/Minsk',
977 'Europe/Monaco',
978 'Europe/Moscow',
979 'Europe/Nicosia',
980 'Europe/Oslo',
981 'Europe/Paris',
982 'Europe/Podgorica',
983 'Europe/Prague',
984 'Europe/Riga',
985 'Europe/Rome',
986 'Europe/Samara',
987 'Europe/San_Marino',
988 'Europe/Sarajevo',
989 'Europe/Saratov',
990 'Europe/Simferopol',
991 'Europe/Skopje',
992 'Europe/Sofia',
993 'Europe/Stockholm',
994 'Europe/Tallinn',
995 'Europe/Tirane',
996 'Europe/Tiraspol',
997 'Europe/Ulyanovsk',
998 'Europe/Uzhgorod',
999 'Europe/Vaduz',
1000 'Europe/Vatican',
1001 'Europe/Vienna',
1002 'Europe/Vilnius',
1003 'Europe/Volgograd',
1004 'Europe/Warsaw',
1005 'Europe/Zagreb',
1006 'Europe/Zaporozhye',
1007 'Europe/Zurich',
1008 'GB',
1009 'GB-Eire',
1010 'GMT',
1011 'GMT+0',
1012 'GMT-0',
1013 'GMT0',
1014 'Greenwich',
1015 'HST',
1016 'Hongkong',
1017 'Iceland',
1018 'Indian/Antananarivo',
1019 'Indian/Chagos',
1020 'Indian/Christmas',
1021 'Indian/Cocos',
1022 'Indian/Comoro',
1023 'Indian/Kerguelen',
1024 'Indian/Mahe',
1025 'Indian/Maldives',
1026 'Indian/Mauritius',
1027 'Indian/Mayotte',
1028 'Indian/Reunion',
1029 'Iran',
1030 'Israel',
1031 'Jamaica',
1032 'Japan',
1033 'Kwajalein',
1034 'Libya',
1035 'MET',
1036 'MST',
1037 'MST7MDT',
1038 'Mexico/BajaNorte',
1039 'Mexico/BajaSur',
1040 'Mexico/General',
1041 'NZ',
1042 'NZ-CHAT',
1043 'Navajo',
1044 'PRC',
1045 'PST8PDT',
1046 'Pacific/Apia',
1047 'Pacific/Auckland',
1048 'Pacific/Bougainville',
1049 'Pacific/Chatham',
1050 'Pacific/Chuuk',
1051 'Pacific/Easter',
1052 'Pacific/Efate',
1053 'Pacific/Enderbury',
1054 'Pacific/Fakaofo',
1055 'Pacific/Fiji',
1056 'Pacific/Funafuti',
1057 'Pacific/Galapagos',
1058 'Pacific/Gambier',
1059 'Pacific/Guadalcanal',
1060 'Pacific/Guam',
1061 'Pacific/Honolulu',
1062 'Pacific/Johnston',
1063 'Pacific/Kanton',
1064 'Pacific/Kiritimati',
1065 'Pacific/Kosrae',
1066 'Pacific/Kwajalein',
1067 'Pacific/Majuro',
1068 'Pacific/Marquesas',
1069 'Pacific/Midway',
1070 'Pacific/Nauru',
1071 'Pacific/Niue',
1072 'Pacific/Norfolk',
1073 'Pacific/Noumea',
1074 'Pacific/Pago_Pago',
1075 'Pacific/Palau',
1076 'Pacific/Pitcairn',
1077 'Pacific/Pohnpei',
1078 'Pacific/Ponape',
1079 'Pacific/Port_Moresby',
1080 'Pacific/Rarotonga',
1081 'Pacific/Saipan',
1082 'Pacific/Samoa',
1083 'Pacific/Tahiti',
1084 'Pacific/Tarawa',
1085 'Pacific/Tongatapu',
1086 'Pacific/Truk',
1087 'Pacific/Wake',
1088 'Pacific/Wallis',
1089 'Pacific/Yap',
1090 'Poland',
1091 'Portugal',
1092 'ROC',
1093 'ROK',
1094 'Singapore',
1095 'Turkey',
1096 'UCT',
1097 'US/Alaska',
1098 'US/Aleutian',
1099 'US/Arizona',
1100 'US/Central',
1101 'US/East-Indiana',
1102 'US/Eastern',
1103 'US/Hawaii',
1104 'US/Indiana-Starke',
1105 'US/Michigan',
1106 'US/Mountain',
1107 'US/Pacific',
1108 'US/Samoa',
1109 'UTC',
1110 'Universal',
1111 'W-SU',
1112 'WET',
1113 'Zulu']
1114all_timezones = LazyList(
1115 tz for tz in _all_timezones_unchecked if resource_exists(tz))
1117all_timezones_set = LazySet(all_timezones)
1118common_timezones = \
1119['Africa/Abidjan',
1120 'Africa/Accra',
1121 'Africa/Addis_Ababa',
1122 'Africa/Algiers',
1123 'Africa/Asmara',
1124 'Africa/Bamako',
1125 'Africa/Bangui',
1126 'Africa/Banjul',
1127 'Africa/Bissau',
1128 'Africa/Blantyre',
1129 'Africa/Brazzaville',
1130 'Africa/Bujumbura',
1131 'Africa/Cairo',
1132 'Africa/Casablanca',
1133 'Africa/Ceuta',
1134 'Africa/Conakry',
1135 'Africa/Dakar',
1136 'Africa/Dar_es_Salaam',
1137 'Africa/Djibouti',
1138 'Africa/Douala',
1139 'Africa/El_Aaiun',
1140 'Africa/Freetown',
1141 'Africa/Gaborone',
1142 'Africa/Harare',
1143 'Africa/Johannesburg',
1144 'Africa/Juba',
1145 'Africa/Kampala',
1146 'Africa/Khartoum',
1147 'Africa/Kigali',
1148 'Africa/Kinshasa',
1149 'Africa/Lagos',
1150 'Africa/Libreville',
1151 'Africa/Lome',
1152 'Africa/Luanda',
1153 'Africa/Lubumbashi',
1154 'Africa/Lusaka',
1155 'Africa/Malabo',
1156 'Africa/Maputo',
1157 'Africa/Maseru',
1158 'Africa/Mbabane',
1159 'Africa/Mogadishu',
1160 'Africa/Monrovia',
1161 'Africa/Nairobi',
1162 'Africa/Ndjamena',
1163 'Africa/Niamey',
1164 'Africa/Nouakchott',
1165 'Africa/Ouagadougou',
1166 'Africa/Porto-Novo',
1167 'Africa/Sao_Tome',
1168 'Africa/Tripoli',
1169 'Africa/Tunis',
1170 'Africa/Windhoek',
1171 'America/Adak',
1172 'America/Anchorage',
1173 'America/Anguilla',
1174 'America/Antigua',
1175 'America/Araguaina',
1176 'America/Argentina/Buenos_Aires',
1177 'America/Argentina/Catamarca',
1178 'America/Argentina/Cordoba',
1179 'America/Argentina/Jujuy',
1180 'America/Argentina/La_Rioja',
1181 'America/Argentina/Mendoza',
1182 'America/Argentina/Rio_Gallegos',
1183 'America/Argentina/Salta',
1184 'America/Argentina/San_Juan',
1185 'America/Argentina/San_Luis',
1186 'America/Argentina/Tucuman',
1187 'America/Argentina/Ushuaia',
1188 'America/Aruba',
1189 'America/Asuncion',
1190 'America/Atikokan',
1191 'America/Bahia',
1192 'America/Bahia_Banderas',
1193 'America/Barbados',
1194 'America/Belem',
1195 'America/Belize',
1196 'America/Blanc-Sablon',
1197 'America/Boa_Vista',
1198 'America/Bogota',
1199 'America/Boise',
1200 'America/Cambridge_Bay',
1201 'America/Campo_Grande',
1202 'America/Cancun',
1203 'America/Caracas',
1204 'America/Cayenne',
1205 'America/Cayman',
1206 'America/Chicago',
1207 'America/Chihuahua',
1208 'America/Ciudad_Juarez',
1209 'America/Costa_Rica',
1210 'America/Creston',
1211 'America/Cuiaba',
1212 'America/Curacao',
1213 'America/Danmarkshavn',
1214 'America/Dawson',
1215 'America/Dawson_Creek',
1216 'America/Denver',
1217 'America/Detroit',
1218 'America/Dominica',
1219 'America/Edmonton',
1220 'America/Eirunepe',
1221 'America/El_Salvador',
1222 'America/Fort_Nelson',
1223 'America/Fortaleza',
1224 'America/Glace_Bay',
1225 'America/Goose_Bay',
1226 'America/Grand_Turk',
1227 'America/Grenada',
1228 'America/Guadeloupe',
1229 'America/Guatemala',
1230 'America/Guayaquil',
1231 'America/Guyana',
1232 'America/Halifax',
1233 'America/Havana',
1234 'America/Hermosillo',
1235 'America/Indiana/Indianapolis',
1236 'America/Indiana/Knox',
1237 'America/Indiana/Marengo',
1238 'America/Indiana/Petersburg',
1239 'America/Indiana/Tell_City',
1240 'America/Indiana/Vevay',
1241 'America/Indiana/Vincennes',
1242 'America/Indiana/Winamac',
1243 'America/Inuvik',
1244 'America/Iqaluit',
1245 'America/Jamaica',
1246 'America/Juneau',
1247 'America/Kentucky/Louisville',
1248 'America/Kentucky/Monticello',
1249 'America/Kralendijk',
1250 'America/La_Paz',
1251 'America/Lima',
1252 'America/Los_Angeles',
1253 'America/Lower_Princes',
1254 'America/Maceio',
1255 'America/Managua',
1256 'America/Manaus',
1257 'America/Marigot',
1258 'America/Martinique',
1259 'America/Matamoros',
1260 'America/Mazatlan',
1261 'America/Menominee',
1262 'America/Merida',
1263 'America/Metlakatla',
1264 'America/Mexico_City',
1265 'America/Miquelon',
1266 'America/Moncton',
1267 'America/Monterrey',
1268 'America/Montevideo',
1269 'America/Montserrat',
1270 'America/Nassau',
1271 'America/New_York',
1272 'America/Nome',
1273 'America/Noronha',
1274 'America/North_Dakota/Beulah',
1275 'America/North_Dakota/Center',
1276 'America/North_Dakota/New_Salem',
1277 'America/Nuuk',
1278 'America/Ojinaga',
1279 'America/Panama',
1280 'America/Paramaribo',
1281 'America/Phoenix',
1282 'America/Port-au-Prince',
1283 'America/Port_of_Spain',
1284 'America/Porto_Velho',
1285 'America/Puerto_Rico',
1286 'America/Punta_Arenas',
1287 'America/Rankin_Inlet',
1288 'America/Recife',
1289 'America/Regina',
1290 'America/Resolute',
1291 'America/Rio_Branco',
1292 'America/Santarem',
1293 'America/Santiago',
1294 'America/Santo_Domingo',
1295 'America/Sao_Paulo',
1296 'America/Scoresbysund',
1297 'America/Sitka',
1298 'America/St_Barthelemy',
1299 'America/St_Johns',
1300 'America/St_Kitts',
1301 'America/St_Lucia',
1302 'America/St_Thomas',
1303 'America/St_Vincent',
1304 'America/Swift_Current',
1305 'America/Tegucigalpa',
1306 'America/Thule',
1307 'America/Tijuana',
1308 'America/Toronto',
1309 'America/Tortola',
1310 'America/Vancouver',
1311 'America/Whitehorse',
1312 'America/Winnipeg',
1313 'America/Yakutat',
1314 'Antarctica/Casey',
1315 'Antarctica/Davis',
1316 'Antarctica/DumontDUrville',
1317 'Antarctica/Macquarie',
1318 'Antarctica/Mawson',
1319 'Antarctica/McMurdo',
1320 'Antarctica/Palmer',
1321 'Antarctica/Rothera',
1322 'Antarctica/Syowa',
1323 'Antarctica/Troll',
1324 'Antarctica/Vostok',
1325 'Arctic/Longyearbyen',
1326 'Asia/Aden',
1327 'Asia/Almaty',
1328 'Asia/Amman',
1329 'Asia/Anadyr',
1330 'Asia/Aqtau',
1331 'Asia/Aqtobe',
1332 'Asia/Ashgabat',
1333 'Asia/Atyrau',
1334 'Asia/Baghdad',
1335 'Asia/Bahrain',
1336 'Asia/Baku',
1337 'Asia/Bangkok',
1338 'Asia/Barnaul',
1339 'Asia/Beirut',
1340 'Asia/Bishkek',
1341 'Asia/Brunei',
1342 'Asia/Chita',
1343 'Asia/Choibalsan',
1344 'Asia/Colombo',
1345 'Asia/Damascus',
1346 'Asia/Dhaka',
1347 'Asia/Dili',
1348 'Asia/Dubai',
1349 'Asia/Dushanbe',
1350 'Asia/Famagusta',
1351 'Asia/Gaza',
1352 'Asia/Hebron',
1353 'Asia/Ho_Chi_Minh',
1354 'Asia/Hong_Kong',
1355 'Asia/Hovd',
1356 'Asia/Irkutsk',
1357 'Asia/Jakarta',
1358 'Asia/Jayapura',
1359 'Asia/Jerusalem',
1360 'Asia/Kabul',
1361 'Asia/Kamchatka',
1362 'Asia/Karachi',
1363 'Asia/Kathmandu',
1364 'Asia/Khandyga',
1365 'Asia/Kolkata',
1366 'Asia/Krasnoyarsk',
1367 'Asia/Kuala_Lumpur',
1368 'Asia/Kuching',
1369 'Asia/Kuwait',
1370 'Asia/Macau',
1371 'Asia/Magadan',
1372 'Asia/Makassar',
1373 'Asia/Manila',
1374 'Asia/Muscat',
1375 'Asia/Nicosia',
1376 'Asia/Novokuznetsk',
1377 'Asia/Novosibirsk',
1378 'Asia/Omsk',
1379 'Asia/Oral',
1380 'Asia/Phnom_Penh',
1381 'Asia/Pontianak',
1382 'Asia/Pyongyang',
1383 'Asia/Qatar',
1384 'Asia/Qostanay',
1385 'Asia/Qyzylorda',
1386 'Asia/Riyadh',
1387 'Asia/Sakhalin',
1388 'Asia/Samarkand',
1389 'Asia/Seoul',
1390 'Asia/Shanghai',
1391 'Asia/Singapore',
1392 'Asia/Srednekolymsk',
1393 'Asia/Taipei',
1394 'Asia/Tashkent',
1395 'Asia/Tbilisi',
1396 'Asia/Tehran',
1397 'Asia/Thimphu',
1398 'Asia/Tokyo',
1399 'Asia/Tomsk',
1400 'Asia/Ulaanbaatar',
1401 'Asia/Urumqi',
1402 'Asia/Ust-Nera',
1403 'Asia/Vientiane',
1404 'Asia/Vladivostok',
1405 'Asia/Yakutsk',
1406 'Asia/Yangon',
1407 'Asia/Yekaterinburg',
1408 'Asia/Yerevan',
1409 'Atlantic/Azores',
1410 'Atlantic/Bermuda',
1411 'Atlantic/Canary',
1412 'Atlantic/Cape_Verde',
1413 'Atlantic/Faroe',
1414 'Atlantic/Madeira',
1415 'Atlantic/Reykjavik',
1416 'Atlantic/South_Georgia',
1417 'Atlantic/St_Helena',
1418 'Atlantic/Stanley',
1419 'Australia/Adelaide',
1420 'Australia/Brisbane',
1421 'Australia/Broken_Hill',
1422 'Australia/Darwin',
1423 'Australia/Eucla',
1424 'Australia/Hobart',
1425 'Australia/Lindeman',
1426 'Australia/Lord_Howe',
1427 'Australia/Melbourne',
1428 'Australia/Perth',
1429 'Australia/Sydney',
1430 'Canada/Atlantic',
1431 'Canada/Central',
1432 'Canada/Eastern',
1433 'Canada/Mountain',
1434 'Canada/Newfoundland',
1435 'Canada/Pacific',
1436 'Europe/Amsterdam',
1437 'Europe/Andorra',
1438 'Europe/Astrakhan',
1439 'Europe/Athens',
1440 'Europe/Belgrade',
1441 'Europe/Berlin',
1442 'Europe/Bratislava',
1443 'Europe/Brussels',
1444 'Europe/Bucharest',
1445 'Europe/Budapest',
1446 'Europe/Busingen',
1447 'Europe/Chisinau',
1448 'Europe/Copenhagen',
1449 'Europe/Dublin',
1450 'Europe/Gibraltar',
1451 'Europe/Guernsey',
1452 'Europe/Helsinki',
1453 'Europe/Isle_of_Man',
1454 'Europe/Istanbul',
1455 'Europe/Jersey',
1456 'Europe/Kaliningrad',
1457 'Europe/Kirov',
1458 'Europe/Kyiv',
1459 'Europe/Lisbon',
1460 'Europe/Ljubljana',
1461 'Europe/London',
1462 'Europe/Luxembourg',
1463 'Europe/Madrid',
1464 'Europe/Malta',
1465 'Europe/Mariehamn',
1466 'Europe/Minsk',
1467 'Europe/Monaco',
1468 'Europe/Moscow',
1469 'Europe/Oslo',
1470 'Europe/Paris',
1471 'Europe/Podgorica',
1472 'Europe/Prague',
1473 'Europe/Riga',
1474 'Europe/Rome',
1475 'Europe/Samara',
1476 'Europe/San_Marino',
1477 'Europe/Sarajevo',
1478 'Europe/Saratov',
1479 'Europe/Simferopol',
1480 'Europe/Skopje',
1481 'Europe/Sofia',
1482 'Europe/Stockholm',
1483 'Europe/Tallinn',
1484 'Europe/Tirane',
1485 'Europe/Ulyanovsk',
1486 'Europe/Vaduz',
1487 'Europe/Vatican',
1488 'Europe/Vienna',
1489 'Europe/Vilnius',
1490 'Europe/Volgograd',
1491 'Europe/Warsaw',
1492 'Europe/Zagreb',
1493 'Europe/Zurich',
1494 'GMT',
1495 'Indian/Antananarivo',
1496 'Indian/Chagos',
1497 'Indian/Christmas',
1498 'Indian/Cocos',
1499 'Indian/Comoro',
1500 'Indian/Kerguelen',
1501 'Indian/Mahe',
1502 'Indian/Maldives',
1503 'Indian/Mauritius',
1504 'Indian/Mayotte',
1505 'Indian/Reunion',
1506 'Pacific/Apia',
1507 'Pacific/Auckland',
1508 'Pacific/Bougainville',
1509 'Pacific/Chatham',
1510 'Pacific/Chuuk',
1511 'Pacific/Easter',
1512 'Pacific/Efate',
1513 'Pacific/Fakaofo',
1514 'Pacific/Fiji',
1515 'Pacific/Funafuti',
1516 'Pacific/Galapagos',
1517 'Pacific/Gambier',
1518 'Pacific/Guadalcanal',
1519 'Pacific/Guam',
1520 'Pacific/Honolulu',
1521 'Pacific/Kanton',
1522 'Pacific/Kiritimati',
1523 'Pacific/Kosrae',
1524 'Pacific/Kwajalein',
1525 'Pacific/Majuro',
1526 'Pacific/Marquesas',
1527 'Pacific/Midway',
1528 'Pacific/Nauru',
1529 'Pacific/Niue',
1530 'Pacific/Norfolk',
1531 'Pacific/Noumea',
1532 'Pacific/Pago_Pago',
1533 'Pacific/Palau',
1534 'Pacific/Pitcairn',
1535 'Pacific/Pohnpei',
1536 'Pacific/Port_Moresby',
1537 'Pacific/Rarotonga',
1538 'Pacific/Saipan',
1539 'Pacific/Tahiti',
1540 'Pacific/Tarawa',
1541 'Pacific/Tongatapu',
1542 'Pacific/Wake',
1543 'Pacific/Wallis',
1544 'US/Alaska',
1545 'US/Arizona',
1546 'US/Central',
1547 'US/Eastern',
1548 'US/Hawaii',
1549 'US/Mountain',
1550 'US/Pacific',
1551 'UTC']
1552common_timezones = LazyList(
1553 tz for tz in common_timezones if tz in all_timezones)
1555common_timezones_set = LazySet(common_timezones)