Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pytz-2026.4-py3.11.egg/pytz/__init__.py: 54%

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

206 statements  

1''' 

2datetime.tzinfo timezone definitions generated from the 

3Olson timezone database: 

4 

5 ftp://elsie.nci.nih.gov/pub/tz*.tar.gz 

6 

7See the datetime section of the Python Library Reference for information 

8on how to use these modules. 

9''' 

10 

11import sys 

12import datetime 

13import os.path 

14 

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 

22 

23 

24# The IANA (nee Olson) database is updated several times a year. 

25OLSON_VERSION = '2026d' 

26VERSION = '2026.4' # pip compatible version number. 

27__version__ = VERSION 

28 

29OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling 

30 

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] 

39 

40 

41if sys.version_info[0] > 2: # Python 3.x 

42 

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 

46 

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. 

61 

62else: # Python 2.x 

63 

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') 

76 

77 

78def open_resource(name): 

79 """Open a resource from the zoneinfo subdir for reading. 

80 

81 Uses the pkg_resources module if available and no standard file 

82 found at the calculated location. 

83 

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 

103 

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') 

107 

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 

115 

116 if resource_stream is not None: 

117 return resource_stream(__name__, 'zoneinfo/' + name) 

118 return open(filename, 'rb') 

119 

120 

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 

135 

136 

137_tzinfo_cache = {} 

138 

139 

140def timezone(zone): 

141 r''' Return a datetime.tzinfo implementation for the given timezone 

142 

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)' 

161 

162 Raises UnknownTimeZoneError if passed an unknown zone. 

163 

164 >>> try: 

165 ... timezone('Asia/Shangri-La') 

166 ... except UnknownTimeZoneError: 

167 ... print('Unknown') 

168 Unknown 

169 

170 >>> try: 

171 ... timezone(unicode('\N{TRADE MARK SIGN}')) 

172 ... except UnknownTimeZoneError: 

173 ... print('Unknown') 

174 Unknown 

175 

176 Anything that is not a zone name is unknown too. 

177 

178 >>> try: 

179 ... timezone(False) 

180 ... except UnknownTimeZoneError: 

181 ... print('Unknown') 

182 Unknown 

183 

184 ''' 

185 if not isinstance(zone, (str, unicode, bytes)): 

186 raise UnknownTimeZoneError(zone) 

187 

188 if zone.upper() == 'UTC': 

189 return utc 

190 

191 try: 

192 zone = ascii(zone) 

193 except UnicodeEncodeError: 

194 # All valid timezones are ASCII 

195 raise UnknownTimeZoneError(zone) 

196 

197 zone = _case_insensitive_zone_lookup(_unmunge_zone(zone)) 

198 if zone not in _tzinfo_cache: 

199 if zone in all_timezones_set: # noqa 

200 fp = open_resource(zone) 

201 try: 

202 _tzinfo_cache[zone] = build_tzinfo(zone, fp) 

203 finally: 

204 fp.close() 

205 else: 

206 raise UnknownTimeZoneError(zone) 

207 

208 return _tzinfo_cache[zone] 

209 

210 

211def _unmunge_zone(zone): 

212 """Undo the time zone name munging done by older versions of pytz.""" 

213 return zone.replace('_plus_', '+').replace('_minus_', '-') 

214 

215 

216_all_timezones_lower_to_standard = None 

217 

218 

219def _case_insensitive_zone_lookup(zone): 

220 """case-insensitively matching timezone, else return zone unchanged""" 

221 global _all_timezones_lower_to_standard 

222 if _all_timezones_lower_to_standard is None: 

223 _all_timezones_lower_to_standard = dict((tz.lower(), tz) for tz in _all_timezones_unchecked) # noqa 

224 return _all_timezones_lower_to_standard.get(zone.lower()) or zone # noqa 

225 

226 

227ZERO = datetime.timedelta(0) 

228HOUR = datetime.timedelta(hours=1) 

229 

230 

231class UTC(BaseTzInfo): 

232 """UTC 

233 

234 Optimized UTC implementation. It unpickles using the single module global 

235 instance defined beneath this class declaration. 

236 """ 

237 zone = "UTC" 

238 

239 _utcoffset = ZERO 

240 _dst = ZERO 

241 _tzname = zone 

242 

243 def fromutc(self, dt): 

244 if dt.tzinfo is None: 

245 return self.localize(dt) 

246 return super(utc.__class__, self).fromutc(dt) 

247 

248 def utcoffset(self, dt): 

249 return ZERO 

250 

251 def tzname(self, dt): 

252 return "UTC" 

253 

254 def dst(self, dt): 

255 return ZERO 

256 

257 def __reduce__(self): 

258 return _UTC, () 

259 

260 def localize(self, dt, is_dst=False): 

261 '''Convert naive time to local time''' 

262 if dt.tzinfo is not None: 

263 raise ValueError('Not naive datetime (tzinfo is already set)') 

264 return dt.replace(tzinfo=self) 

265 

266 def normalize(self, dt, is_dst=False): 

267 '''Correct the timezone information on the given datetime''' 

268 if dt.tzinfo is self: 

269 return dt 

270 if dt.tzinfo is None: 

271 raise ValueError('Naive time - no tzinfo set') 

272 return dt.astimezone(self) 

273 

274 def __repr__(self): 

275 return "<UTC>" 

276 

277 def __str__(self): 

278 return "UTC" 

279 

280 

281UTC = utc = UTC() # UTC is a singleton 

282 

283 

284def _UTC(): 

285 """Factory function for utc unpickling. 

286 

287 Makes sure that unpickling a utc instance always returns the same 

288 module global. 

289 

290 These examples belong in the UTC class above, but it is obscured; or in 

291 the README.rst, but we are not depending on Python 2.4 so integrating 

292 the README.rst examples with the unit tests is not trivial. 

293 

294 >>> import datetime, pickle 

295 >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc) 

296 >>> naive = dt.replace(tzinfo=None) 

297 >>> p = pickle.dumps(dt, 1) 

298 >>> naive_p = pickle.dumps(naive, 1) 

299 >>> len(p) - len(naive_p) 

300 17 

301 >>> new = pickle.loads(p) 

302 >>> new == dt 

303 True 

304 >>> new is dt 

305 False 

306 >>> new.tzinfo is dt.tzinfo 

307 True 

308 >>> utc is UTC is timezone('UTC') 

309 True 

310 >>> utc is timezone('GMT') 

311 False 

312 """ 

313 return utc 

314 

315 

316_UTC.__safe_for_unpickling__ = True 

317 

318 

319def _p(*args): 

320 """Factory function for unpickling pytz tzinfo instances. 

