Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pytz/__init__.py: 37%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

198 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 = '2024a' 

26VERSION = '2024.1' # 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 # http://bugs.launchpad.net/bugs/383171 - we avoid using this 

99 # unless absolutely necessary to help when a broken version of 

100 # pkg_resources is installed. 

101 try: 

102 from pkg_resources import resource_stream 

103 except ImportError: 

104 resource_stream = None 

105 

106 if resource_stream is not None: 

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

108 return open(filename, 'rb') 

109 

110 

111def resource_exists(name): 

112 """Return true if the given resource exists""" 

113 try: 

114 if os.environ.get('PYTZ_SKIPEXISTSCHECK', ''): 

115 # In "standard" distributions, we can assume that 

116 # all the listed timezones are present. As an 

117 # import-speed optimization, you can set the 

118 # PYTZ_SKIPEXISTSCHECK flag to skip checking 

119 # for the presence of the resource file on disk. 

120 return True 

121 open_resource(name).close() 

122 return True 

123 except IOError: 

124 return False 

125 

126 

127_tzinfo_cache = {} 

128 

129 

130def timezone(zone): 

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

132 

133 >>> from datetime import datetime, timedelta 

134 >>> utc = timezone('UTC') 

135 >>> eastern = timezone('US/Eastern') 

136 >>> eastern.zone 

137 'US/Eastern' 

138 >>> timezone(unicode('US/Eastern')) is eastern 

139 True 

140 >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc) 

141 >>> loc_dt = utc_dt.astimezone(eastern) 

142 >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)' 

143 >>> loc_dt.strftime(fmt) 

144 '2002-10-27 01:00:00 EST (-0500)' 

145 >>> (loc_dt - timedelta(minutes=10)).strftime(fmt) 

146 '2002-10-27 00:50:00 EST (-0500)' 

147 >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt) 

148 '2002-10-27 01:50:00 EDT (-0400)' 

149 >>> (loc_dt + timedelta(minutes=10)).strftime(fmt) 

150 '2002-10-27 01:10:00 EST (-0500)' 

151 

152 Raises UnknownTimeZoneError if passed an unknown zone. 

153 

154 >>> try: 

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

156 ... except UnknownTimeZoneError: 

157 ... print('Unknown') 

158 Unknown 

159 

160 >>> try: 

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

162 ... except UnknownTimeZoneError: 

163 ... print('Unknown') 

164 Unknown 

165 

166 ''' 

167 if zone is None: 

168 raise UnknownTimeZoneError(None) 

169 

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

171 return utc 

172 

173 try: 

174 zone = ascii(zone) 

175 except UnicodeEncodeError: 

176 # All valid timezones are ASCII 

177 raise UnknownTimeZoneError(zone) 

178 

179 zone = _case_insensitive_zone_lookup(_unmunge_zone(zone)) 

180 if zone not in _tzinfo_cache: 

181 if zone in all_timezones_set: # noqa 

182 fp = open_resource(zone) 

183 try: 

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

185 finally: 

186 fp.close() 

187 else: 

188 raise UnknownTimeZoneError(zone) 

189 

190 return _tzinfo_cache[zone] 

191 

192 

193def _unmunge_zone(zone): 

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

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

196 

197 

198_all_timezones_lower_to_standard = None 

199 

200 

201def _case_insensitive_zone_lookup(zone): 

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

203 global _all_timezones_lower_to_standard 

204 if _all_timezones_lower_to_standard is None: 

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

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

207 

208 

209ZERO = datetime.timedelta(0) 

210HOUR = datetime.timedelta(hours=1) 

211 

212 

213class UTC(BaseTzInfo): 

214 """UTC 

215 

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

217 instance defined beneath this class declaration. 

218 """ 

219 zone = "UTC" 

220 

221 _utcoffset = ZERO 

222 _dst = ZERO 

223 _tzname = zone 

224 

225 def fromutc(self, dt): 

226 if dt.tzinfo is None: 

227 return self.localize(dt) 

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

229 

230 def utcoffset(self, dt): 

231 return ZERO 

232 

233 def tzname(self, dt): 

234 return "UTC" 

235 

236 def dst(self, dt): 

237 return ZERO 

238 

239 def __reduce__(self): 

240 return _UTC, () 

241 

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

243 '''Convert naive time to local time''' 

244 if dt.tzinfo is not None: 

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

246 return dt.replace(tzinfo=self) 

247 

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

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

250 if dt.tzinfo is self: 

251 return dt 

252 if dt.tzinfo is None: 

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

254 return dt.astimezone(self) 

255 

256 def __repr__(self): 

257 return "<UTC>" 

258 

259 def __str__(self): 

260 return "UTC" 

261 

262 

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

264 

265 

266def _UTC(): 

267 """Factory function for utc unpickling. 

268 

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

270 module global. 

271 

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

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

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

275 

276 >>> import datetime, pickle 

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

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

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

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

281 >>> len(p) - len(naive_p) 

282 17 

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

284 >>> new == dt 

285 True 

286 >>> new is dt 

287 False 

288 >>> new.tzinfo is dt.tzinfo 

289 True 

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

291 True 

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

293 False 

294 """ 

295 return utc 

296 

297 

298_UTC.__safe_for_unpickling__ = True 

299 

300 

301def _p(*args): 

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

303 

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

305 by shortening the path. 

306 """ 

307 return unpickler(*args) 

308 

309 

310_p.__safe_for_unpickling__ = True 

311 

312 

313class _CountryTimezoneDict(LazyDict): 

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

315 in that country. 

316 

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

318 

319 >>> def print_list(list_of_strings): 

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

321 ... for s in list_of_strings: 

322 ... print(s) 

323 

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

325 Pacific/Auckland 

326 Pacific/Chatham 

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

328 Europe/Zurich 

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

330 Europe/Zurich 

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

332 Europe/Zurich 

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

334 Traceback (most recent call last): 

335 ... 

336 KeyError: 'XXX' 

337 

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

339 dictionary. This is still supported:: 

340 

341 >>> print_list(country_timezones('nz')) 

342 Pacific/Auckland 

343 Pacific/Chatham 

344 """ 

345 def __call__(self, iso3166_code): 

346 """Backwards compatibility.""" 

347 return self[iso3166_code] 

348 

349 def _fill(self): 

350 data = {} 

351 zone_tab = open_resource('zone.tab') 

352 try: 

353 for line in zone_tab: 

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

355 if line.startswith('#'): 

356 continue 

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

358 if zone not in all_timezones_set: # noqa 

359 continue 

360 try: 

361 data[code].append(zone) 

362 except KeyError: 

363 data[code] = [zone] 

364 self.data = data 

365 finally: 

366 zone_tab.close() 

367 

368 

369country_timezones = _CountryTimezoneDict() 

370 

371 

372class _CountryNameDict(LazyDict): 

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

374 

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

376 Australia 

377 ''' 

