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