321 

322 Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle 

323 by shortening the path. 

324 """ 

325 return unpickler(*args) 

326 

327 

328_p.__safe_for_unpickling__ = True 

329 

330 

331class _CountryTimezoneDict(LazyDict): 

332 """Map ISO 3166 country code to a list of timezone names commonly used 

333 in that country. 

334 

335 iso3166_code is the two letter code used to identify the country. 

336 

337 >>> def print_list(list_of_strings): 

338 ... 'We use a helper so doctests work under Python 2.3 -> 3.x' 

339 ... for s in list_of_strings: 

340 ... print(s) 

341 

342 >>> print_list(country_timezones['nz']) 

343 Pacific/Auckland 

344 Pacific/Chatham 

345 >>> print_list(country_timezones['ch']) 

346 Europe/Zurich 

347 >>> print_list(country_timezones['CH']) 

348 Europe/Zurich 

349 >>> print_list(country_timezones[unicode('ch')]) 

350 Europe/Zurich 

351 >>> print_list(country_timezones['XXX']) 

352 Traceback (most recent call last): 

353 ... 

354 KeyError: 'XXX' 

355 

356 Previously, this information was exposed as a function rather than a 

357 dictionary. This is still supported:: 

358 

359 >>> print_list(country_timezones('nz')) 

360 Pacific/Auckland 

361 Pacific/Chatham 

362 """ 

363 def __call__(self, iso3166_code): 

364 """Backwards compatibility.""" 

365 return self[iso3166_code] 

366 

367 def _fill(self): 

368 data = {} 

369 zone_tab = open_resource('zone.tab') 

370 try: 

371 for line in zone_tab: 

372 line = line.decode('UTF-8') 

373 if line.startswith('#'): 

374 continue 

375 code, coordinates, zone = line.split(None, 4)[:3] 

376 if zone not in all_timezones_set: # noqa 

377 continue 

378 try: 

379 data[code].append(zone) 

380 except KeyError: 

381 data[code] = [zone] 

382 self.data = data 

383 finally: 

384 zone_tab.close() 

385 

386 

387country_timezones = _CountryTimezoneDict() 

388 

389 

390class _CountryNameDict(LazyDict): 

391 '''Dictionary proving ISO3166 code -> English name. 

392 

393 >>> print(country_names['au']) 

394 Australia 

395 ''' 

396 def _fill(self): 

397 data = {} 

398 zone_tab = open_resource('iso3166.tab') 

399 try: 

400 for line in zone_tab.readlines(): 

401 line = line.decode('UTF-8') 

402 if line.startswith('#'): 

403 continue 

404 code, name = line.split(None, 1) 

405 data[code] = name.strip() 

406 self.data = data 

407 finally: 

408 zone_tab.close() 

409 

410 

411country_names = _CountryNameDict() 

412 

413 

414# Time-zone info based solely on fixed offsets 

415 

416class _FixedOffset(BaseTzInfo): 

417 

418 zone = None # to match the standard pytz API 

419 

420 def __init__(self, minutes): 

421 if abs(minutes) >= 1440: 

422 raise ValueError("absolute offset is too large", minutes) 

423 self._minutes = minutes 

424 self._utcoffset = datetime.timedelta(minutes=minutes) 

425 

426 def utcoffset(self, dt): 

427 return self._utcoffset 

428 

429 def __reduce__(self): 

430 return FixedOffset, (self._minutes, ) 

431 

432 def dst(self, dt): 

433 return ZERO 

434 

435 def tzname(self, dt): 

436 return None 

437 

438 def __repr__(self): 

439 return 'pytz.FixedOffset(%d)' % self._minutes 

440 

441 # BaseTzInfo.__str__ returns self.zone, which is None here. 

442 __str__ = __repr__ 

443 

444 def localize(self, dt, is_dst=False): 

445 '''Convert naive time to local time''' 

446 if dt.tzinfo is not None: 

447 raise ValueError('Not naive datetime (tzinfo is already set)') 

448 return dt.replace(tzinfo=self) 

449 

450 def normalize(self, dt, is_dst=False): 

451 '''Correct the timezone information on the given datetime''' 

452 if dt.tzinfo is self: 

453 return dt 

454 if dt.tzinfo is None: 

455 raise ValueError('Naive time - no tzinfo set') 

456 return dt.astimezone(self) 

457 

458 

459def FixedOffset(offset, _tzinfos={}): 

460 """return a fixed-offset timezone based off a number of minutes. 

461 

462 >>> one = FixedOffset(-330) 

463 >>> one 

464 pytz.FixedOffset(-330) 

465 >>> str(one.utcoffset(datetime.datetime.now())) 

466 '-1 day, 18:30:00' 

467 >>> str(one.dst(datetime.datetime.now())) 

468 '0:00:00' 

469 

470 >>> two = FixedOffset(1380) 

471 >>> two 

472 pytz.FixedOffset(1380) 

473 >>> str(two.utcoffset(datetime.datetime.now())) 

474 '23:00:00' 

475 >>> str(two.dst(datetime.datetime.now())) 

476 '0:00:00' 

477 

478 The datetime.timedelta must be between the range of -1 and 1 day, 

479 non-inclusive. 

480 

481 >>> FixedOffset(1440) 

482 Traceback (most recent call last): 

483 ... 

484 ValueError: ('absolute offset is too large', 1440) 

485 

486 >>> FixedOffset(-1440) 

487 Traceback (most recent call last): 

488 ... 

489 ValueError: ('absolute offset is too large', -1440) 

490 

491 An offset of 0 is special-cased to return UTC. 

492 

493 >>> FixedOffset(0) is UTC 

494 True 

495 

496 There should always be only one instance of a FixedOffset per timedelta. 

497 This should be true for multiple creation calls. 

498 

499 >>> FixedOffset(-330) is one 

500 True 

501 >>> FixedOffset(1380) is two 

502 True 

503 

504 It should also be true for pickling. 

505 

506 >>> import pickle 

507 >>> pickle.loads(pickle.dumps(one)) is one 

508 True 

509 >>> pickle.loads(pickle.dumps(two)) is two 

510 True 