378 def _fill(self): 

379 data = {} 

380 zone_tab = open_resource('iso3166.tab') 

381 try: 

382 for line in zone_tab.readlines(): 

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

384 if line.startswith('#'): 

385 continue 

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

387 data[code] = name.strip() 

388 self.data = data 

389 finally: 

390 zone_tab.close() 

391 

392 

393country_names = _CountryNameDict() 

394 

395 

396# Time-zone info based solely on fixed offsets 

397 

398class _FixedOffset(datetime.tzinfo): 

399 

400 zone = None # to match the standard pytz API 

401 

402 def __init__(self, minutes): 

403 if abs(minutes) >= 1440: 

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

405 self._minutes = minutes 

406 self._offset = datetime.timedelta(minutes=minutes) 

407 

408 def utcoffset(self, dt): 

409 return self._offset 

410 

411 def __reduce__(self): 

412 return FixedOffset, (self._minutes, ) 

413 

414 def dst(self, dt): 

415 return ZERO 

416 

417 def tzname(self, dt): 

418 return None 

419 

420 def __repr__(self): 

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

422 

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

424 '''Convert naive time to local time''' 

425 if dt.tzinfo is not None: 

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

427 return dt.replace(tzinfo=self) 

428 

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

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

431 if dt.tzinfo is self: 

432 return dt 

433 if dt.tzinfo is None: 

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

435 return dt.astimezone(self) 

436 

437 

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

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

440 

441 >>> one = FixedOffset(-330) 

442 >>> one 

443 pytz.FixedOffset(-330) 

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

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

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

447 '0:00:00' 

448 

449 >>> two = FixedOffset(1380) 

450 >>> two 

451 pytz.FixedOffset(1380) 

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

453 '23:00:00' 

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

455 '0:00:00' 

456 

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

458 non-inclusive. 

459 

460 >>> FixedOffset(1440) 

461 Traceback (most recent call last): 

462 ... 

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

464 

465 >>> FixedOffset(-1440) 

466 Traceback (most recent call last): 

467 ... 

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

469 

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

471 

472 >>> FixedOffset(0) is UTC 

473 True 

474 

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

476 This should be true for multiple creation calls. 

477 

478 >>> FixedOffset(-330) is one 

479 True 

480 >>> FixedOffset(1380) is two 

481 True 

482 

483 It should also be true for pickling. 

484 

485 >>> import pickle 

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

487 True 

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

489 True 

