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

205 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 = '2026a' 

26VERSION = '2026.1.post1' # 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 ''' 

177 if zone is None: 

178 raise UnknownTimeZoneError(None) 

179 

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

181 return utc 

182 

183 try: 

184 zone = ascii(zone) 

185 except UnicodeEncodeError: 

186 # All valid timezones are ASCII 

187 raise UnknownTimeZoneError(zone) 

188 

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) 

199 

200 return _tzinfo_cache[zone] 

201 

202 

203def _unmunge_zone(zone): 

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

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

206 

207 

208_all_timezones_lower_to_standard = None 

209 

210 

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 

217 

218 

219ZERO = datetime.timedelta(0) 

220HOUR = datetime.timedelta(hours=1) 

221 

222 

223class UTC(BaseTzInfo): 

224 """UTC 

225 

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

227 instance defined beneath this class declaration. 

228 """ 

229 zone = "UTC" 

230 

231 _utcoffset = ZERO 

232 _dst = ZERO 

233 _tzname = zone 

234 

235 def fromutc(self, dt): 

236 if dt.tzinfo is None: 

237 return self.localize(dt) 

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

239 

240 def utcoffset(self, dt): 

241 return ZERO 

242 

243 def tzname(self, dt): 

244 return "UTC" 

245 

246 def dst(self, dt): 

247 return ZERO 

248 

249 def __reduce__(self): 

250 return _UTC, () 

251 

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) 

257 

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) 

265 

266 def __repr__(self): 

267 return "<UTC>" 

268 

269 def __str__(self): 

270 return "UTC" 

271 

272 

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

274 

275 

276def _UTC(): 

277 """Factory function for utc unpickling. 

278 

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

280 module global. 

281 

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. 

285 

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 

306 

307 

308_UTC.__safe_for_unpickling__ = True 

309 

310 

311def _p(*args): 

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

313 

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) 

318 

319 

320_p.__safe_for_unpickling__ = True 

321 

322 

323class _CountryTimezoneDict(LazyDict): 

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

325 in that country. 

326 

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

328 

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) 

333 

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' 

347 

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

349 dictionary. This is still supported:: 

350 

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] 

358 

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

377 

378 

379country_timezones = _CountryTimezoneDict() 

380 

381 

382class _CountryNameDict(LazyDict): 

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

384 

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

401 

402 

403country_names = _CountryNameDict() 

404 

405 

406# Time-zone info based solely on fixed offsets 

407 

408class _FixedOffset(datetime.tzinfo): 

409 

410 zone = None # to match the standard pytz API 

411 

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) 

417 

418 def utcoffset(self, dt): 

419 return self._offset 

420 

421 def __reduce__(self): 

422 return FixedOffset, (self._minutes, ) 

423 

424 def dst(self, dt): 

425 return ZERO 

426 

427 def tzname(self, dt): 

428 return None 

429 

430 def __repr__(self): 

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

432 

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) 

438 

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) 

446 

447 

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

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

450 

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' 

458 

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' 

466 

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

468 non-inclusive. 

469 

470 >>> FixedOffset(1440) 

471 Traceback (most recent call last): 

472 ... 

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

474 

475 >>> FixedOffset(-1440) 

476 Traceback (most recent call last): 

477 ... 

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

479 

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

481 

482 >>> FixedOffset(0) is UTC 

483 True 

484 

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

486 This should be true for multiple creation calls. 

487 

488 >>> FixedOffset(-330) is one 

489 True 

490 >>> FixedOffset(1380) is two 

491 True 

492 

493 It should also be true for pickling. 

494 

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 

503 

504 info = _tzinfos.get(offset) 

505 if info is None: 

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

507 

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

509 # only one 

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

511 

512 return info 

513 

514 

515FixedOffset.__safe_for_unpickling__ = True 

516 

517 

518def _test(): 

519 import doctest 

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

521 import pytz 

522 return doctest.testmod(pytz) 

523 

524 

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

1127 

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) 

1565 

1566common_timezones_set = LazySet(common_timezones)