511 """ 

512 if offset == 0: 

513 return UTC 

514 

515 info = _tzinfos.get(offset) 

516 if info is None: 

517 # We haven't seen this one before. we need to save it. 

518 

519 # Use setdefault to avoid a race condition and make sure we have 

520 # only one 

521 info = _tzinfos.setdefault(offset, _FixedOffset(offset)) 

522 

523 return info 

524 

525 

526FixedOffset.__safe_for_unpickling__ = True 

527 

528 

529def _test(): 

530 import doctest 

531 sys.path.insert(0, os.pardir) 

532 import pytz 

533 return doctest.testmod(pytz) 

534 

535 

536if __name__ == '__main__': 

537 _test() 

538_all_timezones_unchecked = \ 

539['Africa/Abidjan', 

540 'Africa/Accra', 

541 'Africa/Addis_Ababa', 

542 'Africa/Algiers', 

543 'Africa/Asmara', 

544 'Africa/Asmera', 

545 'Africa/Bamako', 

546 'Africa/Bangui', 

547 'Africa/Banjul', 

548 'Africa/Bissau', 

549 'Africa/Blantyre', 

550 'Africa/Brazzaville', 

551 'Africa/Bujumbura', 

552 'Africa/Cairo', 

553 'Africa/Casablanca', 

554 'Africa/Ceuta', 

555 'Africa/Conakry', 

556 'Africa/Dakar', 

557 'Africa/Dar_es_Salaam', 

558 'Africa/Djibouti', 

559 'Africa/Douala', 

560 'Africa/El_Aaiun', 

561 'Africa/Freetown', 

562 'Africa/Gaborone', 

563 'Africa/Harare', 

564 'Africa/Johannesburg', 

565 'Africa/Juba', 

566 'Africa/Kampala', 

567 'Africa/Khartoum', 

568 'Africa/Kigali', 

569 'Africa/Kinshasa', 

570 'Africa/Lagos', 

571 'Africa/Libreville', 

572 'Africa/Lome', 

573 'Africa/Luanda', 

574 'Africa/Lubumbashi', 

575 'Africa/Lusaka', 

576 'Africa/Malabo', 

577 'Africa/Maputo', 

578 'Africa/Maseru', 

579 'Africa/Mbabane', 

580 'Africa/Mogadishu', 

581 'Africa/Monrovia', 

582 'Africa/Nairobi', 

583 'Africa/Ndjamena', 

584 'Africa/Niamey', 

585 'Africa/Nouakchott', 

586 'Africa/Ouagadougou', 

587 'Africa/Porto-Novo', 

588 'Africa/Sao_Tome', 

589 'Africa/Timbuktu', 

590 'Africa/Tripoli', 

591 'Africa/Tunis', 

592 'Africa/Windhoek', 

593 'America/Adak', 

594 'America/Anchorage', 

595 'America/Anguilla', 

596 'America/Antigua', 

597 'America/Araguaina', 

598 'America/Argentina/Buenos_Aires', 

599 'America/Argentina/Catamarca', 

600 'America/Argentina/ComodRivadavia', 

601 'America/Argentina/Cordoba', 

602 'America/Argentina/Jujuy', 

603 'America/Argentina/La_Rioja', 

604 'America/Argentina/Mendoza', 

605 'America/Argentina/Rio_Gallegos', 

606 'America/Argentina/Salta', 

607 'America/Argentina/San_Juan', 

608 'America/Argentina/San_Luis', 

609 'America/Argentina/Tucuman', 

610 'America/Argentina/Ushuaia', 

611 'America/Aruba', 

612 'America/Asuncion', 

613 'America/Atikokan', 

614 'America/Atka', 

615 'America/Bahia', 

616 'America/Bahia_Banderas', 

617 'America/Barbados', 

618 'America/Belem', 

619 'America/Belize', 

620 'America/Blanc-Sablon', 

621 'America/Boa_Vista', 

622 'America/Bogota', 

623 'America/Boise', 

624 'America/Buenos_Aires', 

625 'America/Cambridge_Bay', 

626 'America/Campo_Grande', 

627 'America/Cancun', 

628 'America/Caracas', 

629 'America/Catamarca', 

630 'America/Cayenne', 

631 'America/Cayman', 

632 'America/Chicago', 

633 'America/Chihuahua', 

634 'America/Ciudad_Juarez', 

635 'America/Coral_Harbour', 

636 'America/Cordoba', 

637 'America/Costa_Rica', 

638 'America/Coyhaique', 

639 'America/Creston', 

640 'America/Cuiaba', 

641 'America/Curacao', 

642 'America/Danmarkshavn', 

643 'America/Dawson', 

644 'America/Dawson_Creek', 

645 'America/Denver', 

646 'America/Detroit', 

647 'America/Dominica', 

648 'America/Edmonton', 

649 'America/Eirunepe', 

650 'America/El_Salvador', 

651 'America/Ensenada', 

652 'America/Fort_Nelson', 

653 'America/Fort_Wayne', 

654 'America/Fortaleza', 

655 'America/Glace_Bay', 

656 'America/Godthab', 

657 'America/Goose_Bay', 

658 'America/Grand_Turk', 

659 'America/Grenada', 

660 'America/Guadeloupe', 

661 'America/Guatemala', 

662 'America/Guayaquil', 

663 'America/Guyana', 

664 'America/Halifax', 

665 'America/Havana', 

666 'America/Hermosillo', 

667 'America/Indiana/Indianapolis', 

668 'America/Indiana/Knox', 

669 'America/Indiana/Marengo', 

670 'America/Indiana/Petersburg', 

671 'America/Indiana/Tell_City', 

672 'America/Indiana/Vevay', 

673 'America/Indiana/Vincennes', 

674 'America/Indiana/Winamac', 

675 'America/Indianapolis', 

676 'America/Inuvik', 

677 'America/Iqaluit', 

678 'America/Jamaica', 

679 'America/Jujuy', 

680 'America/Juneau', 

681 'America/Kentucky/Louisville', 

682 'America/Kentucky/Monticello', 

683 'America/Knox_IN', 

684 'America/Kralendijk', 

685 'America/La_Paz', 

686 'America/Lima', 

687 'America/Los_Angeles', 

688 'America/Louisville', 

689 'America/Lower_Princes', 

690 'America/Maceio', 

691 'America/Managua', 

692 'America/Manaus', 

693 'America/Marigot', 

694 'America/Martinique', 

695 'America/Matamoros', 

696 'America/Mazatlan', 

697 'America/Mendoza', 

698 'America/Menominee', 

699 'America/Merida', 

700 'America/Metlakatla', 

701 'America/Mexico_City', 

702 'America/Miquelon', 

703 'America/Moncton', 

704 'America/Monterrey', 

705 'America/Montevideo', 

706 'America/Montreal', 

707 'America/Montserrat', 

708 'America/Nassau', 

709 'America/New_York', 

710 'America/Nipigon', 

711 'America/Nome', 

712 'America/Noronha', 

713 'America/North_Dakota/Beulah', 

714 'America/North_Dakota/Center', 

715 'America/North_Dakota/New_Salem', 

716 'America/Nuuk', 

717 'America/Ojinaga', 

718 'America/Panama', 

719 'America/Pangnirtung', 

720 'America/Paramaribo', 

721 'America/Phoenix', 

722 'America/Port-au-Prince', 

723 'America/Port_of_Spain', 

724 'America/Porto_Acre', 

725 'America/Porto_Velho', 

726 'America/Puerto_Rico', 

727 'America/Punta_Arenas', 

728 'America/Rainy_River', 

729 'America/Rankin_Inlet', 

730 'America/Recife', 

731 'America/Regina', 

732 'America/Resolute', 

733 'America/Rio_Branco', 

734 'America/Rosario', 

735 'America/Santa_Isabel', 

736 'America/Santarem', 

737 'America/Santiago', 

738 'America/Santo_Domingo', 

739 'America/Sao_Paulo', 

740 'America/Scoresbysund', 

741 'America/Shiprock', 

742 'America/Sitka', 

743 'America/St_Barthelemy', 

744 'America/St_Johns', 

745 'America/St_Kitts', 

746 'America/St_Lucia', 

747 'America/St_Thomas', 

748 'America/St_Vincent', 

749 'America/Swift_Current', 

750 'America/Tegucigalpa', 

751 'America/Thule', 

752 'America/Thunder_Bay', 

753 'America/Tijuana', 

754 'America/Toronto', 

755 'America/Tortola', 

756 'America/Vancouver', 

757 'America/Virgin', 

758 'America/Whitehorse', 

759 'America/Winnipeg', 

760 'America/Yakutat', 

761 'America/Yellowknife', 

762 'Antarctica/Casey', 

763 'Antarctica/Davis', 

764 'Antarctica/DumontDUrville', 

765 'Antarctica/Macquarie', 

766 'Antarctica/Mawson', 

767 'Antarctica/McMurdo', 

768 'Antarctica/Palmer', 

769 'Antarctica/Rothera', 

770 'Antarctica/South_Pole', 

771 'Antarctica/Syowa', 

772 'Antarctica/Troll', 

773 'Antarctica/Vostok', 

774 'Arctic/Longyearbyen', 

775 'Asia/Aden', 

776 'Asia/Almaty', 

777 'Asia/Amman', 

778 'Asia/Anadyr', 

779 'Asia/Aqtau', 

780 'Asia/Aqtobe', 

781 'Asia/Ashgabat', 

782 'Asia/Ashkhabad', 

783 'Asia/Atyrau', 

784 'Asia/Baghdad', 

785 'Asia/Bahrain', 

786 'Asia/Baku', 

787 'Asia/Bangkok', 

788 'Asia/Barnaul', 

789 'Asia/Beirut', 

790 'Asia/Bishkek', 

791 'Asia/Brunei', 

792 'Asia/Calcutta', 

793 'Asia/Chita', 

794 'Asia/Choibalsan', 

795 'Asia/Chongqing', 

796 'Asia/Chungking', 

797 'Asia/Colombo', 

798 'Asia/Dacca', 

799 'Asia/Damascus', 

800 'Asia/Dhaka', 

801 'Asia/Dili', 

802 'Asia/Dubai', 

803 'Asia/Dushanbe', 

804 'Asia/Famagusta', 

805 'Asia/Gaza', 

806 'Asia/Harbin', 

807 'Asia/Hebron', 

808 'Asia/Ho_Chi_Minh', 

809 'Asia/Hong_Kong', 

810 'Asia/Hovd', 

811 'Asia/Irkutsk', 

812 'Asia/Istanbul', 

813 'Asia/Jakarta', 

814 'Asia/Jayapura', 

815 'Asia/Jerusalem', 

816 'Asia/Kabul', 

817 'Asia/Kamchatka', 

818 'Asia/Karachi', 

819 'Asia/Kashgar', 

820 'Asia/Kathmandu', 

821 'Asia/Katmandu', 

822 'Asia/Khandyga', 

823 'Asia/Kolkata', 

824 'Asia/Krasnoyarsk', 

825 'Asia/Kuala_Lumpur', 

826 'Asia/Kuching', 

827 'Asia/Kuwait', 

828 'Asia/Macao', 

829 'Asia/Macau', 

830 'Asia/Magadan', 

831 'Asia/Makassar', 

832 'Asia/Manila', 

833 'Asia/Muscat', 

834 'Asia/Nicosia', 

835 'Asia/Novokuznetsk', 

836 'Asia/Novosibirsk', 

837 'Asia/Omsk', 

838 'Asia/Oral', 

839 'Asia/Phnom_Penh', 

840 'Asia/Pontianak', 

841 'Asia/Pyongyang', 

842 'Asia/Qatar', 

843 'Asia/Qostanay', 

844 'Asia/Qyzylorda', 

845 'Asia/Rangoon', 

846 'Asia/Riyadh', 

847 'Asia/Saigon', 

848 'Asia/Sakhalin', 

849 'Asia/Samarkand', 

850 'Asia/Seoul', 

851 'Asia/Shanghai', 

852 'Asia/Singapore', 

853 'Asia/Srednekolymsk', 

854 'Asia/Taipei', 

855 'Asia/Tashkent', 

856 'Asia/Tbilisi', 

857 'Asia/Tehran', 

858 'Asia/Tel_Aviv', 

859 'Asia/Thimbu', 

860 'Asia/Thimphu', 

861 'Asia/Tokyo', 

862 'Asia/Tomsk', 

863 'Asia/Ujung_Pandang', 

864 'Asia/Ulaanbaatar', 

865 'Asia/Ulan_Bator', 

866 'Asia/Urumqi', 

867 'Asia/Ust-Nera', 

868 'Asia/Vientiane', 

869 'Asia/Vladivostok', 

870 'Asia/Yakutsk', 

871 'Asia/Yangon', 

872 'Asia/Yekaterinburg', 

873 'Asia/Yerevan', 

874 'Atlantic/Azores', 

875 'Atlantic/Bermuda', 

876 'Atlantic/Canary', 

877 'Atlantic/Cape_Verde', 

878 'Atlantic/Faeroe', 

879 'Atlantic/Faroe', 

880 'Atlantic/Jan_Mayen', 

881 'Atlantic/Madeira', 

882 'Atlantic/Reykjavik', 

883 'Atlantic/South_Georgia', 

884 'Atlantic/St_Helena', 

885 'Atlantic/Stanley', 

886 'Australia/ACT', 

887 'Australia/Adelaide', 

888 'Australia/Brisbane', 

889 'Australia/Broken_Hill', 

890 'Australia/Canberra', 

891 'Australia/Currie', 

892 'Australia/Darwin', 

893 'Australia/Eucla', 

894 'Australia/Hobart', 

895 'Australia/LHI', 

896 'Australia/Lindeman', 

897 'Australia/Lord_Howe', 

898 'Australia/Melbourne', 

899 'Australia/NSW', 

900 'Australia/North', 

901 'Australia/Perth', 

902 'Australia/Queensland', 

903 'Australia/South', 

904 'Australia/Sydney', 

905 'Australia/Tasmania', 

906 'Australia/Victoria', 

907 'Australia/West', 

908 'Australia/Yancowinna', 

909 'Brazil/Acre', 

910 'Brazil/DeNoronha', 

911 'Brazil/East', 

912 'Brazil/West', 

913 'CET', 

914 'CST6CDT', 

915 'Canada/Atlantic', 

916 'Canada/Central', 

917 'Canada/Eastern', 

918 'Canada/Mountain', 

919 'Canada/Newfoundland', 

920 'Canada/Pacific', 

921 'Canada/Saskatchewan', 

922 'Canada/Yukon', 

923 'Chile/Continental', 

924 'Chile/EasterIsland', 

925 'Cuba', 

926 'EET', 

927 'EST', 

928 'EST5EDT', 

929 'Egypt', 

930 'Eire', 

931 'Etc/GMT', 

932 'Etc/GMT+0', 

933 'Etc/GMT+1', 

934 'Etc/GMT+10', 

935 'Etc/GMT+11', 

936 'Etc/GMT+12', 

937 'Etc/GMT+2', 

938 'Etc/GMT+3', 

939 'Etc/GMT+4', 

940 'Etc/GMT+5', 

941 'Etc/GMT+6', 

942 'Etc/GMT+7', 

943 'Etc/GMT+8', 

944 'Etc/GMT+9', 

945 'Etc/GMT-0', 

946 'Etc/GMT-1', 

947 'Etc/GMT-10', 

948 'Etc/GMT-11', 

949 'Etc/GMT-12', 

950 'Etc/GMT-13', 

951 'Etc/GMT-14', 

952 'Etc/GMT-2', 

953 'Etc/GMT-3', 

954 'Etc/GMT-4', 

955 'Etc/GMT-5', 

956 'Etc/GMT-6', 

957 'Etc/GMT-7', 

958 'Etc/GMT-8', 

959 'Etc/GMT-9', 

960 'Etc/GMT0', 

961 'Etc/Greenwich', 

962 'Etc/UCT', 

963 'Etc/UTC', 

964 'Etc/Universal', 

965 'Etc/Zulu', 

966 'Europe/Amsterdam', 

967 'Europe/Andorra', 

968 'Europe/Astrakhan', 

969 'Europe/Athens', 

970 'Europe/Belfast', 

971 'Europe/Belgrade', 

972 'Europe/Berlin', 

973 'Europe/Bratislava', 

974 'Europe/Brussels', 

975 'Europe/Bucharest', 

976 'Europe/Budapest', 

977 'Europe/Busingen', 

978 'Europe/Chisinau', 

979 'Europe/Copenhagen', 

980 'Europe/Dublin', 

981 'Europe/Gibraltar', 

982 'Europe/Guernsey', 

983 'Europe/Helsinki', 

984 'Europe/Isle_of_Man', 

985 'Europe/Istanbul', 

986 'Europe/Jersey', 

987 'Europe/Kaliningrad', 

988 'Europe/Kiev', 

989 'Europe/Kirov', 

990 'Europe/Kyiv', 

991 'Europe/Lisbon', 

992 'Europe/Ljubljana', 

993 'Europe/London', 

994 'Europe/Luxembourg', 

995 'Europe/Madrid', 

996 'Europe/Malta', 

997 'Europe/Mariehamn', 

998 'Europe/Minsk', 

999 'Europe/Monaco', 

1000 'Europe/Moscow', 

1001 'Europe/Nicosia', 

1002 'Europe/Oslo', 

1003 'Europe/Paris', 

1004 'Europe/Podgorica', 

1005 'Europe/Prague', 

1006 'Europe/Riga', 

1007 'Europe/Rome', 

1008 'Europe/Samara', 

1009 'Europe/San_Marino', 

1010 'Europe/Sarajevo', 

1011 'Europe/Saratov', 

1012 'Europe/Simferopol', 

1013 'Europe/Skopje', 

1014 'Europe/Sofia', 

1015 'Europe/Stockholm', 

1016 'Europe/Tallinn', 

1017 'Europe/Tirane', 

1018 'Europe/Tiraspol', 

1019 'Europe/Ulyanovsk', 

1020 'Europe/Uzhgorod', 

1021 'Europe/Vaduz', 

1022 'Europe/Vatican', 

1023 'Europe/Vienna', 

1024 'Europe/Vilnius', 

1025 'Europe/Volgograd', 

1026 'Europe/Warsaw', 

1027 'Europe/Zagreb', 

1028 'Europe/Zaporozhye', 

1029 'Europe/Zurich', 

1030 'GB', 

1031 'GB-Eire', 

1032 'GMT', 

1033 'GMT+0', 

1034 'GMT-0', 

1035 'GMT0', 

1036 'Greenwich', 

1037 'HST', 

1038 'Hongkong', 

1039 'Iceland', 

1040 'Indian/Antananarivo', 

1041 'Indian/Chagos', 

1042 'Indian/Christmas', 

1043 'Indian/Cocos', 

1044 'Indian/Comoro', 

1045 'Indian/Kerguelen', 

1046 'Indian/Mahe', 

1047 'Indian/Maldives', 

1048 'Indian/Mauritius', 

1049 'Indian/Mayotte', 

1050 'Indian/Reunion', 

1051 'Iran', 

1052 'Israel', 

1053 'Jamaica', 

1054 'Japan', 

1055 'Kwajalein', 

1056 'Libya', 

1057 'MET', 

1058 'MST', 

1059 'MST7MDT', 

1060 'Mexico/BajaNorte', 

1061 'Mexico/BajaSur', 

1062 'Mexico/General', 

1063 'NZ', 

1064 'NZ-CHAT', 

1065 'Navajo', 

1066 'PRC', 

1067 'PST8PDT', 

1068 'Pacific/Apia', 

1069 'Pacific/Auckland', 

1070 'Pacific/Bougainville', 

1071 'Pacific/Chatham', 

1072 'Pacific/Chuuk', 

1073 'Pacific/Easter', 

1074 'Pacific/Efate', 

1075 'Pacific/Enderbury', 

1076 'Pacific/Fakaofo', 

1077 'Pacific/Fiji', 

1078 'Pacific/Funafuti', 

1079 'Pacific/Galapagos', 

1080 'Pacific/Gambier', 

1081 'Pacific/Guadalcanal', 

1082 'Pacific/Guam', 

1083 'Pacific/Honolulu', 

1084 'Pacific/Johnston', 

1085 'Pacific/Kanton', 

1086 'Pacific/Kiritimati', 

1087 'Pacific/Kosrae', 

1088 'Pacific/Kwajalein', 

1089 'Pacific/Majuro', 

1090 'Pacific/Marquesas', 

1091 'Pacific/Midway', 

1092 'Pacific/Nauru', 

1093 'Pacific/Niue', 

1094 'Pacific/Norfolk', 

1095 'Pacific/Noumea', 

1096 'Pacific/Pago_Pago', 

1097 'Pacific/Palau', 

1098 'Pacific/Pitcairn', 

1099 'Pacific/Pohnpei', 

1100 'Pacific/Ponape', 

1101 'Pacific/Port_Moresby', 

1102 'Pacific/Rarotonga', 

1103 'Pacific/Saipan', 

1104 'Pacific/Samoa', 

1105 'Pacific/Tahiti', 

1106 'Pacific/Tarawa', 

1107 'Pacific/Tongatapu', 

1108 'Pacific/Truk', 

1109 'Pacific/Wake', 

1110 'Pacific/Wallis', 

1111 'Pacific/Yap', 

1112 'Poland', 

1113 'Portugal', 

1114 'ROC', 

1115 'ROK', 

1116 'Singapore', 

1117 'Turkey', 

1118 'UCT', 

1119 'US/Alaska', 

1120 'US/Aleutian', 

1121 'US/Arizona', 

1122 'US/Central', 

1123 'US/East-Indiana', 

1124 'US/Eastern', 

1125 'US/Hawaii', 

1126 'US/Indiana-Starke', 

1127 'US/Michigan', 

1128 'US/Mountain', 

1129 'US/Pacific', 

1130 'US/Samoa', 

1131 'UTC', 

1132 'Universal', 

1133 'W-SU', 

1134 'WET', 

1135 'Zulu'] 

1136all_timezones = LazyList( 

1137 tz for tz in _all_timezones_unchecked if resource_exists(tz)) 

1138 

1139all_timezones_set = LazySet(all_timezones) 

1140common_timezones = \ 

1141['Africa/Abidjan', 

1142 'Africa/Accra', 

1143 'Africa/Addis_Ababa', 

1144 'Africa/Algiers', 

1145 'Africa/Asmara', 

1146 'Africa/Bamako', 

1147 'Africa/Bangui', 

1148 'Africa/Banjul', 

1149 'Africa/Bissau', 

1150 'Africa/Blantyre', 

1151 'Africa/Brazzaville', 

1152 'Africa/Bujumbura', 

1153 'Africa/Cairo', 

1154 'Africa/Casablanca', 

1155 'Africa/Ceuta', 

1156 'Africa/Conakry', 

1157 'Africa/Dakar', 

1158 'Africa/Dar_es_Salaam', 

1159 'Africa/Djibouti', 

1160 'Africa/Douala', 

1161 'Africa/El_Aaiun', 

1162 'Africa/Freetown', 

1163 'Africa/Gaborone', 

1164 'Africa/Harare', 

1165 'Africa/Johannesburg', 

1166 'Africa/Juba', 

1167 'Africa/Kampala', 

1168 'Africa/Khartoum', 

1169 'Africa/Kigali', 

1170 'Africa/Kinshasa', 

1171 'Africa/Lagos', 

1172 'Africa/Libreville', 

1173 'Africa/Lome', 

1174 'Africa/Luanda', 

1175 'Africa/Lubumbashi', 

1176 'Africa/Lusaka', 

1177 'Africa/Malabo', 

1178 'Africa/Maputo', 

1179 'Africa/Maseru', 

1180 'Africa/Mbabane', 

1181 'Africa/Mogadishu', 

1182 'Africa/Monrovia', 

1183 'Africa/Nairobi', 

1184 'Africa/Ndjamena', 

1185 'Africa/Niamey', 

1186 'Africa/Nouakchott', 

1187 'Africa/Ouagadougou', 

1188 'Africa/Porto-Novo', 

1189 'Africa/Sao_Tome', 

1190 'Africa/Tripoli', 

1191 'Africa/Tunis', 

1192 'Africa/Windhoek', 

1193 'America/Adak', 

1194 'America/Anchorage', 

1195 'America/Anguilla', 

1196 'America/Antigua', 

1197 'America/Araguaina', 

1198 'America/Argentina/Buenos_Aires', 

1199 'America/Argentina/Catamarca', 

1200 'America/Argentina/Cordoba', 

1201 'America/Argentina/Jujuy', 

1202 'America/Argentina/La_Rioja', 

1203 'America/Argentina/Mendoza', 

1204 'America/Argentina/Rio_Gallegos', 

1205 'America/Argentina/Salta', 

1206 'America/Argentina/San_Juan', 

1207 'America/Argentina/San_Luis', 

1208 'America/Argentina/Tucuman', 

1209 'America/Argentina/Ushuaia', 

1210 'America/Aruba', 

1211 'America/Asuncion', 

1212 'America/Atikokan', 

1213 'America/Bahia', 

1214 'America/Bahia_Banderas', 

1215 'America/Barbados', 

1216 'America/Belem', 

1217 'America/Belize', 

1218 'America/Blanc-Sablon', 

1219 'America/Boa_Vista', 

1220 'America/Bogota', 

1221 'America/Boise', 

1222 'America/Cambridge_Bay', 

1223 'America/Campo_Grande', 

1224 'America/Cancun', 

1225 'America/Caracas', 

1226 'America/Cayenne', 

1227 'America/Cayman', 

1228 'America/Chicago', 

1229 'America/Chihuahua', 

1230 'America/Ciudad_Juarez', 

1231 'America/Costa_Rica', 

1232 'America/Coyhaique', 

1233 'America/Creston', 

1234 'America/Cuiaba', 

1235 'America/Curacao', 

1236 'America/Danmarkshavn', 

1237 'America/Dawson', 

1238 'America/Dawson_Creek', 

1239 'America/Denver', 

1240 'America/Detroit', 

1241 'America/Dominica', 

1242 'America/Edmonton', 

1243 'America/Eirunepe', 

1244 'America/El_Salvador', 

1245 'America/Fort_Nelson', 

1246 'America/Fortaleza', 

1247 'America/Glace_Bay', 

1248 'America/Goose_Bay', 

1249 'America/Grand_Turk', 

1250 'America/Grenada', 

1251 'America/Guadeloupe', 

1252 'America/Guatemala', 

1253 'America/Guayaquil', 

1254 'America/Guyana', 

1255 'America/Halifax', 

1256 'America/Havana', 

1257 'America/Hermosillo', 

1258 'America/Indiana/Indianapolis', 

1259 'America/Indiana/Knox', 

1260 'America/Indiana/Marengo', 

1261 'America/Indiana/Petersburg', 

1262 'America/Indiana/Tell_City', 

1263 'America/Indiana/Vevay', 

1264 'America/Indiana/Vincennes', 

1265 'America/Indiana/Winamac', 

1266 'America/Inuvik', 

1267 'America/Iqaluit', 

1268 'America/Jamaica', 

1269 'America/Juneau', 

1270 'America/Kentucky/Louisville', 

1271 'America/Kentucky/Monticello', 

1272 'America/Kralendijk', 

1273 'America/La_Paz', 

1274 'America/Lima', 

1275 'America/Los_Angeles', 

1276 'America/Lower_Princes', 

1277 'America/Maceio', 

1278 'America/Managua', 

1279 'America/Manaus', 

1280 'America/Marigot', 

1281 'America/Martinique', 

1282 'America/Matamoros', 

1283 'America/Mazatlan', 

1284 'America/Menominee', 

1285 'America/Merida', 

1286 'America/Metlakatla', 

1287 'America/Mexico_City', 

1288 'America/Miquelon', 

1289 'America/Moncton', 

1290 'America/Monterrey', 

1291 'America/Montevideo', 

1292 'America/Montserrat', 

1293 'America/Nassau', 

1294 'America/New_York', 

1295 'America/Nome', 

1296 'America/Noronha', 

1297 'America/North_Dakota/Beulah', 

1298 'America/North_Dakota/Center', 

1299 'America/North_Dakota/New_Salem', 

1300 'America/Nuuk', 

1301 'America/Ojinaga', 

1302 'America/Panama', 

1303 'America/Paramaribo', 

1304 'America/Phoenix', 

1305 'America/Port-au-Prince', 

1306 'America/Port_of_Spain', 

1307 'America/Porto_Velho', 

1308 'America/Puerto_Rico', 

1309 'America/Punta_Arenas', 

1310 'America/Rankin_Inlet', 

1311 'America/Recife', 

1312 'America/Regina', 

1313 'America/Resolute', 

1314 'America/Rio_Branco', 

1315 'America/Santarem', 

1316 'America/Santiago', 

1317 'America/Santo_Domingo', 

1318 'America/Sao_Paulo', 

1319 'America/Scoresbysund', 

1320 'America/Sitka', 

1321 'America/St_Barthelemy', 

1322 'America/St_Johns', 

1323 'America/St_Kitts', 

1324 'America/St_Lucia', 

1325 'America/St_Thomas', 

1326 'America/St_Vincent', 

1327 'America/Swift_Current', 

1328 'America/Tegucigalpa', 

1329 'America/Thule', 

1330 'America/Tijuana', 

1331 'America/Toronto', 

1332 'America/Tortola', 

1333 'America/Vancouver', 

1334 'America/Whitehorse', 

1335 'America/Winnipeg', 

1336 'America/Yakutat', 

1337 'Antarctica/Casey', 

1338 'Antarctica/Davis', 

1339 'Antarctica/DumontDUrville', 

1340 'Antarctica/Macquarie', 

1341 'Antarctica/Mawson', 

1342 'Antarctica/McMurdo', 

1343 'Antarctica/Palmer', 

1344 'Antarctica/Rothera', 

1345 'Antarctica/Syowa', 

1346 'Antarctica/Troll', 

1347 'Antarctica/Vostok', 

1348 'Arctic/Longyearbyen', 

1349 'Asia/Aden', 

1350 'Asia/Almaty', 

1351 'Asia/Amman', 

1352 'Asia/Anadyr', 

1353 'Asia/Aqtau', 

1354 'Asia/Aqtobe', 

1355 'Asia/Ashgabat', 

1356 'Asia/Atyrau', 

1357 'Asia/Baghdad', 

1358 'Asia/Bahrain', 

1359 'Asia/Baku', 

1360 'Asia/Bangkok', 

1361 'Asia/Barnaul', 

1362 'Asia/Beirut', 

1363 'Asia/Bishkek', 

1364 'Asia/Brunei', 

1365 'Asia/Chita', 

1366 'Asia/Colombo', 

1367 'Asia/Damascus', 

1368 'Asia/Dhaka', 

1369 'Asia/Dili', 

1370 'Asia/Dubai', 

1371 'Asia/Dushanbe', 

1372 'Asia/Famagusta', 

1373 'Asia/Gaza', 

1374 'Asia/Hebron', 

1375 'Asia/Ho_Chi_Minh', 

1376 'Asia/Hong_Kong', 

1377 'Asia/Hovd', 

1378 'Asia/Irkutsk', 

1379 'Asia/Jakarta', 

1380 'Asia/Jayapura', 

1381 'Asia/Jerusalem', 

1382 'Asia/Kabul', 

1383 'Asia/Kamchatka', 

1384 'Asia/Karachi', 

1385 'Asia/Kathmandu', 

1386 'Asia/Khandyga', 

1387 'Asia/Kolkata', 

1388 'Asia/Krasnoyarsk', 

1389 'Asia/Kuala_Lumpur', 

1390 'Asia/Kuching', 

1391 'Asia/Kuwait', 

1392 'Asia/Macau', 

1393 'Asia/Magadan', 

1394 'Asia/Makassar', 

1395 'Asia/Manila', 

1396 'Asia/Muscat', 

1397 'Asia/Nicosia', 

1398 'Asia/Novokuznetsk', 

1399 'Asia/Novosibirsk', 

1400 'Asia/Omsk', 

1401 'Asia/Oral', 

1402 'Asia/Phnom_Penh', 

1403 'Asia/Pontianak', 

1404 'Asia/Pyongyang', 

1405 'Asia/Qatar', 

1406 'Asia/Qostanay', 

1407 'Asia/Qyzylorda', 

1408 'Asia/Riyadh', 

1409 'Asia/Sakhalin', 

1410 'Asia/Samarkand', 

1411 'Asia/Seoul', 

1412 'Asia/Shanghai', 

1413 'Asia/Singapore', 

1414 'Asia/Srednekolymsk', 

1415 'Asia/Taipei', 

1416 'Asia/Tashkent', 

1417 'Asia/Tbilisi', 

1418 'Asia/Tehran', 

1419 'Asia/Thimphu', 

1420 'Asia/Tokyo', 

1421 'Asia/Tomsk', 

1422 'Asia/Ulaanbaatar', 

1423 'Asia/Urumqi', 

1424 'Asia/Ust-Nera', 

1425 'Asia/Vientiane', 

1426 'Asia/Vladivostok', 

1427 'Asia/Yakutsk', 

1428 'Asia/Yangon', 

1429 'Asia/Yekaterinburg', 

1430 'Asia/Yerevan', 

1431 'Atlantic/Azores', 

1432 'Atlantic/Bermuda', 

1433 'Atlantic/Canary', 

1434 'Atlantic/Cape_Verde', 

1435 'Atlantic/Faroe', 

1436 'Atlantic/Madeira', 

1437 'Atlantic/Reykjavik', 

1438 'Atlantic/South_Georgia', 

1439 'Atlantic/St_Helena', 

1440 'Atlantic/Stanley', 

1441 'Australia/Adelaide', 

1442 'Australia/Brisbane', 

1443 'Australia/Broken_Hill', 

1444 'Australia/Darwin', 

1445 'Australia/Eucla', 

1446 'Australia/Hobart', 

1447 'Australia/Lindeman', 

1448 'Australia/Lord_Howe', 

1449 'Australia/Melbourne', 

1450 'Australia/Perth', 

1451 'Australia/Sydney', 

1452 'Canada/Atlantic', 

1453 'Canada/Central', 

1454 'Canada/Eastern', 

1455 'Canada/Mountain', 

1456 'Canada/Newfoundland', 

1457 'Canada/Pacific', 

1458 'Europe/Amsterdam', 

1459 'Europe/Andorra', 

1460 'Europe/Astrakhan', 

1461 'Europe/Athens', 

1462 'Europe/Belgrade', 

1463 'Europe/Berlin', 

1464 'Europe/Bratislava', 

1465 'Europe/Brussels', 

1466 'Europe/Bucharest', 

1467 'Europe/Budapest', 

1468 'Europe/Busingen', 

1469 'Europe/Chisinau', 

1470 'Europe/Copenhagen', 

1471 'Europe/Dublin', 

1472 'Europe/Gibraltar', 

1473 'Europe/Guernsey', 

1474 'Europe/Helsinki', 

1475 'Europe/Isle_of_Man', 

1476 'Europe/Istanbul', 

1477 'Europe/Jersey', 

1478 'Europe/Kaliningrad', 

1479 'Europe/Kirov', 

1480 'Europe/Kyiv', 

1481 'Europe/Lisbon', 

1482 'Europe/Ljubljana', 

1483 'Europe/London', 

1484 'Europe/Luxembourg', 

1485 'Europe/Madrid', 

1486 'Europe/Malta', 

1487 'Europe/Mariehamn', 

1488 'Europe/Minsk', 

1489 'Europe/Monaco', 

1490 'Europe/Moscow', 

1491 'Europe/Oslo', 

1492 'Europe/Paris', 

1493 'Europe/Podgorica', 

1494 'Europe/Prague', 

1495 'Europe/Riga', 

1496 'Europe/Rome', 

1497 'Europe/Samara', 

1498 'Europe/San_Marino', 

1499 'Europe/Sarajevo', 

1500 'Europe/Saratov', 

1501 'Europe/Simferopol', 

1502 'Europe/Skopje', 

1503 'Europe/Sofia', 

1504 'Europe/Stockholm', 

1505 'Europe/Tallinn', 

1506 'Europe/Tirane', 

1507 'Europe/Ulyanovsk', 

1508 'Europe/Vaduz', 

1509 'Europe/Vatican', 

1510 'Europe/Vienna', 

1511 'Europe/Vilnius', 

1512 'Europe/Volgograd', 

1513 'Europe/Warsaw', 

1514 'Europe/Zagreb', 

1515 'Europe/Zurich', 

1516 'GMT', 

1517 'Indian/Antananarivo', 

1518 'Indian/Chagos', 

1519 'Indian/Christmas', 

1520 'Indian/Cocos', 

1521 'Indian/Comoro', 

1522 'Indian/Kerguelen', 

1523 'Indian/Mahe', 

1524 'Indian/Maldives', 

1525 'Indian/Mauritius', 

1526 'Indian/Mayotte', 

1527 'Indian/Reunion', 

1528 'Pacific/Apia', 

1529 'Pacific/Auckland', 

1530 'Pacific/Bougainville', 

1531 'Pacific/Chatham', 

1532 'Pacific/Chuuk', 

1533 'Pacific/Easter', 

1534 'Pacific/Efate', 

1535 'Pacific/Fakaofo', 

1536 'Pacific/Fiji', 

1537 'Pacific/Funafuti', 

1538 'Pacific/Galapagos', 

1539 'Pacific/Gambier', 

1540 'Pacific/Guadalcanal', 

1541 'Pacific/Guam', 

1542 'Pacific/Honolulu', 

1543 'Pacific/Kanton', 

1544 'Pacific/Kiritimati', 

1545 'Pacific/Kosrae', 

1546 'Pacific/Kwajalein', 

1547 'Pacific/Majuro', 

1548 'Pacific/Marquesas', 

1549 'Pacific/Midway', 

1550 'Pacific/Nauru', 

1551 'Pacific/Niue', 

1552 'Pacific/Norfolk', 

1553 'Pacific/Noumea', 

1554 'Pacific/Pago_Pago', 

1555 'Pacific/Palau', 

1556 'Pacific/Pitcairn', 

1557 'Pacific/Pohnpei', 

1558 'Pacific/Port_Moresby', 

1559 'Pacific/Rarotonga', 

1560 'Pacific/Saipan', 

1561 'Pacific/Tahiti', 

1562 'Pacific/Tarawa', 

1563 'Pacific/Tongatapu', 

1564 'Pacific/Wake', 

1565 'Pacific/Wallis', 

1566 'US/Alaska', 

1567 'US/Arizona', 

1568 'US/Central', 

1569 'US/Eastern', 

1570 'US/Hawaii', 

1571 'US/Mountain', 

1572 'US/Pacific', 

1573 'UTC'] 

1574common_timezones = LazyList( 

1575 tz for tz in common_timezones if tz in all_timezones) 

1576 

1577common_timezones_set = LazySet(common_timezones)