490 """ 

491 if offset == 0: 

492 return UTC 

493 

494 info = _tzinfos.get(offset) 

495 if info is None: 

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

497 

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

499 # only one 

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

501 

502 return info 

503 

504 

505FixedOffset.__safe_for_unpickling__ = True 

506 

507 

508def _test(): 

509 import doctest 

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

511 import pytz 

512 return doctest.testmod(pytz) 

513 

514 

515if __name__ == '__main__': 

516 _test() 

517_all_timezones_unchecked = \ 

518['Africa/Abidjan', 

519 'Africa/Accra', 

520 'Africa/Addis_Ababa', 

521 'Africa/Algiers', 

522 'Africa/Asmara', 

523 'Africa/Asmera', 

524 'Africa/Bamako', 

525 'Africa/Bangui', 

526 'Africa/Banjul', 

527 'Africa/Bissau', 

528 'Africa/Blantyre', 

529 'Africa/Brazzaville', 

530 'Africa/Bujumbura', 

531 'Africa/Cairo', 

532 'Africa/Casablanca', 

533 'Africa/Ceuta', 

534 'Africa/Conakry', 

535 'Africa/Dakar', 

536 'Africa/Dar_es_Salaam', 

537 'Africa/Djibouti', 

538 'Africa/Douala', 

539 'Africa/El_Aaiun', 

540 'Africa/Freetown', 

541 'Africa/Gaborone', 

542 'Africa/Harare', 

543 'Africa/Johannesburg', 

544 'Africa/Juba', 

545 'Africa/Kampala', 

546 'Africa/Khartoum', 

547 'Africa/Kigali', 

548 'Africa/Kinshasa', 

549 'Africa/Lagos', 

550 'Africa/Libreville', 

551 'Africa/Lome', 

552 'Africa/Luanda', 

553 'Africa/Lubumbashi', 

554 'Africa/Lusaka', 

555 'Africa/Malabo', 

556 'Africa/Maputo', 

557 'Africa/Maseru', 

558 'Africa/Mbabane', 

559 'Africa/Mogadishu', 

560 'Africa/Monrovia', 

561 'Africa/Nairobi', 

562 'Africa/Ndjamena', 

563 'Africa/Niamey', 

564 'Africa/Nouakchott', 

565 'Africa/Ouagadougou', 

566 'Africa/Porto-Novo', 

567 'Africa/Sao_Tome', 

568 'Africa/Timbuktu', 

569 'Africa/Tripoli', 

570 'Africa/Tunis', 

571 'Africa/Windhoek', 

572 'America/Adak', 

573 'America/Anchorage', 

574 'America/Anguilla', 

575 'America/Antigua', 

576 'America/Araguaina', 

577 'America/Argentina/Buenos_Aires', 

578 'America/Argentina/Catamarca', 

579 'America/Argentina/ComodRivadavia', 

580 'America/Argentina/Cordoba', 

581 'America/Argentina/Jujuy', 

582 'America/Argentina/La_Rioja', 

583 'America/Argentina/Mendoza', 

584 'America/Argentina/Rio_Gallegos', 

585 'America/Argentina/Salta', 

586 'America/Argentina/San_Juan', 

587 'America/Argentina/San_Luis', 

588 'America/Argentina/Tucuman', 

589 'America/Argentina/Ushuaia', 

590 'America/Aruba', 

591 'America/Asuncion', 

592 'America/Atikokan', 

593 'America/Atka', 

594 'America/Bahia', 

595 'America/Bahia_Banderas', 

596 'America/Barbados', 

597 'America/Belem', 

598 'America/Belize', 

599 'America/Blanc-Sablon', 

600 'America/Boa_Vista', 

601 'America/Bogota', 

602 'America/Boise', 

603 'America/Buenos_Aires', 

604 'America/Cambridge_Bay', 

605 'America/Campo_Grande', 

606 'America/Cancun', 

607 'America/Caracas', 

608 'America/Catamarca', 

609 'America/Cayenne', 

610 'America/Cayman', 

611 'America/Chicago', 

612 'America/Chihuahua', 

613 'America/Ciudad_Juarez', 

614 'America/Coral_Harbour', 

615 'America/Cordoba', 

616 'America/Costa_Rica', 

617 'America/Creston', 

618 'America/Cuiaba', 

619 'America/Curacao', 

620 'America/Danmarkshavn', 

621 'America/Dawson', 

622 'America/Dawson_Creek', 

623 'America/Denver', 

624 'America/Detroit', 

625 'America/Dominica', 

626 'America/Edmonton', 

627 'America/Eirunepe', 

628 'America/El_Salvador', 

629 'America/Ensenada', 

630 'America/Fort_Nelson', 

631 'America/Fort_Wayne', 

632 'America/Fortaleza', 

633 'America/Glace_Bay', 

634 'America/Godthab', 

635 'America/Goose_Bay', 

636 'America/Grand_Turk', 

637 'America/Grenada', 

638 'America/Guadeloupe', 

639 'America/Guatemala', 

640 'America/Guayaquil', 

641 'America/Guyana', 

642 'America/Halifax', 

643 'America/Havana', 

644 'America/Hermosillo', 

645 'America/Indiana/Indianapolis', 

646 'America/Indiana/Knox', 

647 'America/Indiana/Marengo', 

648 'America/Indiana/Petersburg', 

649 'America/Indiana/Tell_City', 

650 'America/Indiana/Vevay', 

651 'America/Indiana/Vincennes', 

652 'America/Indiana/Winamac', 

653 'America/Indianapolis', 

654 'America/Inuvik', 

655 'America/Iqaluit', 

656 'America/Jamaica', 

657 'America/Jujuy', 

658 'America/Juneau', 

659 'America/Kentucky/Louisville', 

660 'America/Kentucky/Monticello', 

661 'America/Knox_IN', 

662 'America/Kralendijk', 

663 'America/La_Paz', 

664 'America/Lima', 

665 'America/Los_Angeles', 

666 'America/Louisville', 

667 'America/Lower_Princes', 

668 'America/Maceio', 

669 'America/Managua', 

670 'America/Manaus', 

671 'America/Marigot', 

672 'America/Martinique', 

673 'America/Matamoros', 

674 'America/Mazatlan', 

675 'America/Mendoza', 

676 'America/Menominee', 

677 'America/Merida', 

678 'America/Metlakatla', 

679 'America/Mexico_City', 

680 'America/Miquelon', 

681 'America/Moncton', 

682 'America/Monterrey', 

683 'America/Montevideo', 

684 'America/Montreal', 

685 'America/Montserrat', 

686 'America/Nassau', 

687 'America/New_York', 

688 'America/Nipigon', 

689 'America/Nome', 

690 'America/Noronha', 

691 'America/North_Dakota/Beulah', 

692 'America/North_Dakota/Center', 

693 'America/North_Dakota/New_Salem', 

694 'America/Nuuk', 

695 'America/Ojinaga', 

696 'America/Panama', 

697 'America/Pangnirtung', 

698 'America/Paramaribo', 

699 'America/Phoenix', 

700 'America/Port-au-Prince', 

701 'America/Port_of_Spain', 

702 'America/Porto_Acre', 

703 'America/Porto_Velho', 

704 'America/Puerto_Rico', 

705 'America/Punta_Arenas', 

706 'America/Rainy_River', 

707 'America/Rankin_Inlet', 

708 'America/Recife', 

709 'America/Regina', 

710 'America/Resolute', 

711 'America/Rio_Branco', 

712 'America/Rosario', 

713 'America/Santa_Isabel', 

714 'America/Santarem', 

715 'America/Santiago', 

716 'America/Santo_Domingo', 

717 'America/Sao_Paulo', 

718 'America/Scoresbysund', 

719 'America/Shiprock', 

720 'America/Sitka', 

721 'America/St_Barthelemy', 

722 'America/St_Johns', 

723 'America/St_Kitts', 

724 'America/St_Lucia', 

725 'America/St_Thomas', 

726 'America/St_Vincent', 

727 'America/Swift_Current', 

728 'America/Tegucigalpa', 

729 'America/Thule', 

730 'America/Thunder_Bay', 

731 'America/Tijuana', 

732 'America/Toronto', 

733 'America/Tortola', 

734 'America/Vancouver', 

735 'America/Virgin', 

736 'America/Whitehorse', 

737 'America/Winnipeg', 

738 'America/Yakutat', 

739 'America/Yellowknife', 

740 'Antarctica/Casey', 

741 'Antarctica/Davis', 

742 'Antarctica/DumontDUrville', 

743 'Antarctica/Macquarie', 

744 'Antarctica/Mawson', 

745 'Antarctica/McMurdo', 

746 'Antarctica/Palmer', 

747 'Antarctica/Rothera', 

748 'Antarctica/South_Pole', 

749 'Antarctica/Syowa', 

750 'Antarctica/Troll', 

751 'Antarctica/Vostok', 

752 'Arctic/Longyearbyen', 

753 'Asia/Aden', 

754 'Asia/Almaty', 

755 'Asia/Amman', 

756 'Asia/Anadyr', 

757 'Asia/Aqtau', 

758 'Asia/Aqtobe', 

759 'Asia/Ashgabat', 

760 'Asia/Ashkhabad', 

761 'Asia/Atyrau', 

762 'Asia/Baghdad', 

763 'Asia/Bahrain', 

764 'Asia/Baku', 

765 'Asia/Bangkok', 

766 'Asia/Barnaul', 

767 'Asia/Beirut', 

768 'Asia/Bishkek', 

769 'Asia/Brunei', 

770 'Asia/Calcutta', 

771 'Asia/Chita', 

772 'Asia/Choibalsan', 

773 'Asia/Chongqing', 

774 'Asia/Chungking', 

775 'Asia/Colombo', 

776 'Asia/Dacca', 

777 'Asia/Damascus', 

778 'Asia/Dhaka', 

779 'Asia/Dili', 

780 'Asia/Dubai', 

781 'Asia/Dushanbe', 

782 'Asia/Famagusta', 

783 'Asia/Gaza', 

784 'Asia/Harbin', 

785 'Asia/Hebron', 

786 'Asia/Ho_Chi_Minh', 

787 'Asia/Hong_Kong', 

788 'Asia/Hovd', 

789 'Asia/Irkutsk', 

790 'Asia/Istanbul', 

791 'Asia/Jakarta', 

792 'Asia/Jayapura', 

793 'Asia/Jerusalem', 

794 'Asia/Kabul', 

795 'Asia/Kamchatka', 

796 'Asia/Karachi', 

797 'Asia/Kashgar', 

798 'Asia/Kathmandu', 

799 'Asia/Katmandu', 

800 'Asia/Khandyga', 

801 'Asia/Kolkata', 

802 'Asia/Krasnoyarsk', 

803 'Asia/Kuala_Lumpur', 

804 'Asia/Kuching', 

805 'Asia/Kuwait', 

806 'Asia/Macao', 

807 'Asia/Macau', 

808 'Asia/Magadan', 

809 'Asia/Makassar', 

810 'Asia/Manila', 

811 'Asia/Muscat', 

812 'Asia/Nicosia', 

813 'Asia/Novokuznetsk', 

814 'Asia/Novosibirsk', 

815 'Asia/Omsk', 

816 'Asia/Oral', 

817 'Asia/Phnom_Penh', 

818 'Asia/Pontianak', 

819 'Asia/Pyongyang', 

820 'Asia/Qatar', 

821 'Asia/Qostanay', 

822 'Asia/Qyzylorda', 

823 'Asia/Rangoon', 

824 'Asia/Riyadh', 

825 'Asia/Saigon', 

826 'Asia/Sakhalin', 

827 'Asia/Samarkand', 

828 'Asia/Seoul', 

829 'Asia/Shanghai', 

830 'Asia/Singapore', 

831 'Asia/Srednekolymsk', 

832 'Asia/Taipei', 

833 'Asia/Tashkent', 

834 'Asia/Tbilisi', 

835 'Asia/Tehran', 

836 'Asia/Tel_Aviv', 

837 'Asia/Thimbu', 

838 'Asia/Thimphu', 

839 'Asia/Tokyo', 

840 'Asia/Tomsk', 

841 'Asia/Ujung_Pandang', 

842 'Asia/Ulaanbaatar', 

843 'Asia/Ulan_Bator', 

844 'Asia/Urumqi', 

845 'Asia/Ust-Nera', 

846 'Asia/Vientiane', 

847 'Asia/Vladivostok', 

848 'Asia/Yakutsk', 

849 'Asia/Yangon', 

850 'Asia/Yekaterinburg', 

851 'Asia/Yerevan', 

852 'Atlantic/Azores', 

853 'Atlantic/Bermuda', 

854 'Atlantic/Canary', 

855 'Atlantic/Cape_Verde', 

856 'Atlantic/Faeroe', 

857 'Atlantic/Faroe', 

858 'Atlantic/Jan_Mayen', 

859 'Atlantic/Madeira', 

860 'Atlantic/Reykjavik', 

861 'Atlantic/South_Georgia', 

862 'Atlantic/St_Helena', 

863 'Atlantic/Stanley', 

864 'Australia/ACT', 

865 'Australia/Adelaide', 

866 'Australia/Brisbane', 

867 'Australia/Broken_Hill', 

868 'Australia/Canberra', 

869 'Australia/Currie', 

870 'Australia/Darwin', 

871 'Australia/Eucla', 

872 'Australia/Hobart', 

873 'Australia/LHI', 

874 'Australia/Lindeman', 

875 'Australia/Lord_Howe', 

876 'Australia/Melbourne', 

877 'Australia/NSW', 

878 'Australia/North', 

879 'Australia/Perth', 

880 'Australia/Queensland', 

881 'Australia/South', 

882 'Australia/Sydney', 

883 'Australia/Tasmania', 

884 'Australia/Victoria', 

885 'Australia/West', 

886 'Australia/Yancowinna', 

887 'Brazil/Acre', 

888 'Brazil/DeNoronha', 

889 'Brazil/East', 

890 'Brazil/West', 

891 'CET', 

892 'CST6CDT', 

893 'Canada/Atlantic', 

894 'Canada/Central', 

895 'Canada/Eastern', 

896 'Canada/Mountain', 

897 'Canada/Newfoundland', 

898 'Canada/Pacific', 

899 'Canada/Saskatchewan', 

900 'Canada/Yukon', 

901 'Chile/Continental', 

902 'Chile/EasterIsland', 

903 'Cuba', 

904 'EET', 

905 'EST', 

906 'EST5EDT', 

907 'Egypt', 

908 'Eire', 

909 'Etc/GMT', 

910 'Etc/GMT+0', 

911 'Etc/GMT+1', 

912 'Etc/GMT+10', 

913 'Etc/GMT+11', 

914 'Etc/GMT+12', 

915 'Etc/GMT+2', 

916 'Etc/GMT+3', 

917 'Etc/GMT+4', 

918 'Etc/GMT+5', 

919 'Etc/GMT+6', 

920 'Etc/GMT+7', 

921 'Etc/GMT+8', 

922 'Etc/GMT+9', 

923 'Etc/GMT-0', 

924 'Etc/GMT-1', 

925 'Etc/GMT-10', 

926 'Etc/GMT-11', 

927 'Etc/GMT-12', 

928 'Etc/GMT-13', 

929 'Etc/GMT-14', 

930 'Etc/GMT-2', 

931 'Etc/GMT-3', 

932 'Etc/GMT-4', 

933 'Etc/GMT-5', 

934 'Etc/GMT-6', 

935 'Etc/GMT-7', 

936 'Etc/GMT-8', 

937 'Etc/GMT-9', 

938 'Etc/GMT0', 

939 'Etc/Greenwich', 

940 'Etc/UCT', 

941 'Etc/UTC', 

942 'Etc/Universal', 

943 'Etc/Zulu', 

944 'Europe/Amsterdam', 

945 'Europe/Andorra', 

946 'Europe/Astrakhan', 

947 'Europe/Athens', 

948 'Europe/Belfast', 

949 'Europe/Belgrade', 

950 'Europe/Berlin', 

951 'Europe/Bratislava', 

952 'Europe/Brussels', 

953 'Europe/Bucharest', 

954 'Europe/Budapest', 

955 'Europe/Busingen', 

956 'Europe/Chisinau', 

957 'Europe/Copenhagen', 

958 'Europe/Dublin', 

959 'Europe/Gibraltar', 

960 'Europe/Guernsey', 

961 'Europe/Helsinki', 

962 'Europe/Isle_of_Man', 

963 'Europe/Istanbul', 

964 'Europe/Jersey', 

965 'Europe/Kaliningrad', 

966 'Europe/Kiev', 

967 'Europe/Kirov', 

968 'Europe/Kyiv', 

969 'Europe/Lisbon', 

970 'Europe/Ljubljana', 

971 'Europe/London', 

972 'Europe/Luxembourg', 

973 'Europe/Madrid', 

974 'Europe/Malta', 

975 'Europe/Mariehamn', 

976 'Europe/Minsk', 

977 'Europe/Monaco', 

978 'Europe/Moscow', 

979 'Europe/Nicosia', 

980 'Europe/Oslo', 

981 'Europe/Paris', 

982 'Europe/Podgorica', 

983 'Europe/Prague', 

984 'Europe/Riga', 

985 'Europe/Rome', 

986 'Europe/Samara', 

987 'Europe/San_Marino', 

988 'Europe/Sarajevo', 

989 'Europe/Saratov', 

990 'Europe/Simferopol', 

991 'Europe/Skopje', 

992 'Europe/Sofia', 

993 'Europe/Stockholm', 

994 'Europe/Tallinn', 

995 'Europe/Tirane', 

996 'Europe/Tiraspol', 

997 'Europe/Ulyanovsk', 

998 'Europe/Uzhgorod', 

999 'Europe/Vaduz', 

1000 'Europe/Vatican', 

1001 'Europe/Vienna', 

1002 'Europe/Vilnius', 

1003 'Europe/Volgograd', 

1004 'Europe/Warsaw', 

1005 'Europe/Zagreb', 

1006 'Europe/Zaporozhye', 

1007 'Europe/Zurich', 

1008 'GB', 

1009 'GB-Eire', 

1010 'GMT', 

1011 'GMT+0', 

1012 'GMT-0', 

1013 'GMT0', 

1014 'Greenwich', 

1015 'HST', 

1016 'Hongkong', 

1017 'Iceland', 

1018 'Indian/Antananarivo', 

1019 'Indian/Chagos', 

1020 'Indian/Christmas', 

1021 'Indian/Cocos', 

1022 'Indian/Comoro', 

1023 'Indian/Kerguelen', 

1024 'Indian/Mahe', 

1025 'Indian/Maldives', 

1026 'Indian/Mauritius', 

1027 'Indian/Mayotte', 

1028 'Indian/Reunion', 

1029 'Iran', 

1030 'Israel', 

1031 'Jamaica', 

1032 'Japan', 

1033 'Kwajalein', 

1034 'Libya', 

1035 'MET', 

1036 'MST', 

1037 'MST7MDT', 

1038 'Mexico/BajaNorte', 

1039 'Mexico/BajaSur', 

1040 'Mexico/General', 

1041 'NZ', 

1042 'NZ-CHAT', 

1043 'Navajo', 

1044 'PRC', 

1045 'PST8PDT', 

1046 'Pacific/Apia', 

1047 'Pacific/Auckland', 

1048 'Pacific/Bougainville', 

1049 'Pacific/Chatham', 

1050 'Pacific/Chuuk', 

1051 'Pacific/Easter', 

1052 'Pacific/Efate', 

1053 'Pacific/Enderbury', 

1054 'Pacific/Fakaofo', 

1055 'Pacific/Fiji', 

1056 'Pacific/Funafuti', 

1057 'Pacific/Galapagos', 

1058 'Pacific/Gambier', 

1059 'Pacific/Guadalcanal', 

1060 'Pacific/Guam', 

1061 'Pacific/Honolulu', 

1062 'Pacific/Johnston', 

1063 'Pacific/Kanton', 

1064 'Pacific/Kiritimati', 

1065 'Pacific/Kosrae', 

1066 'Pacific/Kwajalein', 

1067 'Pacific/Majuro', 

1068 'Pacific/Marquesas', 

1069 'Pacific/Midway', 

1070 'Pacific/Nauru', 

1071 'Pacific/Niue', 

1072 'Pacific/Norfolk', 

1073 'Pacific/Noumea', 

1074 'Pacific/Pago_Pago', 

1075 'Pacific/Palau', 

1076 'Pacific/Pitcairn', 

1077 'Pacific/Pohnpei', 

1078 'Pacific/Ponape', 

1079 'Pacific/Port_Moresby', 

1080 'Pacific/Rarotonga', 

1081 'Pacific/Saipan', 

1082 'Pacific/Samoa', 

1083 'Pacific/Tahiti', 

1084 'Pacific/Tarawa', 

1085 'Pacific/Tongatapu', 

1086 'Pacific/Truk', 

1087 'Pacific/Wake', 

1088 'Pacific/Wallis', 

1089 'Pacific/Yap', 

1090 'Poland', 

1091 'Portugal', 

1092 'ROC', 

1093 'ROK', 

1094 'Singapore', 

1095 'Turkey', 

1096 'UCT', 

1097 'US/Alaska', 

1098 'US/Aleutian', 

1099 'US/Arizona', 

1100 'US/Central', 

1101 'US/East-Indiana', 

1102 'US/Eastern', 

1103 'US/Hawaii', 

1104 'US/Indiana-Starke', 

1105 'US/Michigan', 

1106 'US/Mountain', 

1107 'US/Pacific', 

1108 'US/Samoa', 

1109 'UTC', 

1110 'Universal', 

1111 'W-SU', 

1112 'WET', 

1113 'Zulu'] 

1114all_timezones = LazyList( 

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

1116 

1117all_timezones_set = LazySet(all_timezones) 

1118common_timezones = \ 

1119['Africa/Abidjan', 

1120 'Africa/Accra', 

1121 'Africa/Addis_Ababa', 

1122 'Africa/Algiers', 

1123 'Africa/Asmara', 

1124 'Africa/Bamako', 

1125 'Africa/Bangui', 

1126 'Africa/Banjul', 

1127 'Africa/Bissau', 

1128 'Africa/Blantyre', 

1129 'Africa/Brazzaville', 

1130 'Africa/Bujumbura', 

1131 'Africa/Cairo', 

1132 'Africa/Casablanca', 

1133 'Africa/Ceuta', 

1134 'Africa/Conakry', 

1135 'Africa/Dakar', 

1136 'Africa/Dar_es_Salaam', 

1137 'Africa/Djibouti', 

1138 'Africa/Douala', 

1139 'Africa/El_Aaiun', 

1140 'Africa/Freetown', 

1141 'Africa/Gaborone', 

1142 'Africa/Harare', 

1143 'Africa/Johannesburg', 

1144 'Africa/Juba', 

1145 'Africa/Kampala', 

1146 'Africa/Khartoum', 

1147 'Africa/Kigali', 

1148 'Africa/Kinshasa', 

1149 'Africa/Lagos', 

1150 'Africa/Libreville', 

1151 'Africa/Lome', 

1152 'Africa/Luanda', 

1153 'Africa/Lubumbashi', 

1154 'Africa/Lusaka', 

1155 'Africa/Malabo', 

1156 'Africa/Maputo', 

1157 'Africa/Maseru', 

1158 'Africa/Mbabane', 

1159 'Africa/Mogadishu', 

1160 'Africa/Monrovia', 

1161 'Africa/Nairobi', 

1162 'Africa/Ndjamena', 

1163 'Africa/Niamey', 

1164 'Africa/Nouakchott', 

1165 'Africa/Ouagadougou', 

1166 'Africa/Porto-Novo', 

1167 'Africa/Sao_Tome', 

1168 'Africa/Tripoli', 

1169 'Africa/Tunis', 

1170 'Africa/Windhoek', 

1171 'America/Adak', 

1172 'America/Anchorage', 

1173 'America/Anguilla', 

1174 'America/Antigua', 

1175 'America/Araguaina', 

1176 'America/Argentina/Buenos_Aires', 

1177 'America/Argentina/Catamarca', 

1178 'America/Argentina/Cordoba', 

1179 'America/Argentina/Jujuy', 

1180 'America/Argentina/La_Rioja', 

1181 'America/Argentina/Mendoza', 

1182 'America/Argentina/Rio_Gallegos', 

1183 'America/Argentina/Salta', 

1184 'America/Argentina/San_Juan', 

1185 'America/Argentina/San_Luis', 

1186 'America/Argentina/Tucuman', 

1187 'America/Argentina/Ushuaia', 

1188 'America/Aruba', 

1189 'America/Asuncion', 

1190 'America/Atikokan', 

1191 'America/Bahia', 

1192 'America/Bahia_Banderas', 

1193 'America/Barbados', 

1194 'America/Belem', 

1195 'America/Belize', 

1196 'America/Blanc-Sablon', 

1197 'America/Boa_Vista', 

1198 'America/Bogota', 

1199 'America/Boise', 

1200 'America/Cambridge_Bay', 

1201 'America/Campo_Grande', 

1202 'America/Cancun', 

1203 'America/Caracas', 

1204 'America/Cayenne', 

1205 'America/Cayman', 

1206 'America/Chicago', 

1207 'America/Chihuahua', 

1208 'America/Ciudad_Juarez', 

1209 'America/Costa_Rica', 

1210 'America/Creston', 

1211 'America/Cuiaba', 

1212 'America/Curacao', 

1213 'America/Danmarkshavn', 

1214 'America/Dawson', 

1215 'America/Dawson_Creek', 

1216 'America/Denver', 

1217 'America/Detroit', 

1218 'America/Dominica', 

1219 'America/Edmonton', 

1220 'America/Eirunepe', 

1221 'America/El_Salvador', 

1222 'America/Fort_Nelson', 

1223 'America/Fortaleza', 

1224 'America/Glace_Bay', 

1225 'America/Goose_Bay', 

1226 'America/Grand_Turk', 

1227 'America/Grenada', 

1228 'America/Guadeloupe', 

1229 'America/Guatemala', 

1230 'America/Guayaquil', 

1231 'America/Guyana', 

1232 'America/Halifax', 

1233 'America/Havana', 

1234 'America/Hermosillo', 

1235 'America/Indiana/Indianapolis', 

1236 'America/Indiana/Knox', 

1237 'America/Indiana/Marengo', 

1238 'America/Indiana/Petersburg', 

1239 'America/Indiana/Tell_City', 

1240 'America/Indiana/Vevay', 

1241 'America/Indiana/Vincennes', 

1242 'America/Indiana/Winamac', 

1243 'America/Inuvik', 

1244 'America/Iqaluit', 

1245 'America/Jamaica', 

1246 'America/Juneau', 

1247 'America/Kentucky/Louisville', 

1248 'America/Kentucky/Monticello', 

1249 'America/Kralendijk', 

1250 'America/La_Paz', 

1251 'America/Lima', 

1252 'America/Los_Angeles', 

1253 'America/Lower_Princes', 

1254 'America/Maceio', 

1255 'America/Managua', 

1256 'America/Manaus', 

1257 'America/Marigot', 

1258 'America/Martinique', 

1259 'America/Matamoros', 

1260 'America/Mazatlan', 

1261 'America/Menominee', 

1262 'America/Merida', 

1263 'America/Metlakatla', 

1264 'America/Mexico_City', 

1265 'America/Miquelon', 

1266 'America/Moncton', 

1267 'America/Monterrey', 

1268 'America/Montevideo', 

1269 'America/Montserrat', 

1270 'America/Nassau', 

1271 'America/New_York', 

1272 'America/Nome', 

1273 'America/Noronha', 

1274 'America/North_Dakota/Beulah', 

1275 'America/North_Dakota/Center', 

1276 'America/North_Dakota/New_Salem', 

1277 'America/Nuuk', 

1278 'America/Ojinaga', 

1279 'America/Panama', 

1280 'America/Paramaribo', 

1281 'America/Phoenix', 

1282 'America/Port-au-Prince', 

1283 'America/Port_of_Spain', 

1284 'America/Porto_Velho', 

1285 'America/Puerto_Rico', 

1286 'America/Punta_Arenas', 

1287 'America/Rankin_Inlet', 

1288 'America/Recife', 

1289 'America/Regina', 

1290 'America/Resolute', 

1291 'America/Rio_Branco', 

1292 'America/Santarem', 

1293 'America/Santiago', 

1294 'America/Santo_Domingo', 

1295 'America/Sao_Paulo', 

1296 'America/Scoresbysund', 

1297 'America/Sitka', 

1298 'America/St_Barthelemy', 

1299 'America/St_Johns', 

1300 'America/St_Kitts', 

1301 'America/St_Lucia', 

1302 'America/St_Thomas', 

1303 'America/St_Vincent', 

1304 'America/Swift_Current', 

1305 'America/Tegucigalpa', 

1306 'America/Thule', 

1307 'America/Tijuana', 

1308 'America/Toronto', 

1309 'America/Tortola', 

1310 'America/Vancouver', 

1311 'America/Whitehorse', 

1312 'America/Winnipeg', 

1313 'America/Yakutat', 

1314 'Antarctica/Casey', 

1315 'Antarctica/Davis', 

1316 'Antarctica/DumontDUrville', 

1317 'Antarctica/Macquarie', 

1318 'Antarctica/Mawson', 

1319 'Antarctica/McMurdo', 

1320 'Antarctica/Palmer', 

1321 'Antarctica/Rothera', 

1322 'Antarctica/Syowa', 

1323 'Antarctica/Troll', 

1324 'Antarctica/Vostok', 

1325 'Arctic/Longyearbyen', 

1326 'Asia/Aden', 

1327 'Asia/Almaty', 

1328 'Asia/Amman', 

1329 'Asia/Anadyr', 

1330 'Asia/Aqtau', 

1331 'Asia/Aqtobe', 

1332 'Asia/Ashgabat', 

1333 'Asia/Atyrau', 

1334 'Asia/Baghdad', 

1335 'Asia/Bahrain', 

1336 'Asia/Baku', 

1337 'Asia/Bangkok', 

1338 'Asia/Barnaul', 

1339 'Asia/Beirut', 

1340 'Asia/Bishkek', 

1341 'Asia/Brunei', 

1342 'Asia/Chita', 

1343 'Asia/Choibalsan', 

1344 'Asia/Colombo', 

1345 'Asia/Damascus', 

1346 'Asia/Dhaka', 

1347 'Asia/Dili', 

1348 'Asia/Dubai', 

1349 'Asia/Dushanbe', 

1350 'Asia/Famagusta', 

1351 'Asia/Gaza', 

1352 'Asia/Hebron', 

1353 'Asia/Ho_Chi_Minh', 

1354 'Asia/Hong_Kong', 

1355 'Asia/Hovd', 

1356 'Asia/Irkutsk', 

1357 'Asia/Jakarta', 

1358 'Asia/Jayapura', 

1359 'Asia/Jerusalem', 

1360 'Asia/Kabul', 

1361 'Asia/Kamchatka', 

1362 'Asia/Karachi', 

1363 'Asia/Kathmandu', 

1364 'Asia/Khandyga', 

1365 'Asia/Kolkata', 

1366 'Asia/Krasnoyarsk', 

1367 'Asia/Kuala_Lumpur', 

1368 'Asia/Kuching', 

1369 'Asia/Kuwait', 

1370 'Asia/Macau', 

1371 'Asia/Magadan', 

1372 'Asia/Makassar', 

1373 'Asia/Manila', 

1374 'Asia/Muscat', 

1375 'Asia/Nicosia', 

1376 'Asia/Novokuznetsk', 

1377 'Asia/Novosibirsk', 

1378 'Asia/Omsk', 

1379 'Asia/Oral', 

1380 'Asia/Phnom_Penh', 

1381 'Asia/Pontianak', 

1382 'Asia/Pyongyang', 

1383 'Asia/Qatar', 

1384 'Asia/Qostanay', 

1385 'Asia/Qyzylorda', 

1386 'Asia/Riyadh', 

1387 'Asia/Sakhalin', 

1388 'Asia/Samarkand', 

1389 'Asia/Seoul', 

1390 'Asia/Shanghai', 

1391 'Asia/Singapore', 

1392 'Asia/Srednekolymsk', 

1393 'Asia/Taipei', 

1394 'Asia/Tashkent', 

1395 'Asia/Tbilisi', 

1396 'Asia/Tehran', 

1397 'Asia/Thimphu', 

1398 'Asia/Tokyo', 

1399 'Asia/Tomsk', 

1400 'Asia/Ulaanbaatar', 

1401 'Asia/Urumqi', 

1402 'Asia/Ust-Nera', 

1403 'Asia/Vientiane', 

1404 'Asia/Vladivostok', 

1405 'Asia/Yakutsk', 

1406 'Asia/Yangon', 

1407 'Asia/Yekaterinburg', 

1408 'Asia/Yerevan', 

1409 'Atlantic/Azores', 

1410 'Atlantic/Bermuda', 

1411 'Atlantic/Canary', 

1412 'Atlantic/Cape_Verde', 

1413 'Atlantic/Faroe', 

1414 'Atlantic/Madeira', 

1415 'Atlantic/Reykjavik', 

1416 'Atlantic/South_Georgia', 

1417 'Atlantic/St_Helena', 

1418 'Atlantic/Stanley', 

1419 'Australia/Adelaide', 

1420 'Australia/Brisbane', 

1421 'Australia/Broken_Hill', 

1422 'Australia/Darwin', 

1423 'Australia/Eucla', 

1424 'Australia/Hobart', 

1425 'Australia/Lindeman', 

1426 'Australia/Lord_Howe', 

1427 'Australia/Melbourne', 

1428 'Australia/Perth', 

1429 'Australia/Sydney', 

1430 'Canada/Atlantic', 

1431 'Canada/Central', 

1432 'Canada/Eastern', 

1433 'Canada/Mountain', 

1434 'Canada/Newfoundland', 

1435 'Canada/Pacific', 

1436 'Europe/Amsterdam', 

1437 'Europe/Andorra', 

1438 'Europe/Astrakhan', 

1439 'Europe/Athens', 

1440 'Europe/Belgrade', 

1441 'Europe/Berlin', 

1442 'Europe/Bratislava', 

1443 'Europe/Brussels', 

1444 'Europe/Bucharest', 

1445 'Europe/Budapest', 

1446 'Europe/Busingen', 

1447 'Europe/Chisinau', 

1448 'Europe/Copenhagen', 

1449 'Europe/Dublin', 

1450 'Europe/Gibraltar', 

1451 'Europe/Guernsey', 

1452 'Europe/Helsinki', 

1453 'Europe/Isle_of_Man', 

1454 'Europe/Istanbul', 

1455 'Europe/Jersey', 

1456 'Europe/Kaliningrad', 

1457 'Europe/Kirov', 

1458 'Europe/Kyiv', 

1459 'Europe/Lisbon', 

1460 'Europe/Ljubljana', 

1461 'Europe/London', 

1462 'Europe/Luxembourg', 

1463 'Europe/Madrid', 

1464 'Europe/Malta', 

1465 'Europe/Mariehamn', 

1466 'Europe/Minsk', 

1467 'Europe/Monaco', 

1468 'Europe/Moscow', 

1469 'Europe/Oslo', 

1470 'Europe/Paris', 

1471 'Europe/Podgorica', 

1472 'Europe/Prague', 

1473 'Europe/Riga', 

1474 'Europe/Rome', 

1475 'Europe/Samara', 

1476 'Europe/San_Marino', 

1477 'Europe/Sarajevo', 

1478 'Europe/Saratov', 

1479 'Europe/Simferopol', 

1480 'Europe/Skopje', 

1481 'Europe/Sofia', 

1482 'Europe/Stockholm', 

1483 'Europe/Tallinn', 

1484 'Europe/Tirane', 

1485 'Europe/Ulyanovsk', 

1486 'Europe/Vaduz', 

1487 'Europe/Vatican', 

1488 'Europe/Vienna', 

1489 'Europe/Vilnius', 

1490 'Europe/Volgograd', 

1491 'Europe/Warsaw', 

1492 'Europe/Zagreb', 

1493 'Europe/Zurich', 

1494 'GMT', 

1495 'Indian/Antananarivo', 

1496 'Indian/Chagos', 

1497 'Indian/Christmas', 

1498 'Indian/Cocos', 

1499 'Indian/Comoro', 

1500 'Indian/Kerguelen', 

1501 'Indian/Mahe', 

1502 'Indian/Maldives', 

1503 'Indian/Mauritius', 

1504 'Indian/Mayotte', 

1505 'Indian/Reunion', 

1506 'Pacific/Apia', 

1507 'Pacific/Auckland', 

1508 'Pacific/Bougainville', 

1509 'Pacific/Chatham', 

1510 'Pacific/Chuuk', 

1511 'Pacific/Easter', 

1512 'Pacific/Efate', 

1513 'Pacific/Fakaofo', 

1514 'Pacific/Fiji', 

1515 'Pacific/Funafuti', 

1516 'Pacific/Galapagos', 

1517 'Pacific/Gambier', 

1518 'Pacific/Guadalcanal', 

1519 'Pacific/Guam', 

1520 'Pacific/Honolulu', 

1521 'Pacific/Kanton', 

1522 'Pacific/Kiritimati', 

1523 'Pacific/Kosrae', 

1524 'Pacific/Kwajalein', 

1525 'Pacific/Majuro', 

1526 'Pacific/Marquesas', 

1527 'Pacific/Midway', 

1528 'Pacific/Nauru', 

1529 'Pacific/Niue', 

1530 'Pacific/Norfolk', 

1531 'Pacific/Noumea', 

1532 'Pacific/Pago_Pago', 

1533 'Pacific/Palau', 

1534 'Pacific/Pitcairn', 

1535 'Pacific/Pohnpei', 

1536 'Pacific/Port_Moresby', 

1537 'Pacific/Rarotonga', 

1538 'Pacific/Saipan', 

1539 'Pacific/Tahiti', 

1540 'Pacific/Tarawa', 

1541 'Pacific/Tongatapu', 

1542 'Pacific/Wake', 

1543 'Pacific/Wallis', 

1544 'US/Alaska', 

1545 'US/Arizona', 

1546 'US/Central', 

1547 'US/Eastern', 

1548 'US/Hawaii', 

1549 'US/Mountain', 

1550 'US/Pacific', 

1551 'UTC'] 

1552common_timezones = LazyList( 

1553 tz for tz in common_timezones if tz in all_timezones) 

1554 

1555common_timezones_set = LazySet(common_timezones)