diff --git a/.gitignore b/.gitignore
index 5b413a0d..cfbf7735 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
built
+built-switch
builtTT
*.pyc
*.pyo
@@ -10,4 +11,7 @@ readlog.txt
news/*
.cvsignore
.latestissue
-useropt
\ No newline at end of file
+useropt
+inject.py
+*.log
+app
diff --git a/ai.bat b/ai.bat
new file mode 100644
index 00000000..cd0f98e1
--- /dev/null
+++ b/ai.bat
@@ -0,0 +1,4 @@
+:main
+python ttrun.py -ai %*
+pause
+goto :main
diff --git a/ai.sh b/ai.sh
new file mode 100755
index 00000000..0c58f785
--- /dev/null
+++ b/ai.sh
@@ -0,0 +1 @@
+screen -dmS Sillyville python3 -m ttrun -ai
diff --git a/build.bat b/build.bat
index 6902a9bf..07844feb 100644
--- a/build.bat
+++ b/build.bat
@@ -1 +1 @@
-"built\python\ppython" build.py %*
\ No newline at end of file
+"built\python\ppython" build.py -x -y -ai %*
\ No newline at end of file
diff --git a/libhttp.pyd b/libhttp.pyd
new file mode 100644
index 00000000..376c905c
Binary files /dev/null and b/libhttp.pyd differ
diff --git a/libhttp.so b/libhttp.so
new file mode 100755
index 00000000..0bd120b8
Binary files /dev/null and b/libhttp.so differ
diff --git a/modules/pytz/tests/__init__.py b/logs/.gitkeep
similarity index 100%
rename from modules/pytz/tests/__init__.py
rename to logs/.gitkeep
diff --git a/modules/MySQLdb/__init__.py b/modules/MySQLdb/__init__.py
deleted file mode 100644
index 87616715..00000000
--- a/modules/MySQLdb/__init__.py
+++ /dev/null
@@ -1,98 +0,0 @@
-"""MySQLdb - A DB API v2.0 compatible interface to MySQL.
-
-This package is a wrapper around _mysql, which mostly implements the
-MySQL C API.
-
-connect() -- connects to server
-
-See the C API specification and the MySQL documentation for more info
-on other items.
-
-For information on how MySQLdb handles type conversion, see the
-MySQLdb.converters module.
-
-"""
-
-__revision__ = """$Revision$"""[11:-2]
-from MySQLdb.release import __version__, version_info, __author__
-
-import _mysql
-
-if version_info != _mysql.version_info:
- raise ImportError("this is MySQLdb version %s, but _mysql is version %r" %
- (version_info, _mysql.version_info))
-
-threadsafety = 1
-apilevel = "2.0"
-paramstyle = "format"
-
-from _mysql import *
-from MySQLdb.constants import FIELD_TYPE
-from MySQLdb.times import Date, Time, Timestamp, \
- DateFromTicks, TimeFromTicks, TimestampFromTicks
-
-try:
- frozenset
-except NameError:
- from sets import ImmutableSet as frozenset
-
-class DBAPISet(frozenset):
-
- """A special type of set for which A == x is true if A is a
- DBAPISet and x is a member of that set."""
-
- def __eq__(self, other):
- if isinstance(other, DBAPISet):
- return not self.difference(other)
- return other in self
-
-
-STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING,
- FIELD_TYPE.VAR_STRING])
-BINARY = DBAPISet([FIELD_TYPE.BLOB, FIELD_TYPE.LONG_BLOB,
- FIELD_TYPE.MEDIUM_BLOB, FIELD_TYPE.TINY_BLOB])
-NUMBER = DBAPISet([FIELD_TYPE.DECIMAL, FIELD_TYPE.DOUBLE, FIELD_TYPE.FLOAT,
- FIELD_TYPE.INT24, FIELD_TYPE.LONG, FIELD_TYPE.LONGLONG,
- FIELD_TYPE.TINY, FIELD_TYPE.YEAR])
-DATE = DBAPISet([FIELD_TYPE.DATE, FIELD_TYPE.NEWDATE])
-TIME = DBAPISet([FIELD_TYPE.TIME])
-TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME])
-DATETIME = TIMESTAMP
-ROWID = DBAPISet()
-
-def test_DBAPISet_set_equality():
- assert STRING == STRING
-
-def test_DBAPISet_set_inequality():
- assert STRING != NUMBER
-
-def test_DBAPISet_set_equality_membership():
- assert FIELD_TYPE.VAR_STRING == STRING
-
-def test_DBAPISet_set_inequality_membership():
- assert FIELD_TYPE.DATE != STRING
-
-def Binary(x):
- return str(x)
-
-def Connect(*args, **kwargs):
- """Factory function for connections.Connection."""
- from MySQLdb.connections import Connection
- return Connection(*args, **kwargs)
-
-connect = Connection = Connect
-
-__all__ = [ 'BINARY', 'Binary', 'Connect', 'Connection', 'DATE',
- 'Date', 'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks',
- 'TimestampFromTicks', 'DataError', 'DatabaseError', 'Error',
- 'FIELD_TYPE', 'IntegrityError', 'InterfaceError', 'InternalError',
- 'MySQLError', 'NULL', 'NUMBER', 'NotSupportedError', 'DBAPISet',
- 'OperationalError', 'ProgrammingError', 'ROWID', 'STRING', 'TIME',
- 'TIMESTAMP', 'Warning', 'apilevel', 'connect', 'connections',
- 'constants', 'converters', 'cursors', 'debug', 'escape', 'escape_dict',
- 'escape_sequence', 'escape_string', 'get_client_info',
- 'paramstyle', 'string_literal', 'threadsafety', 'version_info']
-
-
-
-
diff --git a/modules/MySQLdb/connections.py b/modules/MySQLdb/connections.py
deleted file mode 100644
index 908706a3..00000000
--- a/modules/MySQLdb/connections.py
+++ /dev/null
@@ -1,351 +0,0 @@
-"""
-
-This module implements connections for MySQLdb. Presently there is
-only one class: Connection. Others are unlikely. However, you might
-want to make your own subclasses. In most cases, you will probably
-override Connection.default_cursor with a non-standard Cursor class.
-
-"""
-from MySQLdb import cursors
-from _mysql_exceptions import Warning, Error, InterfaceError, DataError, \
- DatabaseError, OperationalError, IntegrityError, InternalError, \
- NotSupportedError, ProgrammingError
-import types, _mysql
-import re
-
-
-def defaulterrorhandler(connection, cursor, errorclass, errorvalue):
- """
-
- If cursor is not None, (errorclass, errorvalue) is appended to
- cursor.messages; otherwise it is appended to
- connection.messages. Then errorclass is raised with errorvalue as
- the value.
-
- You can override this with your own error handler by assigning it
- to the instance.
-
- """
- error = errorclass, errorvalue
- if cursor:
- cursor.messages.append(error)
- else:
- connection.messages.append(error)
- del cursor
- del connection
- raise errorclass, errorvalue
-
-re_numeric_part = re.compile(r"^(\d+)")
-
-def numeric_part(s):
- """Returns the leading numeric part of a string.
-
- >>> numeric_part("20-alpha")
- 20
- >>> numeric_part("foo")
- >>> numeric_part("16b")
- 16
- """
-
- m = re_numeric_part.match(s)
- if m:
- return int(m.group(1))
- return None
-
-
-class Connection(_mysql.connection):
-
- """MySQL Database Connection Object"""
-
- default_cursor = cursors.Cursor
-
- def __init__(self, *args, **kwargs):
- """
-
- Create a connection to the database. It is strongly recommended
- that you only use keyword parameters. Consult the MySQL C API
- documentation for more information.
-
- host
- string, host to connect
-
- user
- string, user to connect as
-
- passwd
- string, password to use
-
- db
- string, database to use
-
- port
- integer, TCP/IP port to connect to
-
- unix_socket
- string, location of unix_socket to use
-
- conv
- conversion dictionary, see MySQLdb.converters
-
- connect_timeout
- number of seconds to wait before the connection attempt
- fails.
-
- compress
- if set, compression is enabled
-
- named_pipe
- if set, a named pipe is used to connect (Windows only)
-
- init_command
- command which is run once the connection is created
-
- read_default_file
- file from which default client values are read
-
- read_default_group
- configuration group to use from the default file
-
- cursorclass
- class object, used to create cursors (keyword only)
-
- use_unicode
- If True, text-like columns are returned as unicode objects
- using the connection's character set. Otherwise, text-like
- columns are returned as strings. columns are returned as
- normal strings. Unicode objects will always be encoded to
- the connection's character set regardless of this setting.
-
- charset
- If supplied, the connection character set will be changed
- to this character set (MySQL-4.1 and newer). This implies
- use_unicode=True.
-
- sql_mode
- If supplied, the session SQL mode will be changed to this
- setting (MySQL-4.1 and newer). For more details and legal
- values, see the MySQL documentation.
-
- client_flag
- integer, flags to use or 0
- (see MySQL docs or constants/CLIENTS.py)
-
- ssl
- dictionary or mapping, contains SSL connection parameters;
- see the MySQL documentation for more details
- (mysql_ssl_set()). If this is set, and the client does not
- support SSL, NotSupportedError will be raised.
-
- local_infile
- integer, non-zero enables LOAD LOCAL INFILE; zero disables
-
- autocommit
- If False (default), autocommit is disabled.
- If True, autocommit is enabled.
- If None, autocommit isn't set and server default is used.
-
- There are a number of undocumented, non-standard methods. See the
- documentation for the MySQL C API for some hints on what they do.
-
- """
- from MySQLdb.constants import CLIENT, FIELD_TYPE
- from MySQLdb.converters import conversions
- from weakref import proxy
-
- kwargs2 = kwargs.copy()
-
- if 'conv' in kwargs:
- conv = kwargs['conv']
- else:
- conv = conversions
-
- conv2 = {}
- for k, v in conv.items():
- if isinstance(k, int) and isinstance(v, list):
- conv2[k] = v[:]
- else:
- conv2[k] = v
- kwargs2['conv'] = conv2
-
- cursorclass = kwargs2.pop('cursorclass', self.default_cursor)
- charset = kwargs2.pop('charset', '')
-
- if charset:
- use_unicode = True
- else:
- use_unicode = False
-
- use_unicode = kwargs2.pop('use_unicode', use_unicode)
- sql_mode = kwargs2.pop('sql_mode', '')
-
- client_flag = kwargs.get('client_flag', 0)
- client_version = tuple([ numeric_part(n) for n in _mysql.get_client_info().split('.')[:2] ])
- if client_version >= (4, 1):
- client_flag |= CLIENT.MULTI_STATEMENTS
- if client_version >= (5, 0):
- client_flag |= CLIENT.MULTI_RESULTS
-
- kwargs2['client_flag'] = client_flag
-
- # PEP-249 requires autocommit to be initially off
- autocommit = kwargs2.pop('autocommit', False)
-
- super(Connection, self).__init__(*args, **kwargs2)
- self.cursorclass = cursorclass
- self.encoders = dict([ (k, v) for k, v in conv.items()
- if type(k) is not int ])
-
- self._server_version = tuple([ numeric_part(n) for n in self.get_server_info().split('.')[:2] ])
-
- db = proxy(self)
- def _get_string_literal():
- def string_literal(obj, dummy=None):
- return db.string_literal(obj)
- return string_literal
-
- def _get_unicode_literal():
- def unicode_literal(u, dummy=None):
- return db.literal(u.encode(unicode_literal.charset))
- return unicode_literal
-
- def _get_string_decoder():
- def string_decoder(s):
- return s.decode(string_decoder.charset)
- return string_decoder
-
- string_literal = _get_string_literal()
- self.unicode_literal = unicode_literal = _get_unicode_literal()
- self.string_decoder = string_decoder = _get_string_decoder()
- if not charset:
- charset = self.character_set_name()
- self.set_character_set(charset)
-
- if sql_mode:
- self.set_sql_mode(sql_mode)
-
- if use_unicode:
- self.converter[FIELD_TYPE.STRING].append((None, string_decoder))
- self.converter[FIELD_TYPE.VAR_STRING].append((None, string_decoder))
- self.converter[FIELD_TYPE.VARCHAR].append((None, string_decoder))
- self.converter[FIELD_TYPE.BLOB].append((None, string_decoder))
-
- self.encoders[types.StringType] = string_literal
- self.encoders[types.UnicodeType] = unicode_literal
- self._transactional = self.server_capabilities & CLIENT.TRANSACTIONS
- if self._transactional:
- if autocommit is not None:
- self.autocommit(autocommit)
- self.messages = []
-
- def autocommit(self, on):
- on = bool(on)
- if self.get_autocommit() != on:
- _mysql.connection.autocommit(self, on)
-
- def cursor(self, cursorclass=None):
- """
-
- Create a cursor on which queries may be performed. The
- optional cursorclass parameter is used to create the
- Cursor. By default, self.cursorclass=cursors.Cursor is
- used.
-
- """
- return (cursorclass or self.cursorclass)(self)
-
- def __enter__(self):
- if self.get_autocommit():
- self.query("BEGIN")
- return self.cursor()
-
- def __exit__(self, exc, value, tb):
- if exc:
- self.rollback()
- else:
- self.commit()
-
- def literal(self, o):
- """
-
- If o is a single object, returns an SQL literal as a string.
- If o is a non-string sequence, the items of the sequence are
- converted and returned as a sequence.
-
- Non-standard. For internal use; do not use this in your
- applications.
-
- """
- return self.escape(o, self.encoders)
-
- def begin(self):
- """Explicitly begin a connection. Non-standard.
- DEPRECATED: Will be removed in 1.3.
- Use an SQL BEGIN statement instead."""
- from warnings import warn
- warn("begin() is non-standard and will be removed in 1.3",
- DeprecationWarning, 2)
- self.query("BEGIN")
-
- if not hasattr(_mysql.connection, 'warning_count'):
-
- def warning_count(self):
- """Return the number of warnings generated from the
- last query. This is derived from the info() method."""
- from string import atoi
- info = self.info()
- if info:
- return atoi(info.split()[-1])
- else:
- return 0
-
- def set_character_set(self, charset):
- """Set the connection character set to charset. The character
- set can only be changed in MySQL-4.1 and newer. If you try
- to change the character set from the current value in an
- older version, NotSupportedError will be raised."""
- if charset == "utf8mb4":
- py_charset = "utf8"
- else:
- py_charset = charset
- if self.character_set_name() != charset:
- try:
- super(Connection, self).set_character_set(charset)
- except AttributeError:
- if self._server_version < (4, 1):
- raise NotSupportedError("server is too old to set charset")
- self.query('SET NAMES %s' % charset)
- self.store_result()
- self.string_decoder.charset = py_charset
- self.unicode_literal.charset = py_charset
-
- def set_sql_mode(self, sql_mode):
- """Set the connection sql_mode. See MySQL documentation for
- legal values."""
- if self._server_version < (4, 1):
- raise NotSupportedError("server is too old to set sql_mode")
- self.query("SET SESSION sql_mode='%s'" % sql_mode)
- self.store_result()
-
- def show_warnings(self):
- """Return detailed information about warnings as a
- sequence of tuples of (Level, Code, Message). This
- is only supported in MySQL-4.1 and up. If your server
- is an earlier version, an empty sequence is returned."""
- if self._server_version < (4,1): return ()
- self.query("SHOW WARNINGS")
- r = self.store_result()
- warnings = r.fetch_row(0)
- return warnings
-
- Warning = Warning
- Error = Error
- InterfaceError = InterfaceError
- DatabaseError = DatabaseError
- DataError = DataError
- OperationalError = OperationalError
- IntegrityError = IntegrityError
- InternalError = InternalError
- ProgrammingError = ProgrammingError
- NotSupportedError = NotSupportedError
-
- errorhandler = defaulterrorhandler
diff --git a/modules/MySQLdb/constants/CLIENT.py b/modules/MySQLdb/constants/CLIENT.py
deleted file mode 100644
index 6559917b..00000000
--- a/modules/MySQLdb/constants/CLIENT.py
+++ /dev/null
@@ -1,29 +0,0 @@
-"""MySQL CLIENT constants
-
-These constants are used when creating the connection. Use bitwise-OR
-(|) to combine options together, and pass them as the client_flags
-parameter to MySQLdb.Connection. For more information on these flags,
-see the MySQL C API documentation for mysql_real_connect().
-
-"""
-
-LONG_PASSWORD = 1
-FOUND_ROWS = 2
-LONG_FLAG = 4
-CONNECT_WITH_DB = 8
-NO_SCHEMA = 16
-COMPRESS = 32
-ODBC = 64
-LOCAL_FILES = 128
-IGNORE_SPACE = 256
-CHANGE_USER = 512
-INTERACTIVE = 1024
-SSL = 2048
-IGNORE_SIGPIPE = 4096
-TRANSACTIONS = 8192 # mysql_com.h was WRONG prior to 3.23.35
-RESERVED = 16384
-SECURE_CONNECTION = 32768
-MULTI_STATEMENTS = 65536
-MULTI_RESULTS = 131072
-
-
diff --git a/modules/MySQLdb/constants/CR.py b/modules/MySQLdb/constants/CR.py
deleted file mode 100644
index 249dfec9..00000000
--- a/modules/MySQLdb/constants/CR.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""MySQL Connection Errors
-
-Nearly all of these raise OperationalError. COMMANDS_OUT_OF_SYNC
-raises ProgrammingError.
-
-"""
-
-MIN_ERROR = 2000
-MAX_ERROR = 2999
-UNKNOWN_ERROR = 2000
-SOCKET_CREATE_ERROR = 2001
-CONNECTION_ERROR = 2002
-CONN_HOST_ERROR = 2003
-IPSOCK_ERROR = 2004
-UNKNOWN_HOST = 2005
-SERVER_GONE_ERROR = 2006
-VERSION_ERROR = 2007
-OUT_OF_MEMORY = 2008
-WRONG_HOST_INFO = 2009
-LOCALHOST_CONNECTION = 2010
-TCP_CONNECTION = 2011
-SERVER_HANDSHAKE_ERR = 2012
-SERVER_LOST = 2013
-COMMANDS_OUT_OF_SYNC = 2014
-NAMEDPIPE_CONNECTION = 2015
-NAMEDPIPEWAIT_ERROR = 2016
-NAMEDPIPEOPEN_ERROR = 2017
-NAMEDPIPESETSTATE_ERROR = 2018
-CANT_READ_CHARSET = 2019
-NET_PACKET_TOO_LARGE = 2020
diff --git a/modules/MySQLdb/constants/ER.py b/modules/MySQLdb/constants/ER.py
deleted file mode 100644
index ed45f3a1..00000000
--- a/modules/MySQLdb/constants/ER.py
+++ /dev/null
@@ -1,467 +0,0 @@
-"""MySQL ER Constants
-
-These constants are error codes for the bulk of the error conditions
-that may occur.
-
-"""
-
-HASHCHK = 1000
-NISAMCHK = 1001
-NO = 1002
-YES = 1003
-CANT_CREATE_FILE = 1004
-CANT_CREATE_TABLE = 1005
-CANT_CREATE_DB = 1006
-DB_CREATE_EXISTS = 1007
-DB_DROP_EXISTS = 1008
-DB_DROP_DELETE = 1009
-DB_DROP_RMDIR = 1010
-CANT_DELETE_FILE = 1011
-CANT_FIND_SYSTEM_REC = 1012
-CANT_GET_STAT = 1013
-CANT_GET_WD = 1014
-CANT_LOCK = 1015
-CANT_OPEN_FILE = 1016
-FILE_NOT_FOUND = 1017
-CANT_READ_DIR = 1018
-CANT_SET_WD = 1019
-CHECKREAD = 1020
-DISK_FULL = 1021
-DUP_KEY = 1022
-ERROR_ON_CLOSE = 1023
-ERROR_ON_READ = 1024
-ERROR_ON_RENAME = 1025
-ERROR_ON_WRITE = 1026
-FILE_USED = 1027
-FILSORT_ABORT = 1028
-FORM_NOT_FOUND = 1029
-GET_ERRNO = 1030
-ILLEGAL_HA = 1031
-KEY_NOT_FOUND = 1032
-NOT_FORM_FILE = 1033
-NOT_KEYFILE = 1034
-OLD_KEYFILE = 1035
-OPEN_AS_READONLY = 1036
-OUTOFMEMORY = 1037
-OUT_OF_SORTMEMORY = 1038
-UNEXPECTED_EOF = 1039
-CON_COUNT_ERROR = 1040
-OUT_OF_RESOURCES = 1041
-BAD_HOST_ERROR = 1042
-HANDSHAKE_ERROR = 1043
-DBACCESS_DENIED_ERROR = 1044
-ACCESS_DENIED_ERROR = 1045
-NO_DB_ERROR = 1046
-UNKNOWN_COM_ERROR = 1047
-BAD_NULL_ERROR = 1048
-BAD_DB_ERROR = 1049
-TABLE_EXISTS_ERROR = 1050
-BAD_TABLE_ERROR = 1051
-NON_UNIQ_ERROR = 1052
-SERVER_SHUTDOWN = 1053
-BAD_FIELD_ERROR = 1054
-WRONG_FIELD_WITH_GROUP = 1055
-WRONG_GROUP_FIELD = 1056
-WRONG_SUM_SELECT = 1057
-WRONG_VALUE_COUNT = 1058
-TOO_LONG_IDENT = 1059
-DUP_FIELDNAME = 1060
-DUP_KEYNAME = 1061
-DUP_ENTRY = 1062
-WRONG_FIELD_SPEC = 1063
-PARSE_ERROR = 1064
-EMPTY_QUERY = 1065
-NONUNIQ_TABLE = 1066
-INVALID_DEFAULT = 1067
-MULTIPLE_PRI_KEY = 1068
-TOO_MANY_KEYS = 1069
-TOO_MANY_KEY_PARTS = 1070
-TOO_LONG_KEY = 1071
-KEY_COLUMN_DOES_NOT_EXITS = 1072
-BLOB_USED_AS_KEY = 1073
-TOO_BIG_FIELDLENGTH = 1074
-WRONG_AUTO_KEY = 1075
-READY = 1076
-NORMAL_SHUTDOWN = 1077
-GOT_SIGNAL = 1078
-SHUTDOWN_COMPLETE = 1079
-FORCING_CLOSE = 1080
-IPSOCK_ERROR = 1081
-NO_SUCH_INDEX = 1082
-WRONG_FIELD_TERMINATORS = 1083
-BLOBS_AND_NO_TERMINATED = 1084
-TEXTFILE_NOT_READABLE = 1085
-FILE_EXISTS_ERROR = 1086
-LOAD_INFO = 1087
-ALTER_INFO = 1088
-WRONG_SUB_KEY = 1089
-CANT_REMOVE_ALL_FIELDS = 1090
-CANT_DROP_FIELD_OR_KEY = 1091
-INSERT_INFO = 1092
-INSERT_TABLE_USED = 1093
-NO_SUCH_THREAD = 1094
-KILL_DENIED_ERROR = 1095
-NO_TABLES_USED = 1096
-TOO_BIG_SET = 1097
-NO_UNIQUE_LOGFILE = 1098
-TABLE_NOT_LOCKED_FOR_WRITE = 1099
-TABLE_NOT_LOCKED = 1100
-BLOB_CANT_HAVE_DEFAULT = 1101
-WRONG_DB_NAME = 1102
-WRONG_TABLE_NAME = 1103
-TOO_BIG_SELECT = 1104
-UNKNOWN_ERROR = 1105
-UNKNOWN_PROCEDURE = 1106
-WRONG_PARAMCOUNT_TO_PROCEDURE = 1107
-WRONG_PARAMETERS_TO_PROCEDURE = 1108
-UNKNOWN_TABLE = 1109
-FIELD_SPECIFIED_TWICE = 1110
-INVALID_GROUP_FUNC_USE = 1111
-UNSUPPORTED_EXTENSION = 1112
-TABLE_MUST_HAVE_COLUMNS = 1113
-RECORD_FILE_FULL = 1114
-UNKNOWN_CHARACTER_SET = 1115
-TOO_MANY_TABLES = 1116
-TOO_MANY_FIELDS = 1117
-TOO_BIG_ROWSIZE = 1118
-STACK_OVERRUN = 1119
-WRONG_OUTER_JOIN = 1120
-NULL_COLUMN_IN_INDEX = 1121
-CANT_FIND_UDF = 1122
-CANT_INITIALIZE_UDF = 1123
-UDF_NO_PATHS = 1124
-UDF_EXISTS = 1125
-CANT_OPEN_LIBRARY = 1126
-CANT_FIND_DL_ENTRY = 1127
-FUNCTION_NOT_DEFINED = 1128
-HOST_IS_BLOCKED = 1129
-HOST_NOT_PRIVILEGED = 1130
-PASSWORD_ANONYMOUS_USER = 1131
-PASSWORD_NOT_ALLOWED = 1132
-PASSWORD_NO_MATCH = 1133
-UPDATE_INFO = 1134
-CANT_CREATE_THREAD = 1135
-WRONG_VALUE_COUNT_ON_ROW = 1136
-CANT_REOPEN_TABLE = 1137
-INVALID_USE_OF_NULL = 1138
-REGEXP_ERROR = 1139
-MIX_OF_GROUP_FUNC_AND_FIELDS = 1140
-NONEXISTING_GRANT = 1141
-TABLEACCESS_DENIED_ERROR = 1142
-COLUMNACCESS_DENIED_ERROR = 1143
-ILLEGAL_GRANT_FOR_TABLE = 1144
-GRANT_WRONG_HOST_OR_USER = 1145
-NO_SUCH_TABLE = 1146
-NONEXISTING_TABLE_GRANT = 1147
-NOT_ALLOWED_COMMAND = 1148
-SYNTAX_ERROR = 1149
-DELAYED_CANT_CHANGE_LOCK = 1150
-TOO_MANY_DELAYED_THREADS = 1151
-ABORTING_CONNECTION = 1152
-NET_PACKET_TOO_LARGE = 1153
-NET_READ_ERROR_FROM_PIPE = 1154
-NET_FCNTL_ERROR = 1155
-NET_PACKETS_OUT_OF_ORDER = 1156
-NET_UNCOMPRESS_ERROR = 1157
-NET_READ_ERROR = 1158
-NET_READ_INTERRUPTED = 1159
-NET_ERROR_ON_WRITE = 1160
-NET_WRITE_INTERRUPTED = 1161
-TOO_LONG_STRING = 1162
-TABLE_CANT_HANDLE_BLOB = 1163
-TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164
-DELAYED_INSERT_TABLE_LOCKED = 1165
-WRONG_COLUMN_NAME = 1166
-WRONG_KEY_COLUMN = 1167
-WRONG_MRG_TABLE = 1168
-DUP_UNIQUE = 1169
-BLOB_KEY_WITHOUT_LENGTH = 1170
-PRIMARY_CANT_HAVE_NULL = 1171
-TOO_MANY_ROWS = 1172
-REQUIRES_PRIMARY_KEY = 1173
-NO_RAID_COMPILED = 1174
-UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175
-KEY_DOES_NOT_EXITS = 1176
-CHECK_NO_SUCH_TABLE = 1177
-CHECK_NOT_IMPLEMENTED = 1178
-CANT_DO_THIS_DURING_AN_TRANSACTION = 1179
-ERROR_DURING_COMMIT = 1180
-ERROR_DURING_ROLLBACK = 1181
-ERROR_DURING_FLUSH_LOGS = 1182
-ERROR_DURING_CHECKPOINT = 1183
-NEW_ABORTING_CONNECTION = 1184
-DUMP_NOT_IMPLEMENTED = 1185
-FLUSH_MASTER_BINLOG_CLOSED = 1186
-INDEX_REBUILD = 1187
-MASTER = 1188
-MASTER_NET_READ = 1189
-MASTER_NET_WRITE = 1190
-FT_MATCHING_KEY_NOT_FOUND = 1191
-LOCK_OR_ACTIVE_TRANSACTION = 1192
-UNKNOWN_SYSTEM_VARIABLE = 1193
-CRASHED_ON_USAGE = 1194
-CRASHED_ON_REPAIR = 1195
-WARNING_NOT_COMPLETE_ROLLBACK = 1196
-TRANS_CACHE_FULL = 1197
-SLAVE_MUST_STOP = 1198
-SLAVE_NOT_RUNNING = 1199
-BAD_SLAVE = 1200
-MASTER_INFO = 1201
-SLAVE_THREAD = 1202
-TOO_MANY_USER_CONNECTIONS = 1203
-SET_CONSTANTS_ONLY = 1204
-LOCK_WAIT_TIMEOUT = 1205
-LOCK_TABLE_FULL = 1206
-READ_ONLY_TRANSACTION = 1207
-DROP_DB_WITH_READ_LOCK = 1208
-CREATE_DB_WITH_READ_LOCK = 1209
-WRONG_ARGUMENTS = 1210
-NO_PERMISSION_TO_CREATE_USER = 1211
-UNION_TABLES_IN_DIFFERENT_DIR = 1212
-LOCK_DEADLOCK = 1213
-TABLE_CANT_HANDLE_FT = 1214
-CANNOT_ADD_FOREIGN = 1215
-NO_REFERENCED_ROW = 1216
-ROW_IS_REFERENCED = 1217
-CONNECT_TO_MASTER = 1218
-QUERY_ON_MASTER = 1219
-ERROR_WHEN_EXECUTING_COMMAND = 1220
-WRONG_USAGE = 1221
-WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222
-CANT_UPDATE_WITH_READLOCK = 1223
-MIXING_NOT_ALLOWED = 1224
-DUP_ARGUMENT = 1225
-USER_LIMIT_REACHED = 1226
-SPECIFIC_ACCESS_DENIED_ERROR = 1227
-LOCAL_VARIABLE = 1228
-GLOBAL_VARIABLE = 1229
-NO_DEFAULT = 1230
-WRONG_VALUE_FOR_VAR = 1231
-WRONG_TYPE_FOR_VAR = 1232
-VAR_CANT_BE_READ = 1233
-CANT_USE_OPTION_HERE = 1234
-NOT_SUPPORTED_YET = 1235
-MASTER_FATAL_ERROR_READING_BINLOG = 1236
-SLAVE_IGNORED_TABLE = 1237
-INCORRECT_GLOBAL_LOCAL_VAR = 1238
-WRONG_FK_DEF = 1239
-KEY_REF_DO_NOT_MATCH_TABLE_REF = 1240
-OPERAND_COLUMNS = 1241
-SUBQUERY_NO_1_ROW = 1242
-UNKNOWN_STMT_HANDLER = 1243
-CORRUPT_HELP_DB = 1244
-CYCLIC_REFERENCE = 1245
-AUTO_CONVERT = 1246
-ILLEGAL_REFERENCE = 1247
-DERIVED_MUST_HAVE_ALIAS = 1248
-SELECT_REDUCED = 1249
-TABLENAME_NOT_ALLOWED_HERE = 1250
-NOT_SUPPORTED_AUTH_MODE = 1251
-SPATIAL_CANT_HAVE_NULL = 1252
-COLLATION_CHARSET_MISMATCH = 1253
-SLAVE_WAS_RUNNING = 1254
-SLAVE_WAS_NOT_RUNNING = 1255
-TOO_BIG_FOR_UNCOMPRESS = 1256
-ZLIB_Z_MEM_ERROR = 1257
-ZLIB_Z_BUF_ERROR = 1258
-ZLIB_Z_DATA_ERROR = 1259
-CUT_VALUE_GROUP_CONCAT = 1260
-WARN_TOO_FEW_RECORDS = 1261
-WARN_TOO_MANY_RECORDS = 1262
-WARN_NULL_TO_NOTNULL = 1263
-WARN_DATA_OUT_OF_RANGE = 1264
-WARN_DATA_TRUNCATED = 1265
-WARN_USING_OTHER_HANDLER = 1266
-CANT_AGGREGATE_2COLLATIONS = 1267
-DROP_USER = 1268
-REVOKE_GRANTS = 1269
-CANT_AGGREGATE_3COLLATIONS = 1270
-CANT_AGGREGATE_NCOLLATIONS = 1271
-VARIABLE_IS_NOT_STRUCT = 1272
-UNKNOWN_COLLATION = 1273
-SLAVE_IGNORED_SSL_PARAMS = 1274
-SERVER_IS_IN_SECURE_AUTH_MODE = 1275
-WARN_FIELD_RESOLVED = 1276
-BAD_SLAVE_UNTIL_COND = 1277
-MISSING_SKIP_SLAVE = 1278
-UNTIL_COND_IGNORED = 1279
-WRONG_NAME_FOR_INDEX = 1280
-WRONG_NAME_FOR_CATALOG = 1281
-WARN_QC_RESIZE = 1282
-BAD_FT_COLUMN = 1283
-UNKNOWN_KEY_CACHE = 1284
-WARN_HOSTNAME_WONT_WORK = 1285
-UNKNOWN_STORAGE_ENGINE = 1286
-WARN_DEPRECATED_SYNTAX = 1287
-NON_UPDATABLE_TABLE = 1288
-FEATURE_DISABLED = 1289
-OPTION_PREVENTS_STATEMENT = 1290
-DUPLICATED_VALUE_IN_TYPE = 1291
-TRUNCATED_WRONG_VALUE = 1292
-TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293
-INVALID_ON_UPDATE = 1294
-UNSUPPORTED_PS = 1295
-GET_ERRMSG = 1296
-GET_TEMPORARY_ERRMSG = 1297
-UNKNOWN_TIME_ZONE = 1298
-WARN_INVALID_TIMESTAMP = 1299
-INVALID_CHARACTER_STRING = 1300
-WARN_ALLOWED_PACKET_OVERFLOWED = 1301
-CONFLICTING_DECLARATIONS = 1302
-SP_NO_RECURSIVE_CREATE = 1303
-SP_ALREADY_EXISTS = 1304
-SP_DOES_NOT_EXIST = 1305
-SP_DROP_FAILED = 1306
-SP_STORE_FAILED = 1307
-SP_LILABEL_MISMATCH = 1308
-SP_LABEL_REDEFINE = 1309
-SP_LABEL_MISMATCH = 1310
-SP_UNINIT_VAR = 1311
-SP_BADSELECT = 1312
-SP_BADRETURN = 1313
-SP_BADSTATEMENT = 1314
-UPDATE_LOG_DEPRECATED_IGNORED = 1315
-UPDATE_LOG_DEPRECATED_TRANSLATED = 1316
-QUERY_INTERRUPTED = 1317
-SP_WRONG_NO_OF_ARGS = 1318
-SP_COND_MISMATCH = 1319
-SP_NORETURN = 1320
-SP_NORETURNEND = 1321
-SP_BAD_CURSOR_QUERY = 1322
-SP_BAD_CURSOR_SELECT = 1323
-SP_CURSOR_MISMATCH = 1324
-SP_CURSOR_ALREADY_OPEN = 1325
-SP_CURSOR_NOT_OPEN = 1326
-SP_UNDECLARED_VAR = 1327
-SP_WRONG_NO_OF_FETCH_ARGS = 1328
-SP_FETCH_NO_DATA = 1329
-SP_DUP_PARAM = 1330
-SP_DUP_VAR = 1331
-SP_DUP_COND = 1332
-SP_DUP_CURS = 1333
-SP_CANT_ALTER = 1334
-SP_SUBSELECT_NYI = 1335
-STMT_NOT_ALLOWED_IN_SF_OR_TRG = 1336
-SP_VARCOND_AFTER_CURSHNDLR = 1337
-SP_CURSOR_AFTER_HANDLER = 1338
-SP_CASE_NOT_FOUND = 1339
-FPARSER_TOO_BIG_FILE = 1340
-FPARSER_BAD_HEADER = 1341
-FPARSER_EOF_IN_COMMENT = 1342
-FPARSER_ERROR_IN_PARAMETER = 1343
-FPARSER_EOF_IN_UNKNOWN_PARAMETER = 1344
-VIEW_NO_EXPLAIN = 1345
-FRM_UNKNOWN_TYPE = 1346
-WRONG_OBJECT = 1347
-NONUPDATEABLE_COLUMN = 1348
-VIEW_SELECT_DERIVED = 1349
-VIEW_SELECT_CLAUSE = 1350
-VIEW_SELECT_VARIABLE = 1351
-VIEW_SELECT_TMPTABLE = 1352
-VIEW_WRONG_LIST = 1353
-WARN_VIEW_MERGE = 1354
-WARN_VIEW_WITHOUT_KEY = 1355
-VIEW_INVALID = 1356
-SP_NO_DROP_SP = 1357
-SP_GOTO_IN_HNDLR = 1358
-TRG_ALREADY_EXISTS = 1359
-TRG_DOES_NOT_EXIST = 1360
-TRG_ON_VIEW_OR_TEMP_TABLE = 1361
-TRG_CANT_CHANGE_ROW = 1362
-TRG_NO_SUCH_ROW_IN_TRG = 1363
-NO_DEFAULT_FOR_FIELD = 1364
-DIVISION_BY_ZERO = 1365
-TRUNCATED_WRONG_VALUE_FOR_FIELD = 1366
-ILLEGAL_VALUE_FOR_TYPE = 1367
-VIEW_NONUPD_CHECK = 1368
-VIEW_CHECK_FAILED = 1369
-PROCACCESS_DENIED_ERROR = 1370
-RELAY_LOG_FAIL = 1371
-PASSWD_LENGTH = 1372
-UNKNOWN_TARGET_BINLOG = 1373
-IO_ERR_LOG_INDEX_READ = 1374
-BINLOG_PURGE_PROHIBITED = 1375
-FSEEK_FAIL = 1376
-BINLOG_PURGE_FATAL_ERR = 1377
-LOG_IN_USE = 1378
-LOG_PURGE_UNKNOWN_ERR = 1379
-RELAY_LOG_INIT = 1380
-NO_BINARY_LOGGING = 1381
-RESERVED_SYNTAX = 1382
-WSAS_FAILED = 1383
-DIFF_GROUPS_PROC = 1384
-NO_GROUP_FOR_PROC = 1385
-ORDER_WITH_PROC = 1386
-LOGGING_PROHIBIT_CHANGING_OF = 1387
-NO_FILE_MAPPING = 1388
-WRONG_MAGIC = 1389
-PS_MANY_PARAM = 1390
-KEY_PART_0 = 1391
-VIEW_CHECKSUM = 1392
-VIEW_MULTIUPDATE = 1393
-VIEW_NO_INSERT_FIELD_LIST = 1394
-VIEW_DELETE_MERGE_VIEW = 1395
-CANNOT_USER = 1396
-XAER_NOTA = 1397
-XAER_INVAL = 1398
-XAER_RMFAIL = 1399
-XAER_OUTSIDE = 1400
-XAER_RMERR = 1401
-XA_RBROLLBACK = 1402
-NONEXISTING_PROC_GRANT = 1403
-PROC_AUTO_GRANT_FAIL = 1404
-PROC_AUTO_REVOKE_FAIL = 1405
-DATA_TOO_LONG = 1406
-SP_BAD_SQLSTATE = 1407
-STARTUP = 1408
-LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR = 1409
-CANT_CREATE_USER_WITH_GRANT = 1410
-WRONG_VALUE_FOR_TYPE = 1411
-TABLE_DEF_CHANGED = 1412
-SP_DUP_HANDLER = 1413
-SP_NOT_VAR_ARG = 1414
-SP_NO_RETSET = 1415
-CANT_CREATE_GEOMETRY_OBJECT = 1416
-FAILED_ROUTINE_BREAK_BINLOG = 1417
-BINLOG_UNSAFE_ROUTINE = 1418
-BINLOG_CREATE_ROUTINE_NEED_SUPER = 1419
-EXEC_STMT_WITH_OPEN_CURSOR = 1420
-STMT_HAS_NO_OPEN_CURSOR = 1421
-COMMIT_NOT_ALLOWED_IN_SF_OR_TRG = 1422
-NO_DEFAULT_FOR_VIEW_FIELD = 1423
-SP_NO_RECURSION = 1424
-TOO_BIG_SCALE = 1425
-TOO_BIG_PRECISION = 1426
-M_BIGGER_THAN_D = 1427
-WRONG_LOCK_OF_SYSTEM_TABLE = 1428
-CONNECT_TO_FOREIGN_DATA_SOURCE = 1429
-QUERY_ON_FOREIGN_DATA_SOURCE = 1430
-FOREIGN_DATA_SOURCE_DOESNT_EXIST = 1431
-FOREIGN_DATA_STRING_INVALID_CANT_CREATE = 1432
-FOREIGN_DATA_STRING_INVALID = 1433
-CANT_CREATE_FEDERATED_TABLE = 1434
-TRG_IN_WRONG_SCHEMA = 1435
-STACK_OVERRUN_NEED_MORE = 1436
-TOO_LONG_BODY = 1437
-WARN_CANT_DROP_DEFAULT_KEYCACHE = 1438
-TOO_BIG_DISPLAYWIDTH = 1439
-XAER_DUPID = 1440
-DATETIME_FUNCTION_OVERFLOW = 1441
-CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG = 1442
-VIEW_PREVENT_UPDATE = 1443
-PS_NO_RECURSION = 1444
-SP_CANT_SET_AUTOCOMMIT = 1445
-MALFORMED_DEFINER = 1446
-VIEW_FRM_NO_USER = 1447
-VIEW_OTHER_USER = 1448
-NO_SUCH_USER = 1449
-FORBID_SCHEMA_CHANGE = 1450
-ROW_IS_REFERENCED_2 = 1451
-NO_REFERENCED_ROW_2 = 1452
-SP_BAD_VAR_SHADOW = 1453
-TRG_NO_DEFINER = 1454
-OLD_FILE_FORMAT = 1455
-SP_RECURSION_LIMIT = 1456
-SP_PROC_TABLE_CORRUPT = 1457
-ERROR_LAST = 1457
-
diff --git a/modules/MySQLdb/constants/FIELD_TYPE.py b/modules/MySQLdb/constants/FIELD_TYPE.py
deleted file mode 100644
index 8a57b171..00000000
--- a/modules/MySQLdb/constants/FIELD_TYPE.py
+++ /dev/null
@@ -1,37 +0,0 @@
-"""MySQL FIELD_TYPE Constants
-
-These constants represent the various column (field) types that are
-supported by MySQL.
-
-"""
-
-DECIMAL = 0
-TINY = 1
-SHORT = 2
-LONG = 3
-FLOAT = 4
-DOUBLE = 5
-NULL = 6
-TIMESTAMP = 7
-LONGLONG = 8
-INT24 = 9
-DATE = 10
-TIME = 11
-DATETIME = 12
-YEAR = 13
-NEWDATE = 14
-VARCHAR = 15
-BIT = 16
-NEWDECIMAL = 246
-ENUM = 247
-SET = 248
-TINY_BLOB = 249
-MEDIUM_BLOB = 250
-LONG_BLOB = 251
-BLOB = 252
-VAR_STRING = 253
-STRING = 254
-GEOMETRY = 255
-
-CHAR = TINY
-INTERVAL = ENUM
diff --git a/modules/MySQLdb/constants/FLAG.py b/modules/MySQLdb/constants/FLAG.py
deleted file mode 100644
index 00e6c7c0..00000000
--- a/modules/MySQLdb/constants/FLAG.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""MySQL FLAG Constants
-
-These flags are used along with the FIELD_TYPE to indicate various
-properties of columns in a result set.
-
-"""
-
-NOT_NULL = 1
-PRI_KEY = 2
-UNIQUE_KEY = 4
-MULTIPLE_KEY = 8
-BLOB = 16
-UNSIGNED = 32
-ZEROFILL = 64
-BINARY = 128
-ENUM = 256
-AUTO_INCREMENT = 512
-TIMESTAMP = 1024
-SET = 2048
-NUM = 32768
-PART_KEY = 16384
-GROUP = 32768
-UNIQUE = 65536
diff --git a/modules/MySQLdb/constants/REFRESH.py b/modules/MySQLdb/constants/REFRESH.py
deleted file mode 100644
index 4a08b94e..00000000
--- a/modules/MySQLdb/constants/REFRESH.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""MySQL REFRESH Constants
-
-These constants seem to mostly deal with things internal to the
-MySQL server. Forget you saw this.
-
-"""
-
-GRANT = 1
-LOG = 2
-TABLES = 4
-HOSTS = 8
-STATUS = 16
-THREADS = 32
-SLAVE = 64
-MASTER = 128
-READ_LOCK = 16384
-FAST = 32768
diff --git a/modules/MySQLdb/constants/__init__.py b/modules/MySQLdb/constants/__init__.py
deleted file mode 100644
index 3da4a0e7..00000000
--- a/modules/MySQLdb/constants/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__all__ = ['CR', 'FIELD_TYPE','CLIENT','REFRESH','ER','FLAG']
diff --git a/modules/MySQLdb/converters.py b/modules/MySQLdb/converters.py
deleted file mode 100644
index 26c1f901..00000000
--- a/modules/MySQLdb/converters.py
+++ /dev/null
@@ -1,189 +0,0 @@
-"""MySQLdb type conversion module
-
-This module handles all the type conversions for MySQL. If the default
-type conversions aren't what you need, you can make your own. The
-dictionary conversions maps some kind of type to a conversion function
-which returns the corresponding value:
-
-Key: FIELD_TYPE.* (from MySQLdb.constants)
-
-Conversion function:
-
- Arguments: string
-
- Returns: Python object
-
-Key: Python type object (from types) or class
-
-Conversion function:
-
- Arguments: Python object of indicated type or class AND
- conversion dictionary
-
- Returns: SQL literal value
-
- Notes: Most conversion functions can ignore the dictionary, but
- it is a required parameter. It is necessary for converting
- things like sequences and instances.
-
-Don't modify conversions if you can avoid it. Instead, make copies
-(with the copy() method), modify the copies, and then pass them to
-MySQL.connect().
-
-"""
-
-from _mysql import string_literal, escape_sequence, escape_dict, escape, NULL
-from MySQLdb.constants import FIELD_TYPE, FLAG
-from MySQLdb.times import *
-
-try:
- from types import IntType, LongType, FloatType, NoneType, TupleType, ListType, DictType, InstanceType, \
- StringType, UnicodeType, ObjectType, BooleanType, ClassType, TypeType
-except ImportError:
- # Python 3
- long = int
- IntType, LongType, FloatType, NoneType = int, long, float, type(None)
- TupleType, ListType, DictType, InstanceType = tuple, list, dict, None
- StringType, UnicodeType, ObjectType, BooleanType = bytes, str, object, bool
-
-import array
-
-try:
- ArrayType = array.ArrayType
-except AttributeError:
- ArrayType = array.array
-
-try:
- set
-except NameError:
- from sets import Set as set
-
-def Bool2Str(s, d): return str(int(s))
-
-def Str2Set(s):
- return set([ i for i in s.split(',') if i ])
-
-def Set2Str(s, d):
- return string_literal(','.join(s), d)
-
-def Thing2Str(s, d):
- """Convert something into a string via str()."""
- return str(s)
-
-def Unicode2Str(s, d):
- """Convert a unicode object to a string using the default encoding.
- This is only used as a placeholder for the real function, which
- is connection-dependent."""
- return s.encode()
-
-Long2Int = Thing2Str
-
-def Float2Str(o, d):
- return '%.15g' % o
-
-def None2NULL(o, d):
- """Convert None to NULL."""
- return NULL # duh
-
-def Thing2Literal(o, d):
-
- """Convert something into a SQL string literal. If using
- MySQL-3.23 or newer, string_literal() is a method of the
- _mysql.MYSQL object, and this function will be overridden with
- that method when the connection is created."""
-
- return string_literal(o, d)
-
-
-def Instance2Str(o, d):
-
- """
-
- Convert an Instance to a string representation. If the __str__()
- method produces acceptable output, then you don't need to add the
- class to conversions; it will be handled by the default
- converter. If the exact class is not found in d, it will use the
- first class it can find for which o is an instance.
-
- """
-
- if o.__class__ in d:
- return d[o.__class__](o, d)
- cl = filter(lambda x,o=o:
- type(x) is ClassType
- and isinstance(o, x), d.keys())
- if not cl:
- cl = filter(lambda x,o=o:
- type(x) is TypeType
- and isinstance(o, x)
- and d[x] is not Instance2Str,
- d.keys())
- if not cl:
- return d[StringType](o,d)
- d[o.__class__] = d[cl[0]]
- return d[cl[0]](o, d)
-
-def char_array(s):
- return array.array('c', s)
-
-def array2Str(o, d):
- return Thing2Literal(o.tostring(), d)
-
-def quote_tuple(t, d):
- return "(%s)" % (','.join(escape_sequence(t, d)))
-
-conversions = {
- IntType: Thing2Str,
- LongType: Long2Int,
- FloatType: Float2Str,
- NoneType: None2NULL,
- TupleType: quote_tuple,
- ListType: quote_tuple,
- DictType: escape_dict,
- InstanceType: Instance2Str,
- ArrayType: array2Str,
- StringType: Thing2Literal, # default
- UnicodeType: Unicode2Str,
- ObjectType: Instance2Str,
- BooleanType: Bool2Str,
- DateTimeType: DateTime2literal,
- DateTimeDeltaType: DateTimeDelta2literal,
- set: Set2Str,
- FIELD_TYPE.TINY: int,
- FIELD_TYPE.SHORT: int,
- FIELD_TYPE.LONG: long,
- FIELD_TYPE.FLOAT: float,
- FIELD_TYPE.DOUBLE: float,
- FIELD_TYPE.DECIMAL: float,
- FIELD_TYPE.NEWDECIMAL: float,
- FIELD_TYPE.LONGLONG: long,
- FIELD_TYPE.INT24: int,
- FIELD_TYPE.YEAR: int,
- FIELD_TYPE.SET: Str2Set,
- FIELD_TYPE.TIMESTAMP: mysql_timestamp_converter,
- FIELD_TYPE.DATETIME: DateTime_or_None,
- FIELD_TYPE.TIME: TimeDelta_or_None,
- FIELD_TYPE.DATE: Date_or_None,
- FIELD_TYPE.BLOB: [
- (FLAG.BINARY, str),
- ],
- FIELD_TYPE.STRING: [
- (FLAG.BINARY, str),
- ],
- FIELD_TYPE.VAR_STRING: [
- (FLAG.BINARY, str),
- ],
- FIELD_TYPE.VARCHAR: [
- (FLAG.BINARY, str),
- ],
- }
-
-try:
- from decimal import Decimal
- conversions[FIELD_TYPE.DECIMAL] = Decimal
- conversions[FIELD_TYPE.NEWDECIMAL] = Decimal
-except ImportError:
- pass
-
-
-
diff --git a/modules/MySQLdb/cursors.py b/modules/MySQLdb/cursors.py
deleted file mode 100644
index 348a586a..00000000
--- a/modules/MySQLdb/cursors.py
+++ /dev/null
@@ -1,541 +0,0 @@
-"""MySQLdb Cursors
-
-This module implements Cursors of various types for MySQLdb. By
-default, MySQLdb uses the Cursor class.
-
-"""
-
-import re
-import sys
-try:
- from types import ListType, TupleType, UnicodeType
-except ImportError:
- # Python 3
- ListType = list
- TupleType = tuple
- UnicodeType = str
-
-restr = r"""
- \s
- values
- \s*
- (
- \(
- [^()']*
- (?:
- (?:
- (?:\(
- # ( - editor hightlighting helper
- .*
- \))
- |
- '
- [^\\']*
- (?:\\.[^\\']*)*
- '
- )
- [^()']*
- )*
- \)
- )
-"""
-
-insert_values = re.compile(restr, re.S | re.I | re.X)
-
-from _mysql_exceptions import Warning, Error, InterfaceError, DataError, \
- DatabaseError, OperationalError, IntegrityError, InternalError, \
- NotSupportedError, ProgrammingError
-
-
-class BaseCursor(object):
-
- """A base for Cursor classes. Useful attributes:
-
- description
- A tuple of DB API 7-tuples describing the columns in
- the last executed query; see PEP-249 for details.
-
- description_flags
- Tuple of column flags for last query, one entry per column
- in the result set. Values correspond to those in
- MySQLdb.constants.FLAG. See MySQL documentation (C API)
- for more information. Non-standard extension.
-
- arraysize
- default number of rows fetchmany() will fetch
-
- """
-
- from _mysql_exceptions import MySQLError, Warning, Error, InterfaceError, \
- DatabaseError, DataError, OperationalError, IntegrityError, \
- InternalError, ProgrammingError, NotSupportedError
-
- _defer_warnings = False
-
- def __init__(self, connection):
- from weakref import proxy
-
- self.connection = proxy(connection)
- self.description = None
- self.description_flags = None
- self.rowcount = -1
- self.arraysize = 1
- self._executed = None
- self.lastrowid = None
- self.messages = []
- self.errorhandler = connection.errorhandler
- self._result = None
- self._warnings = 0
- self._info = None
- self.rownumber = None
-
- def __del__(self):
- self.close()
- self.errorhandler = None
- self._result = None
-
- def close(self):
- """Close the cursor. No further queries will be possible."""
- if not self.connection: return
- while self.nextset(): pass
- self.connection = None
-
- def _check_executed(self):
- if not self._executed:
- self.errorhandler(self, ProgrammingError, "execute() first")
-
- def _warning_check(self):
- from warnings import warn
- if self._warnings:
- warnings = self._get_db().show_warnings()
- if warnings:
- # This is done in two loops in case
- # Warnings are set to raise exceptions.
- for w in warnings:
- self.messages.append((self.Warning, w))
- for w in warnings:
- warn(w[-1], self.Warning, 3)
- elif self._info:
- self.messages.append((self.Warning, self._info))
- warn(self._info, self.Warning, 3)
-
- def nextset(self):
- """Advance to the next result set.
-
- Returns None if there are no more result sets.
- """
- if self._executed:
- self.fetchall()
- del self.messages[:]
-
- db = self._get_db()
- nr = db.next_result()
- if nr == -1:
- return None
- self._do_get_result()
- self._post_get_result()
- self._warning_check()
- return 1
-
- def _post_get_result(self): pass
-
- def _do_get_result(self):
- db = self._get_db()
- self._result = self._get_result()
- self.rowcount = db.affected_rows()
- self.rownumber = 0
- self.description = self._result and self._result.describe() or None
- self.description_flags = self._result and self._result.field_flags() or None
- self.lastrowid = db.insert_id()
- self._warnings = db.warning_count()
- self._info = db.info()
-
- def setinputsizes(self, *args):
- """Does nothing, required by DB API."""
-
- def setoutputsizes(self, *args):
- """Does nothing, required by DB API."""
-
- def _get_db(self):
- if not self.connection:
- self.errorhandler(self, ProgrammingError, "cursor closed")
- return self.connection
-
- def execute(self, query, args=None):
-
- """Execute a query.
-
- query -- string, query to execute on server
- args -- optional sequence or mapping, parameters to use with query.
-
- Note: If args is a sequence, then %s must be used as the
- parameter placeholder in the query. If a mapping is used,
- %(key)s must be used as the placeholder.
-
- Returns long integer rows affected, if any
-
- """
- del self.messages[:]
- db = self._get_db()
- if isinstance(query, unicode):
- query = query.encode(db.unicode_literal.charset)
- if args is not None:
- if isinstance(args, dict):
- query = query % dict((key, db.literal(item))
- for key, item in args.iteritems())
- else:
- query = query % tuple([db.literal(item) for item in args])
- try:
- r = None
- r = self._query(query)
- except TypeError, m:
- if m.args[0] in ("not enough arguments for format string",
- "not all arguments converted"):
- self.messages.append((ProgrammingError, m.args[0]))
- self.errorhandler(self, ProgrammingError, m.args[0])
- else:
- self.messages.append((TypeError, m))
- self.errorhandler(self, TypeError, m)
- except (SystemExit, KeyboardInterrupt):
- raise
- except:
- exc, value, tb = sys.exc_info()
- del tb
- self.messages.append((exc, value))
- self.errorhandler(self, exc, value)
- self._executed = query
- if not self._defer_warnings: self._warning_check()
- return r
-
- def executemany(self, query, args):
-
- """Execute a multi-row query.
-
- query -- string, query to execute on server
-
- args
-
- Sequence of sequences or mappings, parameters to use with
- query.
-
- Returns long integer rows affected, if any.
-
- This method improves performance on multiple-row INSERT and
- REPLACE. Otherwise it is equivalent to looping over args with
- execute().
-
- """
- del self.messages[:]
- db = self._get_db()
- if not args: return
- if isinstance(query, unicode):
- query = query.encode(db.unicode_literal.charset)
- m = insert_values.search(query)
- if not m:
- r = 0
- for a in args:
- r = r + self.execute(query, a)
- return r
- p = m.start(1)
- e = m.end(1)
- qv = m.group(1)
- try:
- q = []
- for a in args:
- if isinstance(a, dict):
- q.append(qv % dict((key, db.literal(item))
- for key, item in a.iteritems()))
- else:
- q.append(qv % tuple([db.literal(item) for item in a]))
- except TypeError, msg:
- if msg.args[0] in ("not enough arguments for format string",
- "not all arguments converted"):
- self.errorhandler(self, ProgrammingError, msg.args[0])
- else:
- self.errorhandler(self, TypeError, msg)
- except (SystemExit, KeyboardInterrupt):
- raise
- except:
- exc, value, tb = sys.exc_info()
- del tb
- self.errorhandler(self, exc, value)
- r = self._query('\n'.join([query[:p], ',\n'.join(q), query[e:]]))
- if not self._defer_warnings: self._warning_check()
- return r
-
- def callproc(self, procname, args=()):
-
- """Execute stored procedure procname with args
-
- procname -- string, name of procedure to execute on server
-
- args -- Sequence of parameters to use with procedure
-
- Returns the original args.
-
- Compatibility warning: PEP-249 specifies that any modified
- parameters must be returned. This is currently impossible
- as they are only available by storing them in a server
- variable and then retrieved by a query. Since stored
- procedures return zero or more result sets, there is no
- reliable way to get at OUT or INOUT parameters via callproc.
- The server variables are named @_procname_n, where procname
- is the parameter above and n is the position of the parameter
- (from zero). Once all result sets generated by the procedure
- have been fetched, you can issue a SELECT @_procname_0, ...
- query using .execute() to get any OUT or INOUT values.
-
- Compatibility warning: The act of calling a stored procedure
- itself creates an empty result set. This appears after any
- result sets generated by the procedure. This is non-standard
- behavior with respect to the DB-API. Be sure to use nextset()
- to advance through all result sets; otherwise you may get
- disconnected.
- """
-
- db = self._get_db()
- for index, arg in enumerate(args):
- q = "SET @_%s_%d=%s" % (procname, index,
- db.literal(arg))
- if isinstance(q, unicode):
- q = q.encode(db.unicode_literal.charset)
- self._query(q)
- self.nextset()
-
- q = "CALL %s(%s)" % (procname,
- ','.join(['@_%s_%d' % (procname, i)
- for i in range(len(args))]))
- if type(q) is UnicodeType:
- q = q.encode(db.unicode_literal.charset)
- self._query(q)
- self._executed = q
- if not self._defer_warnings: self._warning_check()
- return args
-
- def _do_query(self, q):
- db = self._get_db()
- self._last_executed = q
- db.query(q)
- self._do_get_result()
- return self.rowcount
-
- def _query(self, q): return self._do_query(q)
-
- def _fetch_row(self, size=1):
- if not self._result:
- return ()
- return self._result.fetch_row(size, self._fetch_type)
-
- def __iter__(self):
- return iter(self.fetchone, None)
-
- Warning = Warning
- Error = Error
- InterfaceError = InterfaceError
- DatabaseError = DatabaseError
- DataError = DataError
- OperationalError = OperationalError
- IntegrityError = IntegrityError
- InternalError = InternalError
- ProgrammingError = ProgrammingError
- NotSupportedError = NotSupportedError
-
-
-class CursorStoreResultMixIn(object):
-
- """This is a MixIn class which causes the entire result set to be
- stored on the client side, i.e. it uses mysql_store_result(). If the
- result set can be very large, consider adding a LIMIT clause to your
- query, or using CursorUseResultMixIn instead."""
-
- def _get_result(self): return self._get_db().store_result()
-
- def _query(self, q):
- rowcount = self._do_query(q)
- self._post_get_result()
- return rowcount
-
- def _post_get_result(self):
- self._rows = self._fetch_row(0)
- self._result = None
-
- def fetchone(self):
- """Fetches a single row from the cursor. None indicates that
- no more rows are available."""
- self._check_executed()
- if self.rownumber >= len(self._rows): return None
- result = self._rows[self.rownumber]
- self.rownumber = self.rownumber+1
- return result
-
- def fetchmany(self, size=None):
- """Fetch up to size rows from the cursor. Result set may be smaller
- than size. If size is not defined, cursor.arraysize is used."""
- self._check_executed()
- end = self.rownumber + (size or self.arraysize)
- result = self._rows[self.rownumber:end]
- self.rownumber = min(end, len(self._rows))
- return result
-
- def fetchall(self):
- """Fetchs all available rows from the cursor."""
- self._check_executed()
- if self.rownumber:
- result = self._rows[self.rownumber:]
- else:
- result = self._rows
- self.rownumber = len(self._rows)
- return result
-
- def scroll(self, value, mode='relative'):
- """Scroll the cursor in the result set to a new position according
- to mode.
-
- If mode is 'relative' (default), value is taken as offset to
- the current position in the result set, if set to 'absolute',
- value states an absolute target position."""
- self._check_executed()
- if mode == 'relative':
- r = self.rownumber + value
- elif mode == 'absolute':
- r = value
- else:
- self.errorhandler(self, ProgrammingError,
- "unknown scroll mode %s" % repr(mode))
- if r < 0 or r >= len(self._rows):
- self.errorhandler(self, IndexError, "out of range")
- self.rownumber = r
-
- def __iter__(self):
- self._check_executed()
- result = self.rownumber and self._rows[self.rownumber:] or self._rows
- return iter(result)
-
-
-class CursorUseResultMixIn(object):
-
- """This is a MixIn class which causes the result set to be stored
- in the server and sent row-by-row to client side, i.e. it uses
- mysql_use_result(). You MUST retrieve the entire result set and
- close() the cursor before additional queries can be peformed on
- the connection."""
-
- _defer_warnings = True
-
- def _get_result(self): return self._get_db().use_result()
-
- def fetchone(self):
- """Fetches a single row from the cursor."""
- self._check_executed()
- r = self._fetch_row(1)
- if not r:
- self._warning_check()
- return None
- self.rownumber = self.rownumber + 1
- return r[0]
-
- def fetchmany(self, size=None):
- """Fetch up to size rows from the cursor. Result set may be smaller
- than size. If size is not defined, cursor.arraysize is used."""
- self._check_executed()
- r = self._fetch_row(size or self.arraysize)
- self.rownumber = self.rownumber + len(r)
- if not r:
- self._warning_check()
- return r
-
- def fetchall(self):
- """Fetchs all available rows from the cursor."""
- self._check_executed()
- r = self._fetch_row(0)
- self.rownumber = self.rownumber + len(r)
- self._warning_check()
- return r
-
- def __iter__(self):
- return self
-
- def next(self):
- row = self.fetchone()
- if row is None:
- raise StopIteration
- return row
-
-
-class CursorTupleRowsMixIn(object):
-
- """This is a MixIn class that causes all rows to be returned as tuples,
- which is the standard form required by DB API."""
-
- _fetch_type = 0
-
-
-class CursorDictRowsMixIn(object):
-
- """This is a MixIn class that causes all rows to be returned as
- dictionaries. This is a non-standard feature."""
-
- _fetch_type = 1
-
- def fetchoneDict(self):
- """Fetch a single row as a dictionary. Deprecated:
- Use fetchone() instead. Will be removed in 1.3."""
- from warnings import warn
- warn("fetchoneDict() is non-standard and will be removed in 1.3",
- DeprecationWarning, 2)
- return self.fetchone()
-
- def fetchmanyDict(self, size=None):
- """Fetch several rows as a list of dictionaries. Deprecated:
- Use fetchmany() instead. Will be removed in 1.3."""
- from warnings import warn
- warn("fetchmanyDict() is non-standard and will be removed in 1.3",
- DeprecationWarning, 2)
- return self.fetchmany(size)
-
- def fetchallDict(self):
- """Fetch all available rows as a list of dictionaries. Deprecated:
- Use fetchall() instead. Will be removed in 1.3."""
- from warnings import warn
- warn("fetchallDict() is non-standard and will be removed in 1.3",
- DeprecationWarning, 2)
- return self.fetchall()
-
-
-class CursorOldDictRowsMixIn(CursorDictRowsMixIn):
-
- """This is a MixIn class that returns rows as dictionaries with
- the same key convention as the old Mysqldb (MySQLmodule). Don't
- use this."""
-
- _fetch_type = 2
-
-
-class Cursor(CursorStoreResultMixIn, CursorTupleRowsMixIn,
- BaseCursor):
-
- """This is the standard Cursor class that returns rows as tuples
- and stores the result set in the client."""
-
-
-class DictCursor(CursorStoreResultMixIn, CursorDictRowsMixIn,
- BaseCursor):
-
- """This is a Cursor class that returns rows as dictionaries and
- stores the result set in the client."""
-
-
-class SSCursor(CursorUseResultMixIn, CursorTupleRowsMixIn,
- BaseCursor):
-
- """This is a Cursor class that returns rows as tuples and stores
- the result set in the server."""
-
-
-class SSDictCursor(CursorUseResultMixIn, CursorDictRowsMixIn,
- BaseCursor):
-
- """This is a Cursor class that returns rows as dictionaries and
- stores the result set in the server."""
-
-
diff --git a/modules/MySQLdb/release.py b/modules/MySQLdb/release.py
deleted file mode 100644
index 2e7119cf..00000000
--- a/modules/MySQLdb/release.py
+++ /dev/null
@@ -1,4 +0,0 @@
-
-__author__ = "Andy Dustman "
-version_info = (1,2,5,'final',1)
-__version__ = "1.2.5"
diff --git a/modules/MySQLdb/times.py b/modules/MySQLdb/times.py
deleted file mode 100644
index 0ff74766..00000000
--- a/modules/MySQLdb/times.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""times module
-
-This module provides some Date and Time classes for dealing with MySQL data.
-
-Use Python datetime module to handle date and time columns."""
-
-import math
-from time import localtime
-from datetime import date, datetime, time, timedelta
-from _mysql import string_literal
-
-Date = date
-Time = time
-TimeDelta = timedelta
-Timestamp = datetime
-
-DateTimeDeltaType = timedelta
-DateTimeType = datetime
-
-def DateFromTicks(ticks):
- """Convert UNIX ticks into a date instance."""
- return date(*localtime(ticks)[:3])
-
-def TimeFromTicks(ticks):
- """Convert UNIX ticks into a time instance."""
- return time(*localtime(ticks)[3:6])
-
-def TimestampFromTicks(ticks):
- """Convert UNIX ticks into a datetime instance."""
- return datetime(*localtime(ticks)[:6])
-
-format_TIME = format_DATE = str
-
-def format_TIMEDELTA(v):
- seconds = int(v.seconds) % 60
- minutes = int(v.seconds / 60) % 60
- hours = int(v.seconds / 3600) % 24
- return '%d %d:%d:%d' % (v.days, hours, minutes, seconds)
-
-def format_TIMESTAMP(d):
- return d.isoformat(" ")
-
-
-def DateTime_or_None(s):
- if ' ' in s:
- sep = ' '
- elif 'T' in s:
- sep = 'T'
- else:
- return Date_or_None(s)
-
- try:
- d, t = s.split(sep, 1)
- if '.' in t:
- t, ms = t.split('.',1)
- ms = ms.ljust(6, '0')
- else:
- ms = 0
- return datetime(*[ int(x) for x in d.split('-')+t.split(':')+[ms] ])
- except (SystemExit, KeyboardInterrupt):
- raise
- except:
- return Date_or_None(s)
-
-def TimeDelta_or_None(s):
- try:
- h, m, s = s.split(':')
- if '.' in s:
- s, ms = s.split('.')
- ms = ms.ljust(6, '0')
- else:
- ms = 0
- h, m, s, ms = int(h), int(m), int(s), int(ms)
- td = timedelta(hours=abs(h), minutes=m, seconds=s,
- microseconds=ms)
- if h < 0:
- return -td
- else:
- return td
- except ValueError:
- # unpacking or int/float conversion failed
- return None
-
-def Time_or_None(s):
- try:
- h, m, s = s.split(':')
- if '.' in s:
- s, ms = s.split('.')
- ms = ms.ljust(6, '0')
- else:
- ms = 0
- h, m, s, ms = int(h), int(m), int(s), int(ms)
- return time(hour=h, minute=m, second=s,
- microsecond=ms)
- except ValueError:
- return None
-
-def Date_or_None(s):
- try:
- return date(*[ int(x) for x in s.split('-',2)])
- except (SystemExit, KeyboardInterrupt):
- raise
- except:
- return None
-
-def DateTime2literal(d, c):
- """Format a DateTime object as an ISO timestamp."""
- return string_literal(format_TIMESTAMP(d),c)
-
-def DateTimeDelta2literal(d, c):
- """Format a DateTimeDelta object as a time."""
- return string_literal(format_TIMEDELTA(d),c)
-
-def mysql_timestamp_converter(s):
- """Convert a MySQL TIMESTAMP to a Timestamp object."""
- # MySQL>4.1 returns TIMESTAMP in the same format as DATETIME
- if s[4] == '-': return DateTime_or_None(s)
- s = s + "0"*(14-len(s)) # padding
- parts = map(int, filter(None, (s[:4],s[4:6],s[6:8],
- s[8:10],s[10:12],s[12:14])))
- try:
- return Timestamp(*parts)
- except (SystemExit, KeyboardInterrupt):
- raise
- except:
- return None
diff --git a/modules/Pyro/EventService/Clients.py b/modules/Pyro/EventService/Clients.py
deleted file mode 100644
index 72bc734c..00000000
--- a/modules/Pyro/EventService/Clients.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#############################################################################
-#
-# Event Service client base classes
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import Pyro.core, Pyro.naming, Pyro.constants
-import Pyro.EventService.Server
-from Pyro.EventService.Event import Event
-from Pyro.errors import *
-
-# SUBSCRIBER: subscribes to certain events.
-class Subscriber(Pyro.core.CallbackObjBase):
- def __init__(self, ident=None, esURI=None):
- Pyro.core.CallbackObjBase.__init__(self)
- Pyro.core.initServer()
- Pyro.core.initClient()
- daemon = Pyro.core.Daemon()
- if esURI:
- check=Pyro.core.PyroURI(esURI)
- self.ES_uri=esURI
- else:
- locator = Pyro.naming.NameServerLocator(identification=ident)
- self.NS = locator.getNS(host=Pyro.config.PYRO_NS_HOSTNAME)
- daemon.useNameServer(self.NS)
- self.ES_uri = self.NS.resolve(Pyro.constants.EVENTSERVER_NAME)
- daemon.connect(self) # will also set self.daemon...
- self.ES_ident=ident
- self.abortListen=0
- self.daemon=daemon # make sure daemon doesn't get garbage collected now
-
- def getES(self):
- # we get a fresh proxy to the ES because of threading issues.
- # (proxies can not be reused across multiple threads)
- eventservice=Pyro.core.getProxyForURI(self.ES_uri)
- eventservice._setIdentification(self.ES_ident)
- return eventservice
-
- def subscribe(self,subjects):
- # Subscribe to one or more subjects.
- # It is safe to call this multiple times.
- self.getES().subscribe(subjects, self.getProxy())
- def subscribeMatch(self,subjectPatterns):
- # Subscribe to one or more subjects (by pattern)
- # It is safe to call this multiple times.
- self.getES().subscribeMatch(subjectPatterns, self.getProxy())
- def unsubscribe(self, subjects):
- # Unsubscribe the subscriber for the given subject(s).
- self.getES().unsubscribe(subjects, self.getProxy())
-
- def abort(self):
- self.abortListen=1
-
- def setThreading(self, threaded):
- self.getDaemon().threaded=threaded
-
- def listen(self):
- self.getDaemon().requestLoop(lambda s=self: not s.abortListen)
-
- def event(self, event): # callback, override this!
- print event
-
-# PUBLISHER: publishes events.
-class Publisher(object):
- def __init__(self, ident=None, esURI=None):
- Pyro.core.initClient()
- if esURI:
- check=Pyro.core.PyroURI(esURI)
- self.ES_uri=esURI
- else:
- locator = Pyro.naming.NameServerLocator(identification=ident)
- ns = locator.getNS(host=Pyro.config.PYRO_NS_HOSTNAME)
- self.ES_uri = ns.resolve(Pyro.constants.EVENTSERVER_NAME)
- ns._release() # be very sure to release the socket
- self.ES_ident = ident
-
- def getES(self):
- # we get a fresh proxy to the ES because of threading issues.
- # (proxies can not be reused across multiple threads)
- eventservice=Pyro.core.getProxyForURI(self.ES_uri)
- eventservice._setIdentification(self.ES_ident)
- return eventservice
-
- def publish(self, subjects, msg):
- es=self.getES()
- es.publish(subjects,msg)
- es._release() # be very sure to release the socket
-
diff --git a/modules/Pyro/EventService/Event.py b/modules/Pyro/EventService/Event.py
deleted file mode 100644
index d5e411d7..00000000
--- a/modules/Pyro/EventService/Event.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#############################################################################
-#
-# Event Service client base classes
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import time
-
-# EVENT - the thing that is published. Has a subject and contains a message.
-class Event(object):
- def __init__(self, subject, msg, creationTime=None):
- self.msg=msg
- self.subject=subject
- self.time=creationTime or time.time()
- def __str__(self):
- return "" % (self.subject, time.ctime(self.time), str(self.msg))
diff --git a/modules/Pyro/EventService/Server.py b/modules/Pyro/EventService/Server.py
deleted file mode 100644
index 8b23dfc2..00000000
--- a/modules/Pyro/EventService/Server.py
+++ /dev/null
@@ -1,301 +0,0 @@
-#############################################################################
-#
-# Event Service daemon and server classes
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import time, types, re, sys, traceback, os
-import Pyro.core, Pyro.naming, Pyro.util, Pyro.constants
-from Pyro.errors import *
-from Pyro.EventService.Event import Event
-import Queue
-from threading import Thread
-
-Log=Pyro.util.Log
-
-# SUBSCRIBER - each subscriber has one of these worker threads
-class Subscriber(Thread):
- def __init__(self, remote):
- Thread.__init__(self)
- self.remote=remote
- # set the callback method to ONEWAY mode:
- self.remote._setOneway("event")
- self.queue=Queue.Queue(Pyro.config.PYRO_ES_QUEUESIZE)
- def run(self):
- while 1:
- event=self.queue.get()
- if isinstance(event,Event):
- try:
- self.remote.event(event)
- except ProtocolError,x:
- break
- else:
- break # it was no Event, so exit
- # this reads all pending items from the queue so that any
- # tasks that are blocked on the queue can continue.
- (queue, self.queue) = (self.queue, None)
- try:
- while 1:
- queue.get(block=0)
- except Queue.Empty:
- pass
- # release the remote connection
- self.remote._release()
- del self.remote
- def send(self, event):
- if self.queue:
- self.queue.put(event, block=Pyro.config.PYRO_ES_BLOCKQUEUE)
- def running(self):
- return self.queue
-
-# The EVENTSERVICE is the actual Pyro server.
-#
-# BTW: Subscribers are remembered trough their proxy class.
-# This class is capable of being a correct key in a dictionary.
-class EventService(Pyro.core.ObjBase):
- def __init__(self):
- Pyro.core.ObjBase.__init__(self)
- self.subscribers={} # subject -> { threadname-> subscriberthread }
- self.subscribersMatch={} # subjectPattern -> { threadname->subscriberthread }
- self.subscriptionWorkers={} # subscriber -> subscription thread object
- def _mksequence(self, seq):
- if not (type(seq) in (types.TupleType,types.ListType)):
- return (seq,)
- return seq
- def getSubscriptionWorker(self, subscriber):
- # If this subscriber doesn't have its own subscription thread, create one.
- if subscriber not in self.subscriptionWorkers:
- worker = Subscriber(subscriber)
- worker.start()
- self.subscriptionWorkers[subscriber]=worker
- return worker
- else:
- return self.subscriptionWorkers[subscriber]
- def subscribe(self, subjects, subscriber):
- if not subjects: return
- # Subscribe into a dictionary; this way; somebody can subscribe
- # only once to this subject. Subjects are exact strings.
- for subject in self._mksequence(subjects):
- worker=self.getSubscriptionWorker(subscriber)
- self.subscribers.setdefault(subject.lower(),{}) [worker.getName()]=worker
- def subscribeMatch(self, subjects, subscriber):
- if not subjects: return
- # Subscribe into a dictionary; this way; somebody can subscribe
- # only once to this subject. Subjects are regex patterns.
- for subject in self._mksequence(subjects):
- worker=self.getSubscriptionWorker(subscriber)
- matcher = re.compile(subject,re.IGNORECASE)
- self.subscribersMatch.setdefault(matcher,{}) [worker.getName()]=worker
- def unsubscribe(self, subjects, subscriber):
- if not subjects: return
- for subject in self._mksequence(subjects):
- try:
- blaat=self.subscribers[subject.lower()] # check for subject
- worker=self.subscriptionWorkers[subscriber]
- del self.subscribers[subject.lower()] [worker.getName()]
- self.killWorkerIfLastSubject(subscriber, worker)
- except KeyError,x:
- try:
- m=re.compile(subject,re.IGNORECASE)
- worker=self.subscriptionWorkers[subscriber]
- del self.subscribersMatch[m] [worker.getName()]
- self.killWorkerIfLastSubject(subscriber,worker)
- except KeyError,x:
- pass
-
- def publish(self, subjects, message):
- if not subjects: return
- # keep the creation time, this must be the same for all events.
- creationTime=time.time()
- # publish a message. Subjects must be exact strings
- for subject in self._mksequence(subjects):
- event = Event(subject, message, creationTime)
- subjectLC=subject.lower()
- try:
- for (name,s) in self.subscribers[subjectLC].items():
- try:
- if s.running():
- s.send(event)
- else:
- try:
- del self.subscribers[subjectLC][name]
- except KeyError:
- pass
- except Queue.Full:
- pass
- except KeyError:
- pass
- # process the subject patterns
- for (m,subs) in self.subscribersMatch.items():
- if m.match(subject):
- # send event to all subscribers
- for (name,s) in subs.items():
- try:
- if s.running():
- s.send(event)
- else:
- try:
- del subs[name]
- except KeyError:
- pass
- except Queue.Full:
- pass
-
- def killWorkerIfLastSubject(self, subscriber, worker):
- item=(worker.getName(),worker)
- for v in self.subscribers.values():
- if item in v.items():
- return
- for v in self.subscribersMatch.values():
- if item in v.items():
- return
- worker.send("QUIT")
- del self.subscriptionWorkers[subscriber]
-
-
-class EventServiceStarter(object):
- def __init__(self, identification=None):
- Pyro.core.initServer()
- self.running=1
- self.identification=identification
- self.started = Pyro.util.getEventObject()
- def start(self, *args, **kwargs): # see _start for allowed arguments
- kwargs["startloop"]=1
- self._start(*args, **kwargs )
- def initialize(self, *args, **kwargs): # see _start for allowed arguments
- kwargs["startloop"]=0
- self._start( *args, **kwargs )
- def getServerSockets(self):
- return self.daemon.getServerSockets()
- def waitUntilStarted(self,timeout=None):
- self.started.wait(timeout)
- return self.started.isSet()
- def _start(self,hostname='',port=None,startloop=1,useNameServer=1,norange=0):
- daemon = Pyro.core.Daemon(host=hostname,port=port,norange=norange)
- if self.identification:
- daemon.setAllowedIdentifications([self.identification])
- print 'Requiring connection authentication.'
-
- if useNameServer:
- locator = Pyro.naming.NameServerLocator(identification=self.identification)
- ns = locator.getNS()
-
- # check if ES already running
- try:
- ns.resolve(Pyro.constants.EVENTSERVER_NAME)
- print 'The Event Server appears to be already running.'
- print 'You cannot start multiple Event Servers.'
- ans=raw_input('Start new Event Server anyway (y/n)? ')
- if ans!='y':
- return
- ns.unregister(Pyro.constants.EVENTSERVER_NAME)
- except NamingError:
- pass
-
- daemon.useNameServer(ns)
-
- es = EventService()
-
- esURI=daemon.connect(es, Pyro.constants.EVENTSERVER_NAME)
- print 'URI=',esURI
-
- message = daemon.validateHostnameAndIP()
- if message:
- print "\nWARNING:",message,"\n"
-
- print 'Event Server started.'
-
- self.started.set() # signal that we've started.
-
- if startloop:
- Log.msg('ES daemon','This is the Pyro Event Server.')
-
- try:
- if os.name!="java":
- # I use a timeout here otherwise you can't break gracefully on Windows
- daemon.setTimeout(20)
- daemon.requestLoop(lambda s=self: s.running)
- except KeyboardInterrupt:
- Log.warn('ES daemon','shutdown on user break signal')
- print 'Shutting down on user break signal.'
- self.shutdown(es)
- except:
- try:
- (exc_type, exc_value, exc_trb) = sys.exc_info()
- out = ''.join(traceback.format_exception(exc_type, exc_value, exc_trb)[-5:])
- Log.error('ES daemon', 'Unexpected exception, type',exc_type,
- '\n--- partial traceback of this exception follows:\n',
- out,'\n--- end of traceback')
- print '*** Exception occured!!! Partial traceback:'
- print out
- print '*** Resuming operations...'
- finally:
- del exc_type, exc_value, exc_trb # delete refs to allow proper GC
-
- Log.msg('ES daemon','Shut down gracefully.')
- print 'Event Server gracefully stopped.'
- else:
- # no loop, store the required objects for getServerSockets()
- self.daemon=daemon
- self.es=es
- if os.name!="java":
- daemon.setTimeout(20) # XXX fixed timeout
-
- def mustContinueRunning(self):
- return self.running
- def handleRequests(self, timeout=None):
- # this method must be called from a custom event loop
- self.daemon.handleRequests(timeout=timeout)
- def shutdown(self,es):
- if es:
- # internal shutdown call with specified ES object
- daemon=es.getDaemon()
- else:
- # custom shutdown call w/o specified ES object, use stored instance
- daemon=self.daemon
- es=self.es
- del self.es, self.daemon
- try:
- daemon.disconnect(es) # clean up nicely
- except NamingError,x:
- Log.warn('ES daemon','disconnect error during shutdown:',x)
- except ConnectionClosedError,x:
- Log.warn('ES daemon','lost connection with Name Server, cannot unregister')
- self.running=0
- daemon.shutdown()
-
-
-def start(argv):
- Args = Pyro.util.ArgParser()
- Args.parse(argv,'hNn:p:i:')
- if Args.hasOpt('h'):
- print 'Usage: pyro-es [-h] [-n hostname] [-p port] [-N] [-i identification]'
- print ' where -p = ES server port (0 for auto)'
- print ' -n = non-default hostname to bind on'
- print ' -N = do not use the name server'
- print ' -i = the required authentication ID for ES clients,'
- print ' also used to connect to other Pyro services'
- print ' -h = print this help'
- raise SystemExit
- hostname = Args.getOpt('n',None)
- port = Args.getOpt('p',None)
- useNameServer = not Args.hasOpt('N')
- ident = Args.getOpt('i',None)
- if port:
- port=int(port)
- norange=(port==0)
- Args.printIgnored()
- if Args.args:
- print 'Ignored arguments:',' '.join(Args.args)
-
- print '*** Pyro Event Server ***'
- starter=EventServiceStarter(identification=ident)
- starter.start(hostname,port,useNameServer=useNameServer,norange=norange)
-
-
-# allow easy starting of the ES by using python -m
-if __name__=="__main__":
- start(sys.argv[1:])
diff --git a/modules/Pyro/EventService/__init__.py b/modules/Pyro/EventService/__init__.py
deleted file mode 100644
index 6f66f15a..00000000
--- a/modules/Pyro/EventService/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# just to make this a package.
diff --git a/modules/Pyro/__init__.py b/modules/Pyro/__init__.py
deleted file mode 100644
index f241e188..00000000
--- a/modules/Pyro/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#############################################################################
-#
-# Pyro file to make Pyro a package, and to set up configuration.
-#
-# This is part of "Pyro" - Python Remote Objects
-# Which is (c) Irmen de Jong - irmen@razorvine.net
-#
-# Note: to see what Pyro version this is, print Pyro.constants.VERSION
-#
-#############################################################################
-
-
-# Initialize Pyro Configuration.
-#
-# This is put here because it could actually initialize config stuff needed
-# even before the code calls core.initClient or core.initServer.
-#
-# Pyro.config is a class, which has a __getattr__ member, so all
-# pyro code can use Pyro.config. to look up a value.
-# This allows for tweaking the configuration lookups by writing
-# a custom __getattr__ and/or __init__ for the class.
-# However, currently the class initializer adds configuration items
-# as regular class data members.
-
-import os
-import Pyro.configuration
-
-config = Pyro.configuration.Config()
-try:
- confFile = os.environ['PYRO_CONFIG_FILE']
-except KeyError:
- confFile = ''
-if not confFile and os.path.isfile('Pyro.conf'):
- confFile='Pyro.conf'
-config.setup(confFile)
diff --git a/modules/Pyro/configuration.py b/modules/Pyro/configuration.py
deleted file mode 100644
index 0489a701..00000000
--- a/modules/Pyro/configuration.py
+++ /dev/null
@@ -1,238 +0,0 @@
-#############################################################################
-#
-# Sets up Pyro's configuration (Pyro.config).
-#
-# This is part of "Pyro" - Python Remote Objects
-# Which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-
-# Initialize Pyro Configuration.
-
-import re, os, random, tempfile
-import Pyro.errors
-from Pyro.errors import PyroError
-import Pyro.constants
-import Pyro.util2 # not util because of cyclic dependency
-
-try:
- from pickle import HIGHEST_PROTOCOL as PICKLE_HIGHEST_PROTOCOL
-except ImportError:
- PICKLE_HIGHEST_PROTOCOL = 1
-
-
-# ---------------------- DEFAULT CONFIGURATION VARIABLES -----------
-
-# Special characters are '$CURDIR' (current directory, absolute) and
-# $STORAGE which is replaced by the PYRO_STORAGE path.
-_defaults= {
- 'PYRO_STORAGE': '$CURDIR', # current dir (abs)
- 'PYRO_HOST': '',
- 'PYRO_PUBLISHHOST': None,
- 'PYRO_PORT': 7766,
- 'PYRO_PORT_RANGE': 100,
- 'PYRO_NS_HOSTNAME': None,
- 'PYRO_NS_PORT': 9090, # tcp
- 'PYRO_NS_BC_ADDR': None,
- 'PYRO_NS_BC_PORT': 9090, # udp
- 'PYRO_NS2_HOSTNAME': None,
- 'PYRO_NS2_PORT': 9091, # tcp
- 'PYRO_NS2_BC_ADDR': None,
- 'PYRO_NS2_BC_PORT': 9091, # udp
- 'PYRO_NS_URIFILE': '$STORAGE/Pyro_NS_URI', # (abs)
- 'PYRO_NS_DEFAULTGROUP': ':Default',
- 'PYRO_BC_RETRIES': 1,
- 'PYRO_BC_TIMEOUT': 0.75,
- 'PYRO_PICKLE_FORMAT': PICKLE_HIGHEST_PROTOCOL,
- 'PYRO_XML_PICKLE': None,
- 'PYRO_GNOSIS_PARANOIA': 0,
- 'PYRO_TRACELEVEL': 0,
- 'PYRO_USER_TRACELEVEL': 0,
- 'PYRO_LOGFILE': '$STORAGE/Pyro_log', # (abs)
- 'PYRO_USER_LOGFILE': '$STORAGE/Pyro_userlog', # (abs)
- 'PYRO_STDLOGGING': 0,
- 'PYRO_STDLOGGING_CFGFILE': 'logging.cfg',
- 'PYRO_MAXCONNECTIONS': 200,
- 'PYRO_TCP_LISTEN_BACKLOG': 200,
- 'PYRO_BROKEN_MSGWAITALL': 0,
- 'PYRO_MULTITHREADED': 1, # assume 1
- 'PYRO_COMPRESSION': 0,
- 'PYRO_MOBILE_CODE': 0,
- 'PYRO_DNS_URI': 0,
- 'PYRO_CHECKSUM': 0,
- 'PYRO_SOCK_KEEPALIVE': 1,
- 'PYRO_ES_QUEUESIZE': 1000,
- 'PYRO_ES_BLOCKQUEUE': 1,
- 'PYRO_DETAILED_TRACEBACK': 0,
- 'PYRO_ONEWAY_THREADED': 1,
- 'PYROSSL_CERTDIR': '$STORAGE/certs', # (abs)
- 'PYROSSL_CA_CERT': 'ca.pem',
- 'PYROSSL_CERT': 'host.pem',
- 'PYROSSL_KEY': None,
- 'PYROSSL_POSTCONNCHECK': 1
-}
-
-# ---------------------- END OF DEFAULT CONFIGURATION VARIABLES -----
-
-
-class Config(object):
-
- def __init__(self):
- _defaults['PYRO_MULTITHREADED']=Pyro.util2.supports_multithreading()
- self.__dict__[Pyro.constants.CFGITEM_PYRO_INITIALIZED] = 0
-
- def __eq__(self, other):
- return self.__dict__==other.__dict__
-
- def setup(self, configFile):
- reader = ConfigReader(_defaults)
- try:
- reader.parse(configFile)
- except EnvironmentError,x:
- raise PyroError("Error reading config file: "+configFile+"; "+str(x));
- self.__dict__.update(reader.items)
- if configFile:
- self.__dict__['PYRO_CONFIG_FILE'] = os.path.abspath(configFile)
- else:
- self.__dict__['PYRO_CONFIG_FILE'] = ''
-
- def finalizeConfig_Client(self):
- # For the client, we're done for now!
- # It's nice if the storage directory exists and is
- # writable, but if it isn't, we can continue happily.
- # If Pyro needs to write something (log?), it will
- # fail at that point if it can't access the storage dir.
- # This behavior is good enough for clients.
- pass
-
- def finalizeConfig_Server(self, storageCheck):
- if storageCheck:
- # The server needs a storage dir. Because it's a server,
- # this usually is no problem. So create & test it here.
- # Create the storage directory if it doesn't exist yet
- if not os.path.exists(self.PYRO_STORAGE):
- os.mkdir(self.PYRO_STORAGE)
- # see if we have permission there, in a thread-safe fashion.
- if not os.path.isdir(self.PYRO_STORAGE):
- raise IOError('PYRO_STORAGE is not a directory ['+self.PYRO_STORAGE+']')
-
- try:
- if os.name=='java':
- # jython doesn't have suitable TemporaryFile implementation (lacks dir param)
- javatestfile=os.path.join(self.PYRO_STORAGE,'_pyro_'+str(random.random())+".tmp")
- f=open(javatestfile,"w")
- else:
- # use tempfile to safely create a unique temporary file even on multi-cpu nodes
- f=tempfile.TemporaryFile(dir=self.PYRO_STORAGE, suffix='.tmp', prefix='_pyro_')
- except Exception,x:
- print x
- raise IOError('no write access to PYRO_STORAGE ['+self.PYRO_STORAGE+']')
- else:
- f.close()
- if os.name=='java':
- os.remove(javatestfile)
-
-# def __getattr__(self,name):
-# # add smart code here to deal with other requested config items!
-
-
-
-class ConfigReader(object):
- def __init__(self, defaults):
- self.matcher=re.compile(r'^(\w+)\s*=\s*(\S*)')
- self.items=defaults.copy()
-
- def _check(self, filename):
- print "ConfigReader: checking file", filename
- items=[]
- for l in open(filename).readlines():
- l=l.rstrip()
- if not l or l.startswith('#'):
- continue # skip empty line or comment
- match=self.matcher.match(l)
- if match:
- items.append(match.group(1))
- allitems=self.items.keys()
- allitems.sort()
- for item in allitems:
- if item not in items:
- print "MISSING item: ",item
- try:
- items.remove(item)
- except ValueError:
- pass
- if items:
- print "items NOT in DEFAULTS:", items
- else:
- print "ok!"
-
-
- def parse(self, filename):
- linenum=0
- if filename:
- for l in open(filename).readlines():
- l=l.rstrip()
- linenum=linenum+1
- if not l or l.startswith('#'):
- continue # skip empty line or comment
- match=self.matcher.match(l)
- if match:
- if match.group(1) in _defaults.keys():
- if match.group(2):
- self.items[match.group(1)] = match.group(2)
- else:
- raise KeyError('Unknown config item in configfile (line %d): %s' % (linenum, match.group(1)))
- else:
- raise ValueError('Syntax error in config file, line '+str(linenum))
-
- # Parse the environment variables (they override the config file)
- self.items.update(self.processEnv(_defaults.keys()))
-
- # First, fix up PYRO_STORAGE because others depend on it.
- self.items['PYRO_STORAGE'] = self.treatSpecial(self.items['PYRO_STORAGE'])
- # Now fix up all other items:
- for i in self.items.keys():
- newVal = self.treatSpecial(self.items[i])
- if i in ('PYRO_STORAGE', 'PYRO_LOGFILE', 'PYRO_USER_LOGFILE', 'PYRO_NS_URIFILE'):
- newVal=os.path.abspath(newVal)
- # fix the variable type if it's an integer or float
- if type(_defaults[i]) == type(42):
- newVal = int(newVal)
- if type(_defaults[i]) == type(0.1):
- newVal = float(newVal)
- self.items[i]= newVal
-
- def processEnv(self, keys):
- env={}
- for key in keys:
- try: env[key] = os.environ[key]
- except KeyError: pass
- return env
-
- def treatSpecial(self, value):
- # treat special escape strings
- if type(value)==type(""):
- if value=='$CURDIR':
- return os.curdir
- elif value.startswith('$STORAGE/'):
- return os.path.join(self.items['PYRO_STORAGE'], value[9:])
- return value
-
-# easy config diagnostic with python -m
-if __name__=="__main__":
- print "Pyro version:",Pyro.constants.VERSION
- r=ConfigReader(_defaults)
- if os.path.exists("Pyro.conf"):
- r._check("Pyro.conf")
- x=Config()
- if os.path.exists("Pyro.conf"):
- x.setup("Pyro.conf")
- else:
- x.setup(None)
- x.finalizeConfig_Server(1)
- items=vars(x).items()
- items.sort()
- print "Active configuration settings:"
- for item,value in items:
- print item+"="+str(value)
diff --git a/modules/Pyro/constants.py b/modules/Pyro/constants.py
deleted file mode 100644
index 27765726..00000000
--- a/modules/Pyro/constants.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#############################################################################
-#
-# Pyro global constants
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-
-# General Pyro Version String ####
-VERSION = '3.16'
-
-# Fixed (internal) GUIDs
-INTERNAL_DAEMON_GUID='c0000000'+'01100000'+'10000000'+'10000001'
-
-# Pyro names for the standard Services
-NAMESERVER_NAME = ":Pyro.NameServer"
-EVENTSERVER_NAME = ":Pyro.EventService"
-
-# Pyro traceback attribute for remote exceptions
-TRACEBACK_ATTRIBUTE = "remote_stacktrace"
-
-
-#### Remote Invocation Flags (bit flags) ####
-
-RIF_Varargs = (1<<0) # for '*args' syntax
-RIF_Keywords = (1<<1) # for '**keywords' syntax
-RIF_Oneway = (1<<2) # for oneway (no result) messages - currently internal use only
-RIF_VarargsAndKeywords = RIF_Varargs | RIF_Keywords
-
-
-#### Reasons why a connection may be denied ####
-DENIED_UNSPECIFIED=0
-DENIED_SERVERTOOBUSY=1
-DENIED_HOSTBLOCKED=2
-DENIED_SECURITY=3
-
-deniedReasons={
- DENIED_UNSPECIFIED:'unspecified reason',
- DENIED_SERVERTOOBUSY:'server too busy',
- DENIED_HOSTBLOCKED:'host blocked',
- DENIED_SECURITY:'security reasons'
- }
-
-# special config items
-CFGITEM_PYRO_INITIALIZED = "_PYRO_INITIALIZED"
-
-# NS roles
-NSROLE_SINGLE=0
-NSROLE_PRIMARY=1
-NSROLE_SECONDARY=2
diff --git a/modules/Pyro/core.py b/modules/Pyro/core.py
deleted file mode 100644
index aa45f56c..00000000
--- a/modules/Pyro/core.py
+++ /dev/null
@@ -1,868 +0,0 @@
-#############################################################################
-#
-# Pyro Core Library
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-from __future__ import with_statement
-import sys, time, re, os, weakref
-import imp, marshal, new, socket
-from pickle import PicklingError
-import Pyro.constants, Pyro.util, Pyro.protocol, Pyro.errors
-from Pyro.errors import *
-from types import UnboundMethodType, MethodType, BuiltinMethodType, TupleType, StringType, UnicodeType
-if Pyro.util.supports_multithreading():
- import threading
-
-Log=Pyro.util.Log
-
-
-def _checkInit(pyrotype="client"):
- if not getattr(Pyro.config, Pyro.constants.CFGITEM_PYRO_INITIALIZED):
- # If Pyro has not been initialized explicitly, do it automatically.
- if pyrotype=="server":
- initServer()
- else:
- initClient()
-
-
-#############################################################################
-#
-# ObjBase - Server-side object implementation base class
-# or master class with the actual object as delegate
-#
-# SynchronizedObjBase - Just the same, but with synchronized method
-# calls (thread-safe).
-#
-#############################################################################
-
-class ObjBase(object):
- def __init__(self):
- self.objectGUID=Pyro.util.getGUID()
- self.delegate=None
- self.lastUsed=time.time() # for later reaping unused objects
- if Pyro.config.PYRO_MOBILE_CODE:
- self.codeValidator=lambda n,m,a: 1 # always accept
- def GUID(self):
- return self.objectGUID
- def setGUID(self, guid): # used with persistent name server
- self.objectGUID = guid
- def delegateTo(self,delegate):
- self.delegate=delegate
- def setPyroDaemon(self, daemon):
- # This will usually introduce a cyclic reference between the
- # object and the daemon. Use a weak ref if available.
- # NOTE: if you correctly clean up the object (that is, disconnect it from the daemon)
- # the cyclic reference is cleared correctly, and no problem occurs.
- # NOTE: you have to make sure your original daemon object doesn't get garbage collected
- # if you still want to use the objects! You have to keep a ref. to the daemon somewhere.
- if daemon:
- self.daemon=weakref.proxy(daemon)
- else:
- self.daemon=None
- def setCodeValidator(self, v):
- if not callable(v):
- raise TypeError("codevalidator must be a callable object")
- self.codeValidator=v
- def getDaemon(self):
- return self.daemon
- def getLocalStorage(self):
- return self.daemon.getLocalStorage()
- def _gotReaped(self):
- # Called when daemon reaps this object due to unaccessed time
- # Override this method if needed; to act on this event
- pass
- def getProxy(self):
- return self.daemon.getProxyForObj(self)
- def getAttrProxy(self):
- return self.daemon.getAttrProxyForObj(self)
- def Pyro_dyncall(self, method, flags, args):
- # update the timestamp
- self.lastUsed=time.time()
- # find the method in this object, and call it with the supplied args.
- keywords={}
- if flags & Pyro.constants.RIF_Keywords:
- # reconstruct the varargs from a tuple like
- # (a,b,(va1,va2,va3...),{kw1:?,...})
- keywords=args[-1]
- args=args[:-1]
- if flags & Pyro.constants.RIF_Varargs:
- # reconstruct the varargs from a tuple like (a,b,(va1,va2,va3...))
- args=args[:-1]+args[-1]
- if keywords and type(keywords.iterkeys().next()) is unicode and sys.platform!="cli":
- # IronPython sends all strings as unicode, but apply() doesn't grok unicode keywords.
- # So we need to rebuild the keywords dict with str keys...
- keywords = dict([(str(k),v) for k,v in keywords.iteritems()])
- # If the method is part of ObjBase, never call the delegate object because
- # that object doesn't implement that method. If you don't check this,
- # remote attributes won't work with delegates for instance, because the
- # delegate object doesn't implement _r_xa. (remote_xxxattr)
- if method in dir(ObjBase):
- return getattr(self,method) (*args,**keywords)
- else:
- # try..except to deal with obsoleted string exceptions (raise "blahblah")
- try :
- return getattr(self.delegate or self,method) (*args,**keywords)
- except :
- exc_info = sys.exc_info()
- try:
- if type(exc_info[0]) == StringType :
- if exc_info[1] == None :
- raise Exception, exc_info[0], exc_info[2]
- else :
- raise Exception, "%s: %s" % (exc_info[0], exc_info[1]), exc_info[2]
- else :
- raise
- finally:
- del exc_info # delete frame to allow proper GC
-
- # remote getattr/setattr support:
- def _r_ha(self, attr):
- try:
- attr = getattr(self.delegate or self,attr)
- if type(attr) in (UnboundMethodType, MethodType, BuiltinMethodType):
- return 1 # method
- except:
- pass
- return 2 # attribute
- def _r_ga(self, attr):
- return getattr(self.delegate or self, attr)
- def _r_sa(self, attr, value):
- setattr(self.delegate or self, attr, value)
- # remote code downloading support (server downloads from client):
- def remote_supply_code(self, name, module, sourceaddr):
- # XXX this is nasty code, and also duplicated in protocol.py _retrieveCode()
- if Pyro.config.PYRO_MOBILE_CODE and self.codeValidator(name,module,sourceaddr):
- try:
- imp.acquire_lock() # threadsafe imports
- if name in sys.modules and getattr(sys.modules[name],'_PYRO_bytecode',None):
- # already have this module, don't import again
- # we checked for the _PYRO_bytecode attribute because that is only
- # present when all loading code below completed successfully
- return
- Log.msg('ObjBase','loading supplied code: ',name,'from',str(sourceaddr))
- if module[0:4]!=imp.get_magic():
- # compile source code
- code=compile(module,'','exec')
- else:
- # read bytecode from the client
- code=marshal.loads(module[8:])
-
- # make the module hierarchy and add all names to sys.modules
- name=name.split('.')
- path=''
- mod=new.module("pyro-agent-context")
- for m in name:
- path+='.'+m
- # use already loaded modules instead of overwriting them
- real_path = path[1:]
- if sys.modules.has_key(real_path):
- mod = sys.modules[real_path]
- else:
- setattr(mod,m,new.module(path[1:]))
- mod=getattr(mod,m)
- sys.modules[path[1:]]=mod
- # execute the module code in the right module.
- exec code in mod.__dict__
- # store the bytecode for possible later reference if we need to pass it on
- mod.__dict__['_PYRO_bytecode'] = module
- finally:
- imp.release_lock()
- else:
- Log.warn('ObjBase','attempt to supply code denied: ',name,'from',str(sourceaddr))
- raise PyroError('attempt to supply code denied')
-
- # remote code retrieve support (client retrieves from server):
- def remote_retrieve_code(self, name):
- # XXX codeValidator: can we somehow get the client's address it is sent to?
- # XXX this code is ugly. And duplicated in protocol.py remoteInvocation.
- if Pyro.config.PYRO_MOBILE_CODE and self.codeValidator(name,None,None):
- Log.msg("ObjBase","supplying code: ",name)
- try:
- importmodule=new.module("pyro-server-import")
- try:
- exec "import " + name in importmodule.__dict__
- except ImportError:
- Log.error("ObjBase","Client wanted a non-existing module:", name)
- raise PyroError("Client wanted a non-existing module", name)
- m=eval("importmodule."+name)
- # try to load the module's compiled source, or the real .py source if that fails.
- # note that the source code (.py) is opened with universal newline mode
- (filebase,ext)=os.path.splitext(m.__file__)
- if ext.startswith(".PY"):
- exts = ( (".PYO","rb"), (".PYC","rb"), (".PY","rU") ) # uppercase
- else:
- exts = ( (".pyo","rb"), (".pyc","rb"), (".py","rU") ) # lowercase
- for ext,mode in exts:
- try:
- m=open(filebase+ext, mode).read()
- return m # supply the module to the client!
- except:
- pass
- Log.error("ObjBase","cannot read module source code for module:", name)
- raise PyroError("cannot read module source code")
- finally:
- del importmodule
- else:
- Log.error("ObjBase","attempt to retrieve code denied:", name)
- raise PyroError("attempt to retrieve code denied")
-
-
-class SynchronizedObjBase(ObjBase):
- def __init__(self):
- ObjBase.__init__(self)
- self.synlock=Pyro.util.getLockObject()
- def Pyro_dyncall(self, method, flags, args):
- with self.synlock:
- return ObjBase.Pyro_dyncall(self, method,flags,args)
-
-
-# Use this class instead if you're using callback objects and you
-# want to see local exceptions. (otherwise they go back to the calling server...)
-class CallbackObjBase(ObjBase):
- def __init__(self):
- ObjBase.__init__(self)
- def Pyro_dyncall(self, method, flags, args):
- try:
- return ObjBase.Pyro_dyncall(self,method,flags,args)
- except Exception,x:
- # catch all errors
- Log.warn('CallbackObjBase','Exception in callback object: ',x)
- raise PyroExceptionCapsule(x,str(x))
-
-
-#############################################################################
-#
-# PyroURI - Pyro Universal Resource Identifier
-#
-# This class represents a Pyro URI (which consists of four parts,
-# a protocol identifier, an IP address, a portnumber, and an object ID.
-#
-# The URI can be converted to a string representation (str converter).
-# The URI can also be read back from such a string (reinitFromString).
-# The URI can be initialised from its parts (init).
-# The URI can be initialised from a string directly, if the init
-# code detects a ':' and '/' in the host argument (which is then
-# assumed to be a string URI, not a host name/ IP address).
-#
-#############################################################################
-
-class PyroURI(object):
- def __init__(self,host,objectID=0,port=0,prtcol='PYRO'):
- # if the 'host' arg is a PyroURI, copy contents
- if isinstance(host, PyroURI):
- self.init(host.address, host.objectID, host.port, host.protocol)
- else:
- # If the 'host' arg contains '://', assume it's an URI string.
- if host.find('://')>0:
- self.reinitFromString(host)
- else:
- if not objectID:
- raise URIError('invalid URI format')
- self.init(host, objectID, port, prtcol)
- def __str__(self):
- return self.protocol+'://'+self.address+':'+str(self.port)+'/'+self.objectID
- def __repr__(self):
- return ''
- def __hash__(self):
- # XXX this is handy but not safe. If the URI changes, the object will be in the wrong hash bucket.
- return hash(str(self))
- def __cmp__(self, o):
- return cmp(str(self), str(o))
- def clone(self):
- return PyroURI(self)
- def init(self,host,objectID,port=0,prtcol='PYRO'):
- if '/' in host:
- raise URIError('malformed hostname')
- if Pyro.config.PYRO_DNS_URI:
- self.address = host
- else:
- self.address=Pyro.protocol.getIPAddress(host)
- if not self.address:
- raise URIError('unknown host')
- if port:
- if type(port)==type(1):
- self.port=port
- else:
- raise TypeError("port must be integer")
- else:
- self.port=Pyro.config.PYRO_PORT
- self.protocol=prtcol
- self.objectID=objectID
- def reinitFromString(self,arg):
- if arg.startswith('PYROLOC') or arg.startswith('PYRONAME'):
- uri=processStringURI(arg)
- self.init(uri.address,uri.objectID,uri.port,uri.protocol)
- return
- x=re.match(r'(?P[^\s:/]+)://(?P[^\s:]+):?(?P\d+)?/(?P\S*)',arg)
- if x:
- port=None
- if x.group('port'):
- port=int(x.group('port'))
- self.init(x.group('hostname'), x.group('id'), port, x.group('protocol'))
- return
- Log.error('PyroURI','invalid URI format passed: '+arg)
- raise URIError('invalid URI format')
- def getProxy(self):
- return DynamicProxy(self)
- def getAttrProxy(self):
- return DynamicProxyWithAttrs(self)
-
-
-#
-# This method takes a string representation of a Pyro URI
-# and parses it. If it's a meta-protocol URI such as
-# PYRONAME://.... it will do what is needed to make
-# a regular PYRO:// URI out of it (resolve names etc).
-#
-def processStringURI(URI):
- # PYRONAME(SSL)://[hostname[:port]/]objectname
- x=re.match(r'(?PPYRONAME|PYRONAMESSL)://(((?P[^\s:]+):(?P\d+)/)|((?P[^\s:]+)/))?(?P\S*)',URI)
- if x:
- protocol=x.group('protocol')
- if protocol=="PYRONAMESSL":
- raise ProtocolError("NOT SUPPORTED YET: "+protocol) # XXX obviously, this should be implemented
- hostname=x.group('hostname') or x.group('onlyhostname')
- port=x.group('port')
- name=x.group('name')
- import Pyro.naming
- loc=Pyro.naming.NameServerLocator()
- if port:
- port=int(port)
- NS=loc.getNS(host=hostname,port=port)
- return NS.resolve(name)
- # PYROLOC(SSL)://hostname[:port]/objectname
- x=re.match(r'(?PPYROLOC|PYROLOCSSL)://(?P[^\s:]+):?(?P\d+)?/(?P\S*)',URI)
- if x:
- protocol=x.group('protocol')
- hostname=x.group('hostname')
- port=x.group('port')
- if port:
- port=int(port)
- else:
- port=0
- name=x.group('name')
- return PyroURI(hostname,name,port,protocol)
- if URI.startswith('PYROLOC') or URI.startswith('PYRONAME'):
- # hmm should have matched above. Likely invalid.
- raise URIError('invalid URI format')
- # It's not a meta-protocol such as PYROLOC or PYRONAME,
- # let the normal Pyro URI deal with it.
- # (it can deal with regular PYRO: and PYROSSL: protocols)
- return PyroURI(URI)
-
-
-#############################################################################
-#
-# DynamicProxy - dynamic Pyro proxy
-#
-# Can be used by clients to invoke objects for which they have no
-# precompiled proxy.
-#
-#############################################################################
-
-def getProxyForURI(URI):
- return DynamicProxy(URI)
-def getAttrProxyForURI(URI):
- return DynamicProxyWithAttrs(URI)
-
-class _RemoteMethod(object):
- # method call abstraction, adapted from Python's xmlrpclib
- # it would be rather easy to add nested method calls, but
- # that is not compatible with the way that Pyro's method
- # calls are defined to work ( no nested calls )
- def __init__(self, send, name):
- self.__send = send
- self.__name = name
- def __call__(self, *args, **kwargs):
- return self.__send(self.__name, args, kwargs)
-
-class DynamicProxy(object):
- def __init__(self, URI):
- _checkInit() # init required
- if type(URI) in (StringType,UnicodeType):
- URI=processStringURI(URI)
- self.URI = URI
- self.objectID = URI.objectID
- # Delay adapter binding to enable transporting of proxies.
- # We just create an adapter, and don't connect it...
- self.adapter = Pyro.protocol.getProtocolAdapter(self.URI.protocol)
- # ---- don't forget to register local vars with DynamicProxyWithAttrs, see below
- def __del__(self):
- try:
- self.adapter.release(nolog=1)
- except (AttributeError, RuntimeError):
- pass
- def _setIdentification(self, ident):
- self.adapter.setIdentification(ident)
- def _setNewConnectionValidator(self, validator):
- self.adapter.setNewConnectionValidator(validator)
- def _setOneway(self, methods):
- if type(methods) not in (type([]), type((0,))):
- methods=(methods,)
- self.adapter.setOneway(methods)
- def _setTimeout(self,timeout):
- self.adapter.setTimeout(timeout)
- def _transferThread(self, newOwnerThread=None):
- pass # dummy function to retain API compatibility with Pyro 3.7
- def _release(self):
- if self.adapter:
- self.adapter.release()
- def _local(self):
- return self.URI._local()
- def _islocal(self):
- return self.URI._islocal()
- def __copy__(self): # create copy of current proxy object
- proxyCopy = DynamicProxy(self.URI)
- proxyCopy.adapter.setIdentification(self.adapter.getIdentification(), munge=False) # copy identification info
- proxyCopy._setTimeout(self.adapter.timeout)
- proxyCopy._setOneway(self.adapter.onewayMethods)
- proxyCopy._setNewConnectionValidator(self.adapter.getNewConnectionValidator())
- return proxyCopy
- def __deepcopy__(self, arg):
- raise PyroError("cannot deepcopy a proxy")
- def __getattr__(self, name):
- if name in ("__getnewargs__","__getinitargs__"): # allows it to be safely pickled
- raise AttributeError()
- return _RemoteMethod(self._invokePYRO, name)
- def __repr__(self):
- return "<"+self.__class__.__name__+" for "+str(self.URI)+">"
- def __str__(self):
- return repr(self)
- def __hash__(self):
- # makes it possible to use this class as a key in a dict
- return hash(self.objectID)
- def __eq__(self,other):
- # makes it possible to compare two proxies using objectID
- return hasattr(other,"objectID") and self.objectID==other.objectID
- def __ne__(self,other):
- # makes it possible to compare two proxies using objectID
- return not hasattr(other,"objectID") or self.objectID!=other.objectID
- def __nonzero__(self):
- return 1
- def __coerce__(self,other):
- # makes it possible to compare two proxies using objectID (cmp)
- if hasattr(other,"objectID"):
- return (self.objectID, other.objectID)
- return None
-
- def _invokePYRO(self, name, vargs, kargs):
- if not self.adapter.connected():
- # rebind here, don't do it from inside the remoteInvocation because deadlock will occur
- self.adapter.bindToURI(self.URI)
- return self.adapter.remoteInvocation(name, Pyro.constants.RIF_VarargsAndKeywords, vargs, kargs)
-
- # Pickling support, otherwise pickle uses __getattr__:
- def __getstate__(self):
- # for pickling, return a non-connected copy of ourselves:
- cpy = self.__copy__()
- cpy._release()
- return cpy.__dict__
- def __setstate__(self, args):
- # for pickling, to restore the pickled state
- self.__dict__.update(args)
-
-
-class DynamicProxyWithAttrs(DynamicProxy):
- _local_attrs = ("_local_attrs","URI", "objectID", "adapter", "_attr_cache")
- def __init__(self, URI):
- self._attr_cache = {}
- DynamicProxy.__init__(self, URI)
- def _r_ga(self, attr, value=0):
- if value:
- return _RemoteMethod(self._invokePYRO, "_r_ga") (attr) # getattr
- else:
- return _RemoteMethod(self._invokePYRO, "_r_ha") (attr) # hasattr
- def findattr(self, attr):
- if attr in self._attr_cache.keys():
- return self._attr_cache[attr]
- # look it up and cache the value
- self._attr_cache[attr] = self._r_ga(attr)
- return self._attr_cache[attr]
- def __copy__(self): # create copy of current proxy object
- return DynamicProxyWithAttrs(self.URI)
- def __setattr__(self, attr, value):
- if attr in self._local_attrs:
- self.__dict__[attr]=value
- else:
- result = self.findattr(attr)
- if result==2: # attribute
- return _RemoteMethod(self._invokePYRO, "_r_sa") (attr,value)
- else:
- raise AttributeError('not an attribute')
- def __getattr__(self, attr):
- # allows it to be safely pickled
- if attr not in ("__getnewargs__","__getinitargs__", "__hash__","__eq__","__ne__") and attr not in self._local_attrs:
- result=self.findattr(attr)
- if result==1: # method
- return _RemoteMethod(self._invokePYRO, attr)
- elif result:
- return self._r_ga(attr, 1)
- raise AttributeError
-
-
-#############################################################################
-#
-# Daemon - server-side Pyro daemon
-#
-# Accepts and dispatches incoming Pyro method calls.
-#
-#############################################################################
-
-# The pyro object that represents the daemon.
-# The daemon is not directly remotely accessible, for security reasons.
-class DaemonServant(ObjBase):
- def __init__(self, daemon):
- ObjBase.__init__(self)
- self.daemon=weakref.proxy(daemon)
- def getRegistered(self):
- return self.daemon.getRegistered()
- def ResolvePYROLOC(self, name):
- return self.daemon.ResolvePYROLOC(name)
-
-# The daemon itself:
-class Daemon(Pyro.protocol.TCPServer, ObjBase):
- def __init__(self,prtcol='PYRO',host=None,port=0,norange=0,publishhost=None):
- ObjBase.__init__(self)
- self.NameServer = None
- self.connections=[]
- _checkInit("server") # init required
- self.setGUID(Pyro.constants.INTERNAL_DAEMON_GUID)
- self.implementations={Pyro.constants.INTERNAL_DAEMON_GUID:(DaemonServant(self),'__PYRO_Internal_Daemon')}
- self.persistentConnectedObjs=[] # guids
- self.transientsCleanupAge=0
- self.transientsMutex=Pyro.util.getLockObject()
- self.nscallMutex=Pyro.util.getLockObject()
- if host is None:
- host=Pyro.config.PYRO_HOST
- if publishhost is None:
- publishhost=Pyro.config.PYRO_PUBLISHHOST
-
- # Determine range scanning or random port allocation
- if norange:
- # Fixed or random port allocation
- # If port is zero, OS will randomly assign, otherwise,
- # attempt to use the provided port value
- self.port = port
- portrange = 1
- else:
- # Scanning port allocation
- if port:
- self.port = port
- else:
- self.port = Pyro.config.PYRO_PORT
- portrange=Pyro.config.PYRO_PORT_RANGE
-
- if not publishhost:
- publishhost=host
- errormsg=''
- for i in range(portrange):
- try:
- Pyro.protocol.TCPServer.__init__(self, self.port, host, Pyro.config.PYRO_MULTITHREADED,prtcol)
- if not self.port:
- # If we bound to an OS provided port, report it
- self.port = self.sock.getsockname()[1]
- self.hostname = publishhost or Pyro.protocol.getHostname()
- self.protocol = prtcol
- self.adapter = Pyro.protocol.getProtocolAdapter(prtcol)
- self.validateHostnameAndIP() # ignore any result message... it's in the log already.
- return
- except ProtocolError,msg:
- errormsg=msg
- self.port+=1
- Log.error('Daemon','Couldn\'t start Pyro daemon: ' +str(errormsg))
- raise DaemonError('Couldn\'t start Pyro daemon: ' +str(errormsg))
-
- # to be called to stop all connections and shut down.
- def shutdown(self, disconnect=False):
- Pyro.protocol.TCPServer.shutdown(self)
- if disconnect:
- self.__disconnectObjects()
- def __disconnectObjects(self):
- # server shutting down, unregister all known objects in the NS
- if self.NameServer and Pyro and Pyro.constants:
- with self.nscallMutex:
- if Pyro.constants.INTERNAL_DAEMON_GUID in self.implementations:
- del self.implementations[Pyro.constants.INTERNAL_DAEMON_GUID]
- if self.implementations:
- Log.warn('Daemon','Shutting down but there are still',len(self.implementations),'objects connected - disconnecting them')
- for guid in self.implementations.keys():
- if guid not in self.persistentConnectedObjs:
- (obj,name)=self.implementations[guid]
- if name:
- try:
- self.NameServer.unregister(name)
- except Exception,x:
- Log.warn('Daemon','Error while unregistering object during shutdown:',x)
- self.implementations={}
-
- def __del__(self):
- self.__disconnectObjects() # unregister objects
- try:
- del self.adapter
- Pyro.protocol.TCPServer.__del__(self)
- except (AttributeError, RuntimeError):
- pass
-
- def __str__(self):
- return ''
- def __getstate__(self):
- raise PicklingError('no access to the daemon')
-
- def validateHostnameAndIP(self):
- # Checks if hostname is sensible. Returns None if it is, otherwise a message
- # telling what's wrong if it isn't too serious. If things are really bad,
- # expect an exception to be raised. Things are logged too.
- if not self.hostname:
- Log.error("Daemon","no hostname known")
- raise socket.error("no hostname known for daemon")
- if self.hostname!="localhost":
- ip = Pyro.protocol.getIPAddress(self.hostname)
- if ip is None:
- Log.error("Daemon","no IP address known")
- raise socket.error("no IP address known for daemon")
- if not ip.startswith("127.0."):
- return None # this is good!
- # 127.0.x.x or 'localhost' is a warning situation!
- msg="daemon bound on hostname that resolves to loopback address 127.0.x.x"
- Log.warn("Daemon",msg)
- Log.warn("Daemon","hostname="+self.hostname)
- return msg
-
- def useNameServer(self,NS):
- self.NameServer=NS
- def getNameServer(self):
- return self.NameServer
- def setTimeout(self, timeout):
- self.adapter.setTimeout(timeout)
- def setAllowedIdentifications(self, ids):
- self.getNewConnectionValidator().setAllowedIdentifications(ids)
- def setTransientsCleanupAge(self, secs):
- self.transientsCleanupAge=secs
- if self.threaded:
- Log.msg('Daemon','creating Grim Reaper thread for transients, timeout=',secs)
- reaper=threading.Thread(target=self._grimReaper)
- reaper.setDaemon(1) # thread must exit at program termination.
- reaper.start()
- def _grimReaper(self):
- # this runs in a thread.
- while self.transientsCleanupAge>0:
- time.sleep(self.transientsCleanupAge/5)
- self.reapUnusedTransients()
-
- def getProxyForObj(self, obj):
- return DynamicProxy( PyroURI(self.hostname,
- obj.GUID(), prtcol=self.protocol, port=self.port) )
- def getAttrProxyForObj(self, obj):
- return DynamicProxyWithAttrs( PyroURI(self.hostname,
- obj.GUID(), prtcol=self.protocol, port=self.port) )
-
- def connectPersistent(self, obj, name=None):
- # when a persistent entry is found in the NS, that URI is
- # used instead of the supplied one, if the address matches.
- if name and self.NameServer:
- with self.nscallMutex:
- try:
- newURI = PyroURI(self.hostname, obj.GUID(), prtcol=self.protocol, port=self.port)
- URI=self.NameServer.resolve(name)
- if (URI.protocol,URI.address,URI.port)==(newURI.protocol,newURI.address,newURI.port):
- # reuse the previous object ID
- obj.setGUID(URI.objectID)
- # enter the (object,name) in the known impl. dictionary
- self.implementations[obj.GUID()]=(obj,name)
- self.persistentConnectedObjs.append(obj.GUID())
- obj.setPyroDaemon(self)
- return URI
- else:
- # name exists, but address etc. is wrong. Remove it.
- # then continue so it wil be re-registered.
- try: self.NameServer.unregister(name)
- except NamingError: pass
- except NamingError:
- pass
- # Register normally.
- self.persistentConnectedObjs.append(obj.GUID())
- return self.connect(obj, name)
-
- def connect(self, obj, name=None):
- URI = PyroURI(self.hostname, obj.GUID(), prtcol=self.protocol, port=self.port)
- # if not transient, register the object with the NS
- if name:
- with self.nscallMutex:
- if self.NameServer:
- self.NameServer.register(name, URI)
- else:
- Log.warn('Daemon','connecting object without name server specified:',name)
- # enter the (object,name) in the known implementations dictionary
- self.implementations[obj.GUID()]=(obj,name)
- obj.setPyroDaemon(self)
- return URI
-
- def disconnect(self,obj): # obj can be either the object that was registered, or its uid
- try:
- if isinstance(obj,Pyro.core.ObjBase):
- obj_uid=obj.GUID()
- else:
- obj_uid=str(obj)
- if obj_uid==Pyro.constants.INTERNAL_DAEMON_GUID:
- return # never allow to remove ourselves from the registry
- if self.NameServer and self.implementations[obj_uid][1]:
- with self.nscallMutex:
- # only unregister with NS if it had a name (was not transient)
- self.NameServer.unregister(self.implementations[obj_uid][1])
- del self.implementations[obj_uid]
- if obj_uid in self.persistentConnectedObjs:
- self.persistentConnectedObjs.remove(obj_uid)
- # XXX Clean up connections/threads to this object?
- # Can't be done because thread/socket is not associated with single object
- finally:
- if isinstance(obj,Pyro.core.ObjBase):
- obj.setPyroDaemon(None)
-
- def getRegistered(self):
- r={}
- for guid in self.implementations.keys():
- r[guid]=self.implementations[guid][1] # keep only the names
- return r
-
- def handleInvocation(self, conn): # overridden from TCPServer
- # called in both single- and multithreaded mode
- self.getLocalStorage().caller=conn
- self.getAdapter().handleInvocation(self, conn)
- self.reapUnusedTransients()
-
- def reapUnusedTransients(self):
- if not self.transientsCleanupAge: return
- now=time.time()
- with self.transientsMutex:
- for (obj,name) in self.implementations.values()[:]: # use copy of list
- if not name:
- # object is transient, reap it if timeout requires so.
- if (now-obj.lastUsed)>self.transientsCleanupAge:
- self.disconnect(obj)
- obj._gotReaped()
-
- def handleError(self,conn,onewaycall=False): # overridden from TCPServer
- try:
- (exc_type, exc_value, exc_trb) = sys.exc_info()
- if exc_type==ProtocolError:
- # Problem with the communication protocol, shut down the connection
- # XXX is shutting down what we want???
- Log.error('Daemon','protocol error occured:',exc_value)
- Log.error('Daemon','Due to network error: shutting down connection with',conn)
- self.removeConnection(conn)
- else:
- exclist = Pyro.util.formatTraceback(exc_type, exc_value, exc_trb)
- out =''.join(exclist)
- Log.warn('Daemon', 'Exception during processing of request from',
- conn,' type',exc_type,
- '\n--- traceback of this exception follows:\n',
- out,'\n--- end of traceback')
- if exc_type==PyroExceptionCapsule:
- sys.stdout.flush()
- # This is a capsuled exception, used with callback objects.
- # That means we are actually the daemon on the client.
- # Return the error to the other side and raise exception locally once more.
- # (with a normal exception, it is not raised locally again!)
- # only send the exception object if it's not a oneway call.
- if not onewaycall:
- self.adapter.returnException(conn,exc_value.excObj,0,exclist) # don't shutdown
- exc_value.raiseEx()
- else:
- # normal exception, only return exception object if it's not a oneway call
- if not onewaycall:
- self.adapter.returnException(conn,exc_value,0,exclist) # don't shutdown connection
-
- finally:
- # clean up circular references to traceback info to allow proper GC
- del exc_type, exc_value, exc_trb
-
- def getAdapter(self):
- # overridden from TCPServer
- return self.adapter
-
- def getLocalObject(self, guid):
- # return a local object registered with the given guid
- return self.implementations[guid][0]
- def getLocalObjectForProxy(self, proxy):
- # return a local object registered with the guid to which the given proxy points
- return self.implementations[proxy.objectID][0]
-
- def ResolvePYROLOC(self, name):
- # this gets called from the protocol adapter when
- # it wants the daemon to resolve a local object name (PYROLOC: protocol)
- Log.msg('Daemon','resolving PYROLOC name: ',name)
- for o in self.implementations.keys():
- if self.implementations[o][1]==name:
- return o
- raise NamingError('no object found by this name',name)
-
-
-#############################################################################
-#
-# Client/Server Init code
-#
-#############################################################################
-
-# Has init been performed already?
-_init_server_done=0
-_init_client_done=0
-_init_generic_done=0
-
-def _initGeneric_pre():
- global _init_generic_done
- if _init_generic_done:
- return
- if Pyro.config.PYRO_TRACELEVEL == 0: return
- try:
- out='\n'+'-'*60+' NEW SESSION\n'+time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+ \
- ' Pyro Initializing, version '+Pyro.constants.VERSION+'\n'
- Log.raw(out)
- except IOError,e:
- sys.stderr.write('PYRO: Can\'t write the tracefile '+Pyro.config.PYRO_LOGFILE+'\n'+str(e))
-
-def _initGeneric_post():
- global _init_generic_done
- setattr(Pyro.config, Pyro.constants.CFGITEM_PYRO_INITIALIZED,1)
- if Pyro.config.PYRO_TRACELEVEL == 0: return
- try:
- if not _init_generic_done:
- out='Configuration settings are as follows:\n'
- for item in dir(Pyro.config):
- if item[0:4] =='PYRO':
- out+=item+' = '+str(Pyro.config.__dict__[item])+'\n'
- Log.raw(out)
- Log.raw('Init done.\n'+'-'*70+'\n')
- except IOError:
- pass
- _init_generic_done=1
-
-
-def initClient(banner=0):
- global _init_client_done
- if _init_client_done: return
- _initGeneric_pre()
- if Pyro.config.PYRO_TRACELEVEL >0: Log.raw('This is initClient.\n')
- Pyro.config.finalizeConfig_Client()
- _initGeneric_post()
- if banner:
- print 'Pyro Client Initialized. Using Pyro V'+Pyro.constants.VERSION
- _init_client_done=1
-
-def initServer(banner=0, storageCheck=1):
- global _init_server_done
- if _init_server_done: return
- _initGeneric_pre()
- if Pyro.config.PYRO_TRACELEVEL >0: Log.raw('This is initServer.\n')
- Pyro.config.finalizeConfig_Server(storageCheck=storageCheck)
- _initGeneric_post()
- if banner:
- print 'Pyro Server Initialized. Using Pyro V'+Pyro.constants.VERSION
- _init_server_done=1
-
-
-if __name__=="__main__":
- print "Pyro version:",Pyro.constants.VERSION
diff --git a/modules/Pyro/errors.py b/modules/Pyro/errors.py
deleted file mode 100644
index 323668d5..00000000
--- a/modules/Pyro/errors.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#############################################################################
-#
-# Pyro Exception Types
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-#############################################################################
-# PyroError is the Pyro exception type which is used for problems WITHIN Pyro.
-# User code should NOT use it!!
-#
-# NOTE: Any exception occuring in the user code on the server will be catched
-# and transported to the client, where it is raised just as if it occured
-# locally. The occurrence is logged in the server side Pyro log.
-# Pyro will use the [Remote]PyroError exceptions and their subtypes to
-# indicate that an internal problem occured.
-#############################################################################
-
-class PyroError(Exception): pass # internal
-
-class URIError(PyroError): pass # URI probs
-class DaemonError(PyroError): pass # daemon probs
-class ProtocolError(PyroError): pass # protocol adapter
-class ConnectionClosedError(ProtocolError): pass # connection in adapter is closed
-class ConnectionDeniedError(ProtocolError): pass # server refused connection
-class TimeoutError(ConnectionClosedError): pass # communication timeout
-class NamingError(PyroError): pass # name server
-class NoModuleError(PyroError): pass # no module found for incoming obj
-
-# do NOT use the following yourself:
-class _InternalNoModuleError(PyroError):
- def __init__(self, modulename=None, fromlist=None, *args):
- # note: called without args on Python 2.5+, args will be set by __setstate__
- self.modulename=modulename
- self.fromlist=fromlist
- PyroError.__init__(* (self,)+args)
- def __getstate__(self):
- return { "modulename": self.modulename, "fromlist": self.fromlist }
- def __setstate__(self, state):
- self.modulename=state["modulename"]
- self.fromlist=state["fromlist"]
-
-
-#############################################################################
-#
-# PyroExceptionCapsule - Exception encapsulation.
-#
-# This class represents a Pyro exception which can be transported
-# across the network, and raised on the other side (by invoking raiseEx).
-# NOTE: the 'real' exception class must be 'known' on the other side!
-# NOTE2: this class is adapted from exceptions.Exception.
-# NOTE3: PyroError IS USED FOR ACTUAL PYRO ERRORS. PyroExceptionCapsule
-# IS ONLY TO BE USED TO TRANSPORT AN EXCEPTION ACROSS THE NETWORK.
-# NOTE4: It sets a special attribute on the exception that is raised
-# (constants.TRACEBACK_ATTRIBUTE), this is the *remote* traceback
-# NOTE5: ---> this class is intentionally not subclassed from Exception,
-# and also not from object.
-# Pyro's exception handling depends on this!
-#
-#############################################################################
-
-import Pyro.constants
-
-class PyroExceptionCapsule: # don't make this a new style class
- def __init__(self,excObj,args=None):
- self.excObj = excObj
- self.args=args # if specified, this is the remote traceback info
- def raiseEx(self):
- setattr(self.excObj,Pyro.constants.TRACEBACK_ATTRIBUTE,self.args)
- raise self.excObj
- def __str__(self):
- s=self.excObj.__class__.__name__
- if not self.args:
- return s
- elif len(self.args) == 1:
- return s+': '+str(self.args[0])
- else:
- return s+': '+str(self.args)
- def __getitem__(self, i):
- return self.args[i]
diff --git a/modules/Pyro/ext/BasicNTService.py b/modules/Pyro/ext/BasicNTService.py
deleted file mode 100644
index 327e0b67..00000000
--- a/modules/Pyro/ext/BasicNTService.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#############################################################################
-#
-# An NT service that runs the Pyro Name Server
-# Author: Syver Enstad; syver-en@online.no
-# Bugfix for recent win32 builds: David Rushby; woodsplitter@rocketmail.com
-#
-# This is part of "Pyro" - Python Remote Objects
-# Which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import sys
-import win32serviceutil
-import threading
-import win32service
-import win32api
-import win32con
-
-
-class BasicNTService(win32serviceutil.ServiceFramework, object):
- """ Abstract base to help out with building NT services
- in Python with the win32all(by Mark Hammond) support for
- python nt services.
-
- Remember to set the two following class attributes
- to something sensible in your subclass
- _svc_name_ = 'PyroNS'
- _svc_display_name_ = 'Pyro Naming Service NT service'
-
- The following are optional
- _svc_deps_: This should be set to the list of service names
- That need to be started before this one.
- _exe_name_: This should be set to a service .EXE if you're not
- going to use PythonService.exe
- _svc_description_ : This is the descriptive string that you find
- in the services applet
-
- To register the service with the SCM the easiest way is to include the
- following at the bottom of the file where your subclass is defined.
- if __name__ == '__main__':
- TheClassYouDerivedFromBasicNTService.HandleCommandLine()
-
- """
- def __init__(self, args):
- _redirectSystemStreamsIfNecessary()
-
- win32serviceutil.ServiceFramework.__init__(self, args)
- self._stopEvent = threading.Event()
-
- def SvcStop(self):
- """ Template method from win32serviceutil.ServiceFramework"""
- # first tell SCM that we have started the stopping process
- self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
- self._stopEvent.set()
-
- def _shouldStop(self):
- return self._stopEvent.isSet()
-
- def _doRun(self):
- raise NotImplementedError
-
- def _doStop(self):
- raise NotImplementedError
-
- def SvcDoRun(self):
- """ part of Template method SvcRun
- from win32serviceutil.ServiceFramework"""
- self.logStarted()
- self._doRun()
- self._stopEvent.wait()
- self._doStop()
- self.logTermination()
- return 0
-
- def logTermination(self):
- import servicemanager
- servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
- servicemanager.PYS_SERVICE_STOPPED,
- (self._svc_name_, ""))
-
- def logStarted(self):
- import servicemanager
- servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
- servicemanager.PYS_SERVICE_STARTED,
- (self._svc_name_, ''))
-
- def CustomOptionHandler(cls, opts):
- #out=open("c:\\log.txt","w")
- print "Installing the Pyro %s" % cls._svc_name_
- args = raw_input("Enter command line arguments for %s: " % cls._svc_name_)
- try:
- createRegistryParameters(cls._svc_name_, args.strip())
- except Exception,x:
- print "Error occured when setting command line args in the registry: ",x
- try:
- cls._svc_description_
- except LookupError:
- return
-
- key = win32api.RegCreateKey(win32con.HKEY_LOCAL_MACHINE,
- "System\\CurrentControlSet\\Services\\%s" % cls._svc_name_)
- try:
- win32api.RegSetValueEx(key, "Description", 0, win32con.REG_SZ, cls._svc_description_);
- finally:
- win32api.RegCloseKey(key)
- CustomOptionHandler = classmethod(CustomOptionHandler)
-
-
- def HandleCommandLine(cls):
- if win32serviceutil.HandleCommandLine(cls, customOptionHandler=cls.CustomOptionHandler) != 0:
- return # some error occured
- if sys.argv[1] in ("install", "update"):
- print "\nYou can configure the command line arguments in the Registry."
- print "The key is: HKLM\\System\\CurrentControlSet\\Services\\%s" % cls._svc_name_
- print "The value under that key is: ", pyroArgsRegkeyName
- args=getRegistryParameters(cls._svc_name_)
- if args:
- print "(it is currently set to: '%s')" % args
- else:
- print "(it is currently not set)"
- print
- HandleCommandLine = classmethod(HandleCommandLine)
-
-
-
-pyroArgsRegkeyName = "PyroServiceArguments"
-
-
-def getRegistryParameters(servicename):
- key=win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, "System\\CurrentControlSet\\Services\\"+servicename)
- try:
- try:
- (commandLine, regtype) = win32api.RegQueryValueEx(key,pyroArgsRegkeyName)
- return commandLine
- except:
- pass
- finally:
- key.Close()
-
- createRegistryParameters(servicename, pyroArgsRegkeyName)
- return ""
-
-
-def createRegistryParameters(servicename, parameters):
- newkey=win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, "System\\CurrentControlSet\\Services\\"+servicename,0,win32con.KEY_ALL_ACCESS)
- try:
- win32api.RegSetValueEx(newkey, pyroArgsRegkeyName, 0, win32con.REG_SZ, parameters)
- finally:
- newkey.Close()
-
-
-def _redirectSystemStreamsIfNecessary():
- # Python programs running as Windows NT services must not send output to
- # the default sys.stdout or sys.stderr streams, because those streams are
- # not fully functional in the NT service execution environment. Sending
- # output to them will eventually (but not immediately) cause an IOError
- # ("Bad file descriptor"), which can be quite mystifying to the
- # uninitiated. This problem can be overcome by replacing the default
- # system streams with a stream that discards any data passed to it (like
- # redirection to /dev/null on Unix).
- #
- # However, the pywin32 service framework supports a debug mode, under which
- # the streams are fully functional and should not be redirected.
- shouldRedirect = True
- try:
- import servicemanager
- except ImportError:
- # If we can't even 'import servicemanager', we're obviously not running
- # as a service, so the streams shouldn't be redirected.
- shouldRedirect = False
- else:
- # Unlike previous builds, pywin32 builds >= 200 allow the
- # servicemanager module to be imported even in a program that isn't
- # running as a service. In such a situation, it would not be desirable
- # to redirect the system streams.
- #
- # However, it was not until pywin32 build 203 that a 'RunningAsService'
- # predicate was added to allow client code to determine whether it's
- # running as a service.
- #
- # This program logic redirects only when necessary if using any build
- # of pywin32 except 200-202. With 200-202, the redirection is a bit
- # more conservative than is strictly necessary.
- if (
- servicemanager.Debugging()
- or (
- hasattr(servicemanager, 'RunningAsService')
- and not servicemanager.RunningAsService()
- )
- ):
- shouldRedirect = False
-
- if shouldRedirect:
- sys.stdout = sys.stderr = open('nul', 'w')
-
- return shouldRedirect
diff --git a/modules/Pyro/ext/ES_NtService.py b/modules/Pyro/ext/ES_NtService.py
deleted file mode 100644
index b21cefdc..00000000
--- a/modules/Pyro/ext/ES_NtService.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#############################################################################
-#
-# An NT service that runs the Pyro Event Service
-# Author: Syver Enstad syver-en@online.no
-#
-# This is part of "Pyro" - Python Remote Objects
-# Which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import win32serviceutil
-import threading
-import win32service
-import win32api
-from BasicNTService import BasicNTService, getRegistryParameters
-
-
-def setConfig():
- Pyro.config.PYRO_TRACELEVEL=3
- Pyro.config.PYRO_STORAGE = os.path.splitdrive(win32api.GetSystemDirectory())[0]+os.sep
- Pyro.config.PYRO_LOGFILE = "Pyro_ES_svc.log"
-
-
-import os,sys
-import Pyro.util
-setConfig()
-Log=Pyro.util.Log
-from Pyro.EventService import Server
-
-
-class PyroESThread(threading.Thread):
- """ The Pyro Event Service will run in this thread
- """
- def __init__(self, args, stopcallback):
- threading.Thread.__init__(self)
- self._args = list(args)
- self._stopcallback = stopcallback
-
- def run(self):
- self.startPyroES()
- self._stopcallback()
-
- def startPyroES(self):
- Log.msg("PyroES_svc","Pyro ES service is starting, arguments=",self._args)
- """ ripped out of Pyro.EventService.Server and slightly changed to
- accomodate not using sys.argv, but self._args instead
- """
-
- try:
- Args = Pyro.util.ArgParser()
- Args.parse(self._args,'hn:p:i:')
- if Args.hasOpt('h'):
- Log.error("PyroES_svc","""
-Usage: es [-h] [-n hostname] [-p port] [-i identification]
- where -p = ES server port
- -n = non-default hostname to bind on
- -i = the required authentication ID for ES clients,
- also used to connect to other Pyro services
- -h = print this help
-""")
- raise SystemExit
- host = Args.getOpt('n','')
- port = Args.getOpt('p',None)
- ident = Args.getOpt('i',None)
- if port:
- port=int(port)
- if Args.ignored:
- Log.warn("PyroES_svc",'Ignored options:',Args.ignored)
- if Args.args:
- Log.warn("PyroES_svc",'Ignored arguments:',Args.args)
-
- Log.msg("PyroES_scv", "Starting the Event Server.")
- self.starter=Server.EventServiceStarter(identification=ident)
- self.starter.start(host,port)
-
- except Exception,x :
- Log.error("PyroES_scv","COULD NOT START!!!",x)
- raise SystemExit
-
- def shutdown(self):
- self.starter.running=0
-
-
-class PyroES_NTService(BasicNTService):
- _svc_name_ = 'PyroES'
- _svc_display_name_ = "Pyro Event Service"
- _svc_description_ = "Provides event topics and publish/subscribe communication for Pyro"
- def __init__(self, args):
- super(PyroES_NTService, self).__init__(args)
- setConfig()
- try:
- args = getRegistryParameters(self._svc_name_).split()
- except Exception,x:
- Log.error("PyroES_svc","PROBLEM GETTING ARGS FROM REGISTRY:",x)
- self._esThread = PyroESThread(args, self.SvcStop)
-
- def _doRun(self):
- """ Overriden """
- self._esThread.start()
-
- def _doStop(self):
- """ Overridden """
- self._esThread.shutdown()
- self._esThread.join()
-
- def SvcStop(self):
- """Overriden """
- super(PyroES_NTService, self).SvcStop()
-
-
-if __name__ == '__main__':
- PyroES_NTService.HandleCommandLine()
diff --git a/modules/Pyro/ext/NS_NtService.py b/modules/Pyro/ext/NS_NtService.py
deleted file mode 100644
index a0af0f06..00000000
--- a/modules/Pyro/ext/NS_NtService.py
+++ /dev/null
@@ -1,200 +0,0 @@
-#############################################################################
-#
-# An NT service that runs the Pyro Name Server
-# Author: Syver Enstad syver-en@online.no
-#
-# This is part of "Pyro" - Python Remote Objects
-# Which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import win32serviceutil
-import threading
-import win32service
-import win32api
-from BasicNTService import BasicNTService, getRegistryParameters
-
-
-def setConfig():
- Pyro.config.PYRO_TRACELEVEL=3
- Pyro.config.PYRO_STORAGE = os.path.splitdrive(win32api.GetSystemDirectory())[0]+os.sep
- Pyro.config.PYRO_LOGFILE = "Pyro_NS_svc.log"
- Pyro.config.PYRO_NS_URIFILE = os.path.join(Pyro.config.PYRO_STORAGE, "Pyro_NS_URI.txt")
-
-import os,sys
-import Pyro.util
-setConfig()
-Log=Pyro.util.Log
-import Pyro.core
-import Pyro.constants
-import Pyro.naming
-from Pyro.naming import NameServer, PersistentNameServer, BroadcastServer, bcRequestHandler
-
-BcServerObject = None
-
-def startServer(hstn='', nsport=0, bcport=0, keep=0, persistent=0, dbdir=None, Guards=(None,None)):
- global BcServerObject
- if not nsport:
- nsport=Pyro.config.PYRO_NS_PORT
- if not bcport:
- bcport=Pyro.config.PYRO_NS_BC_PORT
- Pyro.core.initServer()
- PyroDaemon = Pyro.core.Daemon(host=hstn, port=nsport,norange=1)
- if Guards[0]:
- PyroDaemon.setNewConnectionValidator(Guards[0])
- if persistent:
- ns=PersistentNameServer(dbdir)
- PyroDaemon.useNameServer(ns)
- NS_URI=PyroDaemon.connectPersistent(ns,Pyro.constants.NAMESERVER_NAME)
- else:
- ns=NameServer()
- PyroDaemon.useNameServer(ns)
- NS_URI=PyroDaemon.connect(ns,Pyro.constants.NAMESERVER_NAME)
-
- BcServerObject = BroadcastServer((hstn or '',bcport),bcRequestHandler)
- if Guards[1]:
- BcServerObject.setRequestValidator(Guards[1])
- BcServerObject.keepRunning(keep)
- if keep:
- Log.msg("NS", 'Will ignore shutdown requests.')
- ns.ignoreShutdown=True
- else:
- Log.msg("NS", 'Will accept shutdown requests.')
- ns.ignoreShutdown=False
-
- if Guards[0] or Guards[1]:
- print 'Using security plugins:'
- if Guards[0]:
- print ' NS new conn validator =',Guards[0].__class__.__name__,'from', Guards[0].__class__.__module__
- else: print ' default NS new conn validator'
- if Guards[1]:
- print ' BC request validator =',Guards[1].__class__.__name__,'from', Guards[1].__class__.__module__
- else: print ' default BC request validator'
-
- ns.publishURI(NS_URI)
- BcServerObject.setNS_URI(NS_URI)
- Log.msg('NS daemon','This is the Pyro Name Server.')
- if persistent:
- Log.msg('NS daemon','Persistent mode, database is in',ns.getDBDir())
- print 'Persistent mode, database is in',ns.getDBDir()
- Log.msg('NS daemon','Starting on',PyroDaemon.hostname,'port', PyroDaemon.port, ' broadcast server on port',bcport)
-
- # I use a timeout here otherwise you can't break gracefully on Windoze
- while not BcServerObject.shutdown:
- try:
- PyroDaemon.handleRequests(BcServerObject.preferredTimeOut,[BcServerObject],BcServerObject.bcCallback)
- except KeyboardInterrupt:
- Log.warn('NS daemon','shutdown on user break signal')
- BcServerObject.shutdown=1
- except:
- import traceback
- (exc_type, exc_value, exc_trb) = sys.exc_info()
- out = ''.join(traceback.format_exception(exc_type, exc_value, exc_trb)[-5:])
- Log.error('NS daemon', 'Unexpected exception, type',exc_type,
- '\n--- partial traceback of this exception follows:\n',
- out,'\n--- end of traceback')
-
- Log.msg('NS daemon','Shut down gracefully.')
-
-
-class PyroNSThread(threading.Thread):
- """ The Pyro Naming Service will run in this thread
- """
- def __init__(self, args, stopcallback):
- threading.Thread.__init__(self)
- Log.msg("PyroNSsvc", "initializing")
- self._args = list(args)
- Log.msg("PyroNSsvc", "args are:",self._args)
- self._stopcallback = stopcallback
-
- def run(self):
- self.startPyroNS()
- self._stopcallback()
-
- def startPyroNS(self):
- try:
- """ ripped out of Pyro.naming and slightly changed to
- accomodate not using sys.argv, but self._args instead
- """
- Args = Pyro.util.ArgParser()
- Args.parse(self._args,'hkn:p:b:d:s:')
- try:
- Args.getOpt('h')
- Log.error("PyroNS_svc","""
-Usage: ns [-h] [-n hostname] [-p port] [-b port]
- [-d [databasefile]] [-s securitymodule]
- where -p = NS server port
- -b = NS broadcast port
- -n = non-default server hostname
- -d = use persistent database, provide optional storage directory
- -s = use given python module with security code
- -h = print this help
-""")
- raise SystemExit
- except KeyError:
- pass
- host = Args.getOpt('n','')
- port = int(Args.getOpt('p',Pyro.config.PYRO_NS_PORT))
- bcport = int(Args.getOpt('b',Pyro.config.PYRO_NS_BC_PORT))
- try:
- dbdir = Args.getOpt('d')
- persistent = 1
- except KeyError:
- persistent = 0
- dbdir = None
-
- # we're running as a service, always ignore remote shutdown requests
- keep=1
-
- try:
- secmod = __import__(Args.getOpt('s'),locals(),globals())
- Guards = (secmod.NSGuard(), secmod.BCGuard())
- except ImportError,x:
- Log.msg("NS", 'Error loading security module:',x)
- raise SystemExit
- except KeyError:
- secmod = None
- Guards = (None,None)
-
- if Args.ignored:
- Log.warn("PyroNS_svc",'Ignored options:',Args.ignored)
- if Args.args:
- Log.warn("PyroNS_svc",'Ignored arguments:',Args.args)
-
- Log.msg("PyroNS_svc","Starting the Name Server.")
- startServer(host,port,bcport,keep,persistent,dbdir,Guards)
- except Exception,x :
- Log.error("NS daemon","COULD NOT START!!!",x)
- raise SystemExit
-
-
-class PyroNS_NTService(BasicNTService):
- _svc_name_ = 'PyroNS'
- _svc_display_name_ = "Pyro Naming Service"
- _svc_description_ = 'Provides name resolution services for Pyro objects'
- def __init__(self, args):
- super(PyroNS_NTService, self).__init__(args)
- setConfig()
- try:
- args = getRegistryParameters(self._svc_name_).split()
- except Exception,x:
- Log.error("PyroNS_svc","PROBLEM GETTING ARGS FROM REGISTRY:",x)
- self._nsThread = PyroNSThread(args, self.SvcStop)
-
- def _doRun(self):
- """ Overriden """
- self._nsThread.start()
-
- def _doStop(self):
- """ Overridden """
- global BcServerObject
- BcServerObject.shutdown = 1
- self._nsThread.join()
-
- def SvcStop(self):
- """Overriden """
- super(PyroNS_NTService, self).SvcStop()
-
-
-if __name__ == '__main__':
- PyroNS_NTService.HandleCommandLine()
diff --git a/modules/Pyro/ext/ServiceTest.py b/modules/Pyro/ext/ServiceTest.py
deleted file mode 100644
index 65ebd6b2..00000000
--- a/modules/Pyro/ext/ServiceTest.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#############################################################################
-#
-# A test for the PyroNS_NTService program
-# Author: Syver Enstad syver-en@online.no
-#
-# This is part of "Pyro" - Python Remote Objects
-# Which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import unittest
-import win32serviceutil
-import win32service
-import time
-import Pyro.nsc
-
-ServiceName = 'PyroNS'
-
-class Test(unittest.TestCase):
- def setUp(self):
- win32serviceutil.StartService(ServiceName)
-
- def testStartPending(self):
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.QueryServiceStatus(ServiceName)
- assert svcState & win32service.SERVICE_START_PENDING
-
- def testFullyStarted(self):
- self._waitForStarted()
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.QueryServiceStatus(ServiceName)
- assert svcType & win32service.SERVICE_WIN32_OWN_PROCESS
- assert svcState & win32service.SERVICE_RUNNING
- assert svcControls & win32service.SERVICE_ACCEPT_STOP
-
- def testStop(self):
- self._waitForStarted()
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.StopService(ServiceName)
- assert svcState & win32service.SERVICE_STOPPED
- assert svcType & win32service.SERVICE_WIN32_OWN_PROCESS
-
- def testNameserverAvailable(self):
- self._waitForStarted()
- ctrl = Pyro.nsc.PyroNSControl()
- ctrl.args(None)
- ctrl.ping()
-
- def testNameserverShutdownFromNsc(self):
- self._waitForStarted()
- ctrl = Pyro.nsc.PyroNSControl()
- ctrl.args(None)
- ctrl.shutdown()
- for each in range(100):
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.QueryServiceStatus(ServiceName)
- if svcState & win32service.SERVICE_STOPPED:
- return
- time.sleep(0.20)
- self.fail()
-
- def tearDown(self):
- for each in range(1000):
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.QueryServiceStatus(ServiceName)
- if svcState & win32service.SERVICE_RUNNING:
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.StopService(ServiceName)
- time.sleep(0.1)
- elif svcState & win32service.SERVICE_STOPPED:
- time.sleep(0.10)
- break
- else:
- time.sleep(0.10)
- assert svcState & win32service.SERVICE_STOPPED
- time.sleep(3)
-
- def _waitForStarted(self):
- for each in range(100):
- svcType, svcState, svcControls, err, svcErr, svcCP, svcWH = \
- win32serviceutil.QueryServiceStatus(ServiceName)
- if svcState & win32service.SERVICE_RUNNING:
- break
- else:
- time.sleep(0.10)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/modules/Pyro/ext/__init__.py b/modules/Pyro/ext/__init__.py
deleted file mode 100644
index 6f66f15a..00000000
--- a/modules/Pyro/ext/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# just to make this a package.
diff --git a/modules/Pyro/ext/daemonizer.py b/modules/Pyro/ext/daemonizer.py
deleted file mode 100644
index 11b50614..00000000
--- a/modules/Pyro/ext/daemonizer.py
+++ /dev/null
@@ -1,187 +0,0 @@
-#!/usr/bin/env python
-#############################################################################
-#
-# Run Pyro servers as daemon processes on Unix/Linux.
-# This won't work on other operating systems such as Windows.
-# Author: Jeff Bauer (jbauer@rubic.com)
-# This software is released under the MIT software license.
-# Based on an earlier daemonize module by Jeffery Kunce
-# Updated by Luis Camaano to double-fork-detach.
-#
-# DEPRECATED. Don't use this in new code.
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import sys, os, time
-from signal import SIGINT
-
-class DaemonizerException:
- def __init__(self, msg):
- self.msg = msg
- def __str__(self):
- return self.msg
-
-class Daemonizer:
- """
- Daemonizer is a class wrapper to run a Pyro server program
- in the background as daemon process. The only requirement
- is for the derived class to implement a main_loop() method.
- See Test class below for an example.
-
- The following command line operations are provided to support
- typical /etc/init.d startup/shutdown on Unix systems:
-
- start | stop | restart
-
- In addition, a daemonized program can be called with arguments:
-
- status - check if process is still running
-
- debug - run the program in non-daemon mode for testing
-
- Note: Since Daemonizer uses fork(), it will not work on non-Unix
- systems.
- """
- def __init__(self, pidfile=None):
- if not pidfile:
- # PID file moved out of /tmp to avoid security vulnerability
- # changed by Debian maintainer per Debian bug #631912
- self.pidfile = "/var/run/pyro-%s.pid" % self.__class__.__name__.lower()
- else:
- self.pidfile = pidfile
-
- def become_daemon(self, root_dir='/'):
- if os.fork() != 0: # launch child and ...
- os._exit(0) # kill off parent
- os.setsid()
- os.chdir(root_dir)
- os.umask(0)
- if os.fork() != 0: # fork again so we are not a session leader
- os._exit(0)
- sys.stdin.close()
- sys.__stdin__ = sys.stdin
- sys.stdout.close()
- sys.stdout = sys.__stdout__ = _NullDevice()
- sys.stderr.close()
- sys.stderr = sys.__stderr__ = _NullDevice()
- for fd in range(1024):
- try:
- os.close(fd)
- except OSError:
- pass
-
- def daemon_start(self, start_as_daemon=1):
- if start_as_daemon:
- self.become_daemon()
- if self.is_process_running():
- msg = "Unable to start server. Process is already running."
- raise DaemonizerException(msg)
- f = open(self.pidfile, 'w')
- f.write("%s" % os.getpid())
- f.close()
- self.main_loop()
-
- def daemon_stop(self):
- pid = self.get_pid()
- try:
- os.kill(pid, SIGINT) # SIGTERM is too harsh...
- time.sleep(1)
- try:
- os.unlink(self.pidfile)
- except OSError:
- pass
- except IOError:
- pass
-
- def get_pid(self):
- try:
- f = open(self.pidfile)
- pid = int(f.readline().strip())
- f.close()
- except IOError:
- pid = None
- return pid
-
- def is_process_running(self):
- pid = self.get_pid()
- if pid:
- try:
- os.kill(pid, 0)
- return 1
- except OSError:
- pass
- return 0
-
- def main_loop(self):
- """NOTE: This method must be implemented in the derived class."""
- msg = "main_loop method not implemented in derived class: %s" % \
- self.__class__.__name__
- raise DaemonizerException(msg)
-
- def process_command_line(self, argv, verbose=1):
- usage = "usage: %s start | stop | restart | status | debug " \
- "[--pidfile=...] " \
- "(run as non-daemon)" % os.path.basename(argv[0])
- if len(argv) < 2:
- print usage
- raise SystemExit
- else:
- operation = argv[1]
- if len(argv) > 2 and argv[2].startswith('--pidfile=') and \
- len(argv[2]) > len('--pidfile='):
- self.pidfile = argv[2][len('--pidfile='):]
- pid = self.get_pid()
- if operation == 'status':
- if self.is_process_running():
- print "Server process %s is running." % pid
- else:
- print "Server is not running."
- elif operation == 'start':
- if self.is_process_running():
- print "Server process %s is already running." % pid
- raise SystemExit
- else:
- if verbose:
- print "Starting server process."
- self.daemon_start()
- elif operation == 'stop':
- if self.is_process_running():
- self.daemon_stop()
- if verbose:
- print "Server process %s stopped." % pid
- else:
- print "Server process %s is not running." % pid
- raise SystemExit
- elif operation == 'restart':
- self.daemon_stop()
- if verbose:
- print "Restarting server process."
- self.daemon_start()
- elif operation == 'debug':
- self.daemon_start(0)
- else:
- print "Unknown operation:", operation
- raise SystemExit
-
-
-class _NullDevice:
- """A substitute for stdout/stderr that writes to nowhere."""
- def write(self, s):
- pass
-
-
-class Test(Daemonizer):
- def __init__(self):
- Daemonizer.__init__(self)
-
- def main_loop(self):
- while 1:
- time.sleep(1)
-
-
-if __name__ == "__main__":
- test = Test()
- test.process_command_line(sys.argv)
diff --git a/modules/Pyro/ext/remote.py b/modules/Pyro/ext/remote.py
deleted file mode 100644
index 6f524929..00000000
--- a/modules/Pyro/ext/remote.py
+++ /dev/null
@@ -1,498 +0,0 @@
-#############################################################################
-#
-# simple Pyro connection module, originally written by John Wiegley
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import UserDict
-import exceptions
-import os
-import re
-import signal
-import socket
-import sys
-import time
-import types
-
-import Pyro.errors
-import Pyro.naming
-import Pyro.core
-import Pyro.util
-
-from Pyro.protocol import ProtocolError
-
-true, false = 1, 0
-
-copy_types = false
-verbose = false
-pyro_nameserver = None
-pyro_daemon = None
-client_initialized = false
-server_initialized = false
-daemon_host = ''
-daemon_port = 0
-daemon_objects = []
-daemon_types = []
-
-def tb_info(tb):
- codename = tb.tb_frame.f_code.co_filename
- lineno = tb.tb_lineno
- if not (codename == '' or codename.find(".py") > 0):
- lineno = lineno - 2
- return lineno, codename
-
-def canonize(e_type, e_val, e_traceback):
- "Turn the exception into a textual representation."
- # find the last traceback:
- tb = e_traceback
-
- lineno, codename = tb_info(tb)
- lines = [ "%s %s" % (codename, lineno) ]
-
- found = None
- if tb.tb_frame.f_code.co_filename[0] == '<':
- found = tb
-
- while tb.tb_next:
- tb = tb.tb_next
- if tb.tb_frame.f_code.co_filename[0] == '<':
- found = tb
- lineno, codename = tb_info(tb)
- lines.append("%s %s" % (codename, lineno))
-
- if found:
- tb = found
-
- lineno, codename = tb_info(tb)
-
- if codename == '':
- lines.insert(0, "%s in command: %s" % (e_type, e_val))
- elif codename.find(".py") > 0 and e_type == "SyntaxError":
- lines.insert(0, "%s in: %s" % (e_type, e_val))
- else:
- lines.insert(0, "%s in line %s of %s: %s" %
- (e_type, lineno, codename, e_val))
-
- return lines
-
-def exception_text():
- return sys.exc_value
-
-def format_exception():
- return canonize(*sys.exc_info())
-
-def register_type(t):
- """Whenever type T goes in or out, wrap/unwrap the type so that
- the user is always interacting with the server object, or the
- server interacts with the object directly."""
- if t not in daemon_types:
- daemon_types.append(t)
-
-def unregister_objects():
- if pyro_daemon:
- global daemon_objects
- for obj in daemon_objects:
- try: pyro_daemon.disconnect(obj)
- except: pass
- daemon_objects = []
-
-sys.exitfunc = unregister_objects
-
-def host_ipaddr(interface = None):
- if sys.platform == "win32":
- return socket.gethostbyname(socket.gethostname())
-
- cmd = "/sbin/ifconfig"
- if interface:
- cmd = '%s %s' % (cmd, interface)
- fd = os.popen(cmd)
-
- this_host = None
- interfaces = {}
- name = None
-
- for line in fd.readlines():
- match = re.match("(\S+)", line)
- if match: name = match.group(1)
- match = re.search("inet addr:(\S+)", line)
- if match:
- addr = match.group(1)
- if name:
- interfaces[name] = addr
-
- if interfaces.has_key(interface):
- this_host = interfaces[interface]
- else:
- for name, addr in interfaces.items():
- if re.match("ppp", name):
- this_host = addr
- break
- elif re.match("eth", name):
- this_host = addr
-
- fd.close()
-
- return this_host or socket.gethostbyname(socket.gethostname())
-
-def find_nameserver(hostname = None, portnum = None):
- if hostname and hostname.find('://') > 0:
- URI = Pyro.core.PyroURI(hostname)
- ns = Pyro.naming.NameServerProxy(URI)
- else:
- try:
- if verbose:
- print 'Searching for Naming Service on %s:%d...' % \
- (hostname or 'BROADCAST',
- portnum or Pyro.config.PYRO_NS_BC_PORT)
- locator = Pyro.naming.NameServerLocator()
- ns = locator.getNS(host = hostname, port = portnum)
-
- except (Pyro.core.PyroError, socket.error), x:
- localhost = socket.gethostbyname('localhost')
- if verbose:
- print "Error:", x
- print """
-Naming Service not found with broadcast.
-Trying local host""", localhost, '...',
-
- ns = locator.getNS(host = localhost, port = portnum)
-
- if verbose: print 'Naming Service found at', ns.URI
-
- return ns
-
-class Error(Exception): pass
-
-class ObjBase(Pyro.core.ObjBase):
- """This extension of Pyro.core.ObjBase makes sure that any values
- that get returned to the caller which are of a significant type,
- get wrapped first in proxies.
-
- Likewise, if a proxy class comes back to us, and it's in regard to
- an object native to this server, unwrap it."""
- def __nonzero__(self): return 1
-
- def Pyro_dyncall(self, method, flags, args):
- try:
- base = Pyro.core.ObjBase.Pyro_dyncall
- result = wrap(base(self, method, flags, unwrap(args)))
- except:
- result = Error('\n'.join(format_exception()))
- return result
-
- def _r_ga(self, attr):
- return wrap(Pyro.core.ObjBase._r_ga(self, attr))
-
- def _r_sa(self, attr, value):
- Pyro.core.ObjBase._r_sa(self, attr, unwrap(value))
-
-class Nameserver:
- """This helper class allows the server to use Pyro's naming
- service for publishing certain objects by name. It integrates
- better with remote.py, than Pyro.naming.NameServer does."""
- def __init__(self, ns, ns_port):
- self.ns = ns
- self.ns_port = ns_port
-
- def __cmp__(self, other):
- return self.ns == other.ns and self.ns_port == other.ns_port
-
- def __str__(self):
- if self.ns_port:
- return "%s:%s" % (self.ns, self.ns_port)
- return self.ns
-
- def resolve(self, name):
- return get_remote_object(name, self.ns, self.ns_port)
-
- def register(self, name, object):
- return provide_local_object(object, name, self.ns, self.ns_port)
-
- def unregister(self, object):
- for obj in daemon_objects[:]:
- if obj.delegate is object:
- pyro_daemon.disconnect(obj)
- daemon_objects.remove(obj)
-
-class DynamicProxy(Pyro.core.DynamicProxyWithAttrs):
- """This version of the proxy just wraps args before making
- external calls."""
- def __nonzero__(self):
- return true
-
- def _invokePYRO(self, *vargs, **kargs):
- result = unwrap(apply(Pyro.core.DynamicProxyWithAttrs._invokePYRO,
- tuple([self] + wrap(list(vargs))), wrap(kargs)))
-
- if type(result) is types.InstanceType and \
- isinstance(result, Error) or \
- isinstance(result, Pyro.errors.PyroError) or \
- isinstance(result, ProtocolError):
- msg = str(result)
- type_name = msg[: msg.find(' ')]
-
- if type_name == 'exceptions.IndexError':
- try:
- real_type = eval(type_name)
- msg = msg.split('\n')[0]
- result = real_type(msg[msg.find(':') + 2 :])
- except:
- pass
-
- raise result
- else:
- return result
-
-def unwrap(value):
- t = type(value)
- if t is types.InstanceType and isinstance(value, DynamicProxy):
- if pyro_daemon:
- try:
- return pyro_daemon.getLocalObject(value.objectID)
- except KeyError:
- pass
- return value
- elif t is types.ListType:
- for i in range(len(value)):
- value[i] = unwrap(value[i])
- elif t is types.TupleType:
- value = list(value)
- for i in range(len(value)):
- value[i] = unwrap(value[i])
- return tuple(value)
- elif t is types.DictType:
- for k, v in value.items():
- value[k] = unwrap(v)
- return value
-
-def wrap(value):
- """Wrap the argument, returning a copy -- since otherwise we might
- alter a local data structure inadvertantly."""
- t = type(value)
- if t is types.InstanceType:
- matched = false
- for dt in daemon_types:
- if isinstance(value, dt):
- matched = true
- if not copy_types and not matched and \
- not isinstance(value, DynamicProxy):
- return provide_local_object(value)
- elif t is types.ListType:
- value = value[:]
- for i in range(len(value)):
- value[i] = wrap(value[i])
- elif t is types.TupleType:
- value = list(value)
- for i in range(len(value)):
- value[i] = wrap(value[i])
- return tuple(value)
- elif t is types.DictType:
- copy = {}
- for k, v in value.items():
- copy[k] = wrap(v)
- return copy
- return value
-
-def get_remote_object(name, hostname = None, portnum = None):
- global client_initialized, pyro_nameserver
-
- # initialize Pyro -- Python Remote Objects
- if not client_initialized:
- Pyro.core.initClient(verbose)
- client_initialized = true
-
- if pyro_nameserver is None or hostname:
- pyro_nameserver = find_nameserver(hostname, portnum)
-
- if verbose:
- print 'Binding object %s' % name
-
- try:
- URI = pyro_nameserver.resolve(name)
- if verbose:
- print 'URI:', URI
-
- return DynamicProxy(URI)
-
- except Pyro.core.PyroError, x:
- raise Error("Couldn't bind object, nameserver says:", x)
-
-class Cache(UserDict.UserDict):
- """simple cache that uses least recently accessed time to trim size"""
- def __init__(self,data=None,size=100):
- UserDict.UserDict.__init__(self,data)
- self.size = size
-
- def resize(self):
- """trim cache to no more than 95% of desired size"""
- trim = max(0, int(len(self.data)-0.95*self.size))
- if trim:
- # don't want self.items() because we must sort list by access time
- values = map(None, self.data.values(), self.data.keys())
- values.sort()
- for val,k in values[0:trim]:
- del self.data[k]
-
- def __setitem__(self,key,val):
- if (not self.data.has_key(key) and
- len(self.data) >= self.size):
- self.resize()
- self.data[key] = (time.time(), val)
-
- def __getitem__(self,key):
- """like normal __getitem__ but updates time of fetched entry"""
- val = self.data[key][1]
- self.data[key] = (time.time(),val)
- return val
-
- def get(self,key,default=None):
- """like normal __getitem__ but updates time of fetched entry"""
- try:
- return self[key]
- except KeyError:
- return default
-
- def values(self):
- """return values, but eliminate access times first"""
- vals = list(self.data.values())
- for i in range(len(vals)):
- vals[i] = vals[i][1]
- return tuple(vals)
-
- def items(self):
- return map(None, self.keys(), self.values())
-
- def copy(self):
- return self.__class__(self.data, self.size)
-
- def update(self, otherdict):
- for k in otherdict.keys():
- self[k] = otherdict[k]
-
-provided_objects = Cache(size = 100)
-
-def provide_local_object(obj, name = None, hostname = None, portnum = None):
- global server_initialized, pyro_daemon, pyro_nameserver
-
- proxy_class = DynamicProxy
-
- if not server_initialized:
- Pyro.core.initServer(verbose)
- server_initialized = true
-
- if pyro_daemon is None:
- pyro_daemon = Pyro.core.Daemon(host = daemon_host,
- port = daemon_port)
-
- # If no 'name' was specified, don't even bother with the
- # nameserver.
- if name:
- if pyro_nameserver is None or hostname:
- pyro_nameserver = find_nameserver(hostname, portnum)
-
- pyro_daemon.useNameServer(pyro_nameserver)
-
- if verbose:
- print 'Remoting object', name
-
- # tell nameserver to forget any earlier use of this name
- try:
- if pyro_nameserver.resolve(name):
- pyro_nameserver.unregister(name)
- except Pyro.errors.NamingError:
- pass
-
- if not isinstance(obj, Pyro.core.ObjBase):
- if provided_objects.has_key(obj):
- obj = provided_objects[obj]
- else:
- slave = ObjBase()
- slave.delegateTo(obj)
- provided_objects[obj] = slave
- obj = slave
-
- URI = pyro_daemon.connect(obj, name)
- daemon_objects.append(obj)
-
- proxy = proxy_class(URI)
-
- return proxy
-
-abort = false
-
-def interrupt(*args):
- global abort
- abort = true
-
-if hasattr(signal,'SIGINT'): signal.signal(signal.SIGINT, interrupt)
-#if hasattr(signal,'SIGHUP'): signal.signal(signal.SIGHUP, interrupt)
-#if hasattr(signal,'SIGQUIT'): signal.signal(signal.SIGQUIT, interrupt)
-
-def handle_requests(wait_time = None, callback = None):
- global abort
-
- abort = false
-
- if pyro_daemon is None:
- raise Error("There is no daemon with which to handle requests")
-
- if wait_time:
- start = time.time()
-
- while not abort:
- try:
- pyro_daemon.handleRequests(wait_time)
-
- if wait_time:
- now = time.time()
- if callback and now - start > wait_time:
- callback()
- start = now
- elif callback:
- callback()
-
- # ignore socket and select errors, they are often transient
- except socket.error: pass
- except Exception, msg:
- if verbose:
- print "Error:", sys.exc_type, msg
- abort = true
- except:
- abort = true
-
- return abort
-
-def handle_requests_unsafe(wait_time = None, callback = None):
- global abort
-
- abort = false
-
- if pyro_daemon is None:
- raise Error("There is no daemon with which to handle requests")
-
- if wait_time:
- start = time.time()
-
- while 1:
- pyro_daemon.handleRequests(wait_time)
-
- if wait_time:
- now = time.time()
- if callback and now - start > wait_time:
- callback()
- start = now
- elif callback:
- callback()
-
- return true
-
-def unregister_object(obj):
- if pyro_daemon:
- try: pyro_daemon.disconnect(obj)
- except: pass
- global daemon_objects
- if obj in daemon_objects:
- daemon_objects.remove(obj)
diff --git a/modules/Pyro/ext/remote_nons.py b/modules/Pyro/ext/remote_nons.py
deleted file mode 100644
index 92dc1a6c..00000000
--- a/modules/Pyro/ext/remote_nons.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#############################################################################
-#
-# simple Pyro connection module, without requiring Pyro's NameServer
-# (adapted from John Wiegley's remote.py)
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import signal
-import sys
-import time
-
-import Pyro.errors
-import Pyro.naming
-import Pyro.core
-import Pyro.util
-
-true, false = 1, 0
-
-verbose = false
-pyro_daemon = None
-client_initialized = false
-server_initialized = false
-daemon_objects = []
-
-from Pyro.protocol import ProtocolError
-
-
-def get_server_object(objectName, hostname , portnum):
- global client_initialized
-
- # initialize Pyro -- Python Remote Objects
- if not client_initialized:
- Pyro.core.initClient(verbose)
- client_initialized = true
-
-
- if verbose:
- print 'Binding object %s' % objectName
-
- try:
- URI = 'PYROLOC://%s:%d/%s' % (hostname,portnum,objectName)
- if verbose:
- print 'URI:', URI
-
- return Pyro.core.getAttrProxyForURI(URI)
-
- except Pyro.core.PyroError, x:
- raise Pyro.core.PyroError("Couldn't bind object, Pyro says:", x)
-
-def provide_server_object(obj, name = None, hostname = '', portnum = None):
- global server_initialized, pyro_daemon
- proxy_class = Pyro.core.DynamicProxyWithAttrs
-
- if not server_initialized:
- Pyro.core.initServer(verbose)
- server_initialized = true
-
- if pyro_daemon is None:
- pyro_daemon = Pyro.core.Daemon(host = hostname, port = portnum)
-
-
- if not isinstance(obj, Pyro.core.ObjBase):
- slave = Pyro.core.ObjBase()
- slave.delegateTo(obj)
- obj = slave
-
- URI = pyro_daemon.connect(obj, name)
- if verbose:
- print 'provide_server_object: URI = ', URI
- daemon_objects.append(obj)
-
- proxy = proxy_class(URI)
-
- return proxy
-
-abort = false
-
-def interrupt(*args):
- global abort
- abort = true
-
-if hasattr(signal,'SIGINT'): signal.signal(signal.SIGINT, interrupt)
-#if hasattr(signal,'SIGHUP'): signal.signal(signal.SIGHUP, interrupt)
-#if hasattr(signal,'SIGQUIT'): signal.signal(signal.SIGQUIT, interrupt)
-
-def handle_requests(wait_time = None, callback = None):
- global abort
-
- abort = false
-
- if pyro_daemon is None:
- raise Pyro.errors.PyroError("There is no daemon with which to handle requests")
- return
-
- if wait_time:
- start = time.time()
-
- while not abort:
- try:
- pyro_daemon.handleRequests(wait_time)
- if wait_time:
- now = time.time()
- if callback and now - start > wait_time:
- callback()
- start = now
- elif callback:
- callback()
-
- except Exception, msg:
- if verbose:
- print "Error:", sys.exc_type, msg
- abort = true
- except:
- abort = true
-
- return abort
diff --git a/modules/Pyro/naming.py b/modules/Pyro/naming.py
deleted file mode 100644
index 98f2d15b..00000000
--- a/modules/Pyro/naming.py
+++ /dev/null
@@ -1,1489 +0,0 @@
-#############################################################################
-#
-# Pyro Name Server
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-from __future__ import with_statement
-import sys, os, socket, time, traceback, errno
-import dircache, shutil, SocketServer
-import Pyro.constants, Pyro.core, Pyro.errors, Pyro.protocol, Pyro.util
-if Pyro.util.supports_multithreading():
- import threading
-
-NS_SYSCMD_LOCATION='location'
-NS_SYSCMD_SHUTDOWN='shutdown'
-
-Log = Pyro.util.Log
-
-#############################################################################
-#
-# The Pyro NameServer Locator.
-# Use a broadcast mechanism to find the broadcast server of the NS which
-# can provide us with the URI of the NS.
-# Can also perform direct lookup (no broadcast) if the host is specified.
-# (in that case, the 'port' argument is the Pyro port, not a broadcast port).
-#
-#############################################################################
-
-class NameServerLocator(object):
- def __init__(self, identification=None):
- Pyro.core._checkInit() # init required
- self.identification=identification
-
- def sendSysCommand(self,request,host=None,port=None,trace=0,logerrors=1,bcaddr=None):
- try:
- # Try the 'first' name server.
- # Note that if no host is specified, a broadcast is used,
- # and that one is sent to both name servers in parallel.
- return self.__sendSysCommand(request, host, port, trace, logerrors, Pyro.constants.NSROLE_PRIMARY, bcaddr)
- except KeyboardInterrupt:
- raise
- except (socket.error, Pyro.errors.PyroError):
- if not port:
- # the 'first' name server failed, try the second
- try:
- result=self.__sendSysCommand(request, host, port, trace, logerrors, Pyro.constants.NSROLE_SECONDARY, bcaddr)
- # found the second!
- # switch config for first and second so that the second one (which we found) will now be tried first
- Pyro.config.PYRO_NS2_HOSTNAME, Pyro.config.PYRO_NS_HOSTNAME = Pyro.config.PYRO_NS_HOSTNAME, Pyro.config.PYRO_NS2_HOSTNAME
- Pyro.config.PYRO_NS2_PORT, Pyro.config.PYRO_NS_PORT = Pyro.config.PYRO_NS_PORT, Pyro.config.PYRO_NS2_PORT
- Pyro.config.PYRO_NS2_BC_PORT, Pyro.config.PYRO_NS_BC_PORT = Pyro.config.PYRO_NS_BC_PORT, Pyro.config.PYRO_NS2_BC_PORT
- Pyro.config.PYRO_NS2_BC_ADDR, Pyro.config.PYRO_NS_BC_ADDR = Pyro.config.PYRO_NS_BC_ADDR, Pyro.config.PYRO_NS2_BC_ADDR
- return result
- except (socket.error, Pyro.errors.PyroError):
- # Could not find using broadcast. Try the current host and localhost as well.
- # But only if there's no explicit host parameter given.
- if host:
- raise Pyro.errors.NamingError("could not find NameServer on host "+host)
- else:
- for host in (Pyro.protocol.getHostname(), "localhost"):
- if trace:
- print "Trying host",host
- Log.msg('NameServerLocator','Trying host',host)
- try:
- result=self.__sendSysCommand(request, host, port, trace, logerrors, Pyro.constants.NSROLE_PRIMARY)
- Pyro.config.PYRO_NS_HOSTNAME = host
- return result
- except Pyro.errors.ConnectionDeniedError:
- raise
- except (socket.error, Pyro.errors.PyroError),x:
- pass
- else:
- raise Pyro.errors.NamingError("could not find NameServer")
- else:
- raise
-
- def __sendSysCommand(self,request,host=None,port=None,trace=0,logerrors=1,role=Pyro.constants.NSROLE_PRIMARY,bcaddr=None):
- HPB={Pyro.constants.NSROLE_PRIMARY: (Pyro.config.PYRO_NS_HOSTNAME, Pyro.config.PYRO_NS_PORT, Pyro.config.PYRO_NS_BC_PORT, Pyro.config.PYRO_NS_BC_ADDR),
- Pyro.constants.NSROLE_SECONDARY: (Pyro.config.PYRO_NS2_HOSTNAME, Pyro.config.PYRO_NS2_PORT, Pyro.config.PYRO_NS2_BC_PORT, Pyro.config.PYRO_NS2_BC_ADDR) }
- if not host:
- host=HPB[role][0]
- if port:
- port1=port2=port
- else:
- if not host:
- # select the default broadcast ports
- port1 = HPB[Pyro.constants.NSROLE_PRIMARY][2]
- port2 = HPB[Pyro.constants.NSROLE_SECONDARY][2]
- else:
- # select the default port (normal)
- port = HPB[role][1]
- # We must discover the location of the name server.
- # Pyro's NS can answer to broadcast requests.
- try:
- if host:
- # use direct lookup with PYROLOC: mechanism, no broadcast
- if trace:
- print 'Locator: contacting Pyro Name Server...'
- uri=Pyro.core.PyroURI(host,Pyro.constants.NAMESERVER_NAME,port,'PYROLOC')
- prox=Pyro.core.getProxyForURI(uri)
- prox._setIdentification(self.identification)
- if request==NS_SYSCMD_LOCATION:
- prox.ping() # force resolving of PYROLOC: uri
- return prox.URI # return resolved uri
- elif request==NS_SYSCMD_SHUTDOWN:
- return prox._shutdown()
- else:
- raise ValueError("invalid command specified")
-
- # No host specified. Use broadcast mechanism
- if os.name=='java' and sys.version_info<(2,5):
- # jythons older than 2.5 don't have working broadcast
- msg="Skipping UDP broadcast (older jythons don't support this operation)"
- if trace:
- print msg
- raise Pyro.errors.PyroError(msg)
- if bcaddr:
- try:
- socket.gethostbyname(bcaddr)
- except socket.error:
- msg="invalid broadcast address '%s'" % bcaddr
- if trace:
- print msg
- raise ValueError(msg)
- destination1 = (bcaddr, port1)
- destination2 = (bcaddr, port2)
- else:
- destination1 = (Pyro.config.PYRO_NS_BC_ADDR or '', port1)
- destination2 = (Pyro.config.PYRO_NS2_BC_ADDR or '', port2)
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- if hasattr(socket,'SO_BROADCAST'):
- s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
-
- if trace:
- print 'Locator: searching Pyro Name Server...'
- try:
- bc_retries=Pyro.config.PYRO_BC_RETRIES
- if bc_retries<0:
- bc_retries=sys.maxint-1
- bc_retries = min(sys.maxint-1, bc_retries)
- for i in xrange(bc_retries+1):
- # send request to both Pyro NS (if running in paired mode)
- s.sendto(request, destination1)
- if destination2!=destination1:
- s.sendto(request, destination2)
- timeout=min(sys.maxint,Pyro.config.PYRO_BC_TIMEOUT)
- if timeout<0:
- timeout=None
- ins,outs,exs = Pyro.protocol.safe_select([s],[],[s],timeout)
- if s in ins:
- # return the info of the first NS that responded.
- reply, fromaddr = s.recvfrom(1000)
- return reply
- if trace and i')
- self.lock=Pyro.util.getLockObject()
- self.role=role
- self.otherNS=None
- self.ignoreShutdown=False
- if role in (Pyro.constants.NSROLE_PRIMARY, Pyro.constants.NSROLE_SECONDARY):
- # for paired mode with identification, we need to remember the ident string
- adapter=Pyro.protocol.getProtocolAdapter("PYRO")
- adapter.setIdentification(identification)
- self.identification=adapter.getIdentification() # grab the munged ident
- # create default groups
- self.createGroup(':'+'Pyro')
- self.createGroup(Pyro.config.PYRO_NS_DEFAULTGROUP)
- Log.msg("NameServer","Running in",
- {Pyro.constants.NSROLE_SINGLE:"single",
- Pyro.constants.NSROLE_PRIMARY:"primary",
- Pyro.constants.NSROLE_SECONDARY:"secondary"}[self.role],"mode" )
-
- def _initialResyncWithTwin(self, twinProxy):
- if twinProxy:
- try:
- Log.msg("NameServer","Initial resync with other NS at",twinProxy.URI.address,"port",twinProxy.URI.port)
- print "Initial Resync with other NS at",twinProxy.URI.address,"port",twinProxy.URI.port
- # keep old NS (self) registration
- oldNSreg=self.resolve(Pyro.constants.NAMESERVER_NAME)
- proxyForMe=NameServerProxy(self.getProxy().URI,noconnect=1)
- proxyForMe.adapter.setIdentification(self.identification,munge=False) # set pre-munged ident
- self.root=twinProxy._resync(proxyForMe)
- # reset self registration
- try:
- self.unregister(Pyro.constants.NAMESERVER_NAME)
- except:
- pass
- self.register(Pyro.constants.NAMESERVER_NAME,oldNSreg)
- self.otherNS=twinProxy
- Log.msg("NameServer","database sync complete.")
- print "Database synchronized."
- except Pyro.errors.NamingError,x:
- print x
- raise
-
- def _removeTwinNS(self):
- self.otherNS=None
-
- def register(self,name,URI):
- (origname,name)=name,self.validateName(name)
- URI=self.validateURI(URI)
- with self.lock:
- (group, name)=self.locateGrpAndName(name)
- if len(name or "")<1:
- raise Pyro.errors.NamingError('invalid name',origname)
- if isinstance(group,NameValue):
- raise Pyro.errors.NamingError('parent is no group', group.name)
- try:
- group.newleaf(name,URI)
- Log.msg('NameServer','registered',name,'with URI',str(URI))
- self._dosynccall("register",origname,URI)
- except KeyError:
- Log.msg('NameServer','name already exists:',name)
- raise Pyro.errors.NamingError('name already exists',name)
-
- def unregister(self,name):
- (origname,name)=name,self.validateName(name)
- with self.lock:
- (group, name)=self.locateGrpAndName(name)
- if len(name or "")<1:
- raise Pyro.errors.NamingError('invalid name',origname)
- try:
- group.cutleaf(name)
- Log.msg('NameServer','unregistered',name)
- self._dosynccall("unregister",origname)
- except KeyError:
- raise Pyro.errors.NamingError('name not found',name)
- except ValueError:
- Log.msg('NameServer','attempt to remove a group:',name)
- raise Pyro.errors.NamingError('is a group, not an object',name)
-
- def resolve(self,name):
- # not thread-locked: higher performance and not necessary.
- name=self.validateName(name)
- try:
- branch=self.getBranch(name)
- if isinstance(branch,NameValue):
- return branch.value
- else:
- Log.msg('NameServer','attempt to resolve groupname:',name)
- raise Pyro.errors.NamingError('attempt to resolve groupname',name)
- except KeyError:
- raise Pyro.errors.NamingError('name not found',name)
- except AttributeError:
- raise Pyro.errors.NamingError('group not found',name)
-
- def flatlist(self):
- # return a dump
- with self.lock:
- r=self.root.flatten()
- for i in xrange(len(r)):
- r[i]=(':'+r[i][0], r[i][1])
- return r
-
- def ping(self):
- # Just accept a remote invocation.
- # This method is used to check if NS is still running,
- # and also by the locator if a direct lookup is needed.
- pass
-
- # --- sync support (twin NS)
- def _resync(self, twinProxy):
- if self.role!=Pyro.constants.NSROLE_SINGLE:
- Log.msg("NameServer","resync requested from NS at",twinProxy.URI.address,"port",twinProxy.URI.port)
- print "Resync requested from NS at",twinProxy.URI.address,"port",twinProxy.URI.port
- self.otherNS=twinProxy
- with self.lock:
- return self._getSyncDump()
- else:
- Log.warn("NameServer","resync requested from",twinProxy.URI,"but not running in correct mode")
- raise Pyro.errors.NamingError("The (other) NS is not running in 'primary' or 'secondary' mode")
-
- # remotely called:
- def _synccall(self, method, *args):
- # temporarily disable the other NS
- oldOtherNS, self.otherNS = self.otherNS, None
- getattr(self, method) (*args)
- self.otherNS = oldOtherNS
-
- def resync(self):
- if self.role==Pyro.constants.NSROLE_SINGLE:
- raise Pyro.errors.NamingError("NS is not running in 'primary' or 'secondary' mode")
- if self.otherNS:
- try:
- self._initialResyncWithTwin(self.otherNS)
- return
- except Exception:
- pass
- raise Pyro.errors.NamingError("cannot resync: twin NS is unknown or unreachable")
-
- # local helper:
- def _dosynccall(self, method, *args):
- if self.role!=Pyro.constants.NSROLE_SINGLE and self.otherNS:
- try:
- self.otherNS._synccall(method, *args)
- except Exception,x:
- Log.warn("NameServer","ignored error in _synccall - but removing other NS",x)
- self.otherNS=None
-
- # --- hierarchical naming support
- def createGroup(self,groupname):
- groupname=self.validateName(groupname)
- if len(groupname)<2:
- raise Pyro.errors.NamingError('invalid groupname', groupname)
- with self.lock:
- (parent,name)=self.locateGrpAndName(groupname)
- if isinstance(parent,NameValue):
- raise Pyro.errors.NamingError('parent is no group', groupname)
- try:
- parent.newbranch(name)
- Log.msg('NameServer','created group',groupname)
- self._dosynccall("createGroup",groupname)
- except KeyError:
- raise Pyro.errors.NamingError('group already exists',name)
-
- def deleteGroup(self,groupname):
- groupname=self.validateName(groupname)
- if groupname==':':
- Log.msg('NameServer','attempt to deleteGroup root group')
- raise Pyro.errors.NamingError('not allowed to delete root group')
- with self.lock:
- (parent,name)=self.locateGrpAndName(groupname)
- try:
- parent.cutbranch(name)
- Log.msg('NameServer','deleted group',name)
- self._dosynccall("deleteGroup",groupname)
- except KeyError:
- raise Pyro.errors.NamingError('group not found',groupname)
- except ValueError:
- raise Pyro.errors.NamingError('is no group',groupname)
-
- def list(self,groupname):
- # not thread-locked: higher performance and not necessary.
- if not groupname:
- groupname=':'
- groupname=self.validateName(groupname)
- try:
- return self.getBranch(groupname).list()
- except KeyError:
- raise Pyro.errors.NamingError('group not found',groupname)
- except AttributeError:
- raise Pyro.errors.NamingError('is no group',groupname)
-
- # --- meta info support
- def setMeta(self, name, meta):
- name=self.validateName(name)
- try:
- branch=self.getBranch(name)
- branch.setMeta(meta)
- self._dosynccall("setMeta",name,meta)
- except KeyError:
- raise Pyro.errors.NamingError('name not found',name)
- except AttributeError:
- raise Pyro.errors.NamingError('group not found',name)
-
- def getMeta(self, name):
- name=self.validateName(name)
- try:
- branch=self.getBranch(name)
- return branch.getMeta()
- except KeyError:
- raise Pyro.errors.NamingError('name not found',name)
- except AttributeError:
- raise Pyro.errors.NamingError('group not found',name)
-
- def _setSystemMeta(self, name, meta):
- name=self.validateName(name)
- try:
- branch=self.getBranch(name)
- branch.setSystemMeta(meta)
- self._dosynccall("_setSystemMeta",name,meta)
- except KeyError:
- raise Pyro.errors.NamingError('name not found',name)
- except AttributeError:
- raise Pyro.errors.NamingError('group not found',name)
-
- def _getSystemMeta(self, name):
- name=self.validateName(name)
- try:
- branch=self.getBranch(name)
- return branch.getSystemMeta()
- except KeyError:
- raise Pyro.errors.NamingError('name not found',name)
- except AttributeError:
- raise Pyro.errors.NamingError('group not found',name)
-
- # --- shut down the server
- def _shutdown(self):
- if self.ignoreShutdown:
- Log.msg('NameServer','received shutdown request, but shutdown is denied')
- return 'Shutdown request denied'
- else:
- Log.msg('NameServer','received shutdown request, will shutdown shortly')
- self.getDaemon().shutdown()
- return "Will shut down shortly"
-
- # --- private methods follow
- def _getSyncDump(self):
- return self.root
-
- def locateGrpAndName(self,name):
- # ASSUME name is absolute (from root) (which is required here)
- idx=name.rfind('.')
- if idx>=0:
- # name is hierarchical
- grpname=name[:idx]
- name=name[idx+1:]
- try:
- return (self.getBranch(grpname), name)
- except KeyError:
- raise Pyro.errors.NamingError('(parent)group not found',grpname)
- else:
- # name is in root
- return (self.root, name[1:])
-
- def getBranch(self,name):
- # ASSUME name is absolute (from root) (which is required here)
- name=name[1:]
- if name:
- return reduce(lambda x,y: x[y], name.split('.'), self.root)
- else:
- return self.root
-
- def validateName(self,name):
- if name[0]==':':
- if ('' not in name.split('.')):
- for i in name:
- if ord(i)<33 or ord(i)>126 or i=='\\':
- raise Pyro.errors.NamingError('invalid character(s) in name',name)
- return name
- else:
- raise Pyro.errors.NamingError('invalid name',name)
- else:
- # name is not absolute. Make it absolute.
- return _expandName(name)
-
- def validateURI(self,URI):
- if isinstance(URI, Pyro.core.PyroURI):
- return URI
- try:
- return Pyro.core.PyroURI(URI)
- except:
- raise Pyro.errors.NamingError('invalid URI',URI)
-
- def publishURI(self, uri, verbose=0):
- # verbose is not used - always prints the uri.
- uri=str(uri)
- print 'URI is:',uri
- try:
- f=open(Pyro.config.PYRO_NS_URIFILE,'w')
- f.write(uri+'\n'); f.close()
- print 'URI written to:',Pyro.config.PYRO_NS_URIFILE
- Log.msg('NameServer','URI written to',Pyro.config.PYRO_NS_URIFILE)
- except:
- Log.warn('NameServer','Couldn\'t write URI to',Pyro.config.PYRO_NS_URIFILE)
-
-#############################################################################
-#
-# NamedTree data type. Used for the hierarchical name server.
-#
-#############################################################################
-
-class NameSpaceSystemMeta(object):
- def __init__(self, node, timestamp, owner):
- self.timestamp=timestamp
- self.owner=owner
- if isinstance(node, NamedTree):
- self.type=0 # tree
- else:
- self.type=1 # leaf
- def __str__(self):
- return "[type="+str(self.type)+" timestamp="+str(self.timestamp)+" owner="+str(self.owner)+"]"
-
-
-# All nodes in the namespace (groups, or namevalue pairs--leafs) have
-# a shared set of properties, most notably: meta information.
-class NameSpaceNode(object):
- def __init__(self, name, meta, owner):
- self.name=name
- self.systemMeta = NameSpaceSystemMeta(self, time.time(), owner)
- self.userMeta = meta
- def getMeta(self):
- return self.userMeta
- def getSystemMeta(self):
- return self.systemMeta
- def setMeta(self,meta):
- self.userMeta=meta
- def setSystemMeta(self,meta):
- if isinstance(meta, NameSpaceSystemMeta):
- self.systemMeta=meta
- else:
- raise TypeError("system meta info must be NameSpaceSystemMeta object")
-
-class NameValue(NameSpaceNode):
- def __init__(self, name, value=None, meta=None, owner=None):
- NameSpaceNode.__init__(self, name, meta, owner)
- self.value=value
-
-class NamedTree(NameSpaceNode):
- def __init__(self, name, meta=None, owner=None):
- NameSpaceNode.__init__(self, name, meta, owner)
- self.branches={}
- def newbranch(self,name):
- if name in self.branches.keys():
- raise KeyError,'name already exists'
- t = NamedTree(name)
- self.branches[name]=t
- return t
- def newleaf(self,name,value=None):
- if name in self.branches.keys():
- raise KeyError,'name already exists'
- l = NameValue(name,value)
- self.branches[name]=l
- return l
- def cutleaf(self,name):
- if isinstance(self.branches[name], NameValue):
- del self.branches[name]
- else:
- raise ValueError,'not a leaf'
- def cutbranch(self,name):
- if isinstance(self.branches[name], NamedTree):
- del self.branches[name]
- else:
- raise ValueError,'not a branch'
- def __getitem__(self,name):
- return self.branches[name]
- def list(self):
- l=[]
- for (k,v) in self.branches.items():
- if isinstance(v, NamedTree):
- l.append( (k,0) ) # tree
- elif isinstance(v, NameValue):
- l.append( (k,1) ) # leaf
- else:
- raise ValueError('corrupt tree')
- return l
- def flatten(self,prefix=''):
- flat=[]
- for (k,v) in self.branches.items():
- if isinstance(v, NameValue):
- flat.append( (prefix+k, v.value) )
- elif isinstance(v, NamedTree):
- flat.extend(v.flatten(prefix+k+'.'))
- return flat
-
-
-
-#############################################################################
-#
-# The Persistent Name Server (a Pyro Object).
-# This implementation uses the hierarchical file system to
-# store the groups (as directories) and objects (as files).
-#
-#############################################################################
-
-_PNS_META_SUFFIX=".ns_meta"
-
-class PersistentNameServer(NameServer):
- def __init__(self, dbdir=None, role=Pyro.constants.NSROLE_SINGLE, identification=None):
- self.dbroot=os.path.join(Pyro.config.PYRO_STORAGE,dbdir or 'Pyro_NS_database')
- self._initdb_1()
- try:
- NameServer.__init__(self, role=role, identification=identification)
- except Pyro.errors.NamingError:
- pass
- self._initdb_2()
-
- def _initdb_1(self):
- # root is not a NamedTree but a directory
- try:
- os.mkdir(self.dbroot)
- except OSError,x:
- if x.errno not in (errno.EEXIST, errno.EBUSY):
- raise
- def _initdb_2(self):
- # make sure that the 2 initial groups (Pyro and Default) exist
- try: self.createGroup(':'+'Pyro')
- except Pyro.errors.NamingError: pass
- try: self.createGroup(Pyro.config.PYRO_NS_DEFAULTGROUP)
- except Pyro.errors.NamingError: pass
-
- def getDBDir(self):
- return self.dbroot
-
- def _initialResyncWithTwin(self, twinProxy):
- if twinProxy:
- Log.msg("NameServer","Initial resync with other NS at",twinProxy.URI.address,"port",twinProxy.URI.port)
- # keep old NS (self) registration
- oldNSreg=self.resolve(Pyro.constants.NAMESERVER_NAME)
- proxyForMe=NameServerProxy(self.getProxy().URI,noconnect=1)
- proxyForMe.adapter.setIdentification(self.identification,munge=False) # set pre-munged ident
- syncdump=twinProxy._resync(proxyForMe)
- self.otherNS = None # temporarily disable twin NS ref
- # clear the old database
- Log.msg("NameServer","erasing old database",self.dbroot)
- shutil.rmtree(self.dbroot)
- self._initdb_1() # phase 2 (creation of default groups) is not needed here
- Log.msg("NameServer","store sync database")
- for group,smeta,umeta in syncdump[0]:
- try:
- if group!=':':
- dirnam = self.translate(group)
- os.mkdir(dirnam)
- if smeta:
- self._setSystemMeta(group,smeta)
- if umeta:
- self.setMeta(group,umeta)
- except EnvironmentError,x:
- Log.warn("NameServer","problem creating group",group,x)
- for name,uri,smeta,umeta in syncdump[1]:
- try:
- origname,name=name,self.validateName(name)
- fn=self.translate(name)
- open(fn,'w').write(uri+'\n')
- if smeta:
- self._setSystemMeta(name,smeta)
- if umeta:
- self.setMeta(name,umeta)
- except Pyro.errors.NamingError,x:
- Log.warn("NameServer","problem registering name",name,x)
- # reset registration of self
- try:
- self.unregister(Pyro.constants.NAMESERVER_NAME)
- except:
- pass
- self.register(Pyro.constants.NAMESERVER_NAME,oldNSreg)
- self.otherNS=twinProxy
- Log.msg("NameServer","database sync complete.")
- print "Database synchronized."
-
- def register(self,name,URI):
- origname,name=name,self.validateName(name)
- URI=self.validateURI(URI)
- fn=self.translate(name)
- with self.lock:
- if os.access(fn,os.R_OK):
- Log.msg('NameServer','name already exists:',name)
- raise Pyro.errors.NamingError('name already exists',name)
- try:
- open(fn,'w').write(str(URI)+'\n')
- self._dosynccall("register",origname,URI)
- Log.msg('NameServer','registered',name,'with URI',str(URI))
- except IOError,x:
- if x.errno==errno.ENOENT:
- raise Pyro.errors.NamingError('(parent)group not found')
- elif x.errno==errno.ENOTDIR:
- raise Pyro.errors.NamingError('parent is no group')
- else:
- raise Pyro.errors.NamingError(str(x))
-
- def unregister(self,name):
- origname,name=name,self.validateName(name)
- fn=self.translate(name)
- with self.lock:
- try:
- os.remove(fn)
- self._dosynccall("unregister",origname)
- Log.msg('NameServer','unregistered',name)
- except OSError,x:
- if x.errno==errno.ENOENT:
- raise Pyro.errors.NamingError('name not found',name)
- elif x.errno==errno.EISDIR:
- Log.msg('NameServer','attempt to remove a group:',name)
- raise Pyro.errors.NamingError('is a group, not an object',name)
- else:
- raise Pyro.errors.NamingError(str(x))
-
- def resolve(self,name):
- # not thread-locked: higher performance and not necessary.
- name=self.validateName(name)
- fn = self.translate(name)
- try:
- return Pyro.core.PyroURI(open(fn).read())
- except IOError,x:
- if x.errno==errno.ENOENT:
- raise Pyro.errors.NamingError('name not found',name)
- elif x.errno==errno.EISDIR:
- Log.msg('NameServer','attempt to resolve groupname:',name)
- raise Pyro.errors.NamingError('attempt to resolve groupname',name)
- else:
- raise Pyro.errors.NamingError(str(x))
-
- def flatlist(self):
- dbroot=self.translate(':')
- with self.lock:
- flat=[]
- for f in self._filelist(dbroot,dbroot):
- f=self._unescapefilename(f)
- flat.append((f, self.resolve(f)))
- return flat
-
- # --- hierarchical naming support
- def createGroup(self,groupname):
- groupname=self.validateName(groupname)
- dirnam = self.translate(groupname)
- with self.lock:
- try:
- os.mkdir(dirnam)
- self._dosynccall("createGroup",groupname)
- Log.msg('NameServer','created group',groupname)
- except OSError,x:
- if x.errno in (errno.EEXIST, errno.EBUSY):
- raise Pyro.errors.NamingError('group already exists',groupname)
- elif x.errno == errno.ENOENT:
- raise Pyro.errors.NamingError('(parent)group not found')
- else:
- raise Pyro.errors.NamingError(str(x))
-
- def deleteGroup(self,groupname):
- groupname=self.validateName(groupname)
- if groupname==':':
- Log.msg('NameServer','attempt to deleteGroup root group')
- raise Pyro.errors.NamingError('not allowed to delete root group')
- dirnam = self.translate(groupname)
- with self.lock:
- if not os.access(dirnam,os.R_OK):
- raise Pyro.errors.NamingError('group not found',groupname)
- try:
- shutil.rmtree(dirnam)
- self._dosynccall("deleteGroup",groupname)
- Log.msg('NameServer','deleted group',groupname)
- except OSError,x:
- if x.errno==errno.ENOENT:
- raise Pyro.errors.NamingError('group not found',groupname)
- elif x.errno==errno.ENOTDIR:
- raise Pyro.errors.NamingError('is no group',groupname)
- else:
- raise Pyro.errors.NamingError(str(x))
-
- def list(self,groupname):
- if not groupname:
- groupname=':'
- groupname=self.validateName(groupname)
- dirnam=self.translate(groupname)
- with self.lock:
- if os.access(dirnam,os.R_OK):
- if os.path.isfile(dirnam):
- raise Pyro.errors.NamingError('is no group',groupname)
- else:
- l = dircache.listdir(dirnam)
- entries = []
- for e in l:
- if e.endswith(_PNS_META_SUFFIX):
- continue
- else:
- objname=self._unescapefilename(e)
- if os.path.isdir(os.path.join(dirnam,e)):
- entries.append((objname,0)) # dir has code 0
- else:
- entries.append((objname,1)) # leaf has code 1
- return entries
- raise Pyro.errors.NamingError('group not found',groupname)
-
-
- # --- private methods follow
-
- def _getSyncDump(self):
- def visitor(arg,dirname,names):
- shortdirname=dirname[len(self.dbroot)+len(os.path.sep):]
- if shortdirname.endswith(_PNS_META_SUFFIX):
- return
- name = ':'+shortdirname.replace(os.path.sep,'.')
- smeta=self._getSystemMeta(name)
- umeta=self.getMeta(name)
- arg[0].append( (name, smeta,umeta) )
- for n in names:
- if n.endswith(_PNS_META_SUFFIX):
- continue
- n=os.path.join(dirname,n)
- if os.path.isfile(n):
- v=open(n,'r').read().strip()
- name=':'+(n[len(self.dbroot)+len(os.path.sep):]).replace(os.path.sep,'.')
- smeta=self._getSystemMeta(name)
- umeta=self.getMeta(name)
- arg[1].append( (name, v, smeta,umeta) )
- result=( [], [] ) # (groups, names)
- os.path.walk(self.dbroot, visitor, result)
- return result
-
- def _unescapefilename(self, name):
- parts=name.split('\\')
- res=[parts[0]]
- myappend=res.append
- del parts[0]
- for item in parts:
- if item[1:2]:
- try:
- myappend(chr(int(item[:2], 16)) + item[2:])
- except ValueError:
- myappend('\\' + item)
- else:
- myappend('\\' + item)
- return "".join(res)
- def _escapefilename(self,name):
- name=name.replace(os.path.sep,'\\%02x' % ord(os.path.sep)) # escape path separators in the name
- name=name.replace(':','\\%02x' % ord(':')) # also get rid of any ':' 's
- return name
-
- # recursive file listing, output is like "find -type f"
- # but using NS group separator chars
- def _filelist(self,root,path):
- try:
- (filez,dirz) = Pyro.util.listdir(path)
- except OSError:
- raise Pyro.errors.NamingError('group not found')
-
- files=[]
- for f in filez:
- if f.endswith(_PNS_META_SUFFIX):
- continue
- elif path==root:
- files.append(':'+f)
- else:
- p=path[len(root):].replace(os.sep, '.')
- files.append(':'+p+'.'+f)
- for d in dirz:
- files.extend(self._filelist(root,os.path.join(path,d)))
- return files
-
- # Pyro NS name to filesystem path translation
- def translate(self,name):
- if name[0]==':':
- name=name[1:]
- name=self._escapefilename(name)
- args=[self.dbroot]+name.split('.')
- return os.path.join(*args)
-
- def getBranch(self,name):
- tr = self.translate(name)
- if os.path.exists(tr):
- return PersistentNameSpaceNode(filename=tr+_PNS_META_SUFFIX)
- else:
- raise Pyro.errors.NamingError('name not found',name)
-
-# XXX this is a bit of a hack. Only metadata is stored here,
-# and it's only used from getBranch, which in turn is only used
-# from the set/get meta functions.
-class PersistentNameSpaceNode(NameSpaceNode):
- def __init__(self, filename, name=None, meta=None, owner=None):
- NameSpaceNode.__init__(self, name, meta, owner)
- self.filename=filename
- if not name:
- # init from file
- try:
- (sysmeta, usermeta)=Pyro.util.getPickle().load(open(self.filename,"rb"))
- NameSpaceNode.setSystemMeta(self, sysmeta)
- NameSpaceNode.setMeta(self, usermeta)
- except Exception:
- pass # just use empty meta...
- else:
- self._writeToFile()
- def setMeta(self,meta):
- NameSpaceNode.setMeta(self, meta)
- self._writeToFile()
- def setSystemMeta(self,meta):
- NameSpaceNode.setSystemMeta(self, meta)
- self._writeToFile()
- def _writeToFile(self):
- Pyro.util.getPickle().dump( (self.getSystemMeta(), self.getMeta()) , open(self.filename,"wb"), Pyro.config.PYRO_PICKLE_FORMAT)
-
-
-
-#############################################################################
-#
-# The broadcast server which listens to broadcast requests of clients who
-# want to discover our location, or send other system commands.
-#
-#############################################################################
-
-
-class BroadcastServer(SocketServer.UDPServer):
-
- nameServerURI = '' # the Pyro URI of the Name Server
-
- def __init__(self, addr, bcRequestHandler,norange=0):
- if norange:
- portrange=1
- else:
- portrange=Pyro.config.PYRO_PORT_RANGE
- (location,port)=addr
- for port in range(port, port+portrange):
- try:
- SocketServer.UDPServer.__init__(self, (location,port), bcRequestHandler)
- return # got it!
- except socket.error:
- continue # try the next port in the list
- raise # port range exhausted... re-raise the socket error.
-
- def server_activate(self):
- self.requestValidator=lambda x,y: 1 # default: accept all
- self.shutdown=0 # should the server loop stop?
- self.preferredTimeOut=3.0 # preferred timeout for the server loop
-
- def setNS_URI(self,URI):
- self.nameServerURI=str(URI)
- def setRequestValidator(self, validator):
- self.requestValidator=validator
- def keepRunning(self, keep):
- self.ignoreShutdown = keep # ignore shutdown requests (i.e. keep running?)
-
- def bcCallback(self,ins):
- for i in ins:
- i.handle_request()
-
- def verify_request(self, req, addr):
- return self.requestValidator(req, addr)
-
- def getServerSocket(self):
- return self.socket
-
-
-class bcRequestHandler(SocketServer.BaseRequestHandler):
- def handle(self):
- Log.msg('BroadcastServer','incoming request from',str(self.client_address[0]))
- # request is a simple string
- cmd = self.request[0]
- if cmd==NS_SYSCMD_LOCATION:
- # somebody wants to know our location, give them our URI
- self.request[1].sendto(self.server.nameServerURI,self.client_address)
- elif cmd==NS_SYSCMD_SHUTDOWN:
- # we should die!?
- if self.server.ignoreShutdown:
- Log.msg('BroadcastServer','Shutdown ignored.')
- self.request[1].sendto('Shutdown request denied',self.client_address)
- else:
- Log.msg('BroadcastServer','Shutdown received.')
- print 'BroadcastServer received shutdown request... will shutdown shortly...'
- self.request[1].sendto('Will shut down shortly',self.client_address)
- self.server.shutdown=1
- else:
- Log.warn('BroadcastServer','Invalid command ignored:',cmd)
-
-# The default BC request validator... accepts everything
-# You must subclass this for your own validators
-class BCReqValidator(object):
- def __call__(self, req, addr):
- (cmd,self.sock)=req
- self.addr=addr
- if cmd==NS_SYSCMD_LOCATION:
- return self.acceptLocationCmd()
- elif cmd==NS_SYSCMD_SHUTDOWN:
- return self.acceptShutdownCmd()
- else:
- return 0
- def reply(self,msg):
- self.sock.sendto(msg,self.addr)
- def acceptLocationCmd(self):
- return 1
- def acceptShutdownCmd(self):
- return 1
-
-
-#############################################################################
-
-class NameServerStarter(object):
- def __init__(self, identification=None):
- Pyro.core.initServer()
- self.persistent=False
- self.identification=identification
- self.started = Pyro.util.getEventObject()
- def start(self, *args, **kwargs): # see _start for allowed arguments
- kwargs["startloop"]=1
- self._start( *args, **kwargs )
- def initialize(self, *args, **kwargs): # see _start for allowed arguments
- kwargs["startloop"]=0
- self._start( *args, **kwargs )
- def getServerSockets(self):
- result=self.daemon.getServerSockets()
- if self.bcserver:
- result.append(self.bcserver.getServerSocket())
- return result
- def waitUntilStarted(self,timeout=None):
- self.started.wait(timeout)
- return self.started.isSet()
- def _start(self,hostname=None, nsport=None, bcport=0, keep=0, persistent=0, dbdir=None, Guards=(None,None), allowmultiple=0, dontlookupother=0, verbose=0, startloop=1, role=(Pyro.constants.NSROLE_SINGLE,None), bcaddr=None, nobroadcast=False ):
- if nsport is None:
- if role[0]==Pyro.constants.NSROLE_SECONDARY:
- nsport=Pyro.config.PYRO_NS2_PORT
- else:
- nsport=Pyro.config.PYRO_NS_PORT
- if not bcport:
- if role[0]==Pyro.constants.NSROLE_SECONDARY:
- bcport=Pyro.config.PYRO_NS2_BC_PORT
- else:
- bcport=Pyro.config.PYRO_NS_BC_PORT
- if not bcaddr:
- if role[0]==Pyro.constants.NSROLE_SECONDARY:
- bcaddr=Pyro.config.PYRO_NS2_BC_ADDR
- else:
- bcaddr=Pyro.config.PYRO_NS_BC_ADDR
- otherNSuri=None
-
- try:
- if not dontlookupother:
- retries=Pyro.config.PYRO_BC_RETRIES
- timeout=Pyro.config.PYRO_BC_TIMEOUT
- Pyro.config.PYRO_BC_RETRIES=1
- Pyro.config.PYRO_BC_TIMEOUT=0.7
- try:
- otherNSuri=NameServerLocator().detectNS(bcaddr=bcaddr)
- except Pyro.errors.PyroError:
- pass
- else:
- print 'The Name Server appears to be already running on this segment.'
- print '(host:',otherNSuri.address,' port:',otherNSuri.port,')'
- if allowmultiple:
- print 'WARNING: starting another Name Server in the same segment!'
- elif role[0] in (Pyro.constants.NSROLE_PRIMARY, Pyro.constants.NSROLE_SECONDARY):
- pass
- else:
- msg='Cannot start multiple Name Servers in the same network segment.'
- print msg
- raise Pyro.errors.NamingError(msg)
-
- if role[0]!=Pyro.constants.NSROLE_SINGLE:
- print "Locating twin NameServer."
- # Do this before starting our own daemon, otherwise possible deadlock!
- # This step is done here to make pretty certain that one of both name
- # servers finds the other either *now*, or else later on (below).
- # If we omit this step here, deadlock may occur on the attempt below!
- otherNS = self.locateTwinNS(role, otherNSuri)
- if otherNS:
- print "Found twin NameServer at",otherNS.URI.address,"port",otherNS.URI.port
- role=(role[0], otherNS)
-
- Pyro.config.PYRO_BC_RETRIES=retries
- Pyro.config.PYRO_BC_TIMEOUT=timeout
- daemon = Pyro.core.Daemon(host=hostname, port=nsport,norange=1)
- except Pyro.errors.DaemonError,x:
- print 'The Name Server appears to be already running on this host.'
- print '(or somebody else occupies our port,',nsport,')'
- if hostname:
- print 'It could also be that the address \''+hostname+'\' is not correct.'
- print 'Name Server was not started!'
- raise
-
- if self.identification:
- daemon.setAllowedIdentifications([self.identification])
- print 'Requiring connection authentication.'
- if Guards[0]:
- daemon.setNewConnectionValidator(Guards[0])
-
- if persistent:
- ns=PersistentNameServer(dbdir,role=role[0], identification=self.identification)
- daemon.useNameServer(ns)
- NS_URI=daemon.connectPersistent(ns,Pyro.constants.NAMESERVER_NAME)
- self.persistent=True
- else:
- ns=NameServer(role=role[0], identification=self.identification)
- daemon.useNameServer(ns)
- NS_URI=daemon.connect(ns,Pyro.constants.NAMESERVER_NAME)
- self.persistent=False
-
- self.bcserver=None
- if nobroadcast:
- Log.msg('NS daemon','Not starting broadcast server due to config option')
- if verbose:
- print "Not starting broadcast server."
- else:
- # Try to start the broadcast server. Binding on the magic ""
- # address should work, but on some systems (windows) it doesn't.
- # Therefore we first try "", if that fails, try "".
- # If any address override is in place, use that ofcourse.
- notStartedError=""
- msg = daemon.validateHostnameAndIP()
- if msg:
- Log.msg('NS daemon','Not starting broadcast server because of issue with daemon IP address.')
- if verbose:
- print "Not starting broadcast server."
- else:
- if bcaddr:
- broadcastAddresses=[bcaddr]
- else:
- broadcastAddresses=["", "", "255.255.255.255"]
- for bc_bind in broadcastAddresses:
- try:
- self.bcserver = BroadcastServer((bc_bind,bcport),bcRequestHandler,norange=1)
- break
- except socket.error,x:
- notStartedError += str(x)+" "
- if not self.bcserver:
- print 'Cannot start broadcast server. Is somebody else occupying our broadcast port?'
- print 'The error(s) were:',notStartedError
- print '\nName Server was not started!'
- raise Pyro.errors.NamingError("cannot start broadcast server")
-
- if Guards[1]:
- self.bcserver.setRequestValidator(Guards[1])
- self.bcserver.keepRunning(keep)
-
- if keep:
- ns.ignoreShutdown=True
- if verbose:
- print 'Will ignore shutdown requests.'
- else:
- ns.ignoreShutdown=False
- if verbose:
- print 'Will accept shutdown requests.'
-
- print 'Name server listening on:',daemon.sock.getsockname()
- if self.bcserver:
- print 'Broadcast server listening on:',self.bcserver.socket.getsockname()
- message = daemon.validateHostnameAndIP()
- if message:
- print "\nWARNING:",message,"\n"
-
- if Guards[0] or Guards[1]:
- if verbose:
- print 'Using security plugins:'
- if Guards[0]:
- clazz=Guards[0].__class__
- if verbose:
- print ' NS new conn validator =',clazz.__name__,'from', clazz.__module__, ' ['+sys.modules.get(clazz.__module__).__file__+']'
- elif verbose: print ' default NS new conn validator'
- if Guards[1]:
- clazz=Guards[1].__class__
- if verbose:
- print ' BC request validator =',clazz.__name__,'from', clazz.__module__, ' ['+sys.modules.get(clazz.__module__).__file__+']'
- elif verbose: print ' default BC request validator'
-
- ns.publishURI(NS_URI,verbose)
-
- if self.bcserver:
- self.bcserver.setNS_URI(NS_URI)
- Log.msg('NS daemon','This is the Pyro Name Server.')
- if persistent:
- Log.msg('NS daemon','Persistent mode, database is in',ns.getDBDir())
- if verbose:
- print 'Persistent mode, database is in',ns.getDBDir()
- Log.msg('NS daemon','Starting on',daemon.hostname,'port', daemon.port)
- if self.bcserver:
- Log.msg('NS daemon','Broadcast server on port',bcport)
- else:
- Log.msg('NS daemon','No Broadcast server')
-
- if role[0]==Pyro.constants.NSROLE_PRIMARY:
- print "Primary",
- elif role[0]==Pyro.constants.NSROLE_SECONDARY:
- print "Secondary",
- print 'Name Server started.'
-
- # If we run in primary or secondary mode, resynchronize
- # the NS database with the other name server.
- # Try again to look it up if it wasn't found before.
-
- if role[0]!=Pyro.constants.NSROLE_SINGLE:
- if not otherNS:
- # try again to contact the other name server
- print "Locating twin NameServer again."
- otherNS = self.locateTwinNS(role, otherNSuri)
- role=(role[0], otherNS)
- if otherNS:
- # finally got it, resync!
- print "Found twin NameServer at",otherNS.URI.address,"port",otherNS.URI.port
- ns._initialResyncWithTwin(otherNS)
-
- self.started.set() # signal that we've started (for external threads)
-
- self.daemon=daemon
- if os.name!="java":
- daemon.setTimeout(20)
-
- if startloop:
- # I use a timeout here otherwise you can't break gracefully on Windoze
- try:
- if self.bcserver:
- daemon.requestLoop(lambda s=self: not s.bcserver.shutdown,
- self.bcserver.preferredTimeOut,[self.bcserver],self.bcserver.bcCallback)
- if self.bcserver.shutdown:
- self.shutdown(ns)
- else:
- daemon.requestLoop()
- except KeyboardInterrupt:
- Log.warn('NS daemon','shutdown on user break signal')
- print 'Shutting down on user break signal.'
- self.shutdown(ns)
- except:
- try:
- (exc_type, exc_value, exc_trb) = sys.exc_info()
- out = ''.join(traceback.format_exception(exc_type, exc_value, exc_trb)[-5:])
- Log.error('NS daemon', 'Unexpected exception, type',exc_type,
- '\n--- partial traceback of this exception follows:\n',
- out,'\n--- end of traceback')
- print '*** Exception occured!!! Partial traceback:'
- print out
- print '*** Resuming operations...'
- finally:
- del exc_type, exc_value, exc_trb # delete frame refs to allow proper GC
-
- Log.msg('NS daemon','Shut down gracefully.')
- print 'Name Server gracefully stopped.'
-
-
- def locateTwinNS(self, role, otherNSuri):
- try:
- retries=Pyro.config.PYRO_BC_RETRIES
- timeout=Pyro.config.PYRO_BC_TIMEOUT
- Pyro.config.PYRO_BC_RETRIES=1
- Pyro.config.PYRO_BC_TIMEOUT=1
- try:
- if role[1]:
- (host,port)=(role[1]+':').split(':')[:2]
- if len(port)==0:
- port=None
- else:
- port=int(port)
- otherNS=NameServerLocator(self.identification).getNS(host,port,trace=0)
- else:
- if otherNSuri:
- otherNS=NameServerLocator(self.identification).getNS(host=otherNSuri.address, port=otherNSuri.port, trace=0)
- else:
- if role[0]==Pyro.constants.NSROLE_PRIMARY:
- port=Pyro.config.PYRO_NS2_BC_PORT
- else:
- port=Pyro.config.PYRO_NS_BC_PORT
- otherNS=NameServerLocator(self.identification).getNS(host=None,port=port,trace=0)
- Log.msg("NameServerStarted","Found twin NS at",otherNS.URI)
- return otherNS
- except Pyro.errors.ConnectionDeniedError,x:
- raise
- except Exception,x:
- print "WARNING: Cannot find twin NS yet: ",x
- Log.msg("NameServerStarter","Cannot find twin NS yet:",x)
- return None
- finally:
- Pyro.config.PYRO_BC_RETRIES=retries
- Pyro.config.PYRO_BC_TIMEOUT=timeout
-
-
- def handleRequests(self,timeout=None):
- # this method must be called from a custom event loop
- if self.bcserver:
- self.daemon.handleRequests(timeout, [self.bcserver], self.bcserver.bcCallback)
- if self.bcserver.shutdown:
- self.shutdown()
- else:
- self.daemon.handleRequests(timeout)
-
- def shutdown(self, ns=None):
- if ns:
- # internal shutdown call with specified NS object
- daemon=ns.getDaemon()
- else:
- # custom shutdown call w/o specified NS object, use stored instance
- daemon=self.daemon
- ns=daemon.getNameServer()
- del self.daemon
- ns._removeTwinNS()
- if not self.persistent:
- daemon.disconnect(ns) # clean up nicely only if not running in persistent mode
- if self.bcserver:
- self.bcserver.shutdown=1
- daemon.shutdown()
-
-def main(argv):
- Args = Pyro.util.ArgParser()
- Args.parse(argv,'hkmrvxn:p:b:c:d:s:i:1:2:')
- if Args.hasOpt('h'):
- print 'Usage: pyro-ns [-h] [-k] [-m] [-r] [-x] [-n hostname] [-p port] [-b bcport] [-c bcaddr]'
- print ' [-i identification] [-d [databaselocation]] [-s securitymodule]'
- print ' [-1 [host:port]] [-2 [host:port]] [-v]'
- print ' where -p = NS server port (0 for auto)'
- print ' -n = non-default hostname to bind on'
- print ' -b = NS broadcast port'
- print ' -c = NS broadcast address override'
- print ' -x = do not start a broadcast listener'
- print ' -m = allow multiple instances in network segment'
- print ' -r = don\'t attempt to find already existing nameservers'
- print ' -k = keep running- do not respond to shutdown requests'
- print ' -d = use persistent database, provide optional storage directory'
- print ' -s = use given python module with security plugins'
- print ' -i = specify the required authentication ID'
- print ' -1 = runs this NS as primary, opt. specify where secondary is'
- print ' -2 = runs this NS as secondary, opt. specify where primary is'
- print ' -v = verbose output'
- print ' -h = print this help'
- raise SystemExit
- host = Args.getOpt('n',None)
- port = Args.getOpt('p',None)
- if port:
- port=int(port)
- bcport = int(Args.getOpt('b',0))
- bcaddr = Args.getOpt('c',None)
- nobroadcast = Args.hasOpt('x')
-
- role=Pyro.constants.NSROLE_SINGLE
- roleArgs=None
- if Args.hasOpt('1'):
- role=Pyro.constants.NSROLE_PRIMARY
- roleArgs=Args.getOpt('1')
- if Args.hasOpt('2'):
- role=Pyro.constants.NSROLE_SECONDARY
- roleArgs=Args.getOpt('2')
-
- ident = Args.getOpt('i',None)
- verbose = Args.hasOpt('v')
- keep=Args.hasOpt('k')
- allowmultiple=Args.hasOpt('m')
- dontlookupother=Args.hasOpt('r')
-
- try:
- dbdir = Args.getOpt('d')
- persistent = 1
- except KeyError:
- persistent = 0
- dbdir = None
-
- try:
- secmod = __import__(Args.getOpt('s'),locals(),globals())
- Guards = (secmod.NSGuard(), secmod.BCGuard())
- except ImportError,x:
- print 'Error loading security module:',x
- print '(is it in your python import path?)'
- raise SystemExit
- except KeyError:
- secmod = None
- Guards = (None,None)
-
- Args.printIgnored()
- if Args.args:
- print 'Ignored arguments:', ' '.join(Args.args)
-
- print '*** Pyro Name Server ***'
- if ident:
- starter=NameServerStarter(identification=ident)
- else:
- starter=NameServerStarter()
-
- try:
- starter.start(host,port,bcport,keep,persistent,dbdir,Guards,allowmultiple,dontlookupother,verbose,role=(role,roleArgs),bcaddr=bcaddr,nobroadcast=nobroadcast)
- except (Pyro.errors.NamingError, Pyro.errors.DaemonError),x:
- # this error has already been printed, just exit.
- pass
-
-
-# allow easy starting of the NS by using python -m
-if __name__=="__main__":
- main(sys.argv[1:])
diff --git a/modules/Pyro/nsc.py b/modules/Pyro/nsc.py
deleted file mode 100644
index 759e0f66..00000000
--- a/modules/Pyro/nsc.py
+++ /dev/null
@@ -1,231 +0,0 @@
-#############################################################################
-#
-# Pyro Name Server Control Tool
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import Pyro.constants
-import Pyro.util
-import Pyro.core
-import Pyro.errors
-from Pyro.naming import NameServerLocator
-from Pyro.errors import NamingError, ConnectionDeniedError, PyroError
-from Pyro.protocol import getHostname
-
-class PyroNSControl(object):
- def args(self, args):
- self.Args = Pyro.util.ArgParser()
- self.Args.parse(args,'h:p:c:i:')
- self.Args.printIgnored()
- if self.Args.args:
- cmd = self.Args.args[0]
- del self.Args.args[0]
- return cmd
- return None
-
- def connect(self, sysCmd=None):
- host = self.Args.getOpt('h',None)
- bcaddr = self.Args.getOpt('c',None)
- port = int(self.Args.getOpt('p', 0))
- ident = self.Args.getOpt('i',None)
- if port==0:
- port=None
-
- locator = NameServerLocator(identification=ident)
- if not sysCmd:
- self.NS = locator.getNS(host,port,1,bcaddr=bcaddr)
- print 'NS is at',self.NS.URI.address,'('+(getHostname(self.NS.URI.address) or '??')+') port',self.NS.URI.port
- self.NS._setIdentification(ident)
- else:
- result = locator.sendSysCommand(sysCmd,host,port,1,bcaddr=bcaddr)
- print 'Result from system command',sysCmd,':',result
-
- def handleError(self, msg, exc):
- print "## %s: " % msg,
- if isinstance(exc.args, (list, tuple)):
- print "; ".join(exc.args[:-1]),
- else:
- print exc.args,
- print " ##"
-
- def ping(self):
- self.connect()
- self.NS.ping()
- print 'NS is up and running!'
-
- def listall(self):
- self.connect()
- flat=self.NS.flatlist()
- flat.sort()
- print '-------------- START DATABASE'
- for (name,val) in flat:
- print name,' --> ',str(val)
- print '-------------- END'
-
- def list(self):
- self.connect()
- if not self.Args.args:
- # list the current group
- print self.NS.fullName(''),'-->',
- self.printList(self.NS.list(None))
- else:
- # list all subpaths
- for n in self.Args.args:
- print self.NS.fullName(n),' -->',
- try:
- self.printList(self.NS.list(n))
- except NamingError,x:
- self.handleError("can't list", x)
-
- def printList(self,list):
- list.sort()
- print '(',
- for (n,t) in list:
- if t==0:
- print '['+n+']',
- elif t==1:
- print n,
- print ')'
-
- def resolve(self):
- self.connect()
- if not self.Args.args:
- print 'No arguments, nothing to resolve'
- else:
- for n in self.Args.args:
- print n,' -->',
- try:
- print self.NS.resolve(n)
- except NamingError,x:
- self.handleError("can't resolve", x)
-
- def register(self):
- self.connect()
- try:
- self.NS.register(self.Args.args[0],self.Args.args[1])
- uri=Pyro.core.PyroURI(self.Args.args[1])
- print 'registered',self.Args.args[0],' --> ',uri
- except NamingError,x:
- self.handleError('Error from NS',x)
- except IndexError:
- print 'Register needs 2 args: name URI'
-
- def remove(self):
- self.connect()
- for n in self.Args.args:
- try:
- self.NS.unregister(n)
- print n,'unregistered.'
- except NamingError,x:
- self.handleError("Can't unregister", x)
-
- def creategroup(self):
- self.connect()
- for n in self.Args.args:
- try:
- self.NS.createGroup(n)
- print n,'created.'
- except NamingError,x:
- self.handleError("Can't create group '"+n+"'",x)
-
- def deletegroup(self):
- self.connect()
- for n in self.Args.args:
- try:
- self.NS.deleteGroup(n)
- print n,'deleted.'
- except NamingError,x:
- self.handleError("Can't delete group '"+n+"'",x)
-
- def showmeta(self):
- self.connect()
- if not self.Args.args:
- print 'No arguments, nothing to show meta of'
- for n in self.Args.args:
- try:
- print "META INFO OF",self.NS.fullName(n)
- print "system meta info :",self.NS._getSystemMeta(n)
- print " user meta info :",self.NS.getMeta(n)
- except NamingError,x:
- self.handleError("Can't get metadata",x)
-
- def setmeta(self):
- self.connect()
- try:
- if len(self.Args.args)>2:
- raise IndexError
- name=self.Args.args[0]
- meta=self.Args.args[1]
- self.NS.setMeta(name,meta)
- print "Metadata of",name,"set."
- except IndexError:
- print 'Setmeta needs 2 args: name metadata'
-
- def resync(self):
- self.connect()
- self.NS.resync()
- print 'resync done'
-
- def shutdown(self):
- self.connect(sysCmd='shutdown')
-
-
-def usage():
- print 'PyroNS control program - usage is as follows;'
- print '>> pyro-nsc [-h host] [-p port] [-c bcaddr] [-i identification] command [args...]'
- print 'where command is one of: ping, list, listall, resolve, register, remove, creategroup, deletegroup, showmeta, setmeta, resync, shutdown'
- print ' host is the host where the NS should be contacted'
- print ' port is the non-standard Pyro NS broadcast port'
- print ' (if host is specified, it is the Pyro port instead)'
- print ' bcaddr allows you to override the broadcast address'
- print ' identification is the authentication ID to connect to the server'
- print ' args... depend on the command.'
- raise SystemExit
-
-def main(argv):
-
- ctrl = PyroNSControl()
- cmd=ctrl.args(argv)
-
- if not cmd:
- usage()
-
- try:
- # nice construct to map commands to the member function to call
- call= { 'ping': ctrl.ping,
- 'list': ctrl.list,
- 'listall': ctrl.listall,
- 'resolve': ctrl.resolve,
- 'register': ctrl.register,
- 'remove': ctrl.remove,
- 'creategroup': ctrl.creategroup,
- 'deletegroup': ctrl.deletegroup,
- 'shutdown': ctrl.shutdown,
- 'showmeta': ctrl.showmeta,
- 'setmeta': ctrl.setmeta,
- 'resync': ctrl.resync } [cmd]
-
- except KeyError:
- usage()
- try:
- Pyro.core.initClient(banner=0)
- call()
- except ConnectionDeniedError,arg:
- print 'Could not connect to the server:',arg
- if str(arg)==Pyro.constants.deniedReasons[Pyro.constants.DENIED_SECURITY]:
- print "Supply correct authentication ID?"
- except PyroError,arg:
- print 'There is a problem:',arg
- except Exception,x:
- print 'CAUGHT ERROR, printing Pyro traceback >>>>>>',x
- print ''.join(Pyro.util.getPyroTraceback(x))
- print '<<<<<<< end of Pyro traceback'
-
-
-# allow easy usage with python -m
-if __name__=="__main__":
- import sys
- main(sys.argv[1:])
diff --git a/modules/Pyro/protocol.py b/modules/Pyro/protocol.py
deleted file mode 100644
index 416d2595..00000000
--- a/modules/Pyro/protocol.py
+++ /dev/null
@@ -1,1290 +0,0 @@
-#############################################################################
-#
-# Pyro Protocol Adapters
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-from __future__ import with_statement
-import socket, struct, os, time, sys, hmac, types, random, errno, select
-import imp, marshal, new, __builtin__
-try:
- import hashlib
- md5=hashlib.md5
-except ImportError:
- import md5
- md5=md5.md5
-import Pyro.constants, Pyro.util
-
-from Pyro.errors import *
-from Pyro.errors import _InternalNoModuleError
-pickle = Pyro.util.getPickle()
-Log = Pyro.util.Log
-
-if Pyro.util.supports_multithreading():
- from threading import Thread,currentThread
- _has_threading = 1
-else:
- _has_threading = 0
-
-if Pyro.util.supports_compression():
- import zlib
- _has_compression = 1
-else:
- _has_compression = 0
-
-
-try:
- from M2Crypto import SSL
- from M2Crypto.SSL import SSLError
- if _has_threading:
- import M2Crypto
- M2Crypto.threading.init()
-except ImportError:
- class SSLError(Exception): pass
-
-ERRNO_RETRIES=[errno.EINTR, errno.EAGAIN, errno.EWOULDBLOCK, errno.EINPROGRESS]
-if hasattr(errno, "WSAEINTR"):
- ERRNO_RETRIES.append(errno.WSAEINTR)
-if hasattr(errno, "WSAEWOULDBLOCK"):
- ERRNO_RETRIES.append(errno.WSAEWOULDBLOCK)
-if hasattr(errno, "WSAEINPROGRESS"):
- ERRNO_RETRIES.append(errno.WSAEINPROGRESS)
-
-#------ Get the hostname (possibly of other machines) (returns None on error)
-def getHostname(ip=None):
- try:
- if ip:
- (hn,alias,ips) = socket.gethostbyaddr(ip)
- return hn
- else:
- return socket.gethostname()
- except socket.error:
- return None
-
-#------ Get IP address (return None on error)
-def getIPAddress(host=None):
- try:
- return socket.gethostbyname(host or getHostname())
- except socket.error:
- return None
-
-
-#------ Socket helper functions for sending and receiving data correctly.
-
-
-# process optional timeout on socket.
-# notice the check for M2Crypto SSL sockets: if there's data pending,
-# a select on them will fail. So we avoid calling select in that case.
-def _sock_timeout_send(sock, timeout):
- if timeout and (not hasattr(sock,'pending') or sock.pending()==0):
- r,w,e=safe_select([],[sock],[],timeout)
- if not w:
- raise TimeoutError('connection timeout sending')
-
-def _sock_timeout_recv(sock, timeout):
- if timeout and (not hasattr(sock,'pending') or sock.pending()==0):
- r,w,e=safe_select([sock],[],[],timeout)
- if not r:
- raise TimeoutError('connection timeout receiving')
-
-# Receive a precise number of bytes from a socket. Raises the
-# ConnectionClosedError if that number of bytes was not available.
-# (the connection has probably been closed then).
-# Never will this function return an empty message (if size>0).
-# We need this because 'recv' isn't guaranteed to return all desired
-# bytes in one call, for instance, when network load is high.
-# Use a list of all chunks and join at the end: faster!
-# Handle EINTR states (interrupted system call) by just retrying.
-def sock_recvmsg(sock, size, timeout=0):
- while True:
- try:
- return _recv_msg(sock,size,timeout)
- except socket.timeout:
- raise TimeoutError("connection timeout receiving")
- except socket.error,x:
- if x.args[0] == errno.EINTR or (hasattr(errno, 'WSAEINTR') and x.args[0] == errno.WSAEINTR):
- # interrupted system call, just retry
- continue
- raise ConnectionClosedError('connection lost: %s' % x)
- except SSLError,x:
- raise ConnectionClosedError('connection lost: %s' % x)
-
-# select the optimal recv() implementation
-if hasattr(socket,"MSG_WAITALL") and not Pyro.config.PYRO_BROKEN_MSGWAITALL:
- def _recv_msg(sock,size,timeout):
- _sock_timeout_recv(sock,timeout)
- try:
- chunk=sock.recv(size, socket.MSG_WAITALL) # receive all data in one call
- except TypeError:
- # M2Crypto sock.recv() doesn't support MSG_WAITALL parameter
- return __recv_msg_compat(sock,size,timeout)
- else:
- if len(chunk)!=size:
- err=ConnectionClosedError('connection lost')
- err.partialMsg=chunk # store the message that was received until now
- raise err
- return chunk
-else:
- def _recv_msg(sock,size,timeout):
- _sock_timeout_recv(sock, timeout)
- return __recv_msg_compat(sock,size,timeout)
-
-def __recv_msg_compat(sock,size,timeout): # compatibility implementation for non-MSG_WAITALL / M2Crypto
- msglen=0
- msglist=[]
- # Receive chunks of max. 60kb size:
- # (rather arbitrary limit, but it avoids memory/buffer problems on certain OSes -- VAX/VMS, Windows)
- while msglen", "exec")
- else:
- code = marshal.loads(module[8:])
-
- importer=None
- try:
- loaded = 0
- # XXX probably want maxtries here...
- while not loaded:
- # install a custom importer to intercept any extra needed modules
- # when executing the module code just obtained from the server
- imp.acquire_lock()
- importer = agent_import(__builtin__.__import__)
- __builtin__.__import__ = importer
- imp.release_lock()
-
- try:
- exec code in mod.__dict__
- loaded = 1
- except ImportError:
- mname = importer.name
- if importer is not None:
- __builtin__.__import__ = importer.orig_import
- importer = None
-
- # XXX probably want maxrecursion here...
- self._retrieveCode(mname, level+1)
-
- finally:
- if importer is not None:
- __builtin__.__import__ = importer.orig_import
- finally:
- imp.release_lock() # release the global import lock
-
-
- def _remoteInvocationMobileCode(self, method, flags, *args):
- # special trimmed-down version for mobile code methods (no locking etc)
- body=pickle.dumps((self.URI.objectID,method,flags,args),Pyro.config.PYRO_PICKLE_FORMAT)
- sock_sendmsg(self.conn.sock, self.createMsg(body), self.timeout)
- ver,answer,pflags = self.receiveMsg(self.conn,1)
- if answer is None:
- raise ProtocolError('incorrect answer received')
- answer=pickle.loads(answer)
- if isinstance(answer,PyroExceptionCapsule):
- if isinstance(answer.excObj,_InternalNoModuleError):
- # server couldn't load module, supply it
- return self.processMissingModuleError(answer.excObj, method, flags, args)
- else:
- # we have an encapsulated exception, raise it again.
- answer.raiseEx()
- return answer
-
- def remoteInvocation(self, method, flags, *args):
- with self.lock:
- # only 1 thread at a time may use this connection to call a remote method
- try:
- self.__pyrocallbusy=True
- return self._remoteInvocation(method, flags, *args)
- self.__pyrocallbusy=False
- finally:
- if self.__pyrocallbusy:
- # the call has been aborted before completion, close the connection
- # to avoid corrupt transfers on the next call
- self.release()
-
- def _remoteInvocation(self, method, flags, *args):
- if 'conn' not in self.__dict__.keys():
- Log.error('PYROAdapter','no connection available in remoteinvocation')
- raise ProtocolError('no connection available in remoteinvocation')
- if method in self.onewayMethods:
- flags |= Pyro.constants.RIF_Oneway
- body=pickle.dumps((self.URI.objectID,method,flags,args),Pyro.config.PYRO_PICKLE_FORMAT)
- try:
- sock_sendmsg(self.conn.sock, self.createMsg(body), self.timeout)
- except (socket.error, ProtocolError, KeyboardInterrupt):
- # Communication error during write. To avoid corrupt transfers, we close the connection.
- # Otherwise we might receive the previous reply as a result of a new methodcall!
- # Special case for keyboardinterrupt: people pressing ^C to abort the client
- # may be catching the keyboardinterrupt in their code. We should probably be on the
- # safe side and release the proxy connection in this case too, because they might
- # be reusing the proxy object after catching the exception...
- self.release()
- raise
- else:
- if flags & Pyro.constants.RIF_Oneway:
- self.__pyrocallbusy=False
- return None # no answer required, return immediately
- ver,answer,pflags = self.receiveMsg(self.conn,1) # read the server's response, send no further replies
- self.__pyrocallbusy=False
- if answer is None:
- raise ProtocolError('incorrect answer received')
-
- # Try to get the answer from the server.
- # If there are import problems, try to get those modules from
- # the server too (if mobile code is enabled).
- if not Pyro.config.PYRO_MOBILE_CODE:
- answer = pickle.loads(answer)
- else:
- importer=None
- try:
- imp.acquire_lock()
- loaded = 0
- # XXX maxtries here...
- while not loaded:
- # install a custom importer to intercept any extra needed modules
- # when unpickling the answer just obtained from the server
- imp.acquire_lock()
- importer = agent_import(__builtin__.__import__)
- __builtin__.__import__ = importer
- imp.release_lock()
-
- try:
- answer = pickle.loads(answer)
- loaded = 1
- except ImportError:
- mname = importer.name
- if importer is not None:
- __builtin__.__import__ = importer.orig_import
- importer = None
- self._retrieveCode(mname, 0)
-
- finally:
- if importer is not None:
- __builtin__.__import__ = importer.orig_import
- imp.release_lock()
-
- if isinstance(answer,PyroExceptionCapsule):
- if isinstance(answer.excObj,_InternalNoModuleError):
- # server couldn't load the module, send it
- return self.processMissingModuleError(answer.excObj, method, flags, args)
- else:
- # we have an encapsulated exception, raise it again.
- answer.raiseEx()
- return answer
-
- def processMissingModuleError(self, errorinfo, method, flags, args):
- # server couldn't load module, supply it
- # XXX this code is ugly. and duplicated in remote_retrieve_code in core.py
- Log.msg('PYROAdapter',"server can't load module: "+errorinfo.modulename)
- try:
- importmodule=new.module('-agent-import-')
- mname=errorinfo.modulename
- # not used: fromlist=errorinfo.fromlist
- try:
- exec 'import '+mname in importmodule.__dict__
- except ImportError:
- Log.error('PYROAdapter','Server wanted a non-existing module:',mname)
- raise PyroError('Server wanted a non-existing module',mname)
- m=eval('importmodule.'+mname)
- bytecode=None
- if hasattr(m,"_PYRO_bytecode"):
- # use the bytecode that was put there earlier,
- # this avoids recompiles of the source .py if we don't have .pyc bytecode available
- bytecode=m._PYRO_bytecode
- else:
- # try to load the module's compiled source, or the real .py source if that fails.
- # note that the source code (.py) is opened with universal newline mode
- if not hasattr(m,"__file__"):
- raise PyroError("cannot read module source code",mname)
- (filebase,ext)=os.path.splitext(m.__file__)
- if ext.startswith(".PY"):
- exts = ( (".PYO","rb"), (".PYC","rb"), (".PY","rU") ) # uppercase
- else:
- exts = ( (".pyo","rb"), (".pyc","rb"), (".py","rU") ) # lowercase
- for ext,mode in exts:
- try:
- bytecode=open(filebase+ext, mode).read()
- break
- except EnvironmentError:
- pass
- if bytecode:
- Log.msg('PYROAdapter',"sending module to server: "+mname)
- self._remoteInvocationMobileCode("remote_supply_code",0,mname, bytecode, self.conn.sock.getsockname())
- # retry the method invocation
- return self._remoteInvocation(* (method, flags)+args) # use the non-locking call
- Log.error("PYROAdapter","cannot read module source code for module:", mname)
- raise PyroError("cannot read module source code",mname)
- finally:
- del importmodule
-
- # (private) receives a socket message, returns: (protocolver, message, protocolflags)
- def receiveMsg(self,conn,noReply=0):
- try:
- msg=sock_recvmsg(conn.sock, self.headerSize, self.timeout)
- (hid, ver, hsiz, bsiz, pflags, crc) = struct.unpack(self.headerFmt,msg)
- # store in the connection what pickle method this is
- if pflags&PFLG_XMLPICKLE_GNOSIS:
- conn.pflags|=PFLG_XMLPICKLE_GNOSIS
- if ver!=self.version:
- msg='incompatible protocol version'
- Log.error('PYROAdapter',msg)
- if not noReply:
- # try to report error to client, but most likely the connection will terminate:
- self.returnException(conn, ProtocolError(msg))
- raise ProtocolError(msg)
- if hid!=self.headerID or hsiz!=self.headerSize:
- msg='invalid header'
- Log.error('PYROAdapter',msg)
- Log.error('PYROAdapter','INVALID HEADER DETAILS: ',conn,( hid, ver, hsiz, bsiz,pflags))
- if not noReply:
- # try to report error to client, but most likely the connection will terminate:
- self.returnException(conn, ProtocolError(msg), shutdown=1)
- raise ProtocolError(msg)
- body=sock_recvmsg(conn.sock, bsiz, self.timeout)
- if pflags&PFLG_CHECKSUM:
- if _has_compression:
- if crc!=zlib.adler32(body):
- msg='checksum error'
- Log.error('PYROAdapter',msg)
- if not noReply:
- self.returnException(conn, ProtocolError(msg))
- raise ProtocolError(msg)
- else:
- raise ProtocolError('cannot perform checksum')
- if pflags&PFLG_COMPRESSED:
- if _has_compression:
- body=zlib.decompress(body)
- else:
- # We received a compressed message but cannot decompress.
- # Is this really a server error? We now throw an exception on the server...
- raise ProtocolError('compression not supported')
- return ver,body,pflags
- except (socket.error, ProtocolError, KeyboardInterrupt),x:
- # Communication error during read. To avoid corrupt transfers, we close the connection.
- # Otherwise we might receive the previous reply as a result of a new methodcall!
- # Special case for keyboardinterrupt: people pressing ^C to abort the client
- # may be catching the keyboardinterrupt in their code. We should probably be on the
- # safe side and release the proxy connection in this case too, because they might
- # be reusing the proxy object after catching the exception...
- self.release()
- raise
-
- def _unpickleRequest(self, pflags, body):
- if pflags&PFLG_XMLPICKLE_GNOSIS:
- if Pyro.config.PYRO_XML_PICKLE=='gnosis':
- return pickle.loads(body)
- else:
- return Pyro.util.getXMLPickle('gnosis').loads(body)
- elif Pyro.config.PYRO_XML_PICKLE:
- Log.error('PYROAdapter','xml pickle required, got other pickle')
- raise ProtocolError('xml pickle required, got other pickle')
- else:
- return pickle.loads(body)
-
- def handleInvocation(self,daemon,conn):
- ver,body,pflags = self.receiveMsg(conn)
- if not body:
- # something went wrong even before receiving the full message body
- return
- if ver!=self.version:
- Log.error('PYROAdapter','incompatible protocol version')
- self.returnException(conn, ProtocolError('incompatible protocol version'))
- return
-
- # Unpickle the request, which is a tuple:
- # (object ID, method name, flags, (arg1,arg2,...))
- importer=fromlist=None
- try:
- if Pyro.config.PYRO_MOBILE_CODE:
- # install a custom importer to intercept any extra needed modules
- # when unpickling the request just obtained from the client
- try:
- imp.acquire_lock()
- importer=agent_import(__builtin__.__import__)
- __builtin__.__import__=importer
- req=self._unpickleRequest(pflags, body)
- finally:
- __builtin__.__import__=importer.orig_import
- imp.release_lock()
- else:
- # no mobile code; just unpickle the stuff without a custom importer.
- req=self._unpickleRequest(pflags, body)
-
- if type(req)!=tuple or len(req)!=4 or type(req[3])!=tuple:
- # sanity check failed
- raise ProtocolError("invalid request data format")
-
- except ImportError,x:
- if Pyro.config.PYRO_MOBILE_CODE:
- # return a special exception that will be processed by client;
- # it will call the internal 'remote_supply_code' member
- if importer:
- modname=importer.name
- fromlist=importer.fromlist
- else:
- modname = x.args[0][16:]
- fromlist=None
- self.returnException(conn, _InternalNoModuleError(modname,fromlist),0) # don't shutdown!
- else:
- Log.error('PYROAdapter','code problem with incoming object: '+str(x))
- self.returnException(conn, NoModuleError(* x.args))
- return
-
- try:
- # find the object in the implementation database of our daemon
- o=daemon.getLocalObject(req[0])
- except (KeyError, TypeError) ,x:
- Log.warn('PYROAdapter','Invocation to unknown object ignored:',x)
- self.returnException(conn, ProtocolError('unknown object ID'))
- return
- else:
- # Do the invocation. We are already running in our own thread.
- if req[2]&Pyro.constants.RIF_Oneway and Pyro.config.PYRO_ONEWAY_THREADED and daemon.threaded:
- # received a oneway call, run this in its own thread.
- thread=Thread(target=self._handleInvocation2, args=(daemon,req,pflags,conn,o,True))
- thread.setDaemon(1) # thread must exit at program termination.
- thread.localStorage=LocalStorage() # set local storage for the new thread
- thread.start()
- else:
- # not oneway or not in threaded mode, just do the invocation synchronously
- self._handleInvocation2(daemon,req,pflags,conn,o,False)
-
- def _handleInvocation2(self, daemon, req, pflags, conn, obj, mustInitTLS=False):
- if mustInitTLS:
- daemon.initTLS(daemon.getLocalStorage())
- try:
- flags=req[2]
- importer=None
- if not Pyro.config.PYRO_MOBILE_CODE:
- res = obj.Pyro_dyncall(req[1],flags,req[3]) # (method,flags,args)
- else:
- try:
- # install a custom importer to intercept any extra needed modules
- # when executing the remote method. (using the data passed in by
- # the client may trigger additional imports)
- imp.acquire_lock()
- importer=agent_import(__builtin__.__import__)
- __builtin__.__import__=importer
- res = obj.Pyro_dyncall(req[1],flags,req[3]) # (method,flags,args)
- finally:
- __builtin__.__import__=importer.orig_import
- imp.release_lock()
-
- if flags&Pyro.constants.RIF_Oneway:
- return # no result, return immediately
- # reply the result to the caller
- if pflags&PFLG_XMLPICKLE_GNOSIS:
- replyflags=PFLG_XMLPICKLE_GNOSIS
- if Pyro.config.PYRO_XML_PICKLE=='gnosis':
- body=pickle.dumps(res,Pyro.config.PYRO_PICKLE_FORMAT)
- else:
- body=Pyro.util.getXMLPickle('gnosis').dumps(res,Pyro.config.PYRO_PICKLE_FORMAT)
- else:
- replyflags=0
- body=pickle.dumps(res,Pyro.config.PYRO_PICKLE_FORMAT)
- sock_sendmsg(conn.sock, self.createMsg(body,replyflags),self.timeout)
- except ImportError,ix:
- if Pyro.config.PYRO_MOBILE_CODE:
- # Return a special exception that will be processed by client;
- # it will call the internal 'remote_supply_code' member.
- # We have to use this seemingly complex way to signal the client
- # to supply us some code, but it is only a proxy! We can't *call* it!
- if importer:
- # grab the import info from our importer
- name=importer.name
- fromlist=importer.fromlist
- else:
- # XXX the importerror sometimes doesn't contain the package :-(
- name=ix.args[0][16:]
- fromlist=None
- Log.msg('PYROAdapter','failed to import',name)
- self.returnException(conn, _InternalNoModuleError(name,fromlist),0) # don't shutdown!
- else:
- Log.error('PYROAdapter','code problem with incoming object: '+str(ix))
- self.returnException(conn, NoModuleError(* ix.args))
- except Exception:
- # Handle the exception. Pass in if it was a oneway call,
- # those calls don't need any response to be sent.
- daemon.handleError(conn, bool(flags&Pyro.constants.RIF_Oneway))
-
- def returnException(self, conn, exc, shutdown=1, args=None):
- # return an encapsulated exception to the client
- if conn.pflags&PFLG_XMLPICKLE_GNOSIS:
- pic=Pyro.util.getXMLPickle('gnosis')
- else:
- pic=pickle
- try:
- body=pic.dumps(PyroExceptionCapsule(exc,args),Pyro.config.PYRO_PICKLE_FORMAT)
- except Exception,x:
- # hmm, pickling the exception failed... pickle the string instead
- body=pic.dumps(PyroExceptionCapsule(PyroError(str(x)),args),Pyro.config.PYRO_PICKLE_FORMAT)
- sock_sendmsg(conn.sock, self.createMsg(body),self.timeout)
- if shutdown:
- conn.close()
-
- def handleConnection(self, conn, tcpserver):
- # Server-side connection stuff. Use auth code from tcpserver's validator.
- try:
- # Validate the connection source (host) immediately,
- # if it's ok, send authentication challenge, and read identification data to validate.
- (ok,reasonCode) = tcpserver.newConnValidator.acceptHost(tcpserver,conn)
- if ok:
- challenge=tcpserver.newConnValidator.createAuthChallenge(tcpserver,conn)
- if len(challenge)!=self.AUTH_CHALLENGE_SIZE:
- raise ValueError("Auth challenge must be exactly "+`self.AUTH_CHALLENGE_SIZE`+" bytes")
- sock_sendmsg(conn.sock, self.createMsg(challenge),self.timeout)
- ver,body,pflags = self.receiveMsg(conn)
- # only process the message if it makes a bit of sense
- if ver==self.version and body.startswith(self.connectMSG):
- token=body[len(self.connectMSG):]
- (ok,reasonCode) = tcpserver.newConnValidator.acceptIdentification(tcpserver,conn,token,challenge)
- if ok:
- self.sendAccept(conn)
- conn.connected=1
- return 1
- else:
- self.sendDeny(conn,reasonCode)
- else:
- self.sendDeny(conn,reasonCode)
- return 0
- except ProtocolError:
- # ignore the message if it caused protocol errors
- return 0
-
-# import wrapper class to help with importing remote modules
-class agent_import(object):
- def __init__(self, orig_import):
- self.orig_import=orig_import
- def __call__(self,name,iglobals={},ilocals={},fromlist=None, *rest, **krest):
- if os.name=="java":
- # workaround for odd Jython bug, iglobals and ilocals may not exist in this scope...(?!)
- iglobals=vars().get("iglobals",{})
- ilocals=vars().get("ilocals",{})
- # save the import details:
- self.name=name # note: this must be a str object
- self.fromlist=fromlist
- return self.orig_import(name,iglobals,ilocals,fromlist, *rest, **krest)
-
-#
-# The SSL adapter that handles SSL connections instead of regular sockets.
-#
-class PYROSSLAdapter(PYROAdapter):
- def __init__(self):
- PYROAdapter.__init__(self)
- try:
- from M2Crypto import SSL
- except ImportError:
- raise ProtocolError('SSL not available')
-
- self.ctx = SSL.Context('sslv23')
- if Pyro.config.PYROSSL_KEY:
- keyfile = os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_KEY)
- else:
- keyfile = None
- self.ctx.load_cert(os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_CERT),
- keyfile)
- self.ctx.load_client_ca(os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_CA_CERT))
- self.ctx.load_verify_info(os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_CA_CERT))
- self.ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert,10)
- self.ctx.set_allow_unknown_ca(1)
- Log.msg('PYROSSLAdapter','SSL Context initialized')
-
- def setTimeout(self, timeout):
- PYROAdapter.setTimeout(self, timeout)
-
- def bindToURI(self,URI):
- if URI.protocol not in ('PYROSSL','PYROLOCSSL'):
- Log.error('PYROSSLAdapter','incompatible protocol in URI:',URI.protocol)
- raise ProtocolError('incompatible protocol in URI')
- with self.lock: # only 1 thread at a time can bind the URI
- try:
- self.URI=URI
- sock = SSL.Connection(self.ctx,socket.socket(socket.AF_INET, socket.SOCK_STREAM))
- if not Pyro.config.PYROSSL_POSTCONNCHECK:
- sock.postConnectionCheck=None
- _connect_socket(sock, URI.address, URI.port, self.timeout)
- conn=TCPConnection(sock, sock.getpeername())
- # receive the authentication challenge string, and use that to build the actual identification string.
- authChallenge=self.recvAuthChallenge(conn)
- # reply with our ident token, generated from the ident passphrase and the challenge
- msg = self._sendConnect(sock,self.newConnValidator.createAuthToken(self.ident, authChallenge, conn.addr, self.URI, None) )
- if msg==self.acceptMSG:
- self.conn=conn
- self.conn.connected=1
- Log.msg('PYROSSLAdapter','connected to',str(URI))
- if URI.protocol=='PYROLOCSSL':
- self.resolvePYROLOC_URI("PYROSSL") # updates self.URI
- elif msg[:len(self.denyMSG)]==self.denyMSG:
- try:
- raise ConnectionDeniedError(Pyro.constants.deniedReasons[int(msg[-1])])
- except (KeyError,ValueError):
- raise ConnectionDeniedError('invalid response')
- except socket.error:
- Log.msg('PYROSSLAdapter','connection failed to URI',str(URI))
- raise ProtocolError('connection failed')
-
- def _sendConnect(self, sock, ident):
- return PYROAdapter._sendConnect(self, sock, ident)
-
-
-def getProtocolAdapter(protocol):
- if protocol in ('PYRO', 'PYROLOC'):
- return PYROAdapter()
- elif protocol in ('PYROSSL', 'PYROLOCSSL'):
- return PYROSSLAdapter()
- else:
- Log.error('getProtocolAdapter','unsupported protocol:',protocol)
- raise ProtocolError('unsupported protocol')
-
-
-#-------- TCPConnection object for TCPServer class
-class TCPConnection(object):
- def __init__(self, sock, addr):
- self.sock = sock
- set_sock_keepalive(self.sock) # enable tcp/ip keepalive on this socket
- self.addr = addr
- self.connected=0 # connected?
- self.pflags=0 # protocol flags
- def __del__(self):
- self.close()
- def fileno(self):
- return self.sock.fileno()
- def close(self):
- #self.sock.makefile().flush()
- self.sock.close()
- self.connected=0
- def shutdown(self):
- #self.sock.makefile().flush()
- self.sock.shutdown(2) # no further send/receives
- def __str__(self):
- return 'TCPConnection with '+str(self.addr)+' connected='+str(self.connected)
-
-#-------- The New Connection Validators:
-#-------- DefaultConnValidator checks max number of connections & identification
-#-------- and ident check is done using hmac-md5 secure hash of passphrase+challenge.
-#-------- Contains client- & server-side auth code.
-class DefaultConnValidator(object):
- def __init__(self):
- self.setAllowedIdentifications(None) # default=accept all (None means all!)
- def acceptHost(self,daemon,connection):
- if len(daemon.connections)>=Pyro.config.PYRO_MAXCONNECTIONS:
- Log.msg('DefaultConnValidator','Too many open connections, closing',connection,'#conns=',len(daemon.connections))
- return (0, Pyro.constants.DENIED_SERVERTOOBUSY)
- return (1,0)
- def acceptIdentification(self, daemon, connection, token, challenge):
- if "all" in self.allowedIDs:
- return (1,0)
- for authid in self.allowedIDs[:]:
- if self.createAuthToken(authid, challenge, connection.addr, None, daemon) == token:
- return (1,0)
- Log.warn('DefaultConnValidator','connect authentication failed on conn ',connection)
- return (0,Pyro.constants.DENIED_SECURITY)
- def createAuthToken(self, authid, challenge, peeraddr, URI, daemon):
- # Called from both client and server, is used to be able to validate the token.
- # client: URI & peeraddr provided, daemon is None
- # server: URI is None, peeraddr and daemon provided.
- # Return hmac-md5 secure hash of our authentication phrase & the challenge.
- return hmac.new(challenge, authid).digest()
- def createAuthChallenge(self, tcpserver, conn):
- # Server-side only, when new connection comes in.
- # Challenge is secure hash of: server IP, process ID, timestamp, random value
- # (NOTE: MUST RETURN EXACTLY AUTH_CHALLENGE_SIZE(=16) BYTES!)
- try:
- pid=os.getpid()
- except:
- pid=id(self) # at least jython has no getpid()
- string = '%s-%d-%.20f-%.20f' %(str(getIPAddress()), pid, time.time(), random.random())
- return md5(string).digest()
- def mungeIdent(self, ident):
- # munge the identification string into something else that's
- # not easily guessed or recognised, like the md5 hash:
- return md5(ident).digest()
- def setAllowedIdentifications(self, ids):
- if ids is not None:
- if type(ids) in (types.TupleType, types.ListType):
- self.allowedIDs=map(self.mungeIdent, ids) # don't store ids themselves
- else:
- raise TypeError("ids must be a list")
- else:
- self.allowedIDs=["all"] # trick: allow all incoming authentications.
-
-
-#-------- basic SSL connection validator, a specialized default validator.
-class BasicSSLValidator(DefaultConnValidator):
- def __init__(self):
- DefaultConnValidator.__init__(self)
- def acceptHost(self,daemon,connection):
- (ok,code) = DefaultConnValidator.acceptHost(self, daemon, connection)
- if ok:
- peercert=connection.sock.get_peer_cert()
- return self.checkCertificate(peercert)
- return (ok,code)
- def checkCertificate(self,cert):
- # do something interesting with the cert here, in a subclass :)
- if cert is None:
- return (0,Pyro.constants.DENIED_SECURITY)
- return (1,0)
-
-
-
-#-------- Helper class for local storage.
-class LocalStorage(object):
- def __init__(self):
- self.caller=None
-
-#-------- TCPServer base class
-
-
-class TCPServer(object):
- def __init__(self, port, host='', threaded=_has_threading,prtcol='PYRO'):
- self._ssl_server = 0
- self.connections = [] # connection threads
- self.initTLS=lambda tls: None # default do-nothing func
- if host:
- socket.gethostbyname(host) # validate hostname
- try:
- if prtcol=='PYROSSL':
- try:
- from M2Crypto import SSL
- except ImportError:
- raise ProtocolError('SSL not available')
- try:
- self.ctx = SSL.Context('sslv23')
- if Pyro.config.PYROSSL_KEY:
- keyfile = os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_KEY)
- else:
- keyfile = None
- self.ctx.load_cert(os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_CERT),
- keyfile)
- self.ctx.load_client_ca(os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_CA_CERT))
- self.ctx.load_verify_info(os.path.join(Pyro.config.PYROSSL_CERTDIR, Pyro.config.PYROSSL_CA_CERT))
- self.ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert,10)
- self.ctx.set_allow_unknown_ca(1)
- self._ssl_server = 1
- Log.msg('TCPServer','SSL Context initialized')
- except:
- Log.warn('TCPServer','SSL Context could not be initialized !!!')
- self.setNewConnectionValidator(BasicSSLValidator())
- else:
- self.setNewConnectionValidator(DefaultConnValidator())
-
- # create server socket for new connections
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- set_reuse_addr(self.sock)
- set_sock_no_inherit(self.sock)
- self.sock.bind((host,port))
- self.sock.listen(Pyro.config.PYRO_TCP_LISTEN_BACKLOG)
- if self._ssl_server:
- self.sock = SSL.Connection(self.ctx,self.sock) # wrap server socket as SSL socket
- # rest of members
- self.threaded = threaded
- self.mustShutdown=0 # global shutdown
- self.localStorage=LocalStorage() # TLS for systems that don't have threads
- return
- except socket.error,msg:
- raise ProtocolError(msg)
- Log.msg('TCPServer','initialized')
-
- def __del__(self):
- self.closedown(nolog=1)
-
- def setInitTLS(self, initTLS):
- if not callable(initTLS):
- raise TypeError("initTLS must be callable object")
- self.initTLS=initTLS
- # if in single thread mode, (re-)init the TLS right away.
- if not Pyro.config.PYRO_MULTITHREADED:
- self.initTLS(self.localStorage)
-
- def closedown(self, nolog=0):
- # explicit closedown request
- if len(self.connections)>0:
- if not nolog:
- Log.warn('TCPServer','Shutting down but there are still',len(self.connections),'active connections')
- for c in self.connections[:]:
- if isinstance(c,TCPConnection):
- c.close()
- if isinstance(c,Thread):
- c.join()
- self.connections=[]
- if hasattr(self,'sock'):
- self.sock.close()
- del self.sock
-
- def setNewConnectionValidator(self,validator):
- if not isinstance(validator, DefaultConnValidator):
- raise TypeError("validator must be specialization of DefaultConnValidator")
- self.newConnValidator=validator
- def getNewConnectionValidator(self):
- return self.newConnValidator
-
- def connectionHandler(self, conn):
- # Handle the connection and all requests that arrive on it.
- # This is only called in multithreading mode.
- self.initTLS(self.getLocalStorage())
- try:
- if self.getAdapter().handleConnection(conn, self):
- Log.msg('TCPServer','new connection ',conn, ' #conns=',len(self.connections))
- while not self.mustShutdown:
- try:
- if not conn.connected:
- # connection has been closed in the meantime!
- raise ConnectionClosedError()
- self.handleInvocation(conn)
- except ConnectionClosedError:
- # client went away. Exit immediately
- self.removeConnection(conn)
- return
- except (PyroExceptionCapsule, Exception):
- self.handleError(conn)
- else:
- # log entry has already been written by newConnValidator
- self.removeConnection(conn)
- finally:
- # exiting thread.
- self._removeFromConnectionList(None)
-
- def _removeFromConnectionList(self, obj):
- if self.threaded and currentThread:
- obj=currentThread()
- try:
- self.connections.remove(obj)
- except ValueError:
- pass
-
-
- # this is the preferred way of dealing with the request loop.
- def requestLoop(self, condition=lambda:1, timeout=3, others=[], callback=None):
- while condition() and not self.mustShutdown:
- self.handleRequests(timeout,others,callback)
-
- def handleRequests(self, timeout=None, others=[], callback=None):
- if others and not callback:
- raise ProtocolError('callback required')
- if self.threaded:
- self._handleRequest_Threaded(timeout,others,callback)
- else:
- self._handleRequest_NoThreads(timeout,others,callback)
-
- def _handleRequest_NoThreads(self,timeout,others,callback):
- # self.connections is used to keep track of TCPConnections
- socklist = self.connections+[self.sock]+others
- ins,outs,exs = safe_select(socklist,[],[],timeout)
- if self.sock in ins:
- # it was the server socket, new incoming connection
- ins.remove(self.sock)
- if self._ssl_server:
- try:
- csock, addr = self.sock.accept()
- #if not Pyro.config.PYROSSL_POSTCONNCHECK:
- # csock.postConnectionCheck=None
- except SSL.SSLError,error:
- Log.warn('TCPServer','SSL error: '+str(error))
- return
- else:
- csock, addr = self.sock.accept()
-
- conn=TCPConnection(csock,addr)
- if self.getAdapter().handleConnection(conn, self):
- Log.msg('TCPServer','new connection ',conn, ' #conns=',len(self.connections))
- self.connections.append(conn)
- else:
- # connection denied, log entry has already been written by newConnValidator
- self.removeConnection(conn)
-
- for c in ins[0:]:
- if isinstance(c,TCPConnection):
- ins.remove(c)
- try:
- self.handleInvocation(c)
- if not c.connected:
- self.removeConnection(c)
- except ConnectionClosedError:
- # client went away.
- self.removeConnection(c)
- except:
- self.handleError(c)
-
- if ins and callback:
- # the 'others' must have fired...
- callback(ins)
-
- # def handleInvocation(self, conn): .... abstract method (implemented in subclass)
-
-
- def _handleRequest_Threaded(self,timeout,others,callback):
- # self.connections is used to keep track of connection Threads
- socklist = [self.sock]+others
- ins,outs,exs = safe_select(socklist,[],[],timeout)
- if self.sock in ins:
- # it was the server socket, new incoming connection
- if self._ssl_server:
- try:
- csock, addr = self.sock.accept()
- #if not Pyro.config.PYROSSL_POSTCONNCHECK:
- # csock.postConnectionCheck=None
- except SSL.SSLError,error:
- Log.warn('TCPServer','SSL error: '+str(error))
- return
- else:
- csock, addr = self.sock.accept()
-
- conn=TCPConnection(csock,addr)
- thread=Thread(target=self.connectionHandler, args=(conn,))
- thread.setDaemon(1) # thread must exit at program termination.
- thread.localStorage=LocalStorage()
- self.connections.append(thread)
- thread.start()
- elif callback:
- # the 'others' must have fired...
- callback(ins)
-
- def getLocalStorage(self):
- # return storage object for this thread.
- if self.threaded:
- return currentThread().localStorage
- else:
- return self.localStorage
-
- # to be called if a dropped connection is detected:
- def removeConnection(self, conn):
- conn.close()
- self._removeFromConnectionList(conn)
- Log.msg('TCPServer','removed connection ',conn,' #conns=',len(self.connections))
-
- # to be called to stop all connections and shut down.
- def shutdown(self):
- self.mustShutdown=1
-
- def getAdapter(self):
- raise NotImplementedError,'must be overridden to return protocol adapter'
- def handleError(self,conn,onewaycall=False):
- raise NotImplementedError,'must be overridden'
-
- def getServerSockets(self):
- if self.threaded:
- return [self.sock]
- else:
- return map(lambda conn: conn.sock, self.connections)+[self.sock]
-
-# Sometimes _selectfunction() raises an select.error exception with the EINTR
-# errno flag set, which basically tells the caller to try again later.
-# This safe_select method works around this case and indeed just tries again.
-_selectfunction=select.select
-if os.name=="java":
- from select import cpython_compatible_select as _selectfunction
-def safe_select(r,w,e,timeout=None):
- delay=timeout
- while True:
- try:
- # Make sure we don't delay longer than requested
- start=time.time()
- if delay is not None:
- return _selectfunction(r,w,e,delay)
- else:
- return _selectfunction(r,w,e)
- except select.error,x:
- if x.args[0] == errno.EINTR or (hasattr(errno, 'WSAEINTR') and x.args[0] == errno.WSAEINTR):
- delay=max(0.0,time.time()-start)
- else:
- raise
diff --git a/modules/Pyro/test/__init__.py b/modules/Pyro/test/__init__.py
deleted file mode 100644
index 6f66f15a..00000000
--- a/modules/Pyro/test/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# just to make this a package.
diff --git a/modules/Pyro/test/echoserver.py b/modules/Pyro/test/echoserver.py
deleted file mode 100644
index 3c188b56..00000000
--- a/modules/Pyro/test/echoserver.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#############################################################################
-#
-# Pyro Echo Server, for test purposes
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import sys
-import time
-from threading import Thread
-import Pyro.core
-import Pyro.naming
-import Pyro.errors
-
-class EchoServer(Pyro.core.ObjBase):
- verbose=False
- def echo(self, args):
- if self.verbose:
- print ("%s - echo: %s" % (time.asctime(), args))
- return args
- def error(self):
- if self.verbose:
- print ("%s - error: generating exception" % time.asctime())
- return 1//0 # division by zero error
-
-
-class NameServer(Thread):
- def __init__(self, hostname):
- Thread.__init__(self)
- self.setDaemon(1)
- self.starter = Pyro.naming.NameServerStarter()
- self.hostname=hostname
- def run(self):
- self.starter.start(hostname=self.hostname, dontlookupother=True)
- def waitUntilStarted(self):
- return self.starter.waitUntilStarted()
- def getHostAndPort(self):
- d=self.starter.daemon
- return d.hostname, d.port
- def shutdown(self):
- self.starter.shutdown()
-
-def startNameServer(host):
- ns=NameServer(host)
- ns.start()
- ns.waitUntilStarted()
- return ns
-
-def main(args):
- from optparse import OptionParser
- parser=OptionParser()
- parser.add_option("-H","--host", default="localhost", help="hostname to bind server on (default=localhost)")
- parser.add_option("-p","--port", type="int", default=0, help="port to bind server on")
- parser.add_option("-n","--naming", action="store_true", default=False, help="register with nameserver")
- parser.add_option("-N","--nameserver", action="store_true", default=False, help="also start a nameserver")
- parser.add_option("-v","--verbose", action="store_true", default=False, help="verbose output")
- options,args = parser.parse_args(args)
-
- nameserver=None
- if options.nameserver:
- options.naming=True
- nameserver=startNameServer(options.host)
- print("")
-
- print ("Starting Pyro's built-in test echo server.")
- d=Pyro.core.Daemon(host=options.host, port=options.port, norange=True)
- echo=EchoServer()
- echo.verbose=options.verbose
- objectName=":Pyro.test.echoserver"
- if options.naming:
- host,port=None,None
- if nameserver is not None:
- host,port=nameserver.getHostAndPort()
- ns=Pyro.naming.NameServerLocator().getNS(host,port)
- try:
- ns.createGroup(":Pyro.test")
- except Pyro.errors.NamingError:
- pass
- d.useNameServer(ns)
- if options.verbose:
- print ("using name server at %s" % ns.URI)
- else:
- if options.verbose:
- print ("not using a name server.")
- uri=d.connect(echo, objectName)
- print ("object name = %s" % objectName)
- print ("echo uri = %s" % uri)
- print ("echo uri = PYROLOC://%s:%d/%s" % (d.hostname, d.port, objectName))
- print ("echoserver running.")
- try:
- d.requestLoop()
- finally:
- d.shutdown(disconnect=True)
- if nameserver is not None:
- #nameserver.shutdown()
- pass
-
-if __name__=="__main__":
- main(sys.argv[1:])
diff --git a/modules/Pyro/util.py b/modules/Pyro/util.py
deleted file mode 100644
index c87a022a..00000000
--- a/modules/Pyro/util.py
+++ /dev/null
@@ -1,562 +0,0 @@
-#############################################################################
-#
-# Pyro Utilities
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-from __future__ import with_statement
-import os, sys, traceback
-import time, random, linecache
-import socket, binascii
-import Pyro.constants
-from Pyro.util2 import * # bring in 'missing' util functions
-
-
-# bogus lock class, for systems that don't have threads.
-class BogusLock(object):
- def __enter__(self):
- return self
- def __exit__(self, exc_type, exc_val, exc_tb):
- pass
- def acquire(self): pass
- def release(self): pass
-
-def getLockObject():
- if supports_multithreading(): # XXX
- from threading import Lock
- return Lock()
- else:
- return BogusLock()
-def getRLockObject():
- if supports_multithreading():
- from threading import RLock
- return RLock()
- else:
- return BogusLock()
-
-
-# bogus event class, for systems that don't have threads
-class BogusEvent(object):
- def __init__(self):
- self.flag=0
- def isSet(self): return self.flag==1
- def set(self): self.flag=1
- def clear(self): self.flag=0
- def wait(self,timeout=None):
- raise RuntimeError("cannot wait in non-threaded environment")
-
-def getEventObject():
- if supports_multithreading():
- from threading import Event
- return Event()
- else:
- return BogusEvent()
-
-
-# Logging stuff.
-
-# Select the logging implementation to use!
-if Pyro.config.PYRO_STDLOGGING:
- # new-style logging using logging module, python 2.3+
- import logging, logging.config
- cfgfile=Pyro.config.PYRO_STDLOGGING_CFGFILE
- if not os.path.isabs(cfgfile):
- Pyro.config.PYRO_STDLOGGING_CFGFILE=os.path.join(Pyro.config.PYRO_STORAGE, cfgfile)
- cfgfile=Pyro.config.PYRO_STDLOGGING_CFGFILE
- externalConfig=0
- try:
- open(cfgfile).close()
- logging.config.fileConfig(cfgfile)
- externalConfig=1
- except IOError,x:
- # Config file couldn't be read! Use builtin config.
- # First make the logfiles absolute paths:
- if not os.path.isabs(Pyro.config.PYRO_LOGFILE):
- Pyro.config.PYRO_LOGFILE=os.path.join(Pyro.config.PYRO_STORAGE, Pyro.config.PYRO_LOGFILE)
- if not os.path.isabs(Pyro.config.PYRO_USER_LOGFILE):
- Pyro.config.PYRO_USER_LOGFILE=os.path.join(Pyro.config.PYRO_STORAGE, Pyro.config.PYRO_USER_LOGFILE)
-
- class LoggerBase(object):
- if externalConfig:
- def __init__(self):
- self.logger=logging.getLogger(self._getLoggerName())
- else:
- def __init__(self):
- self.logger=logging.getLogger("Pyro."+str(id(self))) # each time a different logger ...
- self.setLevel(self._getPyroLevel())
- handler=logging.FileHandler(self._logfile())
- handler.setFormatter(logging.Formatter("%(asctime)s [%(process)d:%(thread)d] ** %(levelname)s ** %(message)s"))
- self.logger.addHandler(handler)
- def setLevel(self, pyroLevel):
- if pyroLevel>=3:
- self.logger.setLevel(logging.DEBUG)
- elif pyroLevel>=2:
- self.logger.setLevel(logging.WARN)
- elif pyroLevel>=1:
- self.logger.setLevel(logging.ERROR)
- else:
- self.logger.setLevel(999)
- def msg(self,source,*args):
- self.setLevel(self._getPyroLevel())
- if not args:
- (args, source) = ([source], "N/A")
- self.logger.info("%s ** %s", source, reduce(lambda x,y: str(x)+' '+str(y),args))
- def warn(self,source,*args):
- self.setLevel(self._getPyroLevel())
- if not args:
- (args, source) = ([source], "N/A")
- self.logger.warn("%s ** %s", source, reduce(lambda x,y: str(x)+' '+str(y),args))
- def error(self,source,*args):
- self.setLevel(self._getPyroLevel())
- if not args:
- (args, source) = ([source], "N/A")
- self.logger.error("%s ** %s", source, reduce(lambda x,y: str(x)+' '+str(y),args))
- def raw(self,ztr):
- self.logger.log(999,ztr.rstrip())
- def _logfile(self):
- raise NotImplementedError,'must override'
- def _getlevel(self):
- raise NotImplementedError,'must override'
-
-
- class SystemLogger(LoggerBase):
- def _getLoggerName(self):
- return "Pyro.system"
- def _getPyroLevel(self):
- return Pyro.config.PYRO_TRACELEVEL
- def _logfile(self):
- return Pyro.config.PYRO_LOGFILE
-
- class UserLogger(LoggerBase):
- def _getLoggerName(self):
- return "Pyro.user"
- def _getPyroLevel(self):
- return Pyro.config.PYRO_USER_TRACELEVEL
- def _logfile(self):
- return Pyro.config.PYRO_USER_LOGFILE
-
-else:
- # classic Pyro logging.
-
- class LoggerBase(object):
- # Logger base class. Subclasses must override _logfile and _checkTraceLevel.
- def __init__(self):
- self.lock=getLockObject()
- def msg(self,source,*args):
- if self._checkTraceLevel(3): self._trace('NOTE',source, args)
- def warn(self,source,*args):
- if self._checkTraceLevel(2): self._trace('WARN',source, args)
- def error(self,source,*args):
- if self._checkTraceLevel(1): self._trace('ERR!',source, args)
- def raw(self,str):
- with self.lock:
- f=open(self._logfile(),'a')
- f.write(str)
- f.close()
- def _trace(self,typ,source, arglist):
- with self.lock:
- if not arglist:
- (arglist, source) = ([source], "N/A")
- try:
- tf=open(self._logfile(),'a')
- try:
- pid=os.getpid()
- pidinfo=" ["+str(os.getpid())
- except:
- pidinfo=" [" # at least jython has no getpid()
- if supports_multithreading():
- pidinfo+=":"+threading.currentThread().getName()
- pidinfo+="] "
- tf.write(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+
- pidinfo+'** '+typ+' ** '+str(source)+' ** '+reduce(lambda x,y: str(x)+' '+str(y),arglist)+'\n')
- tf.close()
- except Exception,x:
- pass
- def _logfile(self):
- raise NotImplementedError,'must override'
- def _checkTraceLevel(self,level):
- raise NotImplementedError,'must override'
-
- class SystemLogger(LoggerBase):
- def _checkTraceLevel(self, level):
- return Pyro.config.PYRO_TRACELEVEL >= level
- def _logfile(self):
- filename=Pyro.config.PYRO_LOGFILE
- if not os.path.isabs(filename):
- Pyro.config.PYRO_LOGFILE=os.path.join(Pyro.config.PYRO_STORAGE, filename)
- return Pyro.config.PYRO_LOGFILE
-
- class UserLogger(LoggerBase):
- def _checkTraceLevel(self, level):
- return Pyro.config.PYRO_USER_TRACELEVEL >= level
- def _logfile(self):
- filename=Pyro.config.PYRO_USER_LOGFILE
- if not os.path.isabs(filename):
- Pyro.config.PYRO_USER_LOGFILE=os.path.join(Pyro.config.PYRO_STORAGE, filename)
- return Pyro.config.PYRO_USER_LOGFILE
-
-
-# The logger object 'Log'.
-Log = SystemLogger()
-
-
-# Caching directory lister, outputs (filelist,dirlist) tuple
-# Based upon dircache.py, but implemented in a callable object
-# that has a thread-safe cache.
-class DirLister(object):
- def __init__(self):
- self.lock=getLockObject()
- self.__listdir_cache = {}
-
- def __call__(self,path):
- with self.lock:
- try:
- cached_mtime, files, directories = self.__listdir_cache[path]
- del self.__listdir_cache[path]
- except KeyError:
- cached_mtime, files, directories = -1, [], []
- mtime = os.stat(path)[8]
- if mtime <> cached_mtime:
- files=[]
- directories=[]
- for e in os.listdir(path):
- if os.path.isdir(os.path.join(path,e)):
- directories.append(e)
- else:
- files.append(e)
- with self.lock:
- self.__listdir_cache[path] = mtime, files, directories
- return files,directories
-
-listdir = DirLister() # callable object
-
-
-# Fairly simple argument options parser. Like getopt(3).
-class ArgParser(object):
- def __init__(self):
- pass
- def parse(self, args, optionlist):
- # optionlist is a string such as "ab:c" which means
- # we search for 3 options (-a, -b, -c) of which -b has an argument.
- self.options={} # public, the option->value dictionary
- self.args=[] # public, the rest of the arguments
- self.ignored=[] # public, ignored options
- optionlist+=' ' # add sentinel
- if type(args)==type(''):
- args=args.split()
- while args:
- arg=args[0]
- del args[0]
- if arg[0]=='-':
- if len(arg)>=2: # arg is an option. Check our list
- idx = optionlist.find(arg[1])
- if idx>=0:
- if optionlist[idx+1]==':': # option requires argument.
- if len(arg)>=3: # argument is appended. Use this.
- self.options[arg[1]]=arg[2:]
- continue
- # fetch argument from next string
- if len(args)>=1:
- self.options[arg[1]]=args[0]
- del args[0]
- continue
- else: # missing arg, substitute None
- self.options[arg[1]]=None
- else: # option requires no argument, use None
- self.options[arg[1]]=None
- else: # didn't find this option, skip it
- self.ignored.append(arg[1])
- else: # arg is a single '-'. Stop parsing.
- for a in args:
- self.args.append(a)
- args=None
- else: # arg is no option, add it to the residu list and continue
- self.args.append(arg)
- def hasOpt(self, option):
- return self.options.has_key(option)
- def getOpt(self, option, default=Exception()):
- try:
- return self.options[option]
- except KeyError:
- if not isinstance(default,Exception):
- return default
- raise KeyError('no such option')
- def printIgnored(self):
- if self.ignored:
- print 'Ignored options:',
- for o in self.ignored:
- print '-'+o,
- print
-
-
-_getGUID_counter=0 # extra safeguard against double numbers
-_getGUID_lock=getLockObject()
-
-if os.name=='java':
- # define jython specific stuff
- # first, the guid stuff. try java5 uuid first.
- try:
- from java.util import UUID
- def getGUID():
- return str(UUID.randomUUID())
- except ImportError:
- # older java, use rmi's vmid instead
- from java.rmi.dgc import VMID
- def getGUID():
- return str(VMID().toString().replace(':','-').replace('--','-'))
- import imp
- if not hasattr(imp,"acquire_lock"):
- # simulate missing imp.acquire_lock() from jython 2.2 (fixed in jython 2.5)
- imp_lock=getLockObject()
- def imp_acquire_lock():
- return imp_lock.acquire()
- def imp_release_lock():
- return imp_lock.release()
- imp.acquire_lock=imp_acquire_lock
- imp.release_lock=imp_release_lock
-
-elif sys.platform=='cli':
- import System
- def getGUID():
- # IronPython uses .NET guid call
- return System.Guid.NewGuid().ToString()
-else:
- def getGUID():
- # Generate readable GUID string.
- # The GUID is constructed as follows: hexlified string of
- # AAAAAAAA-AAAABBBB-BBBBBBBB-BBCCCCCC (a 128-bit number in hex)
- # where A=network address, B=timestamp, C=random.
- # The 128 bit number is returned as a string of 16 8-bits characters.
- # For A: should use the machine's MAC ethernet address, but there is no
- # portable way to get it... use the IP address + 2 bytes process id.
- try:
- ip=socket.gethostbyname(socket.gethostname())
- networkAddrStr=binascii.hexlify(socket.inet_aton(ip))+"%04x" % os.getpid()
- except socket.error:
- # can't get IP address... use another value, like our Python id() and PID
- Log.warn('getGUID','Can\'t get IP address')
- try:
- ip=os.getpid()
- except:
- ip=0
- ip += id(getGUID)
- networkAddrStr = "%08lx%04x" % (ip, os.getpid())
-
- with _getGUID_lock: # cannot generate multiple GUIDs at once
- global _getGUID_counter
- t1=time.time()*100 +_getGUID_counter
- _getGUID_counter+=1
- t2=int((t1*time.clock())%sys.maxint) & 0xffffff
- t1=int(t1%sys.maxint)
- timestamp = (long(t1) << 24) | t2
- r2=(random.randint(0,sys.maxint//2)>>4) & 0xffff
- r3=(random.randint(0,sys.maxint//2)>>5) & 0xff
- return networkAddrStr+'%014x%06x' % (timestamp, (r2<<8)|r3 )
-
-def genguid_scripthelper(argv):
- p=ArgParser()
- p.parse(argv,'')
- if p.args or p.ignored:
- print 'Usage: genguid (no arguments)'
- print 'This tool generates Pyro UIDs.'
- raise SystemExit
- print getGUID()
-
-
-
-# Get the configured pickling module.
-# Currently supported: cPickle, pickle, gnosis.xml.pickle (@paranoia 0 or -1).
-def getPickle():
- if Pyro.config.PYRO_XML_PICKLE:
- # user requires xml pickle. Fails if that is not available!
- return getXMLPickle()
- else:
- try:
- import cPickle
- return cPickle
- except ImportError:
- # Fall back on pickle if cPickle isn't available
- import pickle
- return pickle
-
-_xmlpickle={}
-def getXMLPickle(impl=None):
- # load & config the required xml pickle.
- # Currently supported: Gnosis Utils' gnosis.xml.pickle.
- global _xmlpickle
- if not impl:
- impl=Pyro.config.PYRO_XML_PICKLE
- if impl in _xmlpickle:
- return _xmlpickle[impl]
- try:
- if impl=='gnosis':
- import gnosis.xml.pickle
- import gnosis.version
- gnosisVer=(gnosis.version.MAJOR, gnosis.version.MINOR)
- if gnosisVer==(1,2):
- # gnosis 1.2 style pickling, with paranoia setting
- _xmlpickle[impl]=gnosis.xml.pickle
- gnosis.xml.pickle.setParanoia(Pyro.config.PYRO_GNOSIS_PARANOIA) # default paranoia level is too strict for Pyro
- gnosis.xml.pickle.setParser('SAX') # use fastest parser (cEXPAT?)
- return gnosis.xml.pickle
- elif gnosisVer>=(1,3):
- from gnosis.xml.pickle import SEARCH_ALL, SEARCH_STORE, SEARCH_NO_IMPORT, SEARCH_NONE
- if Pyro.config.PYRO_GNOSIS_PARANOIA<0:
- class_search_flag = SEARCH_ALL # allow import of needed modules
- elif Pyro.config.PYRO_GNOSIS_PARANOIA==0:
- class_search_flag = SEARCH_NO_IMPORT # dont import new modules, only use known
- else:
- class_search_flag = SEARCH_STORE # only use class store
- # create a wrapper class to be able to pass additional args into gnosis methods
- class GnosisPickle:
- def dumps(data, *args,**kwargs):
- return gnosis.xml.pickle.dumps(data, allow_rawpickles=0)
- dumps=staticmethod(dumps)
- def loads(xml, *args, **kwargs):
- return gnosis.xml.pickle.loads(xml, allow_rawpickles=0, class_search=class_search_flag)
- loads=staticmethod(loads)
- def dump(data, file, *args,**kwargs):
- return gnosis.xml.pickle.dump(data, file, allow_rawpickles=0)
- dump=staticmethod(dump)
- def load(file, *args, **kwargs):
- return gnosis.xml.pickle.load(file, allow_rawpickles=0, class_search=class_search_flag)
- load=staticmethod(load)
- _xmlpickle[impl]=GnosisPickle
- return GnosisPickle
- else:
- raise NotImplementedError('no supported Gnosis tools version found (need at least 1.2). Found '+gnosis.version.VSTRING)
- else:
- raise ImportError('unsupported xml pickle implementation requested: %s' % impl)
- except ImportError:
- Log.error('xml pickling implementation (%s) is not available' % impl)
- raise NotImplementedError('xml pickling implementation (%s) is not available' % impl)
-
-
-# Pyro traceback printing
-def getPyroTraceback(exc_obj, exc_type=None, exc_trb=None):
- def formatRemoteTraceback(remote_tb_lines) :
- result=[]
- result.append(" +--- This exception occured remotely (Pyro) - Remote traceback:")
- for line in remote_tb_lines :
- if line.endswith("\n"):
- line=line[:-1]
- lines = line.split("\n")
- for line in lines :
- result.append("\n | ")
- result.append(line)
- result.append("\n +--- End of remote traceback\n")
- return result
- try:
- if exc_type is None and exc_trb is None:
- exc_type, exc_obj, exc_trb=sys.exc_info()
- remote_tb=getattr(exc_obj,Pyro.constants.TRACEBACK_ATTRIBUTE,None)
- local_tb=formatTraceback(exc_type, exc_obj, exc_trb)
- if remote_tb:
- remote_tb=formatRemoteTraceback(remote_tb)
- return local_tb + remote_tb
- else:
- # hmm. no remote tb info, return just the local tb.
- return local_tb
- finally:
- # clean up cycle to traceback, to allow proper GC
- del exc_type, exc_obj, exc_trb
-
-
-def formatTraceback(ex_type=None, ex_value=None, tb=None):
- if ex_type is None and tb is None:
- ex_type,ex_value,tb=sys.exc_info()
- if Pyro.config.PYRO_DETAILED_TRACEBACK:
- get_line_number = traceback.tb_lineno
-
- res = ['-'*50+ "\n",
- " <%s> RAISED : %s\n" % (str(ex_type), str(ex_value)),
- " Extended Stacktrace follows (most recent call last)\n",
- '-'*50+'\n' ]
-
- try:
- # Do some manipulation shit of stack
- if tb != None:
- frame_stack = []
- line_number_stack = []
-
- #tb = sys.exc_info()[2]
- while 1:
- line_num = get_line_number(tb)
- line_number_stack.append(line_num)
- if not tb.tb_next:
- break
- tb = tb.tb_next
-
- f = tb.tb_frame
- for x in line_number_stack:
- frame_stack.append(f)
- f = f.f_back
-
- frame_stack.reverse()
-
- lines = iter(line_number_stack)
- seen_crap = 0
- for frame in frame_stack:
- # Get items
- flocals = frame.f_locals.items()[:]
-
- line_num = lines.next()
- filename = frame.f_code.co_filename
-
- name = None
- for key, value, in flocals:
- if key == "self":
- name = "%s::%s" % (value.__class__.__name__, frame.f_code.co_name)
- if name == None:
- name = frame.f_code.co_name
-
- res.append('File "%s", line (%s), in %s\n' % (filename, line_num, name))
- res.append("Source code:\n")
-
- code_line = linecache.getline(filename, line_num)
- if code_line:
- res.append(' %s\n' % code_line.strip())
-
- if not seen_crap:
- seen_crap = 1
- continue
-
- res.append("Local values:\n")
- flocals.sort()
- fcode=frame.f_code
- for key, value, in flocals:
- if key in fcode.co_names or key in fcode.co_varnames or key in fcode.co_cellvars:
- local_res=" %20s = " % key
- try:
- local_res += repr(value)
- except:
- try:
- local_res += str(value)
- except:
- local_res += ""
-
- res.append(local_res+"\n")
-
- res.append('-'*50 + '\n')
- res.append(" <%s> RAISED : %s\n" % (str(ex_type), str(ex_value)))
- res.append('-'*50+'\n')
- return res
-
- except:
- return ['-'*50+"\nError building extended traceback!!! :\n",
- ''.join(traceback.format_exception(* sys.exc_info() ) ) + '-'*50 + '\n',
- 'Original Exception follows:\n',
- ''.join(traceback.format_exception(ex_type, ex_value, tb)) ]
-
- else:
- # default traceback format.
- return traceback.format_exception(ex_type, ex_value, tb)
-
-
-def excepthook(ex_type, ex_value, ex_tb):
- """An exception hook you can set sys.excepthook to, to automatically print remote Pyro tracebacks"""
- traceback="".join(getPyroTraceback(ex_value,ex_type,ex_tb))
- sys.stderr.write(traceback)
diff --git a/modules/Pyro/util2.py b/modules/Pyro/util2.py
deleted file mode 100644
index 54b5fde1..00000000
--- a/modules/Pyro/util2.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#############################################################################
-#
-# Pyro Utilities (part 2, to avoid circular dependencies)
-# User code should never import this, always use Pyro.util!
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-_supports_mt=None
-_supports_comp=None
-
-def supports_multithreading():
- global _supports_mt
- if _supports_mt is None:
- try:
- from threading import Thread, Lock
- _supports_mt=1
- except:
- _supports_mt=0
- return _supports_mt
-
-def supports_compression():
- global _supports_comp
- if _supports_comp is None:
- try:
- import zlib
- _supports_comp=1
- except:
- _supports_comp=0
- return _supports_comp
-
-if supports_multithreading():
- import threading
diff --git a/modules/Pyro/wxnsc.py b/modules/Pyro/wxnsc.py
deleted file mode 100644
index b6b8a69f..00000000
--- a/modules/Pyro/wxnsc.py
+++ /dev/null
@@ -1,913 +0,0 @@
-#!/usr/bin/env python
-
-"""
-A wxPython gui to nsc (Pyro Name Server Control tool).
-This gui doesn't have as many features as the xnsc that ships with Pyro,
-but it has some nice features that the xnsc doesn't have ;)
-
-'Pyro' - Python Remote Objects is
-(c) Irmen de Jong - irmen@razorvine.net
-
-This file 'wxnsc.py' is
-(c) Jan Finell - finell@users.sourceforge.net
-
-
-Usage (from the commandline):
-
-# to use set PYRO environment variables or broadcasting
-# for finding the nameserver host...
-> wxnsc.py
-
-"""
-
-__author__ = "Jan Finell"
-__date__ = "$Date: 2009/03/27 14:30:29 $"
-__revision__ = "$Revision: 1.10.2.6 $"
-
-#
-# Standard modules
-#
-import os, sys, socket
-import traceback, cStringIO
-
-#
-# GUI modules
-#
-import wx
-
-#
-# Pyro modules
-#
-from Pyro.naming import NameServerLocator
-from Pyro.errors import NamingError, ConnectionClosedError,\
- ConnectionDeniedError
-import Pyro.core
-
-#----------------------------------------------------------------------#
-# Module constants
-DEFAULT_GROUPNAME = ':Default'
-PROTECTED_GROUPS = [DEFAULT_GROUPNAME, ':Pyro']
-
-GROUP_XPM = [
-"16 16 9 1",
-" c None",
-". c #FFFFFF",
-"+ c #000000",
-"@ c #C3C3C3",
-"# c #A0A0A0",
-"$ c #8080FF",
-"% c #585858",
-"& c #FFFFFF",
-"* c #808080",
-" +%+ ",
-" +%$$++ ",
-" +&%%$$+++++ ",
-" +&&@%%$$$$$+ ",
-" +&@&@@%$$$$% ",
-" +@&@@@@%%%%$+ ",
-" +&@@@@@@@#@+$% ",
-" +@@@@@@@#@#+$% ",
-" +@@@#@@#@##+$% ",
-" +@@@@@#@###+$% ",
-" ++*@@#@####+$% ",
-" ++*@#####+$% ",
-" ++#####+$% ",
-" ++###+$++",
-" ++#+$++",
-" ++++ "]
-
-GROUP_OPEN_XPM =[
-"16 16 12 1",
-" c None",
-". c #FFFFFF",
-"+ c #000000",
-"@ c #8080FF",
-"# c #808080",
-"$ c #C3C3C3",
-"% c #C0C0FF",
-"& c #A0A0A0",
-"* c #303030",
-"= c #FFFFFF",
-"- c #DCDCDC",
-"; c #585858",
-" +++ ",
-" +@#++ ",
-" +@%@#++++ ",
-"+++ +@%%%%%%@+ ",
-"+&&*;@@@%%%%%@+ ",
-"+#&&@@@@%%%@#+",
-" *&&&#@@@@%@#+",
-" +#&&$$#@@@@#+",
-" *&$&$$$$##@@#+",
-" +#$$$$-$-&@@#+",
-" *#-$$$-=%;@#+",
-" +*&--===&@#+",
-" +*$===%;#+",
-" +*$==##+",
-" +*$=#+",
-" +**+"]
-
-ITEM_XPM = [
-"16 16 11 1",
-" c None",
-". c #FFFFFF",
-"+ c #FFFFFF",
-"@ c #000000",
-"# c #585858",
-"$ c #DCDCDC",
-"% c #FFFFC0",
-"& c #FFDCA8",
-"* c #303030",
-"= c #C3C3C3",
-"- c #A0A0A0",
-" #####**@@ ",
-" #$$$$$=*=@ ",
-" #$+++++#+$@ ",
-" #$+++++#$+=@",
-" #$+++++###*@",
-" #$++++++$=-@",
-" #$++++++%+$@",
-" #$+++++++++@",
-" #$++++%+%+%@",
-" #$+++++++&+@",
-" #$++%+%+%+%@",
-" #$+++++&+&+@",
-" #$%+%+%+%+%@",
-" #$+++&+&+&%@",
-" #$%+%+%+%%%@",
-" *@@@@@@@@@@@"]
-#----------------------------------------------------------------------#
-# Helper functions
-
-def cmp_name(n1, n2):
- return cmp(n1[0], n2[0])
-
-def show_message_dialog(parent, msg, title, style):
- if sys.platform[:3] == 'win':
- dlg = WinMessageDialog(parent, msg, title, style)
- else:
- dlg = wx.MessageDialog(parent, msg, title, style)
- dlg.CentreOnParent()
- retval = dlg.ShowModal()
- dlg.Destroy()
- return retval
-
-#----------------------------------------------------------------------#
-## Classes
-
-
-class wx_StdoutLog(wx.TextCtrl):
- """
- :Purpose: A simple text ctrl that can be used for logging standard out
- """
- def write(self, data):
- if data.strip():
- wx.TextCtrl.AppendText(self, '%s\n' % data)
-
-class wx_NSC(wx.Frame):
- """
- :Purpose: The main frame of the GUI.
- """
- def __init__(self, nsHost, nsPort, bcAddr):
- """
- :Parameters:
- - `nsHost`: the name server host to connect to. This is the
- name of the host or the ip.
- - `nsPort`: the name server port. By default the Pyro name
- server port is 9090
- - `bcAddr`: override for the broadcast address.
- """
- wx.Frame.__init__(self, None, -1, 'Pyro Name Server')
- self.nsHost = nsHost
- self.nsPort = nsPort
- self.bcAddr = bcAddr
- self.NS = None
-
- self._build()
- imageList = wx.ImageList(16,16)
- self.__idGroup = imageList.Add(wx.BitmapFromXPMData(GROUP_XPM))
- self.__idItem = imageList.Add(wx.BitmapFromXPMData(ITEM_XPM))
- self.__idGroupOpen = imageList.Add(wx.BitmapFromXPMData(GROUP_OPEN_XPM))
- self.treeCtrlItems.SetImageList(imageList)
- self.__imageList = imageList
-
- self._bindEvents()
- # binding stdout to my own txtCtrl Log.
- sys.stdout = self.txtCtrlLog
-
- self._log("Pyro version: "+Pyro.constants.VERSION)
-
- self.nsc_findNS()
- if self.NS: self.update()
-
- #-- public methods --#
- def enable(self, enable=True):
- """
- Enabling/disabling some of the buttons.
- """
- self.buttonDeleteGroup.Enable(enable)
- self.buttonCreateGroup.Enable(enable)
- self.buttonDeleteSelected.Enable(enable)
- self.buttonRegisterItem.Enable(enable)
- self.buttonShowMeta.Enable(enable)
- self.buttonSetMeta.Enable(enable)
-
- def update(self):
- """
- """
- tree = self.treeCtrlItems
- tree.DeleteAllItems()
- root = tree.AddRoot(':')
- tree.SetItemImage(root, self.__idGroup)
- tree.SetItemImage(root, self.__idGroupOpen,
- wx.TreeItemIcon_Expanded)
- self._populate_tree(tree, root, ':')
-
- # enabling/disabling buttons, depending on the current state.
- self.enable(self.NS != None)
-
- def _populate_tree(self, tree, parent, group):
- subgroupsL = self.nsc_list_groups(group)
- subgroupsL.sort()
- itemsL = self.nsc_list_items(group)
- itemsL.sort()
- for subgroup in subgroupsL:
- groupB = tree.AppendItem(parent, subgroup)
- tree.SetPyData(groupB, 0)
- tree.SetItemImage(groupB, self.__idGroup)
- tree.SetItemImage(groupB, self.__idGroupOpen,
- wx.TreeItemIcon_Expanded)
- self._populate_tree(tree, groupB, subgroup)
- for item in itemsL:
- itemB = tree.AppendItem(parent, item)
- tree.SetPyData(itemB, 1)
- tree.SetItemImage(itemB, self.__idItem)
- tree.SetItemImage(itemB, self.__idItem,
- wx.TreeItemIcon_Selected)
- #-- nsc methods --#
- def nsc_findNS(self, ident=None):
- """
- Locating the Name Server by using given nsHost and nsPort
- """
- locator = NameServerLocator(identification=ident)
- try:
- if self.nsHost:
- self._log('connecting to Name Server (%s:%s)' % (self.nsHost,
- self.nsPort))
- self.NS = locator.getNS(self.nsHost, self.nsPort, trace=1, bcaddr=self.bcAddr)
- else:
- self._log('broadcasting to find Name Server')
- self.NS = locator.getNS(None, None, trace = 1, bcaddr=self.bcAddr)
- self.nsHost = self.NS.URI.address
- self.nsPort = self.NS.URI.port
- self.NS._setIdentification(ident)
- self._log('Name Server found, URI = %s' % self.NS.URI)
- self._setNSData()
- except ConnectionDeniedError, e:
- if str(e).find( Pyro.constants.deniedReasons[Pyro.constants.DENIED_SECURITY] ) != -1:
- msg = 'Authentication required:'
- dlg = wx.TextEntryDialog(self, msg, 'Authentication',
- style=wx.OK|wx.CANCEL|wx.TE_PASSWORD)
- dlg.CentreOnParent()
- if dlg.ShowModal() == wx.ID_OK:
- ident = dlg.GetValue()
- self.nsc_findNS(ident)
- else:
- self.NS = None
- self._log('Connection to Name Server denied!','error')
- else:
- self.NS = None
- self._logError('Unable to connect to Name Server')
- except:
- self.NS = None
- self._logError('Name Server not found!')
-
-
- def nsc_list_groups(self, ingroup):
- """
- Returns a list of group names inside given group.
- """
- return self._nsc_list(ingroup, 0)
-
- def nsc_list_items(self, ingroup):
- """
- Returns a list of item names inside given group.
- """
- return self._nsc_list(ingroup, 1)
-
- def _nsc_list(self, ingroup, type):
- """
- Generic method for listing either groups or items inside a given group.
-
- type = 0 : group
- type = 1 : item
- """
- items = []
- if self.NS:
- for name, t in self.NS.list(ingroup):
- if t == type:
- if type == 1:
- uri = self.NS.resolve('%s.%s' % (ingroup,name))
- name = '%s (%s)' % (name, uri)
- elif ingroup != ':':
- name = '%s.%s' % (ingroup, name)
- else:
- name = '%s%s' % (ingroup, name)
- items.append(name)
- return items
-
- def nsc_create_group(self, groupName):
- """
- Creating given group
- """
- if self.NS:
- try:
- self.NS.createGroup(groupName)
- self._log('created group (%s)' % (groupName))
- return 1
- except NamingError, e:
- self._logError('unable to create group %s because %s' % (groupName,
- e))
- return 0
-
- def nsc_delete_group(self, groupName):
- """
- Deleting given group
- """
- if self.NS:
- try:
- self.NS.deleteGroup(groupName)
- self._log('group %s deleted' % groupName)
- return 1
- except NamingError, e:
- self._logError('unable to delete group %s because %s' % (groupName,
- e))
- return 0
-
- def nsc_ping(self):
- """
- Ping the current Name Server
- """
- if self.NS:
- try:
- self.NS.ping()
- self._log('ping Name Server (%s): up and running' % self.nsHost)
- except:
- self._logError('Name Server not responding.')
- else:
- self._logError('Name Server not responding')
-
- def nsc_delete(self, name):
- """Removing given name from the Name Server.
-
- :Parameters:
- - `name`: the name to delete from the Name Server
- """
- try:
- self.NS.unregister(name)
- self._log('%s deleted successfully' % name)
- return 1
- except NamingError, e:
- self._logError('unable to delete %s because %s' % (name, e))
- except:
- self._logError('deletion of %s failed' % name)
- return 0
-
- def nsc_register_item(self, name, uri):
- """
- Registering new item with given name and uri
- """
- try:
- self.NS.register(name, uri)
- uri = Pyro.core.PyroURI(uri)
- self._log('registered %s with %s' % (name, uri))
- return 1
- except NamingError, e:
- self._logError('unable to register,\nName Server error: %s' % e)
- except Exception, e:
- self._logError('unable to register, error: %s' % e)
- return 0
-
- def nsc_set_meta(self, name, meta):
- """
- Set user meta data
- """
- try:
- self.NS.setMeta(name, meta)
- self._log('set user meta data on '+name)
- return 1
- except NamingError, e:
- self._logError('unable to set user meta data,\nName Server error: %s' % e)
- except Exception, e:
- self._logError('unable to set user meta data, error: %s' % e)
- return 0
-
- def nsc_show_meta(self, name):
- fullName = self.NS.fullName(name)
- try:
- self._log('"%s" system meta info: %s' % (fullName,
- self.NS._getSystemMeta(fullName)))
- self._log('"%s" user meta info: %s' % (fullName,
- self.NS.getMeta(name)))
- except NamingError, e:
- self._logError('unable to get meta info,\nName Server error: %s' % e)
- except Exception, e:
- self._logError('unable to get meta info, error: %s' % e)
-
- #-- gui event methods --#
- def OnCheckNS(self, event):
- if self._checkNS():
- self.update()
-
- def OnClose(self, event):
- sys.stdout = sys.__stdout__ #restoring the stdout
- self.Destroy()
-
- def OnCreateGroup(self, event):
- """
- Creating group in selected parent
- """
- tree = self.treeCtrlItems
- items = tree.GetSelections()
- if items:
- if tree.GetPyData(items[0]) == 0:
- # use the selected group
- parentGroupI = items[0]
- parentGroupName = tree.GetItemText(parentGroupI)
- else:
- # take the parent
- parentGroupI = tree.GetItemParent(items[0])
- parentGroupName = tree.GetItemText(parentGroupI)
- else:
- parentGroupI = tree.GetRootItem()
- parentGroupName = ':'
- msg = 'Create group in "%s", with name:' % parentGroupName
- dlg = wx.TextEntryDialog(self, msg, 'Enter group name')
- dlg.CentreOnParent()
- if dlg.ShowModal() == wx.ID_OK:
- if parentGroupName != ':':
- groupName = '%s.%s' % (parentGroupName, dlg.GetValue())
- else:
- groupName = ':%s' % (dlg.GetValue())
- if self.nsc_create_group(groupName):
- groupI = tree.AppendItem(parentGroupI, groupName)
- tree.SetPyData(groupI, 0)
- tree.SetItemImage(groupI, self.__idGroup)
- tree.SetItemImage(groupI, self.__idGroupOpen,
- wx.TreeItemIcon_Expanded)
- tree.Expand(parentGroupI)
-
- def OnSetMeta(self, ev=None):
- """
- set user meta on selected groups + items
- """
- tree = self.treeCtrlItems
- itemsL, groupsL = self._getSelections()
- namesL = itemsL + groupsL
- if namesL:
- namesS = ',\n '.join(namesL)
- msg = 'User meta data string for:\n %s' % namesS
- dlg = wx.TextEntryDialog(self, msg, 'Enter meta data')
- dlg.CentreOnParent()
- if dlg.ShowModal() == wx.ID_OK:
- meta=dlg.GetValue()
- for name in namesL:
- self.nsc_set_meta(name,meta)
-
- def OnDelete(self, ev=None):
- """
- Deleting selected items.
- """
- tree = self.treeCtrlItems
- itemsL = tree.GetSelections()
- namesL = []
- deleteL = []
- for i in itemsL:
- # only items (ie. no groups)
- if tree.GetPyData(i) == 1:
- parent = tree.GetItemParent(i)
- parentName = tree.GetItemText(parent)
- name = tree.GetItemText(i).split()[0] #only name
- namesL.append('%s.%s' % (parentName, name))
- deleteL.append(i)
- if namesL:
- namesS = ',\n '.join(namesL)
- ret = show_message_dialog(self,
- 'Really delete following name(s)?:\n %s' % namesS,
- '-- Confirm --', wx.YES|wx.NO|wx.ICON_QUESTION)
- if ret == wx.ID_YES:
- for name, i in zip(namesL,deleteL):
- if self.nsc_delete(name):
- tree.Delete(i)
-
- def OnDeleteGroup(self, ev=None):
- """
- Deleting selected groups.
- """
- tree = self.treeCtrlItems
- itemsL = tree.GetSelections()
- namesL = []
- deleteL = []
- for i in itemsL:
- # only groups (ie. no items)
- if tree.GetPyData(i) == 0:
- name = tree.GetItemText(i)
- if name not in PROTECTED_GROUPS and tree.GetChildrenCount(i)==0:
- namesL.append(name)
- deleteL.append(i)
- if namesL:
- namesS = ',\n'.join(namesL)
- ret = show_message_dialog(self,
- 'Really delete following group(s)?:\n %s' % namesS,
- '-- Confirm --', wx.YES|wx.NO|wx.ICON_QUESTION)
- if ret == wx.ID_YES:
- for name, i in zip(namesL, deleteL):
- if self.nsc_delete_group(name):
- tree.Delete(i)
-
- def OnKeyPressed(self, event):
- """
- Calling delete for both items and groups
- """
- if event.GetKeyCode() == 127:
- # deleting both selected groups and items
- self.OnDelete()
- self.OnDeleteGroup()
- if event.GetKeyCode() == 105: # 105 == 'i'
- # showing meta information on selected item
- self.OnShowMeta()
- event.Skip()
-
- def OnPing(self, event):
- if self._checkNS():
- self.update()
- self.nsc_ping()
-
-
- def OnRegisterItem(self, event):
- """
- Registering item in selected parent.
- """
- tree = self.treeCtrlItems
- items = tree.GetSelections()
- if items:
- if tree.GetPyData(items[0]) == 0:
- # use the selected group
- parentGroupI = items[0]
- parentGroupName = tree.GetItemText(parentGroupI)
- else:
- parentGroupI = tree.GetItemParent(items[0])
- parentGroupName = tree.GetItemText(parentGroupI)
- else:
- parentGroupI = tree.GetRootItem()
- parentGroupName = ':'
-
- msg = 'Register new item in "%s", with:\n ' % parentGroupName
- dlg = wx.TextEntryDialog(self, msg, 'Register item')
- dlg.CentreOnParent()
- if dlg.ShowModal() == wx.ID_OK:
- try:
- itemName, uri = dlg.GetValue().split()
- except:
- self._log('Invalid arguments, use ', 'error')
- else:
- if parentGroupName != ':':
- itemName = '%s.%s' % (parentGroupName, itemName)
- else:
- itemName = ':%s' % (itemName)
- if self.nsc_register_item(itemName, uri):
- label = '%s (%s)' % (dlg.GetValue().split()[0], uri)
- itemI = tree.AppendItem(parentGroupI, label)
- tree.SetPyData(itemI, 1)
- tree.SetItemImage(itemI, self.__idItem)
- tree.SetItemImage(itemI, self.__idItem,
- wx.TreeItemIcon_Selected)
- tree.Expand(parentGroupI)
-
- def OnUpdate(self, event):
- self._checkNS()
- self.update()
-
- def OnShowMeta(self, event=None):
- itemsL, groupsL = self._getSelections()
- for name in itemsL + groupsL:
- self.nsc_show_meta(name)
-
-
- #-- protected methods --#
- def _checkNS(self):
- """
- Reads the new values from the txtCtrlNSHost and txtCtrlNSPort.
- If changed, it tries to connect to the new Name Server.
- """
- changed = 0
- if self.txtCtrlNSHost.IsModified():
- self.nsHost = self.txtCtrlNSHost.GetValue()
- changed = 1
- if self.txtCtrlNSPort.IsModified():
- try:
- port = int(self.txtCtrlNSPort.GetValue())
- self.nsPort = port
- except ValueError:
- self._logError('Integer required for port')
- changed = 1
- if changed:
- self.nsc_findNS()
- return changed
-
- def _log(self, line, status='info'):
- """Writing given line to the log-textCtrl.
-
- :Parameters:
- - `line`: text to log
- - `status`: status should be 'info' or 'error'. If 'info' the
- text will be colored blue, if 'error' the text will
- be red.
- """
- start = self.txtCtrlLog.GetLastPosition()
- self.txtCtrlLog.AppendText('%s\n' % line)
- color = wx.BLACK
- if status == 'info':
- color = wx.BLUE
- elif status == 'error':
- color = wx.RED
- self.txtCtrlLog.SetStyle(start, self.txtCtrlLog.GetLastPosition(),
- wx.TextAttr(color))
-
- def _logError(self, line):
- """
- Getting the traceback of previous error, and logging this.
- """
- a, b, tb = sys.exc_info()
- if a == ConnectionClosedError:
- self.NS = None
- self._log('Connection with Name Server lost', 'error')
- self.enable(False)
- buf = cStringIO.StringIO()
- traceback.print_exc(file = buf)
- self._log('%s:\n%s' % (line, buf.getvalue()), 'error')
-
- def _setNSData(self):
- """
- Updates the display of current Name Server information.
- """
- try:
- ns_name, t, ns_ip = socket.gethostbyaddr(self.nsHost)
- ns_ip = ns_ip[0]
- except:
- ns_name, ns_ip = self.nsHost, ''
- self.txtCtrlNSHost.SetValue('%s' % ns_name)
- self.txtCtrlNSPort.SetValue('%s' % self.nsPort)
- self.SetTitle('Pyro Name Server ( %s - %s )' % (ns_name, ns_ip))
-
- def _getSelections(self):
- tree = self.treeCtrlItems
- selectionsL = tree.GetSelections()
- itemsL = []
- groupsL = []
- for i in selectionsL:
- if tree.GetPyData(i) == 0:
- # group
- groupsL.append(tree.GetItemText(i))
- elif tree.GetPyData(i) == 1:
- # item
- parentName = tree.GetItemText(tree.GetItemParent(i))
- name = tree.GetItemText(i).split()[0]
- itemsL.append('%s.%s' % (parentName, name))
- return itemsL, groupsL
-
- #-- build / bind methods --#
- def _bindEvents(self):
- """
- Binding events to the gui widgets.
- """
- wx.EVT_BUTTON(self, self.buttonPing.GetId(), self.OnPing)
- wx.EVT_BUTTON(self, self.buttonUpdate.GetId(), self.OnUpdate)
- wx.EVT_BUTTON(self, self.buttonClose.GetId(), self.OnClose)
- wx.EVT_BUTTON(self, self.buttonDeleteGroup.GetId(), self.OnDeleteGroup)
- wx.EVT_BUTTON(self, self.buttonCreateGroup.GetId(), self.OnCreateGroup)
- wx.EVT_BUTTON(self, self.buttonDeleteSelected.GetId(), self.OnDelete)
- wx.EVT_BUTTON(self, self.buttonRegisterItem.GetId(), self.OnRegisterItem)
- wx.EVT_BUTTON(self, self.buttonShowMeta.GetId(), self.OnShowMeta)
- wx.EVT_BUTTON(self, self.buttonSetMeta.GetId(), self.OnSetMeta)
- wx.EVT_TEXT_ENTER(self, self.txtCtrlNSHost.GetId(), self.OnCheckNS)
- wx.EVT_TEXT_ENTER(self, self.txtCtrlNSPort.GetId(), self.OnCheckNS)
- wx.EVT_CHAR(self.treeCtrlItems, self.OnKeyPressed)
-
- def _build(self):
- """
- Building widgets and setting static widget data.
- """
- parent = wx.Panel(self, -1)
- sizer0 = wx.BoxSizer(wx.VERTICAL)
- sizer0.Add(self._buildTopBar(parent), 0, wx.ALIGN_LEFT|wx.GROW, 5)
-
- splitter = wx.SplitterWindow(parent, -1)
- #- TOP PART --------------------------------------------------------#
- topParent = wx.Panel(splitter, -1)
- topSizer = wx.BoxSizer(wx.VERTICAL)
- self.treeCtrlItems = wx.TreeCtrl(topParent, -1,
- style = wx.TR_TWIST_BUTTONS|wx.TR_LINES_AT_ROOT|wx.TR_HAS_BUTTONS|wx.TR_HIDE_ROOT|wx.TR_MULTIPLE)
- topSizer.Add(self.treeCtrlItems, 1, wx.EXPAND, 5)
- topParent.SetAutoLayout( True )
- topParent.SetSizer(topSizer )
- topSizer.Fit(topParent)
- topSizer.SetSizeHints(topParent)
- #-------------------------------------------------------------------#
- #- BOTTOM PART -----------------------------------------------------#
- bottomParent = wx.Panel(splitter,-1)
- bottomSizer = wx.BoxSizer(wx.VERTICAL)
- self.txtCtrlLog=wx_StdoutLog(bottomParent, -1, "",
- size= wx.Size(-1, 10),
- style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH)
- bottomSizer.Add(self.txtCtrlLog, 1, wx.EXPAND, 5)
- bottomParent.SetAutoLayout( True )
- bottomParent.SetSizer(bottomSizer )
- bottomSizer.Fit(bottomParent)
- bottomSizer.SetSizeHints(bottomParent)
- #-------------------------------------------------------------------#
- splitter.SplitHorizontally(topParent,bottomParent, -100)
- sizer0.Add(splitter, 1, wx.EXPAND|wx.ALIGN_CENTRE, 5)
-
- self.buttonClose = wx.Button(parent, -1, 'Close') # buttonClose
- sizer0.Add(self.buttonClose, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- parent.SetAutoLayout( True )
- parent.SetSizer( sizer0 )
- sizer0.Fit( parent)
- sizer0.SetSizeHints( parent)
-
- def _buildTopBar(self, parent):
- """
- Widget building
- """
- sizer0 = wx.BoxSizer(wx.VERTICAL)
- #--
- sizer1 = wx.BoxSizer(wx.HORIZONTAL)
- txt1 = wx.StaticText(parent, -1, 'Name Server:')
- txt1.SetForegroundColour(wx.BLUE)
- sizer1.Add(txt1, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTRE|wx.ALL, 5)
- self.txtCtrlNSHost = wx.TextCtrl(parent, -1, '', size=wx.Size(300,-1),
- style=wx.TE_PROCESS_ENTER)
- sizer1.Add(self.txtCtrlNSHost, 0,
- wx.ALIGN_LEFT|wx.ALIGN_BOTTOM|wx.TOP|wx.BOTTOM, 5)
- txtColon = wx.StaticText(parent, -1, ':')
- txtColon.SetForegroundColour(wx.BLUE)
- sizer1.Add(txtColon, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTRE|wx.TOP|wx.BOTTOM, 5)
- self.txtCtrlNSPort = wx.TextCtrl(parent, -1, '', size=wx.Size(50,-1),
- style=wx.TE_PROCESS_ENTER)
- sizer1.Add(self.txtCtrlNSPort, 0,
- wx.ALIGN_LEFT|wx.ALIGN_BOTTOM|wx.TOP|wx.BOTTOM, 5)
- self.buttonUpdate = wx.Button(parent, -1, 'Update') # buttonUpdate
- sizer1.Add(self.buttonUpdate, 0, wx.ALIGN_LEFT|wx.ALL, 5)
- self.buttonPing = wx.Button(parent, -1, 'Ping') # buttonPing
- sizer1.Add(self.buttonPing, 0, wx.ALIGN_LEFT|wx.ALL, 5)
- sizer0.Add(sizer1, 0, wx.ALIGN_LEFT|wx.GROW, 5)
- #--
- lineH1 = wx.StaticLine(parent, -1, style=wx.LI_HORIZONTAL)
- sizer0.Add(lineH1, 0, wx.GROW|wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT, 5)
- #--
- sizer2 = wx.BoxSizer(wx.HORIZONTAL)
- self.buttonDeleteGroup = wx.Button(parent, -1, ' Delete group(s) ')
- sizer2.Add(self.buttonDeleteGroup, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTER|wx.TOP|wx.LEFT|wx.BOTTOM, 5)
- self.buttonCreateGroup = wx.Button(parent, -1, ' Create group... ')
- sizer2.Add(self.buttonCreateGroup, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTER|wx.TOP|wx.LEFT|wx.BOTTOM, 5)
- lineV1 = wx.StaticLine(parent, -1, style=wx.LI_VERTICAL)
- sizer2.Add(lineV1, 0,
- wx.ALL|wx.GROW, 5)
- self.buttonDeleteSelected = wx.Button(parent, -1,
- ' Delete item(s) ')
- sizer2.Add(self.buttonDeleteSelected, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTER|wx.ALL, 5)
- self.buttonRegisterItem = wx.Button(parent, -1, ' Register item... ')
- sizer2.Add(self.buttonRegisterItem, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, 5)
- lineV2 = wx.StaticLine(parent, -1, style=wx.LI_VERTICAL)
- sizer2.Add(lineV2, 0,
- wx.ALL|wx.GROW, 5)
- self.buttonShowMeta = wx.Button(parent, -1, ' Show meta ')
- sizer2.Add(self.buttonShowMeta, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, 5)
- self.buttonSetMeta = wx.Button(parent, -1, ' Set meta ')
- sizer2.Add(self.buttonSetMeta, 0,
- wx.ALIGN_LEFT|wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, 5)
- sizer0.Add(sizer2, 0, wx.ALIGN_LEFT, 5)
- #--
- return sizer0
-
-#----------------------------------------------------------------------#
-class WinMessageDialog(wx.Dialog):
- '''
- :Purpose: Message dialog for MS Win.
- The parameters are the same as for wx.MessageDialog
-
- :Detail: On Windows the native wx.MessageDialog can not
- be centered on top of the parent or positioned, ie.
- it will always be centered on the screen.
-
- '''
- def __init__(self, parent=None, message='Message:',
- caption='Message', style=wx.OK|wx.CANCEL,pos=wx.DefaultPosition):
- wx.Dialog.__init__(self, parent, -1, caption, size=wx.DefaultSize,
- style=wx.CAPTION, pos=pos)
- self._build(message, style)
- self.Fit()
-
- def OnButton(self, ev):
- self.EndModal(ev.GetId())
-
- def _build(self, msg, style):
- parent = wx.Panel(self, -1)
- sizer = wx.BoxSizer(wx.VERTICAL)
- #-- icon and message --#
- msgSizer = wx.BoxSizer(wx.HORIZONTAL)
-
- # icon #
- artID = None
- if style & wx.ICON_EXCLAMATION == wx.ICON_EXCLAMATION \
- or style & wx.ICON_HAND == wx.ICON_HAND:
- artID = wx.ART_WARNING
- elif style & wx.ICON_ERROR == wx.ICON_ERROR:
- artID = wx.ART_ERROR
- elif style & wx.ICON_QUESTION == wx.ICON_QUESTION:
- artID = wx.ART_QUESTION
- elif style & wx.ICON_INFORMATION == wx.ICON_INFORMATION:
- artID = wx.ART_INFORMATION
- if artID:
- bmp = wx.ArtProvider_GetBitmap(artID, wx.ART_MESSAGE_BOX, (48,48))
- bmpIcon = wx.StaticBitmap(parent, -1, bmp)
- msgSizer.Add(bmpIcon, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- # msg #
- txtMsg = wx.StaticText(parent, -1, msg, style=wx.ALIGN_CENTRE)
- msgSizer.Add(txtMsg, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
-
- sizer.Add(msgSizer, 0, wx.ALIGN_CENTRE, 5)
- line = wx.StaticLine(parent, -1, style=wx.LI_HORIZONTAL)
- sizer.Add(line, 0, wx.GROW|wx.ALL, 5)
- #-- buttons --#
- btnSizer = wx.BoxSizer(wx.HORIZONTAL)
-
- if style & wx.YES_NO == wx.YES_NO:
- btnYes = wx.Button(parent, wx.ID_YES, 'Yes')
- btnSizer.Add(btnYes, 0,
- wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT, 10)
- btnNo = wx.Button(parent, wx.ID_NO, 'No')
- btnSizer.Add(btnNo, 0,
- wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT, 10)
- if style & wx.YES_DEFAULT == wx.YES_DEFAULT:
- btnYes.SetDefault()
- elif style & wx.NO_DEFAULT == wx.NO_DEFAULT:
- btnNo.SetDefault()
- wx.EVT_BUTTON(self, wx.ID_YES, self.OnButton)
- wx.EVT_BUTTON(self, wx.ID_NO, self.OnButton)
- else:
- if style & wx.OK == wx.OK:
- btnOK = wx.Button(parent, wx.ID_OK, 'OK')
- btnOK.SetDefault()
- btnSizer.Add(btnOK, 0,
- wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT, 10)
- if style & wx.CANCEL == wx.CANCEL:
- btnCancel = wx.Button(parent, wx.ID_CANCEL, 'Cancel')
- btnSizer.Add(btnCancel, 0,
- wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT, 10)
-
- sizer.Add(btnSizer, 0, wx.ALIGN_CENTRE|wx.TOP, 5)
- #--
- parent.SetAutoLayout( True )
- parent.SetSizer(sizer )
- sizer.Fit( parent )
- sizer.SetSizeHints( parent )
-
-#----------------------------------------------------------------------#
-def main(argv):
- """
- The default host will be None if the environment variable
- PYRO_NS_HOSTNAME is not set.
- The default port will be 9090 (Pyro.config.PYRO_NS_PORT) if
- PYRO_NS_BC_PORT environment variable is not set.
- """
- nsHost = os.getenv('PYRO_NS_HOSTNAME')
- nsPort = os.getenv('PYRO_NS_BC_PORT') or Pyro.config.PYRO_NS_PORT
- bcAddr = Pyro.config.PYRO_NS_BC_ADDR
- if bcAddr:
- bcAddr=bcAddr.strip()
- bcAddr=bcAddr or None
-
- class wx_NSCApp(wx.App):
- def OnInit(self):
- Pyro.core.initClient()
- frame = wx_NSC(nsHost, nsPort, bcAddr)
- frame.SetSize(wx.Size(630,500))
- frame.Show(True)
- return True
-
- app = wx_NSCApp(0)
- app.MainLoop()
-
-# allow easy usage with python -m
-if __name__=="__main__":
- main(sys.argv)
diff --git a/modules/Pyro/xnsc.py b/modules/Pyro/xnsc.py
deleted file mode 100644
index ce97b555..00000000
--- a/modules/Pyro/xnsc.py
+++ /dev/null
@@ -1,350 +0,0 @@
-#############################################################################
-#
-# Pyro Name Server Control Tool with GUI
-#
-# This is part of "Pyro" - Python Remote Objects
-# which is (c) Irmen de Jong - irmen@razorvine.net
-#
-#############################################################################
-
-import sys, time
-from Tkinter import *
-from Pyro.naming import NameServerLocator
-from Pyro.errors import NamingError, ConnectionClosedError
-import Pyro.core
-
-class xnscFrame(object):
-
- def quit(self):
- self.master.quit()
-
- def clearOutput(self):
- self.text_out.delete('1.0',AtEnd())
- self.outputln(time.asctime())
-
- def output(self,txt):
- self.text_out.insert(AtEnd(),txt)
- self.text_out.yview(AtEnd())
-
- def outputln(self,txt):
- self.output(txt+'\n')
-
- def b_clearoutput(self, event=None):
- self.clearOutput()
-
- def b_findNS(self,event=None):
- self.clearOutput()
- hst,prt = None,None
- self.authID = self.entry_AuthID.get()
- if event:
- # Pressed in entry box
- addr = self.entry_NSloc.get().split(':')
- hst=addr[0]
- if len(addr)>1:
- prt=int(addr[1])
- # We need to keep the host/port for the shutdown button...
- self.NShost = hst
- self.NSport = prt
- self.outputln('*** finding NS')
- locator=NameServerLocator(identification=self.authID)
- bcaddr=self.entry_BCAddr.get().strip() or None
- try:
- self.NS=locator.getNS(hst,prt,trace=1,bcaddr=bcaddr)
- self.entry_NSloc.delete(0,AtEnd())
- self.entry_NSloc.insert(AtEnd(),self.NS.URI.address+':'+str(self.NS.URI.port))
- self.entry_AuthID.delete(0,AtEnd())
- self.entry_AuthID.insert(AtEnd(),'****')
-
- self.enable_buttons()
- self.outputln(' found, URI='+str(self.NS.URI))
- except:
- self.disable_buttons()
- self.outputln(' not found:');
- a,b = sys.exc_info()[:2]
- self.outputln(' '+str(a)+' : '+str(b))
- self.outputln('See standard output for trace messages.')
-
- def handle_comm_error(self,name):
- # Handle a communication error: disable buttons and print exception
- a,b = sys.exc_info()[:2]
- self.outputln('*** '+name+': exception occured:')
- self.outputln(' '+str(a)+' : '+str(b))
- if a==ConnectionClosedError:
- self.disable_buttons()
- self.outputln('*** Connection with NS lost - reconnect')
-
- def printError(self, msg, exc):
- line="## %s: " % msg
- if isinstance(exc.args, (list, tuple)):
- line+="; ".join(exc.args[:-1])
- else:
- line+=exc.args
- line+=" ##"
- self.outputln(line)
-
- def b_list(self,event=None):
- names = self.entry_arg.get().split()
- try:
- if names:
- self.outputln('*** List groups:')
- for n in names:
- self.output(' '+self.NS.fullName(n)+' --> ')
- try:
- self.printList(self.NS.list(n))
- except NamingError,x:
- self.printError("can't list",x)
- else:
- self.outputln('*** List default group:')
- self.printList(self.NS.list(None))
- except:
- self.handle_comm_error('list')
- def printList(self,lst):
- out='( '
- lst.sort()
- for (n,t) in lst:
- if t==0:
- out+='['+n+'] '
- elif t==1:
- out+=n+' '
- self.outputln(out+')')
-
- def b_listall(self,event=None):
- try:
- flat=self.NS.flatlist()
- flat.sort()
- self.outputln('--------- Flat dump of namespace')
- for (name,val) in flat:
- self.outputln(' '+name+' --> '+str(val))
- self.outputln('--------- End dump')
- except:
- self.handle_comm_error('listall')
-
- def b_register(self,event=None):
- self.outputln('*** registering with NS:')
- try:
- (name,uri) = self.entry_arg.get().split()
- try:
- self.NS.register(name,uri)
- uri=Pyro.core.PyroURI(uri)
- self.outputln(' '+name+' --> '+str(uri))
- except NamingError,x:
- self.printError("Error from NS", x)
- except:
- self.handle_comm_error('register')
- except ValueError:
- self.outputln(' Invalid arguments, use " ".')
-
- def b_resolve(self,event=None):
- self.outputln('*** resolving:')
- name=self.entry_arg.get()
- if not name:
- self.outputln(' Invalid arguments, use "".')
- else:
- try:
- uri=self.NS.resolve(name)
- self.outputln(' '+name+' --> '+str(uri))
- except NamingError,x:
- self.printError("can't resolve '"+name+"'", x)
- except:
- self.handle_comm_error('resolve')
-
- def b_remove(self,event=None):
- self.outputln('*** removing:')
- name=self.entry_arg.get()
- if not name:
- self.outputln(' Invalid arguments, use "".')
- else:
- try:
- self.NS.unregister(name)
- self.outputln('*** removed: '+name)
- except NamingError,x:
- self.printError("Can't remove '"+name+"'", x)
- except:
- self.handle_comm_error('remove')
-
- def b_ping(self,event=None):
- try:
- self.NS.ping()
- self.outputln('*** ping NS: up and running!')
- except:
- self.handle_comm_error('ping')
-
- def b_creategroup(self,event=None):
- name=self.entry_arg.get()
- if not name:
- self.outputln(' Invalid arguments, use "".')
- else:
- try:
- self.NS.createGroup(name)
- self.outputln('*** group created: '+name)
- except Exception,x:
- self.printError("Can't create group",x)
-
- def b_deletegroup(self,event=None):
- name=self.entry_arg.get()
- if not name:
- self.outputln(' Invalid arguments, use "".')
- else:
- try:
- self.NS.deleteGroup(name)
- self.outputln('*** group deleted: '+name)
- except Exception,x:
- self.printError("Can't delete group",x)
-
- def b_showmeta(self,event=None):
- name=self.NS.fullName(self.entry_arg.get())
- self.outputln('*** showing meta info of: '+name)
- try:
- self.outputln("system meta info : "+str(self.NS._getSystemMeta(name)))
- self.outputln(" user meta info : "+str(self.NS.getMeta(name)))
- except NamingError,x:
- self.printError("Can't get Meta info",x)
- except:
- self.handle_comm_error('showmeta')
-
- def b_setmeta(self,event=None):
- self.outputln('*** setting user meta data:')
- try:
- (name,meta) = self.entry_arg.get().split(None,1)
- try:
- self.NS.setMeta(name,meta)
- self.outputln(' '+name+' META='+meta)
- except NamingError,x:
- self.printError("Error from NS", x)
- except:
- self.handle_comm_error('setmeta')
- except ValueError:
- self.outputln(' Invalid arguments, use " ".')
-
- def b_resync(self,event=None):
- self.outputln("*** resync NS with twin")
- try:
- self.NS.resync()
- except NamingError,x:
- self.printError("Can't resync",x)
- except:
- self.handle_comm_error('resync')
-
- def b_shutdown(self,event=None):
- locator = NameServerLocator(self.authID)
- try:
- result = locator.sendSysCommand('shutdown',self.NShost,self.NSport,0)
- self.outputln('*** The NS replied to the shutdown message: '+str(result))
- except:
- self.disable_buttons()
- self.outputln(' not found:');
- a,b = sys.exc_info()[:2]
- self.outputln(' '+str(a)+' : '+str(b))
-
- def enable_buttons(self):
- self.enable_disable_buttons(NORMAL)
-
- def disable_buttons(self):
- self.enable_disable_buttons(DISABLED)
-
- def enable_disable_buttons(self,state):
- self.but_ping['state']=state
- self.but_list['state']=state
- self.but_listall['state']=state
- self.but_resolve['state']=state
- self.but_register['state']=state
- self.but_remove['state']=state
- self.but_shutdown['state']=state
- self.but_showmeta['state']=state
- self.but_setmeta['state']=state
- self.but_resync['state']=state
- self.but_creategroup['state']=state
- self.but_deletegroup['state']=state
-
- def createWidgets(self):
- frame_top = Frame(self.master,borderwidth=2,relief=GROOVE)
- frame_top1 = Frame(frame_top,borderwidth=0)
- Label(frame_top1,text='Name Server Location (host:port)').pack(side=LEFT,anchor=W)
- self.entry_NSloc=Entry(frame_top1)
- self.entry_NSloc.bind('',self.b_findNS)
- self.entry_NSloc.pack(expand=1,fill=X,side=LEFT)
- Label(frame_top1,text='(press enter)').pack(side=LEFT,anchor=W)
- frame_top1.pack(fill=X)
- frame_top2 = Frame(frame_top,borderwidth=0)
- frame_top3 = Frame(frame_top,borderwidth=0)
- Label(frame_top2,text='Authorization ID:').pack(side=LEFT,anchor=W)
- self.entry_AuthID=Entry(frame_top2)
- self.entry_AuthID.bind('',self.b_findNS)
- self.entry_AuthID.pack(expand=1,fill=X,side=LEFT)
- Label(frame_top3,text='Broadcast address:').pack(side=LEFT,anchor=W)
- self.entry_BCAddr=Entry(frame_top3)
- self.entry_BCAddr.pack(expand=1,fill=X,side=LEFT)
- self.but_findNS=Button(frame_top3,text='Auto Discover NS',command=self.b_findNS)
- self.QUIT=Button(frame_top3,text='QUIT',command=self.quit)
- self.QUIT.pack(side=RIGHT)
- self.but_findNS.pack(side=RIGHT)
- frame_top2.pack(fill=X)
- frame_top3.pack(fill=X)
- frame_top.pack(fill=X)
-
- frame_cmds=Frame(self.master)
- frame_cmds1=Frame(frame_cmds)
- frame_cmds2=Frame(frame_cmds)
- self.but_ping=Button(frame_cmds1,text='Ping',state=DISABLED,command=self.b_ping)
- self.but_list=Button(frame_cmds1,text='List',state=DISABLED,command=self.b_list)
- self.but_listall=Button(frame_cmds1,text='List All',state=DISABLED,command=self.b_listall)
- self.but_register=Button(frame_cmds2,text='Register',state=DISABLED,command=self.b_register)
- self.but_resolve=Button(frame_cmds1,text='Resolve',state=DISABLED,command=self.b_resolve)
- self.but_remove=Button(frame_cmds2,text='Remove',state=DISABLED,command=self.b_remove)
- self.but_creategroup=Button(frame_cmds2,text='Create Group',state=DISABLED,command=self.b_creategroup)
- self.but_deletegroup=Button(frame_cmds2,text='Delete Group',state=DISABLED,command=self.b_deletegroup)
- self.but_showmeta=Button(frame_cmds1,text='Show Meta',state=DISABLED,command=self.b_showmeta)
- self.but_setmeta=Button(frame_cmds1,text='Set Meta',state=DISABLED,command=self.b_setmeta)
- self.but_resync=Button(frame_cmds1,text='ReSync',state=DISABLED,command=self.b_resync)
- self.but_shutdown=Button(frame_cmds1,text='Shutdown',state=DISABLED,command=self.b_shutdown)
- self.but_clearoutput=Button(frame_cmds2,text='Clear output',command=self.b_clearoutput)
- Label(frame_cmds,text='NS commands:').pack(side=LEFT)
- self.but_ping.pack(side=LEFT)
- self.but_list.pack(side=LEFT)
- self.but_listall.pack(side=LEFT)
- self.but_register.pack(side=LEFT)
- self.but_resolve.pack(side=LEFT)
- self.but_remove.pack(side=LEFT)
- self.but_creategroup.pack(side=LEFT)
- self.but_deletegroup.pack(side=LEFT)
- self.but_showmeta.pack(side=LEFT)
- self.but_setmeta.pack(side=LEFT)
- self.but_resync.pack(side=LEFT)
- self.but_shutdown.pack(side=LEFT)
- self.but_clearoutput.pack(side=RIGHT)
-
- frame_args=Frame(self.master,borderwidth=2)
- self.entry_arg=Entry(frame_args)
- Label(frame_args,text='Command arguments').pack(side=LEFT)
- self.entry_arg.pack(expand=1,fill=X)
-
- frame_output=Frame(self.master)
- ys=Scrollbar(frame_output,orient=VERTICAL)
- self.text_out=Text(frame_output,yscrollcommand=ys.set,width=90,height=20)
- ys['command']=self.text_out.yview
- ys.pack(fill=Y,side=LEFT)
- self.text_out.pack(side=LEFT,expand=1,fill=BOTH)
-
- # pack root children:
- frame_cmds1.pack(fill=X)
- frame_cmds2.pack(fill=X)
- frame_cmds.pack(fill=X)
- frame_args.pack(fill=X)
- frame_output.pack(fill=BOTH,expand=1)
-
- def __init__(self, master=None):
- self.master = master
- self.createWidgets()
-
-def main(argv):
- Pyro.core.initClient()
- root=Tk()
- root.title('xnsc - Pyro Name Server control tool - Pyro version '+Pyro.constants.VERSION)
- app=xnscFrame(root)
- root.protocol('WM_DELETE_WINDOW',root.quit)
- root.mainloop()
-
-# allow easy usage with python -m
-if __name__=="__main__":
- import sys
- main(sys.argv)
diff --git a/modules/_mysql.pyd b/modules/_mysql.pyd
deleted file mode 100644
index 079a5053..00000000
Binary files a/modules/_mysql.pyd and /dev/null differ
diff --git a/modules/_mysql_exceptions.py b/modules/_mysql_exceptions.py
deleted file mode 100644
index 3241e740..00000000
--- a/modules/_mysql_exceptions.py
+++ /dev/null
@@ -1,87 +0,0 @@
-"""_mysql_exceptions: Exception classes for _mysql and MySQLdb.
-
-These classes are dictated by the DB API v2.0:
-
- http://www.python.org/topics/database/DatabaseAPI-2.0.html
-"""
-
-try:
- from exceptions import Exception, StandardError, Warning
-except ImportError:
- # Python 3
- StandardError = Exception
-
-
-class MySQLError(StandardError):
-
- """Exception related to operation with MySQL."""
-
-
-class Warning(Warning, MySQLError):
-
- """Exception raised for important warnings like data truncations
- while inserting, etc."""
-
-class Error(MySQLError):
-
- """Exception that is the base class of all other error exceptions
- (not Warning)."""
-
-
-class InterfaceError(Error):
-
- """Exception raised for errors that are related to the database
- interface rather than the database itself."""
-
-
-class DatabaseError(Error):
-
- """Exception raised for errors that are related to the
- database."""
-
-
-class DataError(DatabaseError):
-
- """Exception raised for errors that are due to problems with the
- processed data like division by zero, numeric value out of range,
- etc."""
-
-
-class OperationalError(DatabaseError):
-
- """Exception raised for errors that are related to the database's
- operation and not necessarily under the control of the programmer,
- e.g. an unexpected disconnect occurs, the data source name is not
- found, a transaction could not be processed, a memory allocation
- error occurred during processing, etc."""
-
-
-class IntegrityError(DatabaseError):
-
- """Exception raised when the relational integrity of the database
- is affected, e.g. a foreign key check fails, duplicate key,
- etc."""
-
-
-class InternalError(DatabaseError):
-
- """Exception raised when the database encounters an internal
- error, e.g. the cursor is not valid anymore, the transaction is
- out of sync, etc."""
-
-
-class ProgrammingError(DatabaseError):
-
- """Exception raised for programming errors, e.g. table not found
- or already exists, syntax error in the SQL statement, wrong number
- of parameters specified, etc."""
-
-
-class NotSupportedError(DatabaseError):
-
- """Exception raised in case a method or database API was used
- which is not supported by the database, e.g. requesting a
- .rollback() on a connection that does not support transaction or
- has transactions turned off."""
-
-
diff --git a/modules/pytz/__init__.py b/modules/pytz/__init__.py
deleted file mode 100644
index 58d81593..00000000
--- a/modules/pytz/__init__.py
+++ /dev/null
@@ -1,1299 +0,0 @@
-'''
-datetime.tzinfo timezone definitions generated from the
-Olson timezone database:
-
- ftp://elsie.nci.nih.gov/pub/tz*.tar.gz
-
-See the datetime section of the Python Library Reference for information
-on how to use these modules.
-'''
-
-# The Olson database has historically been updated about 4 times a year
-OLSON_VERSION = '2005r'
-VERSION = OLSON_VERSION
-#VERSION = OLSON_VERSION + '.2'
-__version__ = OLSON_VERSION
-
-OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling
-
-__all__ = [
- 'timezone', 'all_timezones', 'common_timezones', 'utc',
- 'AmbiguousTimeError', 'country_timezones', '_',
- ]
-
-import sys, datetime, os.path, gettext
-from tzinfo import AmbiguousTimeError, unpickler
-
-# Enable this when we get some translations?
-# We want an i18n API that is useful to programs using Python's gettext
-# module, as well as the Zope3 i18n package. Perhaps we should just provide
-# the POT file and translations, and leave it up to callers to make use
-# of them.
-#
-# t = gettext.translation(
-# 'pytz', os.path.join(os.path.dirname(__file__), 'locales'),
-# fallback=True
-# )
-# def _(timezone_name):
-# """Translate a timezone name using the current locale, returning Unicode"""
-# return t.ugettext(timezone_name)
-
-def timezone(zone):
- ''' Return a datetime.tzinfo implementation for the given timezone
-
- >>> from datetime import datetime, timedelta
- >>> utc = timezone('UTC')
- >>> eastern = timezone('US/Eastern')
- >>> eastern.zone
- 'US/Eastern'
- >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
- >>> loc_dt = utc_dt.astimezone(eastern)
- >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
- >>> loc_dt.strftime(fmt)
- '2002-10-27 01:00:00 EST (-0500)'
- >>> (loc_dt - timedelta(minutes=10)).strftime(fmt)
- '2002-10-27 00:50:00 EST (-0500)'
- >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt)
- '2002-10-27 01:50:00 EDT (-0400)'
- >>> (loc_dt + timedelta(minutes=10)).strftime(fmt)
- '2002-10-27 01:10:00 EST (-0500)'
- '''
- zone = _munge_zone(zone)
- if zone.upper() == 'UTC':
- return utc
- zone_bits = ['zoneinfo'] + zone.split('/')
-
- # Load zone's module
- module_name = '.'.join(zone_bits)
- try:
- module = __import__(module_name, globals(), locals())
- except ImportError:
- raise KeyError, zone
- rv = module
- for bit in zone_bits[1:]:
- rv = getattr(rv, bit)
-
- # Return instance from that module
- rv = getattr(rv, zone_bits[-1])
- assert type(rv) != type(sys)
- return rv
-
-
-def _munge_zone(zone):
- ''' Convert a zone into a string suitable for use as a Python identifier
- '''
- return zone.replace('+', '_plus_').replace('-', '_minus_')
-
-
-ZERO = datetime.timedelta(0)
-HOUR = datetime.timedelta(hours=1)
-
-
-class UTC(datetime.tzinfo):
- """UTC
-
- Identical to the reference UTC implementation given in Python docs except
- that it unpickles using the single module global instance defined beneath
- this class declaration.
-
- Also contains extra attributes and methods to match other pytz tzinfo
- instances.
- """
- zone = "UTC"
-
- def utcoffset(self, dt):
- return ZERO
-
- def tzname(self, dt):
- return "UTC"
-
- def dst(self, dt):
- return ZERO
-
- def __reduce__(self):
- return _UTC, ()
-
- def localize(self, dt, is_dst=False):
- '''Convert naive time to local time'''
- if dt.tzinfo is not None:
- raise ValueError, 'Not naive datetime (tzinfo is already set)'
- return dt.replace(tzinfo=self)
-
- def normalize(self, dt, is_dst=False):
- '''Correct the timezone information on the given datetime'''
- if dt.tzinfo is None:
- raise ValueError, 'Naive time - no tzinfo set'
- return dt.replace(tzinfo=self)
-
- def __repr__(self):
- return ""
-
- def __str__(self):
- return "UTC"
-
-
-UTC = utc = UTC() # UTC is a singleton
-
-
-def _UTC():
- """Factory function for utc unpickling.
-
- Makes sure that unpickling a utc instance always returns the same
- module global.
-
- These examples belong in the UTC class above, but it is obscured; or in
- the README.txt, but we are not depending on Python 2.4 so integrating
- the README.txt examples with the unit tests is not trivial.
-
- >>> import datetime, pickle
- >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
- >>> naive = dt.replace(tzinfo=None)
- >>> p = pickle.dumps(dt, 1)
- >>> naive_p = pickle.dumps(naive, 1)
- >>> len(p), len(naive_p), len(p) - len(naive_p)
- (60, 43, 17)
- >>> new = pickle.loads(p)
- >>> new == dt
- True
- >>> new is dt
- False
- >>> new.tzinfo is dt.tzinfo
- True
- >>> utc is UTC is timezone('UTC')
- True
- >>> utc is timezone('GMT')
- False
- """
- return utc
-_UTC.__safe_for_unpickling__ = True
-
-
-def _p(*args):
- """Factory function for unpickling pytz tzinfo instances.
-
- Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle
- by shortening the path.
- """
- return unpickler(*args)
-_p.__safe_for_unpickling__ = True
-
-_country_timezones_cache = {}
-
-def country_timezones(iso3166_code):
- """Return a list of timezones used in a particular country.
-
- iso3166_code is the two letter code used to identify the country.
-
- >>> country_timezones('ch')
- ['Europe/Zurich']
- >>> country_timezones('CH')
- ['Europe/Zurich']
- >>> country_timezones('XXX')
- Traceback (most recent call last):
- ...
- KeyError: 'XXX'
- """
- iso3166_code = iso3166_code.upper()
- if not _country_timezones_cache:
- zone_tab_name = os.path.join(os.path.dirname(__file__), 'zone.tab')
- for line in open(zone_tab_name):
- if line.startswith('#'):
- continue
- code, coordinates, zone = line.split(None, 4)[:3]
- try:
- _country_timezones_cache[code].append(zone)
- except KeyError:
- _country_timezones_cache[code] = [zone]
- return _country_timezones_cache[iso3166_code]
-
-# Time-zone info based solely on fixed offsets
-
-class _FixedOffset(datetime.tzinfo):
-
- zone = None # to match the standard pytz API
-
- def __init__(self, minutes):
- if abs(minutes) >= 1440:
- raise ValueError("absolute offset is too large", minutes)
- self._minutes = minutes
- self._offset = datetime.timedelta(minutes=minutes)
-
- def utcoffset(self, dt):
- return self._offset
-
- def __reduce__(self):
- return FixedOffset, (self._minutes, )
-
- def dst(self, dt):
- return None
-
- def tzname(self, dt):
- return None
-
- def __repr__(self):
- return 'pytz.FixedOffset(%d)' % self._minutes
-
- def localize(self, dt, is_dst=False):
- '''Convert naive time to local time'''
- if dt.tzinfo is not None:
- raise ValueError, 'Not naive datetime (tzinfo is already set)'
- return dt.replace(tzinfo=self)
-
- def normalize(self, dt, is_dst=False):
- '''Correct the timezone information on the given datetime'''
- if dt.tzinfo is None:
- raise ValueError, 'Naive time - no tzinfo set'
- return dt.replace(tzinfo=self)
-
-def FixedOffset(offset, _tzinfos = {}):
- """return a fixed-offset timezone based off a number of minutes.
-
- >>> one = FixedOffset(-330)
- >>> one
- pytz.FixedOffset(-330)
- >>> one.utcoffset(datetime.datetime.now())
- datetime.timedelta(-1, 66600)
-
- >>> two = FixedOffset(1380)
- >>> two
- pytz.FixedOffset(1380)
- >>> two.utcoffset(datetime.datetime.now())
- datetime.timedelta(0, 82800)
-
- The datetime.timedelta must be between the range of -1 and 1 day,
- non-inclusive.
-
- >>> FixedOffset(1440)
- Traceback (most recent call last):
- ...
- ValueError: ('absolute offset is too large', 1440)
-
- >>> FixedOffset(-1440)
- Traceback (most recent call last):
- ...
- ValueError: ('absolute offset is too large', -1440)
-
- An offset of 0 is special-cased to return UTC.
-
- >>> FixedOffset(0) is UTC
- True
-
- There should always be only one instance of a FixedOffset per timedelta.
- This should be true for multiple creation calls.
-
- >>> FixedOffset(-330) is one
- True
- >>> FixedOffset(1380) is two
- True
-
- It should also be true for pickling.
-
- >>> import pickle
- >>> pickle.loads(pickle.dumps(one)) is one
- True
- >>> pickle.loads(pickle.dumps(two)) is two
- True
-
- """
-
- if offset == 0:
- return UTC
-
- info = _tzinfos.get(offset)
- if info is None:
- # We haven't seen this one before. we need to save it.
-
- # Use setdefault to avoid a race condition and make sure we have
- # only one
- info = _tzinfos.setdefault(offset, _FixedOffset(offset))
-
- return info
-
-FixedOffset.__safe_for_unpickling__ = True
-
-def _test():
- import doctest, os, sys
- sys.path.insert(0, os.pardir)
- import pytz
- return doctest.testmod(pytz)
-
-if __name__ == '__main__':
- _test()
-
-common_timezones = \
-['Africa/Abidjan',
- 'Africa/Accra',
- 'Africa/Addis_Ababa',
- 'Africa/Algiers',
- 'Africa/Asmera',
- 'Africa/Bamako',
- 'Africa/Bangui',
- 'Africa/Banjul',
- 'Africa/Bissau',
- 'Africa/Blantyre',
- 'Africa/Brazzaville',
- 'Africa/Bujumbura',
- 'Africa/Cairo',
- 'Africa/Casablanca',
- 'Africa/Ceuta',
- 'Africa/Conakry',
- 'Africa/Dakar',
- 'Africa/Dar_es_Salaam',
- 'Africa/Djibouti',
- 'Africa/Douala',
- 'Africa/El_Aaiun',
- 'Africa/Freetown',
- 'Africa/Gaborone',
- 'Africa/Harare',
- 'Africa/Johannesburg',
- 'Africa/Kampala',
- 'Africa/Khartoum',
- 'Africa/Kigali',
- 'Africa/Kinshasa',
- 'Africa/Lagos',
- 'Africa/Libreville',
- 'Africa/Lome',
- 'Africa/Luanda',
- 'Africa/Lubumbashi',
- 'Africa/Lusaka',
- 'Africa/Malabo',
- 'Africa/Maputo',
- 'Africa/Maseru',
- 'Africa/Mbabane',
- 'Africa/Mogadishu',
- 'Africa/Monrovia',
- 'Africa/Nairobi',
- 'Africa/Ndjamena',
- 'Africa/Niamey',
- 'Africa/Nouakchott',
- 'Africa/Ouagadougou',
- 'Africa/Porto-Novo',
- 'Africa/Sao_Tome',
- 'Africa/Timbuktu',
- 'Africa/Tripoli',
- 'Africa/Tunis',
- 'Africa/Windhoek',
- 'America/Adak',
- 'America/Anchorage',
- 'America/Anguilla',
- 'America/Antigua',
- 'America/Araguaina',
- 'America/Aruba',
- 'America/Asuncion',
- 'America/Atka',
- 'America/Bahia',
- 'America/Barbados',
- 'America/Belem',
- 'America/Belize',
- 'America/Boa_Vista',
- 'America/Bogota',
- 'America/Boise',
- 'America/Buenos_Aires',
- 'America/Cambridge_Bay',
- 'America/Campo_Grande',
- 'America/Cancun',
- 'America/Caracas',
- 'America/Catamarca',
- 'America/Cayenne',
- 'America/Cayman',
- 'America/Chicago',
- 'America/Chihuahua',
- 'America/Coral_Harbour',
- 'America/Cordoba',
- 'America/Costa_Rica',
- 'America/Cuiaba',
- 'America/Curacao',
- 'America/Danmarkshavn',
- 'America/Dawson',
- 'America/Dawson_Creek',
- 'America/Denver',
- 'America/Detroit',
- 'America/Dominica',
- 'America/Edmonton',
- 'America/Eirunepe',
- 'America/El_Salvador',
- 'America/Ensenada',
- 'America/Fort_Wayne',
- 'America/Fortaleza',
- 'America/Glace_Bay',
- 'America/Godthab',
- 'America/Goose_Bay',
- 'America/Grand_Turk',
- 'America/Grenada',
- 'America/Guadeloupe',
- 'America/Guatemala',
- 'America/Guayaquil',
- 'America/Guyana',
- 'America/Halifax',
- 'America/Havana',
- 'America/Hermosillo',
- 'America/Indianapolis',
- 'America/Inuvik',
- 'America/Iqaluit',
- 'America/Jamaica',
- 'America/Jujuy',
- 'America/Juneau',
- 'America/Knox_IN',
- 'America/La_Paz',
- 'America/Lima',
- 'America/Los_Angeles',
- 'America/Louisville',
- 'America/Maceio',
- 'America/Managua',
- 'America/Manaus',
- 'America/Martinique',
- 'America/Mazatlan',
- 'America/Mendoza',
- 'America/Menominee',
- 'America/Merida',
- 'America/Mexico_City',
- 'America/Miquelon',
- 'America/Monterrey',
- 'America/Montevideo',
- 'America/Montreal',
- 'America/Montserrat',
- 'America/Nassau',
- 'America/New_York',
- 'America/Nipigon',
- 'America/Nome',
- 'America/Noronha',
- 'America/Panama',
- 'America/Pangnirtung',
- 'America/Paramaribo',
- 'America/Phoenix',
- 'America/Port-au-Prince',
- 'America/Port_of_Spain',
- 'America/Porto_Acre',
- 'America/Porto_Velho',
- 'America/Puerto_Rico',
- 'America/Rainy_River',
- 'America/Rankin_Inlet',
- 'America/Recife',
- 'America/Regina',
- 'America/Rio_Branco',
- 'America/Rosario',
- 'America/Santiago',
- 'America/Santo_Domingo',
- 'America/Sao_Paulo',
- 'America/Scoresbysund',
- 'America/Shiprock',
- 'America/St_Johns',
- 'America/St_Kitts',
- 'America/St_Lucia',
- 'America/St_Thomas',
- 'America/St_Vincent',
- 'America/Swift_Current',
- 'America/Tegucigalpa',
- 'America/Thule',
- 'America/Thunder_Bay',
- 'America/Tijuana',
- 'America/Toronto',
- 'America/Tortola',
- 'America/Vancouver',
- 'America/Virgin',
- 'America/Whitehorse',
- 'America/Winnipeg',
- 'America/Yakutat',
- 'America/Yellowknife',
- 'Antarctica/Casey',
- 'Antarctica/Davis',
- 'Antarctica/DumontDUrville',
- 'Antarctica/Mawson',
- 'Antarctica/McMurdo',
- 'Antarctica/Palmer',
- 'Antarctica/Rothera',
- 'Antarctica/South_Pole',
- 'Antarctica/Syowa',
- 'Antarctica/Vostok',
- 'Arctic/Longyearbyen',
- 'Asia/Aden',
- 'Asia/Almaty',
- 'Asia/Amman',
- 'Asia/Anadyr',
- 'Asia/Aqtau',
- 'Asia/Aqtobe',
- 'Asia/Ashgabat',
- 'Asia/Ashkhabad',
- 'Asia/Baghdad',
- 'Asia/Bahrain',
- 'Asia/Baku',
- 'Asia/Bangkok',
- 'Asia/Beirut',
- 'Asia/Bishkek',
- 'Asia/Brunei',
- 'Asia/Calcutta',
- 'Asia/Choibalsan',
- 'Asia/Chongqing',
- 'Asia/Chungking',
- 'Asia/Colombo',
- 'Asia/Dacca',
- 'Asia/Damascus',
- 'Asia/Dhaka',
- 'Asia/Dili',
- 'Asia/Dubai',
- 'Asia/Dushanbe',
- 'Asia/Gaza',
- 'Asia/Harbin',
- 'Asia/Hong_Kong',
- 'Asia/Hovd',
- 'Asia/Irkutsk',
- 'Asia/Istanbul',
- 'Asia/Jakarta',
- 'Asia/Jayapura',
- 'Asia/Jerusalem',
- 'Asia/Kabul',
- 'Asia/Kamchatka',
- 'Asia/Karachi',
- 'Asia/Kashgar',
- 'Asia/Katmandu',
- 'Asia/Krasnoyarsk',
- 'Asia/Kuala_Lumpur',
- 'Asia/Kuching',
- 'Asia/Kuwait',
- 'Asia/Macao',
- 'Asia/Macau',
- 'Asia/Magadan',
- 'Asia/Makassar',
- 'Asia/Manila',
- 'Asia/Muscat',
- 'Asia/Nicosia',
- 'Asia/Novosibirsk',
- 'Asia/Omsk',
- 'Asia/Oral',
- 'Asia/Phnom_Penh',
- 'Asia/Pontianak',
- 'Asia/Pyongyang',
- 'Asia/Qatar',
- 'Asia/Qyzylorda',
- 'Asia/Rangoon',
- 'Asia/Riyadh',
- 'Asia/Saigon',
- 'Asia/Sakhalin',
- 'Asia/Samarkand',
- 'Asia/Seoul',
- 'Asia/Shanghai',
- 'Asia/Singapore',
- 'Asia/Taipei',
- 'Asia/Tashkent',
- 'Asia/Tbilisi',
- 'Asia/Tehran',
- 'Asia/Tel_Aviv',
- 'Asia/Thimbu',
- 'Asia/Thimphu',
- 'Asia/Tokyo',
- 'Asia/Ujung_Pandang',
- 'Asia/Ulaanbaatar',
- 'Asia/Ulan_Bator',
- 'Asia/Urumqi',
- 'Asia/Vientiane',
- 'Asia/Vladivostok',
- 'Asia/Yakutsk',
- 'Asia/Yekaterinburg',
- 'Asia/Yerevan',
- 'Atlantic/Azores',
- 'Atlantic/Bermuda',
- 'Atlantic/Canary',
- 'Atlantic/Cape_Verde',
- 'Atlantic/Faeroe',
- 'Atlantic/Jan_Mayen',
- 'Atlantic/Madeira',
- 'Atlantic/Reykjavik',
- 'Atlantic/South_Georgia',
- 'Atlantic/St_Helena',
- 'Atlantic/Stanley',
- 'Australia/ACT',
- 'Australia/Adelaide',
- 'Australia/Brisbane',
- 'Australia/Broken_Hill',
- 'Australia/Canberra',
- 'Australia/Currie',
- 'Australia/Darwin',
- 'Australia/Hobart',
- 'Australia/LHI',
- 'Australia/Lindeman',
- 'Australia/Lord_Howe',
- 'Australia/Melbourne',
- 'Australia/NSW',
- 'Australia/North',
- 'Australia/Perth',
- 'Australia/Queensland',
- 'Australia/South',
- 'Australia/Sydney',
- 'Australia/Tasmania',
- 'Australia/Victoria',
- 'Australia/West',
- 'Australia/Yancowinna',
- 'Brazil/Acre',
- 'Brazil/DeNoronha',
- 'Brazil/East',
- 'Brazil/West',
- 'Canada/Atlantic',
- 'Canada/Central',
- 'Canada/East-Saskatchewan',
- 'Canada/Eastern',
- 'Canada/Mountain',
- 'Canada/Newfoundland',
- 'Canada/Pacific',
- 'Canada/Saskatchewan',
- 'Canada/Yukon',
- 'Chile/Continental',
- 'Chile/EasterIsland',
- 'Europe/Amsterdam',
- 'Europe/Andorra',
- 'Europe/Athens',
- 'Europe/Belfast',
- 'Europe/Belgrade',
- 'Europe/Berlin',
- 'Europe/Bratislava',
- 'Europe/Brussels',
- 'Europe/Bucharest',
- 'Europe/Budapest',
- 'Europe/Chisinau',
- 'Europe/Copenhagen',
- 'Europe/Dublin',
- 'Europe/Gibraltar',
- 'Europe/Helsinki',
- 'Europe/Istanbul',
- 'Europe/Kaliningrad',
- 'Europe/Kiev',
- 'Europe/Lisbon',
- 'Europe/Ljubljana',
- 'Europe/London',
- 'Europe/Luxembourg',
- 'Europe/Madrid',
- 'Europe/Malta',
- 'Europe/Mariehamn',
- 'Europe/Minsk',
- 'Europe/Monaco',
- 'Europe/Moscow',
- 'Europe/Nicosia',
- 'Europe/Oslo',
- 'Europe/Paris',
- 'Europe/Prague',
- 'Europe/Riga',
- 'Europe/Rome',
- 'Europe/Samara',
- 'Europe/San_Marino',
- 'Europe/Sarajevo',
- 'Europe/Simferopol',
- 'Europe/Skopje',
- 'Europe/Sofia',
- 'Europe/Stockholm',
- 'Europe/Tallinn',
- 'Europe/Tirane',
- 'Europe/Tiraspol',
- 'Europe/Uzhgorod',
- 'Europe/Vaduz',
- 'Europe/Vatican',
- 'Europe/Vienna',
- 'Europe/Vilnius',
- 'Europe/Warsaw',
- 'Europe/Zagreb',
- 'Europe/Zaporozhye',
- 'Europe/Zurich',
- 'GMT',
- 'Indian/Antananarivo',
- 'Indian/Chagos',
- 'Indian/Christmas',
- 'Indian/Cocos',
- 'Indian/Comoro',
- 'Indian/Kerguelen',
- 'Indian/Mahe',
- 'Indian/Maldives',
- 'Indian/Mauritius',
- 'Indian/Mayotte',
- 'Indian/Reunion',
- 'Mexico/BajaNorte',
- 'Mexico/BajaSur',
- 'Mexico/General',
- 'Pacific/Apia',
- 'Pacific/Auckland',
- 'Pacific/Chatham',
- 'Pacific/Easter',
- 'Pacific/Efate',
- 'Pacific/Enderbury',
- 'Pacific/Fakaofo',
- 'Pacific/Fiji',
- 'Pacific/Funafuti',
- 'Pacific/Galapagos',
- 'Pacific/Gambier',
- 'Pacific/Guadalcanal',
- 'Pacific/Guam',
- 'Pacific/Honolulu',
- 'Pacific/Johnston',
- 'Pacific/Kiritimati',
- 'Pacific/Kosrae',
- 'Pacific/Kwajalein',
- 'Pacific/Majuro',
- 'Pacific/Marquesas',
- 'Pacific/Midway',
- 'Pacific/Nauru',
- 'Pacific/Niue',
- 'Pacific/Norfolk',
- 'Pacific/Noumea',
- 'Pacific/Pago_Pago',
- 'Pacific/Palau',
- 'Pacific/Pitcairn',
- 'Pacific/Ponape',
- 'Pacific/Port_Moresby',
- 'Pacific/Rarotonga',
- 'Pacific/Saipan',
- 'Pacific/Samoa',
- 'Pacific/Tahiti',
- 'Pacific/Tarawa',
- 'Pacific/Tongatapu',
- 'Pacific/Truk',
- 'Pacific/Wake',
- 'Pacific/Wallis',
- 'Pacific/Yap',
- 'US/Alaska',
- 'US/Aleutian',
- 'US/Arizona',
- 'US/Central',
- 'US/East-Indiana',
- 'US/Eastern',
- 'US/Hawaii',
- 'US/Indiana-Starke',
- 'US/Michigan',
- 'US/Mountain',
- 'US/Pacific',
- 'US/Pacific-New',
- 'US/Samoa',
- 'UTC']
-
-all_timezones = \
-['Africa/Abidjan',
- 'Africa/Accra',
- 'Africa/Addis_Ababa',
- 'Africa/Algiers',
- 'Africa/Asmera',
- 'Africa/Bamako',
- 'Africa/Bangui',
- 'Africa/Banjul',
- 'Africa/Bissau',
- 'Africa/Blantyre',
- 'Africa/Brazzaville',
- 'Africa/Bujumbura',
- 'Africa/Cairo',
- 'Africa/Casablanca',
- 'Africa/Ceuta',
- 'Africa/Conakry',
- 'Africa/Dakar',
- 'Africa/Dar_es_Salaam',
- 'Africa/Djibouti',
- 'Africa/Douala',
- 'Africa/El_Aaiun',
- 'Africa/Freetown',
- 'Africa/Gaborone',
- 'Africa/Harare',
- 'Africa/Johannesburg',
- 'Africa/Kampala',
- 'Africa/Khartoum',
- 'Africa/Kigali',
- 'Africa/Kinshasa',
- 'Africa/Lagos',
- 'Africa/Libreville',
- 'Africa/Lome',
- 'Africa/Luanda',
- 'Africa/Lubumbashi',
- 'Africa/Lusaka',
- 'Africa/Malabo',
- 'Africa/Maputo',
- 'Africa/Maseru',
- 'Africa/Mbabane',
- 'Africa/Mogadishu',
- 'Africa/Monrovia',
- 'Africa/Nairobi',
- 'Africa/Ndjamena',
- 'Africa/Niamey',
- 'Africa/Nouakchott',
- 'Africa/Ouagadougou',
- 'Africa/Porto-Novo',
- 'Africa/Sao_Tome',
- 'Africa/Timbuktu',
- 'Africa/Tripoli',
- 'Africa/Tunis',
- 'Africa/Windhoek',
- 'America/Adak',
- 'America/Anchorage',
- 'America/Anguilla',
- 'America/Antigua',
- 'America/Araguaina',
- 'America/Argentina/Buenos_Aires',
- 'America/Argentina/Catamarca',
- 'America/Argentina/ComodRivadavia',
- 'America/Argentina/Cordoba',
- 'America/Argentina/Jujuy',
- 'America/Argentina/La_Rioja',
- 'America/Argentina/Mendoza',
- 'America/Argentina/Rio_Gallegos',
- 'America/Argentina/San_Juan',
- 'America/Argentina/Tucuman',
- 'America/Argentina/Ushuaia',
- 'America/Aruba',
- 'America/Asuncion',
- 'America/Atka',
- 'America/Bahia',
- 'America/Barbados',
- 'America/Belem',
- 'America/Belize',
- 'America/Boa_Vista',
- 'America/Bogota',
- 'America/Boise',
- 'America/Buenos_Aires',
- 'America/Cambridge_Bay',
- 'America/Campo_Grande',
- 'America/Cancun',
- 'America/Caracas',
- 'America/Catamarca',
- 'America/Cayenne',
- 'America/Cayman',
- 'America/Chicago',
- 'America/Chihuahua',
- 'America/Coral_Harbour',
- 'America/Cordoba',
- 'America/Costa_Rica',
- 'America/Cuiaba',
- 'America/Curacao',
- 'America/Danmarkshavn',
- 'America/Dawson',
- 'America/Dawson_Creek',
- 'America/Denver',
- 'America/Detroit',
- 'America/Dominica',
- 'America/Edmonton',
- 'America/Eirunepe',
- 'America/El_Salvador',
- 'America/Ensenada',
- 'America/Fort_Wayne',
- 'America/Fortaleza',
- 'America/Glace_Bay',
- 'America/Godthab',
- 'America/Goose_Bay',
- 'America/Grand_Turk',
- 'America/Grenada',
- 'America/Guadeloupe',
- 'America/Guatemala',
- 'America/Guayaquil',
- 'America/Guyana',
- 'America/Halifax',
- 'America/Havana',
- 'America/Hermosillo',
- 'America/Indiana/Indianapolis',
- 'America/Indiana/Knox',
- 'America/Indiana/Marengo',
- 'America/Indiana/Vevay',
- 'America/Indianapolis',
- 'America/Inuvik',
- 'America/Iqaluit',
- 'America/Jamaica',
- 'America/Jujuy',
- 'America/Juneau',
- 'America/Kentucky/Louisville',
- 'America/Kentucky/Monticello',
- 'America/Knox_IN',
- 'America/La_Paz',
- 'America/Lima',
- 'America/Los_Angeles',
- 'America/Louisville',
- 'America/Maceio',
- 'America/Managua',
- 'America/Manaus',
- 'America/Martinique',
- 'America/Mazatlan',
- 'America/Mendoza',
- 'America/Menominee',
- 'America/Merida',
- 'America/Mexico_City',
- 'America/Miquelon',
- 'America/Monterrey',
- 'America/Montevideo',
- 'America/Montreal',
- 'America/Montserrat',
- 'America/Nassau',
- 'America/New_York',
- 'America/Nipigon',
- 'America/Nome',
- 'America/Noronha',
- 'America/North_Dakota/Center',
- 'America/Panama',
- 'America/Pangnirtung',
- 'America/Paramaribo',
- 'America/Phoenix',
- 'America/Port-au-Prince',
- 'America/Port_of_Spain',
- 'America/Porto_Acre',
- 'America/Porto_Velho',
- 'America/Puerto_Rico',
- 'America/Rainy_River',
- 'America/Rankin_Inlet',
- 'America/Recife',
- 'America/Regina',
- 'America/Rio_Branco',
- 'America/Rosario',
- 'America/Santiago',
- 'America/Santo_Domingo',
- 'America/Sao_Paulo',
- 'America/Scoresbysund',
- 'America/Shiprock',
- 'America/St_Johns',
- 'America/St_Kitts',
- 'America/St_Lucia',
- 'America/St_Thomas',
- 'America/St_Vincent',
- 'America/Swift_Current',
- 'America/Tegucigalpa',
- 'America/Thule',
- 'America/Thunder_Bay',
- 'America/Tijuana',
- 'America/Toronto',
- 'America/Tortola',
- 'America/Vancouver',
- 'America/Virgin',
- 'America/Whitehorse',
- 'America/Winnipeg',
- 'America/Yakutat',
- 'America/Yellowknife',
- 'Antarctica/Casey',
- 'Antarctica/Davis',
- 'Antarctica/DumontDUrville',
- 'Antarctica/Mawson',
- 'Antarctica/McMurdo',
- 'Antarctica/Palmer',
- 'Antarctica/Rothera',
- 'Antarctica/South_Pole',
- 'Antarctica/Syowa',
- 'Antarctica/Vostok',
- 'Arctic/Longyearbyen',
- 'Asia/Aden',
- 'Asia/Almaty',
- 'Asia/Amman',
- 'Asia/Anadyr',
- 'Asia/Aqtau',
- 'Asia/Aqtobe',
- 'Asia/Ashgabat',
- 'Asia/Ashkhabad',
- 'Asia/Baghdad',
- 'Asia/Bahrain',
- 'Asia/Baku',
- 'Asia/Bangkok',
- 'Asia/Beirut',
- 'Asia/Bishkek',
- 'Asia/Brunei',
- 'Asia/Calcutta',
- 'Asia/Choibalsan',
- 'Asia/Chongqing',
- 'Asia/Chungking',
- 'Asia/Colombo',
- 'Asia/Dacca',
- 'Asia/Damascus',
- 'Asia/Dhaka',
- 'Asia/Dili',
- 'Asia/Dubai',
- 'Asia/Dushanbe',
- 'Asia/Gaza',
- 'Asia/Harbin',
- 'Asia/Hong_Kong',
- 'Asia/Hovd',
- 'Asia/Irkutsk',
- 'Asia/Istanbul',
- 'Asia/Jakarta',
- 'Asia/Jayapura',
- 'Asia/Jerusalem',
- 'Asia/Kabul',
- 'Asia/Kamchatka',
- 'Asia/Karachi',
- 'Asia/Kashgar',
- 'Asia/Katmandu',
- 'Asia/Krasnoyarsk',
- 'Asia/Kuala_Lumpur',
- 'Asia/Kuching',
- 'Asia/Kuwait',
- 'Asia/Macao',
- 'Asia/Macau',
- 'Asia/Magadan',
- 'Asia/Makassar',
- 'Asia/Manila',
- 'Asia/Muscat',
- 'Asia/Nicosia',
- 'Asia/Novosibirsk',
- 'Asia/Omsk',
- 'Asia/Oral',
- 'Asia/Phnom_Penh',
- 'Asia/Pontianak',
- 'Asia/Pyongyang',
- 'Asia/Qatar',
- 'Asia/Qyzylorda',
- 'Asia/Rangoon',
- 'Asia/Riyadh',
- 'Asia/Saigon',
- 'Asia/Sakhalin',
- 'Asia/Samarkand',
- 'Asia/Seoul',
- 'Asia/Shanghai',
- 'Asia/Singapore',
- 'Asia/Taipei',
- 'Asia/Tashkent',
- 'Asia/Tbilisi',
- 'Asia/Tehran',
- 'Asia/Tel_Aviv',
- 'Asia/Thimbu',
- 'Asia/Thimphu',
- 'Asia/Tokyo',
- 'Asia/Ujung_Pandang',
- 'Asia/Ulaanbaatar',
- 'Asia/Ulan_Bator',
- 'Asia/Urumqi',
- 'Asia/Vientiane',
- 'Asia/Vladivostok',
- 'Asia/Yakutsk',
- 'Asia/Yekaterinburg',
- 'Asia/Yerevan',
- 'Atlantic/Azores',
- 'Atlantic/Bermuda',
- 'Atlantic/Canary',
- 'Atlantic/Cape_Verde',
- 'Atlantic/Faeroe',
- 'Atlantic/Jan_Mayen',
- 'Atlantic/Madeira',
- 'Atlantic/Reykjavik',
- 'Atlantic/South_Georgia',
- 'Atlantic/St_Helena',
- 'Atlantic/Stanley',
- 'Australia/ACT',
- 'Australia/Adelaide',
- 'Australia/Brisbane',
- 'Australia/Broken_Hill',
- 'Australia/Canberra',
- 'Australia/Currie',
- 'Australia/Darwin',
- 'Australia/Hobart',
- 'Australia/LHI',
- 'Australia/Lindeman',
- 'Australia/Lord_Howe',
- 'Australia/Melbourne',
- 'Australia/NSW',
- 'Australia/North',
- 'Australia/Perth',
- 'Australia/Queensland',
- 'Australia/South',
- 'Australia/Sydney',
- 'Australia/Tasmania',
- 'Australia/Victoria',
- 'Australia/West',
- 'Australia/Yancowinna',
- 'Brazil/Acre',
- 'Brazil/DeNoronha',
- 'Brazil/East',
- 'Brazil/West',
- 'CET',
- 'CST6CDT',
- 'Canada/Atlantic',
- 'Canada/Central',
- 'Canada/East-Saskatchewan',
- 'Canada/Eastern',
- 'Canada/Mountain',
- 'Canada/Newfoundland',
- 'Canada/Pacific',
- 'Canada/Saskatchewan',
- 'Canada/Yukon',
- 'Chile/Continental',
- 'Chile/EasterIsland',
- 'Cuba',
- 'EET',
- 'EST',
- 'EST5EDT',
- 'Egypt',
- 'Eire',
- 'Etc/GMT',
- 'Etc/GMT+0',
- 'Etc/GMT+1',
- 'Etc/GMT+10',
- 'Etc/GMT+11',
- 'Etc/GMT+12',
- 'Etc/GMT+2',
- 'Etc/GMT+3',
- 'Etc/GMT+4',
- 'Etc/GMT+5',
- 'Etc/GMT+6',
- 'Etc/GMT+7',
- 'Etc/GMT+8',
- 'Etc/GMT+9',
- 'Etc/GMT-0',
- 'Etc/GMT-1',
- 'Etc/GMT-10',
- 'Etc/GMT-11',
- 'Etc/GMT-12',
- 'Etc/GMT-13',
- 'Etc/GMT-14',
- 'Etc/GMT-2',
- 'Etc/GMT-3',
- 'Etc/GMT-4',
- 'Etc/GMT-5',
- 'Etc/GMT-6',
- 'Etc/GMT-7',
- 'Etc/GMT-8',
- 'Etc/GMT-9',
- 'Etc/GMT0',
- 'Etc/Greenwich',
- 'Etc/UCT',
- 'Etc/UTC',
- 'Etc/Universal',
- 'Etc/Zulu',
- 'Europe/Amsterdam',
- 'Europe/Andorra',
- 'Europe/Athens',
- 'Europe/Belfast',
- 'Europe/Belgrade',
- 'Europe/Berlin',
- 'Europe/Bratislava',
- 'Europe/Brussels',
- 'Europe/Bucharest',
- 'Europe/Budapest',
- 'Europe/Chisinau',
- 'Europe/Copenhagen',
- 'Europe/Dublin',
- 'Europe/Gibraltar',
- 'Europe/Helsinki',
- 'Europe/Istanbul',
- 'Europe/Kaliningrad',
- 'Europe/Kiev',
- 'Europe/Lisbon',
- 'Europe/Ljubljana',
- 'Europe/London',
- 'Europe/Luxembourg',
- 'Europe/Madrid',
- 'Europe/Malta',
- 'Europe/Mariehamn',
- 'Europe/Minsk',
- 'Europe/Monaco',
- 'Europe/Moscow',
- 'Europe/Nicosia',
- 'Europe/Oslo',
- 'Europe/Paris',
- 'Europe/Prague',
- 'Europe/Riga',
- 'Europe/Rome',
- 'Europe/Samara',
- 'Europe/San_Marino',
- 'Europe/Sarajevo',
- 'Europe/Simferopol',
- 'Europe/Skopje',
- 'Europe/Sofia',
- 'Europe/Stockholm',
- 'Europe/Tallinn',
- 'Europe/Tirane',
- 'Europe/Tiraspol',
- 'Europe/Uzhgorod',
- 'Europe/Vaduz',
- 'Europe/Vatican',
- 'Europe/Vienna',
- 'Europe/Vilnius',
- 'Europe/Warsaw',
- 'Europe/Zagreb',
- 'Europe/Zaporozhye',
- 'Europe/Zurich',
- 'GB',
- 'GB-Eire',
- 'GMT',
- 'GMT+0',
- 'GMT-0',
- 'GMT0',
- 'Greenwich',
- 'HST',
- 'Hongkong',
- 'Iceland',
- 'Indian/Antananarivo',
- 'Indian/Chagos',
- 'Indian/Christmas',
- 'Indian/Cocos',
- 'Indian/Comoro',
- 'Indian/Kerguelen',
- 'Indian/Mahe',
- 'Indian/Maldives',
- 'Indian/Mauritius',
- 'Indian/Mayotte',
- 'Indian/Reunion',
- 'Iran',
- 'Israel',
- 'Jamaica',
- 'Japan',
- 'Kwajalein',
- 'Libya',
- 'MET',
- 'MST',
- 'MST7MDT',
- 'Mexico/BajaNorte',
- 'Mexico/BajaSur',
- 'Mexico/General',
- 'NZ',
- 'NZ-CHAT',
- 'Navajo',
- 'PRC',
- 'PST8PDT',
- 'Pacific/Apia',
- 'Pacific/Auckland',
- 'Pacific/Chatham',
- 'Pacific/Easter',
- 'Pacific/Efate',
- 'Pacific/Enderbury',
- 'Pacific/Fakaofo',
- 'Pacific/Fiji',
- 'Pacific/Funafuti',
- 'Pacific/Galapagos',
- 'Pacific/Gambier',
- 'Pacific/Guadalcanal',
- 'Pacific/Guam',
- 'Pacific/Honolulu',
- 'Pacific/Johnston',
- 'Pacific/Kiritimati',
- 'Pacific/Kosrae',
- 'Pacific/Kwajalein',
- 'Pacific/Majuro',
- 'Pacific/Marquesas',
- 'Pacific/Midway',
- 'Pacific/Nauru',
- 'Pacific/Niue',
- 'Pacific/Norfolk',
- 'Pacific/Noumea',
- 'Pacific/Pago_Pago',
- 'Pacific/Palau',
- 'Pacific/Pitcairn',
- 'Pacific/Ponape',
- 'Pacific/Port_Moresby',
- 'Pacific/Rarotonga',
- 'Pacific/Saipan',
- 'Pacific/Samoa',
- 'Pacific/Tahiti',
- 'Pacific/Tarawa',
- 'Pacific/Tongatapu',
- 'Pacific/Truk',
- 'Pacific/Wake',
- 'Pacific/Wallis',
- 'Pacific/Yap',
- 'Poland',
- 'Portugal',
- 'ROC',
- 'ROK',
- 'Singapore',
- 'Turkey',
- 'UCT',
- 'US/Alaska',
- 'US/Aleutian',
- 'US/Arizona',
- 'US/Central',
- 'US/East-Indiana',
- 'US/Eastern',
- 'US/Hawaii',
- 'US/Indiana-Starke',
- 'US/Michigan',
- 'US/Mountain',
- 'US/Pacific',
- 'US/Pacific-New',
- 'US/Samoa',
- 'UTC',
- 'Universal',
- 'W-SU',
- 'WET',
- 'Zulu',
- 'posixrules']
diff --git a/modules/pytz/locales/pytz.pot b/modules/pytz/locales/pytz.pot
deleted file mode 100644
index 19e6e248..00000000
--- a/modules/pytz/locales/pytz.pot
+++ /dev/null
@@ -1,1612 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: pytz 2005r\n"
-"POT-Creation-Date: 2005-12-31 09:29+UTC\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-
-
-msgid "Africa/Abidjan"
-msgstr ""
-
-msgid "Africa/Accra"
-msgstr ""
-
-msgid "Africa/Addis_Ababa"
-msgstr ""
-
-msgid "Africa/Algiers"
-msgstr ""
-
-msgid "Africa/Asmera"
-msgstr ""
-
-msgid "Africa/Bamako"
-msgstr ""
-
-msgid "Africa/Bangui"
-msgstr ""
-
-msgid "Africa/Banjul"
-msgstr ""
-
-msgid "Africa/Bissau"
-msgstr ""
-
-msgid "Africa/Blantyre"
-msgstr ""
-
-msgid "Africa/Brazzaville"
-msgstr ""
-
-msgid "Africa/Bujumbura"
-msgstr ""
-
-msgid "Africa/Cairo"
-msgstr ""
-
-msgid "Africa/Casablanca"
-msgstr ""
-
-msgid "Africa/Ceuta"
-msgstr ""
-
-msgid "Africa/Conakry"
-msgstr ""
-
-msgid "Africa/Dakar"
-msgstr ""
-
-msgid "Africa/Dar_es_Salaam"
-msgstr ""
-
-msgid "Africa/Djibouti"
-msgstr ""
-
-msgid "Africa/Douala"
-msgstr ""
-
-msgid "Africa/El_Aaiun"
-msgstr ""
-
-msgid "Africa/Freetown"
-msgstr ""
-
-msgid "Africa/Gaborone"
-msgstr ""
-
-msgid "Africa/Harare"
-msgstr ""
-
-msgid "Africa/Johannesburg"
-msgstr ""
-
-msgid "Africa/Kampala"
-msgstr ""
-
-msgid "Africa/Khartoum"
-msgstr ""
-
-msgid "Africa/Kigali"
-msgstr ""
-
-msgid "Africa/Kinshasa"
-msgstr ""
-
-msgid "Africa/Lagos"
-msgstr ""
-
-msgid "Africa/Libreville"
-msgstr ""
-
-msgid "Africa/Lome"
-msgstr ""
-
-msgid "Africa/Luanda"
-msgstr ""
-
-msgid "Africa/Lubumbashi"
-msgstr ""
-
-msgid "Africa/Lusaka"
-msgstr ""
-
-msgid "Africa/Malabo"
-msgstr ""
-
-msgid "Africa/Maputo"
-msgstr ""
-
-msgid "Africa/Maseru"
-msgstr ""
-
-msgid "Africa/Mbabane"
-msgstr ""
-
-msgid "Africa/Mogadishu"
-msgstr ""
-
-msgid "Africa/Monrovia"
-msgstr ""
-
-msgid "Africa/Nairobi"
-msgstr ""
-
-msgid "Africa/Ndjamena"
-msgstr ""
-
-msgid "Africa/Niamey"
-msgstr ""
-
-msgid "Africa/Nouakchott"
-msgstr ""
-
-msgid "Africa/Ouagadougou"
-msgstr ""
-
-msgid "Africa/Porto-Novo"
-msgstr ""
-
-msgid "Africa/Sao_Tome"
-msgstr ""
-
-msgid "Africa/Timbuktu"
-msgstr ""
-
-msgid "Africa/Tripoli"
-msgstr ""
-
-msgid "Africa/Tunis"
-msgstr ""
-
-msgid "Africa/Windhoek"
-msgstr ""
-
-msgid "America/Adak"
-msgstr ""
-
-msgid "America/Anchorage"
-msgstr ""
-
-msgid "America/Anguilla"
-msgstr ""
-
-msgid "America/Antigua"
-msgstr ""
-
-msgid "America/Araguaina"
-msgstr ""
-
-msgid "America/Argentina/Buenos_Aires"
-msgstr ""
-
-msgid "America/Argentina/Catamarca"
-msgstr ""
-
-msgid "America/Argentina/ComodRivadavia"
-msgstr ""
-
-msgid "America/Argentina/Cordoba"
-msgstr ""
-
-msgid "America/Argentina/Jujuy"
-msgstr ""
-
-msgid "America/Argentina/La_Rioja"
-msgstr ""
-
-msgid "America/Argentina/Mendoza"
-msgstr ""
-
-msgid "America/Argentina/Rio_Gallegos"
-msgstr ""
-
-msgid "America/Argentina/San_Juan"
-msgstr ""
-
-msgid "America/Argentina/Tucuman"
-msgstr ""
-
-msgid "America/Argentina/Ushuaia"
-msgstr ""
-
-msgid "America/Aruba"
-msgstr ""
-
-msgid "America/Asuncion"
-msgstr ""
-
-msgid "America/Atka"
-msgstr ""
-
-msgid "America/Bahia"
-msgstr ""
-
-msgid "America/Barbados"
-msgstr ""
-
-msgid "America/Belem"
-msgstr ""
-
-msgid "America/Belize"
-msgstr ""
-
-msgid "America/Boa_Vista"
-msgstr ""
-
-msgid "America/Bogota"
-msgstr ""
-
-msgid "America/Boise"
-msgstr ""
-
-msgid "America/Buenos_Aires"
-msgstr ""
-
-msgid "America/Cambridge_Bay"
-msgstr ""
-
-msgid "America/Campo_Grande"
-msgstr ""
-
-msgid "America/Cancun"
-msgstr ""
-
-msgid "America/Caracas"
-msgstr ""
-
-msgid "America/Catamarca"
-msgstr ""
-
-msgid "America/Cayenne"
-msgstr ""
-
-msgid "America/Cayman"
-msgstr ""
-
-msgid "America/Chicago"
-msgstr ""
-
-msgid "America/Chihuahua"
-msgstr ""
-
-msgid "America/Coral_Harbour"
-msgstr ""
-
-msgid "America/Cordoba"
-msgstr ""
-
-msgid "America/Costa_Rica"
-msgstr ""
-
-msgid "America/Cuiaba"
-msgstr ""
-
-msgid "America/Curacao"
-msgstr ""
-
-msgid "America/Danmarkshavn"
-msgstr ""
-
-msgid "America/Dawson"
-msgstr ""
-
-msgid "America/Dawson_Creek"
-msgstr ""
-
-msgid "America/Denver"
-msgstr ""
-
-msgid "America/Detroit"
-msgstr ""
-
-msgid "America/Dominica"
-msgstr ""
-
-msgid "America/Edmonton"
-msgstr ""
-
-msgid "America/Eirunepe"
-msgstr ""
-
-msgid "America/El_Salvador"
-msgstr ""
-
-msgid "America/Ensenada"
-msgstr ""
-
-msgid "America/Fort_Wayne"
-msgstr ""
-
-msgid "America/Fortaleza"
-msgstr ""
-
-msgid "America/Glace_Bay"
-msgstr ""
-
-msgid "America/Godthab"
-msgstr ""
-
-msgid "America/Goose_Bay"
-msgstr ""
-
-msgid "America/Grand_Turk"
-msgstr ""
-
-msgid "America/Grenada"
-msgstr ""
-
-msgid "America/Guadeloupe"
-msgstr ""
-
-msgid "America/Guatemala"
-msgstr ""
-
-msgid "America/Guayaquil"
-msgstr ""
-
-msgid "America/Guyana"
-msgstr ""
-
-msgid "America/Halifax"
-msgstr ""
-
-msgid "America/Havana"
-msgstr ""
-
-msgid "America/Hermosillo"
-msgstr ""
-
-msgid "America/Indiana/Indianapolis"
-msgstr ""
-
-msgid "America/Indiana/Knox"
-msgstr ""
-
-msgid "America/Indiana/Marengo"
-msgstr ""
-
-msgid "America/Indiana/Vevay"
-msgstr ""
-
-msgid "America/Indianapolis"
-msgstr ""
-
-msgid "America/Inuvik"
-msgstr ""
-
-msgid "America/Iqaluit"
-msgstr ""
-
-msgid "America/Jamaica"
-msgstr ""
-
-msgid "America/Jujuy"
-msgstr ""
-
-msgid "America/Juneau"
-msgstr ""
-
-msgid "America/Kentucky/Louisville"
-msgstr ""
-
-msgid "America/Kentucky/Monticello"
-msgstr ""
-
-msgid "America/Knox_IN"
-msgstr ""
-
-msgid "America/La_Paz"
-msgstr ""
-
-msgid "America/Lima"
-msgstr ""
-
-msgid "America/Los_Angeles"
-msgstr ""
-
-msgid "America/Louisville"
-msgstr ""
-
-msgid "America/Maceio"
-msgstr ""
-
-msgid "America/Managua"
-msgstr ""
-
-msgid "America/Manaus"
-msgstr ""
-
-msgid "America/Martinique"
-msgstr ""
-
-msgid "America/Mazatlan"
-msgstr ""
-
-msgid "America/Mendoza"
-msgstr ""
-
-msgid "America/Menominee"
-msgstr ""
-
-msgid "America/Merida"
-msgstr ""
-
-msgid "America/Mexico_City"
-msgstr ""
-
-msgid "America/Miquelon"
-msgstr ""
-
-msgid "America/Monterrey"
-msgstr ""
-
-msgid "America/Montevideo"
-msgstr ""
-
-msgid "America/Montreal"
-msgstr ""
-
-msgid "America/Montserrat"
-msgstr ""
-
-msgid "America/Nassau"
-msgstr ""
-
-msgid "America/New_York"
-msgstr ""
-
-msgid "America/Nipigon"
-msgstr ""
-
-msgid "America/Nome"
-msgstr ""
-
-msgid "America/Noronha"
-msgstr ""
-
-msgid "America/North_Dakota/Center"
-msgstr ""
-
-msgid "America/Panama"
-msgstr ""
-
-msgid "America/Pangnirtung"
-msgstr ""
-
-msgid "America/Paramaribo"
-msgstr ""
-
-msgid "America/Phoenix"
-msgstr ""
-
-msgid "America/Port-au-Prince"
-msgstr ""
-
-msgid "America/Port_of_Spain"
-msgstr ""
-
-msgid "America/Porto_Acre"
-msgstr ""
-
-msgid "America/Porto_Velho"
-msgstr ""
-
-msgid "America/Puerto_Rico"
-msgstr ""
-
-msgid "America/Rainy_River"
-msgstr ""
-
-msgid "America/Rankin_Inlet"
-msgstr ""
-
-msgid "America/Recife"
-msgstr ""
-
-msgid "America/Regina"
-msgstr ""
-
-msgid "America/Rio_Branco"
-msgstr ""
-
-msgid "America/Rosario"
-msgstr ""
-
-msgid "America/Santiago"
-msgstr ""
-
-msgid "America/Santo_Domingo"
-msgstr ""
-
-msgid "America/Sao_Paulo"
-msgstr ""
-
-msgid "America/Scoresbysund"
-msgstr ""
-
-msgid "America/Shiprock"
-msgstr ""
-
-msgid "America/St_Johns"
-msgstr ""
-
-msgid "America/St_Kitts"
-msgstr ""
-
-msgid "America/St_Lucia"
-msgstr ""
-
-msgid "America/St_Thomas"
-msgstr ""
-
-msgid "America/St_Vincent"
-msgstr ""
-
-msgid "America/Swift_Current"
-msgstr ""
-
-msgid "America/Tegucigalpa"
-msgstr ""
-
-msgid "America/Thule"
-msgstr ""
-
-msgid "America/Thunder_Bay"
-msgstr ""
-
-msgid "America/Tijuana"
-msgstr ""
-
-msgid "America/Toronto"
-msgstr ""
-
-msgid "America/Tortola"
-msgstr ""
-
-msgid "America/Vancouver"
-msgstr ""
-
-msgid "America/Virgin"
-msgstr ""
-
-msgid "America/Whitehorse"
-msgstr ""
-
-msgid "America/Winnipeg"
-msgstr ""
-
-msgid "America/Yakutat"
-msgstr ""
-
-msgid "America/Yellowknife"
-msgstr ""
-
-msgid "Antarctica/Casey"
-msgstr ""
-
-msgid "Antarctica/Davis"
-msgstr ""
-
-msgid "Antarctica/DumontDUrville"
-msgstr ""
-
-msgid "Antarctica/Mawson"
-msgstr ""
-
-msgid "Antarctica/McMurdo"
-msgstr ""
-
-msgid "Antarctica/Palmer"
-msgstr ""
-
-msgid "Antarctica/Rothera"
-msgstr ""
-
-msgid "Antarctica/South_Pole"
-msgstr ""
-
-msgid "Antarctica/Syowa"
-msgstr ""
-
-msgid "Antarctica/Vostok"
-msgstr ""
-
-msgid "Arctic/Longyearbyen"
-msgstr ""
-
-msgid "Asia/Aden"
-msgstr ""
-
-msgid "Asia/Almaty"
-msgstr ""
-
-msgid "Asia/Amman"
-msgstr ""
-
-msgid "Asia/Anadyr"
-msgstr ""
-
-msgid "Asia/Aqtau"
-msgstr ""
-
-msgid "Asia/Aqtobe"
-msgstr ""
-
-msgid "Asia/Ashgabat"
-msgstr ""
-
-msgid "Asia/Ashkhabad"
-msgstr ""
-
-msgid "Asia/Baghdad"
-msgstr ""
-
-msgid "Asia/Bahrain"
-msgstr ""
-
-msgid "Asia/Baku"
-msgstr ""
-
-msgid "Asia/Bangkok"
-msgstr ""
-
-msgid "Asia/Beirut"
-msgstr ""
-
-msgid "Asia/Bishkek"
-msgstr ""
-
-msgid "Asia/Brunei"
-msgstr ""
-
-msgid "Asia/Calcutta"
-msgstr ""
-
-msgid "Asia/Choibalsan"
-msgstr ""
-
-msgid "Asia/Chongqing"
-msgstr ""
-
-msgid "Asia/Chungking"
-msgstr ""
-
-msgid "Asia/Colombo"
-msgstr ""
-
-msgid "Asia/Dacca"
-msgstr ""
-
-msgid "Asia/Damascus"
-msgstr ""
-
-msgid "Asia/Dhaka"
-msgstr ""
-
-msgid "Asia/Dili"
-msgstr ""
-
-msgid "Asia/Dubai"
-msgstr ""
-
-msgid "Asia/Dushanbe"
-msgstr ""
-
-msgid "Asia/Gaza"
-msgstr ""
-
-msgid "Asia/Harbin"
-msgstr ""
-
-msgid "Asia/Hong_Kong"
-msgstr ""
-
-msgid "Asia/Hovd"
-msgstr ""
-
-msgid "Asia/Irkutsk"
-msgstr ""
-
-msgid "Asia/Istanbul"
-msgstr ""
-
-msgid "Asia/Jakarta"
-msgstr ""
-
-msgid "Asia/Jayapura"
-msgstr ""
-
-msgid "Asia/Jerusalem"
-msgstr ""
-
-msgid "Asia/Kabul"
-msgstr ""
-
-msgid "Asia/Kamchatka"
-msgstr ""
-
-msgid "Asia/Karachi"
-msgstr ""
-
-msgid "Asia/Kashgar"
-msgstr ""
-
-msgid "Asia/Katmandu"
-msgstr ""
-
-msgid "Asia/Krasnoyarsk"
-msgstr ""
-
-msgid "Asia/Kuala_Lumpur"
-msgstr ""
-
-msgid "Asia/Kuching"
-msgstr ""
-
-msgid "Asia/Kuwait"
-msgstr ""
-
-msgid "Asia/Macao"
-msgstr ""
-
-msgid "Asia/Macau"
-msgstr ""
-
-msgid "Asia/Magadan"
-msgstr ""
-
-msgid "Asia/Makassar"
-msgstr ""
-
-msgid "Asia/Manila"
-msgstr ""
-
-msgid "Asia/Muscat"
-msgstr ""
-
-msgid "Asia/Nicosia"
-msgstr ""
-
-msgid "Asia/Novosibirsk"
-msgstr ""
-
-msgid "Asia/Omsk"
-msgstr ""
-
-msgid "Asia/Oral"
-msgstr ""
-
-msgid "Asia/Phnom_Penh"
-msgstr ""
-
-msgid "Asia/Pontianak"
-msgstr ""
-
-msgid "Asia/Pyongyang"
-msgstr ""
-
-msgid "Asia/Qatar"
-msgstr ""
-
-msgid "Asia/Qyzylorda"
-msgstr ""
-
-msgid "Asia/Rangoon"
-msgstr ""
-
-msgid "Asia/Riyadh"
-msgstr ""
-
-msgid "Asia/Saigon"
-msgstr ""
-
-msgid "Asia/Sakhalin"
-msgstr ""
-
-msgid "Asia/Samarkand"
-msgstr ""
-
-msgid "Asia/Seoul"
-msgstr ""
-
-msgid "Asia/Shanghai"
-msgstr ""
-
-msgid "Asia/Singapore"
-msgstr ""
-
-msgid "Asia/Taipei"
-msgstr ""
-
-msgid "Asia/Tashkent"
-msgstr ""
-
-msgid "Asia/Tbilisi"
-msgstr ""
-
-msgid "Asia/Tehran"
-msgstr ""
-
-msgid "Asia/Tel_Aviv"
-msgstr ""
-
-msgid "Asia/Thimbu"
-msgstr ""
-
-msgid "Asia/Thimphu"
-msgstr ""
-
-msgid "Asia/Tokyo"
-msgstr ""
-
-msgid "Asia/Ujung_Pandang"
-msgstr ""
-
-msgid "Asia/Ulaanbaatar"
-msgstr ""
-
-msgid "Asia/Ulan_Bator"
-msgstr ""
-
-msgid "Asia/Urumqi"
-msgstr ""
-
-msgid "Asia/Vientiane"
-msgstr ""
-
-msgid "Asia/Vladivostok"
-msgstr ""
-
-msgid "Asia/Yakutsk"
-msgstr ""
-
-msgid "Asia/Yekaterinburg"
-msgstr ""
-
-msgid "Asia/Yerevan"
-msgstr ""
-
-msgid "Atlantic/Azores"
-msgstr ""
-
-msgid "Atlantic/Bermuda"
-msgstr ""
-
-msgid "Atlantic/Canary"
-msgstr ""
-
-msgid "Atlantic/Cape_Verde"
-msgstr ""
-
-msgid "Atlantic/Faeroe"
-msgstr ""
-
-msgid "Atlantic/Jan_Mayen"
-msgstr ""
-
-msgid "Atlantic/Madeira"
-msgstr ""
-
-msgid "Atlantic/Reykjavik"
-msgstr ""
-
-msgid "Atlantic/South_Georgia"
-msgstr ""
-
-msgid "Atlantic/St_Helena"
-msgstr ""
-
-msgid "Atlantic/Stanley"
-msgstr ""
-
-msgid "Australia/ACT"
-msgstr ""
-
-msgid "Australia/Adelaide"
-msgstr ""
-
-msgid "Australia/Brisbane"
-msgstr ""
-
-msgid "Australia/Broken_Hill"
-msgstr ""
-
-msgid "Australia/Canberra"
-msgstr ""
-
-msgid "Australia/Currie"
-msgstr ""
-
-msgid "Australia/Darwin"
-msgstr ""
-
-msgid "Australia/Hobart"
-msgstr ""
-
-msgid "Australia/LHI"
-msgstr ""
-
-msgid "Australia/Lindeman"
-msgstr ""
-
-msgid "Australia/Lord_Howe"
-msgstr ""
-
-msgid "Australia/Melbourne"
-msgstr ""
-
-msgid "Australia/NSW"
-msgstr ""
-
-msgid "Australia/North"
-msgstr ""
-
-msgid "Australia/Perth"
-msgstr ""
-
-msgid "Australia/Queensland"
-msgstr ""
-
-msgid "Australia/South"
-msgstr ""
-
-msgid "Australia/Sydney"
-msgstr ""
-
-msgid "Australia/Tasmania"
-msgstr ""
-
-msgid "Australia/Victoria"
-msgstr ""
-
-msgid "Australia/West"
-msgstr ""
-
-msgid "Australia/Yancowinna"
-msgstr ""
-
-msgid "Brazil/Acre"
-msgstr ""
-
-msgid "Brazil/DeNoronha"
-msgstr ""
-
-msgid "Brazil/East"
-msgstr ""
-
-msgid "Brazil/West"
-msgstr ""
-
-msgid "CET"
-msgstr ""
-
-msgid "CST6CDT"
-msgstr ""
-
-msgid "Canada/Atlantic"
-msgstr ""
-
-msgid "Canada/Central"
-msgstr ""
-
-msgid "Canada/East-Saskatchewan"
-msgstr ""
-
-msgid "Canada/Eastern"
-msgstr ""
-
-msgid "Canada/Mountain"
-msgstr ""
-
-msgid "Canada/Newfoundland"
-msgstr ""
-
-msgid "Canada/Pacific"
-msgstr ""
-
-msgid "Canada/Saskatchewan"
-msgstr ""
-
-msgid "Canada/Yukon"
-msgstr ""
-
-msgid "Chile/Continental"
-msgstr ""
-
-msgid "Chile/EasterIsland"
-msgstr ""
-
-msgid "Cuba"
-msgstr ""
-
-msgid "EET"
-msgstr ""
-
-msgid "EST"
-msgstr ""
-
-msgid "EST5EDT"
-msgstr ""
-
-msgid "Egypt"
-msgstr ""
-
-msgid "Eire"
-msgstr ""
-
-msgid "Etc/GMT"
-msgstr ""
-
-msgid "Etc/GMT+0"
-msgstr ""
-
-msgid "Etc/GMT+1"
-msgstr ""
-
-msgid "Etc/GMT+10"
-msgstr ""
-
-msgid "Etc/GMT+11"
-msgstr ""
-
-msgid "Etc/GMT+12"
-msgstr ""
-
-msgid "Etc/GMT+2"
-msgstr ""
-
-msgid "Etc/GMT+3"
-msgstr ""
-
-msgid "Etc/GMT+4"
-msgstr ""
-
-msgid "Etc/GMT+5"
-msgstr ""
-
-msgid "Etc/GMT+6"
-msgstr ""
-
-msgid "Etc/GMT+7"
-msgstr ""
-
-msgid "Etc/GMT+8"
-msgstr ""
-
-msgid "Etc/GMT+9"
-msgstr ""
-
-msgid "Etc/GMT-0"
-msgstr ""
-
-msgid "Etc/GMT-1"
-msgstr ""
-
-msgid "Etc/GMT-10"
-msgstr ""
-
-msgid "Etc/GMT-11"
-msgstr ""
-
-msgid "Etc/GMT-12"
-msgstr ""
-
-msgid "Etc/GMT-13"
-msgstr ""
-
-msgid "Etc/GMT-14"
-msgstr ""
-
-msgid "Etc/GMT-2"
-msgstr ""
-
-msgid "Etc/GMT-3"
-msgstr ""
-
-msgid "Etc/GMT-4"
-msgstr ""
-
-msgid "Etc/GMT-5"
-msgstr ""
-
-msgid "Etc/GMT-6"
-msgstr ""
-
-msgid "Etc/GMT-7"
-msgstr ""
-
-msgid "Etc/GMT-8"
-msgstr ""
-
-msgid "Etc/GMT-9"
-msgstr ""
-
-msgid "Etc/GMT0"
-msgstr ""
-
-msgid "Etc/Greenwich"
-msgstr ""
-
-msgid "Etc/UCT"
-msgstr ""
-
-msgid "Etc/UTC"
-msgstr ""
-
-msgid "Etc/Universal"
-msgstr ""
-
-msgid "Etc/Zulu"
-msgstr ""
-
-msgid "Europe/Amsterdam"
-msgstr ""
-
-msgid "Europe/Andorra"
-msgstr ""
-
-msgid "Europe/Athens"
-msgstr ""
-
-msgid "Europe/Belfast"
-msgstr ""
-
-msgid "Europe/Belgrade"
-msgstr ""
-
-msgid "Europe/Berlin"
-msgstr ""
-
-msgid "Europe/Bratislava"
-msgstr ""
-
-msgid "Europe/Brussels"
-msgstr ""
-
-msgid "Europe/Bucharest"
-msgstr ""
-
-msgid "Europe/Budapest"
-msgstr ""
-
-msgid "Europe/Chisinau"
-msgstr ""
-
-msgid "Europe/Copenhagen"
-msgstr ""
-
-msgid "Europe/Dublin"
-msgstr ""
-
-msgid "Europe/Gibraltar"
-msgstr ""
-
-msgid "Europe/Helsinki"
-msgstr ""
-
-msgid "Europe/Istanbul"
-msgstr ""
-
-msgid "Europe/Kaliningrad"
-msgstr ""
-
-msgid "Europe/Kiev"
-msgstr ""
-
-msgid "Europe/Lisbon"
-msgstr ""
-
-msgid "Europe/Ljubljana"
-msgstr ""
-
-msgid "Europe/London"
-msgstr ""
-
-msgid "Europe/Luxembourg"
-msgstr ""
-
-msgid "Europe/Madrid"
-msgstr ""
-
-msgid "Europe/Malta"
-msgstr ""
-
-msgid "Europe/Mariehamn"
-msgstr ""
-
-msgid "Europe/Minsk"
-msgstr ""
-
-msgid "Europe/Monaco"
-msgstr ""
-
-msgid "Europe/Moscow"
-msgstr ""
-
-msgid "Europe/Nicosia"
-msgstr ""
-
-msgid "Europe/Oslo"
-msgstr ""
-
-msgid "Europe/Paris"
-msgstr ""
-
-msgid "Europe/Prague"
-msgstr ""
-
-msgid "Europe/Riga"
-msgstr ""
-
-msgid "Europe/Rome"
-msgstr ""
-
-msgid "Europe/Samara"
-msgstr ""
-
-msgid "Europe/San_Marino"
-msgstr ""
-
-msgid "Europe/Sarajevo"
-msgstr ""
-
-msgid "Europe/Simferopol"
-msgstr ""
-
-msgid "Europe/Skopje"
-msgstr ""
-
-msgid "Europe/Sofia"
-msgstr ""
-
-msgid "Europe/Stockholm"
-msgstr ""
-
-msgid "Europe/Tallinn"
-msgstr ""
-
-msgid "Europe/Tirane"
-msgstr ""
-
-msgid "Europe/Tiraspol"
-msgstr ""
-
-msgid "Europe/Uzhgorod"
-msgstr ""
-
-msgid "Europe/Vaduz"
-msgstr ""
-
-msgid "Europe/Vatican"
-msgstr ""
-
-msgid "Europe/Vienna"
-msgstr ""
-
-msgid "Europe/Vilnius"
-msgstr ""
-
-msgid "Europe/Warsaw"
-msgstr ""
-
-msgid "Europe/Zagreb"
-msgstr ""
-
-msgid "Europe/Zaporozhye"
-msgstr ""
-
-msgid "Europe/Zurich"
-msgstr ""
-
-msgid "GB"
-msgstr ""
-
-msgid "GB-Eire"
-msgstr ""
-
-msgid "GMT"
-msgstr ""
-
-msgid "GMT+0"
-msgstr ""
-
-msgid "GMT-0"
-msgstr ""
-
-msgid "GMT0"
-msgstr ""
-
-msgid "Greenwich"
-msgstr ""
-
-msgid "HST"
-msgstr ""
-
-msgid "Hongkong"
-msgstr ""
-
-msgid "Iceland"
-msgstr ""
-
-msgid "Indian/Antananarivo"
-msgstr ""
-
-msgid "Indian/Chagos"
-msgstr ""
-
-msgid "Indian/Christmas"
-msgstr ""
-
-msgid "Indian/Cocos"
-msgstr ""
-
-msgid "Indian/Comoro"
-msgstr ""
-
-msgid "Indian/Kerguelen"
-msgstr ""
-
-msgid "Indian/Mahe"
-msgstr ""
-
-msgid "Indian/Maldives"
-msgstr ""
-
-msgid "Indian/Mauritius"
-msgstr ""
-
-msgid "Indian/Mayotte"
-msgstr ""
-
-msgid "Indian/Reunion"
-msgstr ""
-
-msgid "Iran"
-msgstr ""
-
-msgid "Israel"
-msgstr ""
-
-msgid "Jamaica"
-msgstr ""
-
-msgid "Japan"
-msgstr ""
-
-msgid "Kwajalein"
-msgstr ""
-
-msgid "Libya"
-msgstr ""
-
-msgid "MET"
-msgstr ""
-
-msgid "MST"
-msgstr ""
-
-msgid "MST7MDT"
-msgstr ""
-
-msgid "Mexico/BajaNorte"
-msgstr ""
-
-msgid "Mexico/BajaSur"
-msgstr ""
-
-msgid "Mexico/General"
-msgstr ""
-
-msgid "NZ"
-msgstr ""
-
-msgid "NZ-CHAT"
-msgstr ""
-
-msgid "Navajo"
-msgstr ""
-
-msgid "PRC"
-msgstr ""
-
-msgid "PST8PDT"
-msgstr ""
-
-msgid "Pacific/Apia"
-msgstr ""
-
-msgid "Pacific/Auckland"
-msgstr ""
-
-msgid "Pacific/Chatham"
-msgstr ""
-
-msgid "Pacific/Easter"
-msgstr ""
-
-msgid "Pacific/Efate"
-msgstr ""
-
-msgid "Pacific/Enderbury"
-msgstr ""
-
-msgid "Pacific/Fakaofo"
-msgstr ""
-
-msgid "Pacific/Fiji"
-msgstr ""
-
-msgid "Pacific/Funafuti"
-msgstr ""
-
-msgid "Pacific/Galapagos"
-msgstr ""
-
-msgid "Pacific/Gambier"
-msgstr ""
-
-msgid "Pacific/Guadalcanal"
-msgstr ""
-
-msgid "Pacific/Guam"
-msgstr ""
-
-msgid "Pacific/Honolulu"
-msgstr ""
-
-msgid "Pacific/Johnston"
-msgstr ""
-
-msgid "Pacific/Kiritimati"
-msgstr ""
-
-msgid "Pacific/Kosrae"
-msgstr ""
-
-msgid "Pacific/Kwajalein"
-msgstr ""
-
-msgid "Pacific/Majuro"
-msgstr ""
-
-msgid "Pacific/Marquesas"
-msgstr ""
-
-msgid "Pacific/Midway"
-msgstr ""
-
-msgid "Pacific/Nauru"
-msgstr ""
-
-msgid "Pacific/Niue"
-msgstr ""
-
-msgid "Pacific/Norfolk"
-msgstr ""
-
-msgid "Pacific/Noumea"
-msgstr ""
-
-msgid "Pacific/Pago_Pago"
-msgstr ""
-
-msgid "Pacific/Palau"
-msgstr ""
-
-msgid "Pacific/Pitcairn"
-msgstr ""
-
-msgid "Pacific/Ponape"
-msgstr ""
-
-msgid "Pacific/Port_Moresby"
-msgstr ""
-
-msgid "Pacific/Rarotonga"
-msgstr ""
-
-msgid "Pacific/Saipan"
-msgstr ""
-
-msgid "Pacific/Samoa"
-msgstr ""
-
-msgid "Pacific/Tahiti"
-msgstr ""
-
-msgid "Pacific/Tarawa"
-msgstr ""
-
-msgid "Pacific/Tongatapu"
-msgstr ""
-
-msgid "Pacific/Truk"
-msgstr ""
-
-msgid "Pacific/Wake"
-msgstr ""
-
-msgid "Pacific/Wallis"
-msgstr ""
-
-msgid "Pacific/Yap"
-msgstr ""
-
-msgid "Poland"
-msgstr ""
-
-msgid "Portugal"
-msgstr ""
-
-msgid "ROC"
-msgstr ""
-
-msgid "ROK"
-msgstr ""
-
-msgid "Singapore"
-msgstr ""
-
-msgid "Turkey"
-msgstr ""
-
-msgid "UCT"
-msgstr ""
-
-msgid "US/Alaska"
-msgstr ""
-
-msgid "US/Aleutian"
-msgstr ""
-
-msgid "US/Arizona"
-msgstr ""
-
-msgid "US/Central"
-msgstr ""
-
-msgid "US/East-Indiana"
-msgstr ""
-
-msgid "US/Eastern"
-msgstr ""
-
-msgid "US/Hawaii"
-msgstr ""
-
-msgid "US/Indiana-Starke"
-msgstr ""
-
-msgid "US/Michigan"
-msgstr ""
-
-msgid "US/Mountain"
-msgstr ""
-
-msgid "US/Pacific"
-msgstr ""
-
-msgid "US/Pacific-New"
-msgstr ""
-
-msgid "US/Samoa"
-msgstr ""
-
-msgid "UTC"
-msgstr ""
-
-msgid "Universal"
-msgstr ""
-
-msgid "W-SU"
-msgstr ""
-
-msgid "WET"
-msgstr ""
-
-msgid "Zulu"
-msgstr ""
-
-msgid "posixrules"
-msgstr ""
-
diff --git a/modules/pytz/reference.py b/modules/pytz/reference.py
deleted file mode 100644
index 516f0ae9..00000000
--- a/modules/pytz/reference.py
+++ /dev/null
@@ -1,128 +0,0 @@
-'''
-$Id: reference.py,v 1.2 2004/10/25 04:14:00 zenzen Exp $
-
-Reference tzinfo implementations from the Python docs.
-Used for testing against.
-'''
-
-from datetime import tzinfo, timedelta, datetime
-from pytz import utc, UTC, HOUR, ZERO
-
-# A class building tzinfo objects for fixed-offset time zones.
-# Note that FixedOffset(0, "UTC") is a different way to build a
-# UTC tzinfo object.
-
-class FixedOffset(tzinfo):
- """Fixed offset in minutes east from UTC."""
-
- def __init__(self, offset, name):
- self.__offset = timedelta(minutes = offset)
- self.__name = name
-
- def utcoffset(self, dt):
- return self.__offset
-
- def tzname(self, dt):
- return self.__name
-
- def dst(self, dt):
- return ZERO
-
-# A class capturing the platform's idea of local time.
-
-import time as _time
-
-STDOFFSET = timedelta(seconds = -_time.timezone)
-if _time.daylight:
- DSTOFFSET = timedelta(seconds = -_time.altzone)
-else:
- DSTOFFSET = STDOFFSET
-
-DSTDIFF = DSTOFFSET - STDOFFSET
-
-class LocalTimezone(tzinfo):
-
- def utcoffset(self, dt):
- if self._isdst(dt):
- return DSTOFFSET
- else:
- return STDOFFSET
-
- def dst(self, dt):
- if self._isdst(dt):
- return DSTDIFF
- else:
- return ZERO
-
- def tzname(self, dt):
- return _time.tzname[self._isdst(dt)]
-
- def _isdst(self, dt):
- tt = (dt.year, dt.month, dt.day,
- dt.hour, dt.minute, dt.second,
- dt.weekday(), 0, -1)
- stamp = _time.mktime(tt)
- tt = _time.localtime(stamp)
- return tt.tm_isdst > 0
-
-Local = LocalTimezone()
-
-# A complete implementation of current DST rules for major US time zones.
-
-def first_sunday_on_or_after(dt):
- days_to_go = 6 - dt.weekday()
- if days_to_go:
- dt += timedelta(days_to_go)
- return dt
-
-# In the US, DST starts at 2am (standard time) on the first Sunday in April.
-DSTSTART = datetime(1, 4, 1, 2)
-# and ends at 2am (DST time; 1am standard time) on the last Sunday of Oct.
-# which is the first Sunday on or after Oct 25.
-DSTEND = datetime(1, 10, 25, 1)
-
-class USTimeZone(tzinfo):
-
- def __init__(self, hours, reprname, stdname, dstname):
- self.stdoffset = timedelta(hours=hours)
- self.reprname = reprname
- self.stdname = stdname
- self.dstname = dstname
-
- def __repr__(self):
- return self.reprname
-
- def tzname(self, dt):
- if self.dst(dt):
- return self.dstname
- else:
- return self.stdname
-
- def utcoffset(self, dt):
- return self.stdoffset + self.dst(dt)
-
- def dst(self, dt):
- if dt is None or dt.tzinfo is None:
- # An exception may be sensible here, in one or both cases.
- # It depends on how you want to treat them. The default
- # fromutc() implementation (called by the default astimezone()
- # implementation) passes a datetime with dt.tzinfo is self.
- return ZERO
- assert dt.tzinfo is self
-
- # Find first Sunday in April & the last in October.
- start = first_sunday_on_or_after(DSTSTART.replace(year=dt.year))
- end = first_sunday_on_or_after(DSTEND.replace(year=dt.year))
-
- # Can't compare naive to aware objects, so strip the timezone from
- # dt first.
- if start <= dt.replace(tzinfo=None) < end:
- return HOUR
- else:
- return ZERO
-
-Eastern = USTimeZone(-5, "Eastern", "EST", "EDT")
-Central = USTimeZone(-6, "Central", "CST", "CDT")
-Mountain = USTimeZone(-7, "Mountain", "MST", "MDT")
-Pacific = USTimeZone(-8, "Pacific", "PST", "PDT")
-
diff --git a/modules/pytz/tests/test_docs.py b/modules/pytz/tests/test_docs.py
deleted file mode 100644
index 50301cb4..00000000
--- a/modules/pytz/tests/test_docs.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- coding: ascii -*-
-
-import unittest, os, os.path, sys
-from doctest import DocTestSuite
-
-# We test the documentation this way instead of using DocFileSuite so
-# we can run the tests under Python 2.3
-def test_README():
- pass
-
-this_dir = os.path.dirname(__file__)
-locs = [
- os.path.join(this_dir, os.pardir, 'README.txt'),
- os.path.join(this_dir, os.pardir, os.pardir, 'README.txt'),
- ]
-for loc in locs:
- if os.path.exists(loc):
- test_README.__doc__ = open(loc).read()
- break
-if test_README.__doc__ is None:
- raise RuntimeError('README.txt not found')
-
-README = DocTestSuite()
-
-def test_suite():
- "For the Z3 test runner"
- return README
-
-if __name__ == '__main__':
- sys.path.insert(0, os.path.normpath(os.path.join(
- this_dir, os.pardir, os.pardir
- )))
- unittest.main(defaultTest='README')
-
-
diff --git a/modules/pytz/tests/test_tzinfo.py b/modules/pytz/tests/test_tzinfo.py
deleted file mode 100644
index 50e16330..00000000
--- a/modules/pytz/tests/test_tzinfo.py
+++ /dev/null
@@ -1,457 +0,0 @@
-# -*- coding: ascii -*-
-
-import sys, os, os.path
-import unittest, doctest
-import cPickle as pickle
-from datetime import datetime, tzinfo, timedelta
-
-if __name__ == '__main__':
- # Only munge path if invoked as a script. Testrunners should have setup
- # the paths already
- sys.path.insert(0, os.path.join(os.pardir, os.pardir))
-
-import pytz
-from pytz import reference
-
-EXPECTED_VERSION='2005r'
-
-fmt = '%Y-%m-%d %H:%M:%S %Z%z'
-
-NOTIME = timedelta(0)
-
-# GMT is a tzinfo.StaticTzInfo--the class we primarily want to test--while
-# UTC is reference implementation. They both have the same timezone meaning.
-UTC = pytz.timezone('UTC')
-GMT = pytz.timezone('GMT')
-
-class BasicTest(unittest.TestCase):
-
- def testVersion(self):
- # Ensuring the correct version of pytz has been loaded
- self.failUnlessEqual(EXPECTED_VERSION, pytz.__version__,
- 'Incorrect pytz version loaded. Import path is stuffed '
- 'or this test needs updating. (Wanted %s, got %s)'
- % (EXPECTED_VERSION, pytz.__version__)
- )
-
- def testGMT(self):
- now = datetime.now(tz=GMT)
- self.failUnless(now.utcoffset() == NOTIME)
- self.failUnless(now.dst() == NOTIME)
- self.failUnless(now.timetuple() == now.utctimetuple())
- self.failUnless(now==now.replace(tzinfo=UTC))
-
- def testReferenceUTC(self):
- now = datetime.now(tz=UTC)
- self.failUnless(now.utcoffset() == NOTIME)
- self.failUnless(now.dst() == NOTIME)
- self.failUnless(now.timetuple() == now.utctimetuple())
-
-
-class PicklingTest(unittest.TestCase):
-
- def _roundtrip_tzinfo(self, tz):
- p = pickle.dumps(tz)
- unpickled_tz = pickle.loads(p)
- self.failUnless(tz is unpickled_tz, '%s did not roundtrip' % tz.zone)
-
- def _roundtrip_datetime(self, dt):
- # Ensure that the tzinfo attached to a datetime instance
- # is identical to the one returned. This is important for
- # DST timezones, as some state is stored in the tzinfo.
- tz = dt.tzinfo
- p = pickle.dumps(dt)
- unpickled_dt = pickle.loads(p)
- unpickled_tz = unpickled_dt.tzinfo
- self.failUnless(tz is unpickled_tz, '%s did not roundtrip' % tz.zone)
-
- def testDst(self):
- tz = pytz.timezone('Europe/Amsterdam')
- dt = datetime(2004, 2, 1, 0, 0, 0)
-
- for localized_tz in tz._tzinfos.values():
- self._roundtrip_tzinfo(localized_tz)
- self._roundtrip_datetime(dt.replace(tzinfo=localized_tz))
-
- def testRoundtrip(self):
- dt = datetime(2004, 2, 1, 0, 0, 0)
- for zone in pytz.all_timezones:
- tz = pytz.timezone(zone)
- self._roundtrip_tzinfo(tz)
-
- def testDatabaseFixes(self):
- # Hack the pickle to make it refer to a timezone abbreviation
- # that does not match anything. The unpickler should be able
- # to repair this case
- tz = pytz.timezone('Australia/Melbourne')
- p = pickle.dumps(tz)
- tzname = tz._tzname
- hacked_p = p.replace(tzname, '???')
- self.failIfEqual(p, hacked_p)
- unpickled_tz = pickle.loads(hacked_p)
- self.failUnless(tz is unpickled_tz)
-
- # Simulate a database correction. In this case, the incorrect
- # data will continue to be used.
- p = pickle.dumps(tz)
- new_utcoffset = tz._utcoffset.seconds + 42
- hacked_p = p.replace(str(tz._utcoffset.seconds), str(new_utcoffset))
- self.failIfEqual(p, hacked_p)
- unpickled_tz = pickle.loads(hacked_p)
- self.failUnlessEqual(unpickled_tz._utcoffset.seconds, new_utcoffset)
- self.failUnless(tz is not unpickled_tz)
-
-
-class USEasternDSTStartTestCase(unittest.TestCase):
- tzinfo = pytz.timezone('US/Eastern')
-
- # 24 hours before DST changeover
- transition_time = datetime(2002, 4, 7, 7, 0, 0, tzinfo=UTC)
-
- # Increase for 'flexible' DST transitions due to 1 minute granularity
- # of Python's datetime library
- instant = timedelta(seconds=1)
-
- # before transition
- before = {
- 'tzname': 'EST',
- 'utcoffset': timedelta(hours = -5),
- 'dst': timedelta(hours = 0),
- }
-
- # after transition
- after = {
- 'tzname': 'EDT',
- 'utcoffset': timedelta(hours = -4),
- 'dst': timedelta(hours = 1),
- }
-
- def _test_tzname(self, utc_dt, wanted):
- tzname = wanted['tzname']
- dt = utc_dt.astimezone(self.tzinfo)
- self.failUnlessEqual(dt.tzname(), tzname,
- 'Expected %s as tzname for %s. Got %s' % (
- tzname, str(utc_dt), dt.tzname()
- )
- )
-
- def _test_utcoffset(self, utc_dt, wanted):
- utcoffset = wanted['utcoffset']
- dt = utc_dt.astimezone(self.tzinfo)
- self.failUnlessEqual(
- dt.utcoffset(), wanted['utcoffset'],
- 'Expected %s as utcoffset for %s. Got %s' % (
- utcoffset, utc_dt, dt.utcoffset()
- )
- )
-
- def _test_dst(self, utc_dt, wanted):
- dst = wanted['dst']
- dt = utc_dt.astimezone(self.tzinfo)
- self.failUnlessEqual(dt.dst(),dst,
- 'Expected %s as dst for %s. Got %s' % (
- dst, utc_dt, dt.dst()
- )
- )
-
- def test_arithmetic(self):
- utc_dt = self.transition_time
-
- for days in range(-420, 720, 20):
- delta = timedelta(days=days)
-
- # Make sure we can get back where we started
- dt = utc_dt.astimezone(self.tzinfo)
- dt2 = dt + delta
- dt2 = dt2 - delta
- self.failUnlessEqual(dt, dt2)
-
- # Make sure arithmetic crossing DST boundaries ends
- # up in the correct timezone after normalization
- self.failUnlessEqual(
- (utc_dt + delta).astimezone(self.tzinfo).strftime(fmt),
- self.tzinfo.normalize(dt + delta).strftime(fmt),
- 'Incorrect result for delta==%d days. Wanted %r. Got %r'%(
- days,
- (utc_dt + delta).astimezone(self.tzinfo).strftime(fmt),
- self.tzinfo.normalize(dt + delta).strftime(fmt),
- )
- )
-
- def _test_all(self, utc_dt, wanted):
- self._test_utcoffset(utc_dt, wanted)
- self._test_tzname(utc_dt, wanted)
- self._test_dst(utc_dt, wanted)
-
- def testDayBefore(self):
- self._test_all(
- self.transition_time - timedelta(days=1), self.before
- )
-
- def testTwoHoursBefore(self):
- self._test_all(
- self.transition_time - timedelta(hours=2), self.before
- )
-
- def testHourBefore(self):
- self._test_all(
- self.transition_time - timedelta(hours=1), self.before
- )
-
- def testInstantBefore(self):
- self._test_all(
- self.transition_time - self.instant, self.before
- )
-
- def testTransition(self):
- self._test_all(
- self.transition_time, self.after
- )
-
- def testInstantAfter(self):
- self._test_all(
- self.transition_time + self.instant, self.after
- )
-
- def testHourAfter(self):
- self._test_all(
- self.transition_time + timedelta(hours=1), self.after
- )
-
- def testTwoHoursAfter(self):
- self._test_all(
- self.transition_time + timedelta(hours=1), self.after
- )
-
- def testDayAfter(self):
- self._test_all(
- self.transition_time + timedelta(days=1), self.after
- )
-
-
-class USEasternDSTEndTestCase(USEasternDSTStartTestCase):
- tzinfo = pytz.timezone('US/Eastern')
- transition_time = datetime(2002, 10, 27, 6, 0, 0, tzinfo=UTC)
- before = {
- 'tzname': 'EDT',
- 'utcoffset': timedelta(hours = -4),
- 'dst': timedelta(hours = 1),
- }
- after = {
- 'tzname': 'EST',
- 'utcoffset': timedelta(hours = -5),
- 'dst': timedelta(hours = 0),
- }
-
-
-class USEasternEPTStartTestCase(USEasternDSTStartTestCase):
- transition_time = datetime(1945, 8, 14, 23, 0, 0, tzinfo=UTC)
- before = {
- 'tzname': 'EWT',
- 'utcoffset': timedelta(hours = -4),
- 'dst': timedelta(hours = 1),
- }
- after = {
- 'tzname': 'EPT',
- 'utcoffset': timedelta(hours = -4),
- 'dst': timedelta(hours = 1),
- }
-
-
-class USEasternEPTEndTestCase(USEasternDSTStartTestCase):
- transition_time = datetime(1945, 9, 30, 6, 0, 0, tzinfo=UTC)
- before = {
- 'tzname': 'EPT',
- 'utcoffset': timedelta(hours = -4),
- 'dst': timedelta(hours = 1),
- }
- after = {
- 'tzname': 'EST',
- 'utcoffset': timedelta(hours = -5),
- 'dst': timedelta(hours = 0),
- }
-
-
-class WarsawWMTEndTestCase(USEasternDSTStartTestCase):
- # In 1915, Warsaw changed from Warsaw to Central European time.
- # This involved the clocks being set backwards, causing a end-of-DST
- # like situation without DST being involved.
- tzinfo = pytz.timezone('Europe/Warsaw')
- transition_time = datetime(1915, 8, 4, 22, 36, 0, tzinfo=UTC)
- before = {
- 'tzname': 'WMT',
- 'utcoffset': timedelta(hours=1, minutes=24),
- 'dst': timedelta(0),
- }
- after = {
- 'tzname': 'CET',
- 'utcoffset': timedelta(hours=1),
- 'dst': timedelta(0),
- }
-
-
-class VilniusWMTEndTestCase(USEasternDSTStartTestCase):
- # At the end of 1916, Vilnius changed timezones putting its clock
- # forward by 11 minutes 35 seconds. Neither timezone was in DST mode.
- tzinfo = pytz.timezone('Europe/Vilnius')
- instant = timedelta(seconds=31)
- transition_time = datetime(1916, 12, 31, 22, 36, 00, tzinfo=UTC)
- before = {
- 'tzname': 'WMT',
- 'utcoffset': timedelta(hours=1, minutes=24),
- 'dst': timedelta(0),
- }
- after = {
- 'tzname': 'KMT',
- 'utcoffset': timedelta(hours=1, minutes=36), # Really 1:35:36
- 'dst': timedelta(0),
- }
-
-
-class ReferenceUSEasternDSTStartTestCase(USEasternDSTStartTestCase):
- tzinfo = reference.Eastern
- def test_arithmetic(self):
- # Reference implementation cannot handle this
- pass
-
-
-class ReferenceUSEasternDSTEndTestCase(USEasternDSTEndTestCase):
- tzinfo = reference.Eastern
-
- def testHourBefore(self):
- # Python's datetime library has a bug, where the hour before
- # a daylight savings transition is one hour out. For example,
- # at the end of US/Eastern daylight savings time, 01:00 EST
- # occurs twice (once at 05:00 UTC and once at 06:00 UTC),
- # whereas the first should actually be 01:00 EDT.
- # Note that this bug is by design - by accepting this ambiguity
- # for one hour one hour per year, an is_dst flag on datetime.time
- # became unnecessary.
- self._test_all(
- self.transition_time - timedelta(hours=1), self.after
- )
-
- def testInstantBefore(self):
- self._test_all(
- self.transition_time - timedelta(seconds=1), self.after
- )
-
- def test_arithmetic(self):
- # Reference implementation cannot handle this
- pass
-
-
-class LocalTestCase(unittest.TestCase):
- def testLocalize(self):
- loc_tz = pytz.timezone('Europe/Amsterdam')
-
- loc_time = loc_tz.localize(datetime(1930, 5, 10, 0, 0, 0))
- # Actually +00:19:32, but Python datetime rounds this
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'AMT+0020')
-
- loc_time = loc_tz.localize(datetime(1930, 5, 20, 0, 0, 0))
- # Actually +00:19:32, but Python datetime rounds this
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'NST+0120')
-
- loc_time = loc_tz.localize(datetime(1940, 5, 10, 0, 0, 0))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'NET+0020')
-
- loc_time = loc_tz.localize(datetime(1940, 5, 20, 0, 0, 0))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'CEST+0200')
-
- loc_time = loc_tz.localize(datetime(2004, 2, 1, 0, 0, 0))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'CET+0100')
-
- loc_time = loc_tz.localize(datetime(2004, 4, 1, 0, 0, 0))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'CEST+0200')
-
- tz = pytz.timezone('Europe/Amsterdam')
- loc_time = loc_tz.localize(datetime(1943, 3, 29, 1, 59, 59))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'CET+0100')
-
-
- # Switch to US
- loc_tz = pytz.timezone('US/Eastern')
-
- # End of DST ambiguity check
- loc_time = loc_tz.localize(datetime(1918, 10, 27, 1, 59, 59), is_dst=1)
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'EDT-0400')
-
- loc_time = loc_tz.localize(datetime(1918, 10, 27, 1, 59, 59), is_dst=0)
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'EST-0500')
-
- self.failUnlessRaises(pytz.AmbiguousTimeError,
- loc_tz.localize, datetime(1918, 10, 27, 1, 59, 59), is_dst=None
- )
-
- # Weird changes - war time and peace time both is_dst==True
-
- loc_time = loc_tz.localize(datetime(1942, 2, 9, 3, 0, 0))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'EWT-0400')
-
- loc_time = loc_tz.localize(datetime(1945, 8, 14, 19, 0, 0))
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'EPT-0400')
-
- loc_time = loc_tz.localize(datetime(1945, 9, 30, 1, 0, 0), is_dst=1)
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'EPT-0400')
-
- loc_time = loc_tz.localize(datetime(1945, 9, 30, 1, 0, 0), is_dst=0)
- self.failUnlessEqual(loc_time.strftime('%Z%z'), 'EST-0500')
-
- def testNormalize(self):
- tz = pytz.timezone('US/Eastern')
- dt = datetime(2004, 4, 4, 7, 0, 0, tzinfo=UTC).astimezone(tz)
- dt2 = dt - timedelta(minutes=10)
- self.failUnlessEqual(
- dt2.strftime('%Y-%m-%d %H:%M:%S %Z%z'),
- '2004-04-04 02:50:00 EDT-0400'
- )
-
- dt2 = tz.normalize(dt2)
- self.failUnlessEqual(
- dt2.strftime('%Y-%m-%d %H:%M:%S %Z%z'),
- '2004-04-04 01:50:00 EST-0500'
- )
-
- def testPartialMinuteOffsets(self):
- # utcoffset in Amsterdam was not a whole minute until 1937
- # However, we fudge this by rounding them, as the Python
- # datetime library
- tz = pytz.timezone('Europe/Amsterdam')
- utc_dt = datetime(1914, 1, 1, 13, 40, 28, tzinfo=UTC) # correct
- utc_dt = utc_dt.replace(second=0) # But we need to fudge it
- loc_dt = utc_dt.astimezone(tz)
- self.failUnlessEqual(
- loc_dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'),
- '1914-01-01 14:00:00 AMT+0020'
- )
-
- # And get back...
- utc_dt = loc_dt.astimezone(UTC)
- self.failUnlessEqual(
- utc_dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'),
- '1914-01-01 13:40:00 UTC+0000'
- )
-
- def no_testCreateLocaltime(self):
- # It would be nice if this worked, but it doesn't.
- tz = pytz.timezone('Europe/Amsterdam')
- dt = datetime(2004, 10, 31, 2, 0, 0, tzinfo=tz)
- self.failUnlessEqual(
- dt.strftime(fmt),
- '2004-10-31 02:00:00 CET+0100'
- )
-
-def test_suite():
- suite = unittest.TestSuite()
- suite.addTest(doctest.DocTestSuite('pytz'))
- suite.addTest(doctest.DocTestSuite('pytz.tzinfo'))
- import test_tzinfo
- suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_tzinfo))
- return suite
-
-DEFAULT = test_suite()
-
-if __name__ == '__main__':
- unittest.main(defaultTest='DEFAULT')
-
diff --git a/modules/pytz/tzinfo.py b/modules/pytz/tzinfo.py
deleted file mode 100644
index f5e9e0b0..00000000
--- a/modules/pytz/tzinfo.py
+++ /dev/null
@@ -1,379 +0,0 @@
-'''Base classes and helpers for building zone specific tzinfo classes'''
-
-from datetime import datetime, timedelta, tzinfo
-from bisect import bisect_right
-from sets import Set
-
-import pytz
-
-__all__ = []
-
-_timedelta_cache = {}
-def memorized_timedelta(seconds):
- '''Create only one instance of each distinct timedelta'''
- try:
- return _timedelta_cache[seconds]
- except KeyError:
- delta = timedelta(seconds=seconds)
- _timedelta_cache[seconds] = delta
- return delta
-
-_datetime_cache = {}
-def memorized_datetime(*args):
- '''Create only one instance of each distinct datetime'''
- try:
- return _datetime_cache[args]
- except KeyError:
- dt = datetime(*args)
- _datetime_cache[args] = dt
- return dt
-
-_ttinfo_cache = {}
-def memorized_ttinfo(*args):
- '''Create only one instance of each distinct tuple'''
- try:
- return _ttinfo_cache[args]
- except KeyError:
- ttinfo = (
- memorized_timedelta(args[0]),
- memorized_timedelta(args[1]),
- args[2]
- )
- _ttinfo_cache[args] = ttinfo
- return ttinfo
-
-_notime = memorized_timedelta(0)
-
-def _to_seconds(td):
- '''Convert a timedelta to seconds'''
- return td.seconds + td.days * 24 * 60 * 60
-
-
-class BaseTzInfo(tzinfo):
- # Overridden in subclass
- _utcoffset = None
- _tzname = None
- zone = None
-
- def __str__(self):
- return self.zone
-
-
-class StaticTzInfo(BaseTzInfo):
- '''A timezone that has a constant offset from UTC
-
- These timezones are rare, as most regions have changed their
- offset from UTC at some point in their history
- '''
- def fromutc(self, dt):
- '''See datetime.tzinfo.fromutc'''
- return (dt + self._utcoffset).replace(tzinfo=self)
-
- def utcoffset(self,dt):
- '''See datetime.tzinfo.utcoffset'''
- return self._utcoffset
-
- def dst(self,dt):
- '''See datetime.tzinfo.dst'''
- return _notime
-
- def tzname(self,dt):
- '''See datetime.tzinfo.tzname'''
- return self._tzname
-
- def localize(self, dt, is_dst=False):
- '''Convert naive time to local time'''
- if dt.tzinfo is not None:
- raise ValueError, 'Not naive datetime (tzinfo is already set)'
- return dt.replace(tzinfo=self)
-
- def normalize(self, dt, is_dst=False):
- '''Correct the timezone information on the given datetime'''
- if dt.tzinfo is None:
- raise ValueError, 'Naive time - no tzinfo set'
- return dt.replace(tzinfo=self)
-
- def __repr__(self):
- return '' % (self.zone,)
-
- def __reduce__(self):
- # Special pickle to zone remains a singleton and to cope with
- # database changes.
- return pytz._p, (self.zone,)
-
-
-class DstTzInfo(BaseTzInfo):
- '''A timezone that has a variable offset from UTC
-
- The offset might change if daylight savings time comes into effect,
- or at a point in history when the region decides to change their
- timezone definition.
-
- '''
- # Overridden in subclass
- _utc_transition_times = None # Sorted list of DST transition times in UTC
- _transition_info = None # [(utcoffset, dstoffset, tzname)] corresponding
- # to _utc_transition_times entries
- zone = None
-
- # Set in __init__
- _tzinfos = None
- _dst = None # DST offset
-
- def __init__(self, _inf=None, _tzinfos=None):
- if _inf:
- self._tzinfos = _tzinfos
- self._utcoffset, self._dst, self._tzname = _inf
- else:
- _tzinfos = {}
- self._tzinfos = _tzinfos
- self._utcoffset, self._dst, self._tzname = self._transition_info[0]
- _tzinfos[self._transition_info[0]] = self
- for inf in self._transition_info[1:]:
- if not _tzinfos.has_key(inf):
- _tzinfos[inf] = self.__class__(inf, _tzinfos)
-
- def fromutc(self, dt):
- '''See datetime.tzinfo.fromutc'''
- dt = dt.replace(tzinfo=None)
- idx = max(0, bisect_right(self._utc_transition_times, dt) - 1)
- inf = self._transition_info[idx]
- return (dt + inf[0]).replace(tzinfo=self._tzinfos[inf])
-
- def normalize(self, dt):
- '''Correct the timezone information on the given datetime
-
- If date arithmetic crosses DST boundaries, the tzinfo
- is not magically adjusted. This method normalizes the
- tzinfo to the correct one.
-
- To test, first we need to do some setup
-
- >>> from pytz import timezone
- >>> utc = timezone('UTC')
- >>> eastern = timezone('US/Eastern')
- >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
-
- We next create a datetime right on an end-of-DST transition point,
- the instant when the wallclocks are wound back one hour.
-
- >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
- >>> loc_dt = utc_dt.astimezone(eastern)
- >>> loc_dt.strftime(fmt)
- '2002-10-27 01:00:00 EST (-0500)'
-
- Now, if we subtract a few minutes from it, note that the timezone
- information has not changed.
-
- >>> before = loc_dt - timedelta(minutes=10)
- >>> before.strftime(fmt)
- '2002-10-27 00:50:00 EST (-0500)'
-
- But we can fix that by calling the normalize method
-
- >>> before = eastern.normalize(before)
- >>> before.strftime(fmt)
- '2002-10-27 01:50:00 EDT (-0400)'
-
- '''
- if dt.tzinfo is None:
- raise ValueError, 'Naive time - no tzinfo set'
-
- # Convert dt in localtime to UTC
- offset = dt.tzinfo._utcoffset
- dt = dt.replace(tzinfo=None)
- dt = dt - offset
- # convert it back, and return it
- return self.fromutc(dt)
-
- def localize(self, dt, is_dst=False):
- '''Convert naive time to local time.
-
- This method should be used to construct localtimes, rather
- than passing a tzinfo argument to a datetime constructor.
-
- is_dst is used to determine the correct timezone in the ambigous
- period at the end of daylight savings time.
-
- >>> from pytz import timezone
- >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
- >>> amdam = timezone('Europe/Amsterdam')
- >>> dt = datetime(2004, 10, 31, 2, 0, 0)
- >>> loc_dt1 = amdam.localize(dt, is_dst=True)
- >>> loc_dt2 = amdam.localize(dt, is_dst=False)
- >>> loc_dt1.strftime(fmt)
- '2004-10-31 02:00:00 CEST (+0200)'
- >>> loc_dt2.strftime(fmt)
- '2004-10-31 02:00:00 CET (+0100)'
- >>> str(loc_dt2 - loc_dt1)
- '1:00:00'
-
- Use is_dst=None to raise an AmbiguousTimeError for ambiguous
- times at the end of daylight savings
-
- >>> try:
- ... loc_dt1 = amdam.localize(dt, is_dst=None)
- ... except AmbiguousTimeError:
- ... print 'Oops'
- Oops
-
- >>> loc_dt1 = amdam.localize(dt, is_dst=None)
- Traceback (most recent call last):
- [...]
- AmbiguousTimeError: 2004-10-31 02:00:00
-
- is_dst defaults to False
-
- >>> amdam.localize(dt) == amdam.localize(dt, False)
- True
-
- '''
- if dt.tzinfo is not None:
- raise ValueError, 'Not naive datetime (tzinfo is already set)'
-
- # Find the possibly correct timezones. We probably just have one,
- # but we might end up with two if we are in the end-of-DST
- # transition period. Or possibly more in some particularly confused
- # location...
- possible_loc_dt = Set()
- for tzinfo in self._tzinfos.values():
- loc_dt = tzinfo.normalize(dt.replace(tzinfo=tzinfo))
- if loc_dt.replace(tzinfo=None) == dt:
- possible_loc_dt.add(loc_dt)
-
- if len(possible_loc_dt) == 1:
- return possible_loc_dt.pop()
-
- # If told to be strict, raise an exception since we have an
- # ambiguous case
- if is_dst is None:
- raise AmbiguousTimeError(dt)
-
- # Filter out the possiblilities that don't match the requested
- # is_dst
- filtered_possible_loc_dt = [
- p for p in possible_loc_dt
- if bool(p.tzinfo._dst) == is_dst
- ]
-
- # Hopefully we only have one possibility left. Return it.
- if len(filtered_possible_loc_dt) == 1:
- return filtered_possible_loc_dt[0]
-
- if len(filtered_possible_loc_dt) == 0:
- filtered_possible_loc_dt = list(possible_loc_dt)
-
- # If we get this far, we have in a wierd timezone transition
- # where the clocks have been wound back but is_dst is the same
- # in both (eg. Europe/Warsaw 1915 when they switched to CET).
- # At this point, we just have to guess unless we allow more
- # hints to be passed in (such as the UTC offset or abbreviation),
- # but that is just getting silly.
- #
- # Choose the earliest (by UTC) applicable timezone.
- def mycmp(a,b):
- return cmp(
- a.replace(tzinfo=None) - a.tzinfo._utcoffset,
- b.replace(tzinfo=None) - b.tzinfo._utcoffset,
- )
- filtered_possible_loc_dt.sort(mycmp)
- return filtered_possible_loc_dt[0]
-
- def utcoffset(self, dt):
- '''See datetime.tzinfo.utcoffset'''
- return self._utcoffset
-
- def dst(self, dt):
- '''See datetime.tzinfo.dst'''
- return self._dst
-
- def tzname(self, dt):
- '''See datetime.tzinfo.tzname'''
- return self._tzname
-
- def __repr__(self):
- if self._dst:
- dst = 'DST'
- else:
- dst = 'STD'
- if self._utcoffset > _notime:
- return '' % (
- self.zone, self._tzname, self._utcoffset, dst
- )
- else:
- return '' % (
- self.zone, self._tzname, self._utcoffset, dst
- )
-
- def __reduce__(self):
- # Special pickle to zone remains a singleton and to cope with
- # database changes.
- return pytz._p, (
- self.zone,
- _to_seconds(self._utcoffset),
- _to_seconds(self._dst),
- self._tzname
- )
-
-
-class AmbiguousTimeError(Exception):
- '''Exception raised when attempting to create an ambiguous wallclock time.
-
- At the end of a DST transition period, a particular wallclock time will
- occur twice (once before the clocks are set back, once after). Both
- possibilities may be correct, unless further information is supplied.
-
- See DstTzInfo.normalize() for more info
- '''
-
-
-def unpickler(zone, utcoffset=None, dstoffset=None, tzname=None):
- """Factory function for unpickling pytz tzinfo instances.
-
- This is shared for both StaticTzInfo and DstTzInfo instances, because
- database changes could cause a zones implementation to switch between
- these two base classes and we can't break pickles on a pytz version
- upgrade.
- """
- # Raises a KeyError if zone no longer exists, which should never happen
- # and would be a bug.
- tz = pytz.timezone(zone)
-
- # A StaticTzInfo - just return it
- if utcoffset is None:
- return tz
-
- # This pickle was created from a DstTzInfo. We need to
- # determine which of the list of tzinfo instances for this zone
- # to use in order to restore the state of any datetime instances using
- # it correctly.
- utcoffset = memorized_timedelta(utcoffset)
- dstoffset = memorized_timedelta(dstoffset)
- try:
- return tz._tzinfos[(utcoffset, dstoffset, tzname)]
- except KeyError:
- # The particular state requested in this timezone no longer exists.
- # This indicates a corrupt pickle, or the timezone database has been
- # corrected violently enough to make this particular
- # (utcoffset,dstoffset) no longer exist in the zone, or the
- # abbreviation has been changed.
- pass
-
- # See if we can find an entry differing only by tzname. Abbreviations
- # get changed from the initial guess by the database maintainers to
- # match reality when this information is discovered.
- for localized_tz in tz._tzinfos.values():
- if (localized_tz._utcoffset == utcoffset
- and localized_tz._dst == dstoffset):
- return localized_tz
-
- # This (utcoffset, dstoffset) information has been removed from the
- # zone. Add it back. This might occur when the database maintainers have
- # corrected incorrect information. datetime instances using this
- # incorrect information will continue to do so, exactly as they were
- # before being pickled. This is purely an overly paranoid safety net - I
- # doubt this will ever been needed in real life.
- inf = (utcoffset, dstoffset, tzname)
- tz._tzinfos[inf] = tz.__class__(inf, tz._tzinfos)
- return tz._tzinfos[inf]
-
diff --git a/modules/pytz/zone.tab b/modules/pytz/zone.tab
deleted file mode 100644
index d9b278b0..00000000
--- a/modules/pytz/zone.tab
+++ /dev/null
@@ -1,407 +0,0 @@
-# @(#)zone.tab 1.32
-#
-# TZ zone descriptions
-#
-# From Paul Eggert (1996-08-05):
-#
-# This file contains a table with the following columns:
-# 1. ISO 3166 2-character country code. See the file `iso3166.tab'.
-# 2. Latitude and longitude of the zone's principal location
-# in ISO 6709 sign-degrees-minutes-seconds format,
-# either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
-# first latitude (+ is north), then longitude (+ is east).
-# 3. Zone name used in value of TZ environment variable.
-# 4. Comments; present if and only if the country has multiple rows.
-#
-# Columns are separated by a single tab.
-# The table is sorted first by country, then an order within the country that
-# (1) makes some geographical sense, and
-# (2) puts the most populous zones first, where that does not contradict (1).
-#
-# Lines beginning with `#' are comments.
-#
-#country-
-#code coordinates TZ comments
-AD +4230+00131 Europe/Andorra
-AE +2518+05518 Asia/Dubai
-AF +3431+06912 Asia/Kabul
-AG +1703-06148 America/Antigua
-AI +1812-06304 America/Anguilla
-AL +4120+01950 Europe/Tirane
-AM +4011+04430 Asia/Yerevan
-AN +1211-06900 America/Curacao
-AO -0848+01314 Africa/Luanda
-AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
-AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
-AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
-AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
-AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
-AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
-AQ -6617+11031 Antarctica/Casey Casey Station, Bailey Peninsula
-AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole
-AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Base, Terre Adelie
-AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
-AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
-AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)
-AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
-AR -3124-06411 America/Argentina/Tucuman Tucuman (TM)
-AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
-AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
-AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
-AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
-AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC)
-AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF)
-AS -1416-17042 Pacific/Pago_Pago
-AT +4813+01620 Europe/Vienna
-AU -3133+15905 Australia/Lord_Howe Lord Howe Island
-AU -4253+14719 Australia/Hobart Tasmania - most locations
-AU -3956+14352 Australia/Currie Tasmania - King Island
-AU -3749+14458 Australia/Melbourne Victoria
-AU -3352+15113 Australia/Sydney New South Wales - most locations
-AU -3157+14127 Australia/Broken_Hill New South Wales - Yancowinna
-AU -2728+15302 Australia/Brisbane Queensland - most locations
-AU -2016+14900 Australia/Lindeman Queensland - Holiday Islands
-AU -3455+13835 Australia/Adelaide South Australia
-AU -1228+13050 Australia/Darwin Northern Territory
-AU -3157+11551 Australia/Perth Western Australia
-AW +1230-06858 America/Aruba
-AX +6006+01957 Europe/Mariehamn
-AZ +4023+04951 Asia/Baku
-BA +4352+01825 Europe/Sarajevo
-BB +1306-05937 America/Barbados
-BD +2343+09025 Asia/Dhaka
-BE +5050+00420 Europe/Brussels
-BF +1222-00131 Africa/Ouagadougou
-BG +4241+02319 Europe/Sofia
-BH +2623+05035 Asia/Bahrain
-BI -0323+02922 Africa/Bujumbura
-BJ +0629+00237 Africa/Porto-Novo
-BM +3217-06446 Atlantic/Bermuda
-BN +0456+11455 Asia/Brunei
-BO -1630-06809 America/La_Paz
-BR -0351-03225 America/Noronha Atlantic islands
-BR -0127-04829 America/Belem Amapa, E Para
-BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PB)
-BR -0803-03454 America/Recife Pernambuco
-BR -0712-04812 America/Araguaina Tocantins
-BR -0940-03543 America/Maceio Alagoas, Sergipe
-BR -1259-03831 America/Bahia Bahia
-BR -2332-04637 America/Sao_Paulo S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
-BR -2027-05437 America/Campo_Grande Mato Grosso do Sul
-BR -1535-05605 America/Cuiaba Mato Grosso
-BR -0846-06354 America/Porto_Velho W Para, Rondonia
-BR +0249-06040 America/Boa_Vista Roraima
-BR -0308-06001 America/Manaus E Amazonas
-BR -0640-06952 America/Eirunepe W Amazonas
-BR -0958-06748 America/Rio_Branco Acre
-BS +2505-07721 America/Nassau
-BT +2728+08939 Asia/Thimphu
-BW -2545+02555 Africa/Gaborone
-BY +5354+02734 Europe/Minsk
-BZ +1730-08812 America/Belize
-CA +4734-05243 America/St_Johns Newfoundland Island
-CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), NB, W Labrador, E Quebec & PEI
-CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
-CA +5320-06025 America/Goose_Bay Atlantic Time - E Labrador
-CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations
-CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations
-CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
-CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
-CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut
-CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut
-CA +6408-08310 America/Coral_Harbour Eastern Standard Time - Southampton Island
-CA +6245-09210 America/Rankin_Inlet Central Time - central Nunavut
-CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario
-CA +4843-09429 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario
-CA +6903-10505 America/Cambridge_Bay Central Time - west Nunavut
-CA +5024-10439 America/Regina Central Standard Time - Saskatchewan - most locations
-CA +5017-10750 America/Swift_Current Central Standard Time - Saskatchewan - midwest
-CA +5333-11328 America/Edmonton Mountain Time - Alberta, east British Columbia & west Saskatchewan
-CA +6227-11421 America/Yellowknife Mountain Time - central Northwest Territories
-CA +6825-11330 America/Inuvik Mountain Time - west Northwest Territories
-CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
-CA +4916-12307 America/Vancouver Pacific Time - west British Columbia
-CA +6043-13503 America/Whitehorse Pacific Time - south Yukon
-CA +6404-13925 America/Dawson Pacific Time - north Yukon
-CC -1210+09655 Indian/Cocos
-CD -0418+01518 Africa/Kinshasa west Dem. Rep. of Congo
-CD -1140+02728 Africa/Lubumbashi east Dem. Rep. of Congo
-CF +0422+01835 Africa/Bangui
-CG -0416+01517 Africa/Brazzaville
-CH +4723+00832 Europe/Zurich
-CI +0519-00402 Africa/Abidjan
-CK -2114-15946 Pacific/Rarotonga
-CL -3327-07040 America/Santiago most locations
-CL -2710-10927 Pacific/Easter Easter Island & Sala y Gomez
-CM +0403+00942 Africa/Douala
-CN +3114+12128 Asia/Shanghai east China - Beijing, Guangdong, Shanghai, etc.
-CN +4545+12641 Asia/Harbin Heilongjiang
-CN +2934+10635 Asia/Chongqing central China - Gansu, Guizhou, Sichuan, Yunnan, etc.
-CN +4348+08735 Asia/Urumqi Tibet & most of Xinjiang Uyghur
-CN +3929+07559 Asia/Kashgar southwest Xinjiang Uyghur
-CO +0436-07405 America/Bogota
-CR +0956-08405 America/Costa_Rica
-CS +4450+02030 Europe/Belgrade
-CU +2308-08222 America/Havana
-CV +1455-02331 Atlantic/Cape_Verde
-CX -1025+10543 Indian/Christmas
-CY +3510+03322 Asia/Nicosia
-CZ +5005+01426 Europe/Prague
-DE +5230+01322 Europe/Berlin
-DJ +1136+04309 Africa/Djibouti
-DK +5540+01235 Europe/Copenhagen
-DM +1518-06124 America/Dominica
-DO +1828-06954 America/Santo_Domingo
-DZ +3647+00303 Africa/Algiers
-EC -0210-07950 America/Guayaquil mainland
-EC -0054-08936 Pacific/Galapagos Galapagos Islands
-EE +5925+02445 Europe/Tallinn
-EG +3003+03115 Africa/Cairo
-EH +2709-01312 Africa/El_Aaiun
-ER +1520+03853 Africa/Asmera
-ES +4024-00341 Europe/Madrid mainland
-ES +3553-00519 Africa/Ceuta Ceuta & Melilla
-ES +2806-01524 Atlantic/Canary Canary Islands
-ET +0902+03842 Africa/Addis_Ababa
-FI +6010+02458 Europe/Helsinki
-FJ -1808+17825 Pacific/Fiji
-FK -5142-05751 Atlantic/Stanley
-FM +0725+15147 Pacific/Truk Truk (Chuuk) and Yap
-FM +0658+15813 Pacific/Ponape Ponape (Pohnpei)
-FM +0519+16259 Pacific/Kosrae Kosrae
-FO +6201-00646 Atlantic/Faeroe
-FR +4852+00220 Europe/Paris
-GA +0023+00927 Africa/Libreville
-GB +512830-0001845 Europe/London
-GD +1203-06145 America/Grenada
-GE +4143+04449 Asia/Tbilisi
-GF +0456-05220 America/Cayenne
-GH +0533-00013 Africa/Accra
-GI +3608-00521 Europe/Gibraltar
-GL +6411-05144 America/Godthab most locations
-GL +7646-01840 America/Danmarkshavn east coast, north of Scoresbysund
-GL +7030-02215 America/Scoresbysund Scoresbysund / Ittoqqortoormiit
-GL +7634-06847 America/Thule Thule / Pituffik
-GM +1328-01639 Africa/Banjul
-GN +0931-01343 Africa/Conakry
-GP +1614-06132 America/Guadeloupe
-GQ +0345+00847 Africa/Malabo
-GR +3758+02343 Europe/Athens
-GS -5416-03632 Atlantic/South_Georgia
-GT +1438-09031 America/Guatemala
-GU +1328+14445 Pacific/Guam
-GW +1151-01535 Africa/Bissau
-GY +0648-05810 America/Guyana
-HK +2217+11409 Asia/Hong_Kong
-HN +1406-08713 America/Tegucigalpa
-HR +4548+01558 Europe/Zagreb
-HT +1832-07220 America/Port-au-Prince
-HU +4730+01905 Europe/Budapest
-ID -0610+10648 Asia/Jakarta Java & Sumatra
-ID -0002+10920 Asia/Pontianak west & central Borneo
-ID -0507+11924 Asia/Makassar east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
-ID -0232+14042 Asia/Jayapura Irian Jaya & the Moluccas
-IE +5320-00615 Europe/Dublin
-IL +3146+03514 Asia/Jerusalem
-IN +2232+08822 Asia/Calcutta
-IO -0720+07225 Indian/Chagos
-IQ +3321+04425 Asia/Baghdad
-IR +3540+05126 Asia/Tehran
-IS +6409-02151 Atlantic/Reykjavik
-IT +4154+01229 Europe/Rome
-JM +1800-07648 America/Jamaica
-JO +3157+03556 Asia/Amman
-JP +353916+1394441 Asia/Tokyo
-KE -0117+03649 Africa/Nairobi
-KG +4254+07436 Asia/Bishkek
-KH +1133+10455 Asia/Phnom_Penh
-KI +0125+17300 Pacific/Tarawa Gilbert Islands
-KI -0308-17105 Pacific/Enderbury Phoenix Islands
-KI +0152-15720 Pacific/Kiritimati Line Islands
-KM -1141+04316 Indian/Comoro
-KN +1718-06243 America/St_Kitts
-KP +3901+12545 Asia/Pyongyang
-KR +3733+12658 Asia/Seoul
-KW +2920+04759 Asia/Kuwait
-KY +1918-08123 America/Cayman
-KZ +4315+07657 Asia/Almaty most locations
-KZ +4448+06528 Asia/Qyzylorda Qyzylorda (Kyzylorda, Kzyl-Orda)
-KZ +5017+05710 Asia/Aqtobe Aqtobe (Aktobe)
-KZ +4431+05016 Asia/Aqtau Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
-KZ +5113+05121 Asia/Oral West Kazakhstan
-LA +1758+10236 Asia/Vientiane
-LB +3353+03530 Asia/Beirut
-LC +1401-06100 America/St_Lucia
-LI +4709+00931 Europe/Vaduz
-LK +0656+07951 Asia/Colombo
-LR +0618-01047 Africa/Monrovia
-LS -2928+02730 Africa/Maseru
-LT +5441+02519 Europe/Vilnius
-LU +4936+00609 Europe/Luxembourg
-LV +5657+02406 Europe/Riga
-LY +3254+01311 Africa/Tripoli
-MA +3339-00735 Africa/Casablanca
-MC +4342+00723 Europe/Monaco
-MD +4700+02850 Europe/Chisinau
-MG -1855+04731 Indian/Antananarivo
-MH +0709+17112 Pacific/Majuro most locations
-MH +0905+16720 Pacific/Kwajalein Kwajalein
-MK +4159+02126 Europe/Skopje
-ML +1239-00800 Africa/Bamako
-MM +1647+09610 Asia/Rangoon
-MN +4755+10653 Asia/Ulaanbaatar most locations
-MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
-MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
-MO +2214+11335 Asia/Macau
-MP +1512+14545 Pacific/Saipan
-MQ +1436-06105 America/Martinique
-MR +1806-01557 Africa/Nouakchott
-MS +1644-06213 America/Montserrat
-MT +3554+01431 Europe/Malta
-MU -2010+05730 Indian/Mauritius
-MV +0410+07330 Indian/Maldives
-MW -1547+03500 Africa/Blantyre
-MX +1924-09909 America/Mexico_City Central Time - most locations
-MX +2105-08646 America/Cancun Central Time - Quintana Roo
-MX +2058-08937 America/Merida Central Time - Campeche, Yucatan
-MX +2540-10019 America/Monterrey Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas
-MX +2313-10625 America/Mazatlan Mountain Time - S Baja, Nayarit, Sinaloa
-MX +2838-10605 America/Chihuahua Mountain Time - Chihuahua
-MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora
-MX +3232-11701 America/Tijuana Pacific Time
-MY +0310+10142 Asia/Kuala_Lumpur peninsular Malaysia
-MY +0133+11020 Asia/Kuching Sabah & Sarawak
-MZ -2558+03235 Africa/Maputo
-NA -2234+01706 Africa/Windhoek
-NC -2216+16530 Pacific/Noumea
-NE +1331+00207 Africa/Niamey
-NF -2903+16758 Pacific/Norfolk
-NG +0627+00324 Africa/Lagos
-NI +1209-08617 America/Managua
-NL +5222+00454 Europe/Amsterdam
-NO +5955+01045 Europe/Oslo
-NP +2743+08519 Asia/Katmandu
-NR -0031+16655 Pacific/Nauru
-NU -1901+16955 Pacific/Niue
-NZ -3652+17446 Pacific/Auckland most locations
-NZ -4357-17633 Pacific/Chatham Chatham Islands
-OM +2336+05835 Asia/Muscat
-PA +0858-07932 America/Panama
-PE -1203-07703 America/Lima
-PF -1732-14934 Pacific/Tahiti Society Islands
-PF -0900-13930 Pacific/Marquesas Marquesas Islands
-PF -2308-13457 Pacific/Gambier Gambier Islands
-PG -0930+14710 Pacific/Port_Moresby
-PH +1435+12100 Asia/Manila
-PK +2452+06703 Asia/Karachi
-PL +5215+02100 Europe/Warsaw
-PM +4703-05620 America/Miquelon
-PN -2504-13005 Pacific/Pitcairn
-PR +182806-0660622 America/Puerto_Rico
-PS +3130+03428 Asia/Gaza
-PT +3843-00908 Europe/Lisbon mainland
-PT +3238-01654 Atlantic/Madeira Madeira Islands
-PT +3744-02540 Atlantic/Azores Azores
-PW +0720+13429 Pacific/Palau
-PY -2516-05740 America/Asuncion
-QA +2517+05132 Asia/Qatar
-RE -2052+05528 Indian/Reunion
-RO +4426+02606 Europe/Bucharest
-RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad
-RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
-RU +5312+05009 Europe/Samara Moscow+01 - Caspian Sea
-RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
-RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
-RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
-RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River
-RU +5216+10420 Asia/Irkutsk Moscow+05 - Lake Baikal
-RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River
-RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River
-RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island
-RU +5934+15048 Asia/Magadan Moscow+08 - Magadan
-RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka
-RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea
-RW -0157+03004 Africa/Kigali
-SA +2438+04643 Asia/Riyadh
-SB -0932+16012 Pacific/Guadalcanal
-SC -0440+05528 Indian/Mahe
-SD +1536+03232 Africa/Khartoum
-SE +5920+01803 Europe/Stockholm
-SG +0117+10351 Asia/Singapore
-SH -1555-00542 Atlantic/St_Helena
-SI +4603+01431 Europe/Ljubljana
-SJ +7800+01600 Arctic/Longyearbyen Svalbard
-SJ +7059-00805 Atlantic/Jan_Mayen Jan Mayen
-SK +4809+01707 Europe/Bratislava
-SL +0830-01315 Africa/Freetown
-SM +4355+01228 Europe/San_Marino
-SN +1440-01726 Africa/Dakar
-SO +0204+04522 Africa/Mogadishu
-SR +0550-05510 America/Paramaribo
-ST +0020+00644 Africa/Sao_Tome
-SV +1342-08912 America/El_Salvador
-SY +3330+03618 Asia/Damascus
-SZ -2618+03106 Africa/Mbabane
-TC +2128-07108 America/Grand_Turk
-TD +1207+01503 Africa/Ndjamena
-TF -492110+0701303 Indian/Kerguelen
-TG +0608+00113 Africa/Lome
-TH +1345+10031 Asia/Bangkok
-TJ +3835+06848 Asia/Dushanbe
-TK -0922-17114 Pacific/Fakaofo
-TL -0833+12535 Asia/Dili
-TM +3757+05823 Asia/Ashgabat
-TN +3648+01011 Africa/Tunis
-TO -2110+17510 Pacific/Tongatapu
-TR +4101+02858 Europe/Istanbul
-TT +1039-06131 America/Port_of_Spain
-TV -0831+17913 Pacific/Funafuti
-TW +2503+12130 Asia/Taipei
-TZ -0648+03917 Africa/Dar_es_Salaam
-UA +5026+03031 Europe/Kiev most locations
-UA +4837+02218 Europe/Uzhgorod Ruthenia
-UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk
-UA +4457+03406 Europe/Simferopol central Crimea
-UG +0019+03225 Africa/Kampala
-UM +1700-16830 Pacific/Johnston Johnston Atoll
-UM +2813-17722 Pacific/Midway Midway Islands
-UM +1917+16637 Pacific/Wake Wake Island
-US +404251-0740023 America/New_York Eastern Time
-US +421953-0830245 America/Detroit Eastern Time - Michigan - most locations
-US +381515-0854534 America/Kentucky/Louisville Eastern Time - Kentucky - Louisville area
-US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County
-US +394606-0860929 America/Indiana/Indianapolis Eastern Standard Time - Indiana - most locations
-US +382232-0862041 America/Indiana/Marengo Eastern Standard Time - Indiana - Crawford County
-US +411745-0863730 America/Indiana/Knox Eastern Standard Time - Indiana - Starke County
-US +384452-0850402 America/Indiana/Vevay Eastern Standard Time - Indiana - Switzerland County
-US +415100-0873900 America/Chicago Central Time
-US +450628-0873651 America/Menominee Central Time - Michigan - Wisconsin border
-US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County
-US +394421-1045903 America/Denver Mountain Time
-US +433649-1161209 America/Boise Mountain Time - south Idaho & east Oregon
-US +364708-1084111 America/Shiprock Mountain Time - Navajo
-US +332654-1120424 America/Phoenix Mountain Standard Time - Arizona
-US +340308-1181434 America/Los_Angeles Pacific Time
-US +611305-1495401 America/Anchorage Alaska Time
-US +581807-1342511 America/Juneau Alaska Time - Alaska panhandle
-US +593249-1394338 America/Yakutat Alaska Time - Alaska panhandle neck
-US +643004-1652423 America/Nome Alaska Time - west Alaska
-US +515248-1763929 America/Adak Aleutian Islands
-US +211825-1575130 Pacific/Honolulu Hawaii
-UY -3453-05611 America/Montevideo
-UZ +3940+06648 Asia/Samarkand west Uzbekistan
-UZ +4120+06918 Asia/Tashkent east Uzbekistan
-VA +4154+01227 Europe/Vatican
-VC +1309-06114 America/St_Vincent
-VE +1030-06656 America/Caracas
-VG +1827-06437 America/Tortola
-VI +1821-06456 America/St_Thomas
-VN +1045+10640 Asia/Saigon
-VU -1740+16825 Pacific/Efate
-WF -1318-17610 Pacific/Wallis
-WS -1350-17144 Pacific/Apia
-YE +1245+04512 Asia/Aden
-YT -1247+04514 Indian/Mayotte
-ZA -2615+02800 Africa/Johannesburg
-ZM -1525+02817 Africa/Lusaka
-ZW -1750+03103 Africa/Harare
diff --git a/modules/pytz/zoneinfo/Africa/Abidjan.py b/modules/pytz/zoneinfo/Africa/Abidjan.py
deleted file mode 100644
index a78a5071..00000000
--- a/modules/pytz/zoneinfo/Africa/Abidjan.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Abidjan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Abidjan(DstTzInfo):
- '''Africa/Abidjan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Abidjan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,16,8),
- ]
-
- _transition_info = [
-i(-960,0,'LMT'),
-i(0,0,'GMT'),
- ]
-
-Abidjan = Abidjan()
-
diff --git a/modules/pytz/zoneinfo/Africa/Accra.py b/modules/pytz/zoneinfo/Africa/Accra.py
deleted file mode 100644
index 62c42d39..00000000
--- a/modules/pytz/zoneinfo/Africa/Accra.py
+++ /dev/null
@@ -1,50 +0,0 @@
-'''tzinfo timezone information for Africa/Accra.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Accra(DstTzInfo):
- '''Africa/Accra timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Accra'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,1,1,0,0,52),
-d(1936,9,1,0,0,0),
-d(1936,12,30,23,40,0),
-d(1937,9,1,0,0,0),
-d(1937,12,30,23,40,0),
-d(1938,9,1,0,0,0),
-d(1938,12,30,23,40,0),
-d(1939,9,1,0,0,0),
-d(1939,12,30,23,40,0),
-d(1940,9,1,0,0,0),
-d(1940,12,30,23,40,0),
-d(1941,9,1,0,0,0),
-d(1941,12,30,23,40,0),
-d(1942,9,1,0,0,0),
-d(1942,12,30,23,40,0),
- ]
-
- _transition_info = [
-i(-60,0,'LMT'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
-i(1200,1200,'GHST'),
-i(0,0,'GMT'),
- ]
-
-Accra = Accra()
-
diff --git a/modules/pytz/zoneinfo/Africa/Addis_Ababa.py b/modules/pytz/zoneinfo/Africa/Addis_Ababa.py
deleted file mode 100644
index 2b7a992e..00000000
--- a/modules/pytz/zoneinfo/Africa/Addis_Ababa.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Addis_Ababa.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Addis_Ababa(DstTzInfo):
- '''Africa/Addis_Ababa timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Addis_Ababa'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1936,5,4,21,24,40),
- ]
-
- _transition_info = [
-i(9300,0,'ADMT'),
-i(10800,0,'EAT'),
- ]
-
-Addis_Ababa = Addis_Ababa()
-
diff --git a/modules/pytz/zoneinfo/Africa/Algiers.py b/modules/pytz/zoneinfo/Africa/Algiers.py
deleted file mode 100644
index 6f2b763f..00000000
--- a/modules/pytz/zoneinfo/Africa/Algiers.py
+++ /dev/null
@@ -1,86 +0,0 @@
-'''tzinfo timezone information for Africa/Algiers.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Algiers(DstTzInfo):
- '''Africa/Algiers timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Algiers'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,3,10,23,50,39),
-d(1916,6,14,23,0,0),
-d(1916,10,1,23,0,0),
-d(1917,3,24,23,0,0),
-d(1917,10,7,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,6,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,5,23,0,0),
-d(1920,2,14,23,0,0),
-d(1920,10,23,23,0,0),
-d(1921,3,14,23,0,0),
-d(1921,6,21,23,0,0),
-d(1939,9,11,23,0,0),
-d(1939,11,19,0,0,0),
-d(1940,2,25,2,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,8,0,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,15,23,0,0),
-d(1946,10,6,23,0,0),
-d(1956,1,29,0,0,0),
-d(1963,4,13,23,0,0),
-d(1971,4,25,23,0,0),
-d(1971,9,26,23,0,0),
-d(1977,5,6,0,0,0),
-d(1977,10,20,23,0,0),
-d(1978,3,24,0,0,0),
-d(1978,9,22,1,0,0),
-d(1979,10,25,23,0,0),
-d(1980,4,25,0,0,0),
-d(1980,10,31,1,0,0),
-d(1981,5,1,0,0,0),
- ]
-
- _transition_info = [
-i(540,0,'PMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
- ]
-
-Algiers = Algiers()
-
diff --git a/modules/pytz/zoneinfo/Africa/Asmera.py b/modules/pytz/zoneinfo/Africa/Asmera.py
deleted file mode 100644
index f05e0444..00000000
--- a/modules/pytz/zoneinfo/Africa/Asmera.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Asmera.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Asmera(DstTzInfo):
- '''Africa/Asmera timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Asmera'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1936,5,4,21,24,40),
- ]
-
- _transition_info = [
-i(9300,0,'ADMT'),
-i(10800,0,'EAT'),
- ]
-
-Asmera = Asmera()
-
diff --git a/modules/pytz/zoneinfo/Africa/Bamako.py b/modules/pytz/zoneinfo/Africa/Bamako.py
deleted file mode 100644
index 67a15dd9..00000000
--- a/modules/pytz/zoneinfo/Africa/Bamako.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Bamako.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bamako(DstTzInfo):
- '''Africa/Bamako timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Bamako'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,32,0),
-d(1934,2,26,0,0,0),
-d(1960,6,20,1,0,0),
- ]
-
- _transition_info = [
-i(-1920,0,'LMT'),
-i(0,0,'GMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Bamako = Bamako()
-
diff --git a/modules/pytz/zoneinfo/Africa/Bangui.py b/modules/pytz/zoneinfo/Africa/Bangui.py
deleted file mode 100644
index 6fc9ea9c..00000000
--- a/modules/pytz/zoneinfo/Africa/Bangui.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Bangui.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bangui(DstTzInfo):
- '''Africa/Bangui timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Bangui'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,22,45,40),
- ]
-
- _transition_info = [
-i(4440,0,'LMT'),
-i(3600,0,'WAT'),
- ]
-
-Bangui = Bangui()
-
diff --git a/modules/pytz/zoneinfo/Africa/Banjul.py b/modules/pytz/zoneinfo/Africa/Banjul.py
deleted file mode 100644
index 6d88185e..00000000
--- a/modules/pytz/zoneinfo/Africa/Banjul.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Banjul.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Banjul(DstTzInfo):
- '''Africa/Banjul timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Banjul'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,1,6,36),
-d(1935,1,1,1,6,36),
-d(1964,1,1,1,0,0),
- ]
-
- _transition_info = [
-i(-4020,0,'LMT'),
-i(-4020,0,'BMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Banjul = Banjul()
-
diff --git a/modules/pytz/zoneinfo/Africa/Bissau.py b/modules/pytz/zoneinfo/Africa/Bissau.py
deleted file mode 100644
index 9ba10a3f..00000000
--- a/modules/pytz/zoneinfo/Africa/Bissau.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Bissau.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bissau(DstTzInfo):
- '''Africa/Bissau timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Bissau'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,26,1,2,20),
-d(1975,1,1,1,0,0),
- ]
-
- _transition_info = [
-i(-3720,0,'LMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Bissau = Bissau()
-
diff --git a/modules/pytz/zoneinfo/Africa/Blantyre.py b/modules/pytz/zoneinfo/Africa/Blantyre.py
deleted file mode 100644
index d9ee75fe..00000000
--- a/modules/pytz/zoneinfo/Africa/Blantyre.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Blantyre.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Blantyre(DstTzInfo):
- '''Africa/Blantyre timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Blantyre'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,21,40,0),
- ]
-
- _transition_info = [
-i(8400,0,'LMT'),
-i(7200,0,'CAT'),
- ]
-
-Blantyre = Blantyre()
-
diff --git a/modules/pytz/zoneinfo/Africa/Brazzaville.py b/modules/pytz/zoneinfo/Africa/Brazzaville.py
deleted file mode 100644
index b027a136..00000000
--- a/modules/pytz/zoneinfo/Africa/Brazzaville.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Brazzaville.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Brazzaville(DstTzInfo):
- '''Africa/Brazzaville timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Brazzaville'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,22,58,52),
- ]
-
- _transition_info = [
-i(3660,0,'LMT'),
-i(3600,0,'WAT'),
- ]
-
-Brazzaville = Brazzaville()
-
diff --git a/modules/pytz/zoneinfo/Africa/Bujumbura.py b/modules/pytz/zoneinfo/Africa/Bujumbura.py
deleted file mode 100644
index 5c6df45e..00000000
--- a/modules/pytz/zoneinfo/Africa/Bujumbura.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Africa/Bujumbura.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Bujumbura(StaticTzInfo):
- '''Africa/Bujumbura timezone definition. See datetime.tzinfo for details'''
- zone = 'Africa/Bujumbura'
- _utcoffset = timedelta(seconds=7200)
- _tzname = 'CAT'
-
-Bujumbura = Bujumbura()
-
diff --git a/modules/pytz/zoneinfo/Africa/Cairo.py b/modules/pytz/zoneinfo/Africa/Cairo.py
deleted file mode 100644
index 6aff50ae..00000000
--- a/modules/pytz/zoneinfo/Africa/Cairo.py
+++ /dev/null
@@ -1,368 +0,0 @@
-'''tzinfo timezone information for Africa/Cairo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cairo(DstTzInfo):
- '''Africa/Cairo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Cairo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1940,7,14,22,0,0),
-d(1940,9,30,21,0,0),
-d(1941,4,14,22,0,0),
-d(1941,9,15,21,0,0),
-d(1942,3,31,22,0,0),
-d(1942,10,26,21,0,0),
-d(1943,3,31,22,0,0),
-d(1943,10,31,21,0,0),
-d(1944,3,31,22,0,0),
-d(1944,10,31,21,0,0),
-d(1945,4,15,22,0,0),
-d(1945,10,31,21,0,0),
-d(1957,5,9,22,0,0),
-d(1957,9,30,21,0,0),
-d(1958,4,30,22,0,0),
-d(1958,9,30,21,0,0),
-d(1959,4,30,23,0,0),
-d(1959,9,30,0,0,0),
-d(1960,4,30,23,0,0),
-d(1960,9,30,0,0,0),
-d(1961,4,30,23,0,0),
-d(1961,9,30,0,0,0),
-d(1962,4,30,23,0,0),
-d(1962,9,30,0,0,0),
-d(1963,4,30,23,0,0),
-d(1963,9,30,0,0,0),
-d(1964,4,30,23,0,0),
-d(1964,9,30,0,0,0),
-d(1965,4,30,23,0,0),
-d(1965,9,30,0,0,0),
-d(1966,4,30,23,0,0),
-d(1966,10,1,0,0,0),
-d(1967,4,30,23,0,0),
-d(1967,10,1,0,0,0),
-d(1968,4,30,23,0,0),
-d(1968,10,1,0,0,0),
-d(1969,4,30,23,0,0),
-d(1969,10,1,0,0,0),
-d(1970,4,30,23,0,0),
-d(1970,10,1,0,0,0),
-d(1971,4,30,23,0,0),
-d(1971,10,1,0,0,0),
-d(1972,4,30,23,0,0),
-d(1972,10,1,0,0,0),
-d(1973,4,30,23,0,0),
-d(1973,10,1,0,0,0),
-d(1974,4,30,23,0,0),
-d(1974,10,1,0,0,0),
-d(1975,4,30,23,0,0),
-d(1975,10,1,0,0,0),
-d(1976,4,30,23,0,0),
-d(1976,10,1,0,0,0),
-d(1977,4,30,23,0,0),
-d(1977,10,1,0,0,0),
-d(1978,4,30,23,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,30,23,0,0),
-d(1979,10,1,0,0,0),
-d(1980,4,30,23,0,0),
-d(1980,10,1,0,0,0),
-d(1981,4,30,23,0,0),
-d(1981,10,1,0,0,0),
-d(1982,7,24,23,0,0),
-d(1982,10,1,0,0,0),
-d(1983,7,11,23,0,0),
-d(1983,10,1,0,0,0),
-d(1984,4,30,23,0,0),
-d(1984,10,1,0,0,0),
-d(1985,4,30,23,0,0),
-d(1985,10,1,0,0,0),
-d(1986,4,30,23,0,0),
-d(1986,10,1,0,0,0),
-d(1987,4,30,23,0,0),
-d(1987,10,1,0,0,0),
-d(1988,4,30,23,0,0),
-d(1988,10,1,0,0,0),
-d(1989,5,5,23,0,0),
-d(1989,10,1,0,0,0),
-d(1990,4,30,23,0,0),
-d(1990,10,1,0,0,0),
-d(1991,4,30,23,0,0),
-d(1991,10,1,0,0,0),
-d(1992,4,30,23,0,0),
-d(1992,10,1,0,0,0),
-d(1993,4,30,23,0,0),
-d(1993,10,1,0,0,0),
-d(1994,4,30,23,0,0),
-d(1994,10,1,0,0,0),
-d(1995,4,27,22,0,0),
-d(1995,9,28,21,0,0),
-d(1996,4,25,22,0,0),
-d(1996,9,26,21,0,0),
-d(1997,4,24,22,0,0),
-d(1997,9,25,21,0,0),
-d(1998,4,23,22,0,0),
-d(1998,9,24,21,0,0),
-d(1999,4,29,22,0,0),
-d(1999,9,30,21,0,0),
-d(2000,4,27,22,0,0),
-d(2000,9,28,21,0,0),
-d(2001,4,26,22,0,0),
-d(2001,9,27,21,0,0),
-d(2002,4,25,22,0,0),
-d(2002,9,26,21,0,0),
-d(2003,4,24,22,0,0),
-d(2003,9,25,21,0,0),
-d(2004,4,29,22,0,0),
-d(2004,9,30,21,0,0),
-d(2005,4,28,22,0,0),
-d(2005,9,29,21,0,0),
-d(2006,4,27,22,0,0),
-d(2006,9,28,21,0,0),
-d(2007,4,26,22,0,0),
-d(2007,9,27,21,0,0),
-d(2008,4,24,22,0,0),
-d(2008,9,25,21,0,0),
-d(2009,4,23,22,0,0),
-d(2009,9,24,21,0,0),
-d(2010,4,29,22,0,0),
-d(2010,9,30,21,0,0),
-d(2011,4,28,22,0,0),
-d(2011,9,29,21,0,0),
-d(2012,4,26,22,0,0),
-d(2012,9,27,21,0,0),
-d(2013,4,25,22,0,0),
-d(2013,9,26,21,0,0),
-d(2014,4,24,22,0,0),
-d(2014,9,25,21,0,0),
-d(2015,4,23,22,0,0),
-d(2015,9,24,21,0,0),
-d(2016,4,28,22,0,0),
-d(2016,9,29,21,0,0),
-d(2017,4,27,22,0,0),
-d(2017,9,28,21,0,0),
-d(2018,4,26,22,0,0),
-d(2018,9,27,21,0,0),
-d(2019,4,25,22,0,0),
-d(2019,9,26,21,0,0),
-d(2020,4,23,22,0,0),
-d(2020,9,24,21,0,0),
-d(2021,4,29,22,0,0),
-d(2021,9,30,21,0,0),
-d(2022,4,28,22,0,0),
-d(2022,9,29,21,0,0),
-d(2023,4,27,22,0,0),
-d(2023,9,28,21,0,0),
-d(2024,4,25,22,0,0),
-d(2024,9,26,21,0,0),
-d(2025,4,24,22,0,0),
-d(2025,9,25,21,0,0),
-d(2026,4,23,22,0,0),
-d(2026,9,24,21,0,0),
-d(2027,4,29,22,0,0),
-d(2027,9,30,21,0,0),
-d(2028,4,27,22,0,0),
-d(2028,9,28,21,0,0),
-d(2029,4,26,22,0,0),
-d(2029,9,27,21,0,0),
-d(2030,4,25,22,0,0),
-d(2030,9,26,21,0,0),
-d(2031,4,24,22,0,0),
-d(2031,9,25,21,0,0),
-d(2032,4,29,22,0,0),
-d(2032,9,30,21,0,0),
-d(2033,4,28,22,0,0),
-d(2033,9,29,21,0,0),
-d(2034,4,27,22,0,0),
-d(2034,9,28,21,0,0),
-d(2035,4,26,22,0,0),
-d(2035,9,27,21,0,0),
-d(2036,4,24,22,0,0),
-d(2036,9,25,21,0,0),
-d(2037,4,23,22,0,0),
-d(2037,9,24,21,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Cairo = Cairo()
-
diff --git a/modules/pytz/zoneinfo/Africa/Casablanca.py b/modules/pytz/zoneinfo/Africa/Casablanca.py
deleted file mode 100644
index 3e7bf3b3..00000000
--- a/modules/pytz/zoneinfo/Africa/Casablanca.py
+++ /dev/null
@@ -1,58 +0,0 @@
-'''tzinfo timezone information for Africa/Casablanca.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Casablanca(DstTzInfo):
- '''Africa/Casablanca timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Casablanca'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1913,10,26,0,30,20),
-d(1939,9,12,0,0,0),
-d(1939,11,18,23,0,0),
-d(1940,2,25,0,0,0),
-d(1945,11,17,23,0,0),
-d(1950,6,11,0,0,0),
-d(1950,10,28,23,0,0),
-d(1967,6,3,12,0,0),
-d(1967,9,30,23,0,0),
-d(1974,6,24,0,0,0),
-d(1974,8,31,23,0,0),
-d(1976,5,1,0,0,0),
-d(1976,7,31,23,0,0),
-d(1977,5,1,0,0,0),
-d(1977,9,27,23,0,0),
-d(1978,6,1,0,0,0),
-d(1978,8,3,23,0,0),
-d(1984,3,16,0,0,0),
-d(1985,12,31,23,0,0),
- ]
-
- _transition_info = [
-i(-1800,0,'LMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
- ]
-
-Casablanca = Casablanca()
-
diff --git a/modules/pytz/zoneinfo/Africa/Ceuta.py b/modules/pytz/zoneinfo/Africa/Ceuta.py
deleted file mode 100644
index 8da35b7c..00000000
--- a/modules/pytz/zoneinfo/Africa/Ceuta.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for Africa/Ceuta.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ceuta(DstTzInfo):
- '''Africa/Ceuta timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Ceuta'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,5,6,23,0,0),
-d(1918,10,7,22,0,0),
-d(1924,4,16,23,0,0),
-d(1924,10,4,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,6,23,0,0),
-d(1929,1,1,0,0,0),
-d(1967,6,3,12,0,0),
-d(1967,9,30,23,0,0),
-d(1974,6,24,0,0,0),
-d(1974,8,31,23,0,0),
-d(1976,5,1,0,0,0),
-d(1976,7,31,23,0,0),
-d(1977,5,1,0,0,0),
-d(1977,9,27,23,0,0),
-d(1978,6,1,0,0,0),
-d(1978,8,3,23,0,0),
-d(1984,3,16,0,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Ceuta = Ceuta()
-
diff --git a/modules/pytz/zoneinfo/Africa/Conakry.py b/modules/pytz/zoneinfo/Africa/Conakry.py
deleted file mode 100644
index 39fd4059..00000000
--- a/modules/pytz/zoneinfo/Africa/Conakry.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Conakry.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Conakry(DstTzInfo):
- '''Africa/Conakry timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Conakry'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,54,52),
-d(1934,2,26,0,0,0),
-d(1960,1,1,1,0,0),
- ]
-
- _transition_info = [
-i(-3300,0,'LMT'),
-i(0,0,'GMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Conakry = Conakry()
-
diff --git a/modules/pytz/zoneinfo/Africa/Dakar.py b/modules/pytz/zoneinfo/Africa/Dakar.py
deleted file mode 100644
index 5a07e676..00000000
--- a/modules/pytz/zoneinfo/Africa/Dakar.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Dakar.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dakar(DstTzInfo):
- '''Africa/Dakar timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Dakar'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,1,9,44),
-d(1941,6,1,1,0,0),
- ]
-
- _transition_info = [
-i(-4200,0,'LMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Dakar = Dakar()
-
diff --git a/modules/pytz/zoneinfo/Africa/Dar_es_Salaam.py b/modules/pytz/zoneinfo/Africa/Dar_es_Salaam.py
deleted file mode 100644
index 63f72fe5..00000000
--- a/modules/pytz/zoneinfo/Africa/Dar_es_Salaam.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Dar_es_Salaam.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dar_es_Salaam(DstTzInfo):
- '''Africa/Dar_es_Salaam timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Dar_es_Salaam'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1930,12,31,21,22,52),
-d(1947,12,31,21,0,0),
-d(1960,12,31,21,15,15),
- ]
-
- _transition_info = [
-i(9420,0,'LMT'),
-i(10800,0,'EAT'),
-i(9900,0,'BEAUT'),
-i(10800,0,'EAT'),
- ]
-
-Dar_es_Salaam = Dar_es_Salaam()
-
diff --git a/modules/pytz/zoneinfo/Africa/Djibouti.py b/modules/pytz/zoneinfo/Africa/Djibouti.py
deleted file mode 100644
index 1f114880..00000000
--- a/modules/pytz/zoneinfo/Africa/Djibouti.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Djibouti.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Djibouti(DstTzInfo):
- '''Africa/Djibouti timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Djibouti'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,6,30,21,7,24),
- ]
-
- _transition_info = [
-i(10380,0,'LMT'),
-i(10800,0,'EAT'),
- ]
-
-Djibouti = Djibouti()
-
diff --git a/modules/pytz/zoneinfo/Africa/Douala.py b/modules/pytz/zoneinfo/Africa/Douala.py
deleted file mode 100644
index ffa00b51..00000000
--- a/modules/pytz/zoneinfo/Africa/Douala.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Douala.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Douala(DstTzInfo):
- '''Africa/Douala timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Douala'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,23,21,12),
- ]
-
- _transition_info = [
-i(2340,0,'LMT'),
-i(3600,0,'WAT'),
- ]
-
-Douala = Douala()
-
diff --git a/modules/pytz/zoneinfo/Africa/El_Aaiun.py b/modules/pytz/zoneinfo/Africa/El_Aaiun.py
deleted file mode 100644
index 7fa97f7f..00000000
--- a/modules/pytz/zoneinfo/Africa/El_Aaiun.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/El_Aaiun.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class El_Aaiun(DstTzInfo):
- '''Africa/El_Aaiun timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/El_Aaiun'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1934,1,1,0,52,48),
-d(1976,4,14,1,0,0),
- ]
-
- _transition_info = [
-i(-3180,0,'LMT'),
-i(-3600,0,'WAT'),
-i(0,0,'WET'),
- ]
-
-El_Aaiun = El_Aaiun()
-
diff --git a/modules/pytz/zoneinfo/Africa/Freetown.py b/modules/pytz/zoneinfo/Africa/Freetown.py
deleted file mode 100644
index 729e0f38..00000000
--- a/modules/pytz/zoneinfo/Africa/Freetown.py
+++ /dev/null
@@ -1,80 +0,0 @@
-'''tzinfo timezone information for Africa/Freetown.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Freetown(DstTzInfo):
- '''Africa/Freetown timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Freetown'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1913,6,1,0,53,0),
-d(1935,6,1,1,0,0),
-d(1935,10,1,0,20,0),
-d(1936,6,1,1,0,0),
-d(1936,10,1,0,20,0),
-d(1937,6,1,1,0,0),
-d(1937,10,1,0,20,0),
-d(1938,6,1,1,0,0),
-d(1938,10,1,0,20,0),
-d(1939,6,1,1,0,0),
-d(1939,10,1,0,20,0),
-d(1940,6,1,1,0,0),
-d(1940,10,1,0,20,0),
-d(1941,6,1,1,0,0),
-d(1941,10,1,0,20,0),
-d(1942,6,1,1,0,0),
-d(1942,10,1,0,20,0),
-d(1957,1,1,1,0,0),
-d(1957,6,1,0,0,0),
-d(1957,8,31,23,0,0),
-d(1958,6,1,0,0,0),
-d(1958,8,31,23,0,0),
-d(1959,6,1,0,0,0),
-d(1959,8,31,23,0,0),
-d(1960,6,1,0,0,0),
-d(1960,8,31,23,0,0),
-d(1961,6,1,0,0,0),
-d(1961,8,31,23,0,0),
-d(1962,6,1,0,0,0),
-d(1962,8,31,23,0,0),
- ]
-
- _transition_info = [
-i(-3180,0,'FMT'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(-1200,2400,'SLST'),
-i(-3600,0,'WAT'),
-i(0,0,'WAT'),
-i(3600,3600,'SLST'),
-i(0,0,'GMT'),
-i(3600,3600,'SLST'),
-i(0,0,'GMT'),
-i(3600,3600,'SLST'),
-i(0,0,'GMT'),
-i(3600,3600,'SLST'),
-i(0,0,'GMT'),
-i(3600,3600,'SLST'),
-i(0,0,'GMT'),
-i(3600,3600,'SLST'),
-i(0,0,'GMT'),
- ]
-
-Freetown = Freetown()
-
diff --git a/modules/pytz/zoneinfo/Africa/Gaborone.py b/modules/pytz/zoneinfo/Africa/Gaborone.py
deleted file mode 100644
index 2f7ca37c..00000000
--- a/modules/pytz/zoneinfo/Africa/Gaborone.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Gaborone.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Gaborone(DstTzInfo):
- '''Africa/Gaborone timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Gaborone'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1943,9,19,0,0,0),
-d(1944,3,18,23,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
- ]
-
-Gaborone = Gaborone()
-
diff --git a/modules/pytz/zoneinfo/Africa/Harare.py b/modules/pytz/zoneinfo/Africa/Harare.py
deleted file mode 100644
index 3dd81aaa..00000000
--- a/modules/pytz/zoneinfo/Africa/Harare.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Harare.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Harare(DstTzInfo):
- '''Africa/Harare timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Harare'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,21,55,48),
- ]
-
- _transition_info = [
-i(7440,0,'LMT'),
-i(7200,0,'CAT'),
- ]
-
-Harare = Harare()
-
diff --git a/modules/pytz/zoneinfo/Africa/Johannesburg.py b/modules/pytz/zoneinfo/Africa/Johannesburg.py
deleted file mode 100644
index 09bde279..00000000
--- a/modules/pytz/zoneinfo/Africa/Johannesburg.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for Africa/Johannesburg.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Johannesburg(DstTzInfo):
- '''Africa/Johannesburg timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Johannesburg'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,22,30,0),
-d(1942,9,20,0,0,0),
-d(1943,3,20,23,0,0),
-d(1943,9,19,0,0,0),
-d(1944,3,18,23,0,0),
- ]
-
- _transition_info = [
-i(5400,0,'SAST'),
-i(7200,0,'SAST'),
-i(10800,3600,'SAST'),
-i(7200,0,'SAST'),
-i(10800,3600,'SAST'),
-i(7200,0,'SAST'),
- ]
-
-Johannesburg = Johannesburg()
-
diff --git a/modules/pytz/zoneinfo/Africa/Kampala.py b/modules/pytz/zoneinfo/Africa/Kampala.py
deleted file mode 100644
index c60e898d..00000000
--- a/modules/pytz/zoneinfo/Africa/Kampala.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Africa/Kampala.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kampala(DstTzInfo):
- '''Africa/Kampala timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Kampala'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1928,6,30,21,50,20),
-d(1929,12,31,21,0,0),
-d(1947,12,31,21,30,0),
-d(1956,12,31,21,15,15),
- ]
-
- _transition_info = [
-i(7800,0,'LMT'),
-i(10800,0,'EAT'),
-i(9000,0,'BEAT'),
-i(9900,0,'BEAUT'),
-i(10800,0,'EAT'),
- ]
-
-Kampala = Kampala()
-
diff --git a/modules/pytz/zoneinfo/Africa/Khartoum.py b/modules/pytz/zoneinfo/Africa/Khartoum.py
deleted file mode 100644
index 94beac52..00000000
--- a/modules/pytz/zoneinfo/Africa/Khartoum.py
+++ /dev/null
@@ -1,88 +0,0 @@
-'''tzinfo timezone information for Africa/Khartoum.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Khartoum(DstTzInfo):
- '''Africa/Khartoum timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Khartoum'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1930,12,31,21,49,52),
-d(1970,4,30,22,0,0),
-d(1970,10,14,21,0,0),
-d(1971,4,29,22,0,0),
-d(1971,10,14,21,0,0),
-d(1972,4,29,22,0,0),
-d(1972,10,14,21,0,0),
-d(1973,4,28,22,0,0),
-d(1973,10,14,21,0,0),
-d(1974,4,27,22,0,0),
-d(1974,10,14,21,0,0),
-d(1975,4,26,22,0,0),
-d(1975,10,14,21,0,0),
-d(1976,4,24,22,0,0),
-d(1976,10,14,21,0,0),
-d(1977,4,23,22,0,0),
-d(1977,10,14,21,0,0),
-d(1978,4,29,22,0,0),
-d(1978,10,14,21,0,0),
-d(1979,4,28,22,0,0),
-d(1979,10,14,21,0,0),
-d(1980,4,26,22,0,0),
-d(1980,10,14,21,0,0),
-d(1981,4,25,22,0,0),
-d(1981,10,14,21,0,0),
-d(1982,4,24,22,0,0),
-d(1982,10,14,21,0,0),
-d(1983,4,23,22,0,0),
-d(1983,10,14,21,0,0),
-d(1984,4,28,22,0,0),
-d(1984,10,14,21,0,0),
-d(1985,4,27,22,0,0),
-d(1985,10,14,21,0,0),
-d(2000,1,15,10,0,0),
- ]
-
- _transition_info = [
-i(7800,0,'LMT'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,3600,'CAST'),
-i(7200,0,'CAT'),
-i(10800,0,'EAT'),
- ]
-
-Khartoum = Khartoum()
-
diff --git a/modules/pytz/zoneinfo/Africa/Kigali.py b/modules/pytz/zoneinfo/Africa/Kigali.py
deleted file mode 100644
index eaf21aa8..00000000
--- a/modules/pytz/zoneinfo/Africa/Kigali.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Kigali.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kigali(DstTzInfo):
- '''Africa/Kigali timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Kigali'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1935,5,31,21,59,44),
- ]
-
- _transition_info = [
-i(7200,0,'LMT'),
-i(7200,0,'CAT'),
- ]
-
-Kigali = Kigali()
-
diff --git a/modules/pytz/zoneinfo/Africa/Kinshasa.py b/modules/pytz/zoneinfo/Africa/Kinshasa.py
deleted file mode 100644
index abba1690..00000000
--- a/modules/pytz/zoneinfo/Africa/Kinshasa.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Africa/Kinshasa.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Kinshasa(StaticTzInfo):
- '''Africa/Kinshasa timezone definition. See datetime.tzinfo for details'''
- zone = 'Africa/Kinshasa'
- _utcoffset = timedelta(seconds=3600)
- _tzname = 'WAT'
-
-Kinshasa = Kinshasa()
-
diff --git a/modules/pytz/zoneinfo/Africa/Lagos.py b/modules/pytz/zoneinfo/Africa/Lagos.py
deleted file mode 100644
index 23a616fa..00000000
--- a/modules/pytz/zoneinfo/Africa/Lagos.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Lagos.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Lagos(DstTzInfo):
- '''Africa/Lagos timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Lagos'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,8,31,23,46,24),
- ]
-
- _transition_info = [
-i(840,0,'LMT'),
-i(3600,0,'WAT'),
- ]
-
-Lagos = Lagos()
-
diff --git a/modules/pytz/zoneinfo/Africa/Libreville.py b/modules/pytz/zoneinfo/Africa/Libreville.py
deleted file mode 100644
index 26c4bdf9..00000000
--- a/modules/pytz/zoneinfo/Africa/Libreville.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Libreville.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Libreville(DstTzInfo):
- '''Africa/Libreville timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Libreville'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,23,22,12),
- ]
-
- _transition_info = [
-i(2280,0,'LMT'),
-i(3600,0,'WAT'),
- ]
-
-Libreville = Libreville()
-
diff --git a/modules/pytz/zoneinfo/Africa/Lome.py b/modules/pytz/zoneinfo/Africa/Lome.py
deleted file mode 100644
index f161dddf..00000000
--- a/modules/pytz/zoneinfo/Africa/Lome.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Africa/Lome.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Lome(StaticTzInfo):
- '''Africa/Lome timezone definition. See datetime.tzinfo for details'''
- zone = 'Africa/Lome'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-Lome = Lome()
-
diff --git a/modules/pytz/zoneinfo/Africa/Luanda.py b/modules/pytz/zoneinfo/Africa/Luanda.py
deleted file mode 100644
index 80528f6f..00000000
--- a/modules/pytz/zoneinfo/Africa/Luanda.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Luanda.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Luanda(DstTzInfo):
- '''Africa/Luanda timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Luanda'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,25,23,7,56),
- ]
-
- _transition_info = [
-i(3120,0,'AOT'),
-i(3600,0,'WAT'),
- ]
-
-Luanda = Luanda()
-
diff --git a/modules/pytz/zoneinfo/Africa/Lubumbashi.py b/modules/pytz/zoneinfo/Africa/Lubumbashi.py
deleted file mode 100644
index a9d6411f..00000000
--- a/modules/pytz/zoneinfo/Africa/Lubumbashi.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Africa/Lubumbashi.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Lubumbashi(StaticTzInfo):
- '''Africa/Lubumbashi timezone definition. See datetime.tzinfo for details'''
- zone = 'Africa/Lubumbashi'
- _utcoffset = timedelta(seconds=7200)
- _tzname = 'CAT'
-
-Lubumbashi = Lubumbashi()
-
diff --git a/modules/pytz/zoneinfo/Africa/Lusaka.py b/modules/pytz/zoneinfo/Africa/Lusaka.py
deleted file mode 100644
index cb92fb80..00000000
--- a/modules/pytz/zoneinfo/Africa/Lusaka.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Lusaka.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Lusaka(DstTzInfo):
- '''Africa/Lusaka timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Lusaka'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,22,6,52),
- ]
-
- _transition_info = [
-i(6780,0,'LMT'),
-i(7200,0,'CAT'),
- ]
-
-Lusaka = Lusaka()
-
diff --git a/modules/pytz/zoneinfo/Africa/Malabo.py b/modules/pytz/zoneinfo/Africa/Malabo.py
deleted file mode 100644
index c5ec85e6..00000000
--- a/modules/pytz/zoneinfo/Africa/Malabo.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Malabo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Malabo(DstTzInfo):
- '''Africa/Malabo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Malabo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,23,24,52),
-d(1963,12,15,0,0,0),
- ]
-
- _transition_info = [
-i(2100,0,'LMT'),
-i(0,0,'GMT'),
-i(3600,0,'WAT'),
- ]
-
-Malabo = Malabo()
-
diff --git a/modules/pytz/zoneinfo/Africa/Maputo.py b/modules/pytz/zoneinfo/Africa/Maputo.py
deleted file mode 100644
index 69b83ebf..00000000
--- a/modules/pytz/zoneinfo/Africa/Maputo.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Maputo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Maputo(DstTzInfo):
- '''Africa/Maputo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Maputo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,21,49,40),
- ]
-
- _transition_info = [
-i(7800,0,'LMT'),
-i(7200,0,'CAT'),
- ]
-
-Maputo = Maputo()
-
diff --git a/modules/pytz/zoneinfo/Africa/Maseru.py b/modules/pytz/zoneinfo/Africa/Maseru.py
deleted file mode 100644
index d49b14f6..00000000
--- a/modules/pytz/zoneinfo/Africa/Maseru.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Maseru.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Maseru(DstTzInfo):
- '''Africa/Maseru timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Maseru'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,22,10,0),
-d(1943,9,19,0,0,0),
-d(1944,3,18,23,0,0),
- ]
-
- _transition_info = [
-i(6600,0,'LMT'),
-i(7200,0,'SAST'),
-i(10800,3600,'SAST'),
-i(7200,0,'SAST'),
- ]
-
-Maseru = Maseru()
-
diff --git a/modules/pytz/zoneinfo/Africa/Mbabane.py b/modules/pytz/zoneinfo/Africa/Mbabane.py
deleted file mode 100644
index caf48cc7..00000000
--- a/modules/pytz/zoneinfo/Africa/Mbabane.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Mbabane.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mbabane(DstTzInfo):
- '''Africa/Mbabane timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Mbabane'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,21,55,36),
- ]
-
- _transition_info = [
-i(7440,0,'LMT'),
-i(7200,0,'SAST'),
- ]
-
-Mbabane = Mbabane()
-
diff --git a/modules/pytz/zoneinfo/Africa/Mogadishu.py b/modules/pytz/zoneinfo/Africa/Mogadishu.py
deleted file mode 100644
index fd871e15..00000000
--- a/modules/pytz/zoneinfo/Africa/Mogadishu.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Mogadishu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mogadishu(DstTzInfo):
- '''Africa/Mogadishu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Mogadishu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1930,12,31,21,0,0),
-d(1956,12,31,21,30,0),
- ]
-
- _transition_info = [
-i(10800,0,'EAT'),
-i(9000,0,'BEAT'),
-i(10800,0,'EAT'),
- ]
-
-Mogadishu = Mogadishu()
-
diff --git a/modules/pytz/zoneinfo/Africa/Monrovia.py b/modules/pytz/zoneinfo/Africa/Monrovia.py
deleted file mode 100644
index 15a42685..00000000
--- a/modules/pytz/zoneinfo/Africa/Monrovia.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Monrovia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Monrovia(DstTzInfo):
- '''Africa/Monrovia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Monrovia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,3,1,0,43,8),
-d(1972,5,1,0,44,30),
- ]
-
- _transition_info = [
-i(-2580,0,'MMT'),
-i(-2640,0,'LRT'),
-i(0,0,'GMT'),
- ]
-
-Monrovia = Monrovia()
-
diff --git a/modules/pytz/zoneinfo/Africa/Nairobi.py b/modules/pytz/zoneinfo/Africa/Nairobi.py
deleted file mode 100644
index fbee2de7..00000000
--- a/modules/pytz/zoneinfo/Africa/Nairobi.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Africa/Nairobi.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nairobi(DstTzInfo):
- '''Africa/Nairobi timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Nairobi'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1928,6,30,21,32,44),
-d(1929,12,31,21,0,0),
-d(1939,12,31,21,30,0),
-d(1959,12,31,21,15,15),
- ]
-
- _transition_info = [
-i(8820,0,'LMT'),
-i(10800,0,'EAT'),
-i(9000,0,'BEAT'),
-i(9900,0,'BEAUT'),
-i(10800,0,'EAT'),
- ]
-
-Nairobi = Nairobi()
-
diff --git a/modules/pytz/zoneinfo/Africa/Ndjamena.py b/modules/pytz/zoneinfo/Africa/Ndjamena.py
deleted file mode 100644
index 52a0ea83..00000000
--- a/modules/pytz/zoneinfo/Africa/Ndjamena.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Ndjamena.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ndjamena(DstTzInfo):
- '''Africa/Ndjamena timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Ndjamena'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,22,59,48),
-d(1979,10,13,23,0,0),
-d(1980,3,7,22,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'LMT'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
- ]
-
-Ndjamena = Ndjamena()
-
diff --git a/modules/pytz/zoneinfo/Africa/Niamey.py b/modules/pytz/zoneinfo/Africa/Niamey.py
deleted file mode 100644
index f4ffd54d..00000000
--- a/modules/pytz/zoneinfo/Africa/Niamey.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Niamey.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Niamey(DstTzInfo):
- '''Africa/Niamey timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Niamey'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,23,51,32),
-d(1934,2,26,1,0,0),
-d(1960,1,1,0,0,0),
- ]
-
- _transition_info = [
-i(480,0,'LMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
-i(3600,0,'WAT'),
- ]
-
-Niamey = Niamey()
-
diff --git a/modules/pytz/zoneinfo/Africa/Nouakchott.py b/modules/pytz/zoneinfo/Africa/Nouakchott.py
deleted file mode 100644
index 1c35ec79..00000000
--- a/modules/pytz/zoneinfo/Africa/Nouakchott.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Nouakchott.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nouakchott(DstTzInfo):
- '''Africa/Nouakchott timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Nouakchott'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,1,3,48),
-d(1934,2,26,0,0,0),
-d(1960,11,28,1,0,0),
- ]
-
- _transition_info = [
-i(-3840,0,'LMT'),
-i(0,0,'GMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Nouakchott = Nouakchott()
-
diff --git a/modules/pytz/zoneinfo/Africa/Ouagadougou.py b/modules/pytz/zoneinfo/Africa/Ouagadougou.py
deleted file mode 100644
index 1019d179..00000000
--- a/modules/pytz/zoneinfo/Africa/Ouagadougou.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Ouagadougou.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ouagadougou(DstTzInfo):
- '''Africa/Ouagadougou timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Ouagadougou'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,6,4),
- ]
-
- _transition_info = [
-i(-360,0,'LMT'),
-i(0,0,'GMT'),
- ]
-
-Ouagadougou = Ouagadougou()
-
diff --git a/modules/pytz/zoneinfo/Africa/Porto_minus_Novo.py b/modules/pytz/zoneinfo/Africa/Porto_minus_Novo.py
deleted file mode 100644
index 867c468f..00000000
--- a/modules/pytz/zoneinfo/Africa/Porto_minus_Novo.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Africa/Porto_minus_Novo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Porto_minus_Novo(DstTzInfo):
- '''Africa/Porto_minus_Novo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Porto_minus_Novo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,23,49,32),
-d(1934,2,26,0,0,0),
- ]
-
- _transition_info = [
-i(600,0,'LMT'),
-i(0,0,'GMT'),
-i(3600,0,'WAT'),
- ]
-
-Porto_minus_Novo = Porto_minus_Novo()
-
diff --git a/modules/pytz/zoneinfo/Africa/Sao_Tome.py b/modules/pytz/zoneinfo/Africa/Sao_Tome.py
deleted file mode 100644
index 427b6d00..00000000
--- a/modules/pytz/zoneinfo/Africa/Sao_Tome.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Africa/Sao_Tome.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Sao_Tome(DstTzInfo):
- '''Africa/Sao_Tome timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Sao_Tome'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,36,32),
- ]
-
- _transition_info = [
-i(-2220,0,'LMT'),
-i(0,0,'GMT'),
- ]
-
-Sao_Tome = Sao_Tome()
-
diff --git a/modules/pytz/zoneinfo/Africa/Timbuktu.py b/modules/pytz/zoneinfo/Africa/Timbuktu.py
deleted file mode 100644
index adc88f9a..00000000
--- a/modules/pytz/zoneinfo/Africa/Timbuktu.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Africa/Timbuktu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Timbuktu(DstTzInfo):
- '''Africa/Timbuktu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Timbuktu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,32,0),
-d(1934,2,26,0,0,0),
-d(1960,6,20,1,0,0),
- ]
-
- _transition_info = [
-i(-1920,0,'LMT'),
-i(0,0,'GMT'),
-i(-3600,0,'WAT'),
-i(0,0,'GMT'),
- ]
-
-Timbuktu = Timbuktu()
-
diff --git a/modules/pytz/zoneinfo/Africa/Tripoli.py b/modules/pytz/zoneinfo/Africa/Tripoli.py
deleted file mode 100644
index d4752dc9..00000000
--- a/modules/pytz/zoneinfo/Africa/Tripoli.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for Africa/Tripoli.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tripoli(DstTzInfo):
- '''Africa/Tripoli timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Tripoli'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,23,7,16),
-d(1951,10,14,1,0,0),
-d(1951,12,31,22,0,0),
-d(1953,10,9,1,0,0),
-d(1953,12,31,22,0,0),
-d(1955,9,29,23,0,0),
-d(1955,12,31,22,0,0),
-d(1958,12,31,23,0,0),
-d(1981,12,31,22,0,0),
-d(1982,3,31,23,0,0),
-d(1982,9,30,22,0,0),
-d(1983,3,31,23,0,0),
-d(1983,9,30,22,0,0),
-d(1984,3,31,23,0,0),
-d(1984,9,30,22,0,0),
-d(1985,4,5,23,0,0),
-d(1985,9,30,22,0,0),
-d(1986,4,3,23,0,0),
-d(1986,10,2,22,0,0),
-d(1987,3,31,23,0,0),
-d(1987,9,30,22,0,0),
-d(1988,3,31,23,0,0),
-d(1988,9,30,22,0,0),
-d(1989,3,31,23,0,0),
-d(1989,9,30,22,0,0),
-d(1990,5,3,23,0,0),
-d(1996,9,29,22,0,0),
-d(1997,4,3,23,0,0),
-d(1997,10,3,22,0,0),
- ]
-
- _transition_info = [
-i(3180,0,'LMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,0,'EET'),
- ]
-
-Tripoli = Tripoli()
-
diff --git a/modules/pytz/zoneinfo/Africa/Tunis.py b/modules/pytz/zoneinfo/Africa/Tunis.py
deleted file mode 100644
index eead83da..00000000
--- a/modules/pytz/zoneinfo/Africa/Tunis.py
+++ /dev/null
@@ -1,74 +0,0 @@
-'''tzinfo timezone information for Africa/Tunis.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tunis(DstTzInfo):
- '''Africa/Tunis timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Tunis'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,3,10,23,50,39),
-d(1939,4,15,22,0,0),
-d(1939,11,18,22,0,0),
-d(1940,2,25,22,0,0),
-d(1941,10,5,22,0,0),
-d(1942,3,8,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,4,17,0,0,0),
-d(1943,4,25,1,0,0),
-d(1943,10,4,0,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,7,22,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,15,22,0,0),
-d(1977,4,29,23,0,0),
-d(1977,9,23,23,0,0),
-d(1978,4,30,23,0,0),
-d(1978,9,30,23,0,0),
-d(1988,5,31,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1990,4,30,23,0,0),
-d(1990,9,29,23,0,0),
-d(2005,4,30,23,0,0),
-d(2005,9,30,0,0,0),
- ]
-
- _transition_info = [
-i(540,0,'PMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Tunis = Tunis()
-
diff --git a/modules/pytz/zoneinfo/Africa/Windhoek.py b/modules/pytz/zoneinfo/Africa/Windhoek.py
deleted file mode 100644
index 58bca755..00000000
--- a/modules/pytz/zoneinfo/Africa/Windhoek.py
+++ /dev/null
@@ -1,204 +0,0 @@
-'''tzinfo timezone information for Africa/Windhoek.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Windhoek(DstTzInfo):
- '''Africa/Windhoek timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Africa/Windhoek'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1903,2,28,22,30,0),
-d(1942,9,20,0,0,0),
-d(1943,3,20,23,0,0),
-d(1990,3,20,22,0,0),
-d(1994,4,2,22,0,0),
-d(1994,9,4,1,0,0),
-d(1995,4,2,0,0,0),
-d(1995,9,3,1,0,0),
-d(1996,4,7,0,0,0),
-d(1996,9,1,1,0,0),
-d(1997,4,6,0,0,0),
-d(1997,9,7,1,0,0),
-d(1998,4,5,0,0,0),
-d(1998,9,6,1,0,0),
-d(1999,4,4,0,0,0),
-d(1999,9,5,1,0,0),
-d(2000,4,2,0,0,0),
-d(2000,9,3,1,0,0),
-d(2001,4,1,0,0,0),
-d(2001,9,2,1,0,0),
-d(2002,4,7,0,0,0),
-d(2002,9,1,1,0,0),
-d(2003,4,6,0,0,0),
-d(2003,9,7,1,0,0),
-d(2004,4,4,0,0,0),
-d(2004,9,5,1,0,0),
-d(2005,4,3,0,0,0),
-d(2005,9,4,1,0,0),
-d(2006,4,2,0,0,0),
-d(2006,9,3,1,0,0),
-d(2007,4,1,0,0,0),
-d(2007,9,2,1,0,0),
-d(2008,4,6,0,0,0),
-d(2008,9,7,1,0,0),
-d(2009,4,5,0,0,0),
-d(2009,9,6,1,0,0),
-d(2010,4,4,0,0,0),
-d(2010,9,5,1,0,0),
-d(2011,4,3,0,0,0),
-d(2011,9,4,1,0,0),
-d(2012,4,1,0,0,0),
-d(2012,9,2,1,0,0),
-d(2013,4,7,0,0,0),
-d(2013,9,1,1,0,0),
-d(2014,4,6,0,0,0),
-d(2014,9,7,1,0,0),
-d(2015,4,5,0,0,0),
-d(2015,9,6,1,0,0),
-d(2016,4,3,0,0,0),
-d(2016,9,4,1,0,0),
-d(2017,4,2,0,0,0),
-d(2017,9,3,1,0,0),
-d(2018,4,1,0,0,0),
-d(2018,9,2,1,0,0),
-d(2019,4,7,0,0,0),
-d(2019,9,1,1,0,0),
-d(2020,4,5,0,0,0),
-d(2020,9,6,1,0,0),
-d(2021,4,4,0,0,0),
-d(2021,9,5,1,0,0),
-d(2022,4,3,0,0,0),
-d(2022,9,4,1,0,0),
-d(2023,4,2,0,0,0),
-d(2023,9,3,1,0,0),
-d(2024,4,7,0,0,0),
-d(2024,9,1,1,0,0),
-d(2025,4,6,0,0,0),
-d(2025,9,7,1,0,0),
-d(2026,4,5,0,0,0),
-d(2026,9,6,1,0,0),
-d(2027,4,4,0,0,0),
-d(2027,9,5,1,0,0),
-d(2028,4,2,0,0,0),
-d(2028,9,3,1,0,0),
-d(2029,4,1,0,0,0),
-d(2029,9,2,1,0,0),
-d(2030,4,7,0,0,0),
-d(2030,9,1,1,0,0),
-d(2031,4,6,0,0,0),
-d(2031,9,7,1,0,0),
-d(2032,4,4,0,0,0),
-d(2032,9,5,1,0,0),
-d(2033,4,3,0,0,0),
-d(2033,9,4,1,0,0),
-d(2034,4,2,0,0,0),
-d(2034,9,3,1,0,0),
-d(2035,4,1,0,0,0),
-d(2035,9,2,1,0,0),
-d(2036,4,6,0,0,0),
-d(2036,9,7,1,0,0),
-d(2037,4,5,0,0,0),
-d(2037,9,6,1,0,0),
- ]
-
- _transition_info = [
-i(5400,0,'SWAT'),
-i(7200,0,'SAST'),
-i(10800,3600,'SAST'),
-i(7200,0,'SAST'),
-i(7200,0,'CAT'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
-i(3600,0,'WAT'),
-i(7200,3600,'WAST'),
- ]
-
-Windhoek = Windhoek()
-
diff --git a/modules/pytz/zoneinfo/America/Adak.py b/modules/pytz/zoneinfo/America/Adak.py
deleted file mode 100644
index 9748947b..00000000
--- a/modules/pytz/zoneinfo/America/Adak.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for America/Adak.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Adak(DstTzInfo):
- '''America/Adak timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Adak'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,13,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,12,0,0),
-d(1967,4,1,11,0,0),
-d(1969,4,27,13,0,0),
-d(1969,10,26,12,0,0),
-d(1970,4,26,13,0,0),
-d(1970,10,25,12,0,0),
-d(1971,4,25,13,0,0),
-d(1971,10,31,12,0,0),
-d(1972,4,30,13,0,0),
-d(1972,10,29,12,0,0),
-d(1973,4,29,13,0,0),
-d(1973,10,28,12,0,0),
-d(1974,1,6,13,0,0),
-d(1974,10,27,12,0,0),
-d(1975,2,23,13,0,0),
-d(1975,10,26,12,0,0),
-d(1976,4,25,13,0,0),
-d(1976,10,31,12,0,0),
-d(1977,4,24,13,0,0),
-d(1977,10,30,12,0,0),
-d(1978,4,30,13,0,0),
-d(1978,10,29,12,0,0),
-d(1979,4,29,13,0,0),
-d(1979,10,28,12,0,0),
-d(1980,4,27,13,0,0),
-d(1980,10,26,12,0,0),
-d(1981,4,26,13,0,0),
-d(1981,10,25,12,0,0),
-d(1982,4,25,13,0,0),
-d(1982,10,31,12,0,0),
-d(1983,4,24,13,0,0),
-d(1983,10,30,12,0,0),
-d(1983,11,30,10,0,0),
-d(1984,4,29,12,0,0),
-d(1984,10,28,11,0,0),
-d(1985,4,28,12,0,0),
-d(1985,10,27,11,0,0),
-d(1986,4,27,12,0,0),
-d(1986,10,26,11,0,0),
-d(1987,4,5,12,0,0),
-d(1987,10,25,11,0,0),
-d(1988,4,3,12,0,0),
-d(1988,10,30,11,0,0),
-d(1989,4,2,12,0,0),
-d(1989,10,29,11,0,0),
-d(1990,4,1,12,0,0),
-d(1990,10,28,11,0,0),
-d(1991,4,7,12,0,0),
-d(1991,10,27,11,0,0),
-d(1992,4,5,12,0,0),
-d(1992,10,25,11,0,0),
-d(1993,4,4,12,0,0),
-d(1993,10,31,11,0,0),
-d(1994,4,3,12,0,0),
-d(1994,10,30,11,0,0),
-d(1995,4,2,12,0,0),
-d(1995,10,29,11,0,0),
-d(1996,4,7,12,0,0),
-d(1996,10,27,11,0,0),
-d(1997,4,6,12,0,0),
-d(1997,10,26,11,0,0),
-d(1998,4,5,12,0,0),
-d(1998,10,25,11,0,0),
-d(1999,4,4,12,0,0),
-d(1999,10,31,11,0,0),
-d(2000,4,2,12,0,0),
-d(2000,10,29,11,0,0),
-d(2001,4,1,12,0,0),
-d(2001,10,28,11,0,0),
-d(2002,4,7,12,0,0),
-d(2002,10,27,11,0,0),
-d(2003,4,6,12,0,0),
-d(2003,10,26,11,0,0),
-d(2004,4,4,12,0,0),
-d(2004,10,31,11,0,0),
-d(2005,4,3,12,0,0),
-d(2005,10,30,11,0,0),
-d(2006,4,2,12,0,0),
-d(2006,10,29,11,0,0),
-d(2007,3,11,12,0,0),
-d(2007,11,4,11,0,0),
-d(2008,3,9,12,0,0),
-d(2008,11,2,11,0,0),
-d(2009,3,8,12,0,0),
-d(2009,11,1,11,0,0),
-d(2010,3,14,12,0,0),
-d(2010,11,7,11,0,0),
-d(2011,3,13,12,0,0),
-d(2011,11,6,11,0,0),
-d(2012,3,11,12,0,0),
-d(2012,11,4,11,0,0),
-d(2013,3,10,12,0,0),
-d(2013,11,3,11,0,0),
-d(2014,3,9,12,0,0),
-d(2014,11,2,11,0,0),
-d(2015,3,8,12,0,0),
-d(2015,11,1,11,0,0),
-d(2016,3,13,12,0,0),
-d(2016,11,6,11,0,0),
-d(2017,3,12,12,0,0),
-d(2017,11,5,11,0,0),
-d(2018,3,11,12,0,0),
-d(2018,11,4,11,0,0),
-d(2019,3,10,12,0,0),
-d(2019,11,3,11,0,0),
-d(2020,3,8,12,0,0),
-d(2020,11,1,11,0,0),
-d(2021,3,14,12,0,0),
-d(2021,11,7,11,0,0),
-d(2022,3,13,12,0,0),
-d(2022,11,6,11,0,0),
-d(2023,3,12,12,0,0),
-d(2023,11,5,11,0,0),
-d(2024,3,10,12,0,0),
-d(2024,11,3,11,0,0),
-d(2025,3,9,12,0,0),
-d(2025,11,2,11,0,0),
-d(2026,3,8,12,0,0),
-d(2026,11,1,11,0,0),
-d(2027,3,14,12,0,0),
-d(2027,11,7,11,0,0),
-d(2028,3,12,12,0,0),
-d(2028,11,5,11,0,0),
-d(2029,3,11,12,0,0),
-d(2029,11,4,11,0,0),
-d(2030,3,10,12,0,0),
-d(2030,11,3,11,0,0),
-d(2031,3,9,12,0,0),
-d(2031,11,2,11,0,0),
-d(2032,3,14,12,0,0),
-d(2032,11,7,11,0,0),
-d(2033,3,13,12,0,0),
-d(2033,11,6,11,0,0),
-d(2034,3,12,12,0,0),
-d(2034,11,5,11,0,0),
-d(2035,3,11,12,0,0),
-d(2035,11,4,11,0,0),
-d(2036,3,9,12,0,0),
-d(2036,11,2,11,0,0),
-d(2037,3,8,12,0,0),
-d(2037,11,1,11,0,0),
- ]
-
- _transition_info = [
-i(-39600,0,'NST'),
-i(-36000,3600,'NWT'),
-i(-36000,3600,'NPT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-36000,0,'AHST'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
- ]
-
-Adak = Adak()
-
diff --git a/modules/pytz/zoneinfo/America/Anchorage.py b/modules/pytz/zoneinfo/America/Anchorage.py
deleted file mode 100644
index f36cd076..00000000
--- a/modules/pytz/zoneinfo/America/Anchorage.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for America/Anchorage.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Anchorage(DstTzInfo):
- '''America/Anchorage timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Anchorage'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,12,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,11,0,0),
-d(1967,4,1,10,0,0),
-d(1969,4,27,12,0,0),
-d(1969,10,26,11,0,0),
-d(1970,4,26,12,0,0),
-d(1970,10,25,11,0,0),
-d(1971,4,25,12,0,0),
-d(1971,10,31,11,0,0),
-d(1972,4,30,12,0,0),
-d(1972,10,29,11,0,0),
-d(1973,4,29,12,0,0),
-d(1973,10,28,11,0,0),
-d(1974,1,6,12,0,0),
-d(1974,10,27,11,0,0),
-d(1975,2,23,12,0,0),
-d(1975,10,26,11,0,0),
-d(1976,4,25,12,0,0),
-d(1976,10,31,11,0,0),
-d(1977,4,24,12,0,0),
-d(1977,10,30,11,0,0),
-d(1978,4,30,12,0,0),
-d(1978,10,29,11,0,0),
-d(1979,4,29,12,0,0),
-d(1979,10,28,11,0,0),
-d(1980,4,27,12,0,0),
-d(1980,10,26,11,0,0),
-d(1981,4,26,12,0,0),
-d(1981,10,25,11,0,0),
-d(1982,4,25,12,0,0),
-d(1982,10,31,11,0,0),
-d(1983,4,24,12,0,0),
-d(1983,10,30,11,0,0),
-d(1983,11,30,9,0,0),
-d(1984,4,29,11,0,0),
-d(1984,10,28,10,0,0),
-d(1985,4,28,11,0,0),
-d(1985,10,27,10,0,0),
-d(1986,4,27,11,0,0),
-d(1986,10,26,10,0,0),
-d(1987,4,5,11,0,0),
-d(1987,10,25,10,0,0),
-d(1988,4,3,11,0,0),
-d(1988,10,30,10,0,0),
-d(1989,4,2,11,0,0),
-d(1989,10,29,10,0,0),
-d(1990,4,1,11,0,0),
-d(1990,10,28,10,0,0),
-d(1991,4,7,11,0,0),
-d(1991,10,27,10,0,0),
-d(1992,4,5,11,0,0),
-d(1992,10,25,10,0,0),
-d(1993,4,4,11,0,0),
-d(1993,10,31,10,0,0),
-d(1994,4,3,11,0,0),
-d(1994,10,30,10,0,0),
-d(1995,4,2,11,0,0),
-d(1995,10,29,10,0,0),
-d(1996,4,7,11,0,0),
-d(1996,10,27,10,0,0),
-d(1997,4,6,11,0,0),
-d(1997,10,26,10,0,0),
-d(1998,4,5,11,0,0),
-d(1998,10,25,10,0,0),
-d(1999,4,4,11,0,0),
-d(1999,10,31,10,0,0),
-d(2000,4,2,11,0,0),
-d(2000,10,29,10,0,0),
-d(2001,4,1,11,0,0),
-d(2001,10,28,10,0,0),
-d(2002,4,7,11,0,0),
-d(2002,10,27,10,0,0),
-d(2003,4,6,11,0,0),
-d(2003,10,26,10,0,0),
-d(2004,4,4,11,0,0),
-d(2004,10,31,10,0,0),
-d(2005,4,3,11,0,0),
-d(2005,10,30,10,0,0),
-d(2006,4,2,11,0,0),
-d(2006,10,29,10,0,0),
-d(2007,3,11,11,0,0),
-d(2007,11,4,10,0,0),
-d(2008,3,9,11,0,0),
-d(2008,11,2,10,0,0),
-d(2009,3,8,11,0,0),
-d(2009,11,1,10,0,0),
-d(2010,3,14,11,0,0),
-d(2010,11,7,10,0,0),
-d(2011,3,13,11,0,0),
-d(2011,11,6,10,0,0),
-d(2012,3,11,11,0,0),
-d(2012,11,4,10,0,0),
-d(2013,3,10,11,0,0),
-d(2013,11,3,10,0,0),
-d(2014,3,9,11,0,0),
-d(2014,11,2,10,0,0),
-d(2015,3,8,11,0,0),
-d(2015,11,1,10,0,0),
-d(2016,3,13,11,0,0),
-d(2016,11,6,10,0,0),
-d(2017,3,12,11,0,0),
-d(2017,11,5,10,0,0),
-d(2018,3,11,11,0,0),
-d(2018,11,4,10,0,0),
-d(2019,3,10,11,0,0),
-d(2019,11,3,10,0,0),
-d(2020,3,8,11,0,0),
-d(2020,11,1,10,0,0),
-d(2021,3,14,11,0,0),
-d(2021,11,7,10,0,0),
-d(2022,3,13,11,0,0),
-d(2022,11,6,10,0,0),
-d(2023,3,12,11,0,0),
-d(2023,11,5,10,0,0),
-d(2024,3,10,11,0,0),
-d(2024,11,3,10,0,0),
-d(2025,3,9,11,0,0),
-d(2025,11,2,10,0,0),
-d(2026,3,8,11,0,0),
-d(2026,11,1,10,0,0),
-d(2027,3,14,11,0,0),
-d(2027,11,7,10,0,0),
-d(2028,3,12,11,0,0),
-d(2028,11,5,10,0,0),
-d(2029,3,11,11,0,0),
-d(2029,11,4,10,0,0),
-d(2030,3,10,11,0,0),
-d(2030,11,3,10,0,0),
-d(2031,3,9,11,0,0),
-d(2031,11,2,10,0,0),
-d(2032,3,14,11,0,0),
-d(2032,11,7,10,0,0),
-d(2033,3,13,11,0,0),
-d(2033,11,6,10,0,0),
-d(2034,3,12,11,0,0),
-d(2034,11,5,10,0,0),
-d(2035,3,11,11,0,0),
-d(2035,11,4,10,0,0),
-d(2036,3,9,11,0,0),
-d(2036,11,2,10,0,0),
-d(2037,3,8,11,0,0),
-d(2037,11,1,10,0,0),
- ]
-
- _transition_info = [
-i(-36000,0,'CAT'),
-i(-32400,3600,'CAWT'),
-i(-32400,3600,'CAWT'),
-i(-36000,0,'CAT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-32400,0,'YST'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
- ]
-
-Anchorage = Anchorage()
-
diff --git a/modules/pytz/zoneinfo/America/Anguilla.py b/modules/pytz/zoneinfo/America/Anguilla.py
deleted file mode 100644
index e72c84f8..00000000
--- a/modules/pytz/zoneinfo/America/Anguilla.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Anguilla.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Anguilla(DstTzInfo):
- '''America/Anguilla timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Anguilla'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,3,2,4,12,16),
- ]
-
- _transition_info = [
-i(-15120,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Anguilla = Anguilla()
-
diff --git a/modules/pytz/zoneinfo/America/Antigua.py b/modules/pytz/zoneinfo/America/Antigua.py
deleted file mode 100644
index 7515f841..00000000
--- a/modules/pytz/zoneinfo/America/Antigua.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/Antigua.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Antigua(DstTzInfo):
- '''America/Antigua timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Antigua'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,3,2,4,7,12),
-d(1951,1,1,5,0,0),
- ]
-
- _transition_info = [
-i(-14820,0,'LMT'),
-i(-18000,0,'EST'),
-i(-14400,0,'AST'),
- ]
-
-Antigua = Antigua()
-
diff --git a/modules/pytz/zoneinfo/America/Araguaina.py b/modules/pytz/zoneinfo/America/Araguaina.py
deleted file mode 100644
index 60e69fa2..00000000
--- a/modules/pytz/zoneinfo/America/Araguaina.py
+++ /dev/null
@@ -1,118 +0,0 @@
-'''tzinfo timezone information for America/Araguaina.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Araguaina(DstTzInfo):
- '''America/Araguaina timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Araguaina'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,3,12,48),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,12,9,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1995,10,15,3,0,0),
-d(1996,2,11,2,0,0),
-d(1996,10,6,3,0,0),
-d(1997,2,16,2,0,0),
-d(1997,10,6,3,0,0),
-d(1998,3,1,2,0,0),
-d(1998,10,11,3,0,0),
-d(1999,2,21,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2001,2,18,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
-d(2002,11,3,3,0,0),
-d(2003,2,16,2,0,0),
- ]
-
- _transition_info = [
-i(-11580,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
- ]
-
-Araguaina = Araguaina()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Buenos_Aires.py b/modules/pytz/zoneinfo/America/Argentina/Buenos_Aires.py
deleted file mode 100644
index 0862e0f6..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Buenos_Aires.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Buenos_Aires.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Buenos_Aires(DstTzInfo):
- '''America/Argentina/Buenos_Aires timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Buenos_Aires'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Buenos_Aires = Buenos_Aires()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Catamarca.py b/modules/pytz/zoneinfo/America/Argentina/Catamarca.py
deleted file mode 100644
index f12423a3..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Catamarca.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Catamarca.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Catamarca(DstTzInfo):
- '''America/Argentina/Catamarca timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Catamarca'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,6,1,3,0,0),
-d(2004,6,20,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Catamarca = Catamarca()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/ComodRivadavia.py b/modules/pytz/zoneinfo/America/Argentina/ComodRivadavia.py
deleted file mode 100644
index 12a1e871..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/ComodRivadavia.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Argentina/ComodRivadavia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class ComodRivadavia(DstTzInfo):
- '''America/Argentina/ComodRivadavia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/ComodRivadavia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,6,1,3,0,0),
-d(2004,6,20,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-ComodRivadavia = ComodRivadavia()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Cordoba.py b/modules/pytz/zoneinfo/America/Argentina/Cordoba.py
deleted file mode 100644
index c880297a..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Cordoba.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Cordoba.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cordoba(DstTzInfo):
- '''America/Argentina/Cordoba timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Cordoba'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Cordoba = Cordoba()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Jujuy.py b/modules/pytz/zoneinfo/America/Argentina/Jujuy.py
deleted file mode 100644
index b6fe1dd3..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Jujuy.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Jujuy.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jujuy(DstTzInfo):
- '''America/Argentina/Jujuy timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Jujuy'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,28,4,0,0),
-d(1991,3,17,3,0,0),
-d(1991,10,6,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-10800,3600,'WARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Jujuy = Jujuy()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/La_Rioja.py b/modules/pytz/zoneinfo/America/Argentina/La_Rioja.py
deleted file mode 100644
index 548dd2f2..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/La_Rioja.py
+++ /dev/null
@@ -1,138 +0,0 @@
-'''tzinfo timezone information for America/Argentina/La_Rioja.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class La_Rioja(DstTzInfo):
- '''America/Argentina/La_Rioja timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/La_Rioja'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,1,2,0,0),
-d(1991,5,7,4,0,0),
-d(1991,10,20,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,6,1,3,0,0),
-d(2004,6,20,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-La_Rioja = La_Rioja()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Mendoza.py b/modules/pytz/zoneinfo/America/Argentina/Mendoza.py
deleted file mode 100644
index e699aa9d..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Mendoza.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Mendoza.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mendoza(DstTzInfo):
- '''America/Argentina/Mendoza timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Mendoza'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,15,4,0,0),
-d(1991,3,1,3,0,0),
-d(1991,10,15,4,0,0),
-d(1992,3,1,3,0,0),
-d(1992,10,18,4,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,5,23,3,0,0),
-d(2004,9,26,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-10800,3600,'WARST'),
-i(-14400,0,'WART'),
-i(-10800,3600,'WARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Mendoza = Mendoza()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Rio_Gallegos.py b/modules/pytz/zoneinfo/America/Argentina/Rio_Gallegos.py
deleted file mode 100644
index 2c234469..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Rio_Gallegos.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Rio_Gallegos.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rio_Gallegos(DstTzInfo):
- '''America/Argentina/Rio_Gallegos timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Rio_Gallegos'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,6,1,3,0,0),
-d(2004,6,20,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Rio_Gallegos = Rio_Gallegos()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/San_Juan.py b/modules/pytz/zoneinfo/America/Argentina/San_Juan.py
deleted file mode 100644
index cce3e874..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/San_Juan.py
+++ /dev/null
@@ -1,138 +0,0 @@
-'''tzinfo timezone information for America/Argentina/San_Juan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class San_Juan(DstTzInfo):
- '''America/Argentina/San_Juan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/San_Juan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,1,2,0,0),
-d(1991,5,7,4,0,0),
-d(1991,10,20,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,5,31,3,0,0),
-d(2004,7,25,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-San_Juan = San_Juan()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Tucuman.py b/modules/pytz/zoneinfo/America/Argentina/Tucuman.py
deleted file mode 100644
index 093eeaa7..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Tucuman.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Tucuman.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tucuman(DstTzInfo):
- '''America/Argentina/Tucuman timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Tucuman'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,6,1,3,0,0),
-d(2004,6,13,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Tucuman = Tucuman()
-
diff --git a/modules/pytz/zoneinfo/America/Argentina/Ushuaia.py b/modules/pytz/zoneinfo/America/Argentina/Ushuaia.py
deleted file mode 100644
index 37e681c8..00000000
--- a/modules/pytz/zoneinfo/America/Argentina/Ushuaia.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Argentina/Ushuaia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ushuaia(DstTzInfo):
- '''America/Argentina/Ushuaia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Argentina/Ushuaia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,5,30,3,0,0),
-d(2004,6,20,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Ushuaia = Ushuaia()
-
diff --git a/modules/pytz/zoneinfo/America/Aruba.py b/modules/pytz/zoneinfo/America/Aruba.py
deleted file mode 100644
index 6f7afb01..00000000
--- a/modules/pytz/zoneinfo/America/Aruba.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/Aruba.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Aruba(DstTzInfo):
- '''America/Aruba timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Aruba'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,12,4,40,24),
-d(1965,1,1,4,30,0),
- ]
-
- _transition_info = [
-i(-16800,0,'LMT'),
-i(-16200,0,'ANT'),
-i(-14400,0,'AST'),
- ]
-
-Aruba = Aruba()
-
diff --git a/modules/pytz/zoneinfo/America/Asuncion.py b/modules/pytz/zoneinfo/America/Asuncion.py
deleted file mode 100644
index 472182dd..00000000
--- a/modules/pytz/zoneinfo/America/Asuncion.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for America/Asuncion.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Asuncion(DstTzInfo):
- '''America/Asuncion timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Asuncion'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1931,10,10,3,50,40),
-d(1972,10,1,4,0,0),
-d(1974,4,1,3,0,0),
-d(1975,10,1,4,0,0),
-d(1976,3,1,3,0,0),
-d(1976,10,1,4,0,0),
-d(1977,3,1,3,0,0),
-d(1977,10,1,4,0,0),
-d(1978,3,1,3,0,0),
-d(1978,10,1,4,0,0),
-d(1979,4,1,3,0,0),
-d(1979,10,1,4,0,0),
-d(1980,4,1,3,0,0),
-d(1980,10,1,4,0,0),
-d(1981,4,1,3,0,0),
-d(1981,10,1,4,0,0),
-d(1982,4,1,3,0,0),
-d(1982,10,1,4,0,0),
-d(1983,4,1,3,0,0),
-d(1983,10,1,4,0,0),
-d(1984,4,1,3,0,0),
-d(1984,10,1,4,0,0),
-d(1985,4,1,3,0,0),
-d(1985,10,1,4,0,0),
-d(1986,4,1,3,0,0),
-d(1986,10,1,4,0,0),
-d(1987,4,1,3,0,0),
-d(1987,10,1,4,0,0),
-d(1988,4,1,3,0,0),
-d(1988,10,1,4,0,0),
-d(1989,4,1,3,0,0),
-d(1989,10,22,4,0,0),
-d(1990,4,1,3,0,0),
-d(1990,10,1,4,0,0),
-d(1991,4,1,3,0,0),
-d(1991,10,6,4,0,0),
-d(1992,3,1,3,0,0),
-d(1992,10,5,4,0,0),
-d(1993,3,31,3,0,0),
-d(1993,10,1,4,0,0),
-d(1994,2,27,3,0,0),
-d(1994,10,1,4,0,0),
-d(1995,2,26,3,0,0),
-d(1995,10,1,4,0,0),
-d(1996,3,1,3,0,0),
-d(1996,10,6,4,0,0),
-d(1997,2,23,3,0,0),
-d(1997,10,5,4,0,0),
-d(1998,3,1,3,0,0),
-d(1998,10,4,4,0,0),
-d(1999,3,7,3,0,0),
-d(1999,10,3,4,0,0),
-d(2000,3,5,3,0,0),
-d(2000,10,1,4,0,0),
-d(2001,3,4,3,0,0),
-d(2001,10,7,4,0,0),
-d(2002,4,7,3,0,0),
-d(2002,9,1,4,0,0),
-d(2003,4,6,3,0,0),
-d(2003,9,7,4,0,0),
-d(2004,4,4,3,0,0),
-d(2004,10,17,4,0,0),
-d(2005,3,13,3,0,0),
-d(2005,10,16,4,0,0),
-d(2006,3,12,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,3,11,3,0,0),
-d(2007,10,21,4,0,0),
-d(2008,3,9,3,0,0),
-d(2008,10,19,4,0,0),
-d(2009,3,8,3,0,0),
-d(2009,10,18,4,0,0),
-d(2010,3,14,3,0,0),
-d(2010,10,17,4,0,0),
-d(2011,3,13,3,0,0),
-d(2011,10,16,4,0,0),
-d(2012,3,11,3,0,0),
-d(2012,10,21,4,0,0),
-d(2013,3,10,3,0,0),
-d(2013,10,20,4,0,0),
-d(2014,3,9,3,0,0),
-d(2014,10,19,4,0,0),
-d(2015,3,8,3,0,0),
-d(2015,10,18,4,0,0),
-d(2016,3,13,3,0,0),
-d(2016,10,16,4,0,0),
-d(2017,3,12,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,3,11,3,0,0),
-d(2018,10,21,4,0,0),
-d(2019,3,10,3,0,0),
-d(2019,10,20,4,0,0),
-d(2020,3,8,3,0,0),
-d(2020,10,18,4,0,0),
-d(2021,3,14,3,0,0),
-d(2021,10,17,4,0,0),
-d(2022,3,13,3,0,0),
-d(2022,10,16,4,0,0),
-d(2023,3,12,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,3,10,3,0,0),
-d(2024,10,20,4,0,0),
-d(2025,3,9,3,0,0),
-d(2025,10,19,4,0,0),
-d(2026,3,8,3,0,0),
-d(2026,10,18,4,0,0),
-d(2027,3,14,3,0,0),
-d(2027,10,17,4,0,0),
-d(2028,3,12,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,3,11,3,0,0),
-d(2029,10,21,4,0,0),
-d(2030,3,10,3,0,0),
-d(2030,10,20,4,0,0),
-d(2031,3,9,3,0,0),
-d(2031,10,19,4,0,0),
-d(2032,3,14,3,0,0),
-d(2032,10,17,4,0,0),
-d(2033,3,13,3,0,0),
-d(2033,10,16,4,0,0),
-d(2034,3,12,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,3,11,3,0,0),
-d(2035,10,21,4,0,0),
-d(2036,3,9,3,0,0),
-d(2036,10,19,4,0,0),
-d(2037,3,8,3,0,0),
-d(2037,10,18,4,0,0),
- ]
-
- _transition_info = [
-i(-13860,0,'AMT'),
-i(-14400,0,'PYT'),
-i(-10800,0,'PYT'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
-i(-14400,0,'PYT'),
-i(-10800,3600,'PYST'),
- ]
-
-Asuncion = Asuncion()
-
diff --git a/modules/pytz/zoneinfo/America/Atka.py b/modules/pytz/zoneinfo/America/Atka.py
deleted file mode 100644
index ab5d0dcb..00000000
--- a/modules/pytz/zoneinfo/America/Atka.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for America/Atka.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Atka(DstTzInfo):
- '''America/Atka timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Atka'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,13,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,12,0,0),
-d(1967,4,1,11,0,0),
-d(1969,4,27,13,0,0),
-d(1969,10,26,12,0,0),
-d(1970,4,26,13,0,0),
-d(1970,10,25,12,0,0),
-d(1971,4,25,13,0,0),
-d(1971,10,31,12,0,0),
-d(1972,4,30,13,0,0),
-d(1972,10,29,12,0,0),
-d(1973,4,29,13,0,0),
-d(1973,10,28,12,0,0),
-d(1974,1,6,13,0,0),
-d(1974,10,27,12,0,0),
-d(1975,2,23,13,0,0),
-d(1975,10,26,12,0,0),
-d(1976,4,25,13,0,0),
-d(1976,10,31,12,0,0),
-d(1977,4,24,13,0,0),
-d(1977,10,30,12,0,0),
-d(1978,4,30,13,0,0),
-d(1978,10,29,12,0,0),
-d(1979,4,29,13,0,0),
-d(1979,10,28,12,0,0),
-d(1980,4,27,13,0,0),
-d(1980,10,26,12,0,0),
-d(1981,4,26,13,0,0),
-d(1981,10,25,12,0,0),
-d(1982,4,25,13,0,0),
-d(1982,10,31,12,0,0),
-d(1983,4,24,13,0,0),
-d(1983,10,30,12,0,0),
-d(1983,11,30,10,0,0),
-d(1984,4,29,12,0,0),
-d(1984,10,28,11,0,0),
-d(1985,4,28,12,0,0),
-d(1985,10,27,11,0,0),
-d(1986,4,27,12,0,0),
-d(1986,10,26,11,0,0),
-d(1987,4,5,12,0,0),
-d(1987,10,25,11,0,0),
-d(1988,4,3,12,0,0),
-d(1988,10,30,11,0,0),
-d(1989,4,2,12,0,0),
-d(1989,10,29,11,0,0),
-d(1990,4,1,12,0,0),
-d(1990,10,28,11,0,0),
-d(1991,4,7,12,0,0),
-d(1991,10,27,11,0,0),
-d(1992,4,5,12,0,0),
-d(1992,10,25,11,0,0),
-d(1993,4,4,12,0,0),
-d(1993,10,31,11,0,0),
-d(1994,4,3,12,0,0),
-d(1994,10,30,11,0,0),
-d(1995,4,2,12,0,0),
-d(1995,10,29,11,0,0),
-d(1996,4,7,12,0,0),
-d(1996,10,27,11,0,0),
-d(1997,4,6,12,0,0),
-d(1997,10,26,11,0,0),
-d(1998,4,5,12,0,0),
-d(1998,10,25,11,0,0),
-d(1999,4,4,12,0,0),
-d(1999,10,31,11,0,0),
-d(2000,4,2,12,0,0),
-d(2000,10,29,11,0,0),
-d(2001,4,1,12,0,0),
-d(2001,10,28,11,0,0),
-d(2002,4,7,12,0,0),
-d(2002,10,27,11,0,0),
-d(2003,4,6,12,0,0),
-d(2003,10,26,11,0,0),
-d(2004,4,4,12,0,0),
-d(2004,10,31,11,0,0),
-d(2005,4,3,12,0,0),
-d(2005,10,30,11,0,0),
-d(2006,4,2,12,0,0),
-d(2006,10,29,11,0,0),
-d(2007,3,11,12,0,0),
-d(2007,11,4,11,0,0),
-d(2008,3,9,12,0,0),
-d(2008,11,2,11,0,0),
-d(2009,3,8,12,0,0),
-d(2009,11,1,11,0,0),
-d(2010,3,14,12,0,0),
-d(2010,11,7,11,0,0),
-d(2011,3,13,12,0,0),
-d(2011,11,6,11,0,0),
-d(2012,3,11,12,0,0),
-d(2012,11,4,11,0,0),
-d(2013,3,10,12,0,0),
-d(2013,11,3,11,0,0),
-d(2014,3,9,12,0,0),
-d(2014,11,2,11,0,0),
-d(2015,3,8,12,0,0),
-d(2015,11,1,11,0,0),
-d(2016,3,13,12,0,0),
-d(2016,11,6,11,0,0),
-d(2017,3,12,12,0,0),
-d(2017,11,5,11,0,0),
-d(2018,3,11,12,0,0),
-d(2018,11,4,11,0,0),
-d(2019,3,10,12,0,0),
-d(2019,11,3,11,0,0),
-d(2020,3,8,12,0,0),
-d(2020,11,1,11,0,0),
-d(2021,3,14,12,0,0),
-d(2021,11,7,11,0,0),
-d(2022,3,13,12,0,0),
-d(2022,11,6,11,0,0),
-d(2023,3,12,12,0,0),
-d(2023,11,5,11,0,0),
-d(2024,3,10,12,0,0),
-d(2024,11,3,11,0,0),
-d(2025,3,9,12,0,0),
-d(2025,11,2,11,0,0),
-d(2026,3,8,12,0,0),
-d(2026,11,1,11,0,0),
-d(2027,3,14,12,0,0),
-d(2027,11,7,11,0,0),
-d(2028,3,12,12,0,0),
-d(2028,11,5,11,0,0),
-d(2029,3,11,12,0,0),
-d(2029,11,4,11,0,0),
-d(2030,3,10,12,0,0),
-d(2030,11,3,11,0,0),
-d(2031,3,9,12,0,0),
-d(2031,11,2,11,0,0),
-d(2032,3,14,12,0,0),
-d(2032,11,7,11,0,0),
-d(2033,3,13,12,0,0),
-d(2033,11,6,11,0,0),
-d(2034,3,12,12,0,0),
-d(2034,11,5,11,0,0),
-d(2035,3,11,12,0,0),
-d(2035,11,4,11,0,0),
-d(2036,3,9,12,0,0),
-d(2036,11,2,11,0,0),
-d(2037,3,8,12,0,0),
-d(2037,11,1,11,0,0),
- ]
-
- _transition_info = [
-i(-39600,0,'NST'),
-i(-36000,3600,'NWT'),
-i(-36000,3600,'NPT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-36000,0,'AHST'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
- ]
-
-Atka = Atka()
-
diff --git a/modules/pytz/zoneinfo/America/Bahia.py b/modules/pytz/zoneinfo/America/Bahia.py
deleted file mode 100644
index 5d4d5c5d..00000000
--- a/modules/pytz/zoneinfo/America/Bahia.py
+++ /dev/null
@@ -1,138 +0,0 @@
-'''tzinfo timezone information for America/Bahia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bahia(DstTzInfo):
- '''America/Bahia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Bahia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,2,34,4),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,12,9,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,2,17,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,2,9,2,0,0),
-d(1992,10,25,3,0,0),
-d(1993,1,31,2,0,0),
-d(1993,10,17,3,0,0),
-d(1994,2,20,2,0,0),
-d(1994,10,16,3,0,0),
-d(1995,2,19,2,0,0),
-d(1995,10,15,3,0,0),
-d(1996,2,11,2,0,0),
-d(1996,10,6,3,0,0),
-d(1997,2,16,2,0,0),
-d(1997,10,6,3,0,0),
-d(1998,3,1,2,0,0),
-d(1998,10,11,3,0,0),
-d(1999,2,21,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2001,2,18,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
-d(2002,11,3,3,0,0),
-d(2003,2,16,2,0,0),
- ]
-
- _transition_info = [
-i(-9240,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
- ]
-
-Bahia = Bahia()
-
diff --git a/modules/pytz/zoneinfo/America/Barbados.py b/modules/pytz/zoneinfo/America/Barbados.py
deleted file mode 100644
index 97ba8c65..00000000
--- a/modules/pytz/zoneinfo/America/Barbados.py
+++ /dev/null
@@ -1,40 +0,0 @@
-'''tzinfo timezone information for America/Barbados.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Barbados(DstTzInfo):
- '''America/Barbados timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Barbados'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,1,1,3,58,28),
-d(1932,1,1,3,58,28),
-d(1977,6,12,6,0,0),
-d(1977,10,2,5,0,0),
-d(1978,4,16,6,0,0),
-d(1978,10,1,5,0,0),
-d(1979,4,15,6,0,0),
-d(1979,9,30,5,0,0),
-d(1980,4,20,6,0,0),
-d(1980,9,25,5,0,0),
- ]
-
- _transition_info = [
-i(-14280,0,'LMT'),
-i(-14280,0,'BMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Barbados = Barbados()
-
diff --git a/modules/pytz/zoneinfo/America/Belem.py b/modules/pytz/zoneinfo/America/Belem.py
deleted file mode 100644
index f35f1999..00000000
--- a/modules/pytz/zoneinfo/America/Belem.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for America/Belem.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Belem(DstTzInfo):
- '''America/Belem timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Belem'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,3,13,56),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,12,9,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
- ]
-
- _transition_info = [
-i(-11640,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
- ]
-
-Belem = Belem()
-
diff --git a/modules/pytz/zoneinfo/America/Belize.py b/modules/pytz/zoneinfo/America/Belize.py
deleted file mode 100644
index 8f599331..00000000
--- a/modules/pytz/zoneinfo/America/Belize.py
+++ /dev/null
@@ -1,130 +0,0 @@
-'''tzinfo timezone information for America/Belize.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Belize(DstTzInfo):
- '''America/Belize timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Belize'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,4,1,5,52,48),
-d(1918,10,6,6,0,0),
-d(1919,2,9,5,30,0),
-d(1919,10,5,6,0,0),
-d(1920,2,15,5,30,0),
-d(1920,10,3,6,0,0),
-d(1921,2,13,5,30,0),
-d(1921,10,2,6,0,0),
-d(1922,2,12,5,30,0),
-d(1922,10,8,6,0,0),
-d(1923,2,11,5,30,0),
-d(1923,10,7,6,0,0),
-d(1924,2,10,5,30,0),
-d(1924,10,5,6,0,0),
-d(1925,2,15,5,30,0),
-d(1925,10,4,6,0,0),
-d(1926,2,14,5,30,0),
-d(1926,10,3,6,0,0),
-d(1927,2,13,5,30,0),
-d(1927,10,2,6,0,0),
-d(1928,2,12,5,30,0),
-d(1928,10,7,6,0,0),
-d(1929,2,10,5,30,0),
-d(1929,10,6,6,0,0),
-d(1930,2,9,5,30,0),
-d(1930,10,5,6,0,0),
-d(1931,2,15,5,30,0),
-d(1931,10,4,6,0,0),
-d(1932,2,14,5,30,0),
-d(1932,10,2,6,0,0),
-d(1933,2,12,5,30,0),
-d(1933,10,8,6,0,0),
-d(1934,2,11,5,30,0),
-d(1934,10,7,6,0,0),
-d(1935,2,10,5,30,0),
-d(1935,10,6,6,0,0),
-d(1936,2,9,5,30,0),
-d(1936,10,4,6,0,0),
-d(1937,2,14,5,30,0),
-d(1937,10,3,6,0,0),
-d(1938,2,13,5,30,0),
-d(1938,10,2,6,0,0),
-d(1939,2,12,5,30,0),
-d(1939,10,8,6,0,0),
-d(1940,2,11,5,30,0),
-d(1940,10,6,6,0,0),
-d(1941,2,9,5,30,0),
-d(1941,10,5,6,0,0),
-d(1942,2,15,5,30,0),
-d(1942,10,4,6,0,0),
-d(1943,2,14,5,30,0),
-d(1973,12,5,6,0,0),
-d(1974,2,9,5,0,0),
-d(1982,12,18,6,0,0),
-d(1983,2,12,5,0,0),
- ]
-
- _transition_info = [
-i(-21180,0,'LMT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-19800,1800,'CHDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Belize = Belize()
-
diff --git a/modules/pytz/zoneinfo/America/Boa_Vista.py b/modules/pytz/zoneinfo/America/Boa_Vista.py
deleted file mode 100644
index f533ae97..00000000
--- a/modules/pytz/zoneinfo/America/Boa_Vista.py
+++ /dev/null
@@ -1,86 +0,0 @@
-'''tzinfo timezone information for America/Boa_Vista.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Boa_Vista(DstTzInfo):
- '''America/Boa_Vista timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Boa_Vista'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,2,40),
-d(1931,10,3,15,0,0),
-d(1932,4,1,3,0,0),
-d(1932,10,3,4,0,0),
-d(1933,4,1,3,0,0),
-d(1949,12,1,4,0,0),
-d(1950,4,16,4,0,0),
-d(1950,12,1,4,0,0),
-d(1951,4,1,3,0,0),
-d(1951,12,1,4,0,0),
-d(1952,4,1,3,0,0),
-d(1952,12,1,4,0,0),
-d(1953,3,1,3,0,0),
-d(1963,12,9,4,0,0),
-d(1964,3,1,3,0,0),
-d(1965,1,31,4,0,0),
-d(1965,3,31,3,0,0),
-d(1965,12,1,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,11,1,4,0,0),
-d(1967,3,1,3,0,0),
-d(1967,11,1,4,0,0),
-d(1968,3,1,3,0,0),
-d(1985,11,2,4,0,0),
-d(1986,3,15,3,0,0),
-d(1986,10,25,4,0,0),
-d(1987,2,14,3,0,0),
-d(1987,10,25,4,0,0),
-d(1988,2,7,3,0,0),
-d(1999,10,3,4,0,0),
-d(2000,2,27,3,0,0),
-d(2000,10,8,4,0,0),
-d(2000,10,15,3,0,0),
- ]
-
- _transition_info = [
-i(-14580,0,'LMT'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
- ]
-
-Boa_Vista = Boa_Vista()
-
diff --git a/modules/pytz/zoneinfo/America/Bogota.py b/modules/pytz/zoneinfo/America/Bogota.py
deleted file mode 100644
index 61fa1aa0..00000000
--- a/modules/pytz/zoneinfo/America/Bogota.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for America/Bogota.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bogota(DstTzInfo):
- '''America/Bogota timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Bogota'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,11,23,4,56,20),
-d(1992,5,2,5,0,0),
-d(1992,12,31,4,0,0),
- ]
-
- _transition_info = [
-i(-17760,0,'BMT'),
-i(-18000,0,'COT'),
-i(-14400,3600,'COST'),
-i(-18000,0,'COT'),
- ]
-
-Bogota = Bogota()
-
diff --git a/modules/pytz/zoneinfo/America/Boise.py b/modules/pytz/zoneinfo/America/Boise.py
deleted file mode 100644
index ed619370..00000000
--- a/modules/pytz/zoneinfo/America/Boise.py
+++ /dev/null
@@ -1,320 +0,0 @@
-'''tzinfo timezone information for America/Boise.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Boise(DstTzInfo):
- '''America/Boise timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Boise'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,10,0,0),
-d(1918,10,27,9,0,0),
-d(1919,3,30,10,0,0),
-d(1919,10,26,9,0,0),
-d(1923,5,13,10,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,2,3,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Boise = Boise()
-
diff --git a/modules/pytz/zoneinfo/America/Buenos_Aires.py b/modules/pytz/zoneinfo/America/Buenos_Aires.py
deleted file mode 100644
index 2a457607..00000000
--- a/modules/pytz/zoneinfo/America/Buenos_Aires.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Buenos_Aires.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Buenos_Aires(DstTzInfo):
- '''America/Buenos_Aires timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Buenos_Aires'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Buenos_Aires = Buenos_Aires()
-
diff --git a/modules/pytz/zoneinfo/America/Cambridge_Bay.py b/modules/pytz/zoneinfo/America/Cambridge_Bay.py
deleted file mode 100644
index ce1d6db0..00000000
--- a/modules/pytz/zoneinfo/America/Cambridge_Bay.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for America/Cambridge_Bay.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cambridge_Bay(DstTzInfo):
- '''America/Cambridge_Bay timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Cambridge_Bay'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,5,25,9,0,0),
-d(1919,11,1,6,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,7,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2000,11,5,5,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-18000,7200,'MDDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-21600,0,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Cambridge_Bay = Cambridge_Bay()
-
diff --git a/modules/pytz/zoneinfo/America/Campo_Grande.py b/modules/pytz/zoneinfo/America/Campo_Grande.py
deleted file mode 100644
index 500b220f..00000000
--- a/modules/pytz/zoneinfo/America/Campo_Grande.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for America/Campo_Grande.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Campo_Grande(DstTzInfo):
- '''America/Campo_Grande timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Campo_Grande'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,3,38,28),
-d(1931,10,3,15,0,0),
-d(1932,4,1,3,0,0),
-d(1932,10,3,4,0,0),
-d(1933,4,1,3,0,0),
-d(1949,12,1,4,0,0),
-d(1950,4,16,4,0,0),
-d(1950,12,1,4,0,0),
-d(1951,4,1,3,0,0),
-d(1951,12,1,4,0,0),
-d(1952,4,1,3,0,0),
-d(1952,12,1,4,0,0),
-d(1953,3,1,3,0,0),
-d(1963,12,9,4,0,0),
-d(1964,3,1,3,0,0),
-d(1965,1,31,4,0,0),
-d(1965,3,31,3,0,0),
-d(1965,12,1,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,11,1,4,0,0),
-d(1967,3,1,3,0,0),
-d(1967,11,1,4,0,0),
-d(1968,3,1,3,0,0),
-d(1985,11,2,4,0,0),
-d(1986,3,15,3,0,0),
-d(1986,10,25,4,0,0),
-d(1987,2,14,3,0,0),
-d(1987,10,25,4,0,0),
-d(1988,2,7,3,0,0),
-d(1988,10,16,4,0,0),
-d(1989,1,29,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,2,11,3,0,0),
-d(1990,10,21,4,0,0),
-d(1991,2,17,3,0,0),
-d(1991,10,20,4,0,0),
-d(1992,2,9,3,0,0),
-d(1992,10,25,4,0,0),
-d(1993,1,31,3,0,0),
-d(1993,10,17,4,0,0),
-d(1994,2,20,3,0,0),
-d(1994,10,16,4,0,0),
-d(1995,2,19,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,2,11,3,0,0),
-d(1996,10,6,4,0,0),
-d(1997,2,16,3,0,0),
-d(1997,10,6,4,0,0),
-d(1998,3,1,3,0,0),
-d(1998,10,11,4,0,0),
-d(1999,2,21,3,0,0),
-d(1999,10,3,4,0,0),
-d(2000,2,27,3,0,0),
-d(2000,10,8,4,0,0),
-d(2001,2,18,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,2,17,3,0,0),
-d(2002,11,3,4,0,0),
-d(2003,2,16,3,0,0),
-d(2003,10,19,4,0,0),
-d(2004,2,15,3,0,0),
-d(2004,11,2,4,0,0),
-d(2005,2,20,3,0,0),
-d(2005,10,16,4,0,0),
-d(2006,2,19,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,2,18,3,0,0),
-d(2007,10,21,4,0,0),
-d(2008,2,17,3,0,0),
-d(2008,10,19,4,0,0),
-d(2009,2,15,3,0,0),
-d(2009,10,18,4,0,0),
-d(2010,2,21,3,0,0),
-d(2010,10,17,4,0,0),
-d(2011,2,20,3,0,0),
-d(2011,10,16,4,0,0),
-d(2012,2,19,3,0,0),
-d(2012,10,21,4,0,0),
-d(2013,2,17,3,0,0),
-d(2013,10,20,4,0,0),
-d(2014,2,16,3,0,0),
-d(2014,10,19,4,0,0),
-d(2015,2,15,3,0,0),
-d(2015,10,18,4,0,0),
-d(2016,2,21,3,0,0),
-d(2016,10,16,4,0,0),
-d(2017,2,19,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,2,18,3,0,0),
-d(2018,10,21,4,0,0),
-d(2019,2,17,3,0,0),
-d(2019,10,20,4,0,0),
-d(2020,2,16,3,0,0),
-d(2020,10,18,4,0,0),
-d(2021,2,21,3,0,0),
-d(2021,10,17,4,0,0),
-d(2022,2,20,3,0,0),
-d(2022,10,16,4,0,0),
-d(2023,2,19,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,2,18,3,0,0),
-d(2024,10,20,4,0,0),
-d(2025,2,16,3,0,0),
-d(2025,10,19,4,0,0),
-d(2026,2,15,3,0,0),
-d(2026,10,18,4,0,0),
-d(2027,2,21,3,0,0),
-d(2027,10,17,4,0,0),
-d(2028,2,20,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,2,18,3,0,0),
-d(2029,10,21,4,0,0),
-d(2030,2,17,3,0,0),
-d(2030,10,20,4,0,0),
-d(2031,2,16,3,0,0),
-d(2031,10,19,4,0,0),
-d(2032,2,15,3,0,0),
-d(2032,10,17,4,0,0),
-d(2033,2,20,3,0,0),
-d(2033,10,16,4,0,0),
-d(2034,2,19,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,2,18,3,0,0),
-d(2035,10,21,4,0,0),
-d(2036,2,17,3,0,0),
-d(2036,10,19,4,0,0),
-d(2037,2,15,3,0,0),
-d(2037,10,18,4,0,0),
- ]
-
- _transition_info = [
-i(-13080,0,'LMT'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
- ]
-
-Campo_Grande = Campo_Grande()
-
diff --git a/modules/pytz/zoneinfo/America/Cancun.py b/modules/pytz/zoneinfo/America/Cancun.py
deleted file mode 100644
index 75c04155..00000000
--- a/modules/pytz/zoneinfo/America/Cancun.py
+++ /dev/null
@@ -1,194 +0,0 @@
-'''tzinfo timezone information for America/Cancun.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cancun(DstTzInfo):
- '''America/Cancun timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Cancun'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,6,0,0),
-d(1981,12,23,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,8,2,6,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,5,6,8,0,0),
-d(2001,9,30,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,4,1,8,0,0),
-d(2007,10,28,7,0,0),
-d(2008,4,6,8,0,0),
-d(2008,10,26,7,0,0),
-d(2009,4,5,8,0,0),
-d(2009,10,25,7,0,0),
-d(2010,4,4,8,0,0),
-d(2010,10,31,7,0,0),
-d(2011,4,3,8,0,0),
-d(2011,10,30,7,0,0),
-d(2012,4,1,8,0,0),
-d(2012,10,28,7,0,0),
-d(2013,4,7,8,0,0),
-d(2013,10,27,7,0,0),
-d(2014,4,6,8,0,0),
-d(2014,10,26,7,0,0),
-d(2015,4,5,8,0,0),
-d(2015,10,25,7,0,0),
-d(2016,4,3,8,0,0),
-d(2016,10,30,7,0,0),
-d(2017,4,2,8,0,0),
-d(2017,10,29,7,0,0),
-d(2018,4,1,8,0,0),
-d(2018,10,28,7,0,0),
-d(2019,4,7,8,0,0),
-d(2019,10,27,7,0,0),
-d(2020,4,5,8,0,0),
-d(2020,10,25,7,0,0),
-d(2021,4,4,8,0,0),
-d(2021,10,31,7,0,0),
-d(2022,4,3,8,0,0),
-d(2022,10,30,7,0,0),
-d(2023,4,2,8,0,0),
-d(2023,10,29,7,0,0),
-d(2024,4,7,8,0,0),
-d(2024,10,27,7,0,0),
-d(2025,4,6,8,0,0),
-d(2025,10,26,7,0,0),
-d(2026,4,5,8,0,0),
-d(2026,10,25,7,0,0),
-d(2027,4,4,8,0,0),
-d(2027,10,31,7,0,0),
-d(2028,4,2,8,0,0),
-d(2028,10,29,7,0,0),
-d(2029,4,1,8,0,0),
-d(2029,10,28,7,0,0),
-d(2030,4,7,8,0,0),
-d(2030,10,27,7,0,0),
-d(2031,4,6,8,0,0),
-d(2031,10,26,7,0,0),
-d(2032,4,4,8,0,0),
-d(2032,10,31,7,0,0),
-d(2033,4,3,8,0,0),
-d(2033,10,30,7,0,0),
-d(2034,4,2,8,0,0),
-d(2034,10,29,7,0,0),
-d(2035,4,1,8,0,0),
-d(2035,10,28,7,0,0),
-d(2036,4,6,8,0,0),
-d(2036,10,26,7,0,0),
-d(2037,4,5,8,0,0),
-d(2037,10,25,7,0,0),
- ]
-
- _transition_info = [
-i(-20820,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Cancun = Cancun()
-
diff --git a/modules/pytz/zoneinfo/America/Caracas.py b/modules/pytz/zoneinfo/America/Caracas.py
deleted file mode 100644
index 7d6276c3..00000000
--- a/modules/pytz/zoneinfo/America/Caracas.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/Caracas.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Caracas(DstTzInfo):
- '''America/Caracas timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Caracas'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,12,4,27,40),
-d(1965,1,1,4,30,0),
- ]
-
- _transition_info = [
-i(-16080,0,'CMT'),
-i(-16200,0,'VET'),
-i(-14400,0,'VET'),
- ]
-
-Caracas = Caracas()
-
diff --git a/modules/pytz/zoneinfo/America/Catamarca.py b/modules/pytz/zoneinfo/America/Catamarca.py
deleted file mode 100644
index 857a1870..00000000
--- a/modules/pytz/zoneinfo/America/Catamarca.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Catamarca.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Catamarca(DstTzInfo):
- '''America/Catamarca timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Catamarca'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,6,1,3,0,0),
-d(2004,6,20,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Catamarca = Catamarca()
-
diff --git a/modules/pytz/zoneinfo/America/Cayenne.py b/modules/pytz/zoneinfo/America/Cayenne.py
deleted file mode 100644
index d20a6edd..00000000
--- a/modules/pytz/zoneinfo/America/Cayenne.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/Cayenne.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cayenne(DstTzInfo):
- '''America/Cayenne timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Cayenne'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,3,29,20),
-d(1967,10,1,4,0,0),
- ]
-
- _transition_info = [
-i(-12540,0,'LMT'),
-i(-14400,0,'GFT'),
-i(-10800,0,'GFT'),
- ]
-
-Cayenne = Cayenne()
-
diff --git a/modules/pytz/zoneinfo/America/Cayman.py b/modules/pytz/zoneinfo/America/Cayman.py
deleted file mode 100644
index 96c1ffea..00000000
--- a/modules/pytz/zoneinfo/America/Cayman.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Cayman.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cayman(DstTzInfo):
- '''America/Cayman timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Cayman'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,1,5,7,12),
- ]
-
- _transition_info = [
-i(-18420,0,'KMT'),
-i(-18000,0,'EST'),
- ]
-
-Cayman = Cayman()
-
diff --git a/modules/pytz/zoneinfo/America/Chicago.py b/modules/pytz/zoneinfo/America/Chicago.py
deleted file mode 100644
index d1043045..00000000
--- a/modules/pytz/zoneinfo/America/Chicago.py
+++ /dev/null
@@ -1,490 +0,0 @@
-'''tzinfo timezone information for America/Chicago.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chicago(DstTzInfo):
- '''America/Chicago timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Chicago'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1920,6,13,8,0,0),
-d(1920,10,31,7,0,0),
-d(1921,3,27,8,0,0),
-d(1921,10,30,7,0,0),
-d(1922,4,30,8,0,0),
-d(1922,9,24,7,0,0),
-d(1923,4,29,8,0,0),
-d(1923,9,30,7,0,0),
-d(1924,4,27,8,0,0),
-d(1924,9,28,7,0,0),
-d(1925,4,26,8,0,0),
-d(1925,9,27,7,0,0),
-d(1926,4,25,8,0,0),
-d(1926,9,26,7,0,0),
-d(1927,4,24,8,0,0),
-d(1927,9,25,7,0,0),
-d(1928,4,29,8,0,0),
-d(1928,9,30,7,0,0),
-d(1929,4,28,8,0,0),
-d(1929,9,29,7,0,0),
-d(1930,4,27,8,0,0),
-d(1930,9,28,7,0,0),
-d(1931,4,26,8,0,0),
-d(1931,9,27,7,0,0),
-d(1932,4,24,8,0,0),
-d(1932,9,25,7,0,0),
-d(1933,4,30,8,0,0),
-d(1933,9,24,7,0,0),
-d(1934,4,29,8,0,0),
-d(1934,9,30,7,0,0),
-d(1935,4,28,8,0,0),
-d(1935,9,29,7,0,0),
-d(1936,3,1,8,0,0),
-d(1936,11,15,7,0,0),
-d(1937,4,25,8,0,0),
-d(1937,9,26,7,0,0),
-d(1938,4,24,8,0,0),
-d(1938,9,25,7,0,0),
-d(1939,4,30,8,0,0),
-d(1939,9,24,7,0,0),
-d(1940,4,28,8,0,0),
-d(1940,9,29,7,0,0),
-d(1941,4,27,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,10,30,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,10,27,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,10,26,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,10,29,7,0,0),
-d(1962,4,29,8,0,0),
-d(1962,10,28,7,0,0),
-d(1963,4,28,8,0,0),
-d(1963,10,27,7,0,0),
-d(1964,4,26,8,0,0),
-d(1964,10,25,7,0,0),
-d(1965,4,25,8,0,0),
-d(1965,10,31,7,0,0),
-d(1966,4,24,8,0,0),
-d(1966,10,30,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Chicago = Chicago()
-
diff --git a/modules/pytz/zoneinfo/America/Chihuahua.py b/modules/pytz/zoneinfo/America/Chihuahua.py
deleted file mode 100644
index b50fc998..00000000
--- a/modules/pytz/zoneinfo/America/Chihuahua.py
+++ /dev/null
@@ -1,200 +0,0 @@
-'''tzinfo timezone information for America/Chihuahua.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chihuahua(DstTzInfo):
- '''America/Chihuahua timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Chihuahua'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,7,0,0),
-d(1927,6,11,6,0,0),
-d(1930,11,15,6,0,0),
-d(1931,5,2,6,0,0),
-d(1931,10,1,6,0,0),
-d(1932,4,1,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,5,6,9,0,0),
-d(2001,9,30,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-25440,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-21600,0,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Chihuahua = Chihuahua()
-
diff --git a/modules/pytz/zoneinfo/America/Coral_Harbour.py b/modules/pytz/zoneinfo/America/Coral_Harbour.py
deleted file mode 100644
index 5eb3b06d..00000000
--- a/modules/pytz/zoneinfo/America/Coral_Harbour.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for America/Coral_Harbour.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Coral_Harbour(DstTzInfo):
- '''America/Coral_Harbour timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Coral_Harbour'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,7,0,0),
-d(1918,10,27,6,0,0),
-d(1919,5,25,7,0,0),
-d(1919,11,1,4,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
- ]
-
-Coral_Harbour = Coral_Harbour()
-
diff --git a/modules/pytz/zoneinfo/America/Cordoba.py b/modules/pytz/zoneinfo/America/Cordoba.py
deleted file mode 100644
index 0a8bd6c7..00000000
--- a/modules/pytz/zoneinfo/America/Cordoba.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Cordoba.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cordoba(DstTzInfo):
- '''America/Cordoba timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Cordoba'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Cordoba = Cordoba()
-
diff --git a/modules/pytz/zoneinfo/America/Costa_Rica.py b/modules/pytz/zoneinfo/America/Costa_Rica.py
deleted file mode 100644
index 62693b86..00000000
--- a/modules/pytz/zoneinfo/America/Costa_Rica.py
+++ /dev/null
@@ -1,38 +0,0 @@
-'''tzinfo timezone information for America/Costa_Rica.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Costa_Rica(DstTzInfo):
- '''America/Costa_Rica timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Costa_Rica'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,1,15,5,36,20),
-d(1979,2,25,6,0,0),
-d(1979,6,3,5,0,0),
-d(1980,2,24,6,0,0),
-d(1980,6,1,5,0,0),
-d(1991,1,19,6,0,0),
-d(1991,7,1,5,0,0),
-d(1992,1,18,6,0,0),
-d(1992,3,15,5,0,0),
- ]
-
- _transition_info = [
-i(-20160,0,'SJMT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Costa_Rica = Costa_Rica()
-
diff --git a/modules/pytz/zoneinfo/America/Cuiaba.py b/modules/pytz/zoneinfo/America/Cuiaba.py
deleted file mode 100644
index b284bf5c..00000000
--- a/modules/pytz/zoneinfo/America/Cuiaba.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for America/Cuiaba.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cuiaba(DstTzInfo):
- '''America/Cuiaba timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Cuiaba'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,3,44,20),
-d(1931,10,3,15,0,0),
-d(1932,4,1,3,0,0),
-d(1932,10,3,4,0,0),
-d(1933,4,1,3,0,0),
-d(1949,12,1,4,0,0),
-d(1950,4,16,4,0,0),
-d(1950,12,1,4,0,0),
-d(1951,4,1,3,0,0),
-d(1951,12,1,4,0,0),
-d(1952,4,1,3,0,0),
-d(1952,12,1,4,0,0),
-d(1953,3,1,3,0,0),
-d(1963,12,9,4,0,0),
-d(1964,3,1,3,0,0),
-d(1965,1,31,4,0,0),
-d(1965,3,31,3,0,0),
-d(1965,12,1,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,11,1,4,0,0),
-d(1967,3,1,3,0,0),
-d(1967,11,1,4,0,0),
-d(1968,3,1,3,0,0),
-d(1985,11,2,4,0,0),
-d(1986,3,15,3,0,0),
-d(1986,10,25,4,0,0),
-d(1987,2,14,3,0,0),
-d(1987,10,25,4,0,0),
-d(1988,2,7,3,0,0),
-d(1988,10,16,4,0,0),
-d(1989,1,29,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,2,11,3,0,0),
-d(1990,10,21,4,0,0),
-d(1991,2,17,3,0,0),
-d(1991,10,20,4,0,0),
-d(1992,2,9,3,0,0),
-d(1992,10,25,4,0,0),
-d(1993,1,31,3,0,0),
-d(1993,10,17,4,0,0),
-d(1994,2,20,3,0,0),
-d(1994,10,16,4,0,0),
-d(1995,2,19,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,2,11,3,0,0),
-d(1996,10,6,4,0,0),
-d(1997,2,16,3,0,0),
-d(1997,10,6,4,0,0),
-d(1998,3,1,3,0,0),
-d(1998,10,11,4,0,0),
-d(1999,2,21,3,0,0),
-d(1999,10,3,4,0,0),
-d(2000,2,27,3,0,0),
-d(2000,10,8,4,0,0),
-d(2001,2,18,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,2,17,3,0,0),
-d(2002,11,3,4,0,0),
-d(2003,2,16,3,0,0),
-d(2004,11,2,4,0,0),
-d(2005,2,20,3,0,0),
-d(2005,10,16,4,0,0),
-d(2006,2,19,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,2,18,3,0,0),
-d(2007,10,21,4,0,0),
-d(2008,2,17,3,0,0),
-d(2008,10,19,4,0,0),
-d(2009,2,15,3,0,0),
-d(2009,10,18,4,0,0),
-d(2010,2,21,3,0,0),
-d(2010,10,17,4,0,0),
-d(2011,2,20,3,0,0),
-d(2011,10,16,4,0,0),
-d(2012,2,19,3,0,0),
-d(2012,10,21,4,0,0),
-d(2013,2,17,3,0,0),
-d(2013,10,20,4,0,0),
-d(2014,2,16,3,0,0),
-d(2014,10,19,4,0,0),
-d(2015,2,15,3,0,0),
-d(2015,10,18,4,0,0),
-d(2016,2,21,3,0,0),
-d(2016,10,16,4,0,0),
-d(2017,2,19,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,2,18,3,0,0),
-d(2018,10,21,4,0,0),
-d(2019,2,17,3,0,0),
-d(2019,10,20,4,0,0),
-d(2020,2,16,3,0,0),
-d(2020,10,18,4,0,0),
-d(2021,2,21,3,0,0),
-d(2021,10,17,4,0,0),
-d(2022,2,20,3,0,0),
-d(2022,10,16,4,0,0),
-d(2023,2,19,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,2,18,3,0,0),
-d(2024,10,20,4,0,0),
-d(2025,2,16,3,0,0),
-d(2025,10,19,4,0,0),
-d(2026,2,15,3,0,0),
-d(2026,10,18,4,0,0),
-d(2027,2,21,3,0,0),
-d(2027,10,17,4,0,0),
-d(2028,2,20,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,2,18,3,0,0),
-d(2029,10,21,4,0,0),
-d(2030,2,17,3,0,0),
-d(2030,10,20,4,0,0),
-d(2031,2,16,3,0,0),
-d(2031,10,19,4,0,0),
-d(2032,2,15,3,0,0),
-d(2032,10,17,4,0,0),
-d(2033,2,20,3,0,0),
-d(2033,10,16,4,0,0),
-d(2034,2,19,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,2,18,3,0,0),
-d(2035,10,21,4,0,0),
-d(2036,2,17,3,0,0),
-d(2036,10,19,4,0,0),
-d(2037,2,15,3,0,0),
-d(2037,10,18,4,0,0),
- ]
-
- _transition_info = [
-i(-13440,0,'LMT'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
- ]
-
-Cuiaba = Cuiaba()
-
diff --git a/modules/pytz/zoneinfo/America/Curacao.py b/modules/pytz/zoneinfo/America/Curacao.py
deleted file mode 100644
index b96dd992..00000000
--- a/modules/pytz/zoneinfo/America/Curacao.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/Curacao.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Curacao(DstTzInfo):
- '''America/Curacao timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Curacao'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,12,4,35,44),
-d(1965,1,1,4,30,0),
- ]
-
- _transition_info = [
-i(-16560,0,'LMT'),
-i(-16200,0,'ANT'),
-i(-14400,0,'AST'),
- ]
-
-Curacao = Curacao()
-
diff --git a/modules/pytz/zoneinfo/America/Danmarkshavn.py b/modules/pytz/zoneinfo/America/Danmarkshavn.py
deleted file mode 100644
index a476ad6a..00000000
--- a/modules/pytz/zoneinfo/America/Danmarkshavn.py
+++ /dev/null
@@ -1,88 +0,0 @@
-'''tzinfo timezone information for America/Danmarkshavn.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Danmarkshavn(DstTzInfo):
- '''America/Danmarkshavn timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Danmarkshavn'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,28,1,14,40),
-d(1980,4,6,5,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,1,1,3,0,0),
- ]
-
- _transition_info = [
-i(-4500,0,'LMT'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(0,0,'GMT'),
- ]
-
-Danmarkshavn = Danmarkshavn()
-
diff --git a/modules/pytz/zoneinfo/America/Dawson.py b/modules/pytz/zoneinfo/America/Dawson.py
deleted file mode 100644
index bf11c4b7..00000000
--- a/modules/pytz/zoneinfo/America/Dawson.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for America/Dawson.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dawson(DstTzInfo):
- '''America/Dawson timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Dawson'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,11,0,0),
-d(1918,10,27,10,0,0),
-d(1919,5,25,11,0,0),
-d(1919,11,1,8,0,0),
-d(1942,2,9,11,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,10,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,9,0,0),
-d(1973,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YWT'),
-i(-28800,3600,'YPT'),
-i(-32400,0,'YST'),
-i(-25200,7200,'YDDT'),
-i(-32400,0,'YST'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Dawson = Dawson()
-
diff --git a/modules/pytz/zoneinfo/America/Dawson_Creek.py b/modules/pytz/zoneinfo/America/Dawson_Creek.py
deleted file mode 100644
index cd815b0d..00000000
--- a/modules/pytz/zoneinfo/America/Dawson_Creek.py
+++ /dev/null
@@ -1,134 +0,0 @@
-'''tzinfo timezone information for America/Dawson_Creek.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dawson_Creek(DstTzInfo):
- '''America/Dawson_Creek timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Dawson_Creek'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,10,0,0),
-d(1918,10,31,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1947,4,27,10,0,0),
-d(1947,9,28,9,0,0),
-d(1948,4,25,10,0,0),
-d(1948,9,26,9,0,0),
-d(1949,4,24,10,0,0),
-d(1949,9,25,9,0,0),
-d(1950,4,30,10,0,0),
-d(1950,9,24,9,0,0),
-d(1951,4,29,10,0,0),
-d(1951,9,30,9,0,0),
-d(1952,4,27,10,0,0),
-d(1952,9,28,9,0,0),
-d(1953,4,26,10,0,0),
-d(1953,9,27,9,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1961,4,30,10,0,0),
-d(1961,9,24,9,0,0),
-d(1962,4,29,10,0,0),
-d(1962,10,28,9,0,0),
-d(1963,4,28,10,0,0),
-d(1963,10,27,9,0,0),
-d(1964,4,26,10,0,0),
-d(1964,10,25,9,0,0),
-d(1965,4,25,10,0,0),
-d(1965,10,31,9,0,0),
-d(1966,4,24,10,0,0),
-d(1966,10,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,8,30,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-25200,0,'MST'),
- ]
-
-Dawson_Creek = Dawson_Creek()
-
diff --git a/modules/pytz/zoneinfo/America/Denver.py b/modules/pytz/zoneinfo/America/Denver.py
deleted file mode 100644
index 205e6911..00000000
--- a/modules/pytz/zoneinfo/America/Denver.py
+++ /dev/null
@@ -1,334 +0,0 @@
-'''tzinfo timezone information for America/Denver.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Denver(DstTzInfo):
- '''America/Denver timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Denver'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1920,3,28,9,0,0),
-d(1920,10,31,8,0,0),
-d(1921,3,27,9,0,0),
-d(1921,5,22,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,8,0,0),
-d(1966,4,24,9,0,0),
-d(1966,10,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,1,6,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Denver = Denver()
-
diff --git a/modules/pytz/zoneinfo/America/Detroit.py b/modules/pytz/zoneinfo/America/Detroit.py
deleted file mode 100644
index 0c943ba6..00000000
--- a/modules/pytz/zoneinfo/America/Detroit.py
+++ /dev/null
@@ -1,298 +0,0 @@
-'''tzinfo timezone information for America/Detroit.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Detroit(DstTzInfo):
- '''America/Detroit timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Detroit'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,1,1,5,32,11),
-d(1915,5,15,8,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1948,4,25,7,0,0),
-d(1948,9,26,6,0,0),
-d(1967,6,14,7,0,0),
-d(1967,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-19920,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Detroit = Detroit()
-
diff --git a/modules/pytz/zoneinfo/America/Dominica.py b/modules/pytz/zoneinfo/America/Dominica.py
deleted file mode 100644
index 6d2c1ecd..00000000
--- a/modules/pytz/zoneinfo/America/Dominica.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Dominica.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dominica(DstTzInfo):
- '''America/Dominica timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Dominica'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,4,6,36),
- ]
-
- _transition_info = [
-i(-14760,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Dominica = Dominica()
-
diff --git a/modules/pytz/zoneinfo/America/Edmonton.py b/modules/pytz/zoneinfo/America/Edmonton.py
deleted file mode 100644
index f85349b8..00000000
--- a/modules/pytz/zoneinfo/America/Edmonton.py
+++ /dev/null
@@ -1,328 +0,0 @@
-'''tzinfo timezone information for America/Edmonton.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Edmonton(DstTzInfo):
- '''America/Edmonton timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Edmonton'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,9,1,7,33,52),
-d(1918,4,14,9,0,0),
-d(1918,10,31,8,0,0),
-d(1919,4,13,9,0,0),
-d(1919,5,27,8,0,0),
-d(1920,4,25,9,0,0),
-d(1920,10,31,8,0,0),
-d(1921,4,24,9,0,0),
-d(1921,9,25,8,0,0),
-d(1922,4,30,9,0,0),
-d(1922,9,24,8,0,0),
-d(1923,4,29,9,0,0),
-d(1923,9,30,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1947,4,27,9,0,0),
-d(1947,9,28,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,4,28,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,4,27,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-27240,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Edmonton = Edmonton()
-
diff --git a/modules/pytz/zoneinfo/America/Eirunepe.py b/modules/pytz/zoneinfo/America/Eirunepe.py
deleted file mode 100644
index 1c41bd95..00000000
--- a/modules/pytz/zoneinfo/America/Eirunepe.py
+++ /dev/null
@@ -1,82 +0,0 @@
-'''tzinfo timezone information for America/Eirunepe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Eirunepe(DstTzInfo):
- '''America/Eirunepe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Eirunepe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,39,28),
-d(1931,10,3,16,0,0),
-d(1932,4,1,4,0,0),
-d(1932,10,3,5,0,0),
-d(1933,4,1,4,0,0),
-d(1949,12,1,5,0,0),
-d(1950,4,16,5,0,0),
-d(1950,12,1,5,0,0),
-d(1951,4,1,4,0,0),
-d(1951,12,1,5,0,0),
-d(1952,4,1,4,0,0),
-d(1952,12,1,5,0,0),
-d(1953,3,1,4,0,0),
-d(1963,12,9,5,0,0),
-d(1964,3,1,4,0,0),
-d(1965,1,31,5,0,0),
-d(1965,3,31,4,0,0),
-d(1965,12,1,5,0,0),
-d(1966,3,1,4,0,0),
-d(1966,11,1,5,0,0),
-d(1967,3,1,4,0,0),
-d(1967,11,1,5,0,0),
-d(1968,3,1,4,0,0),
-d(1985,11,2,5,0,0),
-d(1986,3,15,4,0,0),
-d(1986,10,25,5,0,0),
-d(1987,2,14,4,0,0),
-d(1987,10,25,5,0,0),
-d(1988,2,7,4,0,0),
-d(1993,10,17,5,0,0),
-d(1994,2,20,4,0,0),
- ]
-
- _transition_info = [
-i(-16740,0,'LMT'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
- ]
-
-Eirunepe = Eirunepe()
-
diff --git a/modules/pytz/zoneinfo/America/El_Salvador.py b/modules/pytz/zoneinfo/America/El_Salvador.py
deleted file mode 100644
index 4ed5d13a..00000000
--- a/modules/pytz/zoneinfo/America/El_Salvador.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for America/El_Salvador.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class El_Salvador(DstTzInfo):
- '''America/El_Salvador timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/El_Salvador'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,1,1,5,56,48),
-d(1987,5,3,6,0,0),
-d(1987,9,27,5,0,0),
-d(1988,5,1,6,0,0),
-d(1988,9,25,5,0,0),
- ]
-
- _transition_info = [
-i(-21420,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-El_Salvador = El_Salvador()
-
diff --git a/modules/pytz/zoneinfo/America/Ensenada.py b/modules/pytz/zoneinfo/America/Ensenada.py
deleted file mode 100644
index d1cc2e84..00000000
--- a/modules/pytz/zoneinfo/America/Ensenada.py
+++ /dev/null
@@ -1,316 +0,0 @@
-'''tzinfo timezone information for America/Ensenada.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ensenada(DstTzInfo):
- '''America/Ensenada timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Ensenada'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,8,0,0),
-d(1924,1,1,7,0,0),
-d(1927,6,11,7,0,0),
-d(1930,11,15,7,0,0),
-d(1931,4,1,8,0,0),
-d(1931,9,30,7,0,0),
-d(1942,4,24,8,0,0),
-d(1945,11,12,7,0,0),
-d(1948,4,5,8,0,0),
-d(1949,1,14,7,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-28080,0,'LMT'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Ensenada = Ensenada()
-
diff --git a/modules/pytz/zoneinfo/America/Fort_Wayne.py b/modules/pytz/zoneinfo/America/Fort_Wayne.py
deleted file mode 100644
index 4a1bd609..00000000
--- a/modules/pytz/zoneinfo/America/Fort_Wayne.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''tzinfo timezone information for America/Fort_Wayne.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Fort_Wayne(DstTzInfo):
- '''America/Fort_Wayne timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Fort_Wayne'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1941,6,22,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Fort_Wayne = Fort_Wayne()
-
diff --git a/modules/pytz/zoneinfo/America/Fortaleza.py b/modules/pytz/zoneinfo/America/Fortaleza.py
deleted file mode 100644
index 44ca5ae1..00000000
--- a/modules/pytz/zoneinfo/America/Fortaleza.py
+++ /dev/null
@@ -1,98 +0,0 @@
-'''tzinfo timezone information for America/Fortaleza.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Fortaleza(DstTzInfo):
- '''America/Fortaleza timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Fortaleza'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,2,34,0),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,12,9,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2000,10,22,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
- ]
-
- _transition_info = [
-i(-9240,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
- ]
-
-Fortaleza = Fortaleza()
-
diff --git a/modules/pytz/zoneinfo/America/Glace_Bay.py b/modules/pytz/zoneinfo/America/Glace_Bay.py
deleted file mode 100644
index cd5edff1..00000000
--- a/modules/pytz/zoneinfo/America/Glace_Bay.py
+++ /dev/null
@@ -1,300 +0,0 @@
-'''tzinfo timezone information for America/Glace_Bay.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Glace_Bay(DstTzInfo):
- '''America/Glace_Bay timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Glace_Bay'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1902,6,15,3,59,48),
-d(1918,4,14,6,0,0),
-d(1918,10,31,5,0,0),
-d(1942,2,9,6,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,5,0,0),
-d(1953,4,26,6,0,0),
-d(1953,9,27,5,0,0),
-d(1972,4,30,6,0,0),
-d(1972,10,29,5,0,0),
-d(1973,4,29,6,0,0),
-d(1973,10,28,5,0,0),
-d(1974,4,28,6,0,0),
-d(1974,10,27,5,0,0),
-d(1975,4,27,6,0,0),
-d(1975,10,26,5,0,0),
-d(1976,4,25,6,0,0),
-d(1976,10,31,5,0,0),
-d(1977,4,24,6,0,0),
-d(1977,10,30,5,0,0),
-d(1978,4,30,6,0,0),
-d(1978,10,29,5,0,0),
-d(1979,4,29,6,0,0),
-d(1979,10,28,5,0,0),
-d(1980,4,27,6,0,0),
-d(1980,10,26,5,0,0),
-d(1981,4,26,6,0,0),
-d(1981,10,25,5,0,0),
-d(1982,4,25,6,0,0),
-d(1982,10,31,5,0,0),
-d(1983,4,24,6,0,0),
-d(1983,10,30,5,0,0),
-d(1984,4,29,6,0,0),
-d(1984,10,28,5,0,0),
-d(1985,4,28,6,0,0),
-d(1985,10,27,5,0,0),
-d(1986,4,27,6,0,0),
-d(1986,10,26,5,0,0),
-d(1987,4,5,6,0,0),
-d(1987,10,25,5,0,0),
-d(1988,4,3,6,0,0),
-d(1988,10,30,5,0,0),
-d(1989,4,2,6,0,0),
-d(1989,10,29,5,0,0),
-d(1990,4,1,6,0,0),
-d(1990,10,28,5,0,0),
-d(1991,4,7,6,0,0),
-d(1991,10,27,5,0,0),
-d(1992,4,5,6,0,0),
-d(1992,10,25,5,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,5,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,5,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,5,0,0),
-d(1996,4,7,6,0,0),
-d(1996,10,27,5,0,0),
-d(1997,4,6,6,0,0),
-d(1997,10,26,5,0,0),
-d(1998,4,5,6,0,0),
-d(1998,10,25,5,0,0),
-d(1999,4,4,6,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,6,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,6,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,6,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,6,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,6,0,0),
-d(2004,10,31,5,0,0),
-d(2005,4,3,6,0,0),
-d(2005,10,30,5,0,0),
-d(2006,4,2,6,0,0),
-d(2006,10,29,5,0,0),
-d(2007,3,11,6,0,0),
-d(2007,11,4,5,0,0),
-d(2008,3,9,6,0,0),
-d(2008,11,2,5,0,0),
-d(2009,3,8,6,0,0),
-d(2009,11,1,5,0,0),
-d(2010,3,14,6,0,0),
-d(2010,11,7,5,0,0),
-d(2011,3,13,6,0,0),
-d(2011,11,6,5,0,0),
-d(2012,3,11,6,0,0),
-d(2012,11,4,5,0,0),
-d(2013,3,10,6,0,0),
-d(2013,11,3,5,0,0),
-d(2014,3,9,6,0,0),
-d(2014,11,2,5,0,0),
-d(2015,3,8,6,0,0),
-d(2015,11,1,5,0,0),
-d(2016,3,13,6,0,0),
-d(2016,11,6,5,0,0),
-d(2017,3,12,6,0,0),
-d(2017,11,5,5,0,0),
-d(2018,3,11,6,0,0),
-d(2018,11,4,5,0,0),
-d(2019,3,10,6,0,0),
-d(2019,11,3,5,0,0),
-d(2020,3,8,6,0,0),
-d(2020,11,1,5,0,0),
-d(2021,3,14,6,0,0),
-d(2021,11,7,5,0,0),
-d(2022,3,13,6,0,0),
-d(2022,11,6,5,0,0),
-d(2023,3,12,6,0,0),
-d(2023,11,5,5,0,0),
-d(2024,3,10,6,0,0),
-d(2024,11,3,5,0,0),
-d(2025,3,9,6,0,0),
-d(2025,11,2,5,0,0),
-d(2026,3,8,6,0,0),
-d(2026,11,1,5,0,0),
-d(2027,3,14,6,0,0),
-d(2027,11,7,5,0,0),
-d(2028,3,12,6,0,0),
-d(2028,11,5,5,0,0),
-d(2029,3,11,6,0,0),
-d(2029,11,4,5,0,0),
-d(2030,3,10,6,0,0),
-d(2030,11,3,5,0,0),
-d(2031,3,9,6,0,0),
-d(2031,11,2,5,0,0),
-d(2032,3,14,6,0,0),
-d(2032,11,7,5,0,0),
-d(2033,3,13,6,0,0),
-d(2033,11,6,5,0,0),
-d(2034,3,12,6,0,0),
-d(2034,11,5,5,0,0),
-d(2035,3,11,6,0,0),
-d(2035,11,4,5,0,0),
-d(2036,3,9,6,0,0),
-d(2036,11,2,5,0,0),
-d(2037,3,8,6,0,0),
-d(2037,11,1,5,0,0),
- ]
-
- _transition_info = [
-i(-14400,0,'LMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'AWT'),
-i(-10800,3600,'APT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Glace_Bay = Glace_Bay()
-
diff --git a/modules/pytz/zoneinfo/America/Godthab.py b/modules/pytz/zoneinfo/America/Godthab.py
deleted file mode 100644
index bce7b307..00000000
--- a/modules/pytz/zoneinfo/America/Godthab.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for America/Godthab.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Godthab(DstTzInfo):
- '''America/Godthab timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Godthab'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,28,3,26,56),
-d(1980,4,6,5,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-12420,0,'LMT'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
-i(-7200,3600,'WGST'),
-i(-10800,0,'WGT'),
- ]
-
-Godthab = Godthab()
-
diff --git a/modules/pytz/zoneinfo/America/Goose_Bay.py b/modules/pytz/zoneinfo/America/Goose_Bay.py
deleted file mode 100644
index 66d75a8a..00000000
--- a/modules/pytz/zoneinfo/America/Goose_Bay.py
+++ /dev/null
@@ -1,426 +0,0 @@
-'''tzinfo timezone information for America/Goose_Bay.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Goose_Bay(DstTzInfo):
- '''America/Goose_Bay timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Goose_Bay'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,5,30,52),
-d(1918,10,31,4,30,52),
-d(1935,3,30,3,30,52),
-d(1936,5,11,3,30,0),
-d(1936,10,5,2,30,0),
-d(1937,5,10,3,30,0),
-d(1937,10,4,2,30,0),
-d(1938,5,9,3,30,0),
-d(1938,10,3,2,30,0),
-d(1939,5,15,3,30,0),
-d(1939,10,2,2,30,0),
-d(1940,5,13,3,30,0),
-d(1940,10,7,2,30,0),
-d(1941,5,12,3,30,0),
-d(1941,10,6,2,30,0),
-d(1942,5,11,3,30,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,4,30,0),
-d(1946,5,12,5,30,0),
-d(1946,10,6,4,30,0),
-d(1947,5,11,5,30,0),
-d(1947,10,5,4,30,0),
-d(1948,5,9,5,30,0),
-d(1948,10,3,4,30,0),
-d(1949,5,8,5,30,0),
-d(1949,10,2,4,30,0),
-d(1950,5,14,5,30,0),
-d(1950,10,8,4,30,0),
-d(1951,4,29,5,30,0),
-d(1951,9,30,4,30,0),
-d(1952,4,27,5,30,0),
-d(1952,9,28,4,30,0),
-d(1953,4,26,5,30,0),
-d(1953,9,27,4,30,0),
-d(1954,4,25,5,30,0),
-d(1954,9,26,4,30,0),
-d(1955,4,24,5,30,0),
-d(1955,9,25,4,30,0),
-d(1956,4,29,5,30,0),
-d(1956,9,30,4,30,0),
-d(1957,4,28,5,30,0),
-d(1957,9,29,4,30,0),
-d(1958,4,27,5,30,0),
-d(1958,9,28,4,30,0),
-d(1959,4,26,5,30,0),
-d(1959,9,27,4,30,0),
-d(1960,4,24,5,30,0),
-d(1960,10,30,4,30,0),
-d(1961,4,30,5,30,0),
-d(1961,10,29,4,30,0),
-d(1962,4,29,5,30,0),
-d(1962,10,28,4,30,0),
-d(1963,4,28,5,30,0),
-d(1963,10,27,4,30,0),
-d(1964,4,26,5,30,0),
-d(1964,10,25,4,30,0),
-d(1965,4,25,5,30,0),
-d(1965,10,31,4,30,0),
-d(1966,3,15,5,30,0),
-d(1966,4,24,6,0,0),
-d(1966,10,30,5,0,0),
-d(1967,4,30,6,0,0),
-d(1967,10,29,5,0,0),
-d(1968,4,28,6,0,0),
-d(1968,10,27,5,0,0),
-d(1969,4,27,6,0,0),
-d(1969,10,26,5,0,0),
-d(1970,4,26,6,0,0),
-d(1970,10,25,5,0,0),
-d(1971,4,25,6,0,0),
-d(1971,10,31,5,0,0),
-d(1972,4,30,6,0,0),
-d(1972,10,29,5,0,0),
-d(1973,4,29,6,0,0),
-d(1973,10,28,5,0,0),
-d(1974,4,28,6,0,0),
-d(1974,10,27,5,0,0),
-d(1975,4,27,6,0,0),
-d(1975,10,26,5,0,0),
-d(1976,4,25,6,0,0),
-d(1976,10,31,5,0,0),
-d(1977,4,24,6,0,0),
-d(1977,10,30,5,0,0),
-d(1978,4,30,6,0,0),
-d(1978,10,29,5,0,0),
-d(1979,4,29,6,0,0),
-d(1979,10,28,5,0,0),
-d(1980,4,27,6,0,0),
-d(1980,10,26,5,0,0),
-d(1981,4,26,6,0,0),
-d(1981,10,25,5,0,0),
-d(1982,4,25,6,0,0),
-d(1982,10,31,5,0,0),
-d(1983,4,24,6,0,0),
-d(1983,10,30,5,0,0),
-d(1984,4,29,6,0,0),
-d(1984,10,28,5,0,0),
-d(1985,4,28,6,0,0),
-d(1985,10,27,5,0,0),
-d(1986,4,27,6,0,0),
-d(1986,10,26,5,0,0),
-d(1987,4,5,4,1,0),
-d(1987,10,25,3,1,0),
-d(1988,4,3,4,1,0),
-d(1988,10,30,2,1,0),
-d(1989,4,2,4,1,0),
-d(1989,10,29,3,1,0),
-d(1990,4,1,4,1,0),
-d(1990,10,28,3,1,0),
-d(1991,4,7,4,1,0),
-d(1991,10,27,3,1,0),
-d(1992,4,5,4,1,0),
-d(1992,10,25,3,1,0),
-d(1993,4,4,4,1,0),
-d(1993,10,31,3,1,0),
-d(1994,4,3,4,1,0),
-d(1994,10,30,3,1,0),
-d(1995,4,2,4,1,0),
-d(1995,10,29,3,1,0),
-d(1996,4,7,4,1,0),
-d(1996,10,27,3,1,0),
-d(1997,4,6,4,1,0),
-d(1997,10,26,3,1,0),
-d(1998,4,5,4,1,0),
-d(1998,10,25,3,1,0),
-d(1999,4,4,4,1,0),
-d(1999,10,31,3,1,0),
-d(2000,4,2,4,1,0),
-d(2000,10,29,3,1,0),
-d(2001,4,1,4,1,0),
-d(2001,10,28,3,1,0),
-d(2002,4,7,4,1,0),
-d(2002,10,27,3,1,0),
-d(2003,4,6,4,1,0),
-d(2003,10,26,3,1,0),
-d(2004,4,4,4,1,0),
-d(2004,10,31,3,1,0),
-d(2005,4,3,4,1,0),
-d(2005,10,30,3,1,0),
-d(2006,4,2,4,1,0),
-d(2006,10,29,3,1,0),
-d(2007,4,1,4,1,0),
-d(2007,10,28,3,1,0),
-d(2008,4,6,4,1,0),
-d(2008,10,26,3,1,0),
-d(2009,4,5,4,1,0),
-d(2009,10,25,3,1,0),
-d(2010,4,4,4,1,0),
-d(2010,10,31,3,1,0),
-d(2011,4,3,4,1,0),
-d(2011,10,30,3,1,0),
-d(2012,4,1,4,1,0),
-d(2012,10,28,3,1,0),
-d(2013,4,7,4,1,0),
-d(2013,10,27,3,1,0),
-d(2014,4,6,4,1,0),
-d(2014,10,26,3,1,0),
-d(2015,4,5,4,1,0),
-d(2015,10,25,3,1,0),
-d(2016,4,3,4,1,0),
-d(2016,10,30,3,1,0),
-d(2017,4,2,4,1,0),
-d(2017,10,29,3,1,0),
-d(2018,4,1,4,1,0),
-d(2018,10,28,3,1,0),
-d(2019,4,7,4,1,0),
-d(2019,10,27,3,1,0),
-d(2020,4,5,4,1,0),
-d(2020,10,25,3,1,0),
-d(2021,4,4,4,1,0),
-d(2021,10,31,3,1,0),
-d(2022,4,3,4,1,0),
-d(2022,10,30,3,1,0),
-d(2023,4,2,4,1,0),
-d(2023,10,29,3,1,0),
-d(2024,4,7,4,1,0),
-d(2024,10,27,3,1,0),
-d(2025,4,6,4,1,0),
-d(2025,10,26,3,1,0),
-d(2026,4,5,4,1,0),
-d(2026,10,25,3,1,0),
-d(2027,4,4,4,1,0),
-d(2027,10,31,3,1,0),
-d(2028,4,2,4,1,0),
-d(2028,10,29,3,1,0),
-d(2029,4,1,4,1,0),
-d(2029,10,28,3,1,0),
-d(2030,4,7,4,1,0),
-d(2030,10,27,3,1,0),
-d(2031,4,6,4,1,0),
-d(2031,10,26,3,1,0),
-d(2032,4,4,4,1,0),
-d(2032,10,31,3,1,0),
-d(2033,4,3,4,1,0),
-d(2033,10,30,3,1,0),
-d(2034,4,2,4,1,0),
-d(2034,10,29,3,1,0),
-d(2035,4,1,4,1,0),
-d(2035,10,28,3,1,0),
-d(2036,4,6,4,1,0),
-d(2036,10,26,3,1,0),
-d(2037,4,5,4,1,0),
-d(2037,10,25,3,1,0),
- ]
-
- _transition_info = [
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NWT'),
-i(-9000,3600,'NPT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-7200,7200,'ADDT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Goose_Bay = Goose_Bay()
-
diff --git a/modules/pytz/zoneinfo/America/Grand_Turk.py b/modules/pytz/zoneinfo/America/Grand_Turk.py
deleted file mode 100644
index ba4cae50..00000000
--- a/modules/pytz/zoneinfo/America/Grand_Turk.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for America/Grand_Turk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Grand_Turk(DstTzInfo):
- '''America/Grand_Turk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Grand_Turk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,1,5,7,12),
-d(1979,4,29,5,0,0),
-d(1979,10,28,4,0,0),
-d(1980,4,27,5,0,0),
-d(1980,10,26,4,0,0),
-d(1981,4,26,5,0,0),
-d(1981,10,25,4,0,0),
-d(1982,4,25,5,0,0),
-d(1982,10,31,4,0,0),
-d(1983,4,24,5,0,0),
-d(1983,10,30,4,0,0),
-d(1984,4,29,5,0,0),
-d(1984,10,28,4,0,0),
-d(1985,4,28,5,0,0),
-d(1985,10,27,4,0,0),
-d(1986,4,27,5,0,0),
-d(1986,10,26,4,0,0),
-d(1987,4,5,5,0,0),
-d(1987,10,25,4,0,0),
-d(1988,4,3,5,0,0),
-d(1988,10,30,4,0,0),
-d(1989,4,2,5,0,0),
-d(1989,10,29,4,0,0),
-d(1990,4,1,5,0,0),
-d(1990,10,28,4,0,0),
-d(1991,4,7,5,0,0),
-d(1991,10,27,4,0,0),
-d(1992,4,5,5,0,0),
-d(1992,10,25,4,0,0),
-d(1993,4,4,5,0,0),
-d(1993,10,31,4,0,0),
-d(1994,4,3,5,0,0),
-d(1994,10,30,4,0,0),
-d(1995,4,2,5,0,0),
-d(1995,10,29,4,0,0),
-d(1996,4,7,5,0,0),
-d(1996,10,27,4,0,0),
-d(1997,4,6,5,0,0),
-d(1997,10,26,4,0,0),
-d(1998,4,5,5,0,0),
-d(1998,10,25,4,0,0),
-d(1999,4,4,5,0,0),
-d(1999,10,31,4,0,0),
-d(2000,4,2,5,0,0),
-d(2000,10,29,4,0,0),
-d(2001,4,1,5,0,0),
-d(2001,10,28,4,0,0),
-d(2002,4,7,5,0,0),
-d(2002,10,27,4,0,0),
-d(2003,4,6,5,0,0),
-d(2003,10,26,4,0,0),
-d(2004,4,4,5,0,0),
-d(2004,10,31,4,0,0),
-d(2005,4,3,5,0,0),
-d(2005,10,30,4,0,0),
-d(2006,4,2,5,0,0),
-d(2006,10,29,4,0,0),
-d(2007,4,1,5,0,0),
-d(2007,10,28,4,0,0),
-d(2008,4,6,5,0,0),
-d(2008,10,26,4,0,0),
-d(2009,4,5,5,0,0),
-d(2009,10,25,4,0,0),
-d(2010,4,4,5,0,0),
-d(2010,10,31,4,0,0),
-d(2011,4,3,5,0,0),
-d(2011,10,30,4,0,0),
-d(2012,4,1,5,0,0),
-d(2012,10,28,4,0,0),
-d(2013,4,7,5,0,0),
-d(2013,10,27,4,0,0),
-d(2014,4,6,5,0,0),
-d(2014,10,26,4,0,0),
-d(2015,4,5,5,0,0),
-d(2015,10,25,4,0,0),
-d(2016,4,3,5,0,0),
-d(2016,10,30,4,0,0),
-d(2017,4,2,5,0,0),
-d(2017,10,29,4,0,0),
-d(2018,4,1,5,0,0),
-d(2018,10,28,4,0,0),
-d(2019,4,7,5,0,0),
-d(2019,10,27,4,0,0),
-d(2020,4,5,5,0,0),
-d(2020,10,25,4,0,0),
-d(2021,4,4,5,0,0),
-d(2021,10,31,4,0,0),
-d(2022,4,3,5,0,0),
-d(2022,10,30,4,0,0),
-d(2023,4,2,5,0,0),
-d(2023,10,29,4,0,0),
-d(2024,4,7,5,0,0),
-d(2024,10,27,4,0,0),
-d(2025,4,6,5,0,0),
-d(2025,10,26,4,0,0),
-d(2026,4,5,5,0,0),
-d(2026,10,25,4,0,0),
-d(2027,4,4,5,0,0),
-d(2027,10,31,4,0,0),
-d(2028,4,2,5,0,0),
-d(2028,10,29,4,0,0),
-d(2029,4,1,5,0,0),
-d(2029,10,28,4,0,0),
-d(2030,4,7,5,0,0),
-d(2030,10,27,4,0,0),
-d(2031,4,6,5,0,0),
-d(2031,10,26,4,0,0),
-d(2032,4,4,5,0,0),
-d(2032,10,31,4,0,0),
-d(2033,4,3,5,0,0),
-d(2033,10,30,4,0,0),
-d(2034,4,2,5,0,0),
-d(2034,10,29,4,0,0),
-d(2035,4,1,5,0,0),
-d(2035,10,28,4,0,0),
-d(2036,4,6,5,0,0),
-d(2036,10,26,4,0,0),
-d(2037,4,5,5,0,0),
-d(2037,10,25,4,0,0),
- ]
-
- _transition_info = [
-i(-18420,0,'KMT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Grand_Turk = Grand_Turk()
-
diff --git a/modules/pytz/zoneinfo/America/Grenada.py b/modules/pytz/zoneinfo/America/Grenada.py
deleted file mode 100644
index 37d67e85..00000000
--- a/modules/pytz/zoneinfo/America/Grenada.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Grenada.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Grenada(DstTzInfo):
- '''America/Grenada timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Grenada'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,4,7,0),
- ]
-
- _transition_info = [
-i(-14820,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Grenada = Grenada()
-
diff --git a/modules/pytz/zoneinfo/America/Guadeloupe.py b/modules/pytz/zoneinfo/America/Guadeloupe.py
deleted file mode 100644
index 19720756..00000000
--- a/modules/pytz/zoneinfo/America/Guadeloupe.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Guadeloupe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Guadeloupe(DstTzInfo):
- '''America/Guadeloupe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Guadeloupe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,6,8,4,6,8),
- ]
-
- _transition_info = [
-i(-14760,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Guadeloupe = Guadeloupe()
-
diff --git a/modules/pytz/zoneinfo/America/Guatemala.py b/modules/pytz/zoneinfo/America/Guatemala.py
deleted file mode 100644
index db41d857..00000000
--- a/modules/pytz/zoneinfo/America/Guatemala.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for America/Guatemala.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Guatemala(DstTzInfo):
- '''America/Guatemala timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Guatemala'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,10,5,6,2,4),
-d(1973,11,25,6,0,0),
-d(1974,2,24,5,0,0),
-d(1983,5,21,6,0,0),
-d(1983,9,22,5,0,0),
-d(1991,3,23,6,0,0),
-d(1991,9,7,5,0,0),
- ]
-
- _transition_info = [
-i(-21720,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Guatemala = Guatemala()
-
diff --git a/modules/pytz/zoneinfo/America/Guayaquil.py b/modules/pytz/zoneinfo/America/Guayaquil.py
deleted file mode 100644
index c44a5f14..00000000
--- a/modules/pytz/zoneinfo/America/Guayaquil.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Guayaquil.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Guayaquil(DstTzInfo):
- '''America/Guayaquil timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Guayaquil'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1931,1,1,5,14,0),
- ]
-
- _transition_info = [
-i(-18840,0,'QMT'),
-i(-18000,0,'ECT'),
- ]
-
-Guayaquil = Guayaquil()
-
diff --git a/modules/pytz/zoneinfo/America/Guyana.py b/modules/pytz/zoneinfo/America/Guyana.py
deleted file mode 100644
index 3397d5e5..00000000
--- a/modules/pytz/zoneinfo/America/Guyana.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for America/Guyana.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Guyana(DstTzInfo):
- '''America/Guyana timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Guyana'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1915,3,1,3,52,40),
-d(1966,5,26,3,45,0),
-d(1975,7,31,3,45,0),
-d(1991,1,1,3,0,0),
- ]
-
- _transition_info = [
-i(-13980,0,'LMT'),
-i(-13500,0,'GBGT'),
-i(-13500,0,'GYT'),
-i(-10800,0,'GYT'),
-i(-14400,0,'GYT'),
- ]
-
-Guyana = Guyana()
-
diff --git a/modules/pytz/zoneinfo/America/Halifax.py b/modules/pytz/zoneinfo/America/Halifax.py
deleted file mode 100644
index ae673915..00000000
--- a/modules/pytz/zoneinfo/America/Halifax.py
+++ /dev/null
@@ -1,476 +0,0 @@
-'''tzinfo timezone information for America/Halifax.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Halifax(DstTzInfo):
- '''America/Halifax timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Halifax'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1902,6,15,4,14,24),
-d(1916,4,1,4,0,0),
-d(1916,10,1,3,0,0),
-d(1918,4,14,6,0,0),
-d(1918,10,31,5,0,0),
-d(1920,5,9,4,0,0),
-d(1920,8,29,3,0,0),
-d(1921,5,6,4,0,0),
-d(1921,9,5,3,0,0),
-d(1922,4,30,4,0,0),
-d(1922,9,5,3,0,0),
-d(1923,5,6,4,0,0),
-d(1923,9,4,3,0,0),
-d(1924,5,4,4,0,0),
-d(1924,9,15,3,0,0),
-d(1925,5,3,4,0,0),
-d(1925,9,28,3,0,0),
-d(1926,5,16,4,0,0),
-d(1926,9,13,3,0,0),
-d(1927,5,1,4,0,0),
-d(1927,9,26,3,0,0),
-d(1928,5,13,4,0,0),
-d(1928,9,9,3,0,0),
-d(1929,5,12,4,0,0),
-d(1929,9,3,3,0,0),
-d(1930,5,11,4,0,0),
-d(1930,9,15,3,0,0),
-d(1931,5,10,4,0,0),
-d(1931,9,28,3,0,0),
-d(1932,5,1,4,0,0),
-d(1932,9,26,3,0,0),
-d(1933,4,30,4,0,0),
-d(1933,10,2,3,0,0),
-d(1934,5,20,4,0,0),
-d(1934,9,16,3,0,0),
-d(1935,6,2,4,0,0),
-d(1935,9,30,3,0,0),
-d(1936,6,1,4,0,0),
-d(1936,9,14,3,0,0),
-d(1937,5,2,4,0,0),
-d(1937,9,27,3,0,0),
-d(1938,5,1,4,0,0),
-d(1938,9,26,3,0,0),
-d(1939,5,28,4,0,0),
-d(1939,9,25,3,0,0),
-d(1940,5,5,4,0,0),
-d(1940,9,30,3,0,0),
-d(1941,5,4,4,0,0),
-d(1941,9,29,3,0,0),
-d(1942,2,9,6,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,5,0,0),
-d(1946,4,28,6,0,0),
-d(1946,9,29,5,0,0),
-d(1947,4,27,6,0,0),
-d(1947,9,28,5,0,0),
-d(1948,4,25,6,0,0),
-d(1948,9,26,5,0,0),
-d(1949,4,24,6,0,0),
-d(1949,9,25,5,0,0),
-d(1951,4,29,6,0,0),
-d(1951,9,30,5,0,0),
-d(1952,4,27,6,0,0),
-d(1952,9,28,5,0,0),
-d(1953,4,26,6,0,0),
-d(1953,9,27,5,0,0),
-d(1954,4,25,6,0,0),
-d(1954,9,26,5,0,0),
-d(1956,4,29,6,0,0),
-d(1956,9,30,5,0,0),
-d(1957,4,28,6,0,0),
-d(1957,9,29,5,0,0),
-d(1958,4,27,6,0,0),
-d(1958,9,28,5,0,0),
-d(1959,4,26,6,0,0),
-d(1959,9,27,5,0,0),
-d(1962,4,29,6,0,0),
-d(1962,10,28,5,0,0),
-d(1963,4,28,6,0,0),
-d(1963,10,27,5,0,0),
-d(1964,4,26,6,0,0),
-d(1964,10,25,5,0,0),
-d(1965,4,25,6,0,0),
-d(1965,10,31,5,0,0),
-d(1966,4,24,6,0,0),
-d(1966,10,30,5,0,0),
-d(1967,4,30,6,0,0),
-d(1967,10,29,5,0,0),
-d(1968,4,28,6,0,0),
-d(1968,10,27,5,0,0),
-d(1969,4,27,6,0,0),
-d(1969,10,26,5,0,0),
-d(1970,4,26,6,0,0),
-d(1970,10,25,5,0,0),
-d(1971,4,25,6,0,0),
-d(1971,10,31,5,0,0),
-d(1972,4,30,6,0,0),
-d(1972,10,29,5,0,0),
-d(1973,4,29,6,0,0),
-d(1973,10,28,5,0,0),
-d(1974,4,28,6,0,0),
-d(1974,10,27,5,0,0),
-d(1975,4,27,6,0,0),
-d(1975,10,26,5,0,0),
-d(1976,4,25,6,0,0),
-d(1976,10,31,5,0,0),
-d(1977,4,24,6,0,0),
-d(1977,10,30,5,0,0),
-d(1978,4,30,6,0,0),
-d(1978,10,29,5,0,0),
-d(1979,4,29,6,0,0),
-d(1979,10,28,5,0,0),
-d(1980,4,27,6,0,0),
-d(1980,10,26,5,0,0),
-d(1981,4,26,6,0,0),
-d(1981,10,25,5,0,0),
-d(1982,4,25,6,0,0),
-d(1982,10,31,5,0,0),
-d(1983,4,24,6,0,0),
-d(1983,10,30,5,0,0),
-d(1984,4,29,6,0,0),
-d(1984,10,28,5,0,0),
-d(1985,4,28,6,0,0),
-d(1985,10,27,5,0,0),
-d(1986,4,27,6,0,0),
-d(1986,10,26,5,0,0),
-d(1987,4,5,6,0,0),
-d(1987,10,25,5,0,0),
-d(1988,4,3,6,0,0),
-d(1988,10,30,5,0,0),
-d(1989,4,2,6,0,0),
-d(1989,10,29,5,0,0),
-d(1990,4,1,6,0,0),
-d(1990,10,28,5,0,0),
-d(1991,4,7,6,0,0),
-d(1991,10,27,5,0,0),
-d(1992,4,5,6,0,0),
-d(1992,10,25,5,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,5,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,5,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,5,0,0),
-d(1996,4,7,6,0,0),
-d(1996,10,27,5,0,0),
-d(1997,4,6,6,0,0),
-d(1997,10,26,5,0,0),
-d(1998,4,5,6,0,0),
-d(1998,10,25,5,0,0),
-d(1999,4,4,6,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,6,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,6,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,6,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,6,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,6,0,0),
-d(2004,10,31,5,0,0),
-d(2005,4,3,6,0,0),
-d(2005,10,30,5,0,0),
-d(2006,4,2,6,0,0),
-d(2006,10,29,5,0,0),
-d(2007,3,11,6,0,0),
-d(2007,11,4,5,0,0),
-d(2008,3,9,6,0,0),
-d(2008,11,2,5,0,0),
-d(2009,3,8,6,0,0),
-d(2009,11,1,5,0,0),
-d(2010,3,14,6,0,0),
-d(2010,11,7,5,0,0),
-d(2011,3,13,6,0,0),
-d(2011,11,6,5,0,0),
-d(2012,3,11,6,0,0),
-d(2012,11,4,5,0,0),
-d(2013,3,10,6,0,0),
-d(2013,11,3,5,0,0),
-d(2014,3,9,6,0,0),
-d(2014,11,2,5,0,0),
-d(2015,3,8,6,0,0),
-d(2015,11,1,5,0,0),
-d(2016,3,13,6,0,0),
-d(2016,11,6,5,0,0),
-d(2017,3,12,6,0,0),
-d(2017,11,5,5,0,0),
-d(2018,3,11,6,0,0),
-d(2018,11,4,5,0,0),
-d(2019,3,10,6,0,0),
-d(2019,11,3,5,0,0),
-d(2020,3,8,6,0,0),
-d(2020,11,1,5,0,0),
-d(2021,3,14,6,0,0),
-d(2021,11,7,5,0,0),
-d(2022,3,13,6,0,0),
-d(2022,11,6,5,0,0),
-d(2023,3,12,6,0,0),
-d(2023,11,5,5,0,0),
-d(2024,3,10,6,0,0),
-d(2024,11,3,5,0,0),
-d(2025,3,9,6,0,0),
-d(2025,11,2,5,0,0),
-d(2026,3,8,6,0,0),
-d(2026,11,1,5,0,0),
-d(2027,3,14,6,0,0),
-d(2027,11,7,5,0,0),
-d(2028,3,12,6,0,0),
-d(2028,11,5,5,0,0),
-d(2029,3,11,6,0,0),
-d(2029,11,4,5,0,0),
-d(2030,3,10,6,0,0),
-d(2030,11,3,5,0,0),
-d(2031,3,9,6,0,0),
-d(2031,11,2,5,0,0),
-d(2032,3,14,6,0,0),
-d(2032,11,7,5,0,0),
-d(2033,3,13,6,0,0),
-d(2033,11,6,5,0,0),
-d(2034,3,12,6,0,0),
-d(2034,11,5,5,0,0),
-d(2035,3,11,6,0,0),
-d(2035,11,4,5,0,0),
-d(2036,3,9,6,0,0),
-d(2036,11,2,5,0,0),
-d(2037,3,8,6,0,0),
-d(2037,11,1,5,0,0),
- ]
-
- _transition_info = [
-i(-15240,0,'LMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'AWT'),
-i(-10800,3600,'APT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Halifax = Halifax()
-
diff --git a/modules/pytz/zoneinfo/America/Havana.py b/modules/pytz/zoneinfo/America/Havana.py
deleted file mode 100644
index 988a380b..00000000
--- a/modules/pytz/zoneinfo/America/Havana.py
+++ /dev/null
@@ -1,330 +0,0 @@
-'''tzinfo timezone information for America/Havana.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Havana(DstTzInfo):
- '''America/Havana timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Havana'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1925,7,19,17,29,36),
-d(1928,6,10,5,0,0),
-d(1928,10,10,4,0,0),
-d(1940,6,2,5,0,0),
-d(1940,9,1,4,0,0),
-d(1941,6,1,5,0,0),
-d(1941,9,7,4,0,0),
-d(1942,6,7,5,0,0),
-d(1942,9,6,4,0,0),
-d(1945,6,3,5,0,0),
-d(1945,9,2,4,0,0),
-d(1946,6,2,5,0,0),
-d(1946,9,1,4,0,0),
-d(1965,6,1,5,0,0),
-d(1965,9,30,4,0,0),
-d(1966,5,29,5,0,0),
-d(1966,10,2,4,0,0),
-d(1967,4,8,5,0,0),
-d(1967,9,10,4,0,0),
-d(1968,4,14,5,0,0),
-d(1968,9,8,4,0,0),
-d(1969,4,27,5,0,0),
-d(1969,10,26,4,0,0),
-d(1970,4,26,5,0,0),
-d(1970,10,25,4,0,0),
-d(1971,4,25,5,0,0),
-d(1971,10,31,4,0,0),
-d(1972,4,30,5,0,0),
-d(1972,10,8,4,0,0),
-d(1973,4,29,5,0,0),
-d(1973,10,8,4,0,0),
-d(1974,4,28,5,0,0),
-d(1974,10,8,4,0,0),
-d(1975,4,27,5,0,0),
-d(1975,10,26,4,0,0),
-d(1976,4,25,5,0,0),
-d(1976,10,31,4,0,0),
-d(1977,4,24,5,0,0),
-d(1977,10,30,4,0,0),
-d(1978,5,7,5,0,0),
-d(1978,10,8,4,0,0),
-d(1979,3,18,5,0,0),
-d(1979,10,14,4,0,0),
-d(1980,3,16,5,0,0),
-d(1980,10,12,4,0,0),
-d(1981,5,10,5,0,0),
-d(1981,10,11,4,0,0),
-d(1982,5,9,5,0,0),
-d(1982,10,10,4,0,0),
-d(1983,5,8,5,0,0),
-d(1983,10,9,4,0,0),
-d(1984,5,6,5,0,0),
-d(1984,10,14,4,0,0),
-d(1985,5,5,5,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,16,5,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,5,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,20,5,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,19,5,0,0),
-d(1989,10,8,4,0,0),
-d(1990,4,1,5,0,0),
-d(1990,10,14,4,0,0),
-d(1991,4,7,5,0,0),
-d(1991,10,13,5,0,0),
-d(1992,4,5,5,0,0),
-d(1992,10,11,5,0,0),
-d(1993,4,4,5,0,0),
-d(1993,10,10,5,0,0),
-d(1994,4,3,5,0,0),
-d(1994,10,9,5,0,0),
-d(1995,4,2,5,0,0),
-d(1995,10,8,5,0,0),
-d(1996,4,7,5,0,0),
-d(1996,10,6,5,0,0),
-d(1997,4,6,5,0,0),
-d(1997,10,12,5,0,0),
-d(1998,3,29,5,0,0),
-d(1998,10,25,5,0,0),
-d(1999,3,28,5,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,5,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,5,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,5,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,5,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,5,0,0),
-d(2006,10,29,5,0,0),
-d(2007,4,1,5,0,0),
-d(2007,10,28,5,0,0),
-d(2008,4,6,5,0,0),
-d(2008,10,26,5,0,0),
-d(2009,4,5,5,0,0),
-d(2009,10,25,5,0,0),
-d(2010,4,4,5,0,0),
-d(2010,10,31,5,0,0),
-d(2011,4,3,5,0,0),
-d(2011,10,30,5,0,0),
-d(2012,4,1,5,0,0),
-d(2012,10,28,5,0,0),
-d(2013,4,7,5,0,0),
-d(2013,10,27,5,0,0),
-d(2014,4,6,5,0,0),
-d(2014,10,26,5,0,0),
-d(2015,4,5,5,0,0),
-d(2015,10,25,5,0,0),
-d(2016,4,3,5,0,0),
-d(2016,10,30,5,0,0),
-d(2017,4,2,5,0,0),
-d(2017,10,29,5,0,0),
-d(2018,4,1,5,0,0),
-d(2018,10,28,5,0,0),
-d(2019,4,7,5,0,0),
-d(2019,10,27,5,0,0),
-d(2020,4,5,5,0,0),
-d(2020,10,25,5,0,0),
-d(2021,4,4,5,0,0),
-d(2021,10,31,5,0,0),
-d(2022,4,3,5,0,0),
-d(2022,10,30,5,0,0),
-d(2023,4,2,5,0,0),
-d(2023,10,29,5,0,0),
-d(2024,4,7,5,0,0),
-d(2024,10,27,5,0,0),
-d(2025,4,6,5,0,0),
-d(2025,10,26,5,0,0),
-d(2026,4,5,5,0,0),
-d(2026,10,25,5,0,0),
-d(2027,4,4,5,0,0),
-d(2027,10,31,5,0,0),
-d(2028,4,2,5,0,0),
-d(2028,10,29,5,0,0),
-d(2029,4,1,5,0,0),
-d(2029,10,28,5,0,0),
-d(2030,4,7,5,0,0),
-d(2030,10,27,5,0,0),
-d(2031,4,6,5,0,0),
-d(2031,10,26,5,0,0),
-d(2032,4,4,5,0,0),
-d(2032,10,31,5,0,0),
-d(2033,4,3,5,0,0),
-d(2033,10,30,5,0,0),
-d(2034,4,2,5,0,0),
-d(2034,10,29,5,0,0),
-d(2035,4,1,5,0,0),
-d(2035,10,28,5,0,0),
-d(2036,4,6,5,0,0),
-d(2036,10,26,5,0,0),
-d(2037,4,5,5,0,0),
-d(2037,10,25,5,0,0),
- ]
-
- _transition_info = [
-i(-19800,0,'HMT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
- ]
-
-Havana = Havana()
-
diff --git a/modules/pytz/zoneinfo/America/Hermosillo.py b/modules/pytz/zoneinfo/America/Hermosillo.py
deleted file mode 100644
index 926ea817..00000000
--- a/modules/pytz/zoneinfo/America/Hermosillo.py
+++ /dev/null
@@ -1,50 +0,0 @@
-'''tzinfo timezone information for America/Hermosillo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Hermosillo(DstTzInfo):
- '''America/Hermosillo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Hermosillo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,7,0,0),
-d(1927,6,11,6,0,0),
-d(1930,11,15,6,0,0),
-d(1931,5,2,6,0,0),
-d(1931,10,1,6,0,0),
-d(1932,4,1,7,0,0),
-d(1942,4,24,6,0,0),
-d(1949,1,14,7,0,0),
-d(1970,1,1,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-26640,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Hermosillo = Hermosillo()
-
diff --git a/modules/pytz/zoneinfo/America/Indiana/Indianapolis.py b/modules/pytz/zoneinfo/America/Indiana/Indianapolis.py
deleted file mode 100644
index 21369f1b..00000000
--- a/modules/pytz/zoneinfo/America/Indiana/Indianapolis.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''tzinfo timezone information for America/Indiana/Indianapolis.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Indianapolis(DstTzInfo):
- '''America/Indiana/Indianapolis timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Indiana/Indianapolis'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1941,6,22,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Indianapolis = Indianapolis()
-
diff --git a/modules/pytz/zoneinfo/America/Indiana/Knox.py b/modules/pytz/zoneinfo/America/Indiana/Knox.py
deleted file mode 100644
index 86af820b..00000000
--- a/modules/pytz/zoneinfo/America/Indiana/Knox.py
+++ /dev/null
@@ -1,326 +0,0 @@
-'''tzinfo timezone information for America/Indiana/Knox.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Knox(DstTzInfo):
- '''America/Indiana/Knox timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Indiana/Knox'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,10,30,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,9,28,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,10,29,7,0,0),
-d(1962,4,29,8,0,0),
-d(1963,10,27,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Knox = Knox()
-
diff --git a/modules/pytz/zoneinfo/America/Indiana/Marengo.py b/modules/pytz/zoneinfo/America/Indiana/Marengo.py
deleted file mode 100644
index 3eca6df0..00000000
--- a/modules/pytz/zoneinfo/America/Indiana/Marengo.py
+++ /dev/null
@@ -1,224 +0,0 @@
-'''tzinfo timezone information for America/Indiana/Marengo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Marengo(DstTzInfo):
- '''America/Indiana/Marengo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Indiana/Marengo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,9,25,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,9,30,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,9,28,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,9,27,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,9,25,7,0,0),
-d(1961,4,30,8,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-18000,0,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Marengo = Marengo()
-
diff --git a/modules/pytz/zoneinfo/America/Indiana/Vevay.py b/modules/pytz/zoneinfo/America/Indiana/Vevay.py
deleted file mode 100644
index 614e1de4..00000000
--- a/modules/pytz/zoneinfo/America/Indiana/Vevay.py
+++ /dev/null
@@ -1,180 +0,0 @@
-'''tzinfo timezone information for America/Indiana/Vevay.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vevay(DstTzInfo):
- '''America/Indiana/Vevay timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Indiana/Vevay'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1954,4,25,8,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Vevay = Vevay()
-
diff --git a/modules/pytz/zoneinfo/America/Indiana/__init__.py b/modules/pytz/zoneinfo/America/Indiana/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/America/Indianapolis.py b/modules/pytz/zoneinfo/America/Indianapolis.py
deleted file mode 100644
index 5cd52ede..00000000
--- a/modules/pytz/zoneinfo/America/Indianapolis.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''tzinfo timezone information for America/Indianapolis.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Indianapolis(DstTzInfo):
- '''America/Indianapolis timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Indianapolis'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1941,6,22,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Indianapolis = Indianapolis()
-
diff --git a/modules/pytz/zoneinfo/America/Inuvik.py b/modules/pytz/zoneinfo/America/Inuvik.py
deleted file mode 100644
index c91eb052..00000000
--- a/modules/pytz/zoneinfo/America/Inuvik.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for America/Inuvik.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Inuvik(DstTzInfo):
- '''America/Inuvik timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Inuvik'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,10,0,0),
-d(1918,10,27,9,0,0),
-d(1919,5,25,10,0,0),
-d(1919,11,1,7,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1965,4,25,8,0,0),
-d(1965,10,31,8,0,0),
-d(1979,4,29,10,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-21600,7200,'PDDT'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Inuvik = Inuvik()
-
diff --git a/modules/pytz/zoneinfo/America/Iqaluit.py b/modules/pytz/zoneinfo/America/Iqaluit.py
deleted file mode 100644
index 69597a4e..00000000
--- a/modules/pytz/zoneinfo/America/Iqaluit.py
+++ /dev/null
@@ -1,270 +0,0 @@
-'''tzinfo timezone information for America/Iqaluit.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Iqaluit(DstTzInfo):
- '''America/Iqaluit timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Iqaluit'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,7,0,0),
-d(1918,10,27,6,0,0),
-d(1919,5,25,7,0,0),
-d(1919,11,1,4,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1965,4,25,5,0,0),
-d(1965,10,31,5,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-10800,7200,'EDDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Iqaluit = Iqaluit()
-
diff --git a/modules/pytz/zoneinfo/America/Jamaica.py b/modules/pytz/zoneinfo/America/Jamaica.py
deleted file mode 100644
index e9a82f58..00000000
--- a/modules/pytz/zoneinfo/America/Jamaica.py
+++ /dev/null
@@ -1,62 +0,0 @@
-'''tzinfo timezone information for America/Jamaica.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jamaica(DstTzInfo):
- '''America/Jamaica timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Jamaica'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,1,5,7,12),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
- ]
-
- _transition_info = [
-i(-18420,0,'KMT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Jamaica = Jamaica()
-
diff --git a/modules/pytz/zoneinfo/America/Jujuy.py b/modules/pytz/zoneinfo/America/Jujuy.py
deleted file mode 100644
index 3a1025b7..00000000
--- a/modules/pytz/zoneinfo/America/Jujuy.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Jujuy.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jujuy(DstTzInfo):
- '''America/Jujuy timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Jujuy'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,28,4,0,0),
-d(1991,3,17,3,0,0),
-d(1991,10,6,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-10800,3600,'WARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Jujuy = Jujuy()
-
diff --git a/modules/pytz/zoneinfo/America/Juneau.py b/modules/pytz/zoneinfo/America/Juneau.py
deleted file mode 100644
index def09cc7..00000000
--- a/modules/pytz/zoneinfo/America/Juneau.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for America/Juneau.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Juneau(DstTzInfo):
- '''America/Juneau timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Juneau'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,1,6,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,2,23,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1983,11,30,9,0,0),
-d(1984,4,29,11,0,0),
-d(1984,10,28,10,0,0),
-d(1985,4,28,11,0,0),
-d(1985,10,27,10,0,0),
-d(1986,4,27,11,0,0),
-d(1986,10,26,10,0,0),
-d(1987,4,5,11,0,0),
-d(1987,10,25,10,0,0),
-d(1988,4,3,11,0,0),
-d(1988,10,30,10,0,0),
-d(1989,4,2,11,0,0),
-d(1989,10,29,10,0,0),
-d(1990,4,1,11,0,0),
-d(1990,10,28,10,0,0),
-d(1991,4,7,11,0,0),
-d(1991,10,27,10,0,0),
-d(1992,4,5,11,0,0),
-d(1992,10,25,10,0,0),
-d(1993,4,4,11,0,0),
-d(1993,10,31,10,0,0),
-d(1994,4,3,11,0,0),
-d(1994,10,30,10,0,0),
-d(1995,4,2,11,0,0),
-d(1995,10,29,10,0,0),
-d(1996,4,7,11,0,0),
-d(1996,10,27,10,0,0),
-d(1997,4,6,11,0,0),
-d(1997,10,26,10,0,0),
-d(1998,4,5,11,0,0),
-d(1998,10,25,10,0,0),
-d(1999,4,4,11,0,0),
-d(1999,10,31,10,0,0),
-d(2000,4,2,11,0,0),
-d(2000,10,29,10,0,0),
-d(2001,4,1,11,0,0),
-d(2001,10,28,10,0,0),
-d(2002,4,7,11,0,0),
-d(2002,10,27,10,0,0),
-d(2003,4,6,11,0,0),
-d(2003,10,26,10,0,0),
-d(2004,4,4,11,0,0),
-d(2004,10,31,10,0,0),
-d(2005,4,3,11,0,0),
-d(2005,10,30,10,0,0),
-d(2006,4,2,11,0,0),
-d(2006,10,29,10,0,0),
-d(2007,3,11,11,0,0),
-d(2007,11,4,10,0,0),
-d(2008,3,9,11,0,0),
-d(2008,11,2,10,0,0),
-d(2009,3,8,11,0,0),
-d(2009,11,1,10,0,0),
-d(2010,3,14,11,0,0),
-d(2010,11,7,10,0,0),
-d(2011,3,13,11,0,0),
-d(2011,11,6,10,0,0),
-d(2012,3,11,11,0,0),
-d(2012,11,4,10,0,0),
-d(2013,3,10,11,0,0),
-d(2013,11,3,10,0,0),
-d(2014,3,9,11,0,0),
-d(2014,11,2,10,0,0),
-d(2015,3,8,11,0,0),
-d(2015,11,1,10,0,0),
-d(2016,3,13,11,0,0),
-d(2016,11,6,10,0,0),
-d(2017,3,12,11,0,0),
-d(2017,11,5,10,0,0),
-d(2018,3,11,11,0,0),
-d(2018,11,4,10,0,0),
-d(2019,3,10,11,0,0),
-d(2019,11,3,10,0,0),
-d(2020,3,8,11,0,0),
-d(2020,11,1,10,0,0),
-d(2021,3,14,11,0,0),
-d(2021,11,7,10,0,0),
-d(2022,3,13,11,0,0),
-d(2022,11,6,10,0,0),
-d(2023,3,12,11,0,0),
-d(2023,11,5,10,0,0),
-d(2024,3,10,11,0,0),
-d(2024,11,3,10,0,0),
-d(2025,3,9,11,0,0),
-d(2025,11,2,10,0,0),
-d(2026,3,8,11,0,0),
-d(2026,11,1,10,0,0),
-d(2027,3,14,11,0,0),
-d(2027,11,7,10,0,0),
-d(2028,3,12,11,0,0),
-d(2028,11,5,10,0,0),
-d(2029,3,11,11,0,0),
-d(2029,11,4,10,0,0),
-d(2030,3,10,11,0,0),
-d(2030,11,3,10,0,0),
-d(2031,3,9,11,0,0),
-d(2031,11,2,10,0,0),
-d(2032,3,14,11,0,0),
-d(2032,11,7,10,0,0),
-d(2033,3,13,11,0,0),
-d(2033,11,6,10,0,0),
-d(2034,3,12,11,0,0),
-d(2034,11,5,10,0,0),
-d(2035,3,11,11,0,0),
-d(2035,11,4,10,0,0),
-d(2036,3,9,11,0,0),
-d(2036,11,2,10,0,0),
-d(2037,3,8,11,0,0),
-d(2037,11,1,10,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-32400,0,'YST'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
- ]
-
-Juneau = Juneau()
-
diff --git a/modules/pytz/zoneinfo/America/Kentucky/Louisville.py b/modules/pytz/zoneinfo/America/Kentucky/Louisville.py
deleted file mode 100644
index 501f4566..00000000
--- a/modules/pytz/zoneinfo/America/Kentucky/Louisville.py
+++ /dev/null
@@ -1,374 +0,0 @@
-'''tzinfo timezone information for America/Kentucky/Louisville.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Louisville(DstTzInfo):
- '''America/Kentucky/Louisville timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Kentucky/Louisville'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1921,5,1,8,0,0),
-d(1921,9,1,7,0,0),
-d(1941,4,27,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,1,1,6,0,0),
-d(1946,6,2,7,0,0),
-d(1947,4,27,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,9,25,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,10,27,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,10,26,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,7,23,7,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-18000,0,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Louisville = Louisville()
-
diff --git a/modules/pytz/zoneinfo/America/Kentucky/Monticello.py b/modules/pytz/zoneinfo/America/Kentucky/Monticello.py
deleted file mode 100644
index a74d82b9..00000000
--- a/modules/pytz/zoneinfo/America/Kentucky/Monticello.py
+++ /dev/null
@@ -1,314 +0,0 @@
-'''tzinfo timezone information for America/Kentucky/Monticello.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Monticello(DstTzInfo):
- '''America/Kentucky/Monticello timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Kentucky/Monticello'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Monticello = Monticello()
-
diff --git a/modules/pytz/zoneinfo/America/Kentucky/__init__.py b/modules/pytz/zoneinfo/America/Kentucky/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/America/Knox_IN.py b/modules/pytz/zoneinfo/America/Knox_IN.py
deleted file mode 100644
index 4463c54a..00000000
--- a/modules/pytz/zoneinfo/America/Knox_IN.py
+++ /dev/null
@@ -1,326 +0,0 @@
-'''tzinfo timezone information for America/Knox_IN.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Knox_IN(DstTzInfo):
- '''America/Knox_IN timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Knox_IN'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,10,30,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,9,28,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,10,29,7,0,0),
-d(1962,4,29,8,0,0),
-d(1963,10,27,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Knox_IN = Knox_IN()
-
diff --git a/modules/pytz/zoneinfo/America/La_Paz.py b/modules/pytz/zoneinfo/America/La_Paz.py
deleted file mode 100644
index bca04b08..00000000
--- a/modules/pytz/zoneinfo/America/La_Paz.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/La_Paz.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class La_Paz(DstTzInfo):
- '''America/La_Paz timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/La_Paz'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1931,10,15,4,32,36),
-d(1932,3,21,3,32,36),
- ]
-
- _transition_info = [
-i(-16380,0,'CMT'),
-i(-12780,3600,'BOST'),
-i(-14400,0,'BOT'),
- ]
-
-La_Paz = La_Paz()
-
diff --git a/modules/pytz/zoneinfo/America/Lima.py b/modules/pytz/zoneinfo/America/Lima.py
deleted file mode 100644
index 657d87a5..00000000
--- a/modules/pytz/zoneinfo/America/Lima.py
+++ /dev/null
@@ -1,50 +0,0 @@
-'''tzinfo timezone information for America/Lima.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Lima(DstTzInfo):
- '''America/Lima timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Lima'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1908,7,28,5,8,36),
-d(1938,1,1,5,0,0),
-d(1938,4,1,4,0,0),
-d(1938,9,25,5,0,0),
-d(1939,3,26,4,0,0),
-d(1939,9,24,5,0,0),
-d(1940,3,24,4,0,0),
-d(1986,1,1,5,0,0),
-d(1986,4,1,4,0,0),
-d(1987,1,1,5,0,0),
-d(1987,4,1,4,0,0),
-d(1990,1,1,5,0,0),
-d(1990,4,1,4,0,0),
-d(1994,1,1,5,0,0),
-d(1994,4,1,4,0,0),
- ]
-
- _transition_info = [
-i(-18540,0,'LMT'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
-i(-14400,3600,'PEST'),
-i(-18000,0,'PET'),
- ]
-
-Lima = Lima()
-
diff --git a/modules/pytz/zoneinfo/America/Los_Angeles.py b/modules/pytz/zoneinfo/America/Los_Angeles.py
deleted file mode 100644
index 5add3d1a..00000000
--- a/modules/pytz/zoneinfo/America/Los_Angeles.py
+++ /dev/null
@@ -1,390 +0,0 @@
-'''tzinfo timezone information for America/Los_Angeles.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Los_Angeles(DstTzInfo):
- '''America/Los_Angeles timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Los_Angeles'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,10,0,0),
-d(1918,10,27,9,0,0),
-d(1919,3,30,10,0,0),
-d(1919,10,26,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1948,3,14,10,0,0),
-d(1949,1,1,9,0,0),
-d(1950,4,30,10,0,0),
-d(1950,9,24,9,0,0),
-d(1951,4,29,10,0,0),
-d(1951,9,30,9,0,0),
-d(1952,4,27,10,0,0),
-d(1952,9,28,9,0,0),
-d(1953,4,26,10,0,0),
-d(1953,9,27,9,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1961,4,30,10,0,0),
-d(1961,9,24,9,0,0),
-d(1962,4,29,10,0,0),
-d(1962,10,28,9,0,0),
-d(1963,4,28,10,0,0),
-d(1963,10,27,9,0,0),
-d(1964,4,26,10,0,0),
-d(1964,10,25,9,0,0),
-d(1965,4,25,10,0,0),
-d(1965,10,31,9,0,0),
-d(1966,4,24,10,0,0),
-d(1966,10,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,1,6,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,2,23,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,3,11,10,0,0),
-d(2007,11,4,9,0,0),
-d(2008,3,9,10,0,0),
-d(2008,11,2,9,0,0),
-d(2009,3,8,10,0,0),
-d(2009,11,1,9,0,0),
-d(2010,3,14,10,0,0),
-d(2010,11,7,9,0,0),
-d(2011,3,13,10,0,0),
-d(2011,11,6,9,0,0),
-d(2012,3,11,10,0,0),
-d(2012,11,4,9,0,0),
-d(2013,3,10,10,0,0),
-d(2013,11,3,9,0,0),
-d(2014,3,9,10,0,0),
-d(2014,11,2,9,0,0),
-d(2015,3,8,10,0,0),
-d(2015,11,1,9,0,0),
-d(2016,3,13,10,0,0),
-d(2016,11,6,9,0,0),
-d(2017,3,12,10,0,0),
-d(2017,11,5,9,0,0),
-d(2018,3,11,10,0,0),
-d(2018,11,4,9,0,0),
-d(2019,3,10,10,0,0),
-d(2019,11,3,9,0,0),
-d(2020,3,8,10,0,0),
-d(2020,11,1,9,0,0),
-d(2021,3,14,10,0,0),
-d(2021,11,7,9,0,0),
-d(2022,3,13,10,0,0),
-d(2022,11,6,9,0,0),
-d(2023,3,12,10,0,0),
-d(2023,11,5,9,0,0),
-d(2024,3,10,10,0,0),
-d(2024,11,3,9,0,0),
-d(2025,3,9,10,0,0),
-d(2025,11,2,9,0,0),
-d(2026,3,8,10,0,0),
-d(2026,11,1,9,0,0),
-d(2027,3,14,10,0,0),
-d(2027,11,7,9,0,0),
-d(2028,3,12,10,0,0),
-d(2028,11,5,9,0,0),
-d(2029,3,11,10,0,0),
-d(2029,11,4,9,0,0),
-d(2030,3,10,10,0,0),
-d(2030,11,3,9,0,0),
-d(2031,3,9,10,0,0),
-d(2031,11,2,9,0,0),
-d(2032,3,14,10,0,0),
-d(2032,11,7,9,0,0),
-d(2033,3,13,10,0,0),
-d(2033,11,6,9,0,0),
-d(2034,3,12,10,0,0),
-d(2034,11,5,9,0,0),
-d(2035,3,11,10,0,0),
-d(2035,11,4,9,0,0),
-d(2036,3,9,10,0,0),
-d(2036,11,2,9,0,0),
-d(2037,3,8,10,0,0),
-d(2037,11,1,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Los_Angeles = Los_Angeles()
-
diff --git a/modules/pytz/zoneinfo/America/Louisville.py b/modules/pytz/zoneinfo/America/Louisville.py
deleted file mode 100644
index 1c0e3ccf..00000000
--- a/modules/pytz/zoneinfo/America/Louisville.py
+++ /dev/null
@@ -1,374 +0,0 @@
-'''tzinfo timezone information for America/Louisville.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Louisville(DstTzInfo):
- '''America/Louisville timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Louisville'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1921,5,1,8,0,0),
-d(1921,9,1,7,0,0),
-d(1941,4,27,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,1,1,6,0,0),
-d(1946,6,2,7,0,0),
-d(1947,4,27,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,9,25,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,10,27,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,10,26,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,7,23,7,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-18000,0,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Louisville = Louisville()
-
diff --git a/modules/pytz/zoneinfo/America/Maceio.py b/modules/pytz/zoneinfo/America/Maceio.py
deleted file mode 100644
index d4ac830c..00000000
--- a/modules/pytz/zoneinfo/America/Maceio.py
+++ /dev/null
@@ -1,102 +0,0 @@
-'''tzinfo timezone information for America/Maceio.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Maceio(DstTzInfo):
- '''America/Maceio timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Maceio'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,2,22,52),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,12,9,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1995,10,15,3,0,0),
-d(1996,2,11,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2000,10,22,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
- ]
-
- _transition_info = [
-i(-8580,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
- ]
-
-Maceio = Maceio()
-
diff --git a/modules/pytz/zoneinfo/America/Managua.py b/modules/pytz/zoneinfo/America/Managua.py
deleted file mode 100644
index 3d6d01b0..00000000
--- a/modules/pytz/zoneinfo/America/Managua.py
+++ /dev/null
@@ -1,46 +0,0 @@
-'''tzinfo timezone information for America/Managua.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Managua(DstTzInfo):
- '''America/Managua timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Managua'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1934,6,23,5,45,12),
-d(1973,5,1,6,0,0),
-d(1975,2,16,5,0,0),
-d(1979,3,18,6,0,0),
-d(1979,6,25,5,0,0),
-d(1980,3,16,6,0,0),
-d(1980,6,23,5,0,0),
-d(1992,1,1,10,0,0),
-d(1992,9,24,5,0,0),
-d(1993,1,1,10,0,0),
-d(1998,12,1,5,0,0),
-d(2005,4,10,6,0,0),
-d(2005,10,2,5,0,0),
- ]
-
- _transition_info = [
-i(-20700,0,'MMT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Managua = Managua()
-
diff --git a/modules/pytz/zoneinfo/America/Manaus.py b/modules/pytz/zoneinfo/America/Manaus.py
deleted file mode 100644
index b190af1b..00000000
--- a/modules/pytz/zoneinfo/America/Manaus.py
+++ /dev/null
@@ -1,82 +0,0 @@
-'''tzinfo timezone information for America/Manaus.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Manaus(DstTzInfo):
- '''America/Manaus timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Manaus'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,0,4),
-d(1931,10,3,15,0,0),
-d(1932,4,1,3,0,0),
-d(1932,10,3,4,0,0),
-d(1933,4,1,3,0,0),
-d(1949,12,1,4,0,0),
-d(1950,4,16,4,0,0),
-d(1950,12,1,4,0,0),
-d(1951,4,1,3,0,0),
-d(1951,12,1,4,0,0),
-d(1952,4,1,3,0,0),
-d(1952,12,1,4,0,0),
-d(1953,3,1,3,0,0),
-d(1963,12,9,4,0,0),
-d(1964,3,1,3,0,0),
-d(1965,1,31,4,0,0),
-d(1965,3,31,3,0,0),
-d(1965,12,1,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,11,1,4,0,0),
-d(1967,3,1,3,0,0),
-d(1967,11,1,4,0,0),
-d(1968,3,1,3,0,0),
-d(1985,11,2,4,0,0),
-d(1986,3,15,3,0,0),
-d(1986,10,25,4,0,0),
-d(1987,2,14,3,0,0),
-d(1987,10,25,4,0,0),
-d(1988,2,7,3,0,0),
-d(1993,10,17,4,0,0),
-d(1994,2,20,3,0,0),
- ]
-
- _transition_info = [
-i(-14400,0,'LMT'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
- ]
-
-Manaus = Manaus()
-
diff --git a/modules/pytz/zoneinfo/America/Martinique.py b/modules/pytz/zoneinfo/America/Martinique.py
deleted file mode 100644
index 7154b4f2..00000000
--- a/modules/pytz/zoneinfo/America/Martinique.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for America/Martinique.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Martinique(DstTzInfo):
- '''America/Martinique timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Martinique'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,1,4,4,20),
-d(1980,4,6,4,0,0),
-d(1980,9,28,3,0,0),
- ]
-
- _transition_info = [
-i(-14640,0,'FFMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Martinique = Martinique()
-
diff --git a/modules/pytz/zoneinfo/America/Mazatlan.py b/modules/pytz/zoneinfo/America/Mazatlan.py
deleted file mode 100644
index 30490aa4..00000000
--- a/modules/pytz/zoneinfo/America/Mazatlan.py
+++ /dev/null
@@ -1,206 +0,0 @@
-'''tzinfo timezone information for America/Mazatlan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mazatlan(DstTzInfo):
- '''America/Mazatlan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Mazatlan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,7,0,0),
-d(1927,6,11,6,0,0),
-d(1930,11,15,6,0,0),
-d(1931,5,2,6,0,0),
-d(1931,10,1,6,0,0),
-d(1932,4,1,7,0,0),
-d(1942,4,24,6,0,0),
-d(1949,1,14,7,0,0),
-d(1970,1,1,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,5,6,9,0,0),
-d(2001,9,30,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-25560,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Mazatlan = Mazatlan()
-
diff --git a/modules/pytz/zoneinfo/America/Mendoza.py b/modules/pytz/zoneinfo/America/Mendoza.py
deleted file mode 100644
index 2c00395a..00000000
--- a/modules/pytz/zoneinfo/America/Mendoza.py
+++ /dev/null
@@ -1,136 +0,0 @@
-'''tzinfo timezone information for America/Mendoza.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mendoza(DstTzInfo):
- '''America/Mendoza timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Mendoza'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,15,4,0,0),
-d(1991,3,1,3,0,0),
-d(1991,10,15,4,0,0),
-d(1992,3,1,3,0,0),
-d(1992,10,18,4,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
-d(2004,5,23,3,0,0),
-d(2004,9,26,4,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-10800,3600,'WARST'),
-i(-14400,0,'WART'),
-i(-10800,3600,'WARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'WART'),
-i(-10800,0,'ART'),
- ]
-
-Mendoza = Mendoza()
-
diff --git a/modules/pytz/zoneinfo/America/Menominee.py b/modules/pytz/zoneinfo/America/Menominee.py
deleted file mode 100644
index 63a65310..00000000
--- a/modules/pytz/zoneinfo/America/Menominee.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for America/Menominee.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Menominee(DstTzInfo):
- '''America/Menominee timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Menominee'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1966,4,24,8,0,0),
-d(1966,10,30,7,0,0),
-d(1969,4,27,8,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-18000,0,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Menominee = Menominee()
-
diff --git a/modules/pytz/zoneinfo/America/Merida.py b/modules/pytz/zoneinfo/America/Merida.py
deleted file mode 100644
index e50f96ea..00000000
--- a/modules/pytz/zoneinfo/America/Merida.py
+++ /dev/null
@@ -1,194 +0,0 @@
-'''tzinfo timezone information for America/Merida.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Merida(DstTzInfo):
- '''America/Merida timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Merida'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,6,0,0),
-d(1981,12,23,6,0,0),
-d(1982,12,2,5,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,5,6,8,0,0),
-d(2001,9,30,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,4,1,8,0,0),
-d(2007,10,28,7,0,0),
-d(2008,4,6,8,0,0),
-d(2008,10,26,7,0,0),
-d(2009,4,5,8,0,0),
-d(2009,10,25,7,0,0),
-d(2010,4,4,8,0,0),
-d(2010,10,31,7,0,0),
-d(2011,4,3,8,0,0),
-d(2011,10,30,7,0,0),
-d(2012,4,1,8,0,0),
-d(2012,10,28,7,0,0),
-d(2013,4,7,8,0,0),
-d(2013,10,27,7,0,0),
-d(2014,4,6,8,0,0),
-d(2014,10,26,7,0,0),
-d(2015,4,5,8,0,0),
-d(2015,10,25,7,0,0),
-d(2016,4,3,8,0,0),
-d(2016,10,30,7,0,0),
-d(2017,4,2,8,0,0),
-d(2017,10,29,7,0,0),
-d(2018,4,1,8,0,0),
-d(2018,10,28,7,0,0),
-d(2019,4,7,8,0,0),
-d(2019,10,27,7,0,0),
-d(2020,4,5,8,0,0),
-d(2020,10,25,7,0,0),
-d(2021,4,4,8,0,0),
-d(2021,10,31,7,0,0),
-d(2022,4,3,8,0,0),
-d(2022,10,30,7,0,0),
-d(2023,4,2,8,0,0),
-d(2023,10,29,7,0,0),
-d(2024,4,7,8,0,0),
-d(2024,10,27,7,0,0),
-d(2025,4,6,8,0,0),
-d(2025,10,26,7,0,0),
-d(2026,4,5,8,0,0),
-d(2026,10,25,7,0,0),
-d(2027,4,4,8,0,0),
-d(2027,10,31,7,0,0),
-d(2028,4,2,8,0,0),
-d(2028,10,29,7,0,0),
-d(2029,4,1,8,0,0),
-d(2029,10,28,7,0,0),
-d(2030,4,7,8,0,0),
-d(2030,10,27,7,0,0),
-d(2031,4,6,8,0,0),
-d(2031,10,26,7,0,0),
-d(2032,4,4,8,0,0),
-d(2032,10,31,7,0,0),
-d(2033,4,3,8,0,0),
-d(2033,10,30,7,0,0),
-d(2034,4,2,8,0,0),
-d(2034,10,29,7,0,0),
-d(2035,4,1,8,0,0),
-d(2035,10,28,7,0,0),
-d(2036,4,6,8,0,0),
-d(2036,10,26,7,0,0),
-d(2037,4,5,8,0,0),
-d(2037,10,25,7,0,0),
- ]
-
- _transition_info = [
-i(-21480,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Merida = Merida()
-
diff --git a/modules/pytz/zoneinfo/America/Mexico_City.py b/modules/pytz/zoneinfo/America/Mexico_City.py
deleted file mode 100644
index e9b6ed0b..00000000
--- a/modules/pytz/zoneinfo/America/Mexico_City.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''tzinfo timezone information for America/Mexico_City.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mexico_City(DstTzInfo):
- '''America/Mexico_City timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Mexico_City'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,7,0,0),
-d(1927,6,11,6,0,0),
-d(1930,11,15,6,0,0),
-d(1931,5,2,6,0,0),
-d(1931,10,1,6,0,0),
-d(1932,4,1,7,0,0),
-d(1939,2,5,6,0,0),
-d(1939,6,25,5,0,0),
-d(1940,12,9,6,0,0),
-d(1941,4,1,5,0,0),
-d(1943,12,16,6,0,0),
-d(1944,5,1,5,0,0),
-d(1950,2,12,6,0,0),
-d(1950,7,30,5,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,5,6,8,0,0),
-d(2001,9,30,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,4,1,8,0,0),
-d(2007,10,28,7,0,0),
-d(2008,4,6,8,0,0),
-d(2008,10,26,7,0,0),
-d(2009,4,5,8,0,0),
-d(2009,10,25,7,0,0),
-d(2010,4,4,8,0,0),
-d(2010,10,31,7,0,0),
-d(2011,4,3,8,0,0),
-d(2011,10,30,7,0,0),
-d(2012,4,1,8,0,0),
-d(2012,10,28,7,0,0),
-d(2013,4,7,8,0,0),
-d(2013,10,27,7,0,0),
-d(2014,4,6,8,0,0),
-d(2014,10,26,7,0,0),
-d(2015,4,5,8,0,0),
-d(2015,10,25,7,0,0),
-d(2016,4,3,8,0,0),
-d(2016,10,30,7,0,0),
-d(2017,4,2,8,0,0),
-d(2017,10,29,7,0,0),
-d(2018,4,1,8,0,0),
-d(2018,10,28,7,0,0),
-d(2019,4,7,8,0,0),
-d(2019,10,27,7,0,0),
-d(2020,4,5,8,0,0),
-d(2020,10,25,7,0,0),
-d(2021,4,4,8,0,0),
-d(2021,10,31,7,0,0),
-d(2022,4,3,8,0,0),
-d(2022,10,30,7,0,0),
-d(2023,4,2,8,0,0),
-d(2023,10,29,7,0,0),
-d(2024,4,7,8,0,0),
-d(2024,10,27,7,0,0),
-d(2025,4,6,8,0,0),
-d(2025,10,26,7,0,0),
-d(2026,4,5,8,0,0),
-d(2026,10,25,7,0,0),
-d(2027,4,4,8,0,0),
-d(2027,10,31,7,0,0),
-d(2028,4,2,8,0,0),
-d(2028,10,29,7,0,0),
-d(2029,4,1,8,0,0),
-d(2029,10,28,7,0,0),
-d(2030,4,7,8,0,0),
-d(2030,10,27,7,0,0),
-d(2031,4,6,8,0,0),
-d(2031,10,26,7,0,0),
-d(2032,4,4,8,0,0),
-d(2032,10,31,7,0,0),
-d(2033,4,3,8,0,0),
-d(2033,10,30,7,0,0),
-d(2034,4,2,8,0,0),
-d(2034,10,29,7,0,0),
-d(2035,4,1,8,0,0),
-d(2035,10,28,7,0,0),
-d(2036,4,6,8,0,0),
-d(2036,10,26,7,0,0),
-d(2037,4,5,8,0,0),
-d(2037,10,25,7,0,0),
- ]
-
- _transition_info = [
-i(-23820,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Mexico_City = Mexico_City()
-
diff --git a/modules/pytz/zoneinfo/America/Miquelon.py b/modules/pytz/zoneinfo/America/Miquelon.py
deleted file mode 100644
index f4dedbfc..00000000
--- a/modules/pytz/zoneinfo/America/Miquelon.py
+++ /dev/null
@@ -1,228 +0,0 @@
-'''tzinfo timezone information for America/Miquelon.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Miquelon(DstTzInfo):
- '''America/Miquelon timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Miquelon'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,15,3,44,40),
-d(1980,5,1,4,0,0),
-d(1987,4,5,5,0,0),
-d(1987,10,25,4,0,0),
-d(1988,4,3,5,0,0),
-d(1988,10,30,4,0,0),
-d(1989,4,2,5,0,0),
-d(1989,10,29,4,0,0),
-d(1990,4,1,5,0,0),
-d(1990,10,28,4,0,0),
-d(1991,4,7,5,0,0),
-d(1991,10,27,4,0,0),
-d(1992,4,5,5,0,0),
-d(1992,10,25,4,0,0),
-d(1993,4,4,5,0,0),
-d(1993,10,31,4,0,0),
-d(1994,4,3,5,0,0),
-d(1994,10,30,4,0,0),
-d(1995,4,2,5,0,0),
-d(1995,10,29,4,0,0),
-d(1996,4,7,5,0,0),
-d(1996,10,27,4,0,0),
-d(1997,4,6,5,0,0),
-d(1997,10,26,4,0,0),
-d(1998,4,5,5,0,0),
-d(1998,10,25,4,0,0),
-d(1999,4,4,5,0,0),
-d(1999,10,31,4,0,0),
-d(2000,4,2,5,0,0),
-d(2000,10,29,4,0,0),
-d(2001,4,1,5,0,0),
-d(2001,10,28,4,0,0),
-d(2002,4,7,5,0,0),
-d(2002,10,27,4,0,0),
-d(2003,4,6,5,0,0),
-d(2003,10,26,4,0,0),
-d(2004,4,4,5,0,0),
-d(2004,10,31,4,0,0),
-d(2005,4,3,5,0,0),
-d(2005,10,30,4,0,0),
-d(2006,4,2,5,0,0),
-d(2006,10,29,4,0,0),
-d(2007,3,11,5,0,0),
-d(2007,11,4,4,0,0),
-d(2008,3,9,5,0,0),
-d(2008,11,2,4,0,0),
-d(2009,3,8,5,0,0),
-d(2009,11,1,4,0,0),
-d(2010,3,14,5,0,0),
-d(2010,11,7,4,0,0),
-d(2011,3,13,5,0,0),
-d(2011,11,6,4,0,0),
-d(2012,3,11,5,0,0),
-d(2012,11,4,4,0,0),
-d(2013,3,10,5,0,0),
-d(2013,11,3,4,0,0),
-d(2014,3,9,5,0,0),
-d(2014,11,2,4,0,0),
-d(2015,3,8,5,0,0),
-d(2015,11,1,4,0,0),
-d(2016,3,13,5,0,0),
-d(2016,11,6,4,0,0),
-d(2017,3,12,5,0,0),
-d(2017,11,5,4,0,0),
-d(2018,3,11,5,0,0),
-d(2018,11,4,4,0,0),
-d(2019,3,10,5,0,0),
-d(2019,11,3,4,0,0),
-d(2020,3,8,5,0,0),
-d(2020,11,1,4,0,0),
-d(2021,3,14,5,0,0),
-d(2021,11,7,4,0,0),
-d(2022,3,13,5,0,0),
-d(2022,11,6,4,0,0),
-d(2023,3,12,5,0,0),
-d(2023,11,5,4,0,0),
-d(2024,3,10,5,0,0),
-d(2024,11,3,4,0,0),
-d(2025,3,9,5,0,0),
-d(2025,11,2,4,0,0),
-d(2026,3,8,5,0,0),
-d(2026,11,1,4,0,0),
-d(2027,3,14,5,0,0),
-d(2027,11,7,4,0,0),
-d(2028,3,12,5,0,0),
-d(2028,11,5,4,0,0),
-d(2029,3,11,5,0,0),
-d(2029,11,4,4,0,0),
-d(2030,3,10,5,0,0),
-d(2030,11,3,4,0,0),
-d(2031,3,9,5,0,0),
-d(2031,11,2,4,0,0),
-d(2032,3,14,5,0,0),
-d(2032,11,7,4,0,0),
-d(2033,3,13,5,0,0),
-d(2033,11,6,4,0,0),
-d(2034,3,12,5,0,0),
-d(2034,11,5,4,0,0),
-d(2035,3,11,5,0,0),
-d(2035,11,4,4,0,0),
-d(2036,3,9,5,0,0),
-d(2036,11,2,4,0,0),
-d(2037,3,8,5,0,0),
-d(2037,11,1,4,0,0),
- ]
-
- _transition_info = [
-i(-13500,0,'LMT'),
-i(-14400,0,'AST'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
-i(-7200,3600,'PMDT'),
-i(-10800,0,'PMST'),
- ]
-
-Miquelon = Miquelon()
-
diff --git a/modules/pytz/zoneinfo/America/Monterrey.py b/modules/pytz/zoneinfo/America/Monterrey.py
deleted file mode 100644
index 32b924a7..00000000
--- a/modules/pytz/zoneinfo/America/Monterrey.py
+++ /dev/null
@@ -1,194 +0,0 @@
-'''tzinfo timezone information for America/Monterrey.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Monterrey(DstTzInfo):
- '''America/Monterrey timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Monterrey'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,6,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,5,6,8,0,0),
-d(2001,9,30,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,4,1,8,0,0),
-d(2007,10,28,7,0,0),
-d(2008,4,6,8,0,0),
-d(2008,10,26,7,0,0),
-d(2009,4,5,8,0,0),
-d(2009,10,25,7,0,0),
-d(2010,4,4,8,0,0),
-d(2010,10,31,7,0,0),
-d(2011,4,3,8,0,0),
-d(2011,10,30,7,0,0),
-d(2012,4,1,8,0,0),
-d(2012,10,28,7,0,0),
-d(2013,4,7,8,0,0),
-d(2013,10,27,7,0,0),
-d(2014,4,6,8,0,0),
-d(2014,10,26,7,0,0),
-d(2015,4,5,8,0,0),
-d(2015,10,25,7,0,0),
-d(2016,4,3,8,0,0),
-d(2016,10,30,7,0,0),
-d(2017,4,2,8,0,0),
-d(2017,10,29,7,0,0),
-d(2018,4,1,8,0,0),
-d(2018,10,28,7,0,0),
-d(2019,4,7,8,0,0),
-d(2019,10,27,7,0,0),
-d(2020,4,5,8,0,0),
-d(2020,10,25,7,0,0),
-d(2021,4,4,8,0,0),
-d(2021,10,31,7,0,0),
-d(2022,4,3,8,0,0),
-d(2022,10,30,7,0,0),
-d(2023,4,2,8,0,0),
-d(2023,10,29,7,0,0),
-d(2024,4,7,8,0,0),
-d(2024,10,27,7,0,0),
-d(2025,4,6,8,0,0),
-d(2025,10,26,7,0,0),
-d(2026,4,5,8,0,0),
-d(2026,10,25,7,0,0),
-d(2027,4,4,8,0,0),
-d(2027,10,31,7,0,0),
-d(2028,4,2,8,0,0),
-d(2028,10,29,7,0,0),
-d(2029,4,1,8,0,0),
-d(2029,10,28,7,0,0),
-d(2030,4,7,8,0,0),
-d(2030,10,27,7,0,0),
-d(2031,4,6,8,0,0),
-d(2031,10,26,7,0,0),
-d(2032,4,4,8,0,0),
-d(2032,10,31,7,0,0),
-d(2033,4,3,8,0,0),
-d(2033,10,30,7,0,0),
-d(2034,4,2,8,0,0),
-d(2034,10,29,7,0,0),
-d(2035,4,1,8,0,0),
-d(2035,10,28,7,0,0),
-d(2036,4,6,8,0,0),
-d(2036,10,26,7,0,0),
-d(2037,4,5,8,0,0),
-d(2037,10,25,7,0,0),
- ]
-
- _transition_info = [
-i(-24060,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Monterrey = Monterrey()
-
diff --git a/modules/pytz/zoneinfo/America/Montevideo.py b/modules/pytz/zoneinfo/America/Montevideo.py
deleted file mode 100644
index abe4f61a..00000000
--- a/modules/pytz/zoneinfo/America/Montevideo.py
+++ /dev/null
@@ -1,154 +0,0 @@
-'''tzinfo timezone information for America/Montevideo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Montevideo(DstTzInfo):
- '''America/Montevideo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Montevideo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,3,44,44),
-d(1923,10,2,3,30,0),
-d(1924,4,1,3,0,0),
-d(1924,10,1,3,30,0),
-d(1925,4,1,3,0,0),
-d(1925,10,1,3,30,0),
-d(1926,4,1,3,0,0),
-d(1933,10,29,3,30,0),
-d(1934,4,1,3,0,0),
-d(1934,10,28,3,30,0),
-d(1935,3,31,3,0,0),
-d(1935,10,27,3,30,0),
-d(1936,3,29,3,0,0),
-d(1936,11,1,3,30,0),
-d(1937,3,28,3,0,0),
-d(1937,10,31,3,30,0),
-d(1938,3,27,3,0,0),
-d(1938,10,30,3,30,0),
-d(1939,3,26,3,0,0),
-d(1939,10,29,3,30,0),
-d(1940,3,31,3,0,0),
-d(1940,10,27,3,30,0),
-d(1941,3,30,3,0,0),
-d(1942,1,1,3,30,0),
-d(1942,12,14,3,0,0),
-d(1943,3,14,2,0,0),
-d(1959,5,24,3,0,0),
-d(1959,11,15,2,0,0),
-d(1960,1,17,3,0,0),
-d(1960,3,6,2,0,0),
-d(1965,4,4,3,0,0),
-d(1965,9,26,2,0,0),
-d(1966,4,3,3,0,0),
-d(1966,10,31,2,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,31,2,0,0),
-d(1968,5,27,3,0,0),
-d(1968,12,2,2,30,0),
-d(1969,5,27,3,0,0),
-d(1969,12,2,2,30,0),
-d(1970,5,27,3,0,0),
-d(1970,12,2,2,30,0),
-d(1972,4,24,3,0,0),
-d(1972,8,15,2,0,0),
-d(1974,3,10,3,0,0),
-d(1974,12,22,2,30,0),
-d(1976,10,1,2,0,0),
-d(1977,12,4,3,0,0),
-d(1978,4,1,2,0,0),
-d(1979,10,1,3,0,0),
-d(1980,5,1,2,0,0),
-d(1987,12,14,3,0,0),
-d(1988,3,14,2,0,0),
-d(1988,12,11,3,0,0),
-d(1989,3,12,2,0,0),
-d(1989,10,29,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,27,3,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,2,28,2,0,0),
-d(2004,9,19,3,0,0),
-d(2005,3,27,4,0,0),
-d(2005,10,9,5,0,0),
-d(2006,3,12,4,0,0),
- ]
-
- _transition_info = [
-i(-13500,0,'MMT'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-12600,0,'UYT'),
-i(-10800,1800,'UYHST'),
-i(-7200,5400,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-9000,1800,'UYHST'),
-i(-10800,0,'UYT'),
-i(-9000,1800,'UYHST'),
-i(-10800,0,'UYT'),
-i(-9000,1800,'UYHST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-9000,1800,'UYHST'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
-i(-7200,3600,'UYST'),
-i(-10800,0,'UYT'),
- ]
-
-Montevideo = Montevideo()
-
diff --git a/modules/pytz/zoneinfo/America/Montreal.py b/modules/pytz/zoneinfo/America/Montreal.py
deleted file mode 100644
index f780e39f..00000000
--- a/modules/pytz/zoneinfo/America/Montreal.py
+++ /dev/null
@@ -1,484 +0,0 @@
-'''tzinfo timezone information for America/Montreal.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Montreal(DstTzInfo):
- '''America/Montreal timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Montreal'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,3,25,7,0,0),
-d(1917,4,24,4,0,0),
-d(1918,4,14,7,0,0),
-d(1918,10,31,6,0,0),
-d(1919,3,31,7,30,0),
-d(1919,10,25,6,30,0),
-d(1920,5,2,7,30,0),
-d(1920,10,3,6,30,0),
-d(1921,5,1,7,0,0),
-d(1921,10,2,6,30,0),
-d(1922,4,30,7,0,0),
-d(1922,10,1,6,30,0),
-d(1924,5,17,7,0,0),
-d(1924,9,28,6,30,0),
-d(1925,5,3,7,0,0),
-d(1925,9,27,6,30,0),
-d(1926,5,2,7,0,0),
-d(1926,9,26,6,30,0),
-d(1927,5,1,5,0,0),
-d(1927,9,25,4,0,0),
-d(1928,4,29,5,0,0),
-d(1928,9,30,4,0,0),
-d(1929,4,28,5,0,0),
-d(1929,9,29,4,0,0),
-d(1930,4,27,5,0,0),
-d(1930,9,28,4,0,0),
-d(1931,4,26,5,0,0),
-d(1931,9,27,4,0,0),
-d(1932,5,1,5,0,0),
-d(1932,9,25,4,0,0),
-d(1933,4,30,5,0,0),
-d(1933,10,1,4,0,0),
-d(1934,4,29,5,0,0),
-d(1934,9,30,4,0,0),
-d(1935,4,28,5,0,0),
-d(1935,9,29,4,0,0),
-d(1936,4,26,5,0,0),
-d(1936,9,27,4,0,0),
-d(1937,4,25,5,0,0),
-d(1937,9,26,4,0,0),
-d(1938,4,24,5,0,0),
-d(1938,9,25,4,0,0),
-d(1939,4,30,5,0,0),
-d(1939,9,24,4,0,0),
-d(1940,4,28,5,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1946,4,28,7,0,0),
-d(1946,9,29,6,0,0),
-d(1947,4,27,7,0,0),
-d(1947,9,28,6,0,0),
-d(1948,4,25,7,0,0),
-d(1948,9,26,6,0,0),
-d(1949,4,24,7,0,0),
-d(1949,10,30,6,0,0),
-d(1950,4,30,7,0,0),
-d(1950,10,29,6,0,0),
-d(1951,4,29,7,0,0),
-d(1951,9,30,6,0,0),
-d(1952,4,27,7,0,0),
-d(1952,9,28,6,0,0),
-d(1953,4,26,7,0,0),
-d(1953,9,27,6,0,0),
-d(1954,4,25,7,0,0),
-d(1954,9,26,6,0,0),
-d(1955,4,24,7,0,0),
-d(1955,9,25,6,0,0),
-d(1956,4,29,7,0,0),
-d(1956,9,30,6,0,0),
-d(1957,4,28,7,0,0),
-d(1957,10,27,6,0,0),
-d(1958,4,27,7,0,0),
-d(1958,10,26,6,0,0),
-d(1959,4,26,7,0,0),
-d(1959,10,25,6,0,0),
-d(1960,4,24,7,0,0),
-d(1960,10,30,6,0,0),
-d(1961,4,30,7,0,0),
-d(1961,10,29,6,0,0),
-d(1962,4,29,7,0,0),
-d(1962,10,28,6,0,0),
-d(1963,4,28,7,0,0),
-d(1963,10,27,6,0,0),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Montreal = Montreal()
-
diff --git a/modules/pytz/zoneinfo/America/Montserrat.py b/modules/pytz/zoneinfo/America/Montserrat.py
deleted file mode 100644
index 65ba519e..00000000
--- a/modules/pytz/zoneinfo/America/Montserrat.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Montserrat.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Montserrat(DstTzInfo):
- '''America/Montserrat timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Montserrat'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,4,9,52),
- ]
-
- _transition_info = [
-i(-14940,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Montserrat = Montserrat()
-
diff --git a/modules/pytz/zoneinfo/America/Nassau.py b/modules/pytz/zoneinfo/America/Nassau.py
deleted file mode 100644
index d4bcdada..00000000
--- a/modules/pytz/zoneinfo/America/Nassau.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for America/Nassau.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nassau(DstTzInfo):
- '''America/Nassau timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Nassau'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,3,2,5,9,24),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,4,1,7,0,0),
-d(2007,10,28,6,0,0),
-d(2008,4,6,7,0,0),
-d(2008,10,26,6,0,0),
-d(2009,4,5,7,0,0),
-d(2009,10,25,6,0,0),
-d(2010,4,4,7,0,0),
-d(2010,10,31,6,0,0),
-d(2011,4,3,7,0,0),
-d(2011,10,30,6,0,0),
-d(2012,4,1,7,0,0),
-d(2012,10,28,6,0,0),
-d(2013,4,7,7,0,0),
-d(2013,10,27,6,0,0),
-d(2014,4,6,7,0,0),
-d(2014,10,26,6,0,0),
-d(2015,4,5,7,0,0),
-d(2015,10,25,6,0,0),
-d(2016,4,3,7,0,0),
-d(2016,10,30,6,0,0),
-d(2017,4,2,7,0,0),
-d(2017,10,29,6,0,0),
-d(2018,4,1,7,0,0),
-d(2018,10,28,6,0,0),
-d(2019,4,7,7,0,0),
-d(2019,10,27,6,0,0),
-d(2020,4,5,7,0,0),
-d(2020,10,25,6,0,0),
-d(2021,4,4,7,0,0),
-d(2021,10,31,6,0,0),
-d(2022,4,3,7,0,0),
-d(2022,10,30,6,0,0),
-d(2023,4,2,7,0,0),
-d(2023,10,29,6,0,0),
-d(2024,4,7,7,0,0),
-d(2024,10,27,6,0,0),
-d(2025,4,6,7,0,0),
-d(2025,10,26,6,0,0),
-d(2026,4,5,7,0,0),
-d(2026,10,25,6,0,0),
-d(2027,4,4,7,0,0),
-d(2027,10,31,6,0,0),
-d(2028,4,2,7,0,0),
-d(2028,10,29,6,0,0),
-d(2029,4,1,7,0,0),
-d(2029,10,28,6,0,0),
-d(2030,4,7,7,0,0),
-d(2030,10,27,6,0,0),
-d(2031,4,6,7,0,0),
-d(2031,10,26,6,0,0),
-d(2032,4,4,7,0,0),
-d(2032,10,31,6,0,0),
-d(2033,4,3,7,0,0),
-d(2033,10,30,6,0,0),
-d(2034,4,2,7,0,0),
-d(2034,10,29,6,0,0),
-d(2035,4,1,7,0,0),
-d(2035,10,28,6,0,0),
-d(2036,4,6,7,0,0),
-d(2036,10,26,6,0,0),
-d(2037,4,5,7,0,0),
-d(2037,10,25,6,0,0),
- ]
-
- _transition_info = [
-i(-18540,0,'LMT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Nassau = Nassau()
-
diff --git a/modules/pytz/zoneinfo/America/New_York.py b/modules/pytz/zoneinfo/America/New_York.py
deleted file mode 100644
index 9acebd98..00000000
--- a/modules/pytz/zoneinfo/America/New_York.py
+++ /dev/null
@@ -1,490 +0,0 @@
-'''tzinfo timezone information for America/New_York.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class New_York(DstTzInfo):
- '''America/New_York timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/New_York'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,7,0,0),
-d(1918,10,27,6,0,0),
-d(1919,3,30,7,0,0),
-d(1919,10,26,6,0,0),
-d(1920,3,28,7,0,0),
-d(1920,10,31,6,0,0),
-d(1921,4,24,7,0,0),
-d(1921,9,25,6,0,0),
-d(1922,4,30,7,0,0),
-d(1922,9,24,6,0,0),
-d(1923,4,29,7,0,0),
-d(1923,9,30,6,0,0),
-d(1924,4,27,7,0,0),
-d(1924,9,28,6,0,0),
-d(1925,4,26,7,0,0),
-d(1925,9,27,6,0,0),
-d(1926,4,25,7,0,0),
-d(1926,9,26,6,0,0),
-d(1927,4,24,7,0,0),
-d(1927,9,25,6,0,0),
-d(1928,4,29,7,0,0),
-d(1928,9,30,6,0,0),
-d(1929,4,28,7,0,0),
-d(1929,9,29,6,0,0),
-d(1930,4,27,7,0,0),
-d(1930,9,28,6,0,0),
-d(1931,4,26,7,0,0),
-d(1931,9,27,6,0,0),
-d(1932,4,24,7,0,0),
-d(1932,9,25,6,0,0),
-d(1933,4,30,7,0,0),
-d(1933,9,24,6,0,0),
-d(1934,4,29,7,0,0),
-d(1934,9,30,6,0,0),
-d(1935,4,28,7,0,0),
-d(1935,9,29,6,0,0),
-d(1936,4,26,7,0,0),
-d(1936,9,27,6,0,0),
-d(1937,4,25,7,0,0),
-d(1937,9,26,6,0,0),
-d(1938,4,24,7,0,0),
-d(1938,9,25,6,0,0),
-d(1939,4,30,7,0,0),
-d(1939,9,24,6,0,0),
-d(1940,4,28,7,0,0),
-d(1940,9,29,6,0,0),
-d(1941,4,27,7,0,0),
-d(1941,9,28,6,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1946,4,28,7,0,0),
-d(1946,9,29,6,0,0),
-d(1947,4,27,7,0,0),
-d(1947,9,28,6,0,0),
-d(1948,4,25,7,0,0),
-d(1948,9,26,6,0,0),
-d(1949,4,24,7,0,0),
-d(1949,9,25,6,0,0),
-d(1950,4,30,7,0,0),
-d(1950,9,24,6,0,0),
-d(1951,4,29,7,0,0),
-d(1951,9,30,6,0,0),
-d(1952,4,27,7,0,0),
-d(1952,9,28,6,0,0),
-d(1953,4,26,7,0,0),
-d(1953,9,27,6,0,0),
-d(1954,4,25,7,0,0),
-d(1954,9,26,6,0,0),
-d(1955,4,24,7,0,0),
-d(1955,10,30,6,0,0),
-d(1956,4,29,7,0,0),
-d(1956,10,28,6,0,0),
-d(1957,4,28,7,0,0),
-d(1957,10,27,6,0,0),
-d(1958,4,27,7,0,0),
-d(1958,10,26,6,0,0),
-d(1959,4,26,7,0,0),
-d(1959,10,25,6,0,0),
-d(1960,4,24,7,0,0),
-d(1960,10,30,6,0,0),
-d(1961,4,30,7,0,0),
-d(1961,10,29,6,0,0),
-d(1962,4,29,7,0,0),
-d(1962,10,28,6,0,0),
-d(1963,4,28,7,0,0),
-d(1963,10,27,6,0,0),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-New_York = New_York()
-
diff --git a/modules/pytz/zoneinfo/America/Nipigon.py b/modules/pytz/zoneinfo/America/Nipigon.py
deleted file mode 100644
index 29b1397c..00000000
--- a/modules/pytz/zoneinfo/America/Nipigon.py
+++ /dev/null
@@ -1,288 +0,0 @@
-'''tzinfo timezone information for America/Nipigon.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nipigon(DstTzInfo):
- '''America/Nipigon timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Nipigon'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,7,0,0),
-d(1918,10,31,6,0,0),
-d(1940,9,29,5,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Nipigon = Nipigon()
-
diff --git a/modules/pytz/zoneinfo/America/Nome.py b/modules/pytz/zoneinfo/America/Nome.py
deleted file mode 100644
index 5889ab26..00000000
--- a/modules/pytz/zoneinfo/America/Nome.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for America/Nome.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nome(DstTzInfo):
- '''America/Nome timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Nome'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,13,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,12,0,0),
-d(1967,4,1,11,0,0),
-d(1969,4,27,13,0,0),
-d(1969,10,26,12,0,0),
-d(1970,4,26,13,0,0),
-d(1970,10,25,12,0,0),
-d(1971,4,25,13,0,0),
-d(1971,10,31,12,0,0),
-d(1972,4,30,13,0,0),
-d(1972,10,29,12,0,0),
-d(1973,4,29,13,0,0),
-d(1973,10,28,12,0,0),
-d(1974,1,6,13,0,0),
-d(1974,10,27,12,0,0),
-d(1975,2,23,13,0,0),
-d(1975,10,26,12,0,0),
-d(1976,4,25,13,0,0),
-d(1976,10,31,12,0,0),
-d(1977,4,24,13,0,0),
-d(1977,10,30,12,0,0),
-d(1978,4,30,13,0,0),
-d(1978,10,29,12,0,0),
-d(1979,4,29,13,0,0),
-d(1979,10,28,12,0,0),
-d(1980,4,27,13,0,0),
-d(1980,10,26,12,0,0),
-d(1981,4,26,13,0,0),
-d(1981,10,25,12,0,0),
-d(1982,4,25,13,0,0),
-d(1982,10,31,12,0,0),
-d(1983,4,24,13,0,0),
-d(1983,10,30,12,0,0),
-d(1983,11,30,9,0,0),
-d(1984,4,29,11,0,0),
-d(1984,10,28,10,0,0),
-d(1985,4,28,11,0,0),
-d(1985,10,27,10,0,0),
-d(1986,4,27,11,0,0),
-d(1986,10,26,10,0,0),
-d(1987,4,5,11,0,0),
-d(1987,10,25,10,0,0),
-d(1988,4,3,11,0,0),
-d(1988,10,30,10,0,0),
-d(1989,4,2,11,0,0),
-d(1989,10,29,10,0,0),
-d(1990,4,1,11,0,0),
-d(1990,10,28,10,0,0),
-d(1991,4,7,11,0,0),
-d(1991,10,27,10,0,0),
-d(1992,4,5,11,0,0),
-d(1992,10,25,10,0,0),
-d(1993,4,4,11,0,0),
-d(1993,10,31,10,0,0),
-d(1994,4,3,11,0,0),
-d(1994,10,30,10,0,0),
-d(1995,4,2,11,0,0),
-d(1995,10,29,10,0,0),
-d(1996,4,7,11,0,0),
-d(1996,10,27,10,0,0),
-d(1997,4,6,11,0,0),
-d(1997,10,26,10,0,0),
-d(1998,4,5,11,0,0),
-d(1998,10,25,10,0,0),
-d(1999,4,4,11,0,0),
-d(1999,10,31,10,0,0),
-d(2000,4,2,11,0,0),
-d(2000,10,29,10,0,0),
-d(2001,4,1,11,0,0),
-d(2001,10,28,10,0,0),
-d(2002,4,7,11,0,0),
-d(2002,10,27,10,0,0),
-d(2003,4,6,11,0,0),
-d(2003,10,26,10,0,0),
-d(2004,4,4,11,0,0),
-d(2004,10,31,10,0,0),
-d(2005,4,3,11,0,0),
-d(2005,10,30,10,0,0),
-d(2006,4,2,11,0,0),
-d(2006,10,29,10,0,0),
-d(2007,3,11,11,0,0),
-d(2007,11,4,10,0,0),
-d(2008,3,9,11,0,0),
-d(2008,11,2,10,0,0),
-d(2009,3,8,11,0,0),
-d(2009,11,1,10,0,0),
-d(2010,3,14,11,0,0),
-d(2010,11,7,10,0,0),
-d(2011,3,13,11,0,0),
-d(2011,11,6,10,0,0),
-d(2012,3,11,11,0,0),
-d(2012,11,4,10,0,0),
-d(2013,3,10,11,0,0),
-d(2013,11,3,10,0,0),
-d(2014,3,9,11,0,0),
-d(2014,11,2,10,0,0),
-d(2015,3,8,11,0,0),
-d(2015,11,1,10,0,0),
-d(2016,3,13,11,0,0),
-d(2016,11,6,10,0,0),
-d(2017,3,12,11,0,0),
-d(2017,11,5,10,0,0),
-d(2018,3,11,11,0,0),
-d(2018,11,4,10,0,0),
-d(2019,3,10,11,0,0),
-d(2019,11,3,10,0,0),
-d(2020,3,8,11,0,0),
-d(2020,11,1,10,0,0),
-d(2021,3,14,11,0,0),
-d(2021,11,7,10,0,0),
-d(2022,3,13,11,0,0),
-d(2022,11,6,10,0,0),
-d(2023,3,12,11,0,0),
-d(2023,11,5,10,0,0),
-d(2024,3,10,11,0,0),
-d(2024,11,3,10,0,0),
-d(2025,3,9,11,0,0),
-d(2025,11,2,10,0,0),
-d(2026,3,8,11,0,0),
-d(2026,11,1,10,0,0),
-d(2027,3,14,11,0,0),
-d(2027,11,7,10,0,0),
-d(2028,3,12,11,0,0),
-d(2028,11,5,10,0,0),
-d(2029,3,11,11,0,0),
-d(2029,11,4,10,0,0),
-d(2030,3,10,11,0,0),
-d(2030,11,3,10,0,0),
-d(2031,3,9,11,0,0),
-d(2031,11,2,10,0,0),
-d(2032,3,14,11,0,0),
-d(2032,11,7,10,0,0),
-d(2033,3,13,11,0,0),
-d(2033,11,6,10,0,0),
-d(2034,3,12,11,0,0),
-d(2034,11,5,10,0,0),
-d(2035,3,11,11,0,0),
-d(2035,11,4,10,0,0),
-d(2036,3,9,11,0,0),
-d(2036,11,2,10,0,0),
-d(2037,3,8,11,0,0),
-d(2037,11,1,10,0,0),
- ]
-
- _transition_info = [
-i(-39600,0,'NST'),
-i(-36000,3600,'NWT'),
-i(-36000,3600,'NPT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-32400,0,'YST'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
- ]
-
-Nome = Nome()
-
diff --git a/modules/pytz/zoneinfo/America/Noronha.py b/modules/pytz/zoneinfo/America/Noronha.py
deleted file mode 100644
index 915773c9..00000000
--- a/modules/pytz/zoneinfo/America/Noronha.py
+++ /dev/null
@@ -1,98 +0,0 @@
-'''tzinfo timezone information for America/Noronha.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Noronha(DstTzInfo):
- '''America/Noronha timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Noronha'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,2,9,40),
-d(1931,10,3,13,0,0),
-d(1932,4,1,1,0,0),
-d(1932,10,3,2,0,0),
-d(1933,4,1,1,0,0),
-d(1949,12,1,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,12,1,2,0,0),
-d(1951,4,1,1,0,0),
-d(1951,12,1,2,0,0),
-d(1952,4,1,1,0,0),
-d(1952,12,1,2,0,0),
-d(1953,3,1,1,0,0),
-d(1963,12,9,2,0,0),
-d(1964,3,1,1,0,0),
-d(1965,1,31,2,0,0),
-d(1965,3,31,1,0,0),
-d(1965,12,1,2,0,0),
-d(1966,3,1,1,0,0),
-d(1966,11,1,2,0,0),
-d(1967,3,1,1,0,0),
-d(1967,11,1,2,0,0),
-d(1968,3,1,1,0,0),
-d(1985,11,2,2,0,0),
-d(1986,3,15,1,0,0),
-d(1986,10,25,2,0,0),
-d(1987,2,14,1,0,0),
-d(1987,10,25,2,0,0),
-d(1988,2,7,1,0,0),
-d(1988,10,16,2,0,0),
-d(1989,1,29,1,0,0),
-d(1989,10,15,2,0,0),
-d(1990,2,11,1,0,0),
-d(1999,10,3,2,0,0),
-d(2000,2,27,1,0,0),
-d(2000,10,8,2,0,0),
-d(2000,10,15,1,0,0),
-d(2001,10,14,2,0,0),
-d(2002,2,17,1,0,0),
- ]
-
- _transition_info = [
-i(-7800,0,'LMT'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
- ]
-
-Noronha = Noronha()
-
diff --git a/modules/pytz/zoneinfo/America/North_Dakota/Center.py b/modules/pytz/zoneinfo/America/North_Dakota/Center.py
deleted file mode 100644
index e9460b69..00000000
--- a/modules/pytz/zoneinfo/America/North_Dakota/Center.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for America/North_Dakota/Center.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Center(DstTzInfo):
- '''America/North_Dakota/Center timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/North_Dakota/Center'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,1,6,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Center = Center()
-
diff --git a/modules/pytz/zoneinfo/America/North_Dakota/__init__.py b/modules/pytz/zoneinfo/America/North_Dakota/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/America/Panama.py b/modules/pytz/zoneinfo/America/Panama.py
deleted file mode 100644
index d0f9fa76..00000000
--- a/modules/pytz/zoneinfo/America/Panama.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Panama.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Panama(DstTzInfo):
- '''America/Panama timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Panama'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1908,4,22,5,19,36),
- ]
-
- _transition_info = [
-i(-19200,0,'CMT'),
-i(-18000,0,'EST'),
- ]
-
-Panama = Panama()
-
diff --git a/modules/pytz/zoneinfo/America/Pangnirtung.py b/modules/pytz/zoneinfo/America/Pangnirtung.py
deleted file mode 100644
index 79dfa10c..00000000
--- a/modules/pytz/zoneinfo/America/Pangnirtung.py
+++ /dev/null
@@ -1,270 +0,0 @@
-'''tzinfo timezone information for America/Pangnirtung.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pangnirtung(DstTzInfo):
- '''America/Pangnirtung timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Pangnirtung'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,6,0,0),
-d(1918,10,27,5,0,0),
-d(1919,5,25,6,0,0),
-d(1919,11,1,3,0,0),
-d(1942,2,9,6,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,5,0,0),
-d(1965,4,25,4,0,0),
-d(1965,10,31,4,0,0),
-d(1980,4,27,6,0,0),
-d(1980,10,26,5,0,0),
-d(1981,4,26,6,0,0),
-d(1981,10,25,5,0,0),
-d(1982,4,25,6,0,0),
-d(1982,10,31,5,0,0),
-d(1983,4,24,6,0,0),
-d(1983,10,30,5,0,0),
-d(1984,4,29,6,0,0),
-d(1984,10,28,5,0,0),
-d(1985,4,28,6,0,0),
-d(1985,10,27,5,0,0),
-d(1986,4,27,6,0,0),
-d(1986,10,26,5,0,0),
-d(1987,4,5,6,0,0),
-d(1987,10,25,5,0,0),
-d(1988,4,3,6,0,0),
-d(1988,10,30,5,0,0),
-d(1989,4,2,6,0,0),
-d(1989,10,29,5,0,0),
-d(1990,4,1,6,0,0),
-d(1990,10,28,5,0,0),
-d(1991,4,7,6,0,0),
-d(1991,10,27,5,0,0),
-d(1992,4,5,6,0,0),
-d(1992,10,25,5,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,5,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,5,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'AWT'),
-i(-10800,3600,'APT'),
-i(-14400,0,'AST'),
-i(-7200,7200,'ADDT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-14400,0,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Pangnirtung = Pangnirtung()
-
diff --git a/modules/pytz/zoneinfo/America/Paramaribo.py b/modules/pytz/zoneinfo/America/Paramaribo.py
deleted file mode 100644
index 5238f9d5..00000000
--- a/modules/pytz/zoneinfo/America/Paramaribo.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for America/Paramaribo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Paramaribo(DstTzInfo):
- '''America/Paramaribo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Paramaribo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,1,1,3,40,40),
-d(1935,1,1,3,40,52),
-d(1945,10,1,3,40,36),
-d(1975,11,20,3,30,0),
-d(1984,10,1,3,30,0),
- ]
-
- _transition_info = [
-i(-13260,0,'LMT'),
-i(-13260,0,'PMT'),
-i(-13260,0,'PMT'),
-i(-12600,0,'NEGT'),
-i(-12600,0,'SRT'),
-i(-10800,0,'SRT'),
- ]
-
-Paramaribo = Paramaribo()
-
diff --git a/modules/pytz/zoneinfo/America/Phoenix.py b/modules/pytz/zoneinfo/America/Phoenix.py
deleted file mode 100644
index 1cc351ee..00000000
--- a/modules/pytz/zoneinfo/America/Phoenix.py
+++ /dev/null
@@ -1,40 +0,0 @@
-'''tzinfo timezone information for America/Phoenix.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Phoenix(DstTzInfo):
- '''America/Phoenix timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Phoenix'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1942,2,9,9,0,0),
-d(1944,1,1,6,1,0),
-d(1944,4,1,7,1,0),
-d(1944,10,1,6,1,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Phoenix = Phoenix()
-
diff --git a/modules/pytz/zoneinfo/America/Port_minus_au_minus_Prince.py b/modules/pytz/zoneinfo/America/Port_minus_au_minus_Prince.py
deleted file mode 100644
index ab77bec9..00000000
--- a/modules/pytz/zoneinfo/America/Port_minus_au_minus_Prince.py
+++ /dev/null
@@ -1,86 +0,0 @@
-'''tzinfo timezone information for America/Port_minus_au_minus_Prince.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Port_minus_au_minus_Prince(DstTzInfo):
- '''America/Port_minus_au_minus_Prince timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Port_minus_au_minus_Prince'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,1,24,16,49,0),
-d(1983,5,8,5,0,0),
-d(1983,10,30,4,0,0),
-d(1984,4,29,5,0,0),
-d(1984,10,28,4,0,0),
-d(1985,4,28,5,0,0),
-d(1985,10,27,4,0,0),
-d(1986,4,27,5,0,0),
-d(1986,10,26,4,0,0),
-d(1987,4,26,5,0,0),
-d(1987,10,25,4,0,0),
-d(1988,4,3,6,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,6,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,6,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,6,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,6,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,6,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,6,0,0),
-d(1997,10,26,6,0,0),
-d(2005,4,3,5,0,0),
-d(2005,10,30,4,0,0),
- ]
-
- _transition_info = [
-i(-17340,0,'PPMT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Port_minus_au_minus_Prince = Port_minus_au_minus_Prince()
-
diff --git a/modules/pytz/zoneinfo/America/Port_of_Spain.py b/modules/pytz/zoneinfo/America/Port_of_Spain.py
deleted file mode 100644
index f1a37eb6..00000000
--- a/modules/pytz/zoneinfo/America/Port_of_Spain.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Port_of_Spain.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Port_of_Spain(DstTzInfo):
- '''America/Port_of_Spain timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Port_of_Spain'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,3,2,4,6,4),
- ]
-
- _transition_info = [
-i(-14760,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Port_of_Spain = Port_of_Spain()
-
diff --git a/modules/pytz/zoneinfo/America/Porto_Acre.py b/modules/pytz/zoneinfo/America/Porto_Acre.py
deleted file mode 100644
index 34dce668..00000000
--- a/modules/pytz/zoneinfo/America/Porto_Acre.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for America/Porto_Acre.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Porto_Acre(DstTzInfo):
- '''America/Porto_Acre timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Porto_Acre'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,31,12),
-d(1931,10,3,16,0,0),
-d(1932,4,1,4,0,0),
-d(1932,10,3,5,0,0),
-d(1933,4,1,4,0,0),
-d(1949,12,1,5,0,0),
-d(1950,4,16,5,0,0),
-d(1950,12,1,5,0,0),
-d(1951,4,1,4,0,0),
-d(1951,12,1,5,0,0),
-d(1952,4,1,4,0,0),
-d(1952,12,1,5,0,0),
-d(1953,3,1,4,0,0),
-d(1963,12,9,5,0,0),
-d(1964,3,1,4,0,0),
-d(1965,1,31,5,0,0),
-d(1965,3,31,4,0,0),
-d(1965,12,1,5,0,0),
-d(1966,3,1,4,0,0),
-d(1966,11,1,5,0,0),
-d(1967,3,1,4,0,0),
-d(1967,11,1,5,0,0),
-d(1968,3,1,4,0,0),
-d(1985,11,2,5,0,0),
-d(1986,3,15,4,0,0),
-d(1986,10,25,5,0,0),
-d(1987,2,14,4,0,0),
-d(1987,10,25,5,0,0),
-d(1988,2,7,4,0,0),
- ]
-
- _transition_info = [
-i(-16260,0,'LMT'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
- ]
-
-Porto_Acre = Porto_Acre()
-
diff --git a/modules/pytz/zoneinfo/America/Porto_Velho.py b/modules/pytz/zoneinfo/America/Porto_Velho.py
deleted file mode 100644
index 85620897..00000000
--- a/modules/pytz/zoneinfo/America/Porto_Velho.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for America/Porto_Velho.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Porto_Velho(DstTzInfo):
- '''America/Porto_Velho timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Porto_Velho'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,15,36),
-d(1931,10,3,15,0,0),
-d(1932,4,1,3,0,0),
-d(1932,10,3,4,0,0),
-d(1933,4,1,3,0,0),
-d(1949,12,1,4,0,0),
-d(1950,4,16,4,0,0),
-d(1950,12,1,4,0,0),
-d(1951,4,1,3,0,0),
-d(1951,12,1,4,0,0),
-d(1952,4,1,3,0,0),
-d(1952,12,1,4,0,0),
-d(1953,3,1,3,0,0),
-d(1963,12,9,4,0,0),
-d(1964,3,1,3,0,0),
-d(1965,1,31,4,0,0),
-d(1965,3,31,3,0,0),
-d(1965,12,1,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,11,1,4,0,0),
-d(1967,3,1,3,0,0),
-d(1967,11,1,4,0,0),
-d(1968,3,1,3,0,0),
-d(1985,11,2,4,0,0),
-d(1986,3,15,3,0,0),
-d(1986,10,25,4,0,0),
-d(1987,2,14,3,0,0),
-d(1987,10,25,4,0,0),
-d(1988,2,7,3,0,0),
- ]
-
- _transition_info = [
-i(-15360,0,'LMT'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
- ]
-
-Porto_Velho = Porto_Velho()
-
diff --git a/modules/pytz/zoneinfo/America/Puerto_Rico.py b/modules/pytz/zoneinfo/America/Puerto_Rico.py
deleted file mode 100644
index 7e3cd258..00000000
--- a/modules/pytz/zoneinfo/America/Puerto_Rico.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for America/Puerto_Rico.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Puerto_Rico(DstTzInfo):
- '''America/Puerto_Rico timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Puerto_Rico'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,5,3,4,0,0),
-d(1945,9,30,5,0,0),
- ]
-
- _transition_info = [
-i(-14400,0,'AST'),
-i(-10800,3600,'AWT'),
-i(-14400,0,'AST'),
- ]
-
-Puerto_Rico = Puerto_Rico()
-
diff --git a/modules/pytz/zoneinfo/America/Rainy_River.py b/modules/pytz/zoneinfo/America/Rainy_River.py
deleted file mode 100644
index 9863d587..00000000
--- a/modules/pytz/zoneinfo/America/Rainy_River.py
+++ /dev/null
@@ -1,288 +0,0 @@
-'''tzinfo timezone information for America/Rainy_River.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rainy_River(DstTzInfo):
- '''America/Rainy_River timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Rainy_River'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,8,0,0),
-d(1918,10,31,7,0,0),
-d(1940,9,29,6,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1974,4,28,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,4,27,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Rainy_River = Rainy_River()
-
diff --git a/modules/pytz/zoneinfo/America/Rankin_Inlet.py b/modules/pytz/zoneinfo/America/Rankin_Inlet.py
deleted file mode 100644
index 033c8bb3..00000000
--- a/modules/pytz/zoneinfo/America/Rankin_Inlet.py
+++ /dev/null
@@ -1,270 +0,0 @@
-'''tzinfo timezone information for America/Rankin_Inlet.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rankin_Inlet(DstTzInfo):
- '''America/Rankin_Inlet timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Rankin_Inlet'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,5,25,8,0,0),
-d(1919,11,1,5,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1965,4,25,6,0,0),
-d(1965,10,31,6,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-14400,7200,'CDDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-18000,0,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Rankin_Inlet = Rankin_Inlet()
-
diff --git a/modules/pytz/zoneinfo/America/Recife.py b/modules/pytz/zoneinfo/America/Recife.py
deleted file mode 100644
index a30a40df..00000000
--- a/modules/pytz/zoneinfo/America/Recife.py
+++ /dev/null
@@ -1,98 +0,0 @@
-'''tzinfo timezone information for America/Recife.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Recife(DstTzInfo):
- '''America/Recife timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Recife'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,2,19,36),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,12,9,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2000,10,15,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
- ]
-
- _transition_info = [
-i(-8400,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
- ]
-
-Recife = Recife()
-
diff --git a/modules/pytz/zoneinfo/America/Regina.py b/modules/pytz/zoneinfo/America/Regina.py
deleted file mode 100644
index 08b11abf..00000000
--- a/modules/pytz/zoneinfo/America/Regina.py
+++ /dev/null
@@ -1,126 +0,0 @@
-'''tzinfo timezone information for America/Regina.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Regina(DstTzInfo):
- '''America/Regina timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Regina'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,9,1,6,58,36),
-d(1918,4,14,9,0,0),
-d(1918,10,31,8,0,0),
-d(1930,5,4,7,0,0),
-d(1930,10,5,6,0,0),
-d(1931,5,3,7,0,0),
-d(1931,10,4,6,0,0),
-d(1932,5,1,7,0,0),
-d(1932,10,2,6,0,0),
-d(1933,5,7,7,0,0),
-d(1933,10,1,6,0,0),
-d(1934,5,6,7,0,0),
-d(1934,10,7,6,0,0),
-d(1937,4,11,7,0,0),
-d(1937,10,10,6,0,0),
-d(1938,4,10,7,0,0),
-d(1938,10,2,6,0,0),
-d(1939,4,9,7,0,0),
-d(1939,10,8,6,0,0),
-d(1940,4,14,7,0,0),
-d(1940,10,13,6,0,0),
-d(1941,4,13,7,0,0),
-d(1941,10,12,6,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1946,4,14,9,0,0),
-d(1946,10,13,8,0,0),
-d(1947,4,27,9,0,0),
-d(1947,9,28,8,0,0),
-d(1948,4,25,9,0,0),
-d(1948,9,26,8,0,0),
-d(1949,4,24,9,0,0),
-d(1949,9,25,8,0,0),
-d(1950,4,30,9,0,0),
-d(1950,9,24,8,0,0),
-d(1951,4,29,9,0,0),
-d(1951,9,30,8,0,0),
-d(1952,4,27,9,0,0),
-d(1952,9,28,8,0,0),
-d(1953,4,26,9,0,0),
-d(1953,9,27,8,0,0),
-d(1954,4,25,9,0,0),
-d(1954,9,26,8,0,0),
-d(1955,4,24,9,0,0),
-d(1955,9,25,8,0,0),
-d(1956,4,29,9,0,0),
-d(1956,9,30,8,0,0),
-d(1957,4,28,9,0,0),
-d(1957,9,29,8,0,0),
-d(1959,4,26,9,0,0),
-d(1959,10,25,8,0,0),
-d(1960,4,24,9,0,0),
- ]
-
- _transition_info = [
-i(-25140,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
- ]
-
-Regina = Regina()
-
diff --git a/modules/pytz/zoneinfo/America/Rio_Branco.py b/modules/pytz/zoneinfo/America/Rio_Branco.py
deleted file mode 100644
index 14b71ddb..00000000
--- a/modules/pytz/zoneinfo/America/Rio_Branco.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for America/Rio_Branco.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rio_Branco(DstTzInfo):
- '''America/Rio_Branco timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Rio_Branco'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,31,12),
-d(1931,10,3,16,0,0),
-d(1932,4,1,4,0,0),
-d(1932,10,3,5,0,0),
-d(1933,4,1,4,0,0),
-d(1949,12,1,5,0,0),
-d(1950,4,16,5,0,0),
-d(1950,12,1,5,0,0),
-d(1951,4,1,4,0,0),
-d(1951,12,1,5,0,0),
-d(1952,4,1,4,0,0),
-d(1952,12,1,5,0,0),
-d(1953,3,1,4,0,0),
-d(1963,12,9,5,0,0),
-d(1964,3,1,4,0,0),
-d(1965,1,31,5,0,0),
-d(1965,3,31,4,0,0),
-d(1965,12,1,5,0,0),
-d(1966,3,1,4,0,0),
-d(1966,11,1,5,0,0),
-d(1967,3,1,4,0,0),
-d(1967,11,1,5,0,0),
-d(1968,3,1,4,0,0),
-d(1985,11,2,5,0,0),
-d(1986,3,15,4,0,0),
-d(1986,10,25,5,0,0),
-d(1987,2,14,4,0,0),
-d(1987,10,25,5,0,0),
-d(1988,2,7,4,0,0),
- ]
-
- _transition_info = [
-i(-16260,0,'LMT'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
- ]
-
-Rio_Branco = Rio_Branco()
-
diff --git a/modules/pytz/zoneinfo/America/Rosario.py b/modules/pytz/zoneinfo/America/Rosario.py
deleted file mode 100644
index a0aaa92d..00000000
--- a/modules/pytz/zoneinfo/America/Rosario.py
+++ /dev/null
@@ -1,132 +0,0 @@
-'''tzinfo timezone information for America/Rosario.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rosario(DstTzInfo):
- '''America/Rosario timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Rosario'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,5,1,4,16,48),
-d(1930,12,1,4,0,0),
-d(1931,4,1,3,0,0),
-d(1931,10,15,4,0,0),
-d(1932,3,1,3,0,0),
-d(1932,11,1,4,0,0),
-d(1933,3,1,3,0,0),
-d(1933,11,1,4,0,0),
-d(1934,3,1,3,0,0),
-d(1934,11,1,4,0,0),
-d(1935,3,1,3,0,0),
-d(1935,11,1,4,0,0),
-d(1936,3,1,3,0,0),
-d(1936,11,1,4,0,0),
-d(1937,3,1,3,0,0),
-d(1937,11,1,4,0,0),
-d(1938,3,1,3,0,0),
-d(1938,11,1,4,0,0),
-d(1939,3,1,3,0,0),
-d(1939,11,1,4,0,0),
-d(1940,3,1,3,0,0),
-d(1940,7,1,4,0,0),
-d(1941,6,15,3,0,0),
-d(1941,10,15,4,0,0),
-d(1943,8,1,3,0,0),
-d(1943,10,15,4,0,0),
-d(1946,3,1,3,0,0),
-d(1946,10,1,4,0,0),
-d(1963,10,1,3,0,0),
-d(1963,12,15,4,0,0),
-d(1964,3,1,3,0,0),
-d(1964,10,15,4,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,2,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1988,12,1,3,0,0),
-d(1989,3,5,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,3,4,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,3,3,2,0,0),
-d(1991,10,20,4,0,0),
-d(1992,3,1,2,0,0),
-d(1992,10,18,3,0,0),
-d(1993,3,7,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,3,3,3,0,0),
- ]
-
- _transition_info = [
-i(-15420,0,'CMT'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-14400,0,'WART'),
-i(-7200,7200,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-10800,0,'ARST'),
-i(-10800,0,'ART'),
- ]
-
-Rosario = Rosario()
-
diff --git a/modules/pytz/zoneinfo/America/Santiago.py b/modules/pytz/zoneinfo/America/Santiago.py
deleted file mode 100644
index 1b1d9976..00000000
--- a/modules/pytz/zoneinfo/America/Santiago.py
+++ /dev/null
@@ -1,334 +0,0 @@
-'''tzinfo timezone information for America/Santiago.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Santiago(DstTzInfo):
- '''America/Santiago timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Santiago'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1910,1,1,4,42,40),
-d(1918,9,1,5,0,0),
-d(1919,7,2,4,0,0),
-d(1927,9,1,5,0,0),
-d(1928,4,1,4,0,0),
-d(1928,9,1,5,0,0),
-d(1929,4,1,4,0,0),
-d(1929,9,1,5,0,0),
-d(1930,4,1,4,0,0),
-d(1930,9,1,5,0,0),
-d(1931,4,1,4,0,0),
-d(1931,9,1,5,0,0),
-d(1932,4,1,4,0,0),
-d(1932,9,1,5,0,0),
-d(1966,10,9,4,0,0),
-d(1967,3,12,3,0,0),
-d(1967,10,15,4,0,0),
-d(1968,3,10,3,0,0),
-d(1968,10,13,4,0,0),
-d(1969,3,9,3,0,0),
-d(1969,10,12,4,0,0),
-d(1970,3,15,3,0,0),
-d(1970,10,11,4,0,0),
-d(1971,3,14,3,0,0),
-d(1971,10,10,4,0,0),
-d(1972,3,12,3,0,0),
-d(1972,10,15,4,0,0),
-d(1973,3,11,3,0,0),
-d(1973,10,14,4,0,0),
-d(1974,3,10,3,0,0),
-d(1974,10,13,4,0,0),
-d(1975,3,9,3,0,0),
-d(1975,10,12,4,0,0),
-d(1976,3,14,3,0,0),
-d(1976,10,10,4,0,0),
-d(1977,3,13,3,0,0),
-d(1977,10,9,4,0,0),
-d(1978,3,12,3,0,0),
-d(1978,10,15,4,0,0),
-d(1979,3,11,3,0,0),
-d(1979,10,14,4,0,0),
-d(1980,3,9,3,0,0),
-d(1980,10,12,4,0,0),
-d(1981,3,15,3,0,0),
-d(1981,10,11,4,0,0),
-d(1982,3,14,3,0,0),
-d(1982,10,10,4,0,0),
-d(1983,3,13,3,0,0),
-d(1983,10,9,4,0,0),
-d(1984,3,11,3,0,0),
-d(1984,10,14,4,0,0),
-d(1985,3,10,3,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,9,3,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,3,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,13,3,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,12,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,3,11,3,0,0),
-d(1990,10,14,4,0,0),
-d(1991,3,10,3,0,0),
-d(1991,10,13,4,0,0),
-d(1992,3,15,3,0,0),
-d(1992,10,11,4,0,0),
-d(1993,3,14,3,0,0),
-d(1993,10,10,4,0,0),
-d(1994,3,13,3,0,0),
-d(1994,10,9,4,0,0),
-d(1995,3,12,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,3,10,3,0,0),
-d(1996,10,13,4,0,0),
-d(1997,3,9,3,0,0),
-d(1997,10,12,4,0,0),
-d(1998,3,15,3,0,0),
-d(1998,9,27,4,0,0),
-d(1999,4,4,3,0,0),
-d(1999,10,10,4,0,0),
-d(2000,3,12,3,0,0),
-d(2000,10,15,4,0,0),
-d(2001,3,11,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,3,10,3,0,0),
-d(2002,10,13,4,0,0),
-d(2003,3,9,3,0,0),
-d(2003,10,12,4,0,0),
-d(2004,3,14,3,0,0),
-d(2004,10,10,4,0,0),
-d(2005,3,13,3,0,0),
-d(2005,10,9,4,0,0),
-d(2006,3,12,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,3,11,3,0,0),
-d(2007,10,14,4,0,0),
-d(2008,3,9,3,0,0),
-d(2008,10,12,4,0,0),
-d(2009,3,15,3,0,0),
-d(2009,10,11,4,0,0),
-d(2010,3,14,3,0,0),
-d(2010,10,10,4,0,0),
-d(2011,3,13,3,0,0),
-d(2011,10,9,4,0,0),
-d(2012,3,11,3,0,0),
-d(2012,10,14,4,0,0),
-d(2013,3,10,3,0,0),
-d(2013,10,13,4,0,0),
-d(2014,3,9,3,0,0),
-d(2014,10,12,4,0,0),
-d(2015,3,15,3,0,0),
-d(2015,10,11,4,0,0),
-d(2016,3,13,3,0,0),
-d(2016,10,9,4,0,0),
-d(2017,3,12,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,3,11,3,0,0),
-d(2018,10,14,4,0,0),
-d(2019,3,10,3,0,0),
-d(2019,10,13,4,0,0),
-d(2020,3,15,3,0,0),
-d(2020,10,11,4,0,0),
-d(2021,3,14,3,0,0),
-d(2021,10,10,4,0,0),
-d(2022,3,13,3,0,0),
-d(2022,10,9,4,0,0),
-d(2023,3,12,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,3,10,3,0,0),
-d(2024,10,13,4,0,0),
-d(2025,3,9,3,0,0),
-d(2025,10,12,4,0,0),
-d(2026,3,15,3,0,0),
-d(2026,10,11,4,0,0),
-d(2027,3,14,3,0,0),
-d(2027,10,10,4,0,0),
-d(2028,3,12,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,3,11,3,0,0),
-d(2029,10,14,4,0,0),
-d(2030,3,10,3,0,0),
-d(2030,10,13,4,0,0),
-d(2031,3,9,3,0,0),
-d(2031,10,12,4,0,0),
-d(2032,3,14,3,0,0),
-d(2032,10,10,4,0,0),
-d(2033,3,13,3,0,0),
-d(2033,10,9,4,0,0),
-d(2034,3,12,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,3,11,3,0,0),
-d(2035,10,14,4,0,0),
-d(2036,3,9,3,0,0),
-d(2036,10,12,4,0,0),
-d(2037,3,15,3,0,0),
-d(2037,10,11,4,0,0),
- ]
-
- _transition_info = [
-i(-16980,0,'SMT'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
- ]
-
-Santiago = Santiago()
-
diff --git a/modules/pytz/zoneinfo/America/Santo_Domingo.py b/modules/pytz/zoneinfo/America/Santo_Domingo.py
deleted file mode 100644
index 63963732..00000000
--- a/modules/pytz/zoneinfo/America/Santo_Domingo.py
+++ /dev/null
@@ -1,52 +0,0 @@
-'''tzinfo timezone information for America/Santo_Domingo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Santo_Domingo(DstTzInfo):
- '''America/Santo_Domingo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Santo_Domingo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1933,4,1,16,40,0),
-d(1966,10,30,5,0,0),
-d(1967,2,28,4,0,0),
-d(1969,10,26,5,0,0),
-d(1970,2,21,4,30,0),
-d(1970,10,25,5,0,0),
-d(1971,1,20,4,30,0),
-d(1971,10,31,5,0,0),
-d(1972,1,21,4,30,0),
-d(1972,10,29,5,0,0),
-d(1973,1,21,4,30,0),
-d(1973,10,28,5,0,0),
-d(1974,1,21,4,30,0),
-d(1974,10,27,5,0,0),
-d(2000,10,29,6,0,0),
-d(2000,12,3,6,0,0),
- ]
-
- _transition_info = [
-i(-16800,0,'SDMT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-16200,1800,'EHDT'),
-i(-18000,0,'EST'),
-i(-16200,1800,'EHDT'),
-i(-18000,0,'EST'),
-i(-16200,1800,'EHDT'),
-i(-18000,0,'EST'),
-i(-16200,1800,'EHDT'),
-i(-18000,0,'EST'),
-i(-16200,1800,'EHDT'),
-i(-18000,0,'EST'),
-i(-14400,0,'AST'),
-i(-18000,0,'EST'),
-i(-14400,0,'AST'),
- ]
-
-Santo_Domingo = Santo_Domingo()
-
diff --git a/modules/pytz/zoneinfo/America/Sao_Paulo.py b/modules/pytz/zoneinfo/America/Sao_Paulo.py
deleted file mode 100644
index 53183cfb..00000000
--- a/modules/pytz/zoneinfo/America/Sao_Paulo.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for America/Sao_Paulo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Sao_Paulo(DstTzInfo):
- '''America/Sao_Paulo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Sao_Paulo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,3,6,28),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,10,23,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,2,17,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,2,9,2,0,0),
-d(1992,10,25,3,0,0),
-d(1993,1,31,2,0,0),
-d(1993,10,17,3,0,0),
-d(1994,2,20,2,0,0),
-d(1994,10,16,3,0,0),
-d(1995,2,19,2,0,0),
-d(1995,10,15,3,0,0),
-d(1996,2,11,2,0,0),
-d(1996,10,6,3,0,0),
-d(1997,2,16,2,0,0),
-d(1997,10,6,3,0,0),
-d(1998,3,1,2,0,0),
-d(1998,10,11,3,0,0),
-d(1999,2,21,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2001,2,18,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
-d(2002,11,3,3,0,0),
-d(2003,2,16,2,0,0),
-d(2003,10,19,3,0,0),
-d(2004,2,15,2,0,0),
-d(2004,11,2,3,0,0),
-d(2005,2,20,2,0,0),
-d(2005,10,16,3,0,0),
-d(2006,2,19,2,0,0),
-d(2006,10,15,3,0,0),
-d(2007,2,18,2,0,0),
-d(2007,10,21,3,0,0),
-d(2008,2,17,2,0,0),
-d(2008,10,19,3,0,0),
-d(2009,2,15,2,0,0),
-d(2009,10,18,3,0,0),
-d(2010,2,21,2,0,0),
-d(2010,10,17,3,0,0),
-d(2011,2,20,2,0,0),
-d(2011,10,16,3,0,0),
-d(2012,2,19,2,0,0),
-d(2012,10,21,3,0,0),
-d(2013,2,17,2,0,0),
-d(2013,10,20,3,0,0),
-d(2014,2,16,2,0,0),
-d(2014,10,19,3,0,0),
-d(2015,2,15,2,0,0),
-d(2015,10,18,3,0,0),
-d(2016,2,21,2,0,0),
-d(2016,10,16,3,0,0),
-d(2017,2,19,2,0,0),
-d(2017,10,15,3,0,0),
-d(2018,2,18,2,0,0),
-d(2018,10,21,3,0,0),
-d(2019,2,17,2,0,0),
-d(2019,10,20,3,0,0),
-d(2020,2,16,2,0,0),
-d(2020,10,18,3,0,0),
-d(2021,2,21,2,0,0),
-d(2021,10,17,3,0,0),
-d(2022,2,20,2,0,0),
-d(2022,10,16,3,0,0),
-d(2023,2,19,2,0,0),
-d(2023,10,15,3,0,0),
-d(2024,2,18,2,0,0),
-d(2024,10,20,3,0,0),
-d(2025,2,16,2,0,0),
-d(2025,10,19,3,0,0),
-d(2026,2,15,2,0,0),
-d(2026,10,18,3,0,0),
-d(2027,2,21,2,0,0),
-d(2027,10,17,3,0,0),
-d(2028,2,20,2,0,0),
-d(2028,10,15,3,0,0),
-d(2029,2,18,2,0,0),
-d(2029,10,21,3,0,0),
-d(2030,2,17,2,0,0),
-d(2030,10,20,3,0,0),
-d(2031,2,16,2,0,0),
-d(2031,10,19,3,0,0),
-d(2032,2,15,2,0,0),
-d(2032,10,17,3,0,0),
-d(2033,2,20,2,0,0),
-d(2033,10,16,3,0,0),
-d(2034,2,19,2,0,0),
-d(2034,10,15,3,0,0),
-d(2035,2,18,2,0,0),
-d(2035,10,21,3,0,0),
-d(2036,2,17,2,0,0),
-d(2036,10,19,3,0,0),
-d(2037,2,15,2,0,0),
-d(2037,10,18,3,0,0),
- ]
-
- _transition_info = [
-i(-11160,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
- ]
-
-Sao_Paulo = Sao_Paulo()
-
diff --git a/modules/pytz/zoneinfo/America/Scoresbysund.py b/modules/pytz/zoneinfo/America/Scoresbysund.py
deleted file mode 100644
index d9f17ba4..00000000
--- a/modules/pytz/zoneinfo/America/Scoresbysund.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for America/Scoresbysund.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Scoresbysund(DstTzInfo):
- '''America/Scoresbysund timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Scoresbysund'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,28,1,29,0),
-d(1980,4,6,4,0,0),
-d(1980,9,28,4,0,0),
-d(1981,3,29,2,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-5340,0,'LMT'),
-i(-7200,0,'CGT'),
-i(-3600,3600,'CGST'),
-i(-7200,0,'CGT'),
-i(0,7200,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
-i(0,3600,'EGST'),
-i(-3600,0,'EGT'),
- ]
-
-Scoresbysund = Scoresbysund()
-
diff --git a/modules/pytz/zoneinfo/America/Shiprock.py b/modules/pytz/zoneinfo/America/Shiprock.py
deleted file mode 100644
index 2a3e4d09..00000000
--- a/modules/pytz/zoneinfo/America/Shiprock.py
+++ /dev/null
@@ -1,334 +0,0 @@
-'''tzinfo timezone information for America/Shiprock.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Shiprock(DstTzInfo):
- '''America/Shiprock timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Shiprock'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1920,3,28,9,0,0),
-d(1920,10,31,8,0,0),
-d(1921,3,27,9,0,0),
-d(1921,5,22,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,8,0,0),
-d(1966,4,24,9,0,0),
-d(1966,10,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,1,6,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Shiprock = Shiprock()
-
diff --git a/modules/pytz/zoneinfo/America/St_Johns.py b/modules/pytz/zoneinfo/America/St_Johns.py
deleted file mode 100644
index cbfc2cff..00000000
--- a/modules/pytz/zoneinfo/America/St_Johns.py
+++ /dev/null
@@ -1,496 +0,0 @@
-'''tzinfo timezone information for America/St_Johns.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class St_Johns(DstTzInfo):
- '''America/St_Johns timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/St_Johns'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,4,8,5,30,52),
-d(1917,9,17,4,30,52),
-d(1918,4,14,5,30,52),
-d(1918,10,31,4,30,52),
-d(1919,5,6,2,30,52),
-d(1919,8,13,1,30,52),
-d(1920,5,3,2,30,52),
-d(1920,11,1,1,30,52),
-d(1921,5,2,2,30,52),
-d(1921,10,31,1,30,52),
-d(1922,5,8,2,30,52),
-d(1922,10,30,1,30,52),
-d(1923,5,7,2,30,52),
-d(1923,10,29,1,30,52),
-d(1924,5,5,2,30,52),
-d(1924,10,27,1,30,52),
-d(1925,5,4,2,30,52),
-d(1925,10,26,1,30,52),
-d(1926,5,3,2,30,52),
-d(1926,11,1,1,30,52),
-d(1927,5,2,2,30,52),
-d(1927,10,31,1,30,52),
-d(1928,5,7,2,30,52),
-d(1928,10,29,1,30,52),
-d(1929,5,6,2,30,52),
-d(1929,10,28,1,30,52),
-d(1930,5,5,2,30,52),
-d(1930,10,27,1,30,52),
-d(1931,5,4,2,30,52),
-d(1931,10,26,1,30,52),
-d(1932,5,2,2,30,52),
-d(1932,10,31,1,30,52),
-d(1933,5,8,2,30,52),
-d(1933,10,30,1,30,52),
-d(1934,5,7,2,30,52),
-d(1934,10,29,1,30,52),
-d(1935,3,30,3,30,52),
-d(1935,5,6,2,30,0),
-d(1935,10,28,1,30,0),
-d(1936,5,11,3,30,0),
-d(1936,10,5,2,30,0),
-d(1937,5,10,3,30,0),
-d(1937,10,4,2,30,0),
-d(1938,5,9,3,30,0),
-d(1938,10,3,2,30,0),
-d(1939,5,15,3,30,0),
-d(1939,10,2,2,30,0),
-d(1940,5,13,3,30,0),
-d(1940,10,7,2,30,0),
-d(1941,5,12,3,30,0),
-d(1941,10,6,2,30,0),
-d(1942,5,11,3,30,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,4,30,0),
-d(1946,5,12,5,30,0),
-d(1946,10,6,4,30,0),
-d(1947,5,11,5,30,0),
-d(1947,10,5,4,30,0),
-d(1948,5,9,5,30,0),
-d(1948,10,3,4,30,0),
-d(1949,5,8,5,30,0),
-d(1949,10,2,4,30,0),
-d(1950,5,14,5,30,0),
-d(1950,10,8,4,30,0),
-d(1951,4,29,5,30,0),
-d(1951,9,30,4,30,0),
-d(1952,4,27,5,30,0),
-d(1952,9,28,4,30,0),
-d(1953,4,26,5,30,0),
-d(1953,9,27,4,30,0),
-d(1954,4,25,5,30,0),
-d(1954,9,26,4,30,0),
-d(1955,4,24,5,30,0),
-d(1955,9,25,4,30,0),
-d(1956,4,29,5,30,0),
-d(1956,9,30,4,30,0),
-d(1957,4,28,5,30,0),
-d(1957,9,29,4,30,0),
-d(1958,4,27,5,30,0),
-d(1958,9,28,4,30,0),
-d(1959,4,26,5,30,0),
-d(1959,9,27,4,30,0),
-d(1960,4,24,5,30,0),
-d(1960,10,30,4,30,0),
-d(1961,4,30,5,30,0),
-d(1961,10,29,4,30,0),
-d(1962,4,29,5,30,0),
-d(1962,10,28,4,30,0),
-d(1963,4,28,5,30,0),
-d(1963,10,27,4,30,0),
-d(1964,4,26,5,30,0),
-d(1964,10,25,4,30,0),
-d(1965,4,25,5,30,0),
-d(1965,10,31,4,30,0),
-d(1966,4,24,5,30,0),
-d(1966,10,30,4,30,0),
-d(1967,4,30,5,30,0),
-d(1967,10,29,4,30,0),
-d(1968,4,28,5,30,0),
-d(1968,10,27,4,30,0),
-d(1969,4,27,5,30,0),
-d(1969,10,26,4,30,0),
-d(1970,4,26,5,30,0),
-d(1970,10,25,4,30,0),
-d(1971,4,25,5,30,0),
-d(1971,10,31,4,30,0),
-d(1972,4,30,5,30,0),
-d(1972,10,29,4,30,0),
-d(1973,4,29,5,30,0),
-d(1973,10,28,4,30,0),
-d(1974,4,28,5,30,0),
-d(1974,10,27,4,30,0),
-d(1975,4,27,5,30,0),
-d(1975,10,26,4,30,0),
-d(1976,4,25,5,30,0),
-d(1976,10,31,4,30,0),
-d(1977,4,24,5,30,0),
-d(1977,10,30,4,30,0),
-d(1978,4,30,5,30,0),
-d(1978,10,29,4,30,0),
-d(1979,4,29,5,30,0),
-d(1979,10,28,4,30,0),
-d(1980,4,27,5,30,0),
-d(1980,10,26,4,30,0),
-d(1981,4,26,5,30,0),
-d(1981,10,25,4,30,0),
-d(1982,4,25,5,30,0),
-d(1982,10,31,4,30,0),
-d(1983,4,24,5,30,0),
-d(1983,10,30,4,30,0),
-d(1984,4,29,5,30,0),
-d(1984,10,28,4,30,0),
-d(1985,4,28,5,30,0),
-d(1985,10,27,4,30,0),
-d(1986,4,27,5,30,0),
-d(1986,10,26,4,30,0),
-d(1987,4,5,3,31,0),
-d(1987,10,25,2,31,0),
-d(1988,4,3,3,31,0),
-d(1988,10,30,1,31,0),
-d(1989,4,2,3,31,0),
-d(1989,10,29,2,31,0),
-d(1990,4,1,3,31,0),
-d(1990,10,28,2,31,0),
-d(1991,4,7,3,31,0),
-d(1991,10,27,2,31,0),
-d(1992,4,5,3,31,0),
-d(1992,10,25,2,31,0),
-d(1993,4,4,3,31,0),
-d(1993,10,31,2,31,0),
-d(1994,4,3,3,31,0),
-d(1994,10,30,2,31,0),
-d(1995,4,2,3,31,0),
-d(1995,10,29,2,31,0),
-d(1996,4,7,3,31,0),
-d(1996,10,27,2,31,0),
-d(1997,4,6,3,31,0),
-d(1997,10,26,2,31,0),
-d(1998,4,5,3,31,0),
-d(1998,10,25,2,31,0),
-d(1999,4,4,3,31,0),
-d(1999,10,31,2,31,0),
-d(2000,4,2,3,31,0),
-d(2000,10,29,2,31,0),
-d(2001,4,1,3,31,0),
-d(2001,10,28,2,31,0),
-d(2002,4,7,3,31,0),
-d(2002,10,27,2,31,0),
-d(2003,4,6,3,31,0),
-d(2003,10,26,2,31,0),
-d(2004,4,4,3,31,0),
-d(2004,10,31,2,31,0),
-d(2005,4,3,3,31,0),
-d(2005,10,30,2,31,0),
-d(2006,4,2,3,31,0),
-d(2006,10,29,2,31,0),
-d(2007,4,1,3,31,0),
-d(2007,10,28,2,31,0),
-d(2008,4,6,3,31,0),
-d(2008,10,26,2,31,0),
-d(2009,4,5,3,31,0),
-d(2009,10,25,2,31,0),
-d(2010,4,4,3,31,0),
-d(2010,10,31,2,31,0),
-d(2011,4,3,3,31,0),
-d(2011,10,30,2,31,0),
-d(2012,4,1,3,31,0),
-d(2012,10,28,2,31,0),
-d(2013,4,7,3,31,0),
-d(2013,10,27,2,31,0),
-d(2014,4,6,3,31,0),
-d(2014,10,26,2,31,0),
-d(2015,4,5,3,31,0),
-d(2015,10,25,2,31,0),
-d(2016,4,3,3,31,0),
-d(2016,10,30,2,31,0),
-d(2017,4,2,3,31,0),
-d(2017,10,29,2,31,0),
-d(2018,4,1,3,31,0),
-d(2018,10,28,2,31,0),
-d(2019,4,7,3,31,0),
-d(2019,10,27,2,31,0),
-d(2020,4,5,3,31,0),
-d(2020,10,25,2,31,0),
-d(2021,4,4,3,31,0),
-d(2021,10,31,2,31,0),
-d(2022,4,3,3,31,0),
-d(2022,10,30,2,31,0),
-d(2023,4,2,3,31,0),
-d(2023,10,29,2,31,0),
-d(2024,4,7,3,31,0),
-d(2024,10,27,2,31,0),
-d(2025,4,6,3,31,0),
-d(2025,10,26,2,31,0),
-d(2026,4,5,3,31,0),
-d(2026,10,25,2,31,0),
-d(2027,4,4,3,31,0),
-d(2027,10,31,2,31,0),
-d(2028,4,2,3,31,0),
-d(2028,10,29,2,31,0),
-d(2029,4,1,3,31,0),
-d(2029,10,28,2,31,0),
-d(2030,4,7,3,31,0),
-d(2030,10,27,2,31,0),
-d(2031,4,6,3,31,0),
-d(2031,10,26,2,31,0),
-d(2032,4,4,3,31,0),
-d(2032,10,31,2,31,0),
-d(2033,4,3,3,31,0),
-d(2033,10,30,2,31,0),
-d(2034,4,2,3,31,0),
-d(2034,10,29,2,31,0),
-d(2035,4,1,3,31,0),
-d(2035,10,28,2,31,0),
-d(2036,4,6,3,31,0),
-d(2036,10,26,2,31,0),
-d(2037,4,5,3,31,0),
-d(2037,10,25,2,31,0),
- ]
-
- _transition_info = [
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NWT'),
-i(-9000,3600,'NPT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-5400,7200,'NDDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
- ]
-
-St_Johns = St_Johns()
-
diff --git a/modules/pytz/zoneinfo/America/St_Kitts.py b/modules/pytz/zoneinfo/America/St_Kitts.py
deleted file mode 100644
index 6092919d..00000000
--- a/modules/pytz/zoneinfo/America/St_Kitts.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/St_Kitts.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class St_Kitts(DstTzInfo):
- '''America/St_Kitts timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/St_Kitts'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,3,2,4,10,52),
- ]
-
- _transition_info = [
-i(-15060,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-St_Kitts = St_Kitts()
-
diff --git a/modules/pytz/zoneinfo/America/St_Lucia.py b/modules/pytz/zoneinfo/America/St_Lucia.py
deleted file mode 100644
index ae785136..00000000
--- a/modules/pytz/zoneinfo/America/St_Lucia.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/St_Lucia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class St_Lucia(DstTzInfo):
- '''America/St_Lucia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/St_Lucia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,4,4,0),
- ]
-
- _transition_info = [
-i(-14640,0,'CMT'),
-i(-14400,0,'AST'),
- ]
-
-St_Lucia = St_Lucia()
-
diff --git a/modules/pytz/zoneinfo/America/St_Thomas.py b/modules/pytz/zoneinfo/America/St_Thomas.py
deleted file mode 100644
index 4367e35a..00000000
--- a/modules/pytz/zoneinfo/America/St_Thomas.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/St_Thomas.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class St_Thomas(DstTzInfo):
- '''America/St_Thomas timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/St_Thomas'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,4,19,44),
- ]
-
- _transition_info = [
-i(-15600,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-St_Thomas = St_Thomas()
-
diff --git a/modules/pytz/zoneinfo/America/St_Vincent.py b/modules/pytz/zoneinfo/America/St_Vincent.py
deleted file mode 100644
index fca39da8..00000000
--- a/modules/pytz/zoneinfo/America/St_Vincent.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/St_Vincent.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class St_Vincent(DstTzInfo):
- '''America/St_Vincent timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/St_Vincent'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,4,4,56),
- ]
-
- _transition_info = [
-i(-14700,0,'KMT'),
-i(-14400,0,'AST'),
- ]
-
-St_Vincent = St_Vincent()
-
diff --git a/modules/pytz/zoneinfo/America/Swift_Current.py b/modules/pytz/zoneinfo/America/Swift_Current.py
deleted file mode 100644
index e4bab9f7..00000000
--- a/modules/pytz/zoneinfo/America/Swift_Current.py
+++ /dev/null
@@ -1,66 +0,0 @@
-'''tzinfo timezone information for America/Swift_Current.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Swift_Current(DstTzInfo):
- '''America/Swift_Current timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Swift_Current'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,9,1,7,11,20),
-d(1918,4,14,9,0,0),
-d(1918,10,31,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1946,4,28,9,0,0),
-d(1946,10,13,8,0,0),
-d(1947,4,27,9,0,0),
-d(1947,9,28,8,0,0),
-d(1948,4,25,9,0,0),
-d(1948,9,26,8,0,0),
-d(1949,4,24,9,0,0),
-d(1949,9,25,8,0,0),
-d(1957,4,28,9,0,0),
-d(1957,10,27,8,0,0),
-d(1959,4,26,9,0,0),
-d(1959,10,25,8,0,0),
-d(1960,4,24,9,0,0),
-d(1960,9,25,8,0,0),
-d(1961,4,30,9,0,0),
-d(1961,9,24,8,0,0),
-d(1972,4,30,9,0,0),
- ]
-
- _transition_info = [
-i(-25860,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
- ]
-
-Swift_Current = Swift_Current()
-
diff --git a/modules/pytz/zoneinfo/America/Tegucigalpa.py b/modules/pytz/zoneinfo/America/Tegucigalpa.py
deleted file mode 100644
index 3419daae..00000000
--- a/modules/pytz/zoneinfo/America/Tegucigalpa.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for America/Tegucigalpa.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tegucigalpa(DstTzInfo):
- '''America/Tegucigalpa timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Tegucigalpa'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,4,1,5,48,52),
-d(1987,5,3,6,0,0),
-d(1987,9,27,5,0,0),
-d(1988,5,1,6,0,0),
-d(1988,9,25,5,0,0),
- ]
-
- _transition_info = [
-i(-20940,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Tegucigalpa = Tegucigalpa()
-
diff --git a/modules/pytz/zoneinfo/America/Thule.py b/modules/pytz/zoneinfo/America/Thule.py
deleted file mode 100644
index 26f61c05..00000000
--- a/modules/pytz/zoneinfo/America/Thule.py
+++ /dev/null
@@ -1,210 +0,0 @@
-'''tzinfo timezone information for America/Thule.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Thule(DstTzInfo):
- '''America/Thule timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Thule'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,28,4,35,8),
-d(1991,3,31,6,0,0),
-d(1991,9,29,5,0,0),
-d(1992,3,29,6,0,0),
-d(1992,9,27,5,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,5,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,5,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,5,0,0),
-d(1996,4,7,6,0,0),
-d(1996,10,27,5,0,0),
-d(1997,4,6,6,0,0),
-d(1997,10,26,5,0,0),
-d(1998,4,5,6,0,0),
-d(1998,10,25,5,0,0),
-d(1999,4,4,6,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,6,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,6,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,6,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,6,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,6,0,0),
-d(2004,10,31,5,0,0),
-d(2005,4,3,6,0,0),
-d(2005,10,30,5,0,0),
-d(2006,4,2,6,0,0),
-d(2006,10,29,5,0,0),
-d(2007,4,1,6,0,0),
-d(2007,10,28,5,0,0),
-d(2008,4,6,6,0,0),
-d(2008,10,26,5,0,0),
-d(2009,4,5,6,0,0),
-d(2009,10,25,5,0,0),
-d(2010,4,4,6,0,0),
-d(2010,10,31,5,0,0),
-d(2011,4,3,6,0,0),
-d(2011,10,30,5,0,0),
-d(2012,4,1,6,0,0),
-d(2012,10,28,5,0,0),
-d(2013,4,7,6,0,0),
-d(2013,10,27,5,0,0),
-d(2014,4,6,6,0,0),
-d(2014,10,26,5,0,0),
-d(2015,4,5,6,0,0),
-d(2015,10,25,5,0,0),
-d(2016,4,3,6,0,0),
-d(2016,10,30,5,0,0),
-d(2017,4,2,6,0,0),
-d(2017,10,29,5,0,0),
-d(2018,4,1,6,0,0),
-d(2018,10,28,5,0,0),
-d(2019,4,7,6,0,0),
-d(2019,10,27,5,0,0),
-d(2020,4,5,6,0,0),
-d(2020,10,25,5,0,0),
-d(2021,4,4,6,0,0),
-d(2021,10,31,5,0,0),
-d(2022,4,3,6,0,0),
-d(2022,10,30,5,0,0),
-d(2023,4,2,6,0,0),
-d(2023,10,29,5,0,0),
-d(2024,4,7,6,0,0),
-d(2024,10,27,5,0,0),
-d(2025,4,6,6,0,0),
-d(2025,10,26,5,0,0),
-d(2026,4,5,6,0,0),
-d(2026,10,25,5,0,0),
-d(2027,4,4,6,0,0),
-d(2027,10,31,5,0,0),
-d(2028,4,2,6,0,0),
-d(2028,10,29,5,0,0),
-d(2029,4,1,6,0,0),
-d(2029,10,28,5,0,0),
-d(2030,4,7,6,0,0),
-d(2030,10,27,5,0,0),
-d(2031,4,6,6,0,0),
-d(2031,10,26,5,0,0),
-d(2032,4,4,6,0,0),
-d(2032,10,31,5,0,0),
-d(2033,4,3,6,0,0),
-d(2033,10,30,5,0,0),
-d(2034,4,2,6,0,0),
-d(2034,10,29,5,0,0),
-d(2035,4,1,6,0,0),
-d(2035,10,28,5,0,0),
-d(2036,4,6,6,0,0),
-d(2036,10,26,5,0,0),
-d(2037,4,5,6,0,0),
-d(2037,10,25,5,0,0),
- ]
-
- _transition_info = [
-i(-16500,0,'LMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Thule = Thule()
-
diff --git a/modules/pytz/zoneinfo/America/Thunder_Bay.py b/modules/pytz/zoneinfo/America/Thunder_Bay.py
deleted file mode 100644
index 699cad24..00000000
--- a/modules/pytz/zoneinfo/America/Thunder_Bay.py
+++ /dev/null
@@ -1,296 +0,0 @@
-'''tzinfo timezone information for America/Thunder_Bay.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Thunder_Bay(DstTzInfo):
- '''America/Thunder_Bay timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Thunder_Bay'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1910,1,1,6,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Thunder_Bay = Thunder_Bay()
-
diff --git a/modules/pytz/zoneinfo/America/Tijuana.py b/modules/pytz/zoneinfo/America/Tijuana.py
deleted file mode 100644
index 3f0bdcb7..00000000
--- a/modules/pytz/zoneinfo/America/Tijuana.py
+++ /dev/null
@@ -1,316 +0,0 @@
-'''tzinfo timezone information for America/Tijuana.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tijuana(DstTzInfo):
- '''America/Tijuana timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Tijuana'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,8,0,0),
-d(1924,1,1,7,0,0),
-d(1927,6,11,7,0,0),
-d(1930,11,15,7,0,0),
-d(1931,4,1,8,0,0),
-d(1931,9,30,7,0,0),
-d(1942,4,24,8,0,0),
-d(1945,11,12,7,0,0),
-d(1948,4,5,8,0,0),
-d(1949,1,14,7,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-28080,0,'LMT'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Tijuana = Tijuana()
-
diff --git a/modules/pytz/zoneinfo/America/Toronto.py b/modules/pytz/zoneinfo/America/Toronto.py
deleted file mode 100644
index 25d4ae2f..00000000
--- a/modules/pytz/zoneinfo/America/Toronto.py
+++ /dev/null
@@ -1,484 +0,0 @@
-'''tzinfo timezone information for America/Toronto.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Toronto(DstTzInfo):
- '''America/Toronto timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Toronto'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,7,0,0),
-d(1918,10,31,6,0,0),
-d(1919,3,31,4,30,0),
-d(1919,10,26,4,0,0),
-d(1920,5,2,7,0,0),
-d(1920,9,26,4,0,0),
-d(1921,5,15,7,0,0),
-d(1921,9,15,6,0,0),
-d(1922,5,14,7,0,0),
-d(1922,9,17,6,0,0),
-d(1923,5,13,7,0,0),
-d(1923,9,16,6,0,0),
-d(1924,5,4,7,0,0),
-d(1924,9,21,6,0,0),
-d(1925,5,3,7,0,0),
-d(1925,9,20,6,0,0),
-d(1926,5,2,7,0,0),
-d(1926,9,19,6,0,0),
-d(1927,5,1,7,0,0),
-d(1927,9,25,6,0,0),
-d(1928,4,29,7,0,0),
-d(1928,9,30,6,0,0),
-d(1929,4,28,7,0,0),
-d(1929,9,29,6,0,0),
-d(1930,4,27,7,0,0),
-d(1930,9,28,6,0,0),
-d(1931,4,26,7,0,0),
-d(1931,9,27,6,0,0),
-d(1932,5,1,7,0,0),
-d(1932,9,25,6,0,0),
-d(1933,4,30,7,0,0),
-d(1933,10,1,6,0,0),
-d(1934,4,29,7,0,0),
-d(1934,9,30,6,0,0),
-d(1935,4,28,7,0,0),
-d(1935,9,29,6,0,0),
-d(1936,4,26,7,0,0),
-d(1936,9,27,6,0,0),
-d(1937,4,25,7,0,0),
-d(1937,9,26,6,0,0),
-d(1938,4,24,7,0,0),
-d(1938,9,25,6,0,0),
-d(1939,4,30,7,0,0),
-d(1939,9,24,6,0,0),
-d(1940,4,28,7,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1946,4,28,7,0,0),
-d(1946,9,29,6,0,0),
-d(1947,4,27,5,0,0),
-d(1947,9,28,4,0,0),
-d(1948,4,25,5,0,0),
-d(1948,9,26,4,0,0),
-d(1949,4,24,5,0,0),
-d(1949,11,27,4,0,0),
-d(1950,4,30,7,0,0),
-d(1950,11,26,6,0,0),
-d(1951,4,29,7,0,0),
-d(1951,9,30,6,0,0),
-d(1952,4,27,7,0,0),
-d(1952,9,28,6,0,0),
-d(1953,4,26,7,0,0),
-d(1953,9,27,6,0,0),
-d(1954,4,25,7,0,0),
-d(1954,9,26,6,0,0),
-d(1955,4,24,7,0,0),
-d(1955,9,25,6,0,0),
-d(1956,4,29,7,0,0),
-d(1956,9,30,6,0,0),
-d(1957,4,28,7,0,0),
-d(1957,10,27,6,0,0),
-d(1958,4,27,7,0,0),
-d(1958,10,26,6,0,0),
-d(1959,4,26,7,0,0),
-d(1959,10,25,6,0,0),
-d(1960,4,24,7,0,0),
-d(1960,10,30,6,0,0),
-d(1961,4,30,7,0,0),
-d(1961,10,29,6,0,0),
-d(1962,4,29,7,0,0),
-d(1962,10,28,6,0,0),
-d(1963,4,28,7,0,0),
-d(1963,10,27,6,0,0),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Toronto = Toronto()
-
diff --git a/modules/pytz/zoneinfo/America/Tortola.py b/modules/pytz/zoneinfo/America/Tortola.py
deleted file mode 100644
index 485f3841..00000000
--- a/modules/pytz/zoneinfo/America/Tortola.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Tortola.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tortola(DstTzInfo):
- '''America/Tortola timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Tortola'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,4,18,28),
- ]
-
- _transition_info = [
-i(-15480,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Tortola = Tortola()
-
diff --git a/modules/pytz/zoneinfo/America/Vancouver.py b/modules/pytz/zoneinfo/America/Vancouver.py
deleted file mode 100644
index 9ca08a35..00000000
--- a/modules/pytz/zoneinfo/America/Vancouver.py
+++ /dev/null
@@ -1,398 +0,0 @@
-'''tzinfo timezone information for America/Vancouver.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vancouver(DstTzInfo):
- '''America/Vancouver timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Vancouver'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,10,0,0),
-d(1918,10,31,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1946,4,28,10,0,0),
-d(1946,10,13,9,0,0),
-d(1947,4,27,10,0,0),
-d(1947,9,28,9,0,0),
-d(1948,4,25,10,0,0),
-d(1948,9,26,9,0,0),
-d(1949,4,24,10,0,0),
-d(1949,9,25,9,0,0),
-d(1950,4,30,10,0,0),
-d(1950,9,24,9,0,0),
-d(1951,4,29,10,0,0),
-d(1951,9,30,9,0,0),
-d(1952,4,27,10,0,0),
-d(1952,9,28,9,0,0),
-d(1953,4,26,10,0,0),
-d(1953,9,27,9,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1961,4,30,10,0,0),
-d(1961,9,24,9,0,0),
-d(1962,4,29,10,0,0),
-d(1962,10,28,9,0,0),
-d(1963,4,28,10,0,0),
-d(1963,10,27,9,0,0),
-d(1964,4,26,10,0,0),
-d(1964,10,25,9,0,0),
-d(1965,4,25,10,0,0),
-d(1965,10,31,9,0,0),
-d(1966,4,24,10,0,0),
-d(1966,10,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,4,28,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,4,27,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Vancouver = Vancouver()
-
diff --git a/modules/pytz/zoneinfo/America/Virgin.py b/modules/pytz/zoneinfo/America/Virgin.py
deleted file mode 100644
index 9d6529ac..00000000
--- a/modules/pytz/zoneinfo/America/Virgin.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for America/Virgin.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Virgin(DstTzInfo):
- '''America/Virgin timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Virgin'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,7,1,4,19,44),
- ]
-
- _transition_info = [
-i(-15600,0,'LMT'),
-i(-14400,0,'AST'),
- ]
-
-Virgin = Virgin()
-
diff --git a/modules/pytz/zoneinfo/America/Whitehorse.py b/modules/pytz/zoneinfo/America/Whitehorse.py
deleted file mode 100644
index 6cf824e7..00000000
--- a/modules/pytz/zoneinfo/America/Whitehorse.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for America/Whitehorse.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Whitehorse(DstTzInfo):
- '''America/Whitehorse timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Whitehorse'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,11,0,0),
-d(1918,10,27,10,0,0),
-d(1919,5,25,11,0,0),
-d(1919,11,1,8,0,0),
-d(1942,2,9,11,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,10,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,9,0,0),
-d(1966,7,1,11,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YWT'),
-i(-28800,3600,'YPT'),
-i(-32400,0,'YST'),
-i(-25200,7200,'YDDT'),
-i(-32400,0,'YST'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Whitehorse = Whitehorse()
-
diff --git a/modules/pytz/zoneinfo/America/Winnipeg.py b/modules/pytz/zoneinfo/America/Winnipeg.py
deleted file mode 100644
index a91a4713..00000000
--- a/modules/pytz/zoneinfo/America/Winnipeg.py
+++ /dev/null
@@ -1,390 +0,0 @@
-'''tzinfo timezone information for America/Winnipeg.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Winnipeg(DstTzInfo):
- '''America/Winnipeg timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Winnipeg'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,23,6,0,0),
-d(1916,9,17,5,0,0),
-d(1918,4,14,8,0,0),
-d(1918,10,31,7,0,0),
-d(1937,5,16,8,0,0),
-d(1937,9,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,5,12,8,0,0),
-d(1946,10,13,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,5,1,8,0,0),
-d(1950,9,30,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,9,25,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,9,30,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,9,28,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,9,25,7,0,0),
-d(1963,4,28,8,0,0),
-d(1963,9,22,7,0,0),
-d(1966,4,24,8,0,0),
-d(1966,10,30,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,4,28,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,4,27,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Winnipeg = Winnipeg()
-
diff --git a/modules/pytz/zoneinfo/America/Yakutat.py b/modules/pytz/zoneinfo/America/Yakutat.py
deleted file mode 100644
index b98a6afd..00000000
--- a/modules/pytz/zoneinfo/America/Yakutat.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for America/Yakutat.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yakutat(DstTzInfo):
- '''America/Yakutat timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Yakutat'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,11,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,10,0,0),
-d(1969,4,27,11,0,0),
-d(1969,10,26,10,0,0),
-d(1970,4,26,11,0,0),
-d(1970,10,25,10,0,0),
-d(1971,4,25,11,0,0),
-d(1971,10,31,10,0,0),
-d(1972,4,30,11,0,0),
-d(1972,10,29,10,0,0),
-d(1973,4,29,11,0,0),
-d(1973,10,28,10,0,0),
-d(1974,1,6,11,0,0),
-d(1974,10,27,10,0,0),
-d(1975,2,23,11,0,0),
-d(1975,10,26,10,0,0),
-d(1976,4,25,11,0,0),
-d(1976,10,31,10,0,0),
-d(1977,4,24,11,0,0),
-d(1977,10,30,10,0,0),
-d(1978,4,30,11,0,0),
-d(1978,10,29,10,0,0),
-d(1979,4,29,11,0,0),
-d(1979,10,28,10,0,0),
-d(1980,4,27,11,0,0),
-d(1980,10,26,10,0,0),
-d(1981,4,26,11,0,0),
-d(1981,10,25,10,0,0),
-d(1982,4,25,11,0,0),
-d(1982,10,31,10,0,0),
-d(1983,4,24,11,0,0),
-d(1983,10,30,10,0,0),
-d(1983,11,30,9,0,0),
-d(1984,4,29,11,0,0),
-d(1984,10,28,10,0,0),
-d(1985,4,28,11,0,0),
-d(1985,10,27,10,0,0),
-d(1986,4,27,11,0,0),
-d(1986,10,26,10,0,0),
-d(1987,4,5,11,0,0),
-d(1987,10,25,10,0,0),
-d(1988,4,3,11,0,0),
-d(1988,10,30,10,0,0),
-d(1989,4,2,11,0,0),
-d(1989,10,29,10,0,0),
-d(1990,4,1,11,0,0),
-d(1990,10,28,10,0,0),
-d(1991,4,7,11,0,0),
-d(1991,10,27,10,0,0),
-d(1992,4,5,11,0,0),
-d(1992,10,25,10,0,0),
-d(1993,4,4,11,0,0),
-d(1993,10,31,10,0,0),
-d(1994,4,3,11,0,0),
-d(1994,10,30,10,0,0),
-d(1995,4,2,11,0,0),
-d(1995,10,29,10,0,0),
-d(1996,4,7,11,0,0),
-d(1996,10,27,10,0,0),
-d(1997,4,6,11,0,0),
-d(1997,10,26,10,0,0),
-d(1998,4,5,11,0,0),
-d(1998,10,25,10,0,0),
-d(1999,4,4,11,0,0),
-d(1999,10,31,10,0,0),
-d(2000,4,2,11,0,0),
-d(2000,10,29,10,0,0),
-d(2001,4,1,11,0,0),
-d(2001,10,28,10,0,0),
-d(2002,4,7,11,0,0),
-d(2002,10,27,10,0,0),
-d(2003,4,6,11,0,0),
-d(2003,10,26,10,0,0),
-d(2004,4,4,11,0,0),
-d(2004,10,31,10,0,0),
-d(2005,4,3,11,0,0),
-d(2005,10,30,10,0,0),
-d(2006,4,2,11,0,0),
-d(2006,10,29,10,0,0),
-d(2007,3,11,11,0,0),
-d(2007,11,4,10,0,0),
-d(2008,3,9,11,0,0),
-d(2008,11,2,10,0,0),
-d(2009,3,8,11,0,0),
-d(2009,11,1,10,0,0),
-d(2010,3,14,11,0,0),
-d(2010,11,7,10,0,0),
-d(2011,3,13,11,0,0),
-d(2011,11,6,10,0,0),
-d(2012,3,11,11,0,0),
-d(2012,11,4,10,0,0),
-d(2013,3,10,11,0,0),
-d(2013,11,3,10,0,0),
-d(2014,3,9,11,0,0),
-d(2014,11,2,10,0,0),
-d(2015,3,8,11,0,0),
-d(2015,11,1,10,0,0),
-d(2016,3,13,11,0,0),
-d(2016,11,6,10,0,0),
-d(2017,3,12,11,0,0),
-d(2017,11,5,10,0,0),
-d(2018,3,11,11,0,0),
-d(2018,11,4,10,0,0),
-d(2019,3,10,11,0,0),
-d(2019,11,3,10,0,0),
-d(2020,3,8,11,0,0),
-d(2020,11,1,10,0,0),
-d(2021,3,14,11,0,0),
-d(2021,11,7,10,0,0),
-d(2022,3,13,11,0,0),
-d(2022,11,6,10,0,0),
-d(2023,3,12,11,0,0),
-d(2023,11,5,10,0,0),
-d(2024,3,10,11,0,0),
-d(2024,11,3,10,0,0),
-d(2025,3,9,11,0,0),
-d(2025,11,2,10,0,0),
-d(2026,3,8,11,0,0),
-d(2026,11,1,10,0,0),
-d(2027,3,14,11,0,0),
-d(2027,11,7,10,0,0),
-d(2028,3,12,11,0,0),
-d(2028,11,5,10,0,0),
-d(2029,3,11,11,0,0),
-d(2029,11,4,10,0,0),
-d(2030,3,10,11,0,0),
-d(2030,11,3,10,0,0),
-d(2031,3,9,11,0,0),
-d(2031,11,2,10,0,0),
-d(2032,3,14,11,0,0),
-d(2032,11,7,10,0,0),
-d(2033,3,13,11,0,0),
-d(2033,11,6,10,0,0),
-d(2034,3,12,11,0,0),
-d(2034,11,5,10,0,0),
-d(2035,3,11,11,0,0),
-d(2035,11,4,10,0,0),
-d(2036,3,9,11,0,0),
-d(2036,11,2,10,0,0),
-d(2037,3,8,11,0,0),
-d(2037,11,1,10,0,0),
- ]
-
- _transition_info = [
-i(-32400,0,'YST'),
-i(-28800,3600,'YWT'),
-i(-28800,3600,'YPT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
- ]
-
-Yakutat = Yakutat()
-
diff --git a/modules/pytz/zoneinfo/America/Yellowknife.py b/modules/pytz/zoneinfo/America/Yellowknife.py
deleted file mode 100644
index 90166cd3..00000000
--- a/modules/pytz/zoneinfo/America/Yellowknife.py
+++ /dev/null
@@ -1,270 +0,0 @@
-'''tzinfo timezone information for America/Yellowknife.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yellowknife(DstTzInfo):
- '''America/Yellowknife timezone definition. See datetime.tzinfo for details'''
-
- zone = 'America/Yellowknife'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,5,25,9,0,0),
-d(1919,11,1,6,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,7,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-18000,7200,'MDDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Yellowknife = Yellowknife()
-
diff --git a/modules/pytz/zoneinfo/America/__init__.py b/modules/pytz/zoneinfo/America/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Antarctica/Casey.py b/modules/pytz/zoneinfo/Antarctica/Casey.py
deleted file mode 100644
index b4bcceb4..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Casey.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Antarctica/Casey.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Casey(DstTzInfo):
- '''Antarctica/Casey timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Casey'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1969,1,1,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(28800,0,'WST'),
- ]
-
-Casey = Casey()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/Davis.py b/modules/pytz/zoneinfo/Antarctica/Davis.py
deleted file mode 100644
index 6c1384fa..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Davis.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Antarctica/Davis.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Davis(DstTzInfo):
- '''Antarctica/Davis timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Davis'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1957,1,13,0,0,0),
-d(1964,10,31,17,0,0),
-d(1969,2,1,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(25200,0,'DAVT'),
-i(0,0,'zzz'),
-i(25200,0,'DAVT'),
- ]
-
-Davis = Davis()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/DumontDUrville.py b/modules/pytz/zoneinfo/Antarctica/DumontDUrville.py
deleted file mode 100644
index 14af4df3..00000000
--- a/modules/pytz/zoneinfo/Antarctica/DumontDUrville.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Antarctica/DumontDUrville.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class DumontDUrville(DstTzInfo):
- '''Antarctica/DumontDUrville timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/DumontDUrville'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1947,1,1,0,0,0),
-d(1952,1,13,14,0,0),
-d(1956,11,1,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(36000,0,'PMT'),
-i(0,0,'zzz'),
-i(36000,0,'DDUT'),
- ]
-
-DumontDUrville = DumontDUrville()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/Mawson.py b/modules/pytz/zoneinfo/Antarctica/Mawson.py
deleted file mode 100644
index ea1bc6c2..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Mawson.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Antarctica/Mawson.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mawson(DstTzInfo):
- '''Antarctica/Mawson timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Mawson'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1954,2,13,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(21600,0,'MAWT'),
- ]
-
-Mawson = Mawson()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/McMurdo.py b/modules/pytz/zoneinfo/Antarctica/McMurdo.py
deleted file mode 100644
index f7a5f472..00000000
--- a/modules/pytz/zoneinfo/Antarctica/McMurdo.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for Antarctica/McMurdo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class McMurdo(DstTzInfo):
- '''Antarctica/McMurdo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/McMurdo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1956,1,1,0,0,0),
-d(1974,11,2,14,0,0),
-d(1975,2,22,14,0,0),
-d(1975,10,25,14,0,0),
-d(1976,3,6,14,0,0),
-d(1976,10,30,14,0,0),
-d(1977,3,5,14,0,0),
-d(1977,10,29,14,0,0),
-d(1978,3,4,14,0,0),
-d(1978,10,28,14,0,0),
-d(1979,3,3,14,0,0),
-d(1979,10,27,14,0,0),
-d(1980,3,1,14,0,0),
-d(1980,10,25,14,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,14,0,0),
-d(1982,3,6,14,0,0),
-d(1982,10,30,14,0,0),
-d(1983,3,5,14,0,0),
-d(1983,10,29,14,0,0),
-d(1984,3,3,14,0,0),
-d(1984,10,27,14,0,0),
-d(1985,3,2,14,0,0),
-d(1985,10,26,14,0,0),
-d(1986,3,1,14,0,0),
-d(1986,10,25,14,0,0),
-d(1987,2,28,14,0,0),
-d(1987,10,24,14,0,0),
-d(1988,3,5,14,0,0),
-d(1988,10,29,14,0,0),
-d(1989,3,4,14,0,0),
-d(1989,10,7,14,0,0),
-d(1990,3,17,14,0,0),
-d(1990,10,6,14,0,0),
-d(1991,3,16,14,0,0),
-d(1991,10,5,14,0,0),
-d(1992,3,14,14,0,0),
-d(1992,10,3,14,0,0),
-d(1993,3,20,14,0,0),
-d(1993,10,2,14,0,0),
-d(1994,3,19,14,0,0),
-d(1994,10,1,14,0,0),
-d(1995,3,18,14,0,0),
-d(1995,9,30,14,0,0),
-d(1996,3,16,14,0,0),
-d(1996,10,5,14,0,0),
-d(1997,3,15,14,0,0),
-d(1997,10,4,14,0,0),
-d(1998,3,14,14,0,0),
-d(1998,10,3,14,0,0),
-d(1999,3,20,14,0,0),
-d(1999,10,2,14,0,0),
-d(2000,3,18,14,0,0),
-d(2000,9,30,14,0,0),
-d(2001,3,17,14,0,0),
-d(2001,10,6,14,0,0),
-d(2002,3,16,14,0,0),
-d(2002,10,5,14,0,0),
-d(2003,3,15,14,0,0),
-d(2003,10,4,14,0,0),
-d(2004,3,20,14,0,0),
-d(2004,10,2,14,0,0),
-d(2005,3,19,14,0,0),
-d(2005,10,1,14,0,0),
-d(2006,3,18,14,0,0),
-d(2006,9,30,14,0,0),
-d(2007,3,17,14,0,0),
-d(2007,10,6,14,0,0),
-d(2008,3,15,14,0,0),
-d(2008,10,4,14,0,0),
-d(2009,3,14,14,0,0),
-d(2009,10,3,14,0,0),
-d(2010,3,20,14,0,0),
-d(2010,10,2,14,0,0),
-d(2011,3,19,14,0,0),
-d(2011,10,1,14,0,0),
-d(2012,3,17,14,0,0),
-d(2012,10,6,14,0,0),
-d(2013,3,16,14,0,0),
-d(2013,10,5,14,0,0),
-d(2014,3,15,14,0,0),
-d(2014,10,4,14,0,0),
-d(2015,3,14,14,0,0),
-d(2015,10,3,14,0,0),
-d(2016,3,19,14,0,0),
-d(2016,10,1,14,0,0),
-d(2017,3,18,14,0,0),
-d(2017,9,30,14,0,0),
-d(2018,3,17,14,0,0),
-d(2018,10,6,14,0,0),
-d(2019,3,16,14,0,0),
-d(2019,10,5,14,0,0),
-d(2020,3,14,14,0,0),
-d(2020,10,3,14,0,0),
-d(2021,3,20,14,0,0),
-d(2021,10,2,14,0,0),
-d(2022,3,19,14,0,0),
-d(2022,10,1,14,0,0),
-d(2023,3,18,14,0,0),
-d(2023,9,30,14,0,0),
-d(2024,3,16,14,0,0),
-d(2024,10,5,14,0,0),
-d(2025,3,15,14,0,0),
-d(2025,10,4,14,0,0),
-d(2026,3,14,14,0,0),
-d(2026,10,3,14,0,0),
-d(2027,3,20,14,0,0),
-d(2027,10,2,14,0,0),
-d(2028,3,18,14,0,0),
-d(2028,9,30,14,0,0),
-d(2029,3,17,14,0,0),
-d(2029,10,6,14,0,0),
-d(2030,3,16,14,0,0),
-d(2030,10,5,14,0,0),
-d(2031,3,15,14,0,0),
-d(2031,10,4,14,0,0),
-d(2032,3,20,14,0,0),
-d(2032,10,2,14,0,0),
-d(2033,3,19,14,0,0),
-d(2033,10,1,14,0,0),
-d(2034,3,18,14,0,0),
-d(2034,9,30,14,0,0),
-d(2035,3,17,14,0,0),
-d(2035,10,6,14,0,0),
-d(2036,3,15,14,0,0),
-d(2036,10,4,14,0,0),
-d(2037,3,14,14,0,0),
-d(2037,10,3,14,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
- ]
-
-McMurdo = McMurdo()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/Palmer.py b/modules/pytz/zoneinfo/Antarctica/Palmer.py
deleted file mode 100644
index e644670f..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Palmer.py
+++ /dev/null
@@ -1,282 +0,0 @@
-'''tzinfo timezone information for Antarctica/Palmer.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Palmer(DstTzInfo):
- '''Antarctica/Palmer timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Palmer'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1965,1,1,0,0,0),
-d(1965,3,1,3,0,0),
-d(1965,10,15,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,10,15,4,0,0),
-d(1967,4,1,3,0,0),
-d(1967,10,1,4,0,0),
-d(1968,4,7,3,0,0),
-d(1968,10,6,4,0,0),
-d(1969,4,6,3,0,0),
-d(1969,10,5,4,0,0),
-d(1974,1,23,3,0,0),
-d(1974,5,1,2,0,0),
-d(1974,10,6,3,0,0),
-d(1975,4,6,2,0,0),
-d(1975,10,5,3,0,0),
-d(1976,4,4,2,0,0),
-d(1976,10,3,3,0,0),
-d(1977,4,3,2,0,0),
-d(1982,5,1,3,0,0),
-d(1982,10,10,4,0,0),
-d(1983,3,13,3,0,0),
-d(1983,10,9,4,0,0),
-d(1984,3,11,3,0,0),
-d(1984,10,14,4,0,0),
-d(1985,3,10,3,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,9,3,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,3,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,13,3,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,12,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,3,11,3,0,0),
-d(1990,10,14,4,0,0),
-d(1991,3,10,3,0,0),
-d(1991,10,13,4,0,0),
-d(1992,3,15,3,0,0),
-d(1992,10,11,4,0,0),
-d(1993,3,14,3,0,0),
-d(1993,10,10,4,0,0),
-d(1994,3,13,3,0,0),
-d(1994,10,9,4,0,0),
-d(1995,3,12,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,3,10,3,0,0),
-d(1996,10,13,4,0,0),
-d(1997,3,9,3,0,0),
-d(1997,10,12,4,0,0),
-d(1998,3,15,3,0,0),
-d(1998,9,27,4,0,0),
-d(1999,4,4,3,0,0),
-d(1999,10,10,4,0,0),
-d(2000,3,12,3,0,0),
-d(2000,10,15,4,0,0),
-d(2001,3,11,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,3,10,3,0,0),
-d(2002,10,13,4,0,0),
-d(2003,3,9,3,0,0),
-d(2003,10,12,4,0,0),
-d(2004,3,14,3,0,0),
-d(2004,10,10,4,0,0),
-d(2005,3,13,3,0,0),
-d(2005,10,9,4,0,0),
-d(2006,3,12,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,3,11,3,0,0),
-d(2007,10,14,4,0,0),
-d(2008,3,9,3,0,0),
-d(2008,10,12,4,0,0),
-d(2009,3,15,3,0,0),
-d(2009,10,11,4,0,0),
-d(2010,3,14,3,0,0),
-d(2010,10,10,4,0,0),
-d(2011,3,13,3,0,0),
-d(2011,10,9,4,0,0),
-d(2012,3,11,3,0,0),
-d(2012,10,14,4,0,0),
-d(2013,3,10,3,0,0),
-d(2013,10,13,4,0,0),
-d(2014,3,9,3,0,0),
-d(2014,10,12,4,0,0),
-d(2015,3,15,3,0,0),
-d(2015,10,11,4,0,0),
-d(2016,3,13,3,0,0),
-d(2016,10,9,4,0,0),
-d(2017,3,12,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,3,11,3,0,0),
-d(2018,10,14,4,0,0),
-d(2019,3,10,3,0,0),
-d(2019,10,13,4,0,0),
-d(2020,3,15,3,0,0),
-d(2020,10,11,4,0,0),
-d(2021,3,14,3,0,0),
-d(2021,10,10,4,0,0),
-d(2022,3,13,3,0,0),
-d(2022,10,9,4,0,0),
-d(2023,3,12,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,3,10,3,0,0),
-d(2024,10,13,4,0,0),
-d(2025,3,9,3,0,0),
-d(2025,10,12,4,0,0),
-d(2026,3,15,3,0,0),
-d(2026,10,11,4,0,0),
-d(2027,3,14,3,0,0),
-d(2027,10,10,4,0,0),
-d(2028,3,12,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,3,11,3,0,0),
-d(2029,10,14,4,0,0),
-d(2030,3,10,3,0,0),
-d(2030,10,13,4,0,0),
-d(2031,3,9,3,0,0),
-d(2031,10,12,4,0,0),
-d(2032,3,14,3,0,0),
-d(2032,10,10,4,0,0),
-d(2033,3,13,3,0,0),
-d(2033,10,9,4,0,0),
-d(2034,3,12,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,3,11,3,0,0),
-d(2035,10,14,4,0,0),
-d(2036,3,9,3,0,0),
-d(2036,10,12,4,0,0),
-d(2037,3,15,3,0,0),
-d(2037,10,11,4,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(-10800,-10800,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,3600,'ARST'),
-i(-14400,0,'ART'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-7200,3600,'ARST'),
-i(-10800,0,'ART'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
- ]
-
-Palmer = Palmer()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/Rothera.py b/modules/pytz/zoneinfo/Antarctica/Rothera.py
deleted file mode 100644
index ffd20cb4..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Rothera.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Antarctica/Rothera.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rothera(DstTzInfo):
- '''Antarctica/Rothera timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Rothera'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1976,12,1,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(-10800,0,'ROTT'),
- ]
-
-Rothera = Rothera()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/South_Pole.py b/modules/pytz/zoneinfo/Antarctica/South_Pole.py
deleted file mode 100644
index 9cbd0ff4..00000000
--- a/modules/pytz/zoneinfo/Antarctica/South_Pole.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for Antarctica/South_Pole.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class South_Pole(DstTzInfo):
- '''Antarctica/South_Pole timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/South_Pole'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1956,1,1,0,0,0),
-d(1974,11,2,14,0,0),
-d(1975,2,22,14,0,0),
-d(1975,10,25,14,0,0),
-d(1976,3,6,14,0,0),
-d(1976,10,30,14,0,0),
-d(1977,3,5,14,0,0),
-d(1977,10,29,14,0,0),
-d(1978,3,4,14,0,0),
-d(1978,10,28,14,0,0),
-d(1979,3,3,14,0,0),
-d(1979,10,27,14,0,0),
-d(1980,3,1,14,0,0),
-d(1980,10,25,14,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,14,0,0),
-d(1982,3,6,14,0,0),
-d(1982,10,30,14,0,0),
-d(1983,3,5,14,0,0),
-d(1983,10,29,14,0,0),
-d(1984,3,3,14,0,0),
-d(1984,10,27,14,0,0),
-d(1985,3,2,14,0,0),
-d(1985,10,26,14,0,0),
-d(1986,3,1,14,0,0),
-d(1986,10,25,14,0,0),
-d(1987,2,28,14,0,0),
-d(1987,10,24,14,0,0),
-d(1988,3,5,14,0,0),
-d(1988,10,29,14,0,0),
-d(1989,3,4,14,0,0),
-d(1989,10,7,14,0,0),
-d(1990,3,17,14,0,0),
-d(1990,10,6,14,0,0),
-d(1991,3,16,14,0,0),
-d(1991,10,5,14,0,0),
-d(1992,3,14,14,0,0),
-d(1992,10,3,14,0,0),
-d(1993,3,20,14,0,0),
-d(1993,10,2,14,0,0),
-d(1994,3,19,14,0,0),
-d(1994,10,1,14,0,0),
-d(1995,3,18,14,0,0),
-d(1995,9,30,14,0,0),
-d(1996,3,16,14,0,0),
-d(1996,10,5,14,0,0),
-d(1997,3,15,14,0,0),
-d(1997,10,4,14,0,0),
-d(1998,3,14,14,0,0),
-d(1998,10,3,14,0,0),
-d(1999,3,20,14,0,0),
-d(1999,10,2,14,0,0),
-d(2000,3,18,14,0,0),
-d(2000,9,30,14,0,0),
-d(2001,3,17,14,0,0),
-d(2001,10,6,14,0,0),
-d(2002,3,16,14,0,0),
-d(2002,10,5,14,0,0),
-d(2003,3,15,14,0,0),
-d(2003,10,4,14,0,0),
-d(2004,3,20,14,0,0),
-d(2004,10,2,14,0,0),
-d(2005,3,19,14,0,0),
-d(2005,10,1,14,0,0),
-d(2006,3,18,14,0,0),
-d(2006,9,30,14,0,0),
-d(2007,3,17,14,0,0),
-d(2007,10,6,14,0,0),
-d(2008,3,15,14,0,0),
-d(2008,10,4,14,0,0),
-d(2009,3,14,14,0,0),
-d(2009,10,3,14,0,0),
-d(2010,3,20,14,0,0),
-d(2010,10,2,14,0,0),
-d(2011,3,19,14,0,0),
-d(2011,10,1,14,0,0),
-d(2012,3,17,14,0,0),
-d(2012,10,6,14,0,0),
-d(2013,3,16,14,0,0),
-d(2013,10,5,14,0,0),
-d(2014,3,15,14,0,0),
-d(2014,10,4,14,0,0),
-d(2015,3,14,14,0,0),
-d(2015,10,3,14,0,0),
-d(2016,3,19,14,0,0),
-d(2016,10,1,14,0,0),
-d(2017,3,18,14,0,0),
-d(2017,9,30,14,0,0),
-d(2018,3,17,14,0,0),
-d(2018,10,6,14,0,0),
-d(2019,3,16,14,0,0),
-d(2019,10,5,14,0,0),
-d(2020,3,14,14,0,0),
-d(2020,10,3,14,0,0),
-d(2021,3,20,14,0,0),
-d(2021,10,2,14,0,0),
-d(2022,3,19,14,0,0),
-d(2022,10,1,14,0,0),
-d(2023,3,18,14,0,0),
-d(2023,9,30,14,0,0),
-d(2024,3,16,14,0,0),
-d(2024,10,5,14,0,0),
-d(2025,3,15,14,0,0),
-d(2025,10,4,14,0,0),
-d(2026,3,14,14,0,0),
-d(2026,10,3,14,0,0),
-d(2027,3,20,14,0,0),
-d(2027,10,2,14,0,0),
-d(2028,3,18,14,0,0),
-d(2028,9,30,14,0,0),
-d(2029,3,17,14,0,0),
-d(2029,10,6,14,0,0),
-d(2030,3,16,14,0,0),
-d(2030,10,5,14,0,0),
-d(2031,3,15,14,0,0),
-d(2031,10,4,14,0,0),
-d(2032,3,20,14,0,0),
-d(2032,10,2,14,0,0),
-d(2033,3,19,14,0,0),
-d(2033,10,1,14,0,0),
-d(2034,3,18,14,0,0),
-d(2034,9,30,14,0,0),
-d(2035,3,17,14,0,0),
-d(2035,10,6,14,0,0),
-d(2036,3,15,14,0,0),
-d(2036,10,4,14,0,0),
-d(2037,3,14,14,0,0),
-d(2037,10,3,14,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
- ]
-
-South_Pole = South_Pole()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/Syowa.py b/modules/pytz/zoneinfo/Antarctica/Syowa.py
deleted file mode 100644
index 8941832d..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Syowa.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Antarctica/Syowa.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Syowa(DstTzInfo):
- '''Antarctica/Syowa timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Syowa'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1957,1,29,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(10800,0,'SYOT'),
- ]
-
-Syowa = Syowa()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/Vostok.py b/modules/pytz/zoneinfo/Antarctica/Vostok.py
deleted file mode 100644
index 6e2e41ec..00000000
--- a/modules/pytz/zoneinfo/Antarctica/Vostok.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Antarctica/Vostok.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vostok(DstTzInfo):
- '''Antarctica/Vostok timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Antarctica/Vostok'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1957,12,16,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(21600,0,'VOST'),
- ]
-
-Vostok = Vostok()
-
diff --git a/modules/pytz/zoneinfo/Antarctica/__init__.py b/modules/pytz/zoneinfo/Antarctica/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Arctic/Longyearbyen.py b/modules/pytz/zoneinfo/Arctic/Longyearbyen.py
deleted file mode 100644
index 71577cbb..00000000
--- a/modules/pytz/zoneinfo/Arctic/Longyearbyen.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Arctic/Longyearbyen.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Longyearbyen(DstTzInfo):
- '''Arctic/Longyearbyen timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Arctic/Longyearbyen'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,22,0,0,0),
-d(1916,9,29,22,0,0),
-d(1940,8,10,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,10,1,1,0,0),
-d(1959,3,15,1,0,0),
-d(1959,9,20,1,0,0),
-d(1960,3,20,1,0,0),
-d(1960,9,18,1,0,0),
-d(1961,3,19,1,0,0),
-d(1961,9,17,1,0,0),
-d(1962,3,18,1,0,0),
-d(1962,9,16,1,0,0),
-d(1963,3,17,1,0,0),
-d(1963,9,15,1,0,0),
-d(1964,3,15,1,0,0),
-d(1964,9,20,1,0,0),
-d(1965,4,25,1,0,0),
-d(1965,9,19,1,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Longyearbyen = Longyearbyen()
-
diff --git a/modules/pytz/zoneinfo/Arctic/__init__.py b/modules/pytz/zoneinfo/Arctic/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Asia/Aden.py b/modules/pytz/zoneinfo/Asia/Aden.py
deleted file mode 100644
index 0d0ac64e..00000000
--- a/modules/pytz/zoneinfo/Asia/Aden.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Aden.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Aden(DstTzInfo):
- '''Asia/Aden timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Aden'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1949,12,31,20,59,12),
- ]
-
- _transition_info = [
-i(10860,0,'LMT'),
-i(10800,0,'AST'),
- ]
-
-Aden = Aden()
-
diff --git a/modules/pytz/zoneinfo/Asia/Almaty.py b/modules/pytz/zoneinfo/Asia/Almaty.py
deleted file mode 100644
index 9d0df827..00000000
--- a/modules/pytz/zoneinfo/Asia/Almaty.py
+++ /dev/null
@@ -1,120 +0,0 @@
-'''tzinfo timezone information for Asia/Almaty.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Almaty(DstTzInfo):
- '''Asia/Almaty timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Almaty'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,18,52,12),
-d(1930,6,20,19,0,0),
-d(1981,3,31,18,0,0),
-d(1981,9,30,17,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,17,0,0),
-d(1983,3,31,18,0,0),
-d(1983,9,30,17,0,0),
-d(1984,3,31,18,0,0),
-d(1984,9,29,20,0,0),
-d(1985,3,30,20,0,0),
-d(1985,9,28,20,0,0),
-d(1986,3,29,20,0,0),
-d(1986,9,27,20,0,0),
-d(1987,3,28,20,0,0),
-d(1987,9,26,20,0,0),
-d(1988,3,26,20,0,0),
-d(1988,9,24,20,0,0),
-d(1989,3,25,20,0,0),
-d(1989,9,23,20,0,0),
-d(1990,3,24,20,0,0),
-d(1990,9,29,20,0,0),
-d(1990,12,31,18,0,0),
-d(1992,3,28,17,0,0),
-d(1992,9,26,16,0,0),
-d(1993,3,27,20,0,0),
-d(1993,9,25,20,0,0),
-d(1994,3,26,20,0,0),
-d(1994,9,24,20,0,0),
-d(1995,3,25,20,0,0),
-d(1995,9,23,20,0,0),
-d(1996,3,30,20,0,0),
-d(1996,10,26,20,0,0),
-d(1997,3,29,20,0,0),
-d(1997,10,25,20,0,0),
-d(1998,3,28,20,0,0),
-d(1998,10,24,20,0,0),
-d(1999,3,27,20,0,0),
-d(1999,10,30,20,0,0),
-d(2000,3,25,20,0,0),
-d(2000,10,28,20,0,0),
-d(2001,3,24,20,0,0),
-d(2001,10,27,20,0,0),
-d(2002,3,30,20,0,0),
-d(2002,10,26,20,0,0),
-d(2003,3,29,20,0,0),
-d(2003,10,25,20,0,0),
-d(2004,3,27,20,0,0),
-d(2004,10,30,20,0,0),
-d(2005,3,14,18,0,0),
- ]
-
- _transition_info = [
-i(18480,0,'LMT'),
-i(18000,0,'ALMT'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(25200,3600,'ALMST'),
-i(21600,0,'ALMT'),
-i(21600,0,'ALMT'),
- ]
-
-Almaty = Almaty()
-
diff --git a/modules/pytz/zoneinfo/Asia/Amman.py b/modules/pytz/zoneinfo/Asia/Amman.py
deleted file mode 100644
index fb0a0725..00000000
--- a/modules/pytz/zoneinfo/Asia/Amman.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Asia/Amman.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Amman(DstTzInfo):
- '''Asia/Amman timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Amman'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1930,12,31,21,36,16),
-d(1973,6,5,22,0,0),
-d(1973,9,30,21,0,0),
-d(1974,4,30,22,0,0),
-d(1974,9,30,21,0,0),
-d(1975,4,30,22,0,0),
-d(1975,9,30,21,0,0),
-d(1976,4,30,22,0,0),
-d(1976,10,31,21,0,0),
-d(1977,4,30,22,0,0),
-d(1977,9,30,21,0,0),
-d(1978,4,29,22,0,0),
-d(1978,9,29,21,0,0),
-d(1985,3,31,22,0,0),
-d(1985,9,30,21,0,0),
-d(1986,4,3,22,0,0),
-d(1986,10,2,21,0,0),
-d(1987,4,2,22,0,0),
-d(1987,10,1,21,0,0),
-d(1988,3,31,22,0,0),
-d(1988,10,6,21,0,0),
-d(1989,5,7,22,0,0),
-d(1989,10,5,21,0,0),
-d(1990,4,26,22,0,0),
-d(1990,10,4,21,0,0),
-d(1991,4,16,22,0,0),
-d(1991,9,26,21,0,0),
-d(1992,4,9,22,0,0),
-d(1992,10,1,21,0,0),
-d(1993,4,1,22,0,0),
-d(1993,9,30,21,0,0),
-d(1994,3,31,22,0,0),
-d(1994,9,15,21,0,0),
-d(1995,4,6,22,0,0),
-d(1995,9,14,22,0,0),
-d(1996,4,4,22,0,0),
-d(1996,9,19,22,0,0),
-d(1997,4,3,22,0,0),
-d(1997,9,18,22,0,0),
-d(1998,4,2,22,0,0),
-d(1998,9,17,22,0,0),
-d(1999,6,30,22,0,0),
-d(1999,9,29,22,0,0),
-d(2000,3,29,22,0,0),
-d(2000,9,27,22,0,0),
-d(2001,3,28,22,0,0),
-d(2001,9,26,22,0,0),
-d(2002,3,27,22,0,0),
-d(2002,9,25,22,0,0),
-d(2003,3,26,22,0,0),
-d(2003,10,23,22,0,0),
-d(2004,3,24,22,0,0),
-d(2004,10,14,22,0,0),
-d(2005,3,30,22,0,0),
-d(2005,9,29,22,0,0),
-d(2006,3,29,22,0,0),
-d(2006,9,28,22,0,0),
-d(2007,3,28,22,0,0),
-d(2007,9,27,22,0,0),
-d(2008,3,26,22,0,0),
-d(2008,9,25,22,0,0),
-d(2009,3,25,22,0,0),
-d(2009,9,24,22,0,0),
-d(2010,3,24,22,0,0),
-d(2010,9,23,22,0,0),
-d(2011,3,30,22,0,0),
-d(2011,9,29,22,0,0),
-d(2012,3,28,22,0,0),
-d(2012,9,27,22,0,0),
-d(2013,3,27,22,0,0),
-d(2013,9,26,22,0,0),
-d(2014,3,26,22,0,0),
-d(2014,9,25,22,0,0),
-d(2015,3,25,22,0,0),
-d(2015,9,24,22,0,0),
-d(2016,3,30,22,0,0),
-d(2016,9,29,22,0,0),
-d(2017,3,29,22,0,0),
-d(2017,9,28,22,0,0),
-d(2018,3,28,22,0,0),
-d(2018,9,27,22,0,0),
-d(2019,3,27,22,0,0),
-d(2019,9,26,22,0,0),
-d(2020,3,25,22,0,0),
-d(2020,9,24,22,0,0),
-d(2021,3,24,22,0,0),
-d(2021,9,23,22,0,0),
-d(2022,3,30,22,0,0),
-d(2022,9,29,22,0,0),
-d(2023,3,29,22,0,0),
-d(2023,9,28,22,0,0),
-d(2024,3,27,22,0,0),
-d(2024,9,26,22,0,0),
-d(2025,3,26,22,0,0),
-d(2025,9,25,22,0,0),
-d(2026,3,25,22,0,0),
-d(2026,9,24,22,0,0),
-d(2027,3,24,22,0,0),
-d(2027,9,23,22,0,0),
-d(2028,3,29,22,0,0),
-d(2028,9,28,22,0,0),
-d(2029,3,28,22,0,0),
-d(2029,9,27,22,0,0),
-d(2030,3,27,22,0,0),
-d(2030,9,26,22,0,0),
-d(2031,3,26,22,0,0),
-d(2031,9,25,22,0,0),
-d(2032,3,24,22,0,0),
-d(2032,9,23,22,0,0),
-d(2033,3,30,22,0,0),
-d(2033,9,29,22,0,0),
-d(2034,3,29,22,0,0),
-d(2034,9,28,22,0,0),
-d(2035,3,28,22,0,0),
-d(2035,9,27,22,0,0),
-d(2036,3,26,22,0,0),
-d(2036,9,25,22,0,0),
-d(2037,3,25,22,0,0),
-d(2037,9,24,22,0,0),
- ]
-
- _transition_info = [
-i(8640,0,'LMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Amman = Amman()
-
diff --git a/modules/pytz/zoneinfo/Asia/Anadyr.py b/modules/pytz/zoneinfo/Asia/Anadyr.py
deleted file mode 100644
index 37b50af9..00000000
--- a/modules/pytz/zoneinfo/Asia/Anadyr.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Anadyr.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Anadyr(DstTzInfo):
- '''Asia/Anadyr timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Anadyr'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,12,10,4),
-d(1930,6,20,12,0,0),
-d(1981,3,31,11,0,0),
-d(1981,9,30,10,0,0),
-d(1982,3,31,11,0,0),
-d(1982,9,30,11,0,0),
-d(1983,3,31,12,0,0),
-d(1983,9,30,11,0,0),
-d(1984,3,31,12,0,0),
-d(1984,9,29,14,0,0),
-d(1985,3,30,14,0,0),
-d(1985,9,28,14,0,0),
-d(1986,3,29,14,0,0),
-d(1986,9,27,14,0,0),
-d(1987,3,28,14,0,0),
-d(1987,9,26,14,0,0),
-d(1988,3,26,14,0,0),
-d(1988,9,24,14,0,0),
-d(1989,3,25,14,0,0),
-d(1989,9,23,14,0,0),
-d(1990,3,24,14,0,0),
-d(1990,9,29,14,0,0),
-d(1991,3,30,14,0,0),
-d(1991,9,28,15,0,0),
-d(1992,1,18,15,0,0),
-d(1992,3,28,11,0,0),
-d(1992,9,26,10,0,0),
-d(1993,3,27,14,0,0),
-d(1993,9,25,14,0,0),
-d(1994,3,26,14,0,0),
-d(1994,9,24,14,0,0),
-d(1995,3,25,14,0,0),
-d(1995,9,23,14,0,0),
-d(1996,3,30,14,0,0),
-d(1996,10,26,14,0,0),
-d(1997,3,29,14,0,0),
-d(1997,10,25,14,0,0),
-d(1998,3,28,14,0,0),
-d(1998,10,24,14,0,0),
-d(1999,3,27,14,0,0),
-d(1999,10,30,14,0,0),
-d(2000,3,25,14,0,0),
-d(2000,10,28,14,0,0),
-d(2001,3,24,14,0,0),
-d(2001,10,27,14,0,0),
-d(2002,3,30,14,0,0),
-d(2002,10,26,14,0,0),
-d(2003,3,29,14,0,0),
-d(2003,10,25,14,0,0),
-d(2004,3,27,14,0,0),
-d(2004,10,30,14,0,0),
-d(2005,3,26,14,0,0),
-d(2005,10,29,14,0,0),
-d(2006,3,25,14,0,0),
-d(2006,10,28,14,0,0),
-d(2007,3,24,14,0,0),
-d(2007,10,27,14,0,0),
-d(2008,3,29,14,0,0),
-d(2008,10,25,14,0,0),
-d(2009,3,28,14,0,0),
-d(2009,10,24,14,0,0),
-d(2010,3,27,14,0,0),
-d(2010,10,30,14,0,0),
-d(2011,3,26,14,0,0),
-d(2011,10,29,14,0,0),
-d(2012,3,24,14,0,0),
-d(2012,10,27,14,0,0),
-d(2013,3,30,14,0,0),
-d(2013,10,26,14,0,0),
-d(2014,3,29,14,0,0),
-d(2014,10,25,14,0,0),
-d(2015,3,28,14,0,0),
-d(2015,10,24,14,0,0),
-d(2016,3,26,14,0,0),
-d(2016,10,29,14,0,0),
-d(2017,3,25,14,0,0),
-d(2017,10,28,14,0,0),
-d(2018,3,24,14,0,0),
-d(2018,10,27,14,0,0),
-d(2019,3,30,14,0,0),
-d(2019,10,26,14,0,0),
-d(2020,3,28,14,0,0),
-d(2020,10,24,14,0,0),
-d(2021,3,27,14,0,0),
-d(2021,10,30,14,0,0),
-d(2022,3,26,14,0,0),
-d(2022,10,29,14,0,0),
-d(2023,3,25,14,0,0),
-d(2023,10,28,14,0,0),
-d(2024,3,30,14,0,0),
-d(2024,10,26,14,0,0),
-d(2025,3,29,14,0,0),
-d(2025,10,25,14,0,0),
-d(2026,3,28,14,0,0),
-d(2026,10,24,14,0,0),
-d(2027,3,27,14,0,0),
-d(2027,10,30,14,0,0),
-d(2028,3,25,14,0,0),
-d(2028,10,28,14,0,0),
-d(2029,3,24,14,0,0),
-d(2029,10,27,14,0,0),
-d(2030,3,30,14,0,0),
-d(2030,10,26,14,0,0),
-d(2031,3,29,14,0,0),
-d(2031,10,25,14,0,0),
-d(2032,3,27,14,0,0),
-d(2032,10,30,14,0,0),
-d(2033,3,26,14,0,0),
-d(2033,10,29,14,0,0),
-d(2034,3,25,14,0,0),
-d(2034,10,28,14,0,0),
-d(2035,3,24,14,0,0),
-d(2035,10,27,14,0,0),
-d(2036,3,29,14,0,0),
-d(2036,10,25,14,0,0),
-d(2037,3,28,14,0,0),
-d(2037,10,24,14,0,0),
- ]
-
- _transition_info = [
-i(42600,0,'LMT'),
-i(43200,0,'ANAT'),
-i(46800,0,'ANAT'),
-i(50400,3600,'ANAST'),
-i(46800,0,'ANAT'),
-i(46800,0,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(43200,0,'ANAST'),
-i(39600,0,'ANAT'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
-i(46800,3600,'ANAST'),
-i(43200,0,'ANAT'),
- ]
-
-Anadyr = Anadyr()
-
diff --git a/modules/pytz/zoneinfo/Asia/Aqtau.py b/modules/pytz/zoneinfo/Asia/Aqtau.py
deleted file mode 100644
index 319f007c..00000000
--- a/modules/pytz/zoneinfo/Asia/Aqtau.py
+++ /dev/null
@@ -1,122 +0,0 @@
-'''tzinfo timezone information for Asia/Aqtau.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Aqtau(DstTzInfo):
- '''Asia/Aqtau timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Aqtau'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,20,38,56),
-d(1930,6,20,20,0,0),
-d(1962,12,31,19,0,0),
-d(1981,9,30,19,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,21,0,0),
-d(1990,9,29,21,0,0),
-d(1990,12,31,19,0,0),
-d(1991,12,15,19,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,17,0,0),
-d(1993,3,27,21,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,21,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,21,0,0),
-d(1995,9,23,22,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,22,0,0),
-d(1997,3,29,22,0,0),
-d(1997,10,25,22,0,0),
-d(1998,3,28,22,0,0),
-d(1998,10,24,22,0,0),
-d(1999,3,27,22,0,0),
-d(1999,10,30,22,0,0),
-d(2000,3,25,22,0,0),
-d(2000,10,28,22,0,0),
-d(2001,3,24,22,0,0),
-d(2001,10,27,22,0,0),
-d(2002,3,30,22,0,0),
-d(2002,10,26,22,0,0),
-d(2003,3,29,22,0,0),
-d(2003,10,25,22,0,0),
-d(2004,3,27,22,0,0),
-d(2004,10,30,22,0,0),
-d(2005,3,14,20,0,0),
- ]
-
- _transition_info = [
-i(12060,0,'LMT'),
-i(14400,0,'FORT'),
-i(18000,0,'FORT'),
-i(18000,0,'SHET'),
-i(21600,0,'SHET'),
-i(21600,0,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(21600,3600,'SHEST'),
-i(18000,0,'SHET'),
-i(18000,0,'SHET'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(18000,0,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,3600,'AQTST'),
-i(14400,0,'AQTT'),
-i(18000,0,'AQTT'),
- ]
-
-Aqtau = Aqtau()
-
diff --git a/modules/pytz/zoneinfo/Asia/Aqtobe.py b/modules/pytz/zoneinfo/Asia/Aqtobe.py
deleted file mode 100644
index 2169a725..00000000
--- a/modules/pytz/zoneinfo/Asia/Aqtobe.py
+++ /dev/null
@@ -1,122 +0,0 @@
-'''tzinfo timezone information for Asia/Aqtobe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Aqtobe(DstTzInfo):
- '''Asia/Aqtobe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Aqtobe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,20,11,20),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,21,0,0),
-d(1990,9,29,21,0,0),
-d(1990,12,31,19,0,0),
-d(1991,12,15,19,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,17,0,0),
-d(1993,3,27,21,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,21,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,21,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,21,0,0),
-d(1996,10,26,21,0,0),
-d(1997,3,29,21,0,0),
-d(1997,10,25,21,0,0),
-d(1998,3,28,21,0,0),
-d(1998,10,24,21,0,0),
-d(1999,3,27,21,0,0),
-d(1999,10,30,21,0,0),
-d(2000,3,25,21,0,0),
-d(2000,10,28,21,0,0),
-d(2001,3,24,21,0,0),
-d(2001,10,27,21,0,0),
-d(2002,3,30,21,0,0),
-d(2002,10,26,21,0,0),
-d(2003,3,29,21,0,0),
-d(2003,10,25,21,0,0),
-d(2004,3,27,21,0,0),
-d(2004,10,30,21,0,0),
-d(2005,3,14,19,0,0),
- ]
-
- _transition_info = [
-i(13740,0,'LMT'),
-i(14400,0,'AKTT'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(21600,0,'AKTT'),
-i(21600,0,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(21600,3600,'AKTST'),
-i(18000,0,'AKTT'),
-i(18000,0,'AKTT'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(21600,3600,'AQTST'),
-i(18000,0,'AQTT'),
-i(18000,0,'AQTT'),
- ]
-
-Aqtobe = Aqtobe()
-
diff --git a/modules/pytz/zoneinfo/Asia/Ashgabat.py b/modules/pytz/zoneinfo/Asia/Ashgabat.py
deleted file mode 100644
index 92137c82..00000000
--- a/modules/pytz/zoneinfo/Asia/Ashgabat.py
+++ /dev/null
@@ -1,72 +0,0 @@
-'''tzinfo timezone information for Asia/Ashgabat.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ashgabat(DstTzInfo):
- '''Asia/Ashgabat timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Ashgabat'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,20,6,28),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,19,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,21,0,0),
-d(1990,9,29,21,0,0),
-d(1991,3,30,21,0,0),
-d(1991,9,28,22,0,0),
-d(1991,10,26,20,0,0),
-d(1992,1,18,22,0,0),
- ]
-
- _transition_info = [
-i(14040,0,'LMT'),
-i(14400,0,'ASHT'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(18000,0,'ASHST'),
-i(14400,0,'ASHT'),
-i(14400,0,'TMT'),
-i(18000,0,'TMT'),
- ]
-
-Ashgabat = Ashgabat()
-
diff --git a/modules/pytz/zoneinfo/Asia/Ashkhabad.py b/modules/pytz/zoneinfo/Asia/Ashkhabad.py
deleted file mode 100644
index a99394d9..00000000
--- a/modules/pytz/zoneinfo/Asia/Ashkhabad.py
+++ /dev/null
@@ -1,72 +0,0 @@
-'''tzinfo timezone information for Asia/Ashkhabad.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ashkhabad(DstTzInfo):
- '''Asia/Ashkhabad timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Ashkhabad'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,20,6,28),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,19,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,21,0,0),
-d(1990,9,29,21,0,0),
-d(1991,3,30,21,0,0),
-d(1991,9,28,22,0,0),
-d(1991,10,26,20,0,0),
-d(1992,1,18,22,0,0),
- ]
-
- _transition_info = [
-i(14040,0,'LMT'),
-i(14400,0,'ASHT'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(21600,3600,'ASHST'),
-i(18000,0,'ASHT'),
-i(18000,0,'ASHST'),
-i(14400,0,'ASHT'),
-i(14400,0,'TMT'),
-i(18000,0,'TMT'),
- ]
-
-Ashkhabad = Ashkhabad()
-
diff --git a/modules/pytz/zoneinfo/Asia/Baghdad.py b/modules/pytz/zoneinfo/Asia/Baghdad.py
deleted file mode 100644
index 8492cb21..00000000
--- a/modules/pytz/zoneinfo/Asia/Baghdad.py
+++ /dev/null
@@ -1,246 +0,0 @@
-'''tzinfo timezone information for Asia/Baghdad.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Baghdad(DstTzInfo):
- '''Asia/Baghdad timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Baghdad'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,12,31,21,2,24),
-d(1982,4,30,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,30,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,30,20,0,0),
-d(1985,3,31,21,0,0),
-d(1985,9,28,22,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,22,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,22,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,22,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,22,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,22,0,0),
-d(1991,4,1,0,0,0),
-d(1991,10,1,0,0,0),
-d(1992,4,1,0,0,0),
-d(1992,10,1,0,0,0),
-d(1993,4,1,0,0,0),
-d(1993,10,1,0,0,0),
-d(1994,4,1,0,0,0),
-d(1994,10,1,0,0,0),
-d(1995,4,1,0,0,0),
-d(1995,10,1,0,0,0),
-d(1996,4,1,0,0,0),
-d(1996,10,1,0,0,0),
-d(1997,4,1,0,0,0),
-d(1997,10,1,0,0,0),
-d(1998,4,1,0,0,0),
-d(1998,10,1,0,0,0),
-d(1999,4,1,0,0,0),
-d(1999,10,1,0,0,0),
-d(2000,4,1,0,0,0),
-d(2000,10,1,0,0,0),
-d(2001,4,1,0,0,0),
-d(2001,10,1,0,0,0),
-d(2002,4,1,0,0,0),
-d(2002,10,1,0,0,0),
-d(2003,4,1,0,0,0),
-d(2003,10,1,0,0,0),
-d(2004,4,1,0,0,0),
-d(2004,10,1,0,0,0),
-d(2005,4,1,0,0,0),
-d(2005,10,1,0,0,0),
-d(2006,4,1,0,0,0),
-d(2006,10,1,0,0,0),
-d(2007,4,1,0,0,0),
-d(2007,10,1,0,0,0),
-d(2008,4,1,0,0,0),
-d(2008,10,1,0,0,0),
-d(2009,4,1,0,0,0),
-d(2009,10,1,0,0,0),
-d(2010,4,1,0,0,0),
-d(2010,10,1,0,0,0),
-d(2011,4,1,0,0,0),
-d(2011,10,1,0,0,0),
-d(2012,4,1,0,0,0),
-d(2012,10,1,0,0,0),
-d(2013,4,1,0,0,0),
-d(2013,10,1,0,0,0),
-d(2014,4,1,0,0,0),
-d(2014,10,1,0,0,0),
-d(2015,4,1,0,0,0),
-d(2015,10,1,0,0,0),
-d(2016,4,1,0,0,0),
-d(2016,10,1,0,0,0),
-d(2017,4,1,0,0,0),
-d(2017,10,1,0,0,0),
-d(2018,4,1,0,0,0),
-d(2018,10,1,0,0,0),
-d(2019,4,1,0,0,0),
-d(2019,10,1,0,0,0),
-d(2020,4,1,0,0,0),
-d(2020,10,1,0,0,0),
-d(2021,4,1,0,0,0),
-d(2021,10,1,0,0,0),
-d(2022,4,1,0,0,0),
-d(2022,10,1,0,0,0),
-d(2023,4,1,0,0,0),
-d(2023,10,1,0,0,0),
-d(2024,4,1,0,0,0),
-d(2024,10,1,0,0,0),
-d(2025,4,1,0,0,0),
-d(2025,10,1,0,0,0),
-d(2026,4,1,0,0,0),
-d(2026,10,1,0,0,0),
-d(2027,4,1,0,0,0),
-d(2027,10,1,0,0,0),
-d(2028,4,1,0,0,0),
-d(2028,10,1,0,0,0),
-d(2029,4,1,0,0,0),
-d(2029,10,1,0,0,0),
-d(2030,4,1,0,0,0),
-d(2030,10,1,0,0,0),
-d(2031,4,1,0,0,0),
-d(2031,10,1,0,0,0),
-d(2032,4,1,0,0,0),
-d(2032,10,1,0,0,0),
-d(2033,4,1,0,0,0),
-d(2033,10,1,0,0,0),
-d(2034,4,1,0,0,0),
-d(2034,10,1,0,0,0),
-d(2035,4,1,0,0,0),
-d(2035,10,1,0,0,0),
-d(2036,4,1,0,0,0),
-d(2036,10,1,0,0,0),
-d(2037,4,1,0,0,0),
-d(2037,10,1,0,0,0),
- ]
-
- _transition_info = [
-i(10680,0,'BMT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
-i(14400,3600,'ADT'),
-i(10800,0,'AST'),
- ]
-
-Baghdad = Baghdad()
-
diff --git a/modules/pytz/zoneinfo/Asia/Bahrain.py b/modules/pytz/zoneinfo/Asia/Bahrain.py
deleted file mode 100644
index 116d4895..00000000
--- a/modules/pytz/zoneinfo/Asia/Bahrain.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Asia/Bahrain.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bahrain(DstTzInfo):
- '''Asia/Bahrain timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Bahrain'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,20,37,40),
-d(1972,5,31,20,0,0),
- ]
-
- _transition_info = [
-i(12120,0,'LMT'),
-i(14400,0,'GST'),
-i(10800,0,'AST'),
- ]
-
-Bahrain = Bahrain()
-
diff --git a/modules/pytz/zoneinfo/Asia/Baku.py b/modules/pytz/zoneinfo/Asia/Baku.py
deleted file mode 100644
index fde8ee07..00000000
--- a/modules/pytz/zoneinfo/Asia/Baku.py
+++ /dev/null
@@ -1,246 +0,0 @@
-'''tzinfo timezone information for Asia/Baku.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Baku(DstTzInfo):
- '''Asia/Baku timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Baku'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,20,40,36),
-d(1957,2,28,21,0,0),
-d(1981,3,31,20,0,0),
-d(1981,9,30,19,0,0),
-d(1982,3,31,20,0,0),
-d(1982,9,30,19,0,0),
-d(1983,3,31,20,0,0),
-d(1983,9,30,19,0,0),
-d(1984,3,31,20,0,0),
-d(1984,9,29,22,0,0),
-d(1985,3,30,22,0,0),
-d(1985,9,28,22,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,22,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,22,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,22,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,22,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,22,0,0),
-d(1991,3,30,22,0,0),
-d(1991,8,29,20,0,0),
-d(1991,9,28,23,0,0),
-d(1992,3,28,20,0,0),
-d(1992,9,26,19,0,0),
-d(1995,12,31,20,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1996,12,31,20,0,0),
-d(1997,3,30,0,0,0),
-d(1997,10,26,0,0,0),
-d(1998,3,29,0,0,0),
-d(1998,10,25,0,0,0),
-d(1999,3,28,0,0,0),
-d(1999,10,31,0,0,0),
-d(2000,3,26,0,0,0),
-d(2000,10,29,0,0,0),
-d(2001,3,25,0,0,0),
-d(2001,10,28,0,0,0),
-d(2002,3,31,0,0,0),
-d(2002,10,27,0,0,0),
-d(2003,3,30,0,0,0),
-d(2003,10,26,0,0,0),
-d(2004,3,28,0,0,0),
-d(2004,10,31,0,0,0),
-d(2005,3,27,0,0,0),
-d(2005,10,30,0,0,0),
-d(2006,3,26,0,0,0),
-d(2006,10,29,0,0,0),
-d(2007,3,25,0,0,0),
-d(2007,10,28,0,0,0),
-d(2008,3,30,0,0,0),
-d(2008,10,26,0,0,0),
-d(2009,3,29,0,0,0),
-d(2009,10,25,0,0,0),
-d(2010,3,28,0,0,0),
-d(2010,10,31,0,0,0),
-d(2011,3,27,0,0,0),
-d(2011,10,30,0,0,0),
-d(2012,3,25,0,0,0),
-d(2012,10,28,0,0,0),
-d(2013,3,31,0,0,0),
-d(2013,10,27,0,0,0),
-d(2014,3,30,0,0,0),
-d(2014,10,26,0,0,0),
-d(2015,3,29,0,0,0),
-d(2015,10,25,0,0,0),
-d(2016,3,27,0,0,0),
-d(2016,10,30,0,0,0),
-d(2017,3,26,0,0,0),
-d(2017,10,29,0,0,0),
-d(2018,3,25,0,0,0),
-d(2018,10,28,0,0,0),
-d(2019,3,31,0,0,0),
-d(2019,10,27,0,0,0),
-d(2020,3,29,0,0,0),
-d(2020,10,25,0,0,0),
-d(2021,3,28,0,0,0),
-d(2021,10,31,0,0,0),
-d(2022,3,27,0,0,0),
-d(2022,10,30,0,0,0),
-d(2023,3,26,0,0,0),
-d(2023,10,29,0,0,0),
-d(2024,3,31,0,0,0),
-d(2024,10,27,0,0,0),
-d(2025,3,30,0,0,0),
-d(2025,10,26,0,0,0),
-d(2026,3,29,0,0,0),
-d(2026,10,25,0,0,0),
-d(2027,3,28,0,0,0),
-d(2027,10,31,0,0,0),
-d(2028,3,26,0,0,0),
-d(2028,10,29,0,0,0),
-d(2029,3,25,0,0,0),
-d(2029,10,28,0,0,0),
-d(2030,3,31,0,0,0),
-d(2030,10,27,0,0,0),
-d(2031,3,30,0,0,0),
-d(2031,10,26,0,0,0),
-d(2032,3,28,0,0,0),
-d(2032,10,31,0,0,0),
-d(2033,3,27,0,0,0),
-d(2033,10,30,0,0,0),
-d(2034,3,26,0,0,0),
-d(2034,10,29,0,0,0),
-d(2035,3,25,0,0,0),
-d(2035,10,28,0,0,0),
-d(2036,3,30,0,0,0),
-d(2036,10,26,0,0,0),
-d(2037,3,29,0,0,0),
-d(2037,10,25,0,0,0),
- ]
-
- _transition_info = [
-i(11940,0,'LMT'),
-i(10800,0,'BAKT'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(18000,3600,'BAKST'),
-i(14400,0,'BAKT'),
-i(14400,0,'BAKST'),
-i(14400,0,'AZST'),
-i(10800,0,'AZT'),
-i(14400,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
-i(18000,3600,'AZST'),
-i(14400,0,'AZT'),
- ]
-
-Baku = Baku()
-
diff --git a/modules/pytz/zoneinfo/Asia/Bangkok.py b/modules/pytz/zoneinfo/Asia/Bangkok.py
deleted file mode 100644
index e133e804..00000000
--- a/modules/pytz/zoneinfo/Asia/Bangkok.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Bangkok.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bangkok(DstTzInfo):
- '''Asia/Bangkok timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Bangkok'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,3,31,17,17,56),
- ]
-
- _transition_info = [
-i(24120,0,'BMT'),
-i(25200,0,'ICT'),
- ]
-
-Bangkok = Bangkok()
-
diff --git a/modules/pytz/zoneinfo/Asia/Beirut.py b/modules/pytz/zoneinfo/Asia/Beirut.py
deleted file mode 100644
index 5bfad431..00000000
--- a/modules/pytz/zoneinfo/Asia/Beirut.py
+++ /dev/null
@@ -1,300 +0,0 @@
-'''tzinfo timezone information for Asia/Beirut.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Beirut(DstTzInfo):
- '''Asia/Beirut timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Beirut'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,3,27,22,0,0),
-d(1920,10,24,21,0,0),
-d(1921,4,2,22,0,0),
-d(1921,10,2,21,0,0),
-d(1922,3,25,22,0,0),
-d(1922,10,7,21,0,0),
-d(1923,4,21,22,0,0),
-d(1923,9,15,21,0,0),
-d(1957,4,30,22,0,0),
-d(1957,9,30,21,0,0),
-d(1958,4,30,22,0,0),
-d(1958,9,30,21,0,0),
-d(1959,4,30,22,0,0),
-d(1959,9,30,21,0,0),
-d(1960,4,30,22,0,0),
-d(1960,9,30,21,0,0),
-d(1961,4,30,22,0,0),
-d(1961,9,30,21,0,0),
-d(1972,6,21,22,0,0),
-d(1972,9,30,21,0,0),
-d(1973,4,30,22,0,0),
-d(1973,9,30,21,0,0),
-d(1974,4,30,22,0,0),
-d(1974,9,30,21,0,0),
-d(1975,4,30,22,0,0),
-d(1975,9,30,21,0,0),
-d(1976,4,30,22,0,0),
-d(1976,9,30,21,0,0),
-d(1977,4,30,22,0,0),
-d(1977,9,30,21,0,0),
-d(1978,4,29,22,0,0),
-d(1978,9,29,21,0,0),
-d(1984,4,30,22,0,0),
-d(1984,10,15,21,0,0),
-d(1985,4,30,22,0,0),
-d(1985,10,15,21,0,0),
-d(1986,4,30,22,0,0),
-d(1986,10,15,21,0,0),
-d(1987,4,30,22,0,0),
-d(1987,10,15,21,0,0),
-d(1988,5,31,22,0,0),
-d(1988,10,15,21,0,0),
-d(1989,5,9,22,0,0),
-d(1989,10,15,21,0,0),
-d(1990,4,30,22,0,0),
-d(1990,10,15,21,0,0),
-d(1991,4,30,22,0,0),
-d(1991,10,15,21,0,0),
-d(1992,4,30,22,0,0),
-d(1992,10,3,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,9,28,21,0,0),
-d(1997,3,29,22,0,0),
-d(1997,9,27,21,0,0),
-d(1998,3,28,22,0,0),
-d(1998,9,26,21,0,0),
-d(1999,3,27,22,0,0),
-d(1999,10,30,21,0,0),
-d(2000,3,25,22,0,0),
-d(2000,10,28,21,0,0),
-d(2001,3,24,22,0,0),
-d(2001,10,27,21,0,0),
-d(2002,3,30,22,0,0),
-d(2002,10,26,21,0,0),
-d(2003,3,29,22,0,0),
-d(2003,10,25,21,0,0),
-d(2004,3,27,22,0,0),
-d(2004,10,30,21,0,0),
-d(2005,3,26,22,0,0),
-d(2005,10,29,21,0,0),
-d(2006,3,25,22,0,0),
-d(2006,10,28,21,0,0),
-d(2007,3,24,22,0,0),
-d(2007,10,27,21,0,0),
-d(2008,3,29,22,0,0),
-d(2008,10,25,21,0,0),
-d(2009,3,28,22,0,0),
-d(2009,10,24,21,0,0),
-d(2010,3,27,22,0,0),
-d(2010,10,30,21,0,0),
-d(2011,3,26,22,0,0),
-d(2011,10,29,21,0,0),
-d(2012,3,24,22,0,0),
-d(2012,10,27,21,0,0),
-d(2013,3,30,22,0,0),
-d(2013,10,26,21,0,0),
-d(2014,3,29,22,0,0),
-d(2014,10,25,21,0,0),
-d(2015,3,28,22,0,0),
-d(2015,10,24,21,0,0),
-d(2016,3,26,22,0,0),
-d(2016,10,29,21,0,0),
-d(2017,3,25,22,0,0),
-d(2017,10,28,21,0,0),
-d(2018,3,24,22,0,0),
-d(2018,10,27,21,0,0),
-d(2019,3,30,22,0,0),
-d(2019,10,26,21,0,0),
-d(2020,3,28,22,0,0),
-d(2020,10,24,21,0,0),
-d(2021,3,27,22,0,0),
-d(2021,10,30,21,0,0),
-d(2022,3,26,22,0,0),
-d(2022,10,29,21,0,0),
-d(2023,3,25,22,0,0),
-d(2023,10,28,21,0,0),
-d(2024,3,30,22,0,0),
-d(2024,10,26,21,0,0),
-d(2025,3,29,22,0,0),
-d(2025,10,25,21,0,0),
-d(2026,3,28,22,0,0),
-d(2026,10,24,21,0,0),
-d(2027,3,27,22,0,0),
-d(2027,10,30,21,0,0),
-d(2028,3,25,22,0,0),
-d(2028,10,28,21,0,0),
-d(2029,3,24,22,0,0),
-d(2029,10,27,21,0,0),
-d(2030,3,30,22,0,0),
-d(2030,10,26,21,0,0),
-d(2031,3,29,22,0,0),
-d(2031,10,25,21,0,0),
-d(2032,3,27,22,0,0),
-d(2032,10,30,21,0,0),
-d(2033,3,26,22,0,0),
-d(2033,10,29,21,0,0),
-d(2034,3,25,22,0,0),
-d(2034,10,28,21,0,0),
-d(2035,3,24,22,0,0),
-d(2035,10,27,21,0,0),
-d(2036,3,29,22,0,0),
-d(2036,10,25,21,0,0),
-d(2037,3,28,22,0,0),
-d(2037,10,24,21,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Beirut = Beirut()
-
diff --git a/modules/pytz/zoneinfo/Asia/Bishkek.py b/modules/pytz/zoneinfo/Asia/Bishkek.py
deleted file mode 100644
index e5eb11b4..00000000
--- a/modules/pytz/zoneinfo/Asia/Bishkek.py
+++ /dev/null
@@ -1,124 +0,0 @@
-'''tzinfo timezone information for Asia/Bishkek.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bishkek(DstTzInfo):
- '''Asia/Bishkek timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Bishkek'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,19,1,36),
-d(1930,6,20,19,0,0),
-d(1981,3,31,18,0,0),
-d(1981,9,30,17,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,17,0,0),
-d(1983,3,31,18,0,0),
-d(1983,9,30,17,0,0),
-d(1984,3,31,18,0,0),
-d(1984,9,29,20,0,0),
-d(1985,3,30,20,0,0),
-d(1985,9,28,20,0,0),
-d(1986,3,29,20,0,0),
-d(1986,9,27,20,0,0),
-d(1987,3,28,20,0,0),
-d(1987,9,26,20,0,0),
-d(1988,3,26,20,0,0),
-d(1988,9,24,20,0,0),
-d(1989,3,25,20,0,0),
-d(1989,9,23,20,0,0),
-d(1990,3,24,20,0,0),
-d(1990,9,29,20,0,0),
-d(1991,3,30,20,0,0),
-d(1991,8,30,20,0,0),
-d(1992,4,11,19,0,0),
-d(1992,9,26,18,0,0),
-d(1993,4,10,19,0,0),
-d(1993,9,25,18,0,0),
-d(1994,4,9,19,0,0),
-d(1994,9,24,18,0,0),
-d(1995,4,8,19,0,0),
-d(1995,9,23,18,0,0),
-d(1996,4,6,19,0,0),
-d(1996,9,28,18,0,0),
-d(1997,3,29,21,30,0),
-d(1997,10,25,20,30,0),
-d(1998,3,28,21,30,0),
-d(1998,10,24,20,30,0),
-d(1999,3,27,21,30,0),
-d(1999,10,30,20,30,0),
-d(2000,3,25,21,30,0),
-d(2000,10,28,20,30,0),
-d(2001,3,24,21,30,0),
-d(2001,10,27,20,30,0),
-d(2002,3,30,21,30,0),
-d(2002,10,26,20,30,0),
-d(2003,3,29,21,30,0),
-d(2003,10,25,20,30,0),
-d(2004,3,27,21,30,0),
-d(2004,10,30,20,30,0),
-d(2005,3,26,21,30,0),
-d(2005,8,11,18,0,0),
- ]
-
- _transition_info = [
-i(17880,0,'LMT'),
-i(18000,0,'FRUT'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(25200,3600,'FRUST'),
-i(21600,0,'FRUT'),
-i(21600,0,'FRUST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(18000,0,'KGT'),
-i(21600,3600,'KGST'),
-i(21600,0,'KGT'),
- ]
-
-Bishkek = Bishkek()
-
diff --git a/modules/pytz/zoneinfo/Asia/Brunei.py b/modules/pytz/zoneinfo/Asia/Brunei.py
deleted file mode 100644
index fbbc5a0d..00000000
--- a/modules/pytz/zoneinfo/Asia/Brunei.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Asia/Brunei.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Brunei(DstTzInfo):
- '''Asia/Brunei timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Brunei'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1926,2,28,16,20,20),
-d(1932,12,31,16,30,0),
- ]
-
- _transition_info = [
-i(27600,0,'LMT'),
-i(27000,0,'BNT'),
-i(28800,0,'BNT'),
- ]
-
-Brunei = Brunei()
-
diff --git a/modules/pytz/zoneinfo/Asia/Calcutta.py b/modules/pytz/zoneinfo/Asia/Calcutta.py
deleted file mode 100644
index 08e3f934..00000000
--- a/modules/pytz/zoneinfo/Asia/Calcutta.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Asia/Calcutta.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Calcutta(DstTzInfo):
- '''Asia/Calcutta timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Calcutta'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,9,30,18,6,40),
-d(1942,5,14,17,30,0),
-d(1942,8,31,18,30,0),
-d(1945,10,14,17,30,0),
- ]
-
- _transition_info = [
-i(21180,0,'HMT'),
-i(23400,0,'BURT'),
-i(19800,0,'IST'),
-i(23400,3600,'IST'),
-i(19800,0,'IST'),
- ]
-
-Calcutta = Calcutta()
-
diff --git a/modules/pytz/zoneinfo/Asia/Choibalsan.py b/modules/pytz/zoneinfo/Asia/Choibalsan.py
deleted file mode 100644
index 5eeaea75..00000000
--- a/modules/pytz/zoneinfo/Asia/Choibalsan.py
+++ /dev/null
@@ -1,236 +0,0 @@
-'''tzinfo timezone information for Asia/Choibalsan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Choibalsan(DstTzInfo):
- '''Asia/Choibalsan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Choibalsan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,7,31,16,22,0),
-d(1977,12,31,17,0,0),
-d(1983,3,31,16,0,0),
-d(1983,9,30,14,0,0),
-d(1984,3,31,15,0,0),
-d(1984,9,29,17,0,0),
-d(1985,3,30,17,0,0),
-d(1985,9,28,17,0,0),
-d(1986,3,29,17,0,0),
-d(1986,9,27,17,0,0),
-d(1987,3,28,17,0,0),
-d(1987,9,26,17,0,0),
-d(1988,3,26,17,0,0),
-d(1988,9,24,17,0,0),
-d(1989,3,25,17,0,0),
-d(1989,9,23,17,0,0),
-d(1990,3,24,17,0,0),
-d(1990,9,29,17,0,0),
-d(1991,3,30,17,0,0),
-d(1991,9,28,17,0,0),
-d(1992,3,28,17,0,0),
-d(1992,9,26,17,0,0),
-d(1993,3,27,17,0,0),
-d(1993,9,25,17,0,0),
-d(1994,3,26,17,0,0),
-d(1994,9,24,17,0,0),
-d(1995,3,25,17,0,0),
-d(1995,9,23,17,0,0),
-d(1996,3,30,17,0,0),
-d(1996,9,28,17,0,0),
-d(1997,3,29,17,0,0),
-d(1997,9,27,17,0,0),
-d(1998,3,28,17,0,0),
-d(1998,9,26,17,0,0),
-d(2001,4,27,17,0,0),
-d(2001,9,28,16,0,0),
-d(2002,3,29,17,0,0),
-d(2002,9,27,16,0,0),
-d(2003,3,28,17,0,0),
-d(2003,9,26,16,0,0),
-d(2004,3,26,17,0,0),
-d(2004,9,24,16,0,0),
-d(2005,3,25,17,0,0),
-d(2005,9,23,16,0,0),
-d(2006,3,24,17,0,0),
-d(2006,9,29,16,0,0),
-d(2007,3,30,17,0,0),
-d(2007,9,28,16,0,0),
-d(2008,3,28,17,0,0),
-d(2008,9,26,16,0,0),
-d(2009,3,27,17,0,0),
-d(2009,9,25,16,0,0),
-d(2010,3,26,17,0,0),
-d(2010,9,24,16,0,0),
-d(2011,3,25,17,0,0),
-d(2011,9,23,16,0,0),
-d(2012,3,30,17,0,0),
-d(2012,9,28,16,0,0),
-d(2013,3,29,17,0,0),
-d(2013,9,27,16,0,0),
-d(2014,3,28,17,0,0),
-d(2014,9,26,16,0,0),
-d(2015,3,27,17,0,0),
-d(2015,9,25,16,0,0),
-d(2016,3,25,17,0,0),
-d(2016,9,23,16,0,0),
-d(2017,3,24,17,0,0),
-d(2017,9,29,16,0,0),
-d(2018,3,30,17,0,0),
-d(2018,9,28,16,0,0),
-d(2019,3,29,17,0,0),
-d(2019,9,27,16,0,0),
-d(2020,3,27,17,0,0),
-d(2020,9,25,16,0,0),
-d(2021,3,26,17,0,0),
-d(2021,9,24,16,0,0),
-d(2022,3,25,17,0,0),
-d(2022,9,23,16,0,0),
-d(2023,3,24,17,0,0),
-d(2023,9,29,16,0,0),
-d(2024,3,29,17,0,0),
-d(2024,9,27,16,0,0),
-d(2025,3,28,17,0,0),
-d(2025,9,26,16,0,0),
-d(2026,3,27,17,0,0),
-d(2026,9,25,16,0,0),
-d(2027,3,26,17,0,0),
-d(2027,9,24,16,0,0),
-d(2028,3,24,17,0,0),
-d(2028,9,29,16,0,0),
-d(2029,3,30,17,0,0),
-d(2029,9,28,16,0,0),
-d(2030,3,29,17,0,0),
-d(2030,9,27,16,0,0),
-d(2031,3,28,17,0,0),
-d(2031,9,26,16,0,0),
-d(2032,3,26,17,0,0),
-d(2032,9,24,16,0,0),
-d(2033,3,25,17,0,0),
-d(2033,9,23,16,0,0),
-d(2034,3,24,17,0,0),
-d(2034,9,29,16,0,0),
-d(2035,3,30,17,0,0),
-d(2035,9,28,16,0,0),
-d(2036,3,28,17,0,0),
-d(2036,9,26,16,0,0),
-d(2037,3,27,17,0,0),
-d(2037,9,25,16,0,0),
- ]
-
- _transition_info = [
-i(27480,0,'LMT'),
-i(25200,0,'ULAT'),
-i(28800,0,'ULAT'),
-i(36000,7200,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
-i(36000,3600,'CHOST'),
-i(32400,0,'CHOT'),
- ]
-
-Choibalsan = Choibalsan()
-
diff --git a/modules/pytz/zoneinfo/Asia/Chongqing.py b/modules/pytz/zoneinfo/Asia/Chongqing.py
deleted file mode 100644
index 40f8f629..00000000
--- a/modules/pytz/zoneinfo/Asia/Chongqing.py
+++ /dev/null
@@ -1,48 +0,0 @@
-'''tzinfo timezone information for Asia/Chongqing.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chongqing(DstTzInfo):
- '''Asia/Chongqing timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Chongqing'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,16,53,40),
-d(1980,4,30,17,0,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(25560,0,'LMT'),
-i(25200,0,'LONT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Chongqing = Chongqing()
-
diff --git a/modules/pytz/zoneinfo/Asia/Chungking.py b/modules/pytz/zoneinfo/Asia/Chungking.py
deleted file mode 100644
index 7f118aba..00000000
--- a/modules/pytz/zoneinfo/Asia/Chungking.py
+++ /dev/null
@@ -1,48 +0,0 @@
-'''tzinfo timezone information for Asia/Chungking.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chungking(DstTzInfo):
- '''Asia/Chungking timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Chungking'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,16,53,40),
-d(1980,4,30,17,0,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(25560,0,'LMT'),
-i(25200,0,'LONT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Chungking = Chungking()
-
diff --git a/modules/pytz/zoneinfo/Asia/Colombo.py b/modules/pytz/zoneinfo/Asia/Colombo.py
deleted file mode 100644
index 061003aa..00000000
--- a/modules/pytz/zoneinfo/Asia/Colombo.py
+++ /dev/null
@@ -1,32 +0,0 @@
-'''tzinfo timezone information for Asia/Colombo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Colombo(DstTzInfo):
- '''Asia/Colombo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Colombo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,12,31,18,40,28),
-d(1942,1,4,18,30,0),
-d(1942,8,31,18,0,0),
-d(1945,10,15,19,30,0),
-d(1996,5,24,18,30,0),
-d(1996,10,25,18,0,0),
- ]
-
- _transition_info = [
-i(19200,0,'MMT'),
-i(19800,0,'IST'),
-i(21600,1800,'IHST'),
-i(23400,3600,'IST'),
-i(19800,0,'IST'),
-i(23400,0,'LKT'),
-i(21600,0,'LKT'),
- ]
-
-Colombo = Colombo()
-
diff --git a/modules/pytz/zoneinfo/Asia/Dacca.py b/modules/pytz/zoneinfo/Asia/Dacca.py
deleted file mode 100644
index 3093a3a4..00000000
--- a/modules/pytz/zoneinfo/Asia/Dacca.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for Asia/Dacca.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dacca(DstTzInfo):
- '''Asia/Dacca timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Dacca'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,9,30,18,6,40),
-d(1942,5,14,17,30,0),
-d(1942,8,31,18,30,0),
-d(1951,9,29,17,30,0),
-d(1971,3,25,18,0,0),
- ]
-
- _transition_info = [
-i(21180,0,'HMT'),
-i(23400,0,'BURT'),
-i(19800,0,'IST'),
-i(23400,0,'BURT'),
-i(21600,0,'DACT'),
-i(21600,0,'BDT'),
- ]
-
-Dacca = Dacca()
-
diff --git a/modules/pytz/zoneinfo/Asia/Damascus.py b/modules/pytz/zoneinfo/Asia/Damascus.py
deleted file mode 100644
index f7a531b6..00000000
--- a/modules/pytz/zoneinfo/Asia/Damascus.py
+++ /dev/null
@@ -1,322 +0,0 @@
-'''tzinfo timezone information for Asia/Damascus.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Damascus(DstTzInfo):
- '''Asia/Damascus timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Damascus'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,21,34,48),
-d(1920,4,18,0,0,0),
-d(1920,10,2,23,0,0),
-d(1921,4,17,0,0,0),
-d(1921,10,1,23,0,0),
-d(1922,4,16,0,0,0),
-d(1922,9,30,23,0,0),
-d(1923,4,15,0,0,0),
-d(1923,10,6,23,0,0),
-d(1962,4,29,0,0,0),
-d(1962,9,30,23,0,0),
-d(1963,5,1,0,0,0),
-d(1963,9,29,23,0,0),
-d(1964,5,1,0,0,0),
-d(1964,9,30,23,0,0),
-d(1965,5,1,0,0,0),
-d(1965,9,29,23,0,0),
-d(1966,4,24,0,0,0),
-d(1966,9,30,23,0,0),
-d(1967,5,1,0,0,0),
-d(1967,9,30,23,0,0),
-d(1968,5,1,0,0,0),
-d(1968,9,30,23,0,0),
-d(1969,5,1,0,0,0),
-d(1969,9,30,23,0,0),
-d(1970,5,1,0,0,0),
-d(1970,9,30,23,0,0),
-d(1971,5,1,0,0,0),
-d(1971,9,30,23,0,0),
-d(1972,5,1,0,0,0),
-d(1972,9,30,23,0,0),
-d(1973,5,1,0,0,0),
-d(1973,9,30,23,0,0),
-d(1974,5,1,0,0,0),
-d(1974,9,30,23,0,0),
-d(1975,5,1,0,0,0),
-d(1975,9,30,23,0,0),
-d(1976,5,1,0,0,0),
-d(1976,9,30,23,0,0),
-d(1977,5,1,0,0,0),
-d(1977,8,31,23,0,0),
-d(1978,5,1,0,0,0),
-d(1978,8,31,23,0,0),
-d(1983,4,9,0,0,0),
-d(1983,9,30,23,0,0),
-d(1984,4,9,0,0,0),
-d(1984,9,30,23,0,0),
-d(1986,2,16,0,0,0),
-d(1986,10,8,23,0,0),
-d(1987,3,1,0,0,0),
-d(1987,10,30,23,0,0),
-d(1988,3,15,0,0,0),
-d(1988,10,30,23,0,0),
-d(1989,3,31,0,0,0),
-d(1989,9,30,23,0,0),
-d(1990,4,1,0,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,31,22,0,0),
-d(1991,9,30,21,0,0),
-d(1992,4,7,22,0,0),
-d(1992,9,30,21,0,0),
-d(1993,3,25,22,0,0),
-d(1993,9,24,21,0,0),
-d(1994,3,31,22,0,0),
-d(1994,9,30,21,0,0),
-d(1995,3,31,22,0,0),
-d(1995,9,30,21,0,0),
-d(1996,3,31,22,0,0),
-d(1996,9,30,21,0,0),
-d(1997,3,30,22,0,0),
-d(1997,9,30,21,0,0),
-d(1998,3,29,22,0,0),
-d(1998,9,30,21,0,0),
-d(1999,3,31,22,0,0),
-d(1999,9,30,21,0,0),
-d(2000,3,31,22,0,0),
-d(2000,9,30,21,0,0),
-d(2001,3,31,22,0,0),
-d(2001,9,30,21,0,0),
-d(2002,3,31,22,0,0),
-d(2002,9,30,21,0,0),
-d(2003,3,31,22,0,0),
-d(2003,9,30,21,0,0),
-d(2004,3,31,22,0,0),
-d(2004,9,30,21,0,0),
-d(2005,3,31,22,0,0),
-d(2005,9,30,21,0,0),
-d(2006,3,31,22,0,0),
-d(2006,9,30,21,0,0),
-d(2007,3,31,22,0,0),
-d(2007,9,30,21,0,0),
-d(2008,3,31,22,0,0),
-d(2008,9,30,21,0,0),
-d(2009,3,31,22,0,0),
-d(2009,9,30,21,0,0),
-d(2010,3,31,22,0,0),
-d(2010,9,30,21,0,0),
-d(2011,3,31,22,0,0),
-d(2011,9,30,21,0,0),
-d(2012,3,31,22,0,0),
-d(2012,9,30,21,0,0),
-d(2013,3,31,22,0,0),
-d(2013,9,30,21,0,0),
-d(2014,3,31,22,0,0),
-d(2014,9,30,21,0,0),
-d(2015,3,31,22,0,0),
-d(2015,9,30,21,0,0),
-d(2016,3,31,22,0,0),
-d(2016,9,30,21,0,0),
-d(2017,3,31,22,0,0),
-d(2017,9,30,21,0,0),
-d(2018,3,31,22,0,0),
-d(2018,9,30,21,0,0),
-d(2019,3,31,22,0,0),
-d(2019,9,30,21,0,0),
-d(2020,3,31,22,0,0),
-d(2020,9,30,21,0,0),
-d(2021,3,31,22,0,0),
-d(2021,9,30,21,0,0),
-d(2022,3,31,22,0,0),
-d(2022,9,30,21,0,0),
-d(2023,3,31,22,0,0),
-d(2023,9,30,21,0,0),
-d(2024,3,31,22,0,0),
-d(2024,9,30,21,0,0),
-d(2025,3,31,22,0,0),
-d(2025,9,30,21,0,0),
-d(2026,3,31,22,0,0),
-d(2026,9,30,21,0,0),
-d(2027,3,31,22,0,0),
-d(2027,9,30,21,0,0),
-d(2028,3,31,22,0,0),
-d(2028,9,30,21,0,0),
-d(2029,3,31,22,0,0),
-d(2029,9,30,21,0,0),
-d(2030,3,31,22,0,0),
-d(2030,9,30,21,0,0),
-d(2031,3,31,22,0,0),
-d(2031,9,30,21,0,0),
-d(2032,3,31,22,0,0),
-d(2032,9,30,21,0,0),
-d(2033,3,31,22,0,0),
-d(2033,9,30,21,0,0),
-d(2034,3,31,22,0,0),
-d(2034,9,30,21,0,0),
-d(2035,3,31,22,0,0),
-d(2035,9,30,21,0,0),
-d(2036,3,31,22,0,0),
-d(2036,9,30,21,0,0),
-d(2037,3,31,22,0,0),
-d(2037,9,30,21,0,0),
- ]
-
- _transition_info = [
-i(8700,0,'LMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Damascus = Damascus()
-
diff --git a/modules/pytz/zoneinfo/Asia/Dhaka.py b/modules/pytz/zoneinfo/Asia/Dhaka.py
deleted file mode 100644
index 7ccd4d55..00000000
--- a/modules/pytz/zoneinfo/Asia/Dhaka.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for Asia/Dhaka.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dhaka(DstTzInfo):
- '''Asia/Dhaka timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Dhaka'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,9,30,18,6,40),
-d(1942,5,14,17,30,0),
-d(1942,8,31,18,30,0),
-d(1951,9,29,17,30,0),
-d(1971,3,25,18,0,0),
- ]
-
- _transition_info = [
-i(21180,0,'HMT'),
-i(23400,0,'BURT'),
-i(19800,0,'IST'),
-i(23400,0,'BURT'),
-i(21600,0,'DACT'),
-i(21600,0,'BDT'),
- ]
-
-Dhaka = Dhaka()
-
diff --git a/modules/pytz/zoneinfo/Asia/Dili.py b/modules/pytz/zoneinfo/Asia/Dili.py
deleted file mode 100644
index 75b8df61..00000000
--- a/modules/pytz/zoneinfo/Asia/Dili.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for Asia/Dili.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dili(DstTzInfo):
- '''Asia/Dili timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Dili'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,15,37,40),
-d(1942,2,21,15,0,0),
-d(1945,7,31,15,0,0),
-d(1976,5,2,15,0,0),
-d(2000,9,16,16,0,0),
- ]
-
- _transition_info = [
-i(30120,0,'LMT'),
-i(28800,0,'TLT'),
-i(32400,0,'JST'),
-i(32400,0,'TLT'),
-i(28800,0,'CIT'),
-i(32400,0,'TLT'),
- ]
-
-Dili = Dili()
-
diff --git a/modules/pytz/zoneinfo/Asia/Dubai.py b/modules/pytz/zoneinfo/Asia/Dubai.py
deleted file mode 100644
index 7bb7471c..00000000
--- a/modules/pytz/zoneinfo/Asia/Dubai.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Dubai.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dubai(DstTzInfo):
- '''Asia/Dubai timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Dubai'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,20,18,48),
- ]
-
- _transition_info = [
-i(13260,0,'LMT'),
-i(14400,0,'GST'),
- ]
-
-Dubai = Dubai()
-
diff --git a/modules/pytz/zoneinfo/Asia/Dushanbe.py b/modules/pytz/zoneinfo/Asia/Dushanbe.py
deleted file mode 100644
index 4c2eb7c8..00000000
--- a/modules/pytz/zoneinfo/Asia/Dushanbe.py
+++ /dev/null
@@ -1,68 +0,0 @@
-'''tzinfo timezone information for Asia/Dushanbe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dushanbe(DstTzInfo):
- '''Asia/Dushanbe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Dushanbe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,19,24,48),
-d(1930,6,20,19,0,0),
-d(1981,3,31,18,0,0),
-d(1981,9,30,17,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,17,0,0),
-d(1983,3,31,18,0,0),
-d(1983,9,30,17,0,0),
-d(1984,3,31,18,0,0),
-d(1984,9,29,20,0,0),
-d(1985,3,30,20,0,0),
-d(1985,9,28,20,0,0),
-d(1986,3,29,20,0,0),
-d(1986,9,27,20,0,0),
-d(1987,3,28,20,0,0),
-d(1987,9,26,20,0,0),
-d(1988,3,26,20,0,0),
-d(1988,9,24,20,0,0),
-d(1989,3,25,20,0,0),
-d(1989,9,23,20,0,0),
-d(1990,3,24,20,0,0),
-d(1990,9,29,20,0,0),
-d(1991,3,30,20,0,0),
-d(1991,9,8,21,0,0),
- ]
-
- _transition_info = [
-i(16500,0,'LMT'),
-i(18000,0,'DUST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(25200,3600,'DUSST'),
-i(21600,0,'DUST'),
-i(21600,0,'DUSST'),
-i(18000,0,'TJT'),
- ]
-
-Dushanbe = Dushanbe()
-
diff --git a/modules/pytz/zoneinfo/Asia/Gaza.py b/modules/pytz/zoneinfo/Asia/Gaza.py
deleted file mode 100644
index 3fd5a5ca..00000000
--- a/modules/pytz/zoneinfo/Asia/Gaza.py
+++ /dev/null
@@ -1,308 +0,0 @@
-'''tzinfo timezone information for Asia/Gaza.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Gaza(DstTzInfo):
- '''Asia/Gaza timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Gaza'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1940,5,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1943,4,1,0,0,0),
-d(1943,10,31,21,0,0),
-d(1944,3,31,22,0,0),
-d(1944,10,31,21,0,0),
-d(1945,4,15,22,0,0),
-d(1945,10,31,23,0,0),
-d(1946,4,16,0,0,0),
-d(1946,10,31,21,0,0),
-d(1957,5,9,22,0,0),
-d(1957,9,30,21,0,0),
-d(1958,4,30,22,0,0),
-d(1958,9,30,21,0,0),
-d(1959,4,30,23,0,0),
-d(1959,9,30,0,0,0),
-d(1960,4,30,23,0,0),
-d(1960,9,30,0,0,0),
-d(1961,4,30,23,0,0),
-d(1961,9,30,0,0,0),
-d(1962,4,30,23,0,0),
-d(1962,9,30,0,0,0),
-d(1963,4,30,23,0,0),
-d(1963,9,30,0,0,0),
-d(1964,4,30,23,0,0),
-d(1964,9,30,0,0,0),
-d(1965,4,30,23,0,0),
-d(1965,9,30,0,0,0),
-d(1966,4,30,23,0,0),
-d(1966,10,1,0,0,0),
-d(1967,4,30,23,0,0),
-d(1967,6,4,21,0,0),
-d(1974,7,6,22,0,0),
-d(1974,10,12,21,0,0),
-d(1975,4,19,22,0,0),
-d(1975,8,30,21,0,0),
-d(1985,4,13,22,0,0),
-d(1985,9,14,21,0,0),
-d(1986,5,17,22,0,0),
-d(1986,9,6,21,0,0),
-d(1987,4,14,22,0,0),
-d(1987,9,12,21,0,0),
-d(1988,4,8,22,0,0),
-d(1988,9,2,21,0,0),
-d(1989,4,29,22,0,0),
-d(1989,9,2,21,0,0),
-d(1990,3,24,22,0,0),
-d(1990,8,25,21,0,0),
-d(1991,3,23,22,0,0),
-d(1991,8,31,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,5,21,0,0),
-d(1993,4,1,22,0,0),
-d(1993,9,4,21,0,0),
-d(1994,3,31,22,0,0),
-d(1994,8,27,21,0,0),
-d(1995,3,30,22,0,0),
-d(1995,9,2,21,0,0),
-d(1995,12,31,22,0,0),
-d(1996,4,4,22,0,0),
-d(1996,9,19,22,0,0),
-d(1997,4,3,22,0,0),
-d(1997,9,18,22,0,0),
-d(1998,4,2,22,0,0),
-d(1998,9,17,22,0,0),
-d(1998,12,31,22,0,0),
-d(1999,4,15,22,0,0),
-d(1999,10,14,21,0,0),
-d(2000,4,20,22,0,0),
-d(2000,10,19,21,0,0),
-d(2001,4,19,22,0,0),
-d(2001,10,18,21,0,0),
-d(2002,4,18,22,0,0),
-d(2002,10,17,21,0,0),
-d(2003,4,17,22,0,0),
-d(2003,10,16,21,0,0),
-d(2004,4,15,22,0,0),
-d(2004,9,30,22,0,0),
-d(2005,4,14,22,0,0),
-d(2005,10,3,22,0,0),
-d(2006,4,20,22,0,0),
-d(2006,10,3,22,0,0),
-d(2007,4,19,22,0,0),
-d(2007,10,3,22,0,0),
-d(2008,4,17,22,0,0),
-d(2008,10,3,22,0,0),
-d(2009,4,16,22,0,0),
-d(2009,10,3,22,0,0),
-d(2010,4,15,22,0,0),
-d(2010,10,3,22,0,0),
-d(2011,4,14,22,0,0),
-d(2011,10,3,22,0,0),
-d(2012,4,19,22,0,0),
-d(2012,10,3,22,0,0),
-d(2013,4,18,22,0,0),
-d(2013,10,3,22,0,0),
-d(2014,4,17,22,0,0),
-d(2014,10,3,22,0,0),
-d(2015,4,16,22,0,0),
-d(2015,10,3,22,0,0),
-d(2016,4,14,22,0,0),
-d(2016,10,3,22,0,0),
-d(2017,4,20,22,0,0),
-d(2017,10,3,22,0,0),
-d(2018,4,19,22,0,0),
-d(2018,10,3,22,0,0),
-d(2019,4,18,22,0,0),
-d(2019,10,3,22,0,0),
-d(2020,4,16,22,0,0),
-d(2020,10,3,22,0,0),
-d(2021,4,15,22,0,0),
-d(2021,10,3,22,0,0),
-d(2022,4,14,22,0,0),
-d(2022,10,3,22,0,0),
-d(2023,4,20,22,0,0),
-d(2023,10,3,22,0,0),
-d(2024,4,18,22,0,0),
-d(2024,10,3,22,0,0),
-d(2025,4,17,22,0,0),
-d(2025,10,3,22,0,0),
-d(2026,4,16,22,0,0),
-d(2026,10,3,22,0,0),
-d(2027,4,15,22,0,0),
-d(2027,10,3,22,0,0),
-d(2028,4,20,22,0,0),
-d(2028,10,3,22,0,0),
-d(2029,4,19,22,0,0),
-d(2029,10,3,22,0,0),
-d(2030,4,18,22,0,0),
-d(2030,10,3,22,0,0),
-d(2031,4,17,22,0,0),
-d(2031,10,3,22,0,0),
-d(2032,4,15,22,0,0),
-d(2032,10,3,22,0,0),
-d(2033,4,14,22,0,0),
-d(2033,10,3,22,0,0),
-d(2034,4,20,22,0,0),
-d(2034,10,3,22,0,0),
-d(2035,4,19,22,0,0),
-d(2035,10,3,22,0,0),
-d(2036,4,17,22,0,0),
-d(2036,10,3,22,0,0),
-d(2037,4,16,22,0,0),
-d(2037,10,3,22,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'EET'),
-i(10800,3600,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Gaza = Gaza()
-
diff --git a/modules/pytz/zoneinfo/Asia/Harbin.py b/modules/pytz/zoneinfo/Asia/Harbin.py
deleted file mode 100644
index 86941384..00000000
--- a/modules/pytz/zoneinfo/Asia/Harbin.py
+++ /dev/null
@@ -1,54 +0,0 @@
-'''tzinfo timezone information for Asia/Harbin.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Harbin(DstTzInfo):
- '''Asia/Harbin timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Harbin'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,15,33,16),
-d(1932,2,29,15,30,0),
-d(1939,12,31,16,0,0),
-d(1966,4,30,15,0,0),
-d(1980,4,30,15,30,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(30420,0,'LMT'),
-i(30600,0,'CHAT'),
-i(28800,0,'CST'),
-i(32400,0,'CHAT'),
-i(30600,0,'CHAT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Harbin = Harbin()
-
diff --git a/modules/pytz/zoneinfo/Asia/Hong_Kong.py b/modules/pytz/zoneinfo/Asia/Hong_Kong.py
deleted file mode 100644
index a17dfbef..00000000
--- a/modules/pytz/zoneinfo/Asia/Hong_Kong.py
+++ /dev/null
@@ -1,158 +0,0 @@
-'''tzinfo timezone information for Asia/Hong_Kong.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Hong_Kong(DstTzInfo):
- '''Asia/Hong_Kong timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Hong_Kong'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1904,10,29,16,23,24),
-d(1946,4,19,19,30,0),
-d(1946,11,30,18,30,0),
-d(1947,4,12,19,30,0),
-d(1947,12,29,18,30,0),
-d(1948,5,1,19,30,0),
-d(1948,10,30,18,30,0),
-d(1949,4,2,19,30,0),
-d(1949,10,29,18,30,0),
-d(1950,4,1,19,30,0),
-d(1950,10,28,18,30,0),
-d(1951,3,31,19,30,0),
-d(1951,10,27,18,30,0),
-d(1952,4,5,19,30,0),
-d(1952,10,25,18,30,0),
-d(1953,4,4,19,30,0),
-d(1953,10,31,18,30,0),
-d(1954,3,20,19,30,0),
-d(1954,10,30,18,30,0),
-d(1955,3,19,19,30,0),
-d(1955,11,5,18,30,0),
-d(1956,3,17,19,30,0),
-d(1956,11,3,18,30,0),
-d(1957,3,23,19,30,0),
-d(1957,11,2,18,30,0),
-d(1958,3,22,19,30,0),
-d(1958,11,1,18,30,0),
-d(1959,3,21,19,30,0),
-d(1959,10,31,18,30,0),
-d(1960,3,19,19,30,0),
-d(1960,11,5,18,30,0),
-d(1961,3,18,19,30,0),
-d(1961,11,4,18,30,0),
-d(1962,3,17,19,30,0),
-d(1962,11,3,18,30,0),
-d(1963,3,23,19,30,0),
-d(1963,11,2,18,30,0),
-d(1964,3,21,19,30,0),
-d(1964,10,31,18,30,0),
-d(1965,4,17,19,30,0),
-d(1965,10,16,18,30,0),
-d(1966,4,16,19,30,0),
-d(1966,10,15,18,30,0),
-d(1967,4,15,19,30,0),
-d(1967,10,21,18,30,0),
-d(1968,4,20,19,30,0),
-d(1968,10,19,18,30,0),
-d(1969,4,19,19,30,0),
-d(1969,10,18,18,30,0),
-d(1970,4,18,19,30,0),
-d(1970,10,17,18,30,0),
-d(1971,4,17,19,30,0),
-d(1971,10,16,18,30,0),
-d(1972,4,15,19,30,0),
-d(1972,10,21,18,30,0),
-d(1973,4,21,19,30,0),
-d(1973,10,20,18,30,0),
-d(1974,4,20,19,30,0),
-d(1974,10,19,18,30,0),
-d(1975,4,19,19,30,0),
-d(1975,10,18,18,30,0),
-d(1976,4,17,19,30,0),
-d(1976,10,16,18,30,0),
-d(1977,4,16,19,30,0),
-d(1977,10,15,18,30,0),
-d(1979,5,12,19,30,0),
-d(1979,10,20,18,30,0),
-d(1980,5,10,19,30,0),
-d(1980,10,18,18,30,0),
- ]
-
- _transition_info = [
-i(27420,0,'LMT'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
- ]
-
-Hong_Kong = Hong_Kong()
-
diff --git a/modules/pytz/zoneinfo/Asia/Hovd.py b/modules/pytz/zoneinfo/Asia/Hovd.py
deleted file mode 100644
index 6a841247..00000000
--- a/modules/pytz/zoneinfo/Asia/Hovd.py
+++ /dev/null
@@ -1,236 +0,0 @@
-'''tzinfo timezone information for Asia/Hovd.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Hovd(DstTzInfo):
- '''Asia/Hovd timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Hovd'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,7,31,17,53,24),
-d(1977,12,31,18,0,0),
-d(1983,3,31,17,0,0),
-d(1983,9,30,16,0,0),
-d(1984,3,31,17,0,0),
-d(1984,9,29,19,0,0),
-d(1985,3,30,19,0,0),
-d(1985,9,28,19,0,0),
-d(1986,3,29,19,0,0),
-d(1986,9,27,19,0,0),
-d(1987,3,28,19,0,0),
-d(1987,9,26,19,0,0),
-d(1988,3,26,19,0,0),
-d(1988,9,24,19,0,0),
-d(1989,3,25,19,0,0),
-d(1989,9,23,19,0,0),
-d(1990,3,24,19,0,0),
-d(1990,9,29,19,0,0),
-d(1991,3,30,19,0,0),
-d(1991,9,28,19,0,0),
-d(1992,3,28,19,0,0),
-d(1992,9,26,19,0,0),
-d(1993,3,27,19,0,0),
-d(1993,9,25,19,0,0),
-d(1994,3,26,19,0,0),
-d(1994,9,24,19,0,0),
-d(1995,3,25,19,0,0),
-d(1995,9,23,19,0,0),
-d(1996,3,30,19,0,0),
-d(1996,9,28,19,0,0),
-d(1997,3,29,19,0,0),
-d(1997,9,27,19,0,0),
-d(1998,3,28,19,0,0),
-d(1998,9,26,19,0,0),
-d(2001,4,27,19,0,0),
-d(2001,9,28,18,0,0),
-d(2002,3,29,19,0,0),
-d(2002,9,27,18,0,0),
-d(2003,3,28,19,0,0),
-d(2003,9,26,18,0,0),
-d(2004,3,26,19,0,0),
-d(2004,9,24,18,0,0),
-d(2005,3,25,19,0,0),
-d(2005,9,23,18,0,0),
-d(2006,3,24,19,0,0),
-d(2006,9,29,18,0,0),
-d(2007,3,30,19,0,0),
-d(2007,9,28,18,0,0),
-d(2008,3,28,19,0,0),
-d(2008,9,26,18,0,0),
-d(2009,3,27,19,0,0),
-d(2009,9,25,18,0,0),
-d(2010,3,26,19,0,0),
-d(2010,9,24,18,0,0),
-d(2011,3,25,19,0,0),
-d(2011,9,23,18,0,0),
-d(2012,3,30,19,0,0),
-d(2012,9,28,18,0,0),
-d(2013,3,29,19,0,0),
-d(2013,9,27,18,0,0),
-d(2014,3,28,19,0,0),
-d(2014,9,26,18,0,0),
-d(2015,3,27,19,0,0),
-d(2015,9,25,18,0,0),
-d(2016,3,25,19,0,0),
-d(2016,9,23,18,0,0),
-d(2017,3,24,19,0,0),
-d(2017,9,29,18,0,0),
-d(2018,3,30,19,0,0),
-d(2018,9,28,18,0,0),
-d(2019,3,29,19,0,0),
-d(2019,9,27,18,0,0),
-d(2020,3,27,19,0,0),
-d(2020,9,25,18,0,0),
-d(2021,3,26,19,0,0),
-d(2021,9,24,18,0,0),
-d(2022,3,25,19,0,0),
-d(2022,9,23,18,0,0),
-d(2023,3,24,19,0,0),
-d(2023,9,29,18,0,0),
-d(2024,3,29,19,0,0),
-d(2024,9,27,18,0,0),
-d(2025,3,28,19,0,0),
-d(2025,9,26,18,0,0),
-d(2026,3,27,19,0,0),
-d(2026,9,25,18,0,0),
-d(2027,3,26,19,0,0),
-d(2027,9,24,18,0,0),
-d(2028,3,24,19,0,0),
-d(2028,9,29,18,0,0),
-d(2029,3,30,19,0,0),
-d(2029,9,28,18,0,0),
-d(2030,3,29,19,0,0),
-d(2030,9,27,18,0,0),
-d(2031,3,28,19,0,0),
-d(2031,9,26,18,0,0),
-d(2032,3,26,19,0,0),
-d(2032,9,24,18,0,0),
-d(2033,3,25,19,0,0),
-d(2033,9,23,18,0,0),
-d(2034,3,24,19,0,0),
-d(2034,9,29,18,0,0),
-d(2035,3,30,19,0,0),
-d(2035,9,28,18,0,0),
-d(2036,3,28,19,0,0),
-d(2036,9,26,18,0,0),
-d(2037,3,27,19,0,0),
-d(2037,9,25,18,0,0),
- ]
-
- _transition_info = [
-i(22020,0,'LMT'),
-i(21600,0,'HOVT'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
-i(28800,3600,'HOVST'),
-i(25200,0,'HOVT'),
- ]
-
-Hovd = Hovd()
-
diff --git a/modules/pytz/zoneinfo/Asia/Irkutsk.py b/modules/pytz/zoneinfo/Asia/Irkutsk.py
deleted file mode 100644
index 8836f46d..00000000
--- a/modules/pytz/zoneinfo/Asia/Irkutsk.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Irkutsk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Irkutsk(DstTzInfo):
- '''Asia/Irkutsk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Irkutsk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,1,24,17,2,40),
-d(1930,6,20,17,0,0),
-d(1981,3,31,16,0,0),
-d(1981,9,30,15,0,0),
-d(1982,3,31,16,0,0),
-d(1982,9,30,15,0,0),
-d(1983,3,31,16,0,0),
-d(1983,9,30,15,0,0),
-d(1984,3,31,16,0,0),
-d(1984,9,29,18,0,0),
-d(1985,3,30,18,0,0),
-d(1985,9,28,18,0,0),
-d(1986,3,29,18,0,0),
-d(1986,9,27,18,0,0),
-d(1987,3,28,18,0,0),
-d(1987,9,26,18,0,0),
-d(1988,3,26,18,0,0),
-d(1988,9,24,18,0,0),
-d(1989,3,25,18,0,0),
-d(1989,9,23,18,0,0),
-d(1990,3,24,18,0,0),
-d(1990,9,29,18,0,0),
-d(1991,3,30,18,0,0),
-d(1991,9,28,19,0,0),
-d(1992,1,18,19,0,0),
-d(1992,3,28,15,0,0),
-d(1992,9,26,14,0,0),
-d(1993,3,27,18,0,0),
-d(1993,9,25,18,0,0),
-d(1994,3,26,18,0,0),
-d(1994,9,24,18,0,0),
-d(1995,3,25,18,0,0),
-d(1995,9,23,18,0,0),
-d(1996,3,30,18,0,0),
-d(1996,10,26,18,0,0),
-d(1997,3,29,18,0,0),
-d(1997,10,25,18,0,0),
-d(1998,3,28,18,0,0),
-d(1998,10,24,18,0,0),
-d(1999,3,27,18,0,0),
-d(1999,10,30,18,0,0),
-d(2000,3,25,18,0,0),
-d(2000,10,28,18,0,0),
-d(2001,3,24,18,0,0),
-d(2001,10,27,18,0,0),
-d(2002,3,30,18,0,0),
-d(2002,10,26,18,0,0),
-d(2003,3,29,18,0,0),
-d(2003,10,25,18,0,0),
-d(2004,3,27,18,0,0),
-d(2004,10,30,18,0,0),
-d(2005,3,26,18,0,0),
-d(2005,10,29,18,0,0),
-d(2006,3,25,18,0,0),
-d(2006,10,28,18,0,0),
-d(2007,3,24,18,0,0),
-d(2007,10,27,18,0,0),
-d(2008,3,29,18,0,0),
-d(2008,10,25,18,0,0),
-d(2009,3,28,18,0,0),
-d(2009,10,24,18,0,0),
-d(2010,3,27,18,0,0),
-d(2010,10,30,18,0,0),
-d(2011,3,26,18,0,0),
-d(2011,10,29,18,0,0),
-d(2012,3,24,18,0,0),
-d(2012,10,27,18,0,0),
-d(2013,3,30,18,0,0),
-d(2013,10,26,18,0,0),
-d(2014,3,29,18,0,0),
-d(2014,10,25,18,0,0),
-d(2015,3,28,18,0,0),
-d(2015,10,24,18,0,0),
-d(2016,3,26,18,0,0),
-d(2016,10,29,18,0,0),
-d(2017,3,25,18,0,0),
-d(2017,10,28,18,0,0),
-d(2018,3,24,18,0,0),
-d(2018,10,27,18,0,0),
-d(2019,3,30,18,0,0),
-d(2019,10,26,18,0,0),
-d(2020,3,28,18,0,0),
-d(2020,10,24,18,0,0),
-d(2021,3,27,18,0,0),
-d(2021,10,30,18,0,0),
-d(2022,3,26,18,0,0),
-d(2022,10,29,18,0,0),
-d(2023,3,25,18,0,0),
-d(2023,10,28,18,0,0),
-d(2024,3,30,18,0,0),
-d(2024,10,26,18,0,0),
-d(2025,3,29,18,0,0),
-d(2025,10,25,18,0,0),
-d(2026,3,28,18,0,0),
-d(2026,10,24,18,0,0),
-d(2027,3,27,18,0,0),
-d(2027,10,30,18,0,0),
-d(2028,3,25,18,0,0),
-d(2028,10,28,18,0,0),
-d(2029,3,24,18,0,0),
-d(2029,10,27,18,0,0),
-d(2030,3,30,18,0,0),
-d(2030,10,26,18,0,0),
-d(2031,3,29,18,0,0),
-d(2031,10,25,18,0,0),
-d(2032,3,27,18,0,0),
-d(2032,10,30,18,0,0),
-d(2033,3,26,18,0,0),
-d(2033,10,29,18,0,0),
-d(2034,3,25,18,0,0),
-d(2034,10,28,18,0,0),
-d(2035,3,24,18,0,0),
-d(2035,10,27,18,0,0),
-d(2036,3,29,18,0,0),
-d(2036,10,25,18,0,0),
-d(2037,3,28,18,0,0),
-d(2037,10,24,18,0,0),
- ]
-
- _transition_info = [
-i(25020,0,'IMT'),
-i(25200,0,'IRKT'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(28800,0,'IRKST'),
-i(25200,0,'IRKT'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
-i(32400,3600,'IRKST'),
-i(28800,0,'IRKT'),
- ]
-
-Irkutsk = Irkutsk()
-
diff --git a/modules/pytz/zoneinfo/Asia/Istanbul.py b/modules/pytz/zoneinfo/Asia/Istanbul.py
deleted file mode 100644
index fb5f8b6d..00000000
--- a/modules/pytz/zoneinfo/Asia/Istanbul.py
+++ /dev/null
@@ -1,362 +0,0 @@
-'''tzinfo timezone information for Asia/Istanbul.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Istanbul(DstTzInfo):
- '''Asia/Istanbul timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Istanbul'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1910,9,30,22,3,4),
-d(1916,4,30,22,0,0),
-d(1916,9,30,21,0,0),
-d(1920,3,27,22,0,0),
-d(1920,10,24,21,0,0),
-d(1921,4,2,22,0,0),
-d(1921,10,2,21,0,0),
-d(1922,3,25,22,0,0),
-d(1922,10,7,21,0,0),
-d(1924,5,12,22,0,0),
-d(1924,9,30,21,0,0),
-d(1925,4,30,22,0,0),
-d(1925,9,30,21,0,0),
-d(1940,6,29,22,0,0),
-d(1940,10,4,21,0,0),
-d(1940,11,30,22,0,0),
-d(1941,9,20,21,0,0),
-d(1942,3,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1945,4,1,22,0,0),
-d(1945,10,7,21,0,0),
-d(1946,5,31,22,0,0),
-d(1946,9,30,21,0,0),
-d(1947,4,19,22,0,0),
-d(1947,10,4,21,0,0),
-d(1948,4,17,22,0,0),
-d(1948,10,2,21,0,0),
-d(1949,4,9,22,0,0),
-d(1949,10,1,21,0,0),
-d(1950,4,18,22,0,0),
-d(1950,10,7,21,0,0),
-d(1951,4,21,22,0,0),
-d(1951,10,7,21,0,0),
-d(1962,7,14,22,0,0),
-d(1962,10,7,21,0,0),
-d(1964,5,14,22,0,0),
-d(1964,9,30,21,0,0),
-d(1970,5,2,22,0,0),
-d(1970,10,3,21,0,0),
-d(1971,5,1,22,0,0),
-d(1971,10,2,21,0,0),
-d(1972,5,6,22,0,0),
-d(1972,10,7,21,0,0),
-d(1973,6,2,23,0,0),
-d(1973,11,4,0,0,0),
-d(1974,3,31,0,0,0),
-d(1974,11,3,2,0,0),
-d(1975,3,29,22,0,0),
-d(1975,10,25,21,0,0),
-d(1976,5,31,22,0,0),
-d(1976,10,30,21,0,0),
-d(1977,4,2,22,0,0),
-d(1977,10,15,21,0,0),
-d(1978,4,1,22,0,0),
-d(1978,10,14,21,0,0),
-d(1979,10,14,20,0,0),
-d(1980,4,6,0,0,0),
-d(1980,10,12,20,0,0),
-d(1981,3,29,0,0,0),
-d(1981,10,11,20,0,0),
-d(1982,3,28,0,0,0),
-d(1982,10,10,20,0,0),
-d(1983,7,30,21,0,0),
-d(1983,10,1,20,0,0),
-d(1985,4,19,21,0,0),
-d(1985,9,27,21,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1988,3,27,0,0,0),
-d(1988,9,25,0,0,0),
-d(1989,3,26,0,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1990,12,31,22,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7020,0,'IMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(14400,7200,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Istanbul = Istanbul()
-
diff --git a/modules/pytz/zoneinfo/Asia/Jakarta.py b/modules/pytz/zoneinfo/Asia/Jakarta.py
deleted file mode 100644
index 27a42113..00000000
--- a/modules/pytz/zoneinfo/Asia/Jakarta.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for Asia/Jakarta.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jakarta(DstTzInfo):
- '''Asia/Jakarta timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Jakarta'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1923,12,31,16,40,0),
-d(1932,10,31,16,40,0),
-d(1942,3,22,16,30,0),
-d(1945,7,31,15,0,0),
-d(1948,4,30,16,30,0),
-d(1950,4,30,16,0,0),
-d(1963,12,31,16,30,0),
- ]
-
- _transition_info = [
-i(25620,0,'JMT'),
-i(26400,0,'JAVT'),
-i(27000,0,'WIT'),
-i(32400,0,'JST'),
-i(27000,0,'WIT'),
-i(28800,0,'WIT'),
-i(27000,0,'WIT'),
-i(25200,0,'WIT'),
- ]
-
-Jakarta = Jakarta()
-
diff --git a/modules/pytz/zoneinfo/Asia/Jayapura.py b/modules/pytz/zoneinfo/Asia/Jayapura.py
deleted file mode 100644
index c8760780..00000000
--- a/modules/pytz/zoneinfo/Asia/Jayapura.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Asia/Jayapura.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jayapura(DstTzInfo):
- '''Asia/Jayapura timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Jayapura'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1932,10,31,14,37,12),
-d(1943,12,31,15,0,0),
-d(1963,12,31,14,30,0),
- ]
-
- _transition_info = [
-i(33780,0,'LMT'),
-i(32400,0,'EIT'),
-i(34200,0,'CST'),
-i(32400,0,'EIT'),
- ]
-
-Jayapura = Jayapura()
-
diff --git a/modules/pytz/zoneinfo/Asia/Jerusalem.py b/modules/pytz/zoneinfo/Asia/Jerusalem.py
deleted file mode 100644
index cf3af693..00000000
--- a/modules/pytz/zoneinfo/Asia/Jerusalem.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for Asia/Jerusalem.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jerusalem(DstTzInfo):
- '''Asia/Jerusalem timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Jerusalem'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,12,31,21,39,20),
-d(1940,5,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1943,4,1,0,0,0),
-d(1943,10,31,21,0,0),
-d(1944,3,31,22,0,0),
-d(1944,10,31,21,0,0),
-d(1945,4,15,22,0,0),
-d(1945,10,31,23,0,0),
-d(1946,4,16,0,0,0),
-d(1946,10,31,21,0,0),
-d(1948,5,22,22,0,0),
-d(1948,8,31,20,0,0),
-d(1948,10,31,23,0,0),
-d(1949,4,30,22,0,0),
-d(1949,10,31,23,0,0),
-d(1950,4,15,22,0,0),
-d(1950,9,15,0,0,0),
-d(1951,3,31,22,0,0),
-d(1951,11,11,0,0,0),
-d(1952,4,20,0,0,0),
-d(1952,10,19,0,0,0),
-d(1953,4,12,0,0,0),
-d(1953,9,13,0,0,0),
-d(1954,6,12,22,0,0),
-d(1954,9,11,21,0,0),
-d(1955,6,11,0,0,0),
-d(1955,9,10,21,0,0),
-d(1956,6,2,22,0,0),
-d(1956,9,30,0,0,0),
-d(1957,4,29,0,0,0),
-d(1957,9,21,21,0,0),
-d(1974,7,6,22,0,0),
-d(1974,10,12,21,0,0),
-d(1975,4,19,22,0,0),
-d(1975,8,30,21,0,0),
-d(1985,4,13,22,0,0),
-d(1985,9,14,21,0,0),
-d(1986,5,17,22,0,0),
-d(1986,9,6,21,0,0),
-d(1987,4,14,22,0,0),
-d(1987,9,12,21,0,0),
-d(1988,4,8,22,0,0),
-d(1988,9,2,21,0,0),
-d(1989,4,29,22,0,0),
-d(1989,9,2,21,0,0),
-d(1990,3,24,22,0,0),
-d(1990,8,25,21,0,0),
-d(1991,3,23,22,0,0),
-d(1991,8,31,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,5,21,0,0),
-d(1993,4,1,22,0,0),
-d(1993,9,4,21,0,0),
-d(1994,3,31,22,0,0),
-d(1994,8,27,21,0,0),
-d(1995,3,30,22,0,0),
-d(1995,9,2,21,0,0),
-d(1996,3,14,22,0,0),
-d(1996,9,15,21,0,0),
-d(1997,3,20,22,0,0),
-d(1997,9,13,21,0,0),
-d(1998,3,19,22,0,0),
-d(1998,9,5,21,0,0),
-d(1999,4,2,0,0,0),
-d(1999,9,2,23,0,0),
-d(2000,4,14,0,0,0),
-d(2000,10,5,22,0,0),
-d(2001,4,8,23,0,0),
-d(2001,9,23,22,0,0),
-d(2002,3,28,23,0,0),
-d(2002,10,6,22,0,0),
-d(2003,3,27,23,0,0),
-d(2003,10,2,22,0,0),
-d(2004,4,6,23,0,0),
-d(2004,9,21,22,0,0),
-d(2005,4,1,0,0,0),
-d(2005,10,8,23,0,0),
-d(2006,3,31,0,0,0),
-d(2006,9,30,23,0,0),
-d(2007,3,30,0,0,0),
-d(2007,9,15,23,0,0),
-d(2008,3,28,0,0,0),
-d(2008,10,4,23,0,0),
-d(2009,3,27,0,0,0),
-d(2009,9,26,23,0,0),
-d(2010,3,26,0,0,0),
-d(2010,9,11,23,0,0),
-d(2011,4,1,0,0,0),
-d(2011,10,1,23,0,0),
-d(2012,3,30,0,0,0),
-d(2012,9,22,23,0,0),
-d(2013,3,29,0,0,0),
-d(2013,9,7,23,0,0),
-d(2014,3,28,0,0,0),
-d(2014,9,27,23,0,0),
-d(2015,3,27,0,0,0),
-d(2015,9,19,23,0,0),
-d(2016,4,1,0,0,0),
-d(2016,10,8,23,0,0),
-d(2017,3,31,0,0,0),
-d(2017,9,23,23,0,0),
-d(2018,3,30,0,0,0),
-d(2018,9,15,23,0,0),
-d(2019,3,29,0,0,0),
-d(2019,10,5,23,0,0),
-d(2020,3,27,0,0,0),
-d(2020,9,26,23,0,0),
-d(2021,3,26,0,0,0),
-d(2021,9,11,23,0,0),
-d(2022,4,1,0,0,0),
-d(2022,10,1,23,0,0),
-d(2023,3,31,0,0,0),
-d(2023,9,23,23,0,0),
-d(2024,3,29,0,0,0),
-d(2024,10,5,23,0,0),
-d(2025,3,28,0,0,0),
-d(2025,9,27,23,0,0),
-d(2026,3,27,0,0,0),
-d(2026,9,19,23,0,0),
-d(2027,3,26,0,0,0),
-d(2027,10,9,23,0,0),
-d(2028,3,31,0,0,0),
-d(2028,9,23,23,0,0),
-d(2029,3,30,0,0,0),
-d(2029,9,15,23,0,0),
-d(2030,3,29,0,0,0),
-d(2030,10,5,23,0,0),
-d(2031,3,28,0,0,0),
-d(2031,9,20,23,0,0),
-d(2032,3,26,0,0,0),
-d(2032,9,11,23,0,0),
-d(2033,4,1,0,0,0),
-d(2033,10,1,23,0,0),
-d(2034,3,31,0,0,0),
-d(2034,9,16,23,0,0),
-d(2035,3,30,0,0,0),
-d(2035,10,6,23,0,0),
-d(2036,3,28,0,0,0),
-d(2036,9,27,23,0,0),
-d(2037,3,27,0,0,0),
-d(2037,9,12,23,0,0),
- ]
-
- _transition_info = [
-i(8460,0,'JMT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(14400,7200,'IDDT'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
- ]
-
-Jerusalem = Jerusalem()
-
diff --git a/modules/pytz/zoneinfo/Asia/Kabul.py b/modules/pytz/zoneinfo/Asia/Kabul.py
deleted file mode 100644
index c19ff5f5..00000000
--- a/modules/pytz/zoneinfo/Asia/Kabul.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Kabul.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kabul(DstTzInfo):
- '''Asia/Kabul timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Kabul'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1944,12,31,20,0,0),
- ]
-
- _transition_info = [
-i(14400,0,'AFT'),
-i(16200,0,'AFT'),
- ]
-
-Kabul = Kabul()
-
diff --git a/modules/pytz/zoneinfo/Asia/Kamchatka.py b/modules/pytz/zoneinfo/Asia/Kamchatka.py
deleted file mode 100644
index 7b6b9465..00000000
--- a/modules/pytz/zoneinfo/Asia/Kamchatka.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Kamchatka.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kamchatka(DstTzInfo):
- '''Asia/Kamchatka timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Kamchatka'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,11,9,13,25,24),
-d(1930,6,20,13,0,0),
-d(1981,3,31,12,0,0),
-d(1981,9,30,11,0,0),
-d(1982,3,31,12,0,0),
-d(1982,9,30,11,0,0),
-d(1983,3,31,12,0,0),
-d(1983,9,30,11,0,0),
-d(1984,3,31,12,0,0),
-d(1984,9,29,14,0,0),
-d(1985,3,30,14,0,0),
-d(1985,9,28,14,0,0),
-d(1986,3,29,14,0,0),
-d(1986,9,27,14,0,0),
-d(1987,3,28,14,0,0),
-d(1987,9,26,14,0,0),
-d(1988,3,26,14,0,0),
-d(1988,9,24,14,0,0),
-d(1989,3,25,14,0,0),
-d(1989,9,23,14,0,0),
-d(1990,3,24,14,0,0),
-d(1990,9,29,14,0,0),
-d(1991,3,30,14,0,0),
-d(1991,9,28,15,0,0),
-d(1992,1,18,15,0,0),
-d(1992,3,28,11,0,0),
-d(1992,9,26,10,0,0),
-d(1993,3,27,14,0,0),
-d(1993,9,25,14,0,0),
-d(1994,3,26,14,0,0),
-d(1994,9,24,14,0,0),
-d(1995,3,25,14,0,0),
-d(1995,9,23,14,0,0),
-d(1996,3,30,14,0,0),
-d(1996,10,26,14,0,0),
-d(1997,3,29,14,0,0),
-d(1997,10,25,14,0,0),
-d(1998,3,28,14,0,0),
-d(1998,10,24,14,0,0),
-d(1999,3,27,14,0,0),
-d(1999,10,30,14,0,0),
-d(2000,3,25,14,0,0),
-d(2000,10,28,14,0,0),
-d(2001,3,24,14,0,0),
-d(2001,10,27,14,0,0),
-d(2002,3,30,14,0,0),
-d(2002,10,26,14,0,0),
-d(2003,3,29,14,0,0),
-d(2003,10,25,14,0,0),
-d(2004,3,27,14,0,0),
-d(2004,10,30,14,0,0),
-d(2005,3,26,14,0,0),
-d(2005,10,29,14,0,0),
-d(2006,3,25,14,0,0),
-d(2006,10,28,14,0,0),
-d(2007,3,24,14,0,0),
-d(2007,10,27,14,0,0),
-d(2008,3,29,14,0,0),
-d(2008,10,25,14,0,0),
-d(2009,3,28,14,0,0),
-d(2009,10,24,14,0,0),
-d(2010,3,27,14,0,0),
-d(2010,10,30,14,0,0),
-d(2011,3,26,14,0,0),
-d(2011,10,29,14,0,0),
-d(2012,3,24,14,0,0),
-d(2012,10,27,14,0,0),
-d(2013,3,30,14,0,0),
-d(2013,10,26,14,0,0),
-d(2014,3,29,14,0,0),
-d(2014,10,25,14,0,0),
-d(2015,3,28,14,0,0),
-d(2015,10,24,14,0,0),
-d(2016,3,26,14,0,0),
-d(2016,10,29,14,0,0),
-d(2017,3,25,14,0,0),
-d(2017,10,28,14,0,0),
-d(2018,3,24,14,0,0),
-d(2018,10,27,14,0,0),
-d(2019,3,30,14,0,0),
-d(2019,10,26,14,0,0),
-d(2020,3,28,14,0,0),
-d(2020,10,24,14,0,0),
-d(2021,3,27,14,0,0),
-d(2021,10,30,14,0,0),
-d(2022,3,26,14,0,0),
-d(2022,10,29,14,0,0),
-d(2023,3,25,14,0,0),
-d(2023,10,28,14,0,0),
-d(2024,3,30,14,0,0),
-d(2024,10,26,14,0,0),
-d(2025,3,29,14,0,0),
-d(2025,10,25,14,0,0),
-d(2026,3,28,14,0,0),
-d(2026,10,24,14,0,0),
-d(2027,3,27,14,0,0),
-d(2027,10,30,14,0,0),
-d(2028,3,25,14,0,0),
-d(2028,10,28,14,0,0),
-d(2029,3,24,14,0,0),
-d(2029,10,27,14,0,0),
-d(2030,3,30,14,0,0),
-d(2030,10,26,14,0,0),
-d(2031,3,29,14,0,0),
-d(2031,10,25,14,0,0),
-d(2032,3,27,14,0,0),
-d(2032,10,30,14,0,0),
-d(2033,3,26,14,0,0),
-d(2033,10,29,14,0,0),
-d(2034,3,25,14,0,0),
-d(2034,10,28,14,0,0),
-d(2035,3,24,14,0,0),
-d(2035,10,27,14,0,0),
-d(2036,3,29,14,0,0),
-d(2036,10,25,14,0,0),
-d(2037,3,28,14,0,0),
-d(2037,10,24,14,0,0),
- ]
-
- _transition_info = [
-i(38100,0,'LMT'),
-i(39600,0,'PETT'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(43200,0,'PETST'),
-i(39600,0,'PETT'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
-i(46800,3600,'PETST'),
-i(43200,0,'PETT'),
- ]
-
-Kamchatka = Kamchatka()
-
diff --git a/modules/pytz/zoneinfo/Asia/Karachi.py b/modules/pytz/zoneinfo/Asia/Karachi.py
deleted file mode 100644
index 838f06b0..00000000
--- a/modules/pytz/zoneinfo/Asia/Karachi.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for Asia/Karachi.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Karachi(DstTzInfo):
- '''Asia/Karachi timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Karachi'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,12,31,19,31,48),
-d(1942,8,31,18,30,0),
-d(1945,10,14,17,30,0),
-d(1951,9,29,18,30,0),
-d(1971,3,25,19,0,0),
-d(2002,4,6,19,1,0),
-d(2002,10,5,18,1,0),
- ]
-
- _transition_info = [
-i(16080,0,'LMT'),
-i(19800,0,'IST'),
-i(23400,3600,'IST'),
-i(19800,0,'IST'),
-i(18000,0,'KART'),
-i(18000,0,'PKT'),
-i(21600,3600,'PKST'),
-i(18000,0,'PKT'),
- ]
-
-Karachi = Karachi()
-
diff --git a/modules/pytz/zoneinfo/Asia/Kashgar.py b/modules/pytz/zoneinfo/Asia/Kashgar.py
deleted file mode 100644
index 27616b0e..00000000
--- a/modules/pytz/zoneinfo/Asia/Kashgar.py
+++ /dev/null
@@ -1,50 +0,0 @@
-'''tzinfo timezone information for Asia/Kashgar.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kashgar(DstTzInfo):
- '''Asia/Kashgar timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Kashgar'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,18,56,4),
-d(1939,12,31,18,30,0),
-d(1980,4,30,19,0,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(18240,0,'LMT'),
-i(19800,0,'KAST'),
-i(18000,0,'KAST'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Kashgar = Kashgar()
-
diff --git a/modules/pytz/zoneinfo/Asia/Katmandu.py b/modules/pytz/zoneinfo/Asia/Katmandu.py
deleted file mode 100644
index 2f8d1f1a..00000000
--- a/modules/pytz/zoneinfo/Asia/Katmandu.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Asia/Katmandu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Katmandu(DstTzInfo):
- '''Asia/Katmandu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Katmandu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,18,18,44),
-d(1985,12,31,18,30,0),
- ]
-
- _transition_info = [
-i(20460,0,'LMT'),
-i(19800,0,'IST'),
-i(20700,0,'NPT'),
- ]
-
-Katmandu = Katmandu()
-
diff --git a/modules/pytz/zoneinfo/Asia/Krasnoyarsk.py b/modules/pytz/zoneinfo/Asia/Krasnoyarsk.py
deleted file mode 100644
index 5cecf765..00000000
--- a/modules/pytz/zoneinfo/Asia/Krasnoyarsk.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Krasnoyarsk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Krasnoyarsk(DstTzInfo):
- '''Asia/Krasnoyarsk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Krasnoyarsk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1920,1,5,17,48,40),
-d(1930,6,20,18,0,0),
-d(1981,3,31,17,0,0),
-d(1981,9,30,16,0,0),
-d(1982,3,31,17,0,0),
-d(1982,9,30,16,0,0),
-d(1983,3,31,17,0,0),
-d(1983,9,30,16,0,0),
-d(1984,3,31,17,0,0),
-d(1984,9,29,19,0,0),
-d(1985,3,30,19,0,0),
-d(1985,9,28,19,0,0),
-d(1986,3,29,19,0,0),
-d(1986,9,27,19,0,0),
-d(1987,3,28,19,0,0),
-d(1987,9,26,19,0,0),
-d(1988,3,26,19,0,0),
-d(1988,9,24,19,0,0),
-d(1989,3,25,19,0,0),
-d(1989,9,23,19,0,0),
-d(1990,3,24,19,0,0),
-d(1990,9,29,19,0,0),
-d(1991,3,30,19,0,0),
-d(1991,9,28,20,0,0),
-d(1992,1,18,20,0,0),
-d(1992,3,28,16,0,0),
-d(1992,9,26,15,0,0),
-d(1993,3,27,19,0,0),
-d(1993,9,25,19,0,0),
-d(1994,3,26,19,0,0),
-d(1994,9,24,19,0,0),
-d(1995,3,25,19,0,0),
-d(1995,9,23,19,0,0),
-d(1996,3,30,19,0,0),
-d(1996,10,26,19,0,0),
-d(1997,3,29,19,0,0),
-d(1997,10,25,19,0,0),
-d(1998,3,28,19,0,0),
-d(1998,10,24,19,0,0),
-d(1999,3,27,19,0,0),
-d(1999,10,30,19,0,0),
-d(2000,3,25,19,0,0),
-d(2000,10,28,19,0,0),
-d(2001,3,24,19,0,0),
-d(2001,10,27,19,0,0),
-d(2002,3,30,19,0,0),
-d(2002,10,26,19,0,0),
-d(2003,3,29,19,0,0),
-d(2003,10,25,19,0,0),
-d(2004,3,27,19,0,0),
-d(2004,10,30,19,0,0),
-d(2005,3,26,19,0,0),
-d(2005,10,29,19,0,0),
-d(2006,3,25,19,0,0),
-d(2006,10,28,19,0,0),
-d(2007,3,24,19,0,0),
-d(2007,10,27,19,0,0),
-d(2008,3,29,19,0,0),
-d(2008,10,25,19,0,0),
-d(2009,3,28,19,0,0),
-d(2009,10,24,19,0,0),
-d(2010,3,27,19,0,0),
-d(2010,10,30,19,0,0),
-d(2011,3,26,19,0,0),
-d(2011,10,29,19,0,0),
-d(2012,3,24,19,0,0),
-d(2012,10,27,19,0,0),
-d(2013,3,30,19,0,0),
-d(2013,10,26,19,0,0),
-d(2014,3,29,19,0,0),
-d(2014,10,25,19,0,0),
-d(2015,3,28,19,0,0),
-d(2015,10,24,19,0,0),
-d(2016,3,26,19,0,0),
-d(2016,10,29,19,0,0),
-d(2017,3,25,19,0,0),
-d(2017,10,28,19,0,0),
-d(2018,3,24,19,0,0),
-d(2018,10,27,19,0,0),
-d(2019,3,30,19,0,0),
-d(2019,10,26,19,0,0),
-d(2020,3,28,19,0,0),
-d(2020,10,24,19,0,0),
-d(2021,3,27,19,0,0),
-d(2021,10,30,19,0,0),
-d(2022,3,26,19,0,0),
-d(2022,10,29,19,0,0),
-d(2023,3,25,19,0,0),
-d(2023,10,28,19,0,0),
-d(2024,3,30,19,0,0),
-d(2024,10,26,19,0,0),
-d(2025,3,29,19,0,0),
-d(2025,10,25,19,0,0),
-d(2026,3,28,19,0,0),
-d(2026,10,24,19,0,0),
-d(2027,3,27,19,0,0),
-d(2027,10,30,19,0,0),
-d(2028,3,25,19,0,0),
-d(2028,10,28,19,0,0),
-d(2029,3,24,19,0,0),
-d(2029,10,27,19,0,0),
-d(2030,3,30,19,0,0),
-d(2030,10,26,19,0,0),
-d(2031,3,29,19,0,0),
-d(2031,10,25,19,0,0),
-d(2032,3,27,19,0,0),
-d(2032,10,30,19,0,0),
-d(2033,3,26,19,0,0),
-d(2033,10,29,19,0,0),
-d(2034,3,25,19,0,0),
-d(2034,10,28,19,0,0),
-d(2035,3,24,19,0,0),
-d(2035,10,27,19,0,0),
-d(2036,3,29,19,0,0),
-d(2036,10,25,19,0,0),
-d(2037,3,28,19,0,0),
-d(2037,10,24,19,0,0),
- ]
-
- _transition_info = [
-i(22260,0,'LMT'),
-i(21600,0,'KRAT'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(25200,0,'KRAST'),
-i(21600,0,'KRAT'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
-i(28800,3600,'KRAST'),
-i(25200,0,'KRAT'),
- ]
-
-Krasnoyarsk = Krasnoyarsk()
-
diff --git a/modules/pytz/zoneinfo/Asia/Kuala_Lumpur.py b/modules/pytz/zoneinfo/Asia/Kuala_Lumpur.py
deleted file mode 100644
index 99f1d829..00000000
--- a/modules/pytz/zoneinfo/Asia/Kuala_Lumpur.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for Asia/Kuala_Lumpur.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kuala_Lumpur(DstTzInfo):
- '''Asia/Kuala_Lumpur timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Kuala_Lumpur'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,5,31,17,4,35),
-d(1932,12,31,17,0,0),
-d(1935,12,31,16,40,0),
-d(1941,8,31,16,40,0),
-d(1942,2,15,16,30,0),
-d(1945,9,11,15,0,0),
-d(1981,12,31,16,30,0),
- ]
-
- _transition_info = [
-i(24900,0,'SMT'),
-i(25200,0,'MALT'),
-i(26400,1200,'MALST'),
-i(26400,0,'MALT'),
-i(27000,0,'MALT'),
-i(32400,0,'JST'),
-i(27000,0,'MALT'),
-i(28800,0,'MYT'),
- ]
-
-Kuala_Lumpur = Kuala_Lumpur()
-
diff --git a/modules/pytz/zoneinfo/Asia/Kuching.py b/modules/pytz/zoneinfo/Asia/Kuching.py
deleted file mode 100644
index e6e7b99e..00000000
--- a/modules/pytz/zoneinfo/Asia/Kuching.py
+++ /dev/null
@@ -1,58 +0,0 @@
-'''tzinfo timezone information for Asia/Kuching.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kuching(DstTzInfo):
- '''Asia/Kuching timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Kuching'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1926,2,28,16,38,40),
-d(1932,12,31,16,30,0),
-d(1935,9,13,16,0,0),
-d(1935,12,13,15,40,0),
-d(1936,9,13,16,0,0),
-d(1936,12,13,15,40,0),
-d(1937,9,13,16,0,0),
-d(1937,12,13,15,40,0),
-d(1938,9,13,16,0,0),
-d(1938,12,13,15,40,0),
-d(1939,9,13,16,0,0),
-d(1939,12,13,15,40,0),
-d(1940,9,13,16,0,0),
-d(1940,12,13,15,40,0),
-d(1941,9,13,16,0,0),
-d(1941,12,13,15,40,0),
-d(1942,2,15,16,0,0),
-d(1945,9,11,15,0,0),
-d(1981,12,31,16,0,0),
- ]
-
- _transition_info = [
-i(26460,0,'LMT'),
-i(27000,0,'BORT'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(30000,1200,'BORTST'),
-i(28800,0,'BORT'),
-i(32400,0,'JST'),
-i(28800,0,'BORT'),
-i(28800,0,'MYT'),
- ]
-
-Kuching = Kuching()
-
diff --git a/modules/pytz/zoneinfo/Asia/Kuwait.py b/modules/pytz/zoneinfo/Asia/Kuwait.py
deleted file mode 100644
index 011d226d..00000000
--- a/modules/pytz/zoneinfo/Asia/Kuwait.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Kuwait.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kuwait(DstTzInfo):
- '''Asia/Kuwait timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Kuwait'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1949,12,31,20,48,4),
- ]
-
- _transition_info = [
-i(11520,0,'LMT'),
-i(10800,0,'AST'),
- ]
-
-Kuwait = Kuwait()
-
diff --git a/modules/pytz/zoneinfo/Asia/Macao.py b/modules/pytz/zoneinfo/Asia/Macao.py
deleted file mode 100644
index 858c8497..00000000
--- a/modules/pytz/zoneinfo/Asia/Macao.py
+++ /dev/null
@@ -1,104 +0,0 @@
-'''tzinfo timezone information for Asia/Macao.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Macao(DstTzInfo):
- '''Asia/Macao timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Macao'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,16,25,40),
-d(1961,3,18,19,30,0),
-d(1961,11,4,18,30,0),
-d(1962,3,17,19,30,0),
-d(1962,11,3,18,30,0),
-d(1963,3,16,16,0,0),
-d(1963,11,2,18,30,0),
-d(1964,3,21,19,30,0),
-d(1964,10,31,18,30,0),
-d(1965,3,20,16,0,0),
-d(1965,10,30,15,0,0),
-d(1966,4,16,19,30,0),
-d(1966,10,15,18,30,0),
-d(1967,4,15,19,30,0),
-d(1967,10,21,18,30,0),
-d(1968,4,20,19,30,0),
-d(1968,10,19,18,30,0),
-d(1969,4,19,19,30,0),
-d(1969,10,18,18,30,0),
-d(1970,4,18,19,30,0),
-d(1970,10,17,18,30,0),
-d(1971,4,17,19,30,0),
-d(1971,10,16,18,30,0),
-d(1972,4,15,16,0,0),
-d(1972,10,14,15,0,0),
-d(1973,4,14,16,0,0),
-d(1973,10,20,15,0,0),
-d(1974,4,20,16,0,0),
-d(1974,10,19,18,30,0),
-d(1975,4,19,19,30,0),
-d(1975,10,18,18,30,0),
-d(1976,4,17,19,30,0),
-d(1976,10,16,18,30,0),
-d(1977,4,16,19,30,0),
-d(1977,10,15,18,30,0),
-d(1978,4,15,16,0,0),
-d(1978,10,14,15,0,0),
-d(1979,4,14,16,0,0),
-d(1979,10,20,15,0,0),
-d(1980,4,19,16,0,0),
-d(1980,10,18,15,0,0),
-d(1999,12,19,16,0,0),
- ]
-
- _transition_info = [
-i(27240,0,'LMT'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(28800,0,'CST'),
- ]
-
-Macao = Macao()
-
diff --git a/modules/pytz/zoneinfo/Asia/Macau.py b/modules/pytz/zoneinfo/Asia/Macau.py
deleted file mode 100644
index 6865e5ff..00000000
--- a/modules/pytz/zoneinfo/Asia/Macau.py
+++ /dev/null
@@ -1,104 +0,0 @@
-'''tzinfo timezone information for Asia/Macau.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Macau(DstTzInfo):
- '''Asia/Macau timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Macau'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,12,31,16,25,40),
-d(1961,3,18,19,30,0),
-d(1961,11,4,18,30,0),
-d(1962,3,17,19,30,0),
-d(1962,11,3,18,30,0),
-d(1963,3,16,16,0,0),
-d(1963,11,2,18,30,0),
-d(1964,3,21,19,30,0),
-d(1964,10,31,18,30,0),
-d(1965,3,20,16,0,0),
-d(1965,10,30,15,0,0),
-d(1966,4,16,19,30,0),
-d(1966,10,15,18,30,0),
-d(1967,4,15,19,30,0),
-d(1967,10,21,18,30,0),
-d(1968,4,20,19,30,0),
-d(1968,10,19,18,30,0),
-d(1969,4,19,19,30,0),
-d(1969,10,18,18,30,0),
-d(1970,4,18,19,30,0),
-d(1970,10,17,18,30,0),
-d(1971,4,17,19,30,0),
-d(1971,10,16,18,30,0),
-d(1972,4,15,16,0,0),
-d(1972,10,14,15,0,0),
-d(1973,4,14,16,0,0),
-d(1973,10,20,15,0,0),
-d(1974,4,20,16,0,0),
-d(1974,10,19,18,30,0),
-d(1975,4,19,19,30,0),
-d(1975,10,18,18,30,0),
-d(1976,4,17,19,30,0),
-d(1976,10,16,18,30,0),
-d(1977,4,16,19,30,0),
-d(1977,10,15,18,30,0),
-d(1978,4,15,16,0,0),
-d(1978,10,14,15,0,0),
-d(1979,4,14,16,0,0),
-d(1979,10,20,15,0,0),
-d(1980,4,19,16,0,0),
-d(1980,10,18,15,0,0),
-d(1999,12,19,16,0,0),
- ]
-
- _transition_info = [
-i(27240,0,'LMT'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(32400,3600,'MOST'),
-i(28800,0,'MOT'),
-i(28800,0,'CST'),
- ]
-
-Macau = Macau()
-
diff --git a/modules/pytz/zoneinfo/Asia/Magadan.py b/modules/pytz/zoneinfo/Asia/Magadan.py
deleted file mode 100644
index 673bc1d2..00000000
--- a/modules/pytz/zoneinfo/Asia/Magadan.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Magadan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Magadan(DstTzInfo):
- '''Asia/Magadan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Magadan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,13,56,48),
-d(1930,6,20,14,0,0),
-d(1981,3,31,13,0,0),
-d(1981,9,30,12,0,0),
-d(1982,3,31,13,0,0),
-d(1982,9,30,12,0,0),
-d(1983,3,31,13,0,0),
-d(1983,9,30,12,0,0),
-d(1984,3,31,13,0,0),
-d(1984,9,29,15,0,0),
-d(1985,3,30,15,0,0),
-d(1985,9,28,15,0,0),
-d(1986,3,29,15,0,0),
-d(1986,9,27,15,0,0),
-d(1987,3,28,15,0,0),
-d(1987,9,26,15,0,0),
-d(1988,3,26,15,0,0),
-d(1988,9,24,15,0,0),
-d(1989,3,25,15,0,0),
-d(1989,9,23,15,0,0),
-d(1990,3,24,15,0,0),
-d(1990,9,29,15,0,0),
-d(1991,3,30,15,0,0),
-d(1991,9,28,16,0,0),
-d(1992,1,18,16,0,0),
-d(1992,3,28,12,0,0),
-d(1992,9,26,11,0,0),
-d(1993,3,27,15,0,0),
-d(1993,9,25,15,0,0),
-d(1994,3,26,15,0,0),
-d(1994,9,24,15,0,0),
-d(1995,3,25,15,0,0),
-d(1995,9,23,15,0,0),
-d(1996,3,30,15,0,0),
-d(1996,10,26,15,0,0),
-d(1997,3,29,15,0,0),
-d(1997,10,25,15,0,0),
-d(1998,3,28,15,0,0),
-d(1998,10,24,15,0,0),
-d(1999,3,27,15,0,0),
-d(1999,10,30,15,0,0),
-d(2000,3,25,15,0,0),
-d(2000,10,28,15,0,0),
-d(2001,3,24,15,0,0),
-d(2001,10,27,15,0,0),
-d(2002,3,30,15,0,0),
-d(2002,10,26,15,0,0),
-d(2003,3,29,15,0,0),
-d(2003,10,25,15,0,0),
-d(2004,3,27,15,0,0),
-d(2004,10,30,15,0,0),
-d(2005,3,26,15,0,0),
-d(2005,10,29,15,0,0),
-d(2006,3,25,15,0,0),
-d(2006,10,28,15,0,0),
-d(2007,3,24,15,0,0),
-d(2007,10,27,15,0,0),
-d(2008,3,29,15,0,0),
-d(2008,10,25,15,0,0),
-d(2009,3,28,15,0,0),
-d(2009,10,24,15,0,0),
-d(2010,3,27,15,0,0),
-d(2010,10,30,15,0,0),
-d(2011,3,26,15,0,0),
-d(2011,10,29,15,0,0),
-d(2012,3,24,15,0,0),
-d(2012,10,27,15,0,0),
-d(2013,3,30,15,0,0),
-d(2013,10,26,15,0,0),
-d(2014,3,29,15,0,0),
-d(2014,10,25,15,0,0),
-d(2015,3,28,15,0,0),
-d(2015,10,24,15,0,0),
-d(2016,3,26,15,0,0),
-d(2016,10,29,15,0,0),
-d(2017,3,25,15,0,0),
-d(2017,10,28,15,0,0),
-d(2018,3,24,15,0,0),
-d(2018,10,27,15,0,0),
-d(2019,3,30,15,0,0),
-d(2019,10,26,15,0,0),
-d(2020,3,28,15,0,0),
-d(2020,10,24,15,0,0),
-d(2021,3,27,15,0,0),
-d(2021,10,30,15,0,0),
-d(2022,3,26,15,0,0),
-d(2022,10,29,15,0,0),
-d(2023,3,25,15,0,0),
-d(2023,10,28,15,0,0),
-d(2024,3,30,15,0,0),
-d(2024,10,26,15,0,0),
-d(2025,3,29,15,0,0),
-d(2025,10,25,15,0,0),
-d(2026,3,28,15,0,0),
-d(2026,10,24,15,0,0),
-d(2027,3,27,15,0,0),
-d(2027,10,30,15,0,0),
-d(2028,3,25,15,0,0),
-d(2028,10,28,15,0,0),
-d(2029,3,24,15,0,0),
-d(2029,10,27,15,0,0),
-d(2030,3,30,15,0,0),
-d(2030,10,26,15,0,0),
-d(2031,3,29,15,0,0),
-d(2031,10,25,15,0,0),
-d(2032,3,27,15,0,0),
-d(2032,10,30,15,0,0),
-d(2033,3,26,15,0,0),
-d(2033,10,29,15,0,0),
-d(2034,3,25,15,0,0),
-d(2034,10,28,15,0,0),
-d(2035,3,24,15,0,0),
-d(2035,10,27,15,0,0),
-d(2036,3,29,15,0,0),
-d(2036,10,25,15,0,0),
-d(2037,3,28,15,0,0),
-d(2037,10,24,15,0,0),
- ]
-
- _transition_info = [
-i(36180,0,'LMT'),
-i(36000,0,'MAGT'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(39600,0,'MAGST'),
-i(36000,0,'MAGT'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
-i(43200,3600,'MAGST'),
-i(39600,0,'MAGT'),
- ]
-
-Magadan = Magadan()
-
diff --git a/modules/pytz/zoneinfo/Asia/Makassar.py b/modules/pytz/zoneinfo/Asia/Makassar.py
deleted file mode 100644
index 421845e2..00000000
--- a/modules/pytz/zoneinfo/Asia/Makassar.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Asia/Makassar.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Makassar(DstTzInfo):
- '''Asia/Makassar timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Makassar'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,16,2,24),
-d(1932,10,31,16,2,24),
-d(1942,2,8,16,0,0),
-d(1945,7,31,15,0,0),
- ]
-
- _transition_info = [
-i(28680,0,'LMT'),
-i(28680,0,'MMT'),
-i(28800,0,'CIT'),
-i(32400,0,'JST'),
-i(28800,0,'CIT'),
- ]
-
-Makassar = Makassar()
-
diff --git a/modules/pytz/zoneinfo/Asia/Manila.py b/modules/pytz/zoneinfo/Asia/Manila.py
deleted file mode 100644
index 9d2112b7..00000000
--- a/modules/pytz/zoneinfo/Asia/Manila.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''tzinfo timezone information for Asia/Manila.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Manila(DstTzInfo):
- '''Asia/Manila timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Manila'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1936,10,31,16,0,0),
-d(1937,1,31,15,0,0),
-d(1942,4,30,16,0,0),
-d(1944,10,31,15,0,0),
-d(1954,4,11,16,0,0),
-d(1954,6,30,15,0,0),
-d(1978,3,21,16,0,0),
-d(1978,9,20,15,0,0),
- ]
-
- _transition_info = [
-i(28800,0,'PHT'),
-i(32400,3600,'PHST'),
-i(28800,0,'PHT'),
-i(32400,0,'JST'),
-i(28800,0,'PHT'),
-i(32400,3600,'PHST'),
-i(28800,0,'PHT'),
-i(32400,3600,'PHST'),
-i(28800,0,'PHT'),
- ]
-
-Manila = Manila()
-
diff --git a/modules/pytz/zoneinfo/Asia/Muscat.py b/modules/pytz/zoneinfo/Asia/Muscat.py
deleted file mode 100644
index 68bdb138..00000000
--- a/modules/pytz/zoneinfo/Asia/Muscat.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Muscat.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Muscat(DstTzInfo):
- '''Asia/Muscat timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Muscat'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,20,5,40),
- ]
-
- _transition_info = [
-i(14040,0,'LMT'),
-i(14400,0,'GST'),
- ]
-
-Muscat = Muscat()
-
diff --git a/modules/pytz/zoneinfo/Asia/Nicosia.py b/modules/pytz/zoneinfo/Asia/Nicosia.py
deleted file mode 100644
index 737050f0..00000000
--- a/modules/pytz/zoneinfo/Asia/Nicosia.py
+++ /dev/null
@@ -1,274 +0,0 @@
-'''tzinfo timezone information for Asia/Nicosia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nicosia(DstTzInfo):
- '''Asia/Nicosia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Nicosia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,11,13,21,46,32),
-d(1975,4,12,22,0,0),
-d(1975,10,11,21,0,0),
-d(1976,5,14,22,0,0),
-d(1976,10,10,21,0,0),
-d(1977,4,2,22,0,0),
-d(1977,9,24,21,0,0),
-d(1978,4,1,22,0,0),
-d(1978,10,1,21,0,0),
-d(1979,3,31,22,0,0),
-d(1979,9,29,21,0,0),
-d(1980,4,5,22,0,0),
-d(1980,9,27,21,0,0),
-d(1981,3,28,22,0,0),
-d(1981,9,26,21,0,0),
-d(1982,3,27,22,0,0),
-d(1982,9,25,21,0,0),
-d(1983,3,26,22,0,0),
-d(1983,9,24,21,0,0),
-d(1984,3,24,22,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,22,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,21,0,0),
-d(1991,3,30,22,0,0),
-d(1991,9,28,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,9,28,21,0,0),
-d(1997,3,29,22,0,0),
-d(1997,9,27,21,0,0),
-d(1998,3,28,22,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7980,0,'LMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Nicosia = Nicosia()
-
diff --git a/modules/pytz/zoneinfo/Asia/Novosibirsk.py b/modules/pytz/zoneinfo/Asia/Novosibirsk.py
deleted file mode 100644
index 69e9cbe9..00000000
--- a/modules/pytz/zoneinfo/Asia/Novosibirsk.py
+++ /dev/null
@@ -1,256 +0,0 @@
-'''tzinfo timezone information for Asia/Novosibirsk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Novosibirsk(DstTzInfo):
- '''Asia/Novosibirsk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Novosibirsk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,14,0,28,20),
-d(1930,6,20,18,0,0),
-d(1981,3,31,17,0,0),
-d(1981,9,30,16,0,0),
-d(1982,3,31,17,0,0),
-d(1982,9,30,16,0,0),
-d(1983,3,31,17,0,0),
-d(1983,9,30,16,0,0),
-d(1984,3,31,17,0,0),
-d(1984,9,29,19,0,0),
-d(1985,3,30,19,0,0),
-d(1985,9,28,19,0,0),
-d(1986,3,29,19,0,0),
-d(1986,9,27,19,0,0),
-d(1987,3,28,19,0,0),
-d(1987,9,26,19,0,0),
-d(1988,3,26,19,0,0),
-d(1988,9,24,19,0,0),
-d(1989,3,25,19,0,0),
-d(1989,9,23,19,0,0),
-d(1990,3,24,19,0,0),
-d(1990,9,29,19,0,0),
-d(1991,3,30,19,0,0),
-d(1991,9,28,20,0,0),
-d(1992,1,18,20,0,0),
-d(1992,3,28,16,0,0),
-d(1992,9,26,15,0,0),
-d(1993,3,27,19,0,0),
-d(1993,5,22,16,0,0),
-d(1993,9,25,20,0,0),
-d(1994,3,26,20,0,0),
-d(1994,9,24,20,0,0),
-d(1995,3,25,20,0,0),
-d(1995,9,23,20,0,0),
-d(1996,3,30,20,0,0),
-d(1996,10,26,20,0,0),
-d(1997,3,29,20,0,0),
-d(1997,10,25,20,0,0),
-d(1998,3,28,20,0,0),
-d(1998,10,24,20,0,0),
-d(1999,3,27,20,0,0),
-d(1999,10,30,20,0,0),
-d(2000,3,25,20,0,0),
-d(2000,10,28,20,0,0),
-d(2001,3,24,20,0,0),
-d(2001,10,27,20,0,0),
-d(2002,3,30,20,0,0),
-d(2002,10,26,20,0,0),
-d(2003,3,29,20,0,0),
-d(2003,10,25,20,0,0),
-d(2004,3,27,20,0,0),
-d(2004,10,30,20,0,0),
-d(2005,3,26,20,0,0),
-d(2005,10,29,20,0,0),
-d(2006,3,25,20,0,0),
-d(2006,10,28,20,0,0),
-d(2007,3,24,20,0,0),
-d(2007,10,27,20,0,0),
-d(2008,3,29,20,0,0),
-d(2008,10,25,20,0,0),
-d(2009,3,28,20,0,0),
-d(2009,10,24,20,0,0),
-d(2010,3,27,20,0,0),
-d(2010,10,30,20,0,0),
-d(2011,3,26,20,0,0),
-d(2011,10,29,20,0,0),
-d(2012,3,24,20,0,0),
-d(2012,10,27,20,0,0),
-d(2013,3,30,20,0,0),
-d(2013,10,26,20,0,0),
-d(2014,3,29,20,0,0),
-d(2014,10,25,20,0,0),
-d(2015,3,28,20,0,0),
-d(2015,10,24,20,0,0),
-d(2016,3,26,20,0,0),
-d(2016,10,29,20,0,0),
-d(2017,3,25,20,0,0),
-d(2017,10,28,20,0,0),
-d(2018,3,24,20,0,0),
-d(2018,10,27,20,0,0),
-d(2019,3,30,20,0,0),
-d(2019,10,26,20,0,0),
-d(2020,3,28,20,0,0),
-d(2020,10,24,20,0,0),
-d(2021,3,27,20,0,0),
-d(2021,10,30,20,0,0),
-d(2022,3,26,20,0,0),
-d(2022,10,29,20,0,0),
-d(2023,3,25,20,0,0),
-d(2023,10,28,20,0,0),
-d(2024,3,30,20,0,0),
-d(2024,10,26,20,0,0),
-d(2025,3,29,20,0,0),
-d(2025,10,25,20,0,0),
-d(2026,3,28,20,0,0),
-d(2026,10,24,20,0,0),
-d(2027,3,27,20,0,0),
-d(2027,10,30,20,0,0),
-d(2028,3,25,20,0,0),
-d(2028,10,28,20,0,0),
-d(2029,3,24,20,0,0),
-d(2029,10,27,20,0,0),
-d(2030,3,30,20,0,0),
-d(2030,10,26,20,0,0),
-d(2031,3,29,20,0,0),
-d(2031,10,25,20,0,0),
-d(2032,3,27,20,0,0),
-d(2032,10,30,20,0,0),
-d(2033,3,26,20,0,0),
-d(2033,10,29,20,0,0),
-d(2034,3,25,20,0,0),
-d(2034,10,28,20,0,0),
-d(2035,3,24,20,0,0),
-d(2035,10,27,20,0,0),
-d(2036,3,29,20,0,0),
-d(2036,10,25,20,0,0),
-d(2037,3,28,20,0,0),
-d(2037,10,24,20,0,0),
- ]
-
- _transition_info = [
-i(19920,0,'LMT'),
-i(21600,0,'NOVT'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(25200,0,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVT'),
-i(28800,3600,'NOVST'),
-i(25200,0,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
-i(25200,3600,'NOVST'),
-i(21600,0,'NOVT'),
- ]
-
-Novosibirsk = Novosibirsk()
-
diff --git a/modules/pytz/zoneinfo/Asia/Omsk.py b/modules/pytz/zoneinfo/Asia/Omsk.py
deleted file mode 100644
index 3c74a39f..00000000
--- a/modules/pytz/zoneinfo/Asia/Omsk.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Omsk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Omsk(DstTzInfo):
- '''Asia/Omsk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Omsk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,11,13,19,6,24),
-d(1930,6,20,19,0,0),
-d(1981,3,31,18,0,0),
-d(1981,9,30,17,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,17,0,0),
-d(1983,3,31,18,0,0),
-d(1983,9,30,17,0,0),
-d(1984,3,31,18,0,0),
-d(1984,9,29,20,0,0),
-d(1985,3,30,20,0,0),
-d(1985,9,28,20,0,0),
-d(1986,3,29,20,0,0),
-d(1986,9,27,20,0,0),
-d(1987,3,28,20,0,0),
-d(1987,9,26,20,0,0),
-d(1988,3,26,20,0,0),
-d(1988,9,24,20,0,0),
-d(1989,3,25,20,0,0),
-d(1989,9,23,20,0,0),
-d(1990,3,24,20,0,0),
-d(1990,9,29,20,0,0),
-d(1991,3,30,20,0,0),
-d(1991,9,28,21,0,0),
-d(1992,1,18,21,0,0),
-d(1992,3,28,17,0,0),
-d(1992,9,26,16,0,0),
-d(1993,3,27,20,0,0),
-d(1993,9,25,20,0,0),
-d(1994,3,26,20,0,0),
-d(1994,9,24,20,0,0),
-d(1995,3,25,20,0,0),
-d(1995,9,23,20,0,0),
-d(1996,3,30,20,0,0),
-d(1996,10,26,20,0,0),
-d(1997,3,29,20,0,0),
-d(1997,10,25,20,0,0),
-d(1998,3,28,20,0,0),
-d(1998,10,24,20,0,0),
-d(1999,3,27,20,0,0),
-d(1999,10,30,20,0,0),
-d(2000,3,25,20,0,0),
-d(2000,10,28,20,0,0),
-d(2001,3,24,20,0,0),
-d(2001,10,27,20,0,0),
-d(2002,3,30,20,0,0),
-d(2002,10,26,20,0,0),
-d(2003,3,29,20,0,0),
-d(2003,10,25,20,0,0),
-d(2004,3,27,20,0,0),
-d(2004,10,30,20,0,0),
-d(2005,3,26,20,0,0),
-d(2005,10,29,20,0,0),
-d(2006,3,25,20,0,0),
-d(2006,10,28,20,0,0),
-d(2007,3,24,20,0,0),
-d(2007,10,27,20,0,0),
-d(2008,3,29,20,0,0),
-d(2008,10,25,20,0,0),
-d(2009,3,28,20,0,0),
-d(2009,10,24,20,0,0),
-d(2010,3,27,20,0,0),
-d(2010,10,30,20,0,0),
-d(2011,3,26,20,0,0),
-d(2011,10,29,20,0,0),
-d(2012,3,24,20,0,0),
-d(2012,10,27,20,0,0),
-d(2013,3,30,20,0,0),
-d(2013,10,26,20,0,0),
-d(2014,3,29,20,0,0),
-d(2014,10,25,20,0,0),
-d(2015,3,28,20,0,0),
-d(2015,10,24,20,0,0),
-d(2016,3,26,20,0,0),
-d(2016,10,29,20,0,0),
-d(2017,3,25,20,0,0),
-d(2017,10,28,20,0,0),
-d(2018,3,24,20,0,0),
-d(2018,10,27,20,0,0),
-d(2019,3,30,20,0,0),
-d(2019,10,26,20,0,0),
-d(2020,3,28,20,0,0),
-d(2020,10,24,20,0,0),
-d(2021,3,27,20,0,0),
-d(2021,10,30,20,0,0),
-d(2022,3,26,20,0,0),
-d(2022,10,29,20,0,0),
-d(2023,3,25,20,0,0),
-d(2023,10,28,20,0,0),
-d(2024,3,30,20,0,0),
-d(2024,10,26,20,0,0),
-d(2025,3,29,20,0,0),
-d(2025,10,25,20,0,0),
-d(2026,3,28,20,0,0),
-d(2026,10,24,20,0,0),
-d(2027,3,27,20,0,0),
-d(2027,10,30,20,0,0),
-d(2028,3,25,20,0,0),
-d(2028,10,28,20,0,0),
-d(2029,3,24,20,0,0),
-d(2029,10,27,20,0,0),
-d(2030,3,30,20,0,0),
-d(2030,10,26,20,0,0),
-d(2031,3,29,20,0,0),
-d(2031,10,25,20,0,0),
-d(2032,3,27,20,0,0),
-d(2032,10,30,20,0,0),
-d(2033,3,26,20,0,0),
-d(2033,10,29,20,0,0),
-d(2034,3,25,20,0,0),
-d(2034,10,28,20,0,0),
-d(2035,3,24,20,0,0),
-d(2035,10,27,20,0,0),
-d(2036,3,29,20,0,0),
-d(2036,10,25,20,0,0),
-d(2037,3,28,20,0,0),
-d(2037,10,24,20,0,0),
- ]
-
- _transition_info = [
-i(17640,0,'LMT'),
-i(18000,0,'OMST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(21600,0,'OMSST'),
-i(18000,0,'OMST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
-i(25200,3600,'OMSST'),
-i(21600,0,'OMST'),
- ]
-
-Omsk = Omsk()
-
diff --git a/modules/pytz/zoneinfo/Asia/Oral.py b/modules/pytz/zoneinfo/Asia/Oral.py
deleted file mode 100644
index 92010fff..00000000
--- a/modules/pytz/zoneinfo/Asia/Oral.py
+++ /dev/null
@@ -1,122 +0,0 @@
-'''tzinfo timezone information for Asia/Oral.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Oral(DstTzInfo):
- '''Asia/Oral timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Oral'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,20,34,36),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,22,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,22,0,0),
-d(1990,12,31,20,0,0),
-d(1991,12,15,20,0,0),
-d(1992,3,28,19,0,0),
-d(1992,9,26,18,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,22,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,22,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,22,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,22,0,0),
-d(1997,3,29,22,0,0),
-d(1997,10,25,22,0,0),
-d(1998,3,28,22,0,0),
-d(1998,10,24,22,0,0),
-d(1999,3,27,22,0,0),
-d(1999,10,30,22,0,0),
-d(2000,3,25,22,0,0),
-d(2000,10,28,22,0,0),
-d(2001,3,24,22,0,0),
-d(2001,10,27,22,0,0),
-d(2002,3,30,22,0,0),
-d(2002,10,26,22,0,0),
-d(2003,3,29,22,0,0),
-d(2003,10,25,22,0,0),
-d(2004,3,27,22,0,0),
-d(2004,10,30,22,0,0),
-d(2005,3,14,20,0,0),
- ]
-
- _transition_info = [
-i(12300,0,'LMT'),
-i(14400,0,'URAT'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(21600,0,'URAT'),
-i(21600,0,'URAST'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(18000,0,'URAT'),
-i(21600,3600,'URAST'),
-i(18000,0,'URAT'),
-i(18000,0,'URAST'),
-i(14400,0,'URAT'),
-i(18000,3600,'URAST'),
-i(14400,0,'URAT'),
-i(14400,0,'URAT'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,3600,'ORAST'),
-i(14400,0,'ORAT'),
-i(18000,0,'ORAT'),
- ]
-
-Oral = Oral()
-
diff --git a/modules/pytz/zoneinfo/Asia/Phnom_Penh.py b/modules/pytz/zoneinfo/Asia/Phnom_Penh.py
deleted file mode 100644
index e7377c5c..00000000
--- a/modules/pytz/zoneinfo/Asia/Phnom_Penh.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Asia/Phnom_Penh.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Phnom_Penh(DstTzInfo):
- '''Asia/Phnom_Penh timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Phnom_Penh'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,6,8,17,0,20),
-d(1911,3,10,16,54,40),
-d(1912,4,30,17,0,0),
-d(1931,4,30,16,0,0),
- ]
-
- _transition_info = [
-i(25200,0,'LMT'),
-i(25560,0,'SMT'),
-i(25200,0,'ICT'),
-i(28800,0,'ICT'),
-i(25200,0,'ICT'),
- ]
-
-Phnom_Penh = Phnom_Penh()
-
diff --git a/modules/pytz/zoneinfo/Asia/Pontianak.py b/modules/pytz/zoneinfo/Asia/Pontianak.py
deleted file mode 100644
index 0611e9eb..00000000
--- a/modules/pytz/zoneinfo/Asia/Pontianak.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''tzinfo timezone information for Asia/Pontianak.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pontianak(DstTzInfo):
- '''Asia/Pontianak timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Pontianak'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1908,4,30,16,42,40),
-d(1932,10,31,16,42,40),
-d(1942,1,28,16,30,0),
-d(1945,7,31,15,0,0),
-d(1948,4,30,16,30,0),
-d(1950,4,30,16,0,0),
-d(1963,12,31,16,30,0),
-d(1987,12,31,16,0,0),
- ]
-
- _transition_info = [
-i(26220,0,'LMT'),
-i(26220,0,'PMT'),
-i(27000,0,'WIT'),
-i(32400,0,'JST'),
-i(27000,0,'WIT'),
-i(28800,0,'WIT'),
-i(27000,0,'WIT'),
-i(28800,0,'CIT'),
-i(25200,0,'WIT'),
- ]
-
-Pontianak = Pontianak()
-
diff --git a/modules/pytz/zoneinfo/Asia/Pyongyang.py b/modules/pytz/zoneinfo/Asia/Pyongyang.py
deleted file mode 100644
index bf203c3d..00000000
--- a/modules/pytz/zoneinfo/Asia/Pyongyang.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for Asia/Pyongyang.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pyongyang(DstTzInfo):
- '''Asia/Pyongyang timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Pyongyang'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1904,11,30,15,30,0),
-d(1927,12,31,15,0,0),
-d(1931,12,31,15,30,0),
-d(1954,3,20,15,0,0),
-d(1961,8,9,16,0,0),
- ]
-
- _transition_info = [
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(28800,0,'KST'),
-i(32400,0,'KST'),
- ]
-
-Pyongyang = Pyongyang()
-
diff --git a/modules/pytz/zoneinfo/Asia/Qatar.py b/modules/pytz/zoneinfo/Asia/Qatar.py
deleted file mode 100644
index 746aa5ae..00000000
--- a/modules/pytz/zoneinfo/Asia/Qatar.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Asia/Qatar.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Qatar(DstTzInfo):
- '''Asia/Qatar timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Qatar'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,20,33,52),
-d(1972,5,31,20,0,0),
- ]
-
- _transition_info = [
-i(12360,0,'LMT'),
-i(14400,0,'GST'),
-i(10800,0,'AST'),
- ]
-
-Qatar = Qatar()
-
diff --git a/modules/pytz/zoneinfo/Asia/Qyzylorda.py b/modules/pytz/zoneinfo/Asia/Qyzylorda.py
deleted file mode 100644
index 3dd7460a..00000000
--- a/modules/pytz/zoneinfo/Asia/Qyzylorda.py
+++ /dev/null
@@ -1,124 +0,0 @@
-'''tzinfo timezone information for Asia/Qyzylorda.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Qyzylorda(DstTzInfo):
- '''Asia/Qyzylorda timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Qyzylorda'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,19,38,8),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,21,0,0),
-d(1990,9,29,21,0,0),
-d(1990,12,31,19,0,0),
-d(1991,12,15,19,0,0),
-d(1992,1,18,21,0,0),
-d(1992,3,28,17,0,0),
-d(1992,9,26,16,0,0),
-d(1993,3,27,20,0,0),
-d(1993,9,25,20,0,0),
-d(1994,3,26,20,0,0),
-d(1994,9,24,20,0,0),
-d(1995,3,25,20,0,0),
-d(1995,9,23,20,0,0),
-d(1996,3,30,20,0,0),
-d(1996,10,26,20,0,0),
-d(1997,3,29,20,0,0),
-d(1997,10,25,20,0,0),
-d(1998,3,28,20,0,0),
-d(1998,10,24,20,0,0),
-d(1999,3,27,20,0,0),
-d(1999,10,30,20,0,0),
-d(2000,3,25,20,0,0),
-d(2000,10,28,20,0,0),
-d(2001,3,24,20,0,0),
-d(2001,10,27,20,0,0),
-d(2002,3,30,20,0,0),
-d(2002,10,26,20,0,0),
-d(2003,3,29,20,0,0),
-d(2003,10,25,20,0,0),
-d(2004,3,27,20,0,0),
-d(2004,10,30,20,0,0),
-d(2005,3,14,18,0,0),
- ]
-
- _transition_info = [
-i(15720,0,'LMT'),
-i(14400,0,'KIZT'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(21600,0,'KIZT'),
-i(21600,0,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(21600,3600,'KIZST'),
-i(18000,0,'KIZT'),
-i(18000,0,'KIZT'),
-i(18000,0,'QYZT'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(25200,3600,'QYZST'),
-i(21600,0,'QYZT'),
-i(21600,0,'QYZT'),
- ]
-
-Qyzylorda = Qyzylorda()
-
diff --git a/modules/pytz/zoneinfo/Asia/Rangoon.py b/modules/pytz/zoneinfo/Asia/Rangoon.py
deleted file mode 100644
index d8120d80..00000000
--- a/modules/pytz/zoneinfo/Asia/Rangoon.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Asia/Rangoon.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rangoon(DstTzInfo):
- '''Asia/Rangoon timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Rangoon'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,17,35,24),
-d(1942,4,30,17,30,0),
-d(1945,5,2,15,0,0),
- ]
-
- _transition_info = [
-i(23100,0,'RMT'),
-i(23400,0,'BURT'),
-i(32400,0,'JST'),
-i(23400,0,'MMT'),
- ]
-
-Rangoon = Rangoon()
-
diff --git a/modules/pytz/zoneinfo/Asia/Riyadh.py b/modules/pytz/zoneinfo/Asia/Riyadh.py
deleted file mode 100644
index fb09cdb1..00000000
--- a/modules/pytz/zoneinfo/Asia/Riyadh.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Asia/Riyadh.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Riyadh(DstTzInfo):
- '''Asia/Riyadh timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Riyadh'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1949,12,31,20,53,8),
- ]
-
- _transition_info = [
-i(11220,0,'LMT'),
-i(10800,0,'AST'),
- ]
-
-Riyadh = Riyadh()
-
diff --git a/modules/pytz/zoneinfo/Asia/Saigon.py b/modules/pytz/zoneinfo/Asia/Saigon.py
deleted file mode 100644
index a0cfcc72..00000000
--- a/modules/pytz/zoneinfo/Asia/Saigon.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Asia/Saigon.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Saigon(DstTzInfo):
- '''Asia/Saigon timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Saigon'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,6,8,16,53,20),
-d(1911,3,10,16,54,40),
-d(1912,4,30,17,0,0),
-d(1931,4,30,16,0,0),
- ]
-
- _transition_info = [
-i(25620,0,'LMT'),
-i(25560,0,'SMT'),
-i(25200,0,'ICT'),
-i(28800,0,'ICT'),
-i(25200,0,'ICT'),
- ]
-
-Saigon = Saigon()
-
diff --git a/modules/pytz/zoneinfo/Asia/Sakhalin.py b/modules/pytz/zoneinfo/Asia/Sakhalin.py
deleted file mode 100644
index 45a36720..00000000
--- a/modules/pytz/zoneinfo/Asia/Sakhalin.py
+++ /dev/null
@@ -1,256 +0,0 @@
-'''tzinfo timezone information for Asia/Sakhalin.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Sakhalin(DstTzInfo):
- '''Asia/Sakhalin timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Sakhalin'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,8,22,14,29,12),
-d(1937,12,31,15,0,0),
-d(1945,8,24,15,0,0),
-d(1981,3,31,13,0,0),
-d(1981,9,30,12,0,0),
-d(1982,3,31,13,0,0),
-d(1982,9,30,12,0,0),
-d(1983,3,31,13,0,0),
-d(1983,9,30,12,0,0),
-d(1984,3,31,13,0,0),
-d(1984,9,29,15,0,0),
-d(1985,3,30,15,0,0),
-d(1985,9,28,15,0,0),
-d(1986,3,29,15,0,0),
-d(1986,9,27,15,0,0),
-d(1987,3,28,15,0,0),
-d(1987,9,26,15,0,0),
-d(1988,3,26,15,0,0),
-d(1988,9,24,15,0,0),
-d(1989,3,25,15,0,0),
-d(1989,9,23,15,0,0),
-d(1990,3,24,15,0,0),
-d(1990,9,29,15,0,0),
-d(1991,3,30,15,0,0),
-d(1991,9,28,16,0,0),
-d(1992,1,18,16,0,0),
-d(1992,3,28,12,0,0),
-d(1992,9,26,11,0,0),
-d(1993,3,27,15,0,0),
-d(1993,9,25,15,0,0),
-d(1994,3,26,15,0,0),
-d(1994,9,24,15,0,0),
-d(1995,3,25,15,0,0),
-d(1995,9,23,15,0,0),
-d(1996,3,30,15,0,0),
-d(1996,10,26,15,0,0),
-d(1997,3,29,15,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,10,28,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,3,25,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(34260,0,'LMT'),
-i(32400,0,'CJT'),
-i(32400,0,'JST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(39600,0,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(43200,3600,'SAKST'),
-i(39600,0,'SAKT'),
-i(39600,0,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
-i(39600,3600,'SAKST'),
-i(36000,0,'SAKT'),
- ]
-
-Sakhalin = Sakhalin()
-
diff --git a/modules/pytz/zoneinfo/Asia/Samarkand.py b/modules/pytz/zoneinfo/Asia/Samarkand.py
deleted file mode 100644
index 85bf71f1..00000000
--- a/modules/pytz/zoneinfo/Asia/Samarkand.py
+++ /dev/null
@@ -1,76 +0,0 @@
-'''tzinfo timezone information for Asia/Samarkand.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Samarkand(DstTzInfo):
- '''Asia/Samarkand timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Samarkand'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,19,32,48),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,17,0,0),
-d(1983,3,31,18,0,0),
-d(1983,9,30,17,0,0),
-d(1984,3,31,18,0,0),
-d(1984,9,29,20,0,0),
-d(1985,3,30,20,0,0),
-d(1985,9,28,20,0,0),
-d(1986,3,29,20,0,0),
-d(1986,9,27,20,0,0),
-d(1987,3,28,20,0,0),
-d(1987,9,26,20,0,0),
-d(1988,3,26,20,0,0),
-d(1988,9,24,20,0,0),
-d(1989,3,25,20,0,0),
-d(1989,9,23,20,0,0),
-d(1990,3,24,20,0,0),
-d(1990,9,29,20,0,0),
-d(1991,3,30,20,0,0),
-d(1991,8,31,18,0,0),
-d(1991,9,28,21,0,0),
-d(1991,12,31,19,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,17,0,0),
- ]
-
- _transition_info = [
-i(16020,0,'LMT'),
-i(14400,0,'SAMT'),
-i(18000,0,'SAMT'),
-i(21600,3600,'SAMST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(21600,0,'TASST'),
-i(21600,0,'UZST'),
-i(18000,0,'UZT'),
-i(18000,0,'UZT'),
-i(21600,3600,'UZST'),
-i(18000,0,'UZT'),
- ]
-
-Samarkand = Samarkand()
-
diff --git a/modules/pytz/zoneinfo/Asia/Seoul.py b/modules/pytz/zoneinfo/Asia/Seoul.py
deleted file mode 100644
index 07b9c92b..00000000
--- a/modules/pytz/zoneinfo/Asia/Seoul.py
+++ /dev/null
@@ -1,44 +0,0 @@
-'''tzinfo timezone information for Asia/Seoul.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Seoul(DstTzInfo):
- '''Asia/Seoul timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Seoul'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1904,11,30,15,30,0),
-d(1927,12,31,15,0,0),
-d(1931,12,31,15,30,0),
-d(1954,3,20,15,0,0),
-d(1960,5,14,16,0,0),
-d(1960,9,12,15,0,0),
-d(1961,8,9,16,0,0),
-d(1968,9,30,15,30,0),
-d(1987,5,9,15,0,0),
-d(1987,10,10,14,0,0),
-d(1988,5,7,15,0,0),
-d(1988,10,8,14,0,0),
- ]
-
- _transition_info = [
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(28800,0,'KST'),
-i(32400,3600,'KDT'),
-i(28800,0,'KST'),
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(36000,3600,'KDT'),
-i(32400,0,'KST'),
-i(36000,3600,'KDT'),
-i(32400,0,'KST'),
- ]
-
-Seoul = Seoul()
-
diff --git a/modules/pytz/zoneinfo/Asia/Shanghai.py b/modules/pytz/zoneinfo/Asia/Shanghai.py
deleted file mode 100644
index 51f123b8..00000000
--- a/modules/pytz/zoneinfo/Asia/Shanghai.py
+++ /dev/null
@@ -1,54 +0,0 @@
-'''tzinfo timezone information for Asia/Shanghai.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Shanghai(DstTzInfo):
- '''Asia/Shanghai timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Shanghai'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,15,54,8),
-d(1940,6,2,16,0,0),
-d(1940,9,30,15,0,0),
-d(1941,3,15,16,0,0),
-d(1941,9,30,15,0,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(29160,0,'LMT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Shanghai = Shanghai()
-
diff --git a/modules/pytz/zoneinfo/Asia/Singapore.py b/modules/pytz/zoneinfo/Asia/Singapore.py
deleted file mode 100644
index 952f4c9e..00000000
--- a/modules/pytz/zoneinfo/Asia/Singapore.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''tzinfo timezone information for Asia/Singapore.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Singapore(DstTzInfo):
- '''Asia/Singapore timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Singapore'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,5,31,17,4,35),
-d(1932,12,31,17,0,0),
-d(1935,12,31,16,40,0),
-d(1941,8,31,16,40,0),
-d(1942,2,15,16,30,0),
-d(1945,9,11,15,0,0),
-d(1965,8,8,16,30,0),
-d(1981,12,31,16,30,0),
- ]
-
- _transition_info = [
-i(24900,0,'SMT'),
-i(25200,0,'MALT'),
-i(26400,1200,'MALST'),
-i(26400,0,'MALT'),
-i(27000,0,'MALT'),
-i(32400,0,'JST'),
-i(27000,0,'MALT'),
-i(27000,0,'SGT'),
-i(28800,0,'SGT'),
- ]
-
-Singapore = Singapore()
-
diff --git a/modules/pytz/zoneinfo/Asia/Taipei.py b/modules/pytz/zoneinfo/Asia/Taipei.py
deleted file mode 100644
index ae23e777..00000000
--- a/modules/pytz/zoneinfo/Asia/Taipei.py
+++ /dev/null
@@ -1,100 +0,0 @@
-'''tzinfo timezone information for Asia/Taipei.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Taipei(DstTzInfo):
- '''Asia/Taipei timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Taipei'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1945,4,30,16,0,0),
-d(1945,9,30,15,0,0),
-d(1946,4,30,16,0,0),
-d(1946,9,30,15,0,0),
-d(1947,4,30,16,0,0),
-d(1947,9,30,15,0,0),
-d(1948,4,30,16,0,0),
-d(1948,9,30,15,0,0),
-d(1949,4,30,16,0,0),
-d(1949,9,30,15,0,0),
-d(1950,4,30,16,0,0),
-d(1950,9,30,15,0,0),
-d(1951,4,30,16,0,0),
-d(1951,9,30,15,0,0),
-d(1952,2,29,16,0,0),
-d(1952,10,31,15,0,0),
-d(1953,3,31,16,0,0),
-d(1953,10,31,15,0,0),
-d(1954,3,31,16,0,0),
-d(1954,10,31,15,0,0),
-d(1955,3,31,16,0,0),
-d(1955,9,30,15,0,0),
-d(1956,3,31,16,0,0),
-d(1956,9,30,15,0,0),
-d(1957,3,31,16,0,0),
-d(1957,9,30,15,0,0),
-d(1958,3,31,16,0,0),
-d(1958,9,30,15,0,0),
-d(1959,3,31,16,0,0),
-d(1959,9,30,15,0,0),
-d(1960,5,31,16,0,0),
-d(1960,9,30,15,0,0),
-d(1961,5,31,16,0,0),
-d(1961,9,30,15,0,0),
-d(1974,3,31,16,0,0),
-d(1974,9,30,15,0,0),
-d(1975,3,31,16,0,0),
-d(1975,9,30,15,0,0),
-d(1980,6,29,16,0,0),
-d(1980,9,29,15,0,0),
- ]
-
- _transition_info = [
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Taipei = Taipei()
-
diff --git a/modules/pytz/zoneinfo/Asia/Tashkent.py b/modules/pytz/zoneinfo/Asia/Tashkent.py
deleted file mode 100644
index a5ca2107..00000000
--- a/modules/pytz/zoneinfo/Asia/Tashkent.py
+++ /dev/null
@@ -1,76 +0,0 @@
-'''tzinfo timezone information for Asia/Tashkent.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tashkent(DstTzInfo):
- '''Asia/Tashkent timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Tashkent'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,19,22,48),
-d(1930,6,20,19,0,0),
-d(1981,3,31,18,0,0),
-d(1981,9,30,17,0,0),
-d(1982,3,31,18,0,0),
-d(1982,9,30,17,0,0),
-d(1983,3,31,18,0,0),
-d(1983,9,30,17,0,0),
-d(1984,3,31,18,0,0),
-d(1984,9,29,20,0,0),
-d(1985,3,30,20,0,0),
-d(1985,9,28,20,0,0),
-d(1986,3,29,20,0,0),
-d(1986,9,27,20,0,0),
-d(1987,3,28,20,0,0),
-d(1987,9,26,20,0,0),
-d(1988,3,26,20,0,0),
-d(1988,9,24,20,0,0),
-d(1989,3,25,20,0,0),
-d(1989,9,23,20,0,0),
-d(1990,3,24,20,0,0),
-d(1990,9,29,20,0,0),
-d(1991,3,30,20,0,0),
-d(1991,8,31,18,0,0),
-d(1991,9,28,21,0,0),
-d(1991,12,31,19,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,17,0,0),
- ]
-
- _transition_info = [
-i(16620,0,'LMT'),
-i(18000,0,'TAST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(25200,3600,'TASST'),
-i(21600,0,'TAST'),
-i(21600,0,'TASST'),
-i(21600,0,'UZST'),
-i(18000,0,'UZT'),
-i(18000,0,'UZT'),
-i(21600,3600,'UZST'),
-i(18000,0,'UZT'),
- ]
-
-Tashkent = Tashkent()
-
diff --git a/modules/pytz/zoneinfo/Asia/Tbilisi.py b/modules/pytz/zoneinfo/Asia/Tbilisi.py
deleted file mode 100644
index 739a7513..00000000
--- a/modules/pytz/zoneinfo/Asia/Tbilisi.py
+++ /dev/null
@@ -1,126 +0,0 @@
-'''tzinfo timezone information for Asia/Tbilisi.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tbilisi(DstTzInfo):
- '''Asia/Tbilisi timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Tbilisi'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,21,0,44),
-d(1957,2,28,21,0,0),
-d(1981,3,31,20,0,0),
-d(1981,9,30,19,0,0),
-d(1982,3,31,20,0,0),
-d(1982,9,30,19,0,0),
-d(1983,3,31,20,0,0),
-d(1983,9,30,19,0,0),
-d(1984,3,31,20,0,0),
-d(1984,9,29,22,0,0),
-d(1985,3,30,22,0,0),
-d(1985,9,28,22,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,22,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,22,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,22,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,22,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,22,0,0),
-d(1991,3,30,22,0,0),
-d(1991,4,8,20,0,0),
-d(1991,9,28,23,0,0),
-d(1991,12,31,21,0,0),
-d(1992,3,28,21,0,0),
-d(1992,9,26,20,0,0),
-d(1993,3,27,21,0,0),
-d(1993,9,25,20,0,0),
-d(1994,3,26,21,0,0),
-d(1994,9,24,20,0,0),
-d(1995,3,25,20,0,0),
-d(1995,9,23,19,0,0),
-d(1996,3,30,20,0,0),
-d(1997,3,29,19,0,0),
-d(1997,10,25,19,0,0),
-d(1998,3,28,20,0,0),
-d(1998,10,24,19,0,0),
-d(1999,3,27,20,0,0),
-d(1999,10,30,19,0,0),
-d(2000,3,25,20,0,0),
-d(2000,10,28,19,0,0),
-d(2001,3,24,20,0,0),
-d(2001,10,27,19,0,0),
-d(2002,3,30,20,0,0),
-d(2002,10,26,19,0,0),
-d(2003,3,29,20,0,0),
-d(2003,10,25,19,0,0),
-d(2004,3,27,20,0,0),
-d(2004,6,26,19,0,0),
-d(2004,10,30,23,0,0),
-d(2005,3,26,23,0,0),
- ]
-
- _transition_info = [
-i(10740,0,'TBMT'),
-i(10800,0,'TBIT'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(18000,3600,'TBIST'),
-i(14400,0,'TBIT'),
-i(14400,0,'TBIST'),
-i(14400,0,'GEST'),
-i(10800,0,'GET'),
-i(10800,0,'GET'),
-i(14400,3600,'GEST'),
-i(10800,0,'GET'),
-i(14400,3600,'GEST'),
-i(10800,0,'GET'),
-i(14400,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GET'),
-i(18000,3600,'GEST'),
-i(14400,0,'GEST'),
-i(10800,0,'GET'),
-i(14400,0,'GET'),
- ]
-
-Tbilisi = Tbilisi()
-
diff --git a/modules/pytz/zoneinfo/Asia/Tehran.py b/modules/pytz/zoneinfo/Asia/Tehran.py
deleted file mode 100644
index 85249fe9..00000000
--- a/modules/pytz/zoneinfo/Asia/Tehran.py
+++ /dev/null
@@ -1,228 +0,0 @@
-'''tzinfo timezone information for Asia/Tehran.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tehran(DstTzInfo):
- '''Asia/Tehran timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Tehran'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1915,12,31,20,34,16),
-d(1945,12,31,20,34,16),
-d(1977,10,31,20,30,0),
-d(1978,3,20,20,0,0),
-d(1978,10,20,19,0,0),
-d(1978,12,31,20,0,0),
-d(1979,3,20,20,30,0),
-d(1979,9,18,19,30,0),
-d(1980,3,20,20,30,0),
-d(1980,9,22,19,30,0),
-d(1991,5,2,20,30,0),
-d(1991,9,21,19,30,0),
-d(1992,3,21,20,30,0),
-d(1992,9,21,19,30,0),
-d(1993,3,21,20,30,0),
-d(1993,9,21,19,30,0),
-d(1994,3,21,20,30,0),
-d(1994,9,21,19,30,0),
-d(1995,3,21,20,30,0),
-d(1995,9,21,19,30,0),
-d(1996,3,20,20,30,0),
-d(1996,9,20,19,30,0),
-d(1997,3,21,20,30,0),
-d(1997,9,21,19,30,0),
-d(1998,3,21,20,30,0),
-d(1998,9,21,19,30,0),
-d(1999,3,21,20,30,0),
-d(1999,9,21,19,30,0),
-d(2000,3,20,20,30,0),
-d(2000,9,20,19,30,0),
-d(2001,3,21,20,30,0),
-d(2001,9,21,19,30,0),
-d(2002,3,21,20,30,0),
-d(2002,9,21,19,30,0),
-d(2003,3,21,20,30,0),
-d(2003,9,21,19,30,0),
-d(2004,3,20,20,30,0),
-d(2004,9,20,19,30,0),
-d(2005,3,21,20,30,0),
-d(2005,9,21,19,30,0),
-d(2006,3,21,20,30,0),
-d(2006,9,21,19,30,0),
-d(2007,3,21,20,30,0),
-d(2007,9,21,19,30,0),
-d(2008,3,20,20,30,0),
-d(2008,9,20,19,30,0),
-d(2009,3,21,20,30,0),
-d(2009,9,21,19,30,0),
-d(2010,3,21,20,30,0),
-d(2010,9,21,19,30,0),
-d(2011,3,21,20,30,0),
-d(2011,9,21,19,30,0),
-d(2012,3,20,20,30,0),
-d(2012,9,20,19,30,0),
-d(2013,3,21,20,30,0),
-d(2013,9,21,19,30,0),
-d(2014,3,21,20,30,0),
-d(2014,9,21,19,30,0),
-d(2015,3,21,20,30,0),
-d(2015,9,21,19,30,0),
-d(2016,3,20,20,30,0),
-d(2016,9,20,19,30,0),
-d(2017,3,21,20,30,0),
-d(2017,9,21,19,30,0),
-d(2018,3,21,20,30,0),
-d(2018,9,21,19,30,0),
-d(2019,3,21,20,30,0),
-d(2019,9,21,19,30,0),
-d(2020,3,20,20,30,0),
-d(2020,9,20,19,30,0),
-d(2021,3,21,20,30,0),
-d(2021,9,21,19,30,0),
-d(2022,3,21,20,30,0),
-d(2022,9,21,19,30,0),
-d(2023,3,21,20,30,0),
-d(2023,9,21,19,30,0),
-d(2024,3,20,20,30,0),
-d(2024,9,20,19,30,0),
-d(2025,3,21,20,30,0),
-d(2025,9,21,19,30,0),
-d(2026,3,21,20,30,0),
-d(2026,9,21,19,30,0),
-d(2027,3,21,20,30,0),
-d(2027,9,21,19,30,0),
-d(2028,3,20,20,30,0),
-d(2028,9,20,19,30,0),
-d(2029,3,20,20,30,0),
-d(2029,9,20,19,30,0),
-d(2030,3,21,20,30,0),
-d(2030,9,21,19,30,0),
-d(2031,3,21,20,30,0),
-d(2031,9,21,19,30,0),
-d(2032,3,20,20,30,0),
-d(2032,9,20,19,30,0),
-d(2033,3,20,20,30,0),
-d(2033,9,20,19,30,0),
-d(2034,3,21,20,30,0),
-d(2034,9,21,19,30,0),
-d(2035,3,21,20,30,0),
-d(2035,9,21,19,30,0),
-d(2036,3,20,20,30,0),
-d(2036,9,20,19,30,0),
-d(2037,3,20,20,30,0),
-d(2037,9,20,19,30,0),
- ]
-
- _transition_info = [
-i(12360,0,'LMT'),
-i(12360,0,'TMT'),
-i(12600,0,'IRST'),
-i(14400,0,'IRST'),
-i(18000,3600,'IRDT'),
-i(14400,0,'IRST'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
- ]
-
-Tehran = Tehran()
-
diff --git a/modules/pytz/zoneinfo/Asia/Tel_Aviv.py b/modules/pytz/zoneinfo/Asia/Tel_Aviv.py
deleted file mode 100644
index c02fb2da..00000000
--- a/modules/pytz/zoneinfo/Asia/Tel_Aviv.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for Asia/Tel_Aviv.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tel_Aviv(DstTzInfo):
- '''Asia/Tel_Aviv timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Tel_Aviv'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,12,31,21,39,20),
-d(1940,5,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1943,4,1,0,0,0),
-d(1943,10,31,21,0,0),
-d(1944,3,31,22,0,0),
-d(1944,10,31,21,0,0),
-d(1945,4,15,22,0,0),
-d(1945,10,31,23,0,0),
-d(1946,4,16,0,0,0),
-d(1946,10,31,21,0,0),
-d(1948,5,22,22,0,0),
-d(1948,8,31,20,0,0),
-d(1948,10,31,23,0,0),
-d(1949,4,30,22,0,0),
-d(1949,10,31,23,0,0),
-d(1950,4,15,22,0,0),
-d(1950,9,15,0,0,0),
-d(1951,3,31,22,0,0),
-d(1951,11,11,0,0,0),
-d(1952,4,20,0,0,0),
-d(1952,10,19,0,0,0),
-d(1953,4,12,0,0,0),
-d(1953,9,13,0,0,0),
-d(1954,6,12,22,0,0),
-d(1954,9,11,21,0,0),
-d(1955,6,11,0,0,0),
-d(1955,9,10,21,0,0),
-d(1956,6,2,22,0,0),
-d(1956,9,30,0,0,0),
-d(1957,4,29,0,0,0),
-d(1957,9,21,21,0,0),
-d(1974,7,6,22,0,0),
-d(1974,10,12,21,0,0),
-d(1975,4,19,22,0,0),
-d(1975,8,30,21,0,0),
-d(1985,4,13,22,0,0),
-d(1985,9,14,21,0,0),
-d(1986,5,17,22,0,0),
-d(1986,9,6,21,0,0),
-d(1987,4,14,22,0,0),
-d(1987,9,12,21,0,0),
-d(1988,4,8,22,0,0),
-d(1988,9,2,21,0,0),
-d(1989,4,29,22,0,0),
-d(1989,9,2,21,0,0),
-d(1990,3,24,22,0,0),
-d(1990,8,25,21,0,0),
-d(1991,3,23,22,0,0),
-d(1991,8,31,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,5,21,0,0),
-d(1993,4,1,22,0,0),
-d(1993,9,4,21,0,0),
-d(1994,3,31,22,0,0),
-d(1994,8,27,21,0,0),
-d(1995,3,30,22,0,0),
-d(1995,9,2,21,0,0),
-d(1996,3,14,22,0,0),
-d(1996,9,15,21,0,0),
-d(1997,3,20,22,0,0),
-d(1997,9,13,21,0,0),
-d(1998,3,19,22,0,0),
-d(1998,9,5,21,0,0),
-d(1999,4,2,0,0,0),
-d(1999,9,2,23,0,0),
-d(2000,4,14,0,0,0),
-d(2000,10,5,22,0,0),
-d(2001,4,8,23,0,0),
-d(2001,9,23,22,0,0),
-d(2002,3,28,23,0,0),
-d(2002,10,6,22,0,0),
-d(2003,3,27,23,0,0),
-d(2003,10,2,22,0,0),
-d(2004,4,6,23,0,0),
-d(2004,9,21,22,0,0),
-d(2005,4,1,0,0,0),
-d(2005,10,8,23,0,0),
-d(2006,3,31,0,0,0),
-d(2006,9,30,23,0,0),
-d(2007,3,30,0,0,0),
-d(2007,9,15,23,0,0),
-d(2008,3,28,0,0,0),
-d(2008,10,4,23,0,0),
-d(2009,3,27,0,0,0),
-d(2009,9,26,23,0,0),
-d(2010,3,26,0,0,0),
-d(2010,9,11,23,0,0),
-d(2011,4,1,0,0,0),
-d(2011,10,1,23,0,0),
-d(2012,3,30,0,0,0),
-d(2012,9,22,23,0,0),
-d(2013,3,29,0,0,0),
-d(2013,9,7,23,0,0),
-d(2014,3,28,0,0,0),
-d(2014,9,27,23,0,0),
-d(2015,3,27,0,0,0),
-d(2015,9,19,23,0,0),
-d(2016,4,1,0,0,0),
-d(2016,10,8,23,0,0),
-d(2017,3,31,0,0,0),
-d(2017,9,23,23,0,0),
-d(2018,3,30,0,0,0),
-d(2018,9,15,23,0,0),
-d(2019,3,29,0,0,0),
-d(2019,10,5,23,0,0),
-d(2020,3,27,0,0,0),
-d(2020,9,26,23,0,0),
-d(2021,3,26,0,0,0),
-d(2021,9,11,23,0,0),
-d(2022,4,1,0,0,0),
-d(2022,10,1,23,0,0),
-d(2023,3,31,0,0,0),
-d(2023,9,23,23,0,0),
-d(2024,3,29,0,0,0),
-d(2024,10,5,23,0,0),
-d(2025,3,28,0,0,0),
-d(2025,9,27,23,0,0),
-d(2026,3,27,0,0,0),
-d(2026,9,19,23,0,0),
-d(2027,3,26,0,0,0),
-d(2027,10,9,23,0,0),
-d(2028,3,31,0,0,0),
-d(2028,9,23,23,0,0),
-d(2029,3,30,0,0,0),
-d(2029,9,15,23,0,0),
-d(2030,3,29,0,0,0),
-d(2030,10,5,23,0,0),
-d(2031,3,28,0,0,0),
-d(2031,9,20,23,0,0),
-d(2032,3,26,0,0,0),
-d(2032,9,11,23,0,0),
-d(2033,4,1,0,0,0),
-d(2033,10,1,23,0,0),
-d(2034,3,31,0,0,0),
-d(2034,9,16,23,0,0),
-d(2035,3,30,0,0,0),
-d(2035,10,6,23,0,0),
-d(2036,3,28,0,0,0),
-d(2036,9,27,23,0,0),
-d(2037,3,27,0,0,0),
-d(2037,9,12,23,0,0),
- ]
-
- _transition_info = [
-i(8460,0,'JMT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(14400,7200,'IDDT'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
- ]
-
-Tel_Aviv = Tel_Aviv()
-
diff --git a/modules/pytz/zoneinfo/Asia/Thimbu.py b/modules/pytz/zoneinfo/Asia/Thimbu.py
deleted file mode 100644
index adbcb013..00000000
--- a/modules/pytz/zoneinfo/Asia/Thimbu.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Asia/Thimbu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Thimbu(DstTzInfo):
- '''Asia/Thimbu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Thimbu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1947,8,14,18,1,24),
-d(1987,9,30,18,30,0),
- ]
-
- _transition_info = [
-i(21540,0,'LMT'),
-i(19800,0,'IST'),
-i(21600,0,'BTT'),
- ]
-
-Thimbu = Thimbu()
-
diff --git a/modules/pytz/zoneinfo/Asia/Thimphu.py b/modules/pytz/zoneinfo/Asia/Thimphu.py
deleted file mode 100644
index 95da5a48..00000000
--- a/modules/pytz/zoneinfo/Asia/Thimphu.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Asia/Thimphu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Thimphu(DstTzInfo):
- '''Asia/Thimphu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Thimphu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1947,8,14,18,1,24),
-d(1987,9,30,18,30,0),
- ]
-
- _transition_info = [
-i(21540,0,'LMT'),
-i(19800,0,'IST'),
-i(21600,0,'BTT'),
- ]
-
-Thimphu = Thimphu()
-
diff --git a/modules/pytz/zoneinfo/Asia/Tokyo.py b/modules/pytz/zoneinfo/Asia/Tokyo.py
deleted file mode 100644
index 887d1307..00000000
--- a/modules/pytz/zoneinfo/Asia/Tokyo.py
+++ /dev/null
@@ -1,38 +0,0 @@
-'''tzinfo timezone information for Asia/Tokyo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tokyo(DstTzInfo):
- '''Asia/Tokyo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Tokyo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1937,12,31,15,0,0),
-d(1948,5,1,17,0,0),
-d(1948,9,10,16,0,0),
-d(1949,4,2,17,0,0),
-d(1949,9,9,16,0,0),
-d(1950,5,6,17,0,0),
-d(1950,9,8,16,0,0),
-d(1951,5,5,17,0,0),
-d(1951,9,7,16,0,0),
- ]
-
- _transition_info = [
-i(32400,0,'CJT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
- ]
-
-Tokyo = Tokyo()
-
diff --git a/modules/pytz/zoneinfo/Asia/Ujung_Pandang.py b/modules/pytz/zoneinfo/Asia/Ujung_Pandang.py
deleted file mode 100644
index d4b8ba26..00000000
--- a/modules/pytz/zoneinfo/Asia/Ujung_Pandang.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Asia/Ujung_Pandang.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ujung_Pandang(DstTzInfo):
- '''Asia/Ujung_Pandang timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Ujung_Pandang'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,16,2,24),
-d(1932,10,31,16,2,24),
-d(1942,2,8,16,0,0),
-d(1945,7,31,15,0,0),
- ]
-
- _transition_info = [
-i(28680,0,'LMT'),
-i(28680,0,'MMT'),
-i(28800,0,'CIT'),
-i(32400,0,'JST'),
-i(28800,0,'CIT'),
- ]
-
-Ujung_Pandang = Ujung_Pandang()
-
diff --git a/modules/pytz/zoneinfo/Asia/Ulaanbaatar.py b/modules/pytz/zoneinfo/Asia/Ulaanbaatar.py
deleted file mode 100644
index eb089c19..00000000
--- a/modules/pytz/zoneinfo/Asia/Ulaanbaatar.py
+++ /dev/null
@@ -1,236 +0,0 @@
-'''tzinfo timezone information for Asia/Ulaanbaatar.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ulaanbaatar(DstTzInfo):
- '''Asia/Ulaanbaatar timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Ulaanbaatar'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,7,31,16,52,28),
-d(1977,12,31,17,0,0),
-d(1983,3,31,16,0,0),
-d(1983,9,30,15,0,0),
-d(1984,3,31,16,0,0),
-d(1984,9,29,18,0,0),
-d(1985,3,30,18,0,0),
-d(1985,9,28,18,0,0),
-d(1986,3,29,18,0,0),
-d(1986,9,27,18,0,0),
-d(1987,3,28,18,0,0),
-d(1987,9,26,18,0,0),
-d(1988,3,26,18,0,0),
-d(1988,9,24,18,0,0),
-d(1989,3,25,18,0,0),
-d(1989,9,23,18,0,0),
-d(1990,3,24,18,0,0),
-d(1990,9,29,18,0,0),
-d(1991,3,30,18,0,0),
-d(1991,9,28,18,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,18,0,0),
-d(1993,3,27,18,0,0),
-d(1993,9,25,18,0,0),
-d(1994,3,26,18,0,0),
-d(1994,9,24,18,0,0),
-d(1995,3,25,18,0,0),
-d(1995,9,23,18,0,0),
-d(1996,3,30,18,0,0),
-d(1996,9,28,18,0,0),
-d(1997,3,29,18,0,0),
-d(1997,9,27,18,0,0),
-d(1998,3,28,18,0,0),
-d(1998,9,26,18,0,0),
-d(2001,4,27,18,0,0),
-d(2001,9,28,17,0,0),
-d(2002,3,29,18,0,0),
-d(2002,9,27,17,0,0),
-d(2003,3,28,18,0,0),
-d(2003,9,26,17,0,0),
-d(2004,3,26,18,0,0),
-d(2004,9,24,17,0,0),
-d(2005,3,25,18,0,0),
-d(2005,9,23,17,0,0),
-d(2006,3,24,18,0,0),
-d(2006,9,29,17,0,0),
-d(2007,3,30,18,0,0),
-d(2007,9,28,17,0,0),
-d(2008,3,28,18,0,0),
-d(2008,9,26,17,0,0),
-d(2009,3,27,18,0,0),
-d(2009,9,25,17,0,0),
-d(2010,3,26,18,0,0),
-d(2010,9,24,17,0,0),
-d(2011,3,25,18,0,0),
-d(2011,9,23,17,0,0),
-d(2012,3,30,18,0,0),
-d(2012,9,28,17,0,0),
-d(2013,3,29,18,0,0),
-d(2013,9,27,17,0,0),
-d(2014,3,28,18,0,0),
-d(2014,9,26,17,0,0),
-d(2015,3,27,18,0,0),
-d(2015,9,25,17,0,0),
-d(2016,3,25,18,0,0),
-d(2016,9,23,17,0,0),
-d(2017,3,24,18,0,0),
-d(2017,9,29,17,0,0),
-d(2018,3,30,18,0,0),
-d(2018,9,28,17,0,0),
-d(2019,3,29,18,0,0),
-d(2019,9,27,17,0,0),
-d(2020,3,27,18,0,0),
-d(2020,9,25,17,0,0),
-d(2021,3,26,18,0,0),
-d(2021,9,24,17,0,0),
-d(2022,3,25,18,0,0),
-d(2022,9,23,17,0,0),
-d(2023,3,24,18,0,0),
-d(2023,9,29,17,0,0),
-d(2024,3,29,18,0,0),
-d(2024,9,27,17,0,0),
-d(2025,3,28,18,0,0),
-d(2025,9,26,17,0,0),
-d(2026,3,27,18,0,0),
-d(2026,9,25,17,0,0),
-d(2027,3,26,18,0,0),
-d(2027,9,24,17,0,0),
-d(2028,3,24,18,0,0),
-d(2028,9,29,17,0,0),
-d(2029,3,30,18,0,0),
-d(2029,9,28,17,0,0),
-d(2030,3,29,18,0,0),
-d(2030,9,27,17,0,0),
-d(2031,3,28,18,0,0),
-d(2031,9,26,17,0,0),
-d(2032,3,26,18,0,0),
-d(2032,9,24,17,0,0),
-d(2033,3,25,18,0,0),
-d(2033,9,23,17,0,0),
-d(2034,3,24,18,0,0),
-d(2034,9,29,17,0,0),
-d(2035,3,30,18,0,0),
-d(2035,9,28,17,0,0),
-d(2036,3,28,18,0,0),
-d(2036,9,26,17,0,0),
-d(2037,3,27,18,0,0),
-d(2037,9,25,17,0,0),
- ]
-
- _transition_info = [
-i(25680,0,'LMT'),
-i(25200,0,'ULAT'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
- ]
-
-Ulaanbaatar = Ulaanbaatar()
-
diff --git a/modules/pytz/zoneinfo/Asia/Ulan_Bator.py b/modules/pytz/zoneinfo/Asia/Ulan_Bator.py
deleted file mode 100644
index 95f53784..00000000
--- a/modules/pytz/zoneinfo/Asia/Ulan_Bator.py
+++ /dev/null
@@ -1,236 +0,0 @@
-'''tzinfo timezone information for Asia/Ulan_Bator.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ulan_Bator(DstTzInfo):
- '''Asia/Ulan_Bator timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Ulan_Bator'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,7,31,16,52,28),
-d(1977,12,31,17,0,0),
-d(1983,3,31,16,0,0),
-d(1983,9,30,15,0,0),
-d(1984,3,31,16,0,0),
-d(1984,9,29,18,0,0),
-d(1985,3,30,18,0,0),
-d(1985,9,28,18,0,0),
-d(1986,3,29,18,0,0),
-d(1986,9,27,18,0,0),
-d(1987,3,28,18,0,0),
-d(1987,9,26,18,0,0),
-d(1988,3,26,18,0,0),
-d(1988,9,24,18,0,0),
-d(1989,3,25,18,0,0),
-d(1989,9,23,18,0,0),
-d(1990,3,24,18,0,0),
-d(1990,9,29,18,0,0),
-d(1991,3,30,18,0,0),
-d(1991,9,28,18,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,18,0,0),
-d(1993,3,27,18,0,0),
-d(1993,9,25,18,0,0),
-d(1994,3,26,18,0,0),
-d(1994,9,24,18,0,0),
-d(1995,3,25,18,0,0),
-d(1995,9,23,18,0,0),
-d(1996,3,30,18,0,0),
-d(1996,9,28,18,0,0),
-d(1997,3,29,18,0,0),
-d(1997,9,27,18,0,0),
-d(1998,3,28,18,0,0),
-d(1998,9,26,18,0,0),
-d(2001,4,27,18,0,0),
-d(2001,9,28,17,0,0),
-d(2002,3,29,18,0,0),
-d(2002,9,27,17,0,0),
-d(2003,3,28,18,0,0),
-d(2003,9,26,17,0,0),
-d(2004,3,26,18,0,0),
-d(2004,9,24,17,0,0),
-d(2005,3,25,18,0,0),
-d(2005,9,23,17,0,0),
-d(2006,3,24,18,0,0),
-d(2006,9,29,17,0,0),
-d(2007,3,30,18,0,0),
-d(2007,9,28,17,0,0),
-d(2008,3,28,18,0,0),
-d(2008,9,26,17,0,0),
-d(2009,3,27,18,0,0),
-d(2009,9,25,17,0,0),
-d(2010,3,26,18,0,0),
-d(2010,9,24,17,0,0),
-d(2011,3,25,18,0,0),
-d(2011,9,23,17,0,0),
-d(2012,3,30,18,0,0),
-d(2012,9,28,17,0,0),
-d(2013,3,29,18,0,0),
-d(2013,9,27,17,0,0),
-d(2014,3,28,18,0,0),
-d(2014,9,26,17,0,0),
-d(2015,3,27,18,0,0),
-d(2015,9,25,17,0,0),
-d(2016,3,25,18,0,0),
-d(2016,9,23,17,0,0),
-d(2017,3,24,18,0,0),
-d(2017,9,29,17,0,0),
-d(2018,3,30,18,0,0),
-d(2018,9,28,17,0,0),
-d(2019,3,29,18,0,0),
-d(2019,9,27,17,0,0),
-d(2020,3,27,18,0,0),
-d(2020,9,25,17,0,0),
-d(2021,3,26,18,0,0),
-d(2021,9,24,17,0,0),
-d(2022,3,25,18,0,0),
-d(2022,9,23,17,0,0),
-d(2023,3,24,18,0,0),
-d(2023,9,29,17,0,0),
-d(2024,3,29,18,0,0),
-d(2024,9,27,17,0,0),
-d(2025,3,28,18,0,0),
-d(2025,9,26,17,0,0),
-d(2026,3,27,18,0,0),
-d(2026,9,25,17,0,0),
-d(2027,3,26,18,0,0),
-d(2027,9,24,17,0,0),
-d(2028,3,24,18,0,0),
-d(2028,9,29,17,0,0),
-d(2029,3,30,18,0,0),
-d(2029,9,28,17,0,0),
-d(2030,3,29,18,0,0),
-d(2030,9,27,17,0,0),
-d(2031,3,28,18,0,0),
-d(2031,9,26,17,0,0),
-d(2032,3,26,18,0,0),
-d(2032,9,24,17,0,0),
-d(2033,3,25,18,0,0),
-d(2033,9,23,17,0,0),
-d(2034,3,24,18,0,0),
-d(2034,9,29,17,0,0),
-d(2035,3,30,18,0,0),
-d(2035,9,28,17,0,0),
-d(2036,3,28,18,0,0),
-d(2036,9,26,17,0,0),
-d(2037,3,27,18,0,0),
-d(2037,9,25,17,0,0),
- ]
-
- _transition_info = [
-i(25680,0,'LMT'),
-i(25200,0,'ULAT'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
-i(32400,3600,'ULAST'),
-i(28800,0,'ULAT'),
- ]
-
-Ulan_Bator = Ulan_Bator()
-
diff --git a/modules/pytz/zoneinfo/Asia/Urumqi.py b/modules/pytz/zoneinfo/Asia/Urumqi.py
deleted file mode 100644
index 8d0d686f..00000000
--- a/modules/pytz/zoneinfo/Asia/Urumqi.py
+++ /dev/null
@@ -1,48 +0,0 @@
-'''tzinfo timezone information for Asia/Urumqi.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Urumqi(DstTzInfo):
- '''Asia/Urumqi timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Urumqi'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,18,9,40),
-d(1980,4,30,18,0,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(21000,0,'LMT'),
-i(21600,0,'URUT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-Urumqi = Urumqi()
-
diff --git a/modules/pytz/zoneinfo/Asia/Vientiane.py b/modules/pytz/zoneinfo/Asia/Vientiane.py
deleted file mode 100644
index 60f57c66..00000000
--- a/modules/pytz/zoneinfo/Asia/Vientiane.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Asia/Vientiane.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vientiane(DstTzInfo):
- '''Asia/Vientiane timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Vientiane'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,6,8,17,9,36),
-d(1911,3,10,16,54,40),
-d(1912,4,30,17,0,0),
-d(1931,4,30,16,0,0),
- ]
-
- _transition_info = [
-i(24600,0,'LMT'),
-i(25560,0,'SMT'),
-i(25200,0,'ICT'),
-i(28800,0,'ICT'),
-i(25200,0,'ICT'),
- ]
-
-Vientiane = Vientiane()
-
diff --git a/modules/pytz/zoneinfo/Asia/Vladivostok.py b/modules/pytz/zoneinfo/Asia/Vladivostok.py
deleted file mode 100644
index 95a112ce..00000000
--- a/modules/pytz/zoneinfo/Asia/Vladivostok.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Vladivostok.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vladivostok(DstTzInfo):
- '''Asia/Vladivostok timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Vladivostok'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,11,14,15,12,16),
-d(1930,6,20,15,0,0),
-d(1981,3,31,14,0,0),
-d(1981,9,30,13,0,0),
-d(1982,3,31,14,0,0),
-d(1982,9,30,13,0,0),
-d(1983,3,31,14,0,0),
-d(1983,9,30,13,0,0),
-d(1984,3,31,14,0,0),
-d(1984,9,29,16,0,0),
-d(1985,3,30,16,0,0),
-d(1985,9,28,16,0,0),
-d(1986,3,29,16,0,0),
-d(1986,9,27,16,0,0),
-d(1987,3,28,16,0,0),
-d(1987,9,26,16,0,0),
-d(1988,3,26,16,0,0),
-d(1988,9,24,16,0,0),
-d(1989,3,25,16,0,0),
-d(1989,9,23,16,0,0),
-d(1990,3,24,16,0,0),
-d(1990,9,29,16,0,0),
-d(1991,3,30,16,0,0),
-d(1991,9,28,17,0,0),
-d(1992,1,18,17,0,0),
-d(1992,3,28,13,0,0),
-d(1992,9,26,12,0,0),
-d(1993,3,27,16,0,0),
-d(1993,9,25,16,0,0),
-d(1994,3,26,16,0,0),
-d(1994,9,24,16,0,0),
-d(1995,3,25,16,0,0),
-d(1995,9,23,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,10,28,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,3,25,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(31680,0,'LMT'),
-i(32400,0,'VLAT'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(36000,0,'VLASST'),
-i(32400,0,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
-i(39600,3600,'VLAST'),
-i(36000,0,'VLAT'),
- ]
-
-Vladivostok = Vladivostok()
-
diff --git a/modules/pytz/zoneinfo/Asia/Yakutsk.py b/modules/pytz/zoneinfo/Asia/Yakutsk.py
deleted file mode 100644
index 5283f1fc..00000000
--- a/modules/pytz/zoneinfo/Asia/Yakutsk.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Yakutsk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yakutsk(DstTzInfo):
- '''Asia/Yakutsk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Yakutsk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,14,15,21,20),
-d(1930,6,20,16,0,0),
-d(1981,3,31,15,0,0),
-d(1981,9,30,14,0,0),
-d(1982,3,31,15,0,0),
-d(1982,9,30,14,0,0),
-d(1983,3,31,15,0,0),
-d(1983,9,30,14,0,0),
-d(1984,3,31,15,0,0),
-d(1984,9,29,17,0,0),
-d(1985,3,30,17,0,0),
-d(1985,9,28,17,0,0),
-d(1986,3,29,17,0,0),
-d(1986,9,27,17,0,0),
-d(1987,3,28,17,0,0),
-d(1987,9,26,17,0,0),
-d(1988,3,26,17,0,0),
-d(1988,9,24,17,0,0),
-d(1989,3,25,17,0,0),
-d(1989,9,23,17,0,0),
-d(1990,3,24,17,0,0),
-d(1990,9,29,17,0,0),
-d(1991,3,30,17,0,0),
-d(1991,9,28,18,0,0),
-d(1992,1,18,18,0,0),
-d(1992,3,28,14,0,0),
-d(1992,9,26,13,0,0),
-d(1993,3,27,17,0,0),
-d(1993,9,25,17,0,0),
-d(1994,3,26,17,0,0),
-d(1994,9,24,17,0,0),
-d(1995,3,25,17,0,0),
-d(1995,9,23,17,0,0),
-d(1996,3,30,17,0,0),
-d(1996,10,26,17,0,0),
-d(1997,3,29,17,0,0),
-d(1997,10,25,17,0,0),
-d(1998,3,28,17,0,0),
-d(1998,10,24,17,0,0),
-d(1999,3,27,17,0,0),
-d(1999,10,30,17,0,0),
-d(2000,3,25,17,0,0),
-d(2000,10,28,17,0,0),
-d(2001,3,24,17,0,0),
-d(2001,10,27,17,0,0),
-d(2002,3,30,17,0,0),
-d(2002,10,26,17,0,0),
-d(2003,3,29,17,0,0),
-d(2003,10,25,17,0,0),
-d(2004,3,27,17,0,0),
-d(2004,10,30,17,0,0),
-d(2005,3,26,17,0,0),
-d(2005,10,29,17,0,0),
-d(2006,3,25,17,0,0),
-d(2006,10,28,17,0,0),
-d(2007,3,24,17,0,0),
-d(2007,10,27,17,0,0),
-d(2008,3,29,17,0,0),
-d(2008,10,25,17,0,0),
-d(2009,3,28,17,0,0),
-d(2009,10,24,17,0,0),
-d(2010,3,27,17,0,0),
-d(2010,10,30,17,0,0),
-d(2011,3,26,17,0,0),
-d(2011,10,29,17,0,0),
-d(2012,3,24,17,0,0),
-d(2012,10,27,17,0,0),
-d(2013,3,30,17,0,0),
-d(2013,10,26,17,0,0),
-d(2014,3,29,17,0,0),
-d(2014,10,25,17,0,0),
-d(2015,3,28,17,0,0),
-d(2015,10,24,17,0,0),
-d(2016,3,26,17,0,0),
-d(2016,10,29,17,0,0),
-d(2017,3,25,17,0,0),
-d(2017,10,28,17,0,0),
-d(2018,3,24,17,0,0),
-d(2018,10,27,17,0,0),
-d(2019,3,30,17,0,0),
-d(2019,10,26,17,0,0),
-d(2020,3,28,17,0,0),
-d(2020,10,24,17,0,0),
-d(2021,3,27,17,0,0),
-d(2021,10,30,17,0,0),
-d(2022,3,26,17,0,0),
-d(2022,10,29,17,0,0),
-d(2023,3,25,17,0,0),
-d(2023,10,28,17,0,0),
-d(2024,3,30,17,0,0),
-d(2024,10,26,17,0,0),
-d(2025,3,29,17,0,0),
-d(2025,10,25,17,0,0),
-d(2026,3,28,17,0,0),
-d(2026,10,24,17,0,0),
-d(2027,3,27,17,0,0),
-d(2027,10,30,17,0,0),
-d(2028,3,25,17,0,0),
-d(2028,10,28,17,0,0),
-d(2029,3,24,17,0,0),
-d(2029,10,27,17,0,0),
-d(2030,3,30,17,0,0),
-d(2030,10,26,17,0,0),
-d(2031,3,29,17,0,0),
-d(2031,10,25,17,0,0),
-d(2032,3,27,17,0,0),
-d(2032,10,30,17,0,0),
-d(2033,3,26,17,0,0),
-d(2033,10,29,17,0,0),
-d(2034,3,25,17,0,0),
-d(2034,10,28,17,0,0),
-d(2035,3,24,17,0,0),
-d(2035,10,27,17,0,0),
-d(2036,3,29,17,0,0),
-d(2036,10,25,17,0,0),
-d(2037,3,28,17,0,0),
-d(2037,10,24,17,0,0),
- ]
-
- _transition_info = [
-i(31140,0,'LMT'),
-i(28800,0,'YAKT'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(32400,0,'YAKST'),
-i(28800,0,'YAKT'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
-i(36000,3600,'YAKST'),
-i(32400,0,'YAKT'),
- ]
-
-Yakutsk = Yakutsk()
-
diff --git a/modules/pytz/zoneinfo/Asia/Yekaterinburg.py b/modules/pytz/zoneinfo/Asia/Yekaterinburg.py
deleted file mode 100644
index bc01842c..00000000
--- a/modules/pytz/zoneinfo/Asia/Yekaterinburg.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Asia/Yekaterinburg.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yekaterinburg(DstTzInfo):
- '''Asia/Yekaterinburg timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Yekaterinburg'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,7,14,23,57,36),
-d(1930,6,20,20,0,0),
-d(1981,3,31,19,0,0),
-d(1981,9,30,18,0,0),
-d(1982,3,31,19,0,0),
-d(1982,9,30,18,0,0),
-d(1983,3,31,19,0,0),
-d(1983,9,30,18,0,0),
-d(1984,3,31,19,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,21,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,21,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,21,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,21,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,21,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,21,0,0),
-d(1990,9,29,21,0,0),
-d(1991,3,30,21,0,0),
-d(1991,9,28,22,0,0),
-d(1992,1,18,22,0,0),
-d(1992,3,28,18,0,0),
-d(1992,9,26,17,0,0),
-d(1993,3,27,21,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,21,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,21,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,21,0,0),
-d(1996,10,26,21,0,0),
-d(1997,3,29,21,0,0),
-d(1997,10,25,21,0,0),
-d(1998,3,28,21,0,0),
-d(1998,10,24,21,0,0),
-d(1999,3,27,21,0,0),
-d(1999,10,30,21,0,0),
-d(2000,3,25,21,0,0),
-d(2000,10,28,21,0,0),
-d(2001,3,24,21,0,0),
-d(2001,10,27,21,0,0),
-d(2002,3,30,21,0,0),
-d(2002,10,26,21,0,0),
-d(2003,3,29,21,0,0),
-d(2003,10,25,21,0,0),
-d(2004,3,27,21,0,0),
-d(2004,10,30,21,0,0),
-d(2005,3,26,21,0,0),
-d(2005,10,29,21,0,0),
-d(2006,3,25,21,0,0),
-d(2006,10,28,21,0,0),
-d(2007,3,24,21,0,0),
-d(2007,10,27,21,0,0),
-d(2008,3,29,21,0,0),
-d(2008,10,25,21,0,0),
-d(2009,3,28,21,0,0),
-d(2009,10,24,21,0,0),
-d(2010,3,27,21,0,0),
-d(2010,10,30,21,0,0),
-d(2011,3,26,21,0,0),
-d(2011,10,29,21,0,0),
-d(2012,3,24,21,0,0),
-d(2012,10,27,21,0,0),
-d(2013,3,30,21,0,0),
-d(2013,10,26,21,0,0),
-d(2014,3,29,21,0,0),
-d(2014,10,25,21,0,0),
-d(2015,3,28,21,0,0),
-d(2015,10,24,21,0,0),
-d(2016,3,26,21,0,0),
-d(2016,10,29,21,0,0),
-d(2017,3,25,21,0,0),
-d(2017,10,28,21,0,0),
-d(2018,3,24,21,0,0),
-d(2018,10,27,21,0,0),
-d(2019,3,30,21,0,0),
-d(2019,10,26,21,0,0),
-d(2020,3,28,21,0,0),
-d(2020,10,24,21,0,0),
-d(2021,3,27,21,0,0),
-d(2021,10,30,21,0,0),
-d(2022,3,26,21,0,0),
-d(2022,10,29,21,0,0),
-d(2023,3,25,21,0,0),
-d(2023,10,28,21,0,0),
-d(2024,3,30,21,0,0),
-d(2024,10,26,21,0,0),
-d(2025,3,29,21,0,0),
-d(2025,10,25,21,0,0),
-d(2026,3,28,21,0,0),
-d(2026,10,24,21,0,0),
-d(2027,3,27,21,0,0),
-d(2027,10,30,21,0,0),
-d(2028,3,25,21,0,0),
-d(2028,10,28,21,0,0),
-d(2029,3,24,21,0,0),
-d(2029,10,27,21,0,0),
-d(2030,3,30,21,0,0),
-d(2030,10,26,21,0,0),
-d(2031,3,29,21,0,0),
-d(2031,10,25,21,0,0),
-d(2032,3,27,21,0,0),
-d(2032,10,30,21,0,0),
-d(2033,3,26,21,0,0),
-d(2033,10,29,21,0,0),
-d(2034,3,25,21,0,0),
-d(2034,10,28,21,0,0),
-d(2035,3,24,21,0,0),
-d(2035,10,27,21,0,0),
-d(2036,3,29,21,0,0),
-d(2036,10,25,21,0,0),
-d(2037,3,28,21,0,0),
-d(2037,10,24,21,0,0),
- ]
-
- _transition_info = [
-i(14520,0,'LMT'),
-i(14400,0,'SVET'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(21600,3600,'SVEST'),
-i(18000,0,'SVET'),
-i(18000,0,'SVEST'),
-i(14400,0,'SVET'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
-i(21600,3600,'YEKST'),
-i(18000,0,'YEKT'),
- ]
-
-Yekaterinburg = Yekaterinburg()
-
diff --git a/modules/pytz/zoneinfo/Asia/Yerevan.py b/modules/pytz/zoneinfo/Asia/Yerevan.py
deleted file mode 100644
index edfd0485..00000000
--- a/modules/pytz/zoneinfo/Asia/Yerevan.py
+++ /dev/null
@@ -1,252 +0,0 @@
-'''tzinfo timezone information for Asia/Yerevan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yerevan(DstTzInfo):
- '''Asia/Yerevan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Asia/Yerevan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,21,2,0),
-d(1957,2,28,21,0,0),
-d(1981,3,31,20,0,0),
-d(1981,9,30,19,0,0),
-d(1982,3,31,20,0,0),
-d(1982,9,30,19,0,0),
-d(1983,3,31,20,0,0),
-d(1983,9,30,19,0,0),
-d(1984,3,31,20,0,0),
-d(1984,9,29,22,0,0),
-d(1985,3,30,22,0,0),
-d(1985,9,28,22,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,22,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,22,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,22,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,22,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,22,0,0),
-d(1991,3,30,22,0,0),
-d(1991,9,22,20,0,0),
-d(1991,9,28,23,0,0),
-d(1992,3,28,20,0,0),
-d(1992,9,26,19,0,0),
-d(1993,3,27,23,0,0),
-d(1993,9,25,23,0,0),
-d(1994,3,26,23,0,0),
-d(1994,9,24,23,0,0),
-d(1995,3,25,23,0,0),
-d(1995,9,23,23,0,0),
-d(1996,12,31,20,0,0),
-d(1997,3,29,22,0,0),
-d(1997,10,25,22,0,0),
-d(1998,3,28,22,0,0),
-d(1998,10,24,22,0,0),
-d(1999,3,27,22,0,0),
-d(1999,10,30,22,0,0),
-d(2000,3,25,22,0,0),
-d(2000,10,28,22,0,0),
-d(2001,3,24,22,0,0),
-d(2001,10,27,22,0,0),
-d(2002,3,30,22,0,0),
-d(2002,10,26,22,0,0),
-d(2003,3,29,22,0,0),
-d(2003,10,25,22,0,0),
-d(2004,3,27,22,0,0),
-d(2004,10,30,22,0,0),
-d(2005,3,26,22,0,0),
-d(2005,10,29,22,0,0),
-d(2006,3,25,22,0,0),
-d(2006,10,28,22,0,0),
-d(2007,3,24,22,0,0),
-d(2007,10,27,22,0,0),
-d(2008,3,29,22,0,0),
-d(2008,10,25,22,0,0),
-d(2009,3,28,22,0,0),
-d(2009,10,24,22,0,0),
-d(2010,3,27,22,0,0),
-d(2010,10,30,22,0,0),
-d(2011,3,26,22,0,0),
-d(2011,10,29,22,0,0),
-d(2012,3,24,22,0,0),
-d(2012,10,27,22,0,0),
-d(2013,3,30,22,0,0),
-d(2013,10,26,22,0,0),
-d(2014,3,29,22,0,0),
-d(2014,10,25,22,0,0),
-d(2015,3,28,22,0,0),
-d(2015,10,24,22,0,0),
-d(2016,3,26,22,0,0),
-d(2016,10,29,22,0,0),
-d(2017,3,25,22,0,0),
-d(2017,10,28,22,0,0),
-d(2018,3,24,22,0,0),
-d(2018,10,27,22,0,0),
-d(2019,3,30,22,0,0),
-d(2019,10,26,22,0,0),
-d(2020,3,28,22,0,0),
-d(2020,10,24,22,0,0),
-d(2021,3,27,22,0,0),
-d(2021,10,30,22,0,0),
-d(2022,3,26,22,0,0),
-d(2022,10,29,22,0,0),
-d(2023,3,25,22,0,0),
-d(2023,10,28,22,0,0),
-d(2024,3,30,22,0,0),
-d(2024,10,26,22,0,0),
-d(2025,3,29,22,0,0),
-d(2025,10,25,22,0,0),
-d(2026,3,28,22,0,0),
-d(2026,10,24,22,0,0),
-d(2027,3,27,22,0,0),
-d(2027,10,30,22,0,0),
-d(2028,3,25,22,0,0),
-d(2028,10,28,22,0,0),
-d(2029,3,24,22,0,0),
-d(2029,10,27,22,0,0),
-d(2030,3,30,22,0,0),
-d(2030,10,26,22,0,0),
-d(2031,3,29,22,0,0),
-d(2031,10,25,22,0,0),
-d(2032,3,27,22,0,0),
-d(2032,10,30,22,0,0),
-d(2033,3,26,22,0,0),
-d(2033,10,29,22,0,0),
-d(2034,3,25,22,0,0),
-d(2034,10,28,22,0,0),
-d(2035,3,24,22,0,0),
-d(2035,10,27,22,0,0),
-d(2036,3,29,22,0,0),
-d(2036,10,25,22,0,0),
-d(2037,3,28,22,0,0),
-d(2037,10,24,22,0,0),
- ]
-
- _transition_info = [
-i(10680,0,'LMT'),
-i(10800,0,'YERT'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(18000,3600,'YERST'),
-i(14400,0,'YERT'),
-i(14400,0,'YERST'),
-i(14400,0,'AMST'),
-i(10800,0,'AMT'),
-i(14400,3600,'AMST'),
-i(10800,0,'AMT'),
-i(14400,3600,'AMST'),
-i(10800,0,'AMT'),
-i(14400,3600,'AMST'),
-i(10800,0,'AMT'),
-i(14400,3600,'AMST'),
-i(14400,0,'AMT'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
-i(18000,3600,'AMST'),
-i(14400,0,'AMT'),
- ]
-
-Yerevan = Yerevan()
-
diff --git a/modules/pytz/zoneinfo/Asia/__init__.py b/modules/pytz/zoneinfo/Asia/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Atlantic/Azores.py b/modules/pytz/zoneinfo/Atlantic/Azores.py
deleted file mode 100644
index b2864aa0..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Azores.py
+++ /dev/null
@@ -1,460 +0,0 @@
-'''tzinfo timezone information for Atlantic/Azores.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Azores(DstTzInfo):
- '''Atlantic/Azores timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Azores'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,24,1,54,32),
-d(1916,6,18,1,0,0),
-d(1916,11,1,2,0,0),
-d(1917,3,1,1,0,0),
-d(1917,10,15,1,0,0),
-d(1918,3,2,1,0,0),
-d(1918,10,15,1,0,0),
-d(1919,3,1,1,0,0),
-d(1919,10,15,1,0,0),
-d(1920,3,1,1,0,0),
-d(1920,10,15,1,0,0),
-d(1921,3,1,1,0,0),
-d(1921,10,15,1,0,0),
-d(1924,4,17,1,0,0),
-d(1924,10,15,1,0,0),
-d(1926,4,18,1,0,0),
-d(1926,10,3,1,0,0),
-d(1927,4,10,1,0,0),
-d(1927,10,2,1,0,0),
-d(1928,4,15,1,0,0),
-d(1928,10,7,1,0,0),
-d(1929,4,21,1,0,0),
-d(1929,10,6,1,0,0),
-d(1931,4,19,1,0,0),
-d(1931,10,4,1,0,0),
-d(1932,4,3,1,0,0),
-d(1932,10,2,1,0,0),
-d(1934,4,8,1,0,0),
-d(1934,10,7,1,0,0),
-d(1935,3,31,1,0,0),
-d(1935,10,6,1,0,0),
-d(1936,4,19,1,0,0),
-d(1936,10,4,1,0,0),
-d(1937,4,4,1,0,0),
-d(1937,10,3,1,0,0),
-d(1938,3,27,1,0,0),
-d(1938,10,2,1,0,0),
-d(1939,4,16,1,0,0),
-d(1939,11,19,1,0,0),
-d(1940,2,25,1,0,0),
-d(1940,10,6,1,0,0),
-d(1941,4,6,1,0,0),
-d(1941,10,6,1,0,0),
-d(1942,3,15,1,0,0),
-d(1942,4,26,0,0,0),
-d(1942,8,16,0,0,0),
-d(1942,10,25,1,0,0),
-d(1943,3,14,1,0,0),
-d(1943,4,18,0,0,0),
-d(1943,8,29,0,0,0),
-d(1943,10,31,1,0,0),
-d(1944,3,12,1,0,0),
-d(1944,4,23,0,0,0),
-d(1944,8,27,0,0,0),
-d(1944,10,29,1,0,0),
-d(1945,3,11,1,0,0),
-d(1945,4,22,0,0,0),
-d(1945,8,26,0,0,0),
-d(1945,10,28,1,0,0),
-d(1946,4,7,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,4,6,4,0,0),
-d(1947,10,5,4,0,0),
-d(1948,4,4,4,0,0),
-d(1948,10,3,4,0,0),
-d(1949,4,3,4,0,0),
-d(1949,10,2,4,0,0),
-d(1951,4,1,4,0,0),
-d(1951,10,7,4,0,0),
-d(1952,4,6,4,0,0),
-d(1952,10,5,4,0,0),
-d(1953,4,5,4,0,0),
-d(1953,10,4,4,0,0),
-d(1954,4,4,4,0,0),
-d(1954,10,3,4,0,0),
-d(1955,4,3,4,0,0),
-d(1955,10,2,4,0,0),
-d(1956,4,1,4,0,0),
-d(1956,10,7,4,0,0),
-d(1957,4,7,4,0,0),
-d(1957,10,6,4,0,0),
-d(1958,4,6,4,0,0),
-d(1958,10,5,4,0,0),
-d(1959,4,5,4,0,0),
-d(1959,10,4,4,0,0),
-d(1960,4,3,4,0,0),
-d(1960,10,2,4,0,0),
-d(1961,4,2,4,0,0),
-d(1961,10,1,4,0,0),
-d(1962,4,1,4,0,0),
-d(1962,10,7,4,0,0),
-d(1963,4,7,4,0,0),
-d(1963,10,6,4,0,0),
-d(1964,4,5,4,0,0),
-d(1964,10,4,4,0,0),
-d(1965,4,4,4,0,0),
-d(1965,10,3,4,0,0),
-d(1966,4,3,4,0,0),
-d(1977,3,27,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,2,0,0),
-d(1980,3,30,1,0,0),
-d(1980,9,28,2,0,0),
-d(1981,3,29,2,0,0),
-d(1981,9,27,2,0,0),
-d(1982,3,28,2,0,0),
-d(1982,9,26,2,0,0),
-d(1983,3,27,3,0,0),
-d(1983,9,25,2,0,0),
-d(1984,3,25,2,0,0),
-d(1984,9,30,2,0,0),
-d(1985,3,31,2,0,0),
-d(1985,9,29,2,0,0),
-d(1986,3,30,2,0,0),
-d(1986,9,28,2,0,0),
-d(1987,3,29,2,0,0),
-d(1987,9,27,2,0,0),
-d(1988,3,27,2,0,0),
-d(1988,9,25,2,0,0),
-d(1989,3,26,2,0,0),
-d(1989,9,24,2,0,0),
-d(1990,3,25,2,0,0),
-d(1990,9,30,2,0,0),
-d(1991,3,31,2,0,0),
-d(1991,9,29,2,0,0),
-d(1992,3,29,2,0,0),
-d(1992,9,27,2,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-6900,0,'HMT'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(0,7200,'AZOMT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(0,7200,'AZOMT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(0,7200,'AZOMT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(0,7200,'AZOMT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,3600,'AZOST'),
-i(-7200,0,'AZOT'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(0,0,'WET'),
-i(0,0,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
-i(0,3600,'AZOST'),
-i(-3600,0,'AZOT'),
- ]
-
-Azores = Azores()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Bermuda.py b/modules/pytz/zoneinfo/Atlantic/Bermuda.py
deleted file mode 100644
index 9c4511f5..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Bermuda.py
+++ /dev/null
@@ -1,278 +0,0 @@
-'''tzinfo timezone information for Atlantic/Bermuda.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bermuda(DstTzInfo):
- '''Atlantic/Bermuda timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Bermuda'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1930,1,1,6,19,4),
-d(1974,4,28,6,0,0),
-d(1974,10,27,5,0,0),
-d(1975,4,27,6,0,0),
-d(1975,10,26,5,0,0),
-d(1976,4,25,6,0,0),
-d(1976,10,31,5,0,0),
-d(1977,4,24,6,0,0),
-d(1977,10,30,5,0,0),
-d(1978,4,30,6,0,0),
-d(1978,10,29,5,0,0),
-d(1979,4,29,6,0,0),
-d(1979,10,28,5,0,0),
-d(1980,4,27,6,0,0),
-d(1980,10,26,5,0,0),
-d(1981,4,26,6,0,0),
-d(1981,10,25,5,0,0),
-d(1982,4,25,6,0,0),
-d(1982,10,31,5,0,0),
-d(1983,4,24,6,0,0),
-d(1983,10,30,5,0,0),
-d(1984,4,29,6,0,0),
-d(1984,10,28,5,0,0),
-d(1985,4,28,6,0,0),
-d(1985,10,27,5,0,0),
-d(1986,4,27,6,0,0),
-d(1986,10,26,5,0,0),
-d(1987,4,5,6,0,0),
-d(1987,10,25,5,0,0),
-d(1988,4,3,6,0,0),
-d(1988,10,30,5,0,0),
-d(1989,4,2,6,0,0),
-d(1989,10,29,5,0,0),
-d(1990,4,1,6,0,0),
-d(1990,10,28,5,0,0),
-d(1991,4,7,6,0,0),
-d(1991,10,27,5,0,0),
-d(1992,4,5,6,0,0),
-d(1992,10,25,5,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,5,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,5,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,5,0,0),
-d(1996,4,7,6,0,0),
-d(1996,10,27,5,0,0),
-d(1997,4,6,6,0,0),
-d(1997,10,26,5,0,0),
-d(1998,4,5,6,0,0),
-d(1998,10,25,5,0,0),
-d(1999,4,4,6,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,6,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,6,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,6,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,6,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,6,0,0),
-d(2004,10,31,5,0,0),
-d(2005,4,3,6,0,0),
-d(2005,10,30,5,0,0),
-d(2006,4,2,6,0,0),
-d(2006,10,29,5,0,0),
-d(2007,4,1,6,0,0),
-d(2007,10,28,5,0,0),
-d(2008,4,6,6,0,0),
-d(2008,10,26,5,0,0),
-d(2009,4,5,6,0,0),
-d(2009,10,25,5,0,0),
-d(2010,4,4,6,0,0),
-d(2010,10,31,5,0,0),
-d(2011,4,3,6,0,0),
-d(2011,10,30,5,0,0),
-d(2012,4,1,6,0,0),
-d(2012,10,28,5,0,0),
-d(2013,4,7,6,0,0),
-d(2013,10,27,5,0,0),
-d(2014,4,6,6,0,0),
-d(2014,10,26,5,0,0),
-d(2015,4,5,6,0,0),
-d(2015,10,25,5,0,0),
-d(2016,4,3,6,0,0),
-d(2016,10,30,5,0,0),
-d(2017,4,2,6,0,0),
-d(2017,10,29,5,0,0),
-d(2018,4,1,6,0,0),
-d(2018,10,28,5,0,0),
-d(2019,4,7,6,0,0),
-d(2019,10,27,5,0,0),
-d(2020,4,5,6,0,0),
-d(2020,10,25,5,0,0),
-d(2021,4,4,6,0,0),
-d(2021,10,31,5,0,0),
-d(2022,4,3,6,0,0),
-d(2022,10,30,5,0,0),
-d(2023,4,2,6,0,0),
-d(2023,10,29,5,0,0),
-d(2024,4,7,6,0,0),
-d(2024,10,27,5,0,0),
-d(2025,4,6,6,0,0),
-d(2025,10,26,5,0,0),
-d(2026,4,5,6,0,0),
-d(2026,10,25,5,0,0),
-d(2027,4,4,6,0,0),
-d(2027,10,31,5,0,0),
-d(2028,4,2,6,0,0),
-d(2028,10,29,5,0,0),
-d(2029,4,1,6,0,0),
-d(2029,10,28,5,0,0),
-d(2030,4,7,6,0,0),
-d(2030,10,27,5,0,0),
-d(2031,4,6,6,0,0),
-d(2031,10,26,5,0,0),
-d(2032,4,4,6,0,0),
-d(2032,10,31,5,0,0),
-d(2033,4,3,6,0,0),
-d(2033,10,30,5,0,0),
-d(2034,4,2,6,0,0),
-d(2034,10,29,5,0,0),
-d(2035,4,1,6,0,0),
-d(2035,10,28,5,0,0),
-d(2036,4,6,6,0,0),
-d(2036,10,26,5,0,0),
-d(2037,4,5,6,0,0),
-d(2037,10,25,5,0,0),
- ]
-
- _transition_info = [
-i(-15540,0,'LMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Bermuda = Bermuda()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Canary.py b/modules/pytz/zoneinfo/Atlantic/Canary.py
deleted file mode 100644
index e605028e..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Canary.py
+++ /dev/null
@@ -1,256 +0,0 @@
-'''tzinfo timezone information for Atlantic/Canary.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Canary(DstTzInfo):
- '''Atlantic/Canary timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Canary'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,3,1,1,1,36),
-d(1946,9,30,2,0,0),
-d(1980,4,6,0,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-3720,0,'LMT'),
-i(-3600,0,'CANT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
- ]
-
-Canary = Canary()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Cape_Verde.py b/modules/pytz/zoneinfo/Atlantic/Cape_Verde.py
deleted file mode 100644
index 8cb51e71..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Cape_Verde.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Atlantic/Cape_Verde.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cape_Verde(DstTzInfo):
- '''Atlantic/Cape_Verde timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Cape_Verde'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1907,1,1,1,34,4),
-d(1942,9,1,2,0,0),
-d(1945,10,15,1,0,0),
-d(1975,11,25,4,0,0),
- ]
-
- _transition_info = [
-i(-5640,0,'LMT'),
-i(-7200,0,'CVT'),
-i(-3600,3600,'CVST'),
-i(-7200,0,'CVT'),
-i(-3600,0,'CVT'),
- ]
-
-Cape_Verde = Cape_Verde()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Faeroe.py b/modules/pytz/zoneinfo/Atlantic/Faeroe.py
deleted file mode 100644
index 4eb16fa3..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Faeroe.py
+++ /dev/null
@@ -1,250 +0,0 @@
-'''tzinfo timezone information for Atlantic/Faeroe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Faeroe(DstTzInfo):
- '''Atlantic/Faeroe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Faeroe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1908,1,11,0,27,4),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-1620,0,'LMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
- ]
-
-Faeroe = Faeroe()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Jan_Mayen.py b/modules/pytz/zoneinfo/Atlantic/Jan_Mayen.py
deleted file mode 100644
index 6ba69901..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Jan_Mayen.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Atlantic/Jan_Mayen.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jan_Mayen(DstTzInfo):
- '''Atlantic/Jan_Mayen timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Jan_Mayen'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,22,0,0,0),
-d(1916,9,29,22,0,0),
-d(1940,8,10,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,10,1,1,0,0),
-d(1959,3,15,1,0,0),
-d(1959,9,20,1,0,0),
-d(1960,3,20,1,0,0),
-d(1960,9,18,1,0,0),
-d(1961,3,19,1,0,0),
-d(1961,9,17,1,0,0),
-d(1962,3,18,1,0,0),
-d(1962,9,16,1,0,0),
-d(1963,3,17,1,0,0),
-d(1963,9,15,1,0,0),
-d(1964,3,15,1,0,0),
-d(1964,9,20,1,0,0),
-d(1965,4,25,1,0,0),
-d(1965,9,19,1,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Jan_Mayen = Jan_Mayen()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Madeira.py b/modules/pytz/zoneinfo/Atlantic/Madeira.py
deleted file mode 100644
index ace6fc01..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Madeira.py
+++ /dev/null
@@ -1,460 +0,0 @@
-'''tzinfo timezone information for Atlantic/Madeira.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Madeira(DstTzInfo):
- '''Atlantic/Madeira timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Madeira'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,24,1,7,36),
-d(1916,6,18,0,0,0),
-d(1916,11,1,1,0,0),
-d(1917,3,1,0,0,0),
-d(1917,10,15,0,0,0),
-d(1918,3,2,0,0,0),
-d(1918,10,15,0,0,0),
-d(1919,3,1,0,0,0),
-d(1919,10,15,0,0,0),
-d(1920,3,1,0,0,0),
-d(1920,10,15,0,0,0),
-d(1921,3,1,0,0,0),
-d(1921,10,15,0,0,0),
-d(1924,4,17,0,0,0),
-d(1924,10,15,0,0,0),
-d(1926,4,18,0,0,0),
-d(1926,10,3,0,0,0),
-d(1927,4,10,0,0,0),
-d(1927,10,2,0,0,0),
-d(1928,4,15,0,0,0),
-d(1928,10,7,0,0,0),
-d(1929,4,21,0,0,0),
-d(1929,10,6,0,0,0),
-d(1931,4,19,0,0,0),
-d(1931,10,4,0,0,0),
-d(1932,4,3,0,0,0),
-d(1932,10,2,0,0,0),
-d(1934,4,8,0,0,0),
-d(1934,10,7,0,0,0),
-d(1935,3,31,0,0,0),
-d(1935,10,6,0,0,0),
-d(1936,4,19,0,0,0),
-d(1936,10,4,0,0,0),
-d(1937,4,4,0,0,0),
-d(1937,10,3,0,0,0),
-d(1938,3,27,0,0,0),
-d(1938,10,2,0,0,0),
-d(1939,4,16,0,0,0),
-d(1939,11,19,0,0,0),
-d(1940,2,25,0,0,0),
-d(1940,10,6,0,0,0),
-d(1941,4,6,0,0,0),
-d(1941,10,6,0,0,0),
-d(1942,3,15,0,0,0),
-d(1942,4,25,23,0,0),
-d(1942,8,15,23,0,0),
-d(1942,10,25,0,0,0),
-d(1943,3,14,0,0,0),
-d(1943,4,17,23,0,0),
-d(1943,8,28,23,0,0),
-d(1943,10,31,0,0,0),
-d(1944,3,12,0,0,0),
-d(1944,4,22,23,0,0),
-d(1944,8,26,23,0,0),
-d(1944,10,29,0,0,0),
-d(1945,3,11,0,0,0),
-d(1945,4,21,23,0,0),
-d(1945,8,25,23,0,0),
-d(1945,10,28,0,0,0),
-d(1946,4,7,0,0,0),
-d(1946,10,6,0,0,0),
-d(1947,4,6,3,0,0),
-d(1947,10,5,3,0,0),
-d(1948,4,4,3,0,0),
-d(1948,10,3,3,0,0),
-d(1949,4,3,3,0,0),
-d(1949,10,2,3,0,0),
-d(1951,4,1,3,0,0),
-d(1951,10,7,3,0,0),
-d(1952,4,6,3,0,0),
-d(1952,10,5,3,0,0),
-d(1953,4,5,3,0,0),
-d(1953,10,4,3,0,0),
-d(1954,4,4,3,0,0),
-d(1954,10,3,3,0,0),
-d(1955,4,3,3,0,0),
-d(1955,10,2,3,0,0),
-d(1956,4,1,3,0,0),
-d(1956,10,7,3,0,0),
-d(1957,4,7,3,0,0),
-d(1957,10,6,3,0,0),
-d(1958,4,6,3,0,0),
-d(1958,10,5,3,0,0),
-d(1959,4,5,3,0,0),
-d(1959,10,4,3,0,0),
-d(1960,4,3,3,0,0),
-d(1960,10,2,3,0,0),
-d(1961,4,2,3,0,0),
-d(1961,10,1,3,0,0),
-d(1962,4,1,3,0,0),
-d(1962,10,7,3,0,0),
-d(1963,4,7,3,0,0),
-d(1963,10,6,3,0,0),
-d(1964,4,5,3,0,0),
-d(1964,10,4,3,0,0),
-d(1965,4,4,3,0,0),
-d(1965,10,3,3,0,0),
-d(1966,4,3,3,0,0),
-d(1977,3,27,0,0,0),
-d(1977,9,25,0,0,0),
-d(1978,4,2,0,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,1,0,0,0),
-d(1979,9,30,1,0,0),
-d(1980,3,30,0,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,2,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-4080,0,'FMT'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(3600,7200,'MADMT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(3600,7200,'MADMT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(3600,7200,'MADMT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(3600,7200,'MADMT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,3600,'MADST'),
-i(-3600,0,'MADT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
- ]
-
-Madeira = Madeira()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Reykjavik.py b/modules/pytz/zoneinfo/Atlantic/Reykjavik.py
deleted file mode 100644
index 0d9922b4..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Reykjavik.py
+++ /dev/null
@@ -1,148 +0,0 @@
-'''tzinfo timezone information for Atlantic/Reykjavik.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Reykjavik(DstTzInfo):
- '''Atlantic/Reykjavik timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Reykjavik'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1908,1,1,1,27,48),
-d(1917,2,20,0,0,0),
-d(1917,10,21,1,0,0),
-d(1918,2,20,0,0,0),
-d(1918,11,16,1,0,0),
-d(1939,4,30,0,0,0),
-d(1939,11,29,2,0,0),
-d(1940,2,25,3,0,0),
-d(1940,11,3,2,0,0),
-d(1941,3,2,2,0,0),
-d(1941,11,2,2,0,0),
-d(1942,3,8,2,0,0),
-d(1942,10,25,2,0,0),
-d(1943,3,7,2,0,0),
-d(1943,10,24,2,0,0),
-d(1944,3,5,2,0,0),
-d(1944,10,22,2,0,0),
-d(1945,3,4,2,0,0),
-d(1945,10,28,2,0,0),
-d(1946,3,3,2,0,0),
-d(1946,10,27,2,0,0),
-d(1947,4,6,2,0,0),
-d(1947,10,26,2,0,0),
-d(1948,4,4,2,0,0),
-d(1948,10,24,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,2,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,1,2,0,0),
-d(1951,10,28,2,0,0),
-d(1952,4,6,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,5,2,0,0),
-d(1953,10,25,2,0,0),
-d(1954,4,4,2,0,0),
-d(1954,10,24,2,0,0),
-d(1955,4,3,2,0,0),
-d(1955,10,23,2,0,0),
-d(1956,4,1,2,0,0),
-d(1956,10,28,2,0,0),
-d(1957,4,7,2,0,0),
-d(1957,10,27,2,0,0),
-d(1958,4,6,2,0,0),
-d(1958,10,26,2,0,0),
-d(1959,4,5,2,0,0),
-d(1959,10,25,2,0,0),
-d(1960,4,3,2,0,0),
-d(1960,10,23,2,0,0),
-d(1961,4,2,2,0,0),
-d(1961,10,22,2,0,0),
-d(1962,4,1,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,4,7,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,4,5,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,4,4,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,4,3,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,4,2,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,4,7,2,0,0),
- ]
-
- _transition_info = [
-i(-5280,0,'RMT'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,0,'GMT'),
- ]
-
-Reykjavik = Reykjavik()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/South_Georgia.py b/modules/pytz/zoneinfo/Atlantic/South_Georgia.py
deleted file mode 100644
index 73e393cb..00000000
--- a/modules/pytz/zoneinfo/Atlantic/South_Georgia.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Atlantic/South_Georgia.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class South_Georgia(StaticTzInfo):
- '''Atlantic/South_Georgia timezone definition. See datetime.tzinfo for details'''
- zone = 'Atlantic/South_Georgia'
- _utcoffset = timedelta(seconds=-7200)
- _tzname = 'GST'
-
-South_Georgia = South_Georgia()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/St_Helena.py b/modules/pytz/zoneinfo/Atlantic/St_Helena.py
deleted file mode 100644
index 3d372836..00000000
--- a/modules/pytz/zoneinfo/Atlantic/St_Helena.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Atlantic/St_Helena.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class St_Helena(DstTzInfo):
- '''Atlantic/St_Helena timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/St_Helena'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1951,1,1,0,22,48),
- ]
-
- _transition_info = [
-i(-1380,0,'JMT'),
-i(0,0,'GMT'),
- ]
-
-St_Helena = St_Helena()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/Stanley.py b/modules/pytz/zoneinfo/Atlantic/Stanley.py
deleted file mode 100644
index 3e1ccfcd..00000000
--- a/modules/pytz/zoneinfo/Atlantic/Stanley.py
+++ /dev/null
@@ -1,266 +0,0 @@
-'''tzinfo timezone information for Atlantic/Stanley.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Stanley(DstTzInfo):
- '''Atlantic/Stanley timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Atlantic/Stanley'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,3,12,3,51,24),
-d(1937,9,26,4,0,0),
-d(1938,3,20,3,0,0),
-d(1938,9,25,4,0,0),
-d(1939,3,19,3,0,0),
-d(1939,10,1,4,0,0),
-d(1940,3,24,3,0,0),
-d(1940,9,29,4,0,0),
-d(1941,3,23,3,0,0),
-d(1941,9,28,4,0,0),
-d(1942,3,22,3,0,0),
-d(1942,9,27,4,0,0),
-d(1943,1,1,3,0,0),
-d(1983,5,1,4,0,0),
-d(1983,9,25,3,0,0),
-d(1984,4,29,2,0,0),
-d(1984,9,16,3,0,0),
-d(1985,4,28,2,0,0),
-d(1985,9,15,3,0,0),
-d(1986,4,20,3,0,0),
-d(1986,9,14,4,0,0),
-d(1987,4,19,3,0,0),
-d(1987,9,13,4,0,0),
-d(1988,4,17,3,0,0),
-d(1988,9,11,4,0,0),
-d(1989,4,16,3,0,0),
-d(1989,9,10,4,0,0),
-d(1990,4,22,3,0,0),
-d(1990,9,9,4,0,0),
-d(1991,4,21,3,0,0),
-d(1991,9,15,4,0,0),
-d(1992,4,19,3,0,0),
-d(1992,9,13,4,0,0),
-d(1993,4,18,3,0,0),
-d(1993,9,12,4,0,0),
-d(1994,4,17,3,0,0),
-d(1994,9,11,4,0,0),
-d(1995,4,16,3,0,0),
-d(1995,9,10,4,0,0),
-d(1996,4,21,3,0,0),
-d(1996,9,15,4,0,0),
-d(1997,4,20,3,0,0),
-d(1997,9,14,4,0,0),
-d(1998,4,19,3,0,0),
-d(1998,9,13,4,0,0),
-d(1999,4,18,3,0,0),
-d(1999,9,12,4,0,0),
-d(2000,4,16,3,0,0),
-d(2000,9,10,4,0,0),
-d(2001,4,15,5,0,0),
-d(2001,9,2,6,0,0),
-d(2002,4,21,5,0,0),
-d(2002,9,1,6,0,0),
-d(2003,4,20,5,0,0),
-d(2003,9,7,6,0,0),
-d(2004,4,18,5,0,0),
-d(2004,9,5,6,0,0),
-d(2005,4,17,5,0,0),
-d(2005,9,4,6,0,0),
-d(2006,4,16,5,0,0),
-d(2006,9,3,6,0,0),
-d(2007,4,15,5,0,0),
-d(2007,9,2,6,0,0),
-d(2008,4,20,5,0,0),
-d(2008,9,7,6,0,0),
-d(2009,4,19,5,0,0),
-d(2009,9,6,6,0,0),
-d(2010,4,18,5,0,0),
-d(2010,9,5,6,0,0),
-d(2011,4,17,5,0,0),
-d(2011,9,4,6,0,0),
-d(2012,4,15,5,0,0),
-d(2012,9,2,6,0,0),
-d(2013,4,21,5,0,0),
-d(2013,9,1,6,0,0),
-d(2014,4,20,5,0,0),
-d(2014,9,7,6,0,0),
-d(2015,4,19,5,0,0),
-d(2015,9,6,6,0,0),
-d(2016,4,17,5,0,0),
-d(2016,9,4,6,0,0),
-d(2017,4,16,5,0,0),
-d(2017,9,3,6,0,0),
-d(2018,4,15,5,0,0),
-d(2018,9,2,6,0,0),
-d(2019,4,21,5,0,0),
-d(2019,9,1,6,0,0),
-d(2020,4,19,5,0,0),
-d(2020,9,6,6,0,0),
-d(2021,4,18,5,0,0),
-d(2021,9,5,6,0,0),
-d(2022,4,17,5,0,0),
-d(2022,9,4,6,0,0),
-d(2023,4,16,5,0,0),
-d(2023,9,3,6,0,0),
-d(2024,4,21,5,0,0),
-d(2024,9,1,6,0,0),
-d(2025,4,20,5,0,0),
-d(2025,9,7,6,0,0),
-d(2026,4,19,5,0,0),
-d(2026,9,6,6,0,0),
-d(2027,4,18,5,0,0),
-d(2027,9,5,6,0,0),
-d(2028,4,16,5,0,0),
-d(2028,9,3,6,0,0),
-d(2029,4,15,5,0,0),
-d(2029,9,2,6,0,0),
-d(2030,4,21,5,0,0),
-d(2030,9,1,6,0,0),
-d(2031,4,20,5,0,0),
-d(2031,9,7,6,0,0),
-d(2032,4,18,5,0,0),
-d(2032,9,5,6,0,0),
-d(2033,4,17,5,0,0),
-d(2033,9,4,6,0,0),
-d(2034,4,16,5,0,0),
-d(2034,9,3,6,0,0),
-d(2035,4,15,5,0,0),
-d(2035,9,2,6,0,0),
-d(2036,4,20,5,0,0),
-d(2036,9,7,6,0,0),
-d(2037,4,19,5,0,0),
-d(2037,9,6,6,0,0),
- ]
-
- _transition_info = [
-i(-13860,0,'SMT'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,0,'FKT'),
-i(-7200,3600,'FKST'),
-i(-10800,0,'FKT'),
-i(-7200,3600,'FKST'),
-i(-10800,0,'FKT'),
-i(-10800,0,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
-i(-14400,0,'FKT'),
-i(-10800,3600,'FKST'),
- ]
-
-Stanley = Stanley()
-
diff --git a/modules/pytz/zoneinfo/Atlantic/__init__.py b/modules/pytz/zoneinfo/Atlantic/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Australia/ACT.py b/modules/pytz/zoneinfo/Australia/ACT.py
deleted file mode 100644
index 26b80526..00000000
--- a/modules/pytz/zoneinfo/Australia/ACT.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/ACT.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class ACT(DstTzInfo):
- '''Australia/ACT timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/ACT'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,4,3,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,5,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,15,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
-d(1994,10,29,16,0,0),
-d(1995,3,4,16,0,0),
-d(1995,10,28,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-ACT = ACT()
-
diff --git a/modules/pytz/zoneinfo/Australia/Adelaide.py b/modules/pytz/zoneinfo/Australia/Adelaide.py
deleted file mode 100644
index 3b4056f5..00000000
--- a/modules/pytz/zoneinfo/Australia/Adelaide.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/Adelaide.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Adelaide(DstTzInfo):
- '''Australia/Adelaide timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Adelaide'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,31,0),
-d(1917,3,24,15,30,0),
-d(1941,12,31,16,30,0),
-d(1942,3,28,15,30,0),
-d(1942,9,26,16,30,0),
-d(1943,3,27,15,30,0),
-d(1943,10,2,16,30,0),
-d(1944,3,25,15,30,0),
-d(1971,10,30,16,30,0),
-d(1972,2,26,16,30,0),
-d(1972,10,28,16,30,0),
-d(1973,3,3,16,30,0),
-d(1973,10,27,16,30,0),
-d(1974,3,2,16,30,0),
-d(1974,10,26,16,30,0),
-d(1975,3,1,16,30,0),
-d(1975,10,25,16,30,0),
-d(1976,3,6,16,30,0),
-d(1976,10,30,16,30,0),
-d(1977,3,5,16,30,0),
-d(1977,10,29,16,30,0),
-d(1978,3,4,16,30,0),
-d(1978,10,28,16,30,0),
-d(1979,3,3,16,30,0),
-d(1979,10,27,16,30,0),
-d(1980,3,1,16,30,0),
-d(1980,10,25,16,30,0),
-d(1981,2,28,16,30,0),
-d(1981,10,24,16,30,0),
-d(1982,3,6,16,30,0),
-d(1982,10,30,16,30,0),
-d(1983,3,5,16,30,0),
-d(1983,10,29,16,30,0),
-d(1984,3,3,16,30,0),
-d(1984,10,27,16,30,0),
-d(1985,3,2,16,30,0),
-d(1985,10,26,16,30,0),
-d(1986,3,15,16,30,0),
-d(1986,10,18,16,30,0),
-d(1987,3,14,16,30,0),
-d(1987,10,24,16,30,0),
-d(1988,3,19,16,30,0),
-d(1988,10,29,16,30,0),
-d(1989,3,18,16,30,0),
-d(1989,10,28,16,30,0),
-d(1990,3,17,16,30,0),
-d(1990,10,27,16,30,0),
-d(1991,3,2,16,30,0),
-d(1991,10,26,16,30,0),
-d(1992,3,21,16,30,0),
-d(1992,10,24,16,30,0),
-d(1993,3,6,16,30,0),
-d(1993,10,30,16,30,0),
-d(1994,3,19,16,30,0),
-d(1994,10,29,16,30,0),
-d(1995,3,25,16,30,0),
-d(1995,10,28,16,30,0),
-d(1996,3,30,16,30,0),
-d(1996,10,26,16,30,0),
-d(1997,3,29,16,30,0),
-d(1997,10,25,16,30,0),
-d(1998,3,28,16,30,0),
-d(1998,10,24,16,30,0),
-d(1999,3,27,16,30,0),
-d(1999,10,30,16,30,0),
-d(2000,3,25,16,30,0),
-d(2000,10,28,16,30,0),
-d(2001,3,24,16,30,0),
-d(2001,10,27,16,30,0),
-d(2002,3,30,16,30,0),
-d(2002,10,26,16,30,0),
-d(2003,3,29,16,30,0),
-d(2003,10,25,16,30,0),
-d(2004,3,27,16,30,0),
-d(2004,10,30,16,30,0),
-d(2005,3,26,16,30,0),
-d(2005,10,29,16,30,0),
-d(2006,4,1,16,30,0),
-d(2006,10,28,16,30,0),
-d(2007,3,24,16,30,0),
-d(2007,10,27,16,30,0),
-d(2008,3,29,16,30,0),
-d(2008,10,25,16,30,0),
-d(2009,3,28,16,30,0),
-d(2009,10,24,16,30,0),
-d(2010,3,27,16,30,0),
-d(2010,10,30,16,30,0),
-d(2011,3,26,16,30,0),
-d(2011,10,29,16,30,0),
-d(2012,3,24,16,30,0),
-d(2012,10,27,16,30,0),
-d(2013,3,30,16,30,0),
-d(2013,10,26,16,30,0),
-d(2014,3,29,16,30,0),
-d(2014,10,25,16,30,0),
-d(2015,3,28,16,30,0),
-d(2015,10,24,16,30,0),
-d(2016,3,26,16,30,0),
-d(2016,10,29,16,30,0),
-d(2017,3,25,16,30,0),
-d(2017,10,28,16,30,0),
-d(2018,3,24,16,30,0),
-d(2018,10,27,16,30,0),
-d(2019,3,30,16,30,0),
-d(2019,10,26,16,30,0),
-d(2020,3,28,16,30,0),
-d(2020,10,24,16,30,0),
-d(2021,3,27,16,30,0),
-d(2021,10,30,16,30,0),
-d(2022,3,26,16,30,0),
-d(2022,10,29,16,30,0),
-d(2023,3,25,16,30,0),
-d(2023,10,28,16,30,0),
-d(2024,3,30,16,30,0),
-d(2024,10,26,16,30,0),
-d(2025,3,29,16,30,0),
-d(2025,10,25,16,30,0),
-d(2026,3,28,16,30,0),
-d(2026,10,24,16,30,0),
-d(2027,3,27,16,30,0),
-d(2027,10,30,16,30,0),
-d(2028,3,25,16,30,0),
-d(2028,10,28,16,30,0),
-d(2029,3,24,16,30,0),
-d(2029,10,27,16,30,0),
-d(2030,3,30,16,30,0),
-d(2030,10,26,16,30,0),
-d(2031,3,29,16,30,0),
-d(2031,10,25,16,30,0),
-d(2032,3,27,16,30,0),
-d(2032,10,30,16,30,0),
-d(2033,3,26,16,30,0),
-d(2033,10,29,16,30,0),
-d(2034,3,25,16,30,0),
-d(2034,10,28,16,30,0),
-d(2035,3,24,16,30,0),
-d(2035,10,27,16,30,0),
-d(2036,3,29,16,30,0),
-d(2036,10,25,16,30,0),
-d(2037,3,28,16,30,0),
-d(2037,10,24,16,30,0),
- ]
-
- _transition_info = [
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
- ]
-
-Adelaide = Adelaide()
-
diff --git a/modules/pytz/zoneinfo/Australia/Brisbane.py b/modules/pytz/zoneinfo/Australia/Brisbane.py
deleted file mode 100644
index 31303d9b..00000000
--- a/modules/pytz/zoneinfo/Australia/Brisbane.py
+++ /dev/null
@@ -1,52 +0,0 @@
-'''tzinfo timezone information for Australia/Brisbane.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Brisbane(DstTzInfo):
- '''Australia/Brisbane timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Brisbane'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
- ]
-
-Brisbane = Brisbane()
-
diff --git a/modules/pytz/zoneinfo/Australia/Broken_Hill.py b/modules/pytz/zoneinfo/Australia/Broken_Hill.py
deleted file mode 100644
index dfd7164f..00000000
--- a/modules/pytz/zoneinfo/Australia/Broken_Hill.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for Australia/Broken_Hill.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Broken_Hill(DstTzInfo):
- '''Australia/Broken_Hill timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Broken_Hill'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,31,0),
-d(1917,3,24,15,30,0),
-d(1941,12,31,16,30,0),
-d(1942,3,28,15,30,0),
-d(1942,9,26,16,30,0),
-d(1943,3,27,15,30,0),
-d(1943,10,2,16,30,0),
-d(1944,3,25,15,30,0),
-d(1971,10,30,16,30,0),
-d(1972,2,26,16,30,0),
-d(1972,10,28,16,30,0),
-d(1973,3,3,16,30,0),
-d(1973,10,27,16,30,0),
-d(1974,3,2,16,30,0),
-d(1974,10,26,16,30,0),
-d(1975,3,1,16,30,0),
-d(1975,10,25,16,30,0),
-d(1976,3,6,16,30,0),
-d(1976,10,30,16,30,0),
-d(1977,3,5,16,30,0),
-d(1977,10,29,16,30,0),
-d(1978,3,4,16,30,0),
-d(1978,10,28,16,30,0),
-d(1979,3,3,16,30,0),
-d(1979,10,27,16,30,0),
-d(1980,3,1,16,30,0),
-d(1980,10,25,16,30,0),
-d(1981,2,28,16,30,0),
-d(1981,10,24,16,30,0),
-d(1982,4,3,16,30,0),
-d(1982,10,30,16,30,0),
-d(1983,3,5,16,30,0),
-d(1983,10,29,16,30,0),
-d(1984,3,3,16,30,0),
-d(1984,10,27,16,30,0),
-d(1985,3,2,16,30,0),
-d(1985,10,26,16,30,0),
-d(1986,3,15,16,30,0),
-d(1986,10,18,16,30,0),
-d(1987,3,14,16,30,0),
-d(1987,10,24,16,30,0),
-d(1988,3,19,16,30,0),
-d(1988,10,29,16,30,0),
-d(1989,3,18,16,30,0),
-d(1989,10,28,16,30,0),
-d(1990,3,3,16,30,0),
-d(1990,10,27,16,30,0),
-d(1991,3,2,16,30,0),
-d(1991,10,26,16,30,0),
-d(1992,2,29,16,30,0),
-d(1992,10,24,16,30,0),
-d(1993,3,6,16,30,0),
-d(1993,10,30,16,30,0),
-d(1994,3,5,16,30,0),
-d(1994,10,29,16,30,0),
-d(1995,3,4,16,30,0),
-d(1995,10,28,16,30,0),
-d(1996,3,30,16,30,0),
-d(1996,10,26,16,30,0),
-d(1997,3,29,16,30,0),
-d(1997,10,25,16,30,0),
-d(1998,3,28,16,30,0),
-d(1998,10,24,16,30,0),
-d(1999,3,27,16,30,0),
-d(1999,10,30,16,30,0),
-d(1999,12,31,13,30,0),
-d(2000,3,25,16,30,0),
-d(2000,10,28,16,30,0),
-d(2001,3,24,16,30,0),
-d(2001,10,27,16,30,0),
-d(2002,3,30,16,30,0),
-d(2002,10,26,16,30,0),
-d(2003,3,29,16,30,0),
-d(2003,10,25,16,30,0),
-d(2004,3,27,16,30,0),
-d(2004,10,30,16,30,0),
-d(2005,3,26,16,30,0),
-d(2005,10,29,16,30,0),
-d(2006,4,1,16,30,0),
-d(2006,10,28,16,30,0),
-d(2007,3,24,16,30,0),
-d(2007,10,27,16,30,0),
-d(2008,3,29,16,30,0),
-d(2008,10,25,16,30,0),
-d(2009,3,28,16,30,0),
-d(2009,10,24,16,30,0),
-d(2010,3,27,16,30,0),
-d(2010,10,30,16,30,0),
-d(2011,3,26,16,30,0),
-d(2011,10,29,16,30,0),
-d(2012,3,24,16,30,0),
-d(2012,10,27,16,30,0),
-d(2013,3,30,16,30,0),
-d(2013,10,26,16,30,0),
-d(2014,3,29,16,30,0),
-d(2014,10,25,16,30,0),
-d(2015,3,28,16,30,0),
-d(2015,10,24,16,30,0),
-d(2016,3,26,16,30,0),
-d(2016,10,29,16,30,0),
-d(2017,3,25,16,30,0),
-d(2017,10,28,16,30,0),
-d(2018,3,24,16,30,0),
-d(2018,10,27,16,30,0),
-d(2019,3,30,16,30,0),
-d(2019,10,26,16,30,0),
-d(2020,3,28,16,30,0),
-d(2020,10,24,16,30,0),
-d(2021,3,27,16,30,0),
-d(2021,10,30,16,30,0),
-d(2022,3,26,16,30,0),
-d(2022,10,29,16,30,0),
-d(2023,3,25,16,30,0),
-d(2023,10,28,16,30,0),
-d(2024,3,30,16,30,0),
-d(2024,10,26,16,30,0),
-d(2025,3,29,16,30,0),
-d(2025,10,25,16,30,0),
-d(2026,3,28,16,30,0),
-d(2026,10,24,16,30,0),
-d(2027,3,27,16,30,0),
-d(2027,10,30,16,30,0),
-d(2028,3,25,16,30,0),
-d(2028,10,28,16,30,0),
-d(2029,3,24,16,30,0),
-d(2029,10,27,16,30,0),
-d(2030,3,30,16,30,0),
-d(2030,10,26,16,30,0),
-d(2031,3,29,16,30,0),
-d(2031,10,25,16,30,0),
-d(2032,3,27,16,30,0),
-d(2032,10,30,16,30,0),
-d(2033,3,26,16,30,0),
-d(2033,10,29,16,30,0),
-d(2034,3,25,16,30,0),
-d(2034,10,28,16,30,0),
-d(2035,3,24,16,30,0),
-d(2035,10,27,16,30,0),
-d(2036,3,29,16,30,0),
-d(2036,10,25,16,30,0),
-d(2037,3,28,16,30,0),
-d(2037,10,24,16,30,0),
- ]
-
- _transition_info = [
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
- ]
-
-Broken_Hill = Broken_Hill()
-
diff --git a/modules/pytz/zoneinfo/Australia/Canberra.py b/modules/pytz/zoneinfo/Australia/Canberra.py
deleted file mode 100644
index 492137fa..00000000
--- a/modules/pytz/zoneinfo/Australia/Canberra.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/Canberra.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Canberra(DstTzInfo):
- '''Australia/Canberra timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Canberra'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,4,3,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,5,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,15,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
-d(1994,10,29,16,0,0),
-d(1995,3,4,16,0,0),
-d(1995,10,28,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Canberra = Canberra()
-
diff --git a/modules/pytz/zoneinfo/Australia/Currie.py b/modules/pytz/zoneinfo/Australia/Currie.py
deleted file mode 100644
index 604b2f75..00000000
--- a/modules/pytz/zoneinfo/Australia/Currie.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/Currie.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Currie(DstTzInfo):
- '''Australia/Currie timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Currie'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,9,30,16,0,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,3,27,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,26,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,1,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,17,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,30,16,0,0),
-d(1991,10,5,16,0,0),
-d(1992,3,28,16,0,0),
-d(1992,10,3,16,0,0),
-d(1993,3,27,16,0,0),
-d(1993,10,2,16,0,0),
-d(1994,3,26,16,0,0),
-d(1994,10,1,16,0,0),
-d(1995,3,25,16,0,0),
-d(1995,9,30,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,5,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,4,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,3,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,2,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,6,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,5,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,4,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,2,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,1,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,9,30,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,6,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,4,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,3,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,2,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,1,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,6,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,5,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,4,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,3,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,1,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,9,30,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,6,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,5,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,3,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,2,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,1,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,9,30,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,5,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,4,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,3,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,2,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,9,30,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,6,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,5,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,4,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,2,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,1,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,9,30,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,6,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,4,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,3,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Currie = Currie()
-
diff --git a/modules/pytz/zoneinfo/Australia/Darwin.py b/modules/pytz/zoneinfo/Australia/Darwin.py
deleted file mode 100644
index d5113c80..00000000
--- a/modules/pytz/zoneinfo/Australia/Darwin.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''tzinfo timezone information for Australia/Darwin.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Darwin(DstTzInfo):
- '''Australia/Darwin timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Darwin'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,31,0),
-d(1917,3,24,15,30,0),
-d(1941,12,31,16,30,0),
-d(1942,3,28,15,30,0),
-d(1942,9,26,16,30,0),
-d(1943,3,27,15,30,0),
-d(1943,10,2,16,30,0),
-d(1944,3,25,15,30,0),
- ]
-
- _transition_info = [
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
- ]
-
-Darwin = Darwin()
-
diff --git a/modules/pytz/zoneinfo/Australia/Hobart.py b/modules/pytz/zoneinfo/Australia/Hobart.py
deleted file mode 100644
index 63637312..00000000
--- a/modules/pytz/zoneinfo/Australia/Hobart.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for Australia/Hobart.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Hobart(DstTzInfo):
- '''Australia/Hobart timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Hobart'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,9,30,16,0,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1967,9,30,16,0,0),
-d(1968,3,30,16,0,0),
-d(1968,10,26,16,0,0),
-d(1969,3,8,16,0,0),
-d(1969,10,25,16,0,0),
-d(1970,3,7,16,0,0),
-d(1970,10,24,16,0,0),
-d(1971,3,13,16,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,3,27,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,26,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,1,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,17,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,30,16,0,0),
-d(1991,10,5,16,0,0),
-d(1992,3,28,16,0,0),
-d(1992,10,3,16,0,0),
-d(1993,3,27,16,0,0),
-d(1993,10,2,16,0,0),
-d(1994,3,26,16,0,0),
-d(1994,10,1,16,0,0),
-d(1995,3,25,16,0,0),
-d(1995,9,30,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,5,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,4,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,3,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,2,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,6,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,5,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,4,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,2,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,1,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,9,30,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,6,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,4,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,3,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,2,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,1,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,6,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,5,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,4,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,3,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,1,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,9,30,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,6,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,5,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,3,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,2,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,1,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,9,30,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,5,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,4,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,3,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,2,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,9,30,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,6,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,5,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,4,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,2,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,1,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,9,30,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,6,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,4,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,3,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Hobart = Hobart()
-
diff --git a/modules/pytz/zoneinfo/Australia/LHI.py b/modules/pytz/zoneinfo/Australia/LHI.py
deleted file mode 100644
index 9eabe245..00000000
--- a/modules/pytz/zoneinfo/Australia/LHI.py
+++ /dev/null
@@ -1,248 +0,0 @@
-'''tzinfo timezone information for Australia/LHI.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class LHI(DstTzInfo):
- '''Australia/LHI timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/LHI'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,15,30,0),
-d(1982,3,6,14,30,0),
-d(1982,10,30,15,30,0),
-d(1983,3,5,14,30,0),
-d(1983,10,29,15,30,0),
-d(1984,3,3,14,30,0),
-d(1984,10,27,15,30,0),
-d(1985,3,2,14,30,0),
-d(1985,10,26,15,30,0),
-d(1986,3,15,15,0,0),
-d(1986,10,18,15,30,0),
-d(1987,3,14,15,0,0),
-d(1987,10,24,15,30,0),
-d(1988,3,19,15,0,0),
-d(1988,10,29,15,30,0),
-d(1989,3,18,15,0,0),
-d(1989,10,28,15,30,0),
-d(1990,3,3,15,0,0),
-d(1990,10,27,15,30,0),
-d(1991,3,2,15,0,0),
-d(1991,10,26,15,30,0),
-d(1992,2,29,15,0,0),
-d(1992,10,24,15,30,0),
-d(1993,3,6,15,0,0),
-d(1993,10,30,15,30,0),
-d(1994,3,5,15,0,0),
-d(1994,10,29,15,30,0),
-d(1995,3,4,15,0,0),
-d(1995,10,28,15,30,0),
-d(1996,3,30,15,0,0),
-d(1996,10,26,15,30,0),
-d(1997,3,29,15,0,0),
-d(1997,10,25,15,30,0),
-d(1998,3,28,15,0,0),
-d(1998,10,24,15,30,0),
-d(1999,3,27,15,0,0),
-d(1999,10,30,15,30,0),
-d(2000,3,25,15,0,0),
-d(2000,8,26,15,30,0),
-d(2001,3,24,15,0,0),
-d(2001,10,27,15,30,0),
-d(2002,3,30,15,0,0),
-d(2002,10,26,15,30,0),
-d(2003,3,29,15,0,0),
-d(2003,10,25,15,30,0),
-d(2004,3,27,15,0,0),
-d(2004,10,30,15,30,0),
-d(2005,3,26,15,0,0),
-d(2005,10,29,15,30,0),
-d(2006,4,1,15,0,0),
-d(2006,10,28,15,30,0),
-d(2007,3,24,15,0,0),
-d(2007,10,27,15,30,0),
-d(2008,3,29,15,0,0),
-d(2008,10,25,15,30,0),
-d(2009,3,28,15,0,0),
-d(2009,10,24,15,30,0),
-d(2010,3,27,15,0,0),
-d(2010,10,30,15,30,0),
-d(2011,3,26,15,0,0),
-d(2011,10,29,15,30,0),
-d(2012,3,24,15,0,0),
-d(2012,10,27,15,30,0),
-d(2013,3,30,15,0,0),
-d(2013,10,26,15,30,0),
-d(2014,3,29,15,0,0),
-d(2014,10,25,15,30,0),
-d(2015,3,28,15,0,0),
-d(2015,10,24,15,30,0),
-d(2016,3,26,15,0,0),
-d(2016,10,29,15,30,0),
-d(2017,3,25,15,0,0),
-d(2017,10,28,15,30,0),
-d(2018,3,24,15,0,0),
-d(2018,10,27,15,30,0),
-d(2019,3,30,15,0,0),
-d(2019,10,26,15,30,0),
-d(2020,3,28,15,0,0),
-d(2020,10,24,15,30,0),
-d(2021,3,27,15,0,0),
-d(2021,10,30,15,30,0),
-d(2022,3,26,15,0,0),
-d(2022,10,29,15,30,0),
-d(2023,3,25,15,0,0),
-d(2023,10,28,15,30,0),
-d(2024,3,30,15,0,0),
-d(2024,10,26,15,30,0),
-d(2025,3,29,15,0,0),
-d(2025,10,25,15,30,0),
-d(2026,3,28,15,0,0),
-d(2026,10,24,15,30,0),
-d(2027,3,27,15,0,0),
-d(2027,10,30,15,30,0),
-d(2028,3,25,15,0,0),
-d(2028,10,28,15,30,0),
-d(2029,3,24,15,0,0),
-d(2029,10,27,15,30,0),
-d(2030,3,30,15,0,0),
-d(2030,10,26,15,30,0),
-d(2031,3,29,15,0,0),
-d(2031,10,25,15,30,0),
-d(2032,3,27,15,0,0),
-d(2032,10,30,15,30,0),
-d(2033,3,26,15,0,0),
-d(2033,10,29,15,30,0),
-d(2034,3,25,15,0,0),
-d(2034,10,28,15,30,0),
-d(2035,3,24,15,0,0),
-d(2035,10,27,15,30,0),
-d(2036,3,29,15,0,0),
-d(2036,10,25,15,30,0),
-d(2037,3,28,15,0,0),
-d(2037,10,24,15,30,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
- ]
-
-LHI = LHI()
-
diff --git a/modules/pytz/zoneinfo/Australia/Lindeman.py b/modules/pytz/zoneinfo/Australia/Lindeman.py
deleted file mode 100644
index 8b43a9e4..00000000
--- a/modules/pytz/zoneinfo/Australia/Lindeman.py
+++ /dev/null
@@ -1,62 +0,0 @@
-'''tzinfo timezone information for Australia/Lindeman.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Lindeman(DstTzInfo):
- '''Australia/Lindeman timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Lindeman'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,6,30,14,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
- ]
-
-Lindeman = Lindeman()
-
diff --git a/modules/pytz/zoneinfo/Australia/Lord_Howe.py b/modules/pytz/zoneinfo/Australia/Lord_Howe.py
deleted file mode 100644
index 95acf6bc..00000000
--- a/modules/pytz/zoneinfo/Australia/Lord_Howe.py
+++ /dev/null
@@ -1,248 +0,0 @@
-'''tzinfo timezone information for Australia/Lord_Howe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Lord_Howe(DstTzInfo):
- '''Australia/Lord_Howe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Lord_Howe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,15,30,0),
-d(1982,3,6,14,30,0),
-d(1982,10,30,15,30,0),
-d(1983,3,5,14,30,0),
-d(1983,10,29,15,30,0),
-d(1984,3,3,14,30,0),
-d(1984,10,27,15,30,0),
-d(1985,3,2,14,30,0),
-d(1985,10,26,15,30,0),
-d(1986,3,15,15,0,0),
-d(1986,10,18,15,30,0),
-d(1987,3,14,15,0,0),
-d(1987,10,24,15,30,0),
-d(1988,3,19,15,0,0),
-d(1988,10,29,15,30,0),
-d(1989,3,18,15,0,0),
-d(1989,10,28,15,30,0),
-d(1990,3,3,15,0,0),
-d(1990,10,27,15,30,0),
-d(1991,3,2,15,0,0),
-d(1991,10,26,15,30,0),
-d(1992,2,29,15,0,0),
-d(1992,10,24,15,30,0),
-d(1993,3,6,15,0,0),
-d(1993,10,30,15,30,0),
-d(1994,3,5,15,0,0),
-d(1994,10,29,15,30,0),
-d(1995,3,4,15,0,0),
-d(1995,10,28,15,30,0),
-d(1996,3,30,15,0,0),
-d(1996,10,26,15,30,0),
-d(1997,3,29,15,0,0),
-d(1997,10,25,15,30,0),
-d(1998,3,28,15,0,0),
-d(1998,10,24,15,30,0),
-d(1999,3,27,15,0,0),
-d(1999,10,30,15,30,0),
-d(2000,3,25,15,0,0),
-d(2000,8,26,15,30,0),
-d(2001,3,24,15,0,0),
-d(2001,10,27,15,30,0),
-d(2002,3,30,15,0,0),
-d(2002,10,26,15,30,0),
-d(2003,3,29,15,0,0),
-d(2003,10,25,15,30,0),
-d(2004,3,27,15,0,0),
-d(2004,10,30,15,30,0),
-d(2005,3,26,15,0,0),
-d(2005,10,29,15,30,0),
-d(2006,4,1,15,0,0),
-d(2006,10,28,15,30,0),
-d(2007,3,24,15,0,0),
-d(2007,10,27,15,30,0),
-d(2008,3,29,15,0,0),
-d(2008,10,25,15,30,0),
-d(2009,3,28,15,0,0),
-d(2009,10,24,15,30,0),
-d(2010,3,27,15,0,0),
-d(2010,10,30,15,30,0),
-d(2011,3,26,15,0,0),
-d(2011,10,29,15,30,0),
-d(2012,3,24,15,0,0),
-d(2012,10,27,15,30,0),
-d(2013,3,30,15,0,0),
-d(2013,10,26,15,30,0),
-d(2014,3,29,15,0,0),
-d(2014,10,25,15,30,0),
-d(2015,3,28,15,0,0),
-d(2015,10,24,15,30,0),
-d(2016,3,26,15,0,0),
-d(2016,10,29,15,30,0),
-d(2017,3,25,15,0,0),
-d(2017,10,28,15,30,0),
-d(2018,3,24,15,0,0),
-d(2018,10,27,15,30,0),
-d(2019,3,30,15,0,0),
-d(2019,10,26,15,30,0),
-d(2020,3,28,15,0,0),
-d(2020,10,24,15,30,0),
-d(2021,3,27,15,0,0),
-d(2021,10,30,15,30,0),
-d(2022,3,26,15,0,0),
-d(2022,10,29,15,30,0),
-d(2023,3,25,15,0,0),
-d(2023,10,28,15,30,0),
-d(2024,3,30,15,0,0),
-d(2024,10,26,15,30,0),
-d(2025,3,29,15,0,0),
-d(2025,10,25,15,30,0),
-d(2026,3,28,15,0,0),
-d(2026,10,24,15,30,0),
-d(2027,3,27,15,0,0),
-d(2027,10,30,15,30,0),
-d(2028,3,25,15,0,0),
-d(2028,10,28,15,30,0),
-d(2029,3,24,15,0,0),
-d(2029,10,27,15,30,0),
-d(2030,3,30,15,0,0),
-d(2030,10,26,15,30,0),
-d(2031,3,29,15,0,0),
-d(2031,10,25,15,30,0),
-d(2032,3,27,15,0,0),
-d(2032,10,30,15,30,0),
-d(2033,3,26,15,0,0),
-d(2033,10,29,15,30,0),
-d(2034,3,25,15,0,0),
-d(2034,10,28,15,30,0),
-d(2035,3,24,15,0,0),
-d(2035,10,27,15,30,0),
-d(2036,3,29,15,0,0),
-d(2036,10,25,15,30,0),
-d(2037,3,28,15,0,0),
-d(2037,10,24,15,30,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(41400,3600,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
-i(37800,0,'LHST'),
-i(39600,1800,'LHST'),
- ]
-
-Lord_Howe = Lord_Howe()
-
diff --git a/modules/pytz/zoneinfo/Australia/Melbourne.py b/modules/pytz/zoneinfo/Australia/Melbourne.py
deleted file mode 100644
index a6cde240..00000000
--- a/modules/pytz/zoneinfo/Australia/Melbourne.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/Melbourne.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Melbourne(DstTzInfo):
- '''Australia/Melbourne timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Melbourne'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,3,6,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,5,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,15,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,17,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,17,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
-d(1994,10,29,16,0,0),
-d(1995,3,25,16,0,0),
-d(1995,10,28,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Melbourne = Melbourne()
-
diff --git a/modules/pytz/zoneinfo/Australia/NSW.py b/modules/pytz/zoneinfo/Australia/NSW.py
deleted file mode 100644
index 6a821dfb..00000000
--- a/modules/pytz/zoneinfo/Australia/NSW.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/NSW.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class NSW(DstTzInfo):
- '''Australia/NSW timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/NSW'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,4,3,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,5,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,15,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
-d(1994,10,29,16,0,0),
-d(1995,3,4,16,0,0),
-d(1995,10,28,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-NSW = NSW()
-
diff --git a/modules/pytz/zoneinfo/Australia/North.py b/modules/pytz/zoneinfo/Australia/North.py
deleted file mode 100644
index 5ce0f278..00000000
--- a/modules/pytz/zoneinfo/Australia/North.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''tzinfo timezone information for Australia/North.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class North(DstTzInfo):
- '''Australia/North timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/North'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,31,0),
-d(1917,3,24,15,30,0),
-d(1941,12,31,16,30,0),
-d(1942,3,28,15,30,0),
-d(1942,9,26,16,30,0),
-d(1943,3,27,15,30,0),
-d(1943,10,2,16,30,0),
-d(1944,3,25,15,30,0),
- ]
-
- _transition_info = [
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
- ]
-
-North = North()
-
diff --git a/modules/pytz/zoneinfo/Australia/Perth.py b/modules/pytz/zoneinfo/Australia/Perth.py
deleted file mode 100644
index 90a536d5..00000000
--- a/modules/pytz/zoneinfo/Australia/Perth.py
+++ /dev/null
@@ -1,44 +0,0 @@
-'''tzinfo timezone information for Australia/Perth.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Perth(DstTzInfo):
- '''Australia/Perth timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Perth'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,16,1,0),
-d(1917,3,24,17,0,0),
-d(1941,12,31,18,0,0),
-d(1942,3,28,17,0,0),
-d(1942,9,26,18,0,0),
-d(1943,3,27,17,0,0),
-d(1974,10,26,18,0,0),
-d(1975,3,1,18,0,0),
-d(1983,10,29,18,0,0),
-d(1984,3,3,18,0,0),
-d(1991,11,16,18,0,0),
-d(1992,2,29,18,0,0),
- ]
-
- _transition_info = [
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
- ]
-
-Perth = Perth()
-
diff --git a/modules/pytz/zoneinfo/Australia/Queensland.py b/modules/pytz/zoneinfo/Australia/Queensland.py
deleted file mode 100644
index 248d5f54..00000000
--- a/modules/pytz/zoneinfo/Australia/Queensland.py
+++ /dev/null
@@ -1,52 +0,0 @@
-'''tzinfo timezone information for Australia/Queensland.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Queensland(DstTzInfo):
- '''Australia/Queensland timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Queensland'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
- ]
-
-Queensland = Queensland()
-
diff --git a/modules/pytz/zoneinfo/Australia/South.py b/modules/pytz/zoneinfo/Australia/South.py
deleted file mode 100644
index 040489b2..00000000
--- a/modules/pytz/zoneinfo/Australia/South.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/South.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class South(DstTzInfo):
- '''Australia/South timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/South'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,31,0),
-d(1917,3,24,15,30,0),
-d(1941,12,31,16,30,0),
-d(1942,3,28,15,30,0),
-d(1942,9,26,16,30,0),
-d(1943,3,27,15,30,0),
-d(1943,10,2,16,30,0),
-d(1944,3,25,15,30,0),
-d(1971,10,30,16,30,0),
-d(1972,2,26,16,30,0),
-d(1972,10,28,16,30,0),
-d(1973,3,3,16,30,0),
-d(1973,10,27,16,30,0),
-d(1974,3,2,16,30,0),
-d(1974,10,26,16,30,0),
-d(1975,3,1,16,30,0),
-d(1975,10,25,16,30,0),
-d(1976,3,6,16,30,0),
-d(1976,10,30,16,30,0),
-d(1977,3,5,16,30,0),
-d(1977,10,29,16,30,0),
-d(1978,3,4,16,30,0),
-d(1978,10,28,16,30,0),
-d(1979,3,3,16,30,0),
-d(1979,10,27,16,30,0),
-d(1980,3,1,16,30,0),
-d(1980,10,25,16,30,0),
-d(1981,2,28,16,30,0),
-d(1981,10,24,16,30,0),
-d(1982,3,6,16,30,0),
-d(1982,10,30,16,30,0),
-d(1983,3,5,16,30,0),
-d(1983,10,29,16,30,0),
-d(1984,3,3,16,30,0),
-d(1984,10,27,16,30,0),
-d(1985,3,2,16,30,0),
-d(1985,10,26,16,30,0),
-d(1986,3,15,16,30,0),
-d(1986,10,18,16,30,0),
-d(1987,3,14,16,30,0),
-d(1987,10,24,16,30,0),
-d(1988,3,19,16,30,0),
-d(1988,10,29,16,30,0),
-d(1989,3,18,16,30,0),
-d(1989,10,28,16,30,0),
-d(1990,3,17,16,30,0),
-d(1990,10,27,16,30,0),
-d(1991,3,2,16,30,0),
-d(1991,10,26,16,30,0),
-d(1992,3,21,16,30,0),
-d(1992,10,24,16,30,0),
-d(1993,3,6,16,30,0),
-d(1993,10,30,16,30,0),
-d(1994,3,19,16,30,0),
-d(1994,10,29,16,30,0),
-d(1995,3,25,16,30,0),
-d(1995,10,28,16,30,0),
-d(1996,3,30,16,30,0),
-d(1996,10,26,16,30,0),
-d(1997,3,29,16,30,0),
-d(1997,10,25,16,30,0),
-d(1998,3,28,16,30,0),
-d(1998,10,24,16,30,0),
-d(1999,3,27,16,30,0),
-d(1999,10,30,16,30,0),
-d(2000,3,25,16,30,0),
-d(2000,10,28,16,30,0),
-d(2001,3,24,16,30,0),
-d(2001,10,27,16,30,0),
-d(2002,3,30,16,30,0),
-d(2002,10,26,16,30,0),
-d(2003,3,29,16,30,0),
-d(2003,10,25,16,30,0),
-d(2004,3,27,16,30,0),
-d(2004,10,30,16,30,0),
-d(2005,3,26,16,30,0),
-d(2005,10,29,16,30,0),
-d(2006,4,1,16,30,0),
-d(2006,10,28,16,30,0),
-d(2007,3,24,16,30,0),
-d(2007,10,27,16,30,0),
-d(2008,3,29,16,30,0),
-d(2008,10,25,16,30,0),
-d(2009,3,28,16,30,0),
-d(2009,10,24,16,30,0),
-d(2010,3,27,16,30,0),
-d(2010,10,30,16,30,0),
-d(2011,3,26,16,30,0),
-d(2011,10,29,16,30,0),
-d(2012,3,24,16,30,0),
-d(2012,10,27,16,30,0),
-d(2013,3,30,16,30,0),
-d(2013,10,26,16,30,0),
-d(2014,3,29,16,30,0),
-d(2014,10,25,16,30,0),
-d(2015,3,28,16,30,0),
-d(2015,10,24,16,30,0),
-d(2016,3,26,16,30,0),
-d(2016,10,29,16,30,0),
-d(2017,3,25,16,30,0),
-d(2017,10,28,16,30,0),
-d(2018,3,24,16,30,0),
-d(2018,10,27,16,30,0),
-d(2019,3,30,16,30,0),
-d(2019,10,26,16,30,0),
-d(2020,3,28,16,30,0),
-d(2020,10,24,16,30,0),
-d(2021,3,27,16,30,0),
-d(2021,10,30,16,30,0),
-d(2022,3,26,16,30,0),
-d(2022,10,29,16,30,0),
-d(2023,3,25,16,30,0),
-d(2023,10,28,16,30,0),
-d(2024,3,30,16,30,0),
-d(2024,10,26,16,30,0),
-d(2025,3,29,16,30,0),
-d(2025,10,25,16,30,0),
-d(2026,3,28,16,30,0),
-d(2026,10,24,16,30,0),
-d(2027,3,27,16,30,0),
-d(2027,10,30,16,30,0),
-d(2028,3,25,16,30,0),
-d(2028,10,28,16,30,0),
-d(2029,3,24,16,30,0),
-d(2029,10,27,16,30,0),
-d(2030,3,30,16,30,0),
-d(2030,10,26,16,30,0),
-d(2031,3,29,16,30,0),
-d(2031,10,25,16,30,0),
-d(2032,3,27,16,30,0),
-d(2032,10,30,16,30,0),
-d(2033,3,26,16,30,0),
-d(2033,10,29,16,30,0),
-d(2034,3,25,16,30,0),
-d(2034,10,28,16,30,0),
-d(2035,3,24,16,30,0),
-d(2035,10,27,16,30,0),
-d(2036,3,29,16,30,0),
-d(2036,10,25,16,30,0),
-d(2037,3,28,16,30,0),
-d(2037,10,24,16,30,0),
- ]
-
- _transition_info = [
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
- ]
-
-South = South()
-
diff --git a/modules/pytz/zoneinfo/Australia/Sydney.py b/modules/pytz/zoneinfo/Australia/Sydney.py
deleted file mode 100644
index 0aba0178..00000000
--- a/modules/pytz/zoneinfo/Australia/Sydney.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/Sydney.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Sydney(DstTzInfo):
- '''Australia/Sydney timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Sydney'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,4,3,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,5,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,15,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,3,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
-d(1994,10,29,16,0,0),
-d(1995,3,4,16,0,0),
-d(1995,10,28,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Sydney = Sydney()
-
diff --git a/modules/pytz/zoneinfo/Australia/Tasmania.py b/modules/pytz/zoneinfo/Australia/Tasmania.py
deleted file mode 100644
index a16d293d..00000000
--- a/modules/pytz/zoneinfo/Australia/Tasmania.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for Australia/Tasmania.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tasmania(DstTzInfo):
- '''Australia/Tasmania timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Tasmania'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,9,30,16,0,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1967,9,30,16,0,0),
-d(1968,3,30,16,0,0),
-d(1968,10,26,16,0,0),
-d(1969,3,8,16,0,0),
-d(1969,10,25,16,0,0),
-d(1970,3,7,16,0,0),
-d(1970,10,24,16,0,0),
-d(1971,3,13,16,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,3,27,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,26,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,1,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,24,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,17,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,30,16,0,0),
-d(1991,10,5,16,0,0),
-d(1992,3,28,16,0,0),
-d(1992,10,3,16,0,0),
-d(1993,3,27,16,0,0),
-d(1993,10,2,16,0,0),
-d(1994,3,26,16,0,0),
-d(1994,10,1,16,0,0),
-d(1995,3,25,16,0,0),
-d(1995,9,30,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,5,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,4,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,3,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,2,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,6,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,5,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,4,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,2,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,1,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,9,30,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,6,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,4,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,3,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,2,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,1,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,6,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,5,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,4,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,3,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,1,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,9,30,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,6,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,5,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,3,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,2,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,1,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,9,30,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,5,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,4,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,3,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,2,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,9,30,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,6,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,5,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,4,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,2,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,1,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,9,30,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,6,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,4,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,3,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Tasmania = Tasmania()
-
diff --git a/modules/pytz/zoneinfo/Australia/Victoria.py b/modules/pytz/zoneinfo/Australia/Victoria.py
deleted file mode 100644
index 7ce55b5d..00000000
--- a/modules/pytz/zoneinfo/Australia/Victoria.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Australia/Victoria.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Victoria(DstTzInfo):
- '''Australia/Victoria timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Victoria'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,1,0),
-d(1917,3,24,15,0,0),
-d(1941,12,31,16,0,0),
-d(1942,3,28,15,0,0),
-d(1942,9,26,16,0,0),
-d(1943,3,27,15,0,0),
-d(1943,10,2,16,0,0),
-d(1944,3,25,15,0,0),
-d(1971,10,30,16,0,0),
-d(1972,2,26,16,0,0),
-d(1972,10,28,16,0,0),
-d(1973,3,3,16,0,0),
-d(1973,10,27,16,0,0),
-d(1974,3,2,16,0,0),
-d(1974,10,26,16,0,0),
-d(1975,3,1,16,0,0),
-d(1975,10,25,16,0,0),
-d(1976,3,6,16,0,0),
-d(1976,10,30,16,0,0),
-d(1977,3,5,16,0,0),
-d(1977,10,29,16,0,0),
-d(1978,3,4,16,0,0),
-d(1978,10,28,16,0,0),
-d(1979,3,3,16,0,0),
-d(1979,10,27,16,0,0),
-d(1980,3,1,16,0,0),
-d(1980,10,25,16,0,0),
-d(1981,2,28,16,0,0),
-d(1981,10,24,16,0,0),
-d(1982,3,6,16,0,0),
-d(1982,10,30,16,0,0),
-d(1983,3,5,16,0,0),
-d(1983,10,29,16,0,0),
-d(1984,3,3,16,0,0),
-d(1984,10,27,16,0,0),
-d(1985,3,2,16,0,0),
-d(1985,10,26,16,0,0),
-d(1986,3,15,16,0,0),
-d(1986,10,18,16,0,0),
-d(1987,3,14,16,0,0),
-d(1987,10,17,16,0,0),
-d(1988,3,19,16,0,0),
-d(1988,10,29,16,0,0),
-d(1989,3,18,16,0,0),
-d(1989,10,28,16,0,0),
-d(1990,3,17,16,0,0),
-d(1990,10,27,16,0,0),
-d(1991,3,2,16,0,0),
-d(1991,10,26,16,0,0),
-d(1992,2,29,16,0,0),
-d(1992,10,24,16,0,0),
-d(1993,3,6,16,0,0),
-d(1993,10,30,16,0,0),
-d(1994,3,5,16,0,0),
-d(1994,10,29,16,0,0),
-d(1995,3,25,16,0,0),
-d(1995,10,28,16,0,0),
-d(1996,3,30,16,0,0),
-d(1996,10,26,16,0,0),
-d(1997,3,29,16,0,0),
-d(1997,10,25,16,0,0),
-d(1998,3,28,16,0,0),
-d(1998,10,24,16,0,0),
-d(1999,3,27,16,0,0),
-d(1999,10,30,16,0,0),
-d(2000,3,25,16,0,0),
-d(2000,8,26,16,0,0),
-d(2001,3,24,16,0,0),
-d(2001,10,27,16,0,0),
-d(2002,3,30,16,0,0),
-d(2002,10,26,16,0,0),
-d(2003,3,29,16,0,0),
-d(2003,10,25,16,0,0),
-d(2004,3,27,16,0,0),
-d(2004,10,30,16,0,0),
-d(2005,3,26,16,0,0),
-d(2005,10,29,16,0,0),
-d(2006,4,1,16,0,0),
-d(2006,10,28,16,0,0),
-d(2007,3,24,16,0,0),
-d(2007,10,27,16,0,0),
-d(2008,3,29,16,0,0),
-d(2008,10,25,16,0,0),
-d(2009,3,28,16,0,0),
-d(2009,10,24,16,0,0),
-d(2010,3,27,16,0,0),
-d(2010,10,30,16,0,0),
-d(2011,3,26,16,0,0),
-d(2011,10,29,16,0,0),
-d(2012,3,24,16,0,0),
-d(2012,10,27,16,0,0),
-d(2013,3,30,16,0,0),
-d(2013,10,26,16,0,0),
-d(2014,3,29,16,0,0),
-d(2014,10,25,16,0,0),
-d(2015,3,28,16,0,0),
-d(2015,10,24,16,0,0),
-d(2016,3,26,16,0,0),
-d(2016,10,29,16,0,0),
-d(2017,3,25,16,0,0),
-d(2017,10,28,16,0,0),
-d(2018,3,24,16,0,0),
-d(2018,10,27,16,0,0),
-d(2019,3,30,16,0,0),
-d(2019,10,26,16,0,0),
-d(2020,3,28,16,0,0),
-d(2020,10,24,16,0,0),
-d(2021,3,27,16,0,0),
-d(2021,10,30,16,0,0),
-d(2022,3,26,16,0,0),
-d(2022,10,29,16,0,0),
-d(2023,3,25,16,0,0),
-d(2023,10,28,16,0,0),
-d(2024,3,30,16,0,0),
-d(2024,10,26,16,0,0),
-d(2025,3,29,16,0,0),
-d(2025,10,25,16,0,0),
-d(2026,3,28,16,0,0),
-d(2026,10,24,16,0,0),
-d(2027,3,27,16,0,0),
-d(2027,10,30,16,0,0),
-d(2028,3,25,16,0,0),
-d(2028,10,28,16,0,0),
-d(2029,3,24,16,0,0),
-d(2029,10,27,16,0,0),
-d(2030,3,30,16,0,0),
-d(2030,10,26,16,0,0),
-d(2031,3,29,16,0,0),
-d(2031,10,25,16,0,0),
-d(2032,3,27,16,0,0),
-d(2032,10,30,16,0,0),
-d(2033,3,26,16,0,0),
-d(2033,10,29,16,0,0),
-d(2034,3,25,16,0,0),
-d(2034,10,28,16,0,0),
-d(2035,3,24,16,0,0),
-d(2035,10,27,16,0,0),
-d(2036,3,29,16,0,0),
-d(2036,10,25,16,0,0),
-d(2037,3,28,16,0,0),
-d(2037,10,24,16,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
-i(36000,0,'EST'),
-i(39600,3600,'EST'),
- ]
-
-Victoria = Victoria()
-
diff --git a/modules/pytz/zoneinfo/Australia/West.py b/modules/pytz/zoneinfo/Australia/West.py
deleted file mode 100644
index 50e0fe32..00000000
--- a/modules/pytz/zoneinfo/Australia/West.py
+++ /dev/null
@@ -1,44 +0,0 @@
-'''tzinfo timezone information for Australia/West.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class West(DstTzInfo):
- '''Australia/West timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/West'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,16,1,0),
-d(1917,3,24,17,0,0),
-d(1941,12,31,18,0,0),
-d(1942,3,28,17,0,0),
-d(1942,9,26,18,0,0),
-d(1943,3,27,17,0,0),
-d(1974,10,26,18,0,0),
-d(1975,3,1,18,0,0),
-d(1983,10,29,18,0,0),
-d(1984,3,3,18,0,0),
-d(1991,11,16,18,0,0),
-d(1992,2,29,18,0,0),
- ]
-
- _transition_info = [
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
-i(32400,3600,'WST'),
-i(28800,0,'WST'),
- ]
-
-West = West()
-
diff --git a/modules/pytz/zoneinfo/Australia/Yancowinna.py b/modules/pytz/zoneinfo/Australia/Yancowinna.py
deleted file mode 100644
index 5a0883e9..00000000
--- a/modules/pytz/zoneinfo/Australia/Yancowinna.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for Australia/Yancowinna.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yancowinna(DstTzInfo):
- '''Australia/Yancowinna timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Australia/Yancowinna'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,14,31,0),
-d(1917,3,24,15,30,0),
-d(1941,12,31,16,30,0),
-d(1942,3,28,15,30,0),
-d(1942,9,26,16,30,0),
-d(1943,3,27,15,30,0),
-d(1943,10,2,16,30,0),
-d(1944,3,25,15,30,0),
-d(1971,10,30,16,30,0),
-d(1972,2,26,16,30,0),
-d(1972,10,28,16,30,0),
-d(1973,3,3,16,30,0),
-d(1973,10,27,16,30,0),
-d(1974,3,2,16,30,0),
-d(1974,10,26,16,30,0),
-d(1975,3,1,16,30,0),
-d(1975,10,25,16,30,0),
-d(1976,3,6,16,30,0),
-d(1976,10,30,16,30,0),
-d(1977,3,5,16,30,0),
-d(1977,10,29,16,30,0),
-d(1978,3,4,16,30,0),
-d(1978,10,28,16,30,0),
-d(1979,3,3,16,30,0),
-d(1979,10,27,16,30,0),
-d(1980,3,1,16,30,0),
-d(1980,10,25,16,30,0),
-d(1981,2,28,16,30,0),
-d(1981,10,24,16,30,0),
-d(1982,4,3,16,30,0),
-d(1982,10,30,16,30,0),
-d(1983,3,5,16,30,0),
-d(1983,10,29,16,30,0),
-d(1984,3,3,16,30,0),
-d(1984,10,27,16,30,0),
-d(1985,3,2,16,30,0),
-d(1985,10,26,16,30,0),
-d(1986,3,15,16,30,0),
-d(1986,10,18,16,30,0),
-d(1987,3,14,16,30,0),
-d(1987,10,24,16,30,0),
-d(1988,3,19,16,30,0),
-d(1988,10,29,16,30,0),
-d(1989,3,18,16,30,0),
-d(1989,10,28,16,30,0),
-d(1990,3,3,16,30,0),
-d(1990,10,27,16,30,0),
-d(1991,3,2,16,30,0),
-d(1991,10,26,16,30,0),
-d(1992,2,29,16,30,0),
-d(1992,10,24,16,30,0),
-d(1993,3,6,16,30,0),
-d(1993,10,30,16,30,0),
-d(1994,3,5,16,30,0),
-d(1994,10,29,16,30,0),
-d(1995,3,4,16,30,0),
-d(1995,10,28,16,30,0),
-d(1996,3,30,16,30,0),
-d(1996,10,26,16,30,0),
-d(1997,3,29,16,30,0),
-d(1997,10,25,16,30,0),
-d(1998,3,28,16,30,0),
-d(1998,10,24,16,30,0),
-d(1999,3,27,16,30,0),
-d(1999,10,30,16,30,0),
-d(1999,12,31,13,30,0),
-d(2000,3,25,16,30,0),
-d(2000,10,28,16,30,0),
-d(2001,3,24,16,30,0),
-d(2001,10,27,16,30,0),
-d(2002,3,30,16,30,0),
-d(2002,10,26,16,30,0),
-d(2003,3,29,16,30,0),
-d(2003,10,25,16,30,0),
-d(2004,3,27,16,30,0),
-d(2004,10,30,16,30,0),
-d(2005,3,26,16,30,0),
-d(2005,10,29,16,30,0),
-d(2006,4,1,16,30,0),
-d(2006,10,28,16,30,0),
-d(2007,3,24,16,30,0),
-d(2007,10,27,16,30,0),
-d(2008,3,29,16,30,0),
-d(2008,10,25,16,30,0),
-d(2009,3,28,16,30,0),
-d(2009,10,24,16,30,0),
-d(2010,3,27,16,30,0),
-d(2010,10,30,16,30,0),
-d(2011,3,26,16,30,0),
-d(2011,10,29,16,30,0),
-d(2012,3,24,16,30,0),
-d(2012,10,27,16,30,0),
-d(2013,3,30,16,30,0),
-d(2013,10,26,16,30,0),
-d(2014,3,29,16,30,0),
-d(2014,10,25,16,30,0),
-d(2015,3,28,16,30,0),
-d(2015,10,24,16,30,0),
-d(2016,3,26,16,30,0),
-d(2016,10,29,16,30,0),
-d(2017,3,25,16,30,0),
-d(2017,10,28,16,30,0),
-d(2018,3,24,16,30,0),
-d(2018,10,27,16,30,0),
-d(2019,3,30,16,30,0),
-d(2019,10,26,16,30,0),
-d(2020,3,28,16,30,0),
-d(2020,10,24,16,30,0),
-d(2021,3,27,16,30,0),
-d(2021,10,30,16,30,0),
-d(2022,3,26,16,30,0),
-d(2022,10,29,16,30,0),
-d(2023,3,25,16,30,0),
-d(2023,10,28,16,30,0),
-d(2024,3,30,16,30,0),
-d(2024,10,26,16,30,0),
-d(2025,3,29,16,30,0),
-d(2025,10,25,16,30,0),
-d(2026,3,28,16,30,0),
-d(2026,10,24,16,30,0),
-d(2027,3,27,16,30,0),
-d(2027,10,30,16,30,0),
-d(2028,3,25,16,30,0),
-d(2028,10,28,16,30,0),
-d(2029,3,24,16,30,0),
-d(2029,10,27,16,30,0),
-d(2030,3,30,16,30,0),
-d(2030,10,26,16,30,0),
-d(2031,3,29,16,30,0),
-d(2031,10,25,16,30,0),
-d(2032,3,27,16,30,0),
-d(2032,10,30,16,30,0),
-d(2033,3,26,16,30,0),
-d(2033,10,29,16,30,0),
-d(2034,3,25,16,30,0),
-d(2034,10,28,16,30,0),
-d(2035,3,24,16,30,0),
-d(2035,10,27,16,30,0),
-d(2036,3,29,16,30,0),
-d(2036,10,25,16,30,0),
-d(2037,3,28,16,30,0),
-d(2037,10,24,16,30,0),
- ]
-
- _transition_info = [
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
-i(34200,0,'CST'),
-i(37800,3600,'CST'),
- ]
-
-Yancowinna = Yancowinna()
-
diff --git a/modules/pytz/zoneinfo/Australia/__init__.py b/modules/pytz/zoneinfo/Australia/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Brazil/Acre.py b/modules/pytz/zoneinfo/Brazil/Acre.py
deleted file mode 100644
index e1f86e97..00000000
--- a/modules/pytz/zoneinfo/Brazil/Acre.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for Brazil/Acre.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Acre(DstTzInfo):
- '''Brazil/Acre timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Brazil/Acre'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,31,12),
-d(1931,10,3,16,0,0),
-d(1932,4,1,4,0,0),
-d(1932,10,3,5,0,0),
-d(1933,4,1,4,0,0),
-d(1949,12,1,5,0,0),
-d(1950,4,16,5,0,0),
-d(1950,12,1,5,0,0),
-d(1951,4,1,4,0,0),
-d(1951,12,1,5,0,0),
-d(1952,4,1,4,0,0),
-d(1952,12,1,5,0,0),
-d(1953,3,1,4,0,0),
-d(1963,12,9,5,0,0),
-d(1964,3,1,4,0,0),
-d(1965,1,31,5,0,0),
-d(1965,3,31,4,0,0),
-d(1965,12,1,5,0,0),
-d(1966,3,1,4,0,0),
-d(1966,11,1,5,0,0),
-d(1967,3,1,4,0,0),
-d(1967,11,1,5,0,0),
-d(1968,3,1,4,0,0),
-d(1985,11,2,5,0,0),
-d(1986,3,15,4,0,0),
-d(1986,10,25,5,0,0),
-d(1987,2,14,4,0,0),
-d(1987,10,25,5,0,0),
-d(1988,2,7,4,0,0),
- ]
-
- _transition_info = [
-i(-16260,0,'LMT'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
-i(-14400,3600,'ACST'),
-i(-18000,0,'ACT'),
- ]
-
-Acre = Acre()
-
diff --git a/modules/pytz/zoneinfo/Brazil/DeNoronha.py b/modules/pytz/zoneinfo/Brazil/DeNoronha.py
deleted file mode 100644
index 240aac55..00000000
--- a/modules/pytz/zoneinfo/Brazil/DeNoronha.py
+++ /dev/null
@@ -1,98 +0,0 @@
-'''tzinfo timezone information for Brazil/DeNoronha.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class DeNoronha(DstTzInfo):
- '''Brazil/DeNoronha timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Brazil/DeNoronha'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,2,9,40),
-d(1931,10,3,13,0,0),
-d(1932,4,1,1,0,0),
-d(1932,10,3,2,0,0),
-d(1933,4,1,1,0,0),
-d(1949,12,1,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,12,1,2,0,0),
-d(1951,4,1,1,0,0),
-d(1951,12,1,2,0,0),
-d(1952,4,1,1,0,0),
-d(1952,12,1,2,0,0),
-d(1953,3,1,1,0,0),
-d(1963,12,9,2,0,0),
-d(1964,3,1,1,0,0),
-d(1965,1,31,2,0,0),
-d(1965,3,31,1,0,0),
-d(1965,12,1,2,0,0),
-d(1966,3,1,1,0,0),
-d(1966,11,1,2,0,0),
-d(1967,3,1,1,0,0),
-d(1967,11,1,2,0,0),
-d(1968,3,1,1,0,0),
-d(1985,11,2,2,0,0),
-d(1986,3,15,1,0,0),
-d(1986,10,25,2,0,0),
-d(1987,2,14,1,0,0),
-d(1987,10,25,2,0,0),
-d(1988,2,7,1,0,0),
-d(1988,10,16,2,0,0),
-d(1989,1,29,1,0,0),
-d(1989,10,15,2,0,0),
-d(1990,2,11,1,0,0),
-d(1999,10,3,2,0,0),
-d(2000,2,27,1,0,0),
-d(2000,10,8,2,0,0),
-d(2000,10,15,1,0,0),
-d(2001,10,14,2,0,0),
-d(2002,2,17,1,0,0),
- ]
-
- _transition_info = [
-i(-7800,0,'LMT'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
-i(-3600,3600,'FNST'),
-i(-7200,0,'FNT'),
- ]
-
-DeNoronha = DeNoronha()
-
diff --git a/modules/pytz/zoneinfo/Brazil/East.py b/modules/pytz/zoneinfo/Brazil/East.py
deleted file mode 100644
index 2b824f61..00000000
--- a/modules/pytz/zoneinfo/Brazil/East.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for Brazil/East.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class East(DstTzInfo):
- '''Brazil/East timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Brazil/East'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,3,6,28),
-d(1931,10,3,14,0,0),
-d(1932,4,1,2,0,0),
-d(1932,10,3,3,0,0),
-d(1933,4,1,2,0,0),
-d(1949,12,1,3,0,0),
-d(1950,4,16,3,0,0),
-d(1950,12,1,3,0,0),
-d(1951,4,1,2,0,0),
-d(1951,12,1,3,0,0),
-d(1952,4,1,2,0,0),
-d(1952,12,1,3,0,0),
-d(1953,3,1,2,0,0),
-d(1963,10,23,3,0,0),
-d(1964,3,1,2,0,0),
-d(1965,1,31,3,0,0),
-d(1965,3,31,2,0,0),
-d(1965,12,1,3,0,0),
-d(1966,3,1,2,0,0),
-d(1966,11,1,3,0,0),
-d(1967,3,1,2,0,0),
-d(1967,11,1,3,0,0),
-d(1968,3,1,2,0,0),
-d(1985,11,2,3,0,0),
-d(1986,3,15,2,0,0),
-d(1986,10,25,3,0,0),
-d(1987,2,14,2,0,0),
-d(1987,10,25,3,0,0),
-d(1988,2,7,2,0,0),
-d(1988,10,16,3,0,0),
-d(1989,1,29,2,0,0),
-d(1989,10,15,3,0,0),
-d(1990,2,11,2,0,0),
-d(1990,10,21,3,0,0),
-d(1991,2,17,2,0,0),
-d(1991,10,20,3,0,0),
-d(1992,2,9,2,0,0),
-d(1992,10,25,3,0,0),
-d(1993,1,31,2,0,0),
-d(1993,10,17,3,0,0),
-d(1994,2,20,2,0,0),
-d(1994,10,16,3,0,0),
-d(1995,2,19,2,0,0),
-d(1995,10,15,3,0,0),
-d(1996,2,11,2,0,0),
-d(1996,10,6,3,0,0),
-d(1997,2,16,2,0,0),
-d(1997,10,6,3,0,0),
-d(1998,3,1,2,0,0),
-d(1998,10,11,3,0,0),
-d(1999,2,21,2,0,0),
-d(1999,10,3,3,0,0),
-d(2000,2,27,2,0,0),
-d(2000,10,8,3,0,0),
-d(2001,2,18,2,0,0),
-d(2001,10,14,3,0,0),
-d(2002,2,17,2,0,0),
-d(2002,11,3,3,0,0),
-d(2003,2,16,2,0,0),
-d(2003,10,19,3,0,0),
-d(2004,2,15,2,0,0),
-d(2004,11,2,3,0,0),
-d(2005,2,20,2,0,0),
-d(2005,10,16,3,0,0),
-d(2006,2,19,2,0,0),
-d(2006,10,15,3,0,0),
-d(2007,2,18,2,0,0),
-d(2007,10,21,3,0,0),
-d(2008,2,17,2,0,0),
-d(2008,10,19,3,0,0),
-d(2009,2,15,2,0,0),
-d(2009,10,18,3,0,0),
-d(2010,2,21,2,0,0),
-d(2010,10,17,3,0,0),
-d(2011,2,20,2,0,0),
-d(2011,10,16,3,0,0),
-d(2012,2,19,2,0,0),
-d(2012,10,21,3,0,0),
-d(2013,2,17,2,0,0),
-d(2013,10,20,3,0,0),
-d(2014,2,16,2,0,0),
-d(2014,10,19,3,0,0),
-d(2015,2,15,2,0,0),
-d(2015,10,18,3,0,0),
-d(2016,2,21,2,0,0),
-d(2016,10,16,3,0,0),
-d(2017,2,19,2,0,0),
-d(2017,10,15,3,0,0),
-d(2018,2,18,2,0,0),
-d(2018,10,21,3,0,0),
-d(2019,2,17,2,0,0),
-d(2019,10,20,3,0,0),
-d(2020,2,16,2,0,0),
-d(2020,10,18,3,0,0),
-d(2021,2,21,2,0,0),
-d(2021,10,17,3,0,0),
-d(2022,2,20,2,0,0),
-d(2022,10,16,3,0,0),
-d(2023,2,19,2,0,0),
-d(2023,10,15,3,0,0),
-d(2024,2,18,2,0,0),
-d(2024,10,20,3,0,0),
-d(2025,2,16,2,0,0),
-d(2025,10,19,3,0,0),
-d(2026,2,15,2,0,0),
-d(2026,10,18,3,0,0),
-d(2027,2,21,2,0,0),
-d(2027,10,17,3,0,0),
-d(2028,2,20,2,0,0),
-d(2028,10,15,3,0,0),
-d(2029,2,18,2,0,0),
-d(2029,10,21,3,0,0),
-d(2030,2,17,2,0,0),
-d(2030,10,20,3,0,0),
-d(2031,2,16,2,0,0),
-d(2031,10,19,3,0,0),
-d(2032,2,15,2,0,0),
-d(2032,10,17,3,0,0),
-d(2033,2,20,2,0,0),
-d(2033,10,16,3,0,0),
-d(2034,2,19,2,0,0),
-d(2034,10,15,3,0,0),
-d(2035,2,18,2,0,0),
-d(2035,10,21,3,0,0),
-d(2036,2,17,2,0,0),
-d(2036,10,19,3,0,0),
-d(2037,2,15,2,0,0),
-d(2037,10,18,3,0,0),
- ]
-
- _transition_info = [
-i(-11160,0,'LMT'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
-i(-10800,0,'BRT'),
-i(-7200,3600,'BRST'),
- ]
-
-East = East()
-
diff --git a/modules/pytz/zoneinfo/Brazil/West.py b/modules/pytz/zoneinfo/Brazil/West.py
deleted file mode 100644
index b18d9313..00000000
--- a/modules/pytz/zoneinfo/Brazil/West.py
+++ /dev/null
@@ -1,82 +0,0 @@
-'''tzinfo timezone information for Brazil/West.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class West(DstTzInfo):
- '''Brazil/West timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Brazil/West'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,1,1,4,0,4),
-d(1931,10,3,15,0,0),
-d(1932,4,1,3,0,0),
-d(1932,10,3,4,0,0),
-d(1933,4,1,3,0,0),
-d(1949,12,1,4,0,0),
-d(1950,4,16,4,0,0),
-d(1950,12,1,4,0,0),
-d(1951,4,1,3,0,0),
-d(1951,12,1,4,0,0),
-d(1952,4,1,3,0,0),
-d(1952,12,1,4,0,0),
-d(1953,3,1,3,0,0),
-d(1963,12,9,4,0,0),
-d(1964,3,1,3,0,0),
-d(1965,1,31,4,0,0),
-d(1965,3,31,3,0,0),
-d(1965,12,1,4,0,0),
-d(1966,3,1,3,0,0),
-d(1966,11,1,4,0,0),
-d(1967,3,1,3,0,0),
-d(1967,11,1,4,0,0),
-d(1968,3,1,3,0,0),
-d(1985,11,2,4,0,0),
-d(1986,3,15,3,0,0),
-d(1986,10,25,4,0,0),
-d(1987,2,14,3,0,0),
-d(1987,10,25,4,0,0),
-d(1988,2,7,3,0,0),
-d(1993,10,17,4,0,0),
-d(1994,2,20,3,0,0),
- ]
-
- _transition_info = [
-i(-14400,0,'LMT'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
-i(-10800,3600,'AMST'),
-i(-14400,0,'AMT'),
- ]
-
-West = West()
-
diff --git a/modules/pytz/zoneinfo/Brazil/__init__.py b/modules/pytz/zoneinfo/Brazil/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/CET.py b/modules/pytz/zoneinfo/CET.py
deleted file mode 100644
index 6de05954..00000000
--- a/modules/pytz/zoneinfo/CET.py
+++ /dev/null
@@ -1,288 +0,0 @@
-'''tzinfo timezone information for CET.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class CET(DstTzInfo):
- '''CET timezone definition. See datetime.tzinfo for details'''
-
- zone = 'CET'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-CET = CET()
-
diff --git a/modules/pytz/zoneinfo/CST6CDT.py b/modules/pytz/zoneinfo/CST6CDT.py
deleted file mode 100644
index ba53cff0..00000000
--- a/modules/pytz/zoneinfo/CST6CDT.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for CST6CDT.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class CST6CDT(DstTzInfo):
- '''CST6CDT timezone definition. See datetime.tzinfo for details'''
-
- zone = 'CST6CDT'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-CST6CDT = CST6CDT()
-
diff --git a/modules/pytz/zoneinfo/Canada/Atlantic.py b/modules/pytz/zoneinfo/Canada/Atlantic.py
deleted file mode 100644
index 22c41c59..00000000
--- a/modules/pytz/zoneinfo/Canada/Atlantic.py
+++ /dev/null
@@ -1,476 +0,0 @@
-'''tzinfo timezone information for Canada/Atlantic.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Atlantic(DstTzInfo):
- '''Canada/Atlantic timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Atlantic'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1902,6,15,4,14,24),
-d(1916,4,1,4,0,0),
-d(1916,10,1,3,0,0),
-d(1918,4,14,6,0,0),
-d(1918,10,31,5,0,0),
-d(1920,5,9,4,0,0),
-d(1920,8,29,3,0,0),
-d(1921,5,6,4,0,0),
-d(1921,9,5,3,0,0),
-d(1922,4,30,4,0,0),
-d(1922,9,5,3,0,0),
-d(1923,5,6,4,0,0),
-d(1923,9,4,3,0,0),
-d(1924,5,4,4,0,0),
-d(1924,9,15,3,0,0),
-d(1925,5,3,4,0,0),
-d(1925,9,28,3,0,0),
-d(1926,5,16,4,0,0),
-d(1926,9,13,3,0,0),
-d(1927,5,1,4,0,0),
-d(1927,9,26,3,0,0),
-d(1928,5,13,4,0,0),
-d(1928,9,9,3,0,0),
-d(1929,5,12,4,0,0),
-d(1929,9,3,3,0,0),
-d(1930,5,11,4,0,0),
-d(1930,9,15,3,0,0),
-d(1931,5,10,4,0,0),
-d(1931,9,28,3,0,0),
-d(1932,5,1,4,0,0),
-d(1932,9,26,3,0,0),
-d(1933,4,30,4,0,0),
-d(1933,10,2,3,0,0),
-d(1934,5,20,4,0,0),
-d(1934,9,16,3,0,0),
-d(1935,6,2,4,0,0),
-d(1935,9,30,3,0,0),
-d(1936,6,1,4,0,0),
-d(1936,9,14,3,0,0),
-d(1937,5,2,4,0,0),
-d(1937,9,27,3,0,0),
-d(1938,5,1,4,0,0),
-d(1938,9,26,3,0,0),
-d(1939,5,28,4,0,0),
-d(1939,9,25,3,0,0),
-d(1940,5,5,4,0,0),
-d(1940,9,30,3,0,0),
-d(1941,5,4,4,0,0),
-d(1941,9,29,3,0,0),
-d(1942,2,9,6,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,5,0,0),
-d(1946,4,28,6,0,0),
-d(1946,9,29,5,0,0),
-d(1947,4,27,6,0,0),
-d(1947,9,28,5,0,0),
-d(1948,4,25,6,0,0),
-d(1948,9,26,5,0,0),
-d(1949,4,24,6,0,0),
-d(1949,9,25,5,0,0),
-d(1951,4,29,6,0,0),
-d(1951,9,30,5,0,0),
-d(1952,4,27,6,0,0),
-d(1952,9,28,5,0,0),
-d(1953,4,26,6,0,0),
-d(1953,9,27,5,0,0),
-d(1954,4,25,6,0,0),
-d(1954,9,26,5,0,0),
-d(1956,4,29,6,0,0),
-d(1956,9,30,5,0,0),
-d(1957,4,28,6,0,0),
-d(1957,9,29,5,0,0),
-d(1958,4,27,6,0,0),
-d(1958,9,28,5,0,0),
-d(1959,4,26,6,0,0),
-d(1959,9,27,5,0,0),
-d(1962,4,29,6,0,0),
-d(1962,10,28,5,0,0),
-d(1963,4,28,6,0,0),
-d(1963,10,27,5,0,0),
-d(1964,4,26,6,0,0),
-d(1964,10,25,5,0,0),
-d(1965,4,25,6,0,0),
-d(1965,10,31,5,0,0),
-d(1966,4,24,6,0,0),
-d(1966,10,30,5,0,0),
-d(1967,4,30,6,0,0),
-d(1967,10,29,5,0,0),
-d(1968,4,28,6,0,0),
-d(1968,10,27,5,0,0),
-d(1969,4,27,6,0,0),
-d(1969,10,26,5,0,0),
-d(1970,4,26,6,0,0),
-d(1970,10,25,5,0,0),
-d(1971,4,25,6,0,0),
-d(1971,10,31,5,0,0),
-d(1972,4,30,6,0,0),
-d(1972,10,29,5,0,0),
-d(1973,4,29,6,0,0),
-d(1973,10,28,5,0,0),
-d(1974,4,28,6,0,0),
-d(1974,10,27,5,0,0),
-d(1975,4,27,6,0,0),
-d(1975,10,26,5,0,0),
-d(1976,4,25,6,0,0),
-d(1976,10,31,5,0,0),
-d(1977,4,24,6,0,0),
-d(1977,10,30,5,0,0),
-d(1978,4,30,6,0,0),
-d(1978,10,29,5,0,0),
-d(1979,4,29,6,0,0),
-d(1979,10,28,5,0,0),
-d(1980,4,27,6,0,0),
-d(1980,10,26,5,0,0),
-d(1981,4,26,6,0,0),
-d(1981,10,25,5,0,0),
-d(1982,4,25,6,0,0),
-d(1982,10,31,5,0,0),
-d(1983,4,24,6,0,0),
-d(1983,10,30,5,0,0),
-d(1984,4,29,6,0,0),
-d(1984,10,28,5,0,0),
-d(1985,4,28,6,0,0),
-d(1985,10,27,5,0,0),
-d(1986,4,27,6,0,0),
-d(1986,10,26,5,0,0),
-d(1987,4,5,6,0,0),
-d(1987,10,25,5,0,0),
-d(1988,4,3,6,0,0),
-d(1988,10,30,5,0,0),
-d(1989,4,2,6,0,0),
-d(1989,10,29,5,0,0),
-d(1990,4,1,6,0,0),
-d(1990,10,28,5,0,0),
-d(1991,4,7,6,0,0),
-d(1991,10,27,5,0,0),
-d(1992,4,5,6,0,0),
-d(1992,10,25,5,0,0),
-d(1993,4,4,6,0,0),
-d(1993,10,31,5,0,0),
-d(1994,4,3,6,0,0),
-d(1994,10,30,5,0,0),
-d(1995,4,2,6,0,0),
-d(1995,10,29,5,0,0),
-d(1996,4,7,6,0,0),
-d(1996,10,27,5,0,0),
-d(1997,4,6,6,0,0),
-d(1997,10,26,5,0,0),
-d(1998,4,5,6,0,0),
-d(1998,10,25,5,0,0),
-d(1999,4,4,6,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,6,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,6,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,6,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,6,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,6,0,0),
-d(2004,10,31,5,0,0),
-d(2005,4,3,6,0,0),
-d(2005,10,30,5,0,0),
-d(2006,4,2,6,0,0),
-d(2006,10,29,5,0,0),
-d(2007,3,11,6,0,0),
-d(2007,11,4,5,0,0),
-d(2008,3,9,6,0,0),
-d(2008,11,2,5,0,0),
-d(2009,3,8,6,0,0),
-d(2009,11,1,5,0,0),
-d(2010,3,14,6,0,0),
-d(2010,11,7,5,0,0),
-d(2011,3,13,6,0,0),
-d(2011,11,6,5,0,0),
-d(2012,3,11,6,0,0),
-d(2012,11,4,5,0,0),
-d(2013,3,10,6,0,0),
-d(2013,11,3,5,0,0),
-d(2014,3,9,6,0,0),
-d(2014,11,2,5,0,0),
-d(2015,3,8,6,0,0),
-d(2015,11,1,5,0,0),
-d(2016,3,13,6,0,0),
-d(2016,11,6,5,0,0),
-d(2017,3,12,6,0,0),
-d(2017,11,5,5,0,0),
-d(2018,3,11,6,0,0),
-d(2018,11,4,5,0,0),
-d(2019,3,10,6,0,0),
-d(2019,11,3,5,0,0),
-d(2020,3,8,6,0,0),
-d(2020,11,1,5,0,0),
-d(2021,3,14,6,0,0),
-d(2021,11,7,5,0,0),
-d(2022,3,13,6,0,0),
-d(2022,11,6,5,0,0),
-d(2023,3,12,6,0,0),
-d(2023,11,5,5,0,0),
-d(2024,3,10,6,0,0),
-d(2024,11,3,5,0,0),
-d(2025,3,9,6,0,0),
-d(2025,11,2,5,0,0),
-d(2026,3,8,6,0,0),
-d(2026,11,1,5,0,0),
-d(2027,3,14,6,0,0),
-d(2027,11,7,5,0,0),
-d(2028,3,12,6,0,0),
-d(2028,11,5,5,0,0),
-d(2029,3,11,6,0,0),
-d(2029,11,4,5,0,0),
-d(2030,3,10,6,0,0),
-d(2030,11,3,5,0,0),
-d(2031,3,9,6,0,0),
-d(2031,11,2,5,0,0),
-d(2032,3,14,6,0,0),
-d(2032,11,7,5,0,0),
-d(2033,3,13,6,0,0),
-d(2033,11,6,5,0,0),
-d(2034,3,12,6,0,0),
-d(2034,11,5,5,0,0),
-d(2035,3,11,6,0,0),
-d(2035,11,4,5,0,0),
-d(2036,3,9,6,0,0),
-d(2036,11,2,5,0,0),
-d(2037,3,8,6,0,0),
-d(2037,11,1,5,0,0),
- ]
-
- _transition_info = [
-i(-15240,0,'LMT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'AWT'),
-i(-10800,3600,'APT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
-i(-10800,3600,'ADT'),
-i(-14400,0,'AST'),
- ]
-
-Atlantic = Atlantic()
-
diff --git a/modules/pytz/zoneinfo/Canada/Central.py b/modules/pytz/zoneinfo/Canada/Central.py
deleted file mode 100644
index db26a5f3..00000000
--- a/modules/pytz/zoneinfo/Canada/Central.py
+++ /dev/null
@@ -1,390 +0,0 @@
-'''tzinfo timezone information for Canada/Central.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Central(DstTzInfo):
- '''Canada/Central timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Central'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,23,6,0,0),
-d(1916,9,17,5,0,0),
-d(1918,4,14,8,0,0),
-d(1918,10,31,7,0,0),
-d(1937,5,16,8,0,0),
-d(1937,9,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,5,12,8,0,0),
-d(1946,10,13,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,5,1,8,0,0),
-d(1950,9,30,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,9,25,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,9,30,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,9,28,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,9,25,7,0,0),
-d(1963,4,28,8,0,0),
-d(1963,9,22,7,0,0),
-d(1966,4,24,8,0,0),
-d(1966,10,30,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,4,28,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,4,27,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Central = Central()
-
diff --git a/modules/pytz/zoneinfo/Canada/East_minus_Saskatchewan.py b/modules/pytz/zoneinfo/Canada/East_minus_Saskatchewan.py
deleted file mode 100644
index 950907d8..00000000
--- a/modules/pytz/zoneinfo/Canada/East_minus_Saskatchewan.py
+++ /dev/null
@@ -1,126 +0,0 @@
-'''tzinfo timezone information for Canada/East_minus_Saskatchewan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class East_minus_Saskatchewan(DstTzInfo):
- '''Canada/East_minus_Saskatchewan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/East_minus_Saskatchewan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,9,1,6,58,36),
-d(1918,4,14,9,0,0),
-d(1918,10,31,8,0,0),
-d(1930,5,4,7,0,0),
-d(1930,10,5,6,0,0),
-d(1931,5,3,7,0,0),
-d(1931,10,4,6,0,0),
-d(1932,5,1,7,0,0),
-d(1932,10,2,6,0,0),
-d(1933,5,7,7,0,0),
-d(1933,10,1,6,0,0),
-d(1934,5,6,7,0,0),
-d(1934,10,7,6,0,0),
-d(1937,4,11,7,0,0),
-d(1937,10,10,6,0,0),
-d(1938,4,10,7,0,0),
-d(1938,10,2,6,0,0),
-d(1939,4,9,7,0,0),
-d(1939,10,8,6,0,0),
-d(1940,4,14,7,0,0),
-d(1940,10,13,6,0,0),
-d(1941,4,13,7,0,0),
-d(1941,10,12,6,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1946,4,14,9,0,0),
-d(1946,10,13,8,0,0),
-d(1947,4,27,9,0,0),
-d(1947,9,28,8,0,0),
-d(1948,4,25,9,0,0),
-d(1948,9,26,8,0,0),
-d(1949,4,24,9,0,0),
-d(1949,9,25,8,0,0),
-d(1950,4,30,9,0,0),
-d(1950,9,24,8,0,0),
-d(1951,4,29,9,0,0),
-d(1951,9,30,8,0,0),
-d(1952,4,27,9,0,0),
-d(1952,9,28,8,0,0),
-d(1953,4,26,9,0,0),
-d(1953,9,27,8,0,0),
-d(1954,4,25,9,0,0),
-d(1954,9,26,8,0,0),
-d(1955,4,24,9,0,0),
-d(1955,9,25,8,0,0),
-d(1956,4,29,9,0,0),
-d(1956,9,30,8,0,0),
-d(1957,4,28,9,0,0),
-d(1957,9,29,8,0,0),
-d(1959,4,26,9,0,0),
-d(1959,10,25,8,0,0),
-d(1960,4,24,9,0,0),
- ]
-
- _transition_info = [
-i(-25140,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
- ]
-
-East_minus_Saskatchewan = East_minus_Saskatchewan()
-
diff --git a/modules/pytz/zoneinfo/Canada/Eastern.py b/modules/pytz/zoneinfo/Canada/Eastern.py
deleted file mode 100644
index 4c30c5f9..00000000
--- a/modules/pytz/zoneinfo/Canada/Eastern.py
+++ /dev/null
@@ -1,484 +0,0 @@
-'''tzinfo timezone information for Canada/Eastern.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Eastern(DstTzInfo):
- '''Canada/Eastern timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Eastern'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,7,0,0),
-d(1918,10,31,6,0,0),
-d(1919,3,31,4,30,0),
-d(1919,10,26,4,0,0),
-d(1920,5,2,7,0,0),
-d(1920,9,26,4,0,0),
-d(1921,5,15,7,0,0),
-d(1921,9,15,6,0,0),
-d(1922,5,14,7,0,0),
-d(1922,9,17,6,0,0),
-d(1923,5,13,7,0,0),
-d(1923,9,16,6,0,0),
-d(1924,5,4,7,0,0),
-d(1924,9,21,6,0,0),
-d(1925,5,3,7,0,0),
-d(1925,9,20,6,0,0),
-d(1926,5,2,7,0,0),
-d(1926,9,19,6,0,0),
-d(1927,5,1,7,0,0),
-d(1927,9,25,6,0,0),
-d(1928,4,29,7,0,0),
-d(1928,9,30,6,0,0),
-d(1929,4,28,7,0,0),
-d(1929,9,29,6,0,0),
-d(1930,4,27,7,0,0),
-d(1930,9,28,6,0,0),
-d(1931,4,26,7,0,0),
-d(1931,9,27,6,0,0),
-d(1932,5,1,7,0,0),
-d(1932,9,25,6,0,0),
-d(1933,4,30,7,0,0),
-d(1933,10,1,6,0,0),
-d(1934,4,29,7,0,0),
-d(1934,9,30,6,0,0),
-d(1935,4,28,7,0,0),
-d(1935,9,29,6,0,0),
-d(1936,4,26,7,0,0),
-d(1936,9,27,6,0,0),
-d(1937,4,25,7,0,0),
-d(1937,9,26,6,0,0),
-d(1938,4,24,7,0,0),
-d(1938,9,25,6,0,0),
-d(1939,4,30,7,0,0),
-d(1939,9,24,6,0,0),
-d(1940,4,28,7,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1946,4,28,7,0,0),
-d(1946,9,29,6,0,0),
-d(1947,4,27,5,0,0),
-d(1947,9,28,4,0,0),
-d(1948,4,25,5,0,0),
-d(1948,9,26,4,0,0),
-d(1949,4,24,5,0,0),
-d(1949,11,27,4,0,0),
-d(1950,4,30,7,0,0),
-d(1950,11,26,6,0,0),
-d(1951,4,29,7,0,0),
-d(1951,9,30,6,0,0),
-d(1952,4,27,7,0,0),
-d(1952,9,28,6,0,0),
-d(1953,4,26,7,0,0),
-d(1953,9,27,6,0,0),
-d(1954,4,25,7,0,0),
-d(1954,9,26,6,0,0),
-d(1955,4,24,7,0,0),
-d(1955,9,25,6,0,0),
-d(1956,4,29,7,0,0),
-d(1956,9,30,6,0,0),
-d(1957,4,28,7,0,0),
-d(1957,10,27,6,0,0),
-d(1958,4,27,7,0,0),
-d(1958,10,26,6,0,0),
-d(1959,4,26,7,0,0),
-d(1959,10,25,6,0,0),
-d(1960,4,24,7,0,0),
-d(1960,10,30,6,0,0),
-d(1961,4,30,7,0,0),
-d(1961,10,29,6,0,0),
-d(1962,4,29,7,0,0),
-d(1962,10,28,6,0,0),
-d(1963,4,28,7,0,0),
-d(1963,10,27,6,0,0),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Eastern = Eastern()
-
diff --git a/modules/pytz/zoneinfo/Canada/Mountain.py b/modules/pytz/zoneinfo/Canada/Mountain.py
deleted file mode 100644
index 375cafdf..00000000
--- a/modules/pytz/zoneinfo/Canada/Mountain.py
+++ /dev/null
@@ -1,328 +0,0 @@
-'''tzinfo timezone information for Canada/Mountain.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mountain(DstTzInfo):
- '''Canada/Mountain timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Mountain'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,9,1,7,33,52),
-d(1918,4,14,9,0,0),
-d(1918,10,31,8,0,0),
-d(1919,4,13,9,0,0),
-d(1919,5,27,8,0,0),
-d(1920,4,25,9,0,0),
-d(1920,10,31,8,0,0),
-d(1921,4,24,9,0,0),
-d(1921,9,25,8,0,0),
-d(1922,4,30,9,0,0),
-d(1922,9,24,8,0,0),
-d(1923,4,29,9,0,0),
-d(1923,9,30,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1947,4,27,9,0,0),
-d(1947,9,28,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,4,28,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,4,27,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-27240,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Mountain = Mountain()
-
diff --git a/modules/pytz/zoneinfo/Canada/Newfoundland.py b/modules/pytz/zoneinfo/Canada/Newfoundland.py
deleted file mode 100644
index e019b0c3..00000000
--- a/modules/pytz/zoneinfo/Canada/Newfoundland.py
+++ /dev/null
@@ -1,496 +0,0 @@
-'''tzinfo timezone information for Canada/Newfoundland.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Newfoundland(DstTzInfo):
- '''Canada/Newfoundland timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Newfoundland'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,4,8,5,30,52),
-d(1917,9,17,4,30,52),
-d(1918,4,14,5,30,52),
-d(1918,10,31,4,30,52),
-d(1919,5,6,2,30,52),
-d(1919,8,13,1,30,52),
-d(1920,5,3,2,30,52),
-d(1920,11,1,1,30,52),
-d(1921,5,2,2,30,52),
-d(1921,10,31,1,30,52),
-d(1922,5,8,2,30,52),
-d(1922,10,30,1,30,52),
-d(1923,5,7,2,30,52),
-d(1923,10,29,1,30,52),
-d(1924,5,5,2,30,52),
-d(1924,10,27,1,30,52),
-d(1925,5,4,2,30,52),
-d(1925,10,26,1,30,52),
-d(1926,5,3,2,30,52),
-d(1926,11,1,1,30,52),
-d(1927,5,2,2,30,52),
-d(1927,10,31,1,30,52),
-d(1928,5,7,2,30,52),
-d(1928,10,29,1,30,52),
-d(1929,5,6,2,30,52),
-d(1929,10,28,1,30,52),
-d(1930,5,5,2,30,52),
-d(1930,10,27,1,30,52),
-d(1931,5,4,2,30,52),
-d(1931,10,26,1,30,52),
-d(1932,5,2,2,30,52),
-d(1932,10,31,1,30,52),
-d(1933,5,8,2,30,52),
-d(1933,10,30,1,30,52),
-d(1934,5,7,2,30,52),
-d(1934,10,29,1,30,52),
-d(1935,3,30,3,30,52),
-d(1935,5,6,2,30,0),
-d(1935,10,28,1,30,0),
-d(1936,5,11,3,30,0),
-d(1936,10,5,2,30,0),
-d(1937,5,10,3,30,0),
-d(1937,10,4,2,30,0),
-d(1938,5,9,3,30,0),
-d(1938,10,3,2,30,0),
-d(1939,5,15,3,30,0),
-d(1939,10,2,2,30,0),
-d(1940,5,13,3,30,0),
-d(1940,10,7,2,30,0),
-d(1941,5,12,3,30,0),
-d(1941,10,6,2,30,0),
-d(1942,5,11,3,30,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,4,30,0),
-d(1946,5,12,5,30,0),
-d(1946,10,6,4,30,0),
-d(1947,5,11,5,30,0),
-d(1947,10,5,4,30,0),
-d(1948,5,9,5,30,0),
-d(1948,10,3,4,30,0),
-d(1949,5,8,5,30,0),
-d(1949,10,2,4,30,0),
-d(1950,5,14,5,30,0),
-d(1950,10,8,4,30,0),
-d(1951,4,29,5,30,0),
-d(1951,9,30,4,30,0),
-d(1952,4,27,5,30,0),
-d(1952,9,28,4,30,0),
-d(1953,4,26,5,30,0),
-d(1953,9,27,4,30,0),
-d(1954,4,25,5,30,0),
-d(1954,9,26,4,30,0),
-d(1955,4,24,5,30,0),
-d(1955,9,25,4,30,0),
-d(1956,4,29,5,30,0),
-d(1956,9,30,4,30,0),
-d(1957,4,28,5,30,0),
-d(1957,9,29,4,30,0),
-d(1958,4,27,5,30,0),
-d(1958,9,28,4,30,0),
-d(1959,4,26,5,30,0),
-d(1959,9,27,4,30,0),
-d(1960,4,24,5,30,0),
-d(1960,10,30,4,30,0),
-d(1961,4,30,5,30,0),
-d(1961,10,29,4,30,0),
-d(1962,4,29,5,30,0),
-d(1962,10,28,4,30,0),
-d(1963,4,28,5,30,0),
-d(1963,10,27,4,30,0),
-d(1964,4,26,5,30,0),
-d(1964,10,25,4,30,0),
-d(1965,4,25,5,30,0),
-d(1965,10,31,4,30,0),
-d(1966,4,24,5,30,0),
-d(1966,10,30,4,30,0),
-d(1967,4,30,5,30,0),
-d(1967,10,29,4,30,0),
-d(1968,4,28,5,30,0),
-d(1968,10,27,4,30,0),
-d(1969,4,27,5,30,0),
-d(1969,10,26,4,30,0),
-d(1970,4,26,5,30,0),
-d(1970,10,25,4,30,0),
-d(1971,4,25,5,30,0),
-d(1971,10,31,4,30,0),
-d(1972,4,30,5,30,0),
-d(1972,10,29,4,30,0),
-d(1973,4,29,5,30,0),
-d(1973,10,28,4,30,0),
-d(1974,4,28,5,30,0),
-d(1974,10,27,4,30,0),
-d(1975,4,27,5,30,0),
-d(1975,10,26,4,30,0),
-d(1976,4,25,5,30,0),
-d(1976,10,31,4,30,0),
-d(1977,4,24,5,30,0),
-d(1977,10,30,4,30,0),
-d(1978,4,30,5,30,0),
-d(1978,10,29,4,30,0),
-d(1979,4,29,5,30,0),
-d(1979,10,28,4,30,0),
-d(1980,4,27,5,30,0),
-d(1980,10,26,4,30,0),
-d(1981,4,26,5,30,0),
-d(1981,10,25,4,30,0),
-d(1982,4,25,5,30,0),
-d(1982,10,31,4,30,0),
-d(1983,4,24,5,30,0),
-d(1983,10,30,4,30,0),
-d(1984,4,29,5,30,0),
-d(1984,10,28,4,30,0),
-d(1985,4,28,5,30,0),
-d(1985,10,27,4,30,0),
-d(1986,4,27,5,30,0),
-d(1986,10,26,4,30,0),
-d(1987,4,5,3,31,0),
-d(1987,10,25,2,31,0),
-d(1988,4,3,3,31,0),
-d(1988,10,30,1,31,0),
-d(1989,4,2,3,31,0),
-d(1989,10,29,2,31,0),
-d(1990,4,1,3,31,0),
-d(1990,10,28,2,31,0),
-d(1991,4,7,3,31,0),
-d(1991,10,27,2,31,0),
-d(1992,4,5,3,31,0),
-d(1992,10,25,2,31,0),
-d(1993,4,4,3,31,0),
-d(1993,10,31,2,31,0),
-d(1994,4,3,3,31,0),
-d(1994,10,30,2,31,0),
-d(1995,4,2,3,31,0),
-d(1995,10,29,2,31,0),
-d(1996,4,7,3,31,0),
-d(1996,10,27,2,31,0),
-d(1997,4,6,3,31,0),
-d(1997,10,26,2,31,0),
-d(1998,4,5,3,31,0),
-d(1998,10,25,2,31,0),
-d(1999,4,4,3,31,0),
-d(1999,10,31,2,31,0),
-d(2000,4,2,3,31,0),
-d(2000,10,29,2,31,0),
-d(2001,4,1,3,31,0),
-d(2001,10,28,2,31,0),
-d(2002,4,7,3,31,0),
-d(2002,10,27,2,31,0),
-d(2003,4,6,3,31,0),
-d(2003,10,26,2,31,0),
-d(2004,4,4,3,31,0),
-d(2004,10,31,2,31,0),
-d(2005,4,3,3,31,0),
-d(2005,10,30,2,31,0),
-d(2006,4,2,3,31,0),
-d(2006,10,29,2,31,0),
-d(2007,4,1,3,31,0),
-d(2007,10,28,2,31,0),
-d(2008,4,6,3,31,0),
-d(2008,10,26,2,31,0),
-d(2009,4,5,3,31,0),
-d(2009,10,25,2,31,0),
-d(2010,4,4,3,31,0),
-d(2010,10,31,2,31,0),
-d(2011,4,3,3,31,0),
-d(2011,10,30,2,31,0),
-d(2012,4,1,3,31,0),
-d(2012,10,28,2,31,0),
-d(2013,4,7,3,31,0),
-d(2013,10,27,2,31,0),
-d(2014,4,6,3,31,0),
-d(2014,10,26,2,31,0),
-d(2015,4,5,3,31,0),
-d(2015,10,25,2,31,0),
-d(2016,4,3,3,31,0),
-d(2016,10,30,2,31,0),
-d(2017,4,2,3,31,0),
-d(2017,10,29,2,31,0),
-d(2018,4,1,3,31,0),
-d(2018,10,28,2,31,0),
-d(2019,4,7,3,31,0),
-d(2019,10,27,2,31,0),
-d(2020,4,5,3,31,0),
-d(2020,10,25,2,31,0),
-d(2021,4,4,3,31,0),
-d(2021,10,31,2,31,0),
-d(2022,4,3,3,31,0),
-d(2022,10,30,2,31,0),
-d(2023,4,2,3,31,0),
-d(2023,10,29,2,31,0),
-d(2024,4,7,3,31,0),
-d(2024,10,27,2,31,0),
-d(2025,4,6,3,31,0),
-d(2025,10,26,2,31,0),
-d(2026,4,5,3,31,0),
-d(2026,10,25,2,31,0),
-d(2027,4,4,3,31,0),
-d(2027,10,31,2,31,0),
-d(2028,4,2,3,31,0),
-d(2028,10,29,2,31,0),
-d(2029,4,1,3,31,0),
-d(2029,10,28,2,31,0),
-d(2030,4,7,3,31,0),
-d(2030,10,27,2,31,0),
-d(2031,4,6,3,31,0),
-d(2031,10,26,2,31,0),
-d(2032,4,4,3,31,0),
-d(2032,10,31,2,31,0),
-d(2033,4,3,3,31,0),
-d(2033,10,30,2,31,0),
-d(2034,4,2,3,31,0),
-d(2034,10,29,2,31,0),
-d(2035,4,1,3,31,0),
-d(2035,10,28,2,31,0),
-d(2036,4,6,3,31,0),
-d(2036,10,26,2,31,0),
-d(2037,4,5,3,31,0),
-d(2037,10,25,2,31,0),
- ]
-
- _transition_info = [
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-9060,3600,'NDT'),
-i(-12660,0,'NST'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NWT'),
-i(-9000,3600,'NPT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-5400,7200,'NDDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
-i(-9000,3600,'NDT'),
-i(-12600,0,'NST'),
- ]
-
-Newfoundland = Newfoundland()
-
diff --git a/modules/pytz/zoneinfo/Canada/Pacific.py b/modules/pytz/zoneinfo/Canada/Pacific.py
deleted file mode 100644
index d97f6324..00000000
--- a/modules/pytz/zoneinfo/Canada/Pacific.py
+++ /dev/null
@@ -1,398 +0,0 @@
-'''tzinfo timezone information for Canada/Pacific.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pacific(DstTzInfo):
- '''Canada/Pacific timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Pacific'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,10,0,0),
-d(1918,10,31,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1946,4,28,10,0,0),
-d(1946,10,13,9,0,0),
-d(1947,4,27,10,0,0),
-d(1947,9,28,9,0,0),
-d(1948,4,25,10,0,0),
-d(1948,9,26,9,0,0),
-d(1949,4,24,10,0,0),
-d(1949,9,25,9,0,0),
-d(1950,4,30,10,0,0),
-d(1950,9,24,9,0,0),
-d(1951,4,29,10,0,0),
-d(1951,9,30,9,0,0),
-d(1952,4,27,10,0,0),
-d(1952,9,28,9,0,0),
-d(1953,4,26,10,0,0),
-d(1953,9,27,9,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1961,4,30,10,0,0),
-d(1961,9,24,9,0,0),
-d(1962,4,29,10,0,0),
-d(1962,10,28,9,0,0),
-d(1963,4,28,10,0,0),
-d(1963,10,27,9,0,0),
-d(1964,4,26,10,0,0),
-d(1964,10,25,9,0,0),
-d(1965,4,25,10,0,0),
-d(1965,10,31,9,0,0),
-d(1966,4,24,10,0,0),
-d(1966,10,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,4,28,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,4,27,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Pacific = Pacific()
-
diff --git a/modules/pytz/zoneinfo/Canada/Saskatchewan.py b/modules/pytz/zoneinfo/Canada/Saskatchewan.py
deleted file mode 100644
index 33c7cc09..00000000
--- a/modules/pytz/zoneinfo/Canada/Saskatchewan.py
+++ /dev/null
@@ -1,126 +0,0 @@
-'''tzinfo timezone information for Canada/Saskatchewan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Saskatchewan(DstTzInfo):
- '''Canada/Saskatchewan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Saskatchewan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,9,1,6,58,36),
-d(1918,4,14,9,0,0),
-d(1918,10,31,8,0,0),
-d(1930,5,4,7,0,0),
-d(1930,10,5,6,0,0),
-d(1931,5,3,7,0,0),
-d(1931,10,4,6,0,0),
-d(1932,5,1,7,0,0),
-d(1932,10,2,6,0,0),
-d(1933,5,7,7,0,0),
-d(1933,10,1,6,0,0),
-d(1934,5,6,7,0,0),
-d(1934,10,7,6,0,0),
-d(1937,4,11,7,0,0),
-d(1937,10,10,6,0,0),
-d(1938,4,10,7,0,0),
-d(1938,10,2,6,0,0),
-d(1939,4,9,7,0,0),
-d(1939,10,8,6,0,0),
-d(1940,4,14,7,0,0),
-d(1940,10,13,6,0,0),
-d(1941,4,13,7,0,0),
-d(1941,10,12,6,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1946,4,14,9,0,0),
-d(1946,10,13,8,0,0),
-d(1947,4,27,9,0,0),
-d(1947,9,28,8,0,0),
-d(1948,4,25,9,0,0),
-d(1948,9,26,8,0,0),
-d(1949,4,24,9,0,0),
-d(1949,9,25,8,0,0),
-d(1950,4,30,9,0,0),
-d(1950,9,24,8,0,0),
-d(1951,4,29,9,0,0),
-d(1951,9,30,8,0,0),
-d(1952,4,27,9,0,0),
-d(1952,9,28,8,0,0),
-d(1953,4,26,9,0,0),
-d(1953,9,27,8,0,0),
-d(1954,4,25,9,0,0),
-d(1954,9,26,8,0,0),
-d(1955,4,24,9,0,0),
-d(1955,9,25,8,0,0),
-d(1956,4,29,9,0,0),
-d(1956,9,30,8,0,0),
-d(1957,4,28,9,0,0),
-d(1957,9,29,8,0,0),
-d(1959,4,26,9,0,0),
-d(1959,10,25,8,0,0),
-d(1960,4,24,9,0,0),
- ]
-
- _transition_info = [
-i(-25140,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
- ]
-
-Saskatchewan = Saskatchewan()
-
diff --git a/modules/pytz/zoneinfo/Canada/Yukon.py b/modules/pytz/zoneinfo/Canada/Yukon.py
deleted file mode 100644
index c367d938..00000000
--- a/modules/pytz/zoneinfo/Canada/Yukon.py
+++ /dev/null
@@ -1,272 +0,0 @@
-'''tzinfo timezone information for Canada/Yukon.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Yukon(DstTzInfo):
- '''Canada/Yukon timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Canada/Yukon'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,14,11,0,0),
-d(1918,10,27,10,0,0),
-d(1919,5,25,11,0,0),
-d(1919,11,1,8,0,0),
-d(1942,2,9,11,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,10,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,9,0,0),
-d(1966,7,1,11,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YDT'),
-i(-32400,0,'YST'),
-i(-28800,3600,'YWT'),
-i(-28800,3600,'YPT'),
-i(-32400,0,'YST'),
-i(-25200,7200,'YDDT'),
-i(-32400,0,'YST'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Yukon = Yukon()
-
diff --git a/modules/pytz/zoneinfo/Canada/__init__.py b/modules/pytz/zoneinfo/Canada/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Chile/Continental.py b/modules/pytz/zoneinfo/Chile/Continental.py
deleted file mode 100644
index 84dde516..00000000
--- a/modules/pytz/zoneinfo/Chile/Continental.py
+++ /dev/null
@@ -1,334 +0,0 @@
-'''tzinfo timezone information for Chile/Continental.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Continental(DstTzInfo):
- '''Chile/Continental timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Chile/Continental'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1910,1,1,4,42,40),
-d(1918,9,1,5,0,0),
-d(1919,7,2,4,0,0),
-d(1927,9,1,5,0,0),
-d(1928,4,1,4,0,0),
-d(1928,9,1,5,0,0),
-d(1929,4,1,4,0,0),
-d(1929,9,1,5,0,0),
-d(1930,4,1,4,0,0),
-d(1930,9,1,5,0,0),
-d(1931,4,1,4,0,0),
-d(1931,9,1,5,0,0),
-d(1932,4,1,4,0,0),
-d(1932,9,1,5,0,0),
-d(1966,10,9,4,0,0),
-d(1967,3,12,3,0,0),
-d(1967,10,15,4,0,0),
-d(1968,3,10,3,0,0),
-d(1968,10,13,4,0,0),
-d(1969,3,9,3,0,0),
-d(1969,10,12,4,0,0),
-d(1970,3,15,3,0,0),
-d(1970,10,11,4,0,0),
-d(1971,3,14,3,0,0),
-d(1971,10,10,4,0,0),
-d(1972,3,12,3,0,0),
-d(1972,10,15,4,0,0),
-d(1973,3,11,3,0,0),
-d(1973,10,14,4,0,0),
-d(1974,3,10,3,0,0),
-d(1974,10,13,4,0,0),
-d(1975,3,9,3,0,0),
-d(1975,10,12,4,0,0),
-d(1976,3,14,3,0,0),
-d(1976,10,10,4,0,0),
-d(1977,3,13,3,0,0),
-d(1977,10,9,4,0,0),
-d(1978,3,12,3,0,0),
-d(1978,10,15,4,0,0),
-d(1979,3,11,3,0,0),
-d(1979,10,14,4,0,0),
-d(1980,3,9,3,0,0),
-d(1980,10,12,4,0,0),
-d(1981,3,15,3,0,0),
-d(1981,10,11,4,0,0),
-d(1982,3,14,3,0,0),
-d(1982,10,10,4,0,0),
-d(1983,3,13,3,0,0),
-d(1983,10,9,4,0,0),
-d(1984,3,11,3,0,0),
-d(1984,10,14,4,0,0),
-d(1985,3,10,3,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,9,3,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,3,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,13,3,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,12,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,3,11,3,0,0),
-d(1990,10,14,4,0,0),
-d(1991,3,10,3,0,0),
-d(1991,10,13,4,0,0),
-d(1992,3,15,3,0,0),
-d(1992,10,11,4,0,0),
-d(1993,3,14,3,0,0),
-d(1993,10,10,4,0,0),
-d(1994,3,13,3,0,0),
-d(1994,10,9,4,0,0),
-d(1995,3,12,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,3,10,3,0,0),
-d(1996,10,13,4,0,0),
-d(1997,3,9,3,0,0),
-d(1997,10,12,4,0,0),
-d(1998,3,15,3,0,0),
-d(1998,9,27,4,0,0),
-d(1999,4,4,3,0,0),
-d(1999,10,10,4,0,0),
-d(2000,3,12,3,0,0),
-d(2000,10,15,4,0,0),
-d(2001,3,11,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,3,10,3,0,0),
-d(2002,10,13,4,0,0),
-d(2003,3,9,3,0,0),
-d(2003,10,12,4,0,0),
-d(2004,3,14,3,0,0),
-d(2004,10,10,4,0,0),
-d(2005,3,13,3,0,0),
-d(2005,10,9,4,0,0),
-d(2006,3,12,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,3,11,3,0,0),
-d(2007,10,14,4,0,0),
-d(2008,3,9,3,0,0),
-d(2008,10,12,4,0,0),
-d(2009,3,15,3,0,0),
-d(2009,10,11,4,0,0),
-d(2010,3,14,3,0,0),
-d(2010,10,10,4,0,0),
-d(2011,3,13,3,0,0),
-d(2011,10,9,4,0,0),
-d(2012,3,11,3,0,0),
-d(2012,10,14,4,0,0),
-d(2013,3,10,3,0,0),
-d(2013,10,13,4,0,0),
-d(2014,3,9,3,0,0),
-d(2014,10,12,4,0,0),
-d(2015,3,15,3,0,0),
-d(2015,10,11,4,0,0),
-d(2016,3,13,3,0,0),
-d(2016,10,9,4,0,0),
-d(2017,3,12,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,3,11,3,0,0),
-d(2018,10,14,4,0,0),
-d(2019,3,10,3,0,0),
-d(2019,10,13,4,0,0),
-d(2020,3,15,3,0,0),
-d(2020,10,11,4,0,0),
-d(2021,3,14,3,0,0),
-d(2021,10,10,4,0,0),
-d(2022,3,13,3,0,0),
-d(2022,10,9,4,0,0),
-d(2023,3,12,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,3,10,3,0,0),
-d(2024,10,13,4,0,0),
-d(2025,3,9,3,0,0),
-d(2025,10,12,4,0,0),
-d(2026,3,15,3,0,0),
-d(2026,10,11,4,0,0),
-d(2027,3,14,3,0,0),
-d(2027,10,10,4,0,0),
-d(2028,3,12,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,3,11,3,0,0),
-d(2029,10,14,4,0,0),
-d(2030,3,10,3,0,0),
-d(2030,10,13,4,0,0),
-d(2031,3,9,3,0,0),
-d(2031,10,12,4,0,0),
-d(2032,3,14,3,0,0),
-d(2032,10,10,4,0,0),
-d(2033,3,13,3,0,0),
-d(2033,10,9,4,0,0),
-d(2034,3,12,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,3,11,3,0,0),
-d(2035,10,14,4,0,0),
-d(2036,3,9,3,0,0),
-d(2036,10,12,4,0,0),
-d(2037,3,15,3,0,0),
-d(2037,10,11,4,0,0),
- ]
-
- _transition_info = [
-i(-16980,0,'SMT'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,3600,'CLST'),
-i(-18000,0,'CLT'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
-i(-14400,0,'CLT'),
-i(-10800,3600,'CLST'),
- ]
-
-Continental = Continental()
-
diff --git a/modules/pytz/zoneinfo/Chile/EasterIsland.py b/modules/pytz/zoneinfo/Chile/EasterIsland.py
deleted file mode 100644
index 97912ecc..00000000
--- a/modules/pytz/zoneinfo/Chile/EasterIsland.py
+++ /dev/null
@@ -1,310 +0,0 @@
-'''tzinfo timezone information for Chile/EasterIsland.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class EasterIsland(DstTzInfo):
- '''Chile/EasterIsland timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Chile/EasterIsland'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1932,9,1,7,17,28),
-d(1966,10,9,4,0,0),
-d(1967,3,12,3,0,0),
-d(1967,10,15,4,0,0),
-d(1968,3,10,3,0,0),
-d(1968,10,13,4,0,0),
-d(1969,3,9,3,0,0),
-d(1969,10,12,4,0,0),
-d(1970,3,15,3,0,0),
-d(1970,10,11,4,0,0),
-d(1971,3,14,3,0,0),
-d(1971,10,10,4,0,0),
-d(1972,3,12,3,0,0),
-d(1972,10,15,4,0,0),
-d(1973,3,11,3,0,0),
-d(1973,10,14,4,0,0),
-d(1974,3,10,3,0,0),
-d(1974,10,13,4,0,0),
-d(1975,3,9,3,0,0),
-d(1975,10,12,4,0,0),
-d(1976,3,14,3,0,0),
-d(1976,10,10,4,0,0),
-d(1977,3,13,3,0,0),
-d(1977,10,9,4,0,0),
-d(1978,3,12,3,0,0),
-d(1978,10,15,4,0,0),
-d(1979,3,11,3,0,0),
-d(1979,10,14,4,0,0),
-d(1980,3,9,3,0,0),
-d(1980,10,12,4,0,0),
-d(1981,3,15,3,0,0),
-d(1981,10,11,4,0,0),
-d(1982,3,14,3,0,0),
-d(1982,3,14,7,0,0),
-d(1982,10,10,4,0,0),
-d(1983,3,13,3,0,0),
-d(1983,10,9,4,0,0),
-d(1984,3,11,3,0,0),
-d(1984,10,14,4,0,0),
-d(1985,3,10,3,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,9,3,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,3,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,13,3,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,12,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,3,11,3,0,0),
-d(1990,10,14,4,0,0),
-d(1991,3,10,3,0,0),
-d(1991,10,13,4,0,0),
-d(1992,3,15,3,0,0),
-d(1992,10,11,4,0,0),
-d(1993,3,14,3,0,0),
-d(1993,10,10,4,0,0),
-d(1994,3,13,3,0,0),
-d(1994,10,9,4,0,0),
-d(1995,3,12,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,3,10,3,0,0),
-d(1996,10,13,4,0,0),
-d(1997,3,9,3,0,0),
-d(1997,10,12,4,0,0),
-d(1998,3,15,3,0,0),
-d(1998,9,27,4,0,0),
-d(1999,4,4,3,0,0),
-d(1999,10,10,4,0,0),
-d(2000,3,12,3,0,0),
-d(2000,10,15,4,0,0),
-d(2001,3,11,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,3,10,3,0,0),
-d(2002,10,13,4,0,0),
-d(2003,3,9,3,0,0),
-d(2003,10,12,4,0,0),
-d(2004,3,14,3,0,0),
-d(2004,10,10,4,0,0),
-d(2005,3,13,3,0,0),
-d(2005,10,9,4,0,0),
-d(2006,3,12,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,3,11,3,0,0),
-d(2007,10,14,4,0,0),
-d(2008,3,9,3,0,0),
-d(2008,10,12,4,0,0),
-d(2009,3,15,3,0,0),
-d(2009,10,11,4,0,0),
-d(2010,3,14,3,0,0),
-d(2010,10,10,4,0,0),
-d(2011,3,13,3,0,0),
-d(2011,10,9,4,0,0),
-d(2012,3,11,3,0,0),
-d(2012,10,14,4,0,0),
-d(2013,3,10,3,0,0),
-d(2013,10,13,4,0,0),
-d(2014,3,9,3,0,0),
-d(2014,10,12,4,0,0),
-d(2015,3,15,3,0,0),
-d(2015,10,11,4,0,0),
-d(2016,3,13,3,0,0),
-d(2016,10,9,4,0,0),
-d(2017,3,12,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,3,11,3,0,0),
-d(2018,10,14,4,0,0),
-d(2019,3,10,3,0,0),
-d(2019,10,13,4,0,0),
-d(2020,3,15,3,0,0),
-d(2020,10,11,4,0,0),
-d(2021,3,14,3,0,0),
-d(2021,10,10,4,0,0),
-d(2022,3,13,3,0,0),
-d(2022,10,9,4,0,0),
-d(2023,3,12,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,3,10,3,0,0),
-d(2024,10,13,4,0,0),
-d(2025,3,9,3,0,0),
-d(2025,10,12,4,0,0),
-d(2026,3,15,3,0,0),
-d(2026,10,11,4,0,0),
-d(2027,3,14,3,0,0),
-d(2027,10,10,4,0,0),
-d(2028,3,12,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,3,11,3,0,0),
-d(2029,10,14,4,0,0),
-d(2030,3,10,3,0,0),
-d(2030,10,13,4,0,0),
-d(2031,3,9,3,0,0),
-d(2031,10,12,4,0,0),
-d(2032,3,14,3,0,0),
-d(2032,10,10,4,0,0),
-d(2033,3,13,3,0,0),
-d(2033,10,9,4,0,0),
-d(2034,3,12,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,3,11,3,0,0),
-d(2035,10,14,4,0,0),
-d(2036,3,9,3,0,0),
-d(2036,10,12,4,0,0),
-d(2037,3,15,3,0,0),
-d(2037,10,11,4,0,0),
- ]
-
- _transition_info = [
-i(-26220,0,'MMT'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
- ]
-
-EasterIsland = EasterIsland()
-
diff --git a/modules/pytz/zoneinfo/Chile/__init__.py b/modules/pytz/zoneinfo/Chile/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Cuba.py b/modules/pytz/zoneinfo/Cuba.py
deleted file mode 100644
index 5665bc4b..00000000
--- a/modules/pytz/zoneinfo/Cuba.py
+++ /dev/null
@@ -1,330 +0,0 @@
-'''tzinfo timezone information for Cuba.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Cuba(DstTzInfo):
- '''Cuba timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Cuba'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1925,7,19,17,29,36),
-d(1928,6,10,5,0,0),
-d(1928,10,10,4,0,0),
-d(1940,6,2,5,0,0),
-d(1940,9,1,4,0,0),
-d(1941,6,1,5,0,0),
-d(1941,9,7,4,0,0),
-d(1942,6,7,5,0,0),
-d(1942,9,6,4,0,0),
-d(1945,6,3,5,0,0),
-d(1945,9,2,4,0,0),
-d(1946,6,2,5,0,0),
-d(1946,9,1,4,0,0),
-d(1965,6,1,5,0,0),
-d(1965,9,30,4,0,0),
-d(1966,5,29,5,0,0),
-d(1966,10,2,4,0,0),
-d(1967,4,8,5,0,0),
-d(1967,9,10,4,0,0),
-d(1968,4,14,5,0,0),
-d(1968,9,8,4,0,0),
-d(1969,4,27,5,0,0),
-d(1969,10,26,4,0,0),
-d(1970,4,26,5,0,0),
-d(1970,10,25,4,0,0),
-d(1971,4,25,5,0,0),
-d(1971,10,31,4,0,0),
-d(1972,4,30,5,0,0),
-d(1972,10,8,4,0,0),
-d(1973,4,29,5,0,0),
-d(1973,10,8,4,0,0),
-d(1974,4,28,5,0,0),
-d(1974,10,8,4,0,0),
-d(1975,4,27,5,0,0),
-d(1975,10,26,4,0,0),
-d(1976,4,25,5,0,0),
-d(1976,10,31,4,0,0),
-d(1977,4,24,5,0,0),
-d(1977,10,30,4,0,0),
-d(1978,5,7,5,0,0),
-d(1978,10,8,4,0,0),
-d(1979,3,18,5,0,0),
-d(1979,10,14,4,0,0),
-d(1980,3,16,5,0,0),
-d(1980,10,12,4,0,0),
-d(1981,5,10,5,0,0),
-d(1981,10,11,4,0,0),
-d(1982,5,9,5,0,0),
-d(1982,10,10,4,0,0),
-d(1983,5,8,5,0,0),
-d(1983,10,9,4,0,0),
-d(1984,5,6,5,0,0),
-d(1984,10,14,4,0,0),
-d(1985,5,5,5,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,16,5,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,5,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,20,5,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,19,5,0,0),
-d(1989,10,8,4,0,0),
-d(1990,4,1,5,0,0),
-d(1990,10,14,4,0,0),
-d(1991,4,7,5,0,0),
-d(1991,10,13,5,0,0),
-d(1992,4,5,5,0,0),
-d(1992,10,11,5,0,0),
-d(1993,4,4,5,0,0),
-d(1993,10,10,5,0,0),
-d(1994,4,3,5,0,0),
-d(1994,10,9,5,0,0),
-d(1995,4,2,5,0,0),
-d(1995,10,8,5,0,0),
-d(1996,4,7,5,0,0),
-d(1996,10,6,5,0,0),
-d(1997,4,6,5,0,0),
-d(1997,10,12,5,0,0),
-d(1998,3,29,5,0,0),
-d(1998,10,25,5,0,0),
-d(1999,3,28,5,0,0),
-d(1999,10,31,5,0,0),
-d(2000,4,2,5,0,0),
-d(2000,10,29,5,0,0),
-d(2001,4,1,5,0,0),
-d(2001,10,28,5,0,0),
-d(2002,4,7,5,0,0),
-d(2002,10,27,5,0,0),
-d(2003,4,6,5,0,0),
-d(2003,10,26,5,0,0),
-d(2004,4,4,5,0,0),
-d(2006,10,29,5,0,0),
-d(2007,4,1,5,0,0),
-d(2007,10,28,5,0,0),
-d(2008,4,6,5,0,0),
-d(2008,10,26,5,0,0),
-d(2009,4,5,5,0,0),
-d(2009,10,25,5,0,0),
-d(2010,4,4,5,0,0),
-d(2010,10,31,5,0,0),
-d(2011,4,3,5,0,0),
-d(2011,10,30,5,0,0),
-d(2012,4,1,5,0,0),
-d(2012,10,28,5,0,0),
-d(2013,4,7,5,0,0),
-d(2013,10,27,5,0,0),
-d(2014,4,6,5,0,0),
-d(2014,10,26,5,0,0),
-d(2015,4,5,5,0,0),
-d(2015,10,25,5,0,0),
-d(2016,4,3,5,0,0),
-d(2016,10,30,5,0,0),
-d(2017,4,2,5,0,0),
-d(2017,10,29,5,0,0),
-d(2018,4,1,5,0,0),
-d(2018,10,28,5,0,0),
-d(2019,4,7,5,0,0),
-d(2019,10,27,5,0,0),
-d(2020,4,5,5,0,0),
-d(2020,10,25,5,0,0),
-d(2021,4,4,5,0,0),
-d(2021,10,31,5,0,0),
-d(2022,4,3,5,0,0),
-d(2022,10,30,5,0,0),
-d(2023,4,2,5,0,0),
-d(2023,10,29,5,0,0),
-d(2024,4,7,5,0,0),
-d(2024,10,27,5,0,0),
-d(2025,4,6,5,0,0),
-d(2025,10,26,5,0,0),
-d(2026,4,5,5,0,0),
-d(2026,10,25,5,0,0),
-d(2027,4,4,5,0,0),
-d(2027,10,31,5,0,0),
-d(2028,4,2,5,0,0),
-d(2028,10,29,5,0,0),
-d(2029,4,1,5,0,0),
-d(2029,10,28,5,0,0),
-d(2030,4,7,5,0,0),
-d(2030,10,27,5,0,0),
-d(2031,4,6,5,0,0),
-d(2031,10,26,5,0,0),
-d(2032,4,4,5,0,0),
-d(2032,10,31,5,0,0),
-d(2033,4,3,5,0,0),
-d(2033,10,30,5,0,0),
-d(2034,4,2,5,0,0),
-d(2034,10,29,5,0,0),
-d(2035,4,1,5,0,0),
-d(2035,10,28,5,0,0),
-d(2036,4,6,5,0,0),
-d(2036,10,26,5,0,0),
-d(2037,4,5,5,0,0),
-d(2037,10,25,5,0,0),
- ]
-
- _transition_info = [
-i(-19800,0,'HMT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
-i(-14400,3600,'CDT'),
-i(-18000,0,'CST'),
- ]
-
-Cuba = Cuba()
-
diff --git a/modules/pytz/zoneinfo/EET.py b/modules/pytz/zoneinfo/EET.py
deleted file mode 100644
index 9f22313f..00000000
--- a/modules/pytz/zoneinfo/EET.py
+++ /dev/null
@@ -1,264 +0,0 @@
-'''tzinfo timezone information for EET.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class EET(DstTzInfo):
- '''EET timezone definition. See datetime.tzinfo for details'''
-
- zone = 'EET'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-EET = EET()
-
diff --git a/modules/pytz/zoneinfo/EST.py b/modules/pytz/zoneinfo/EST.py
deleted file mode 100644
index cf965783..00000000
--- a/modules/pytz/zoneinfo/EST.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for EST.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class EST(StaticTzInfo):
- '''EST timezone definition. See datetime.tzinfo for details'''
- zone = 'EST'
- _utcoffset = timedelta(seconds=-18000)
- _tzname = 'EST'
-
-EST = EST()
-
diff --git a/modules/pytz/zoneinfo/EST5EDT.py b/modules/pytz/zoneinfo/EST5EDT.py
deleted file mode 100644
index f84da28c..00000000
--- a/modules/pytz/zoneinfo/EST5EDT.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for EST5EDT.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class EST5EDT(DstTzInfo):
- '''EST5EDT timezone definition. See datetime.tzinfo for details'''
-
- zone = 'EST5EDT'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,7,0,0),
-d(1918,10,27,6,0,0),
-d(1919,3,30,7,0,0),
-d(1919,10,26,6,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-EST5EDT = EST5EDT()
-
diff --git a/modules/pytz/zoneinfo/Egypt.py b/modules/pytz/zoneinfo/Egypt.py
deleted file mode 100644
index 93cc6a86..00000000
--- a/modules/pytz/zoneinfo/Egypt.py
+++ /dev/null
@@ -1,368 +0,0 @@
-'''tzinfo timezone information for Egypt.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Egypt(DstTzInfo):
- '''Egypt timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Egypt'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1940,7,14,22,0,0),
-d(1940,9,30,21,0,0),
-d(1941,4,14,22,0,0),
-d(1941,9,15,21,0,0),
-d(1942,3,31,22,0,0),
-d(1942,10,26,21,0,0),
-d(1943,3,31,22,0,0),
-d(1943,10,31,21,0,0),
-d(1944,3,31,22,0,0),
-d(1944,10,31,21,0,0),
-d(1945,4,15,22,0,0),
-d(1945,10,31,21,0,0),
-d(1957,5,9,22,0,0),
-d(1957,9,30,21,0,0),
-d(1958,4,30,22,0,0),
-d(1958,9,30,21,0,0),
-d(1959,4,30,23,0,0),
-d(1959,9,30,0,0,0),
-d(1960,4,30,23,0,0),
-d(1960,9,30,0,0,0),
-d(1961,4,30,23,0,0),
-d(1961,9,30,0,0,0),
-d(1962,4,30,23,0,0),
-d(1962,9,30,0,0,0),
-d(1963,4,30,23,0,0),
-d(1963,9,30,0,0,0),
-d(1964,4,30,23,0,0),
-d(1964,9,30,0,0,0),
-d(1965,4,30,23,0,0),
-d(1965,9,30,0,0,0),
-d(1966,4,30,23,0,0),
-d(1966,10,1,0,0,0),
-d(1967,4,30,23,0,0),
-d(1967,10,1,0,0,0),
-d(1968,4,30,23,0,0),
-d(1968,10,1,0,0,0),
-d(1969,4,30,23,0,0),
-d(1969,10,1,0,0,0),
-d(1970,4,30,23,0,0),
-d(1970,10,1,0,0,0),
-d(1971,4,30,23,0,0),
-d(1971,10,1,0,0,0),
-d(1972,4,30,23,0,0),
-d(1972,10,1,0,0,0),
-d(1973,4,30,23,0,0),
-d(1973,10,1,0,0,0),
-d(1974,4,30,23,0,0),
-d(1974,10,1,0,0,0),
-d(1975,4,30,23,0,0),
-d(1975,10,1,0,0,0),
-d(1976,4,30,23,0,0),
-d(1976,10,1,0,0,0),
-d(1977,4,30,23,0,0),
-d(1977,10,1,0,0,0),
-d(1978,4,30,23,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,30,23,0,0),
-d(1979,10,1,0,0,0),
-d(1980,4,30,23,0,0),
-d(1980,10,1,0,0,0),
-d(1981,4,30,23,0,0),
-d(1981,10,1,0,0,0),
-d(1982,7,24,23,0,0),
-d(1982,10,1,0,0,0),
-d(1983,7,11,23,0,0),
-d(1983,10,1,0,0,0),
-d(1984,4,30,23,0,0),
-d(1984,10,1,0,0,0),
-d(1985,4,30,23,0,0),
-d(1985,10,1,0,0,0),
-d(1986,4,30,23,0,0),
-d(1986,10,1,0,0,0),
-d(1987,4,30,23,0,0),
-d(1987,10,1,0,0,0),
-d(1988,4,30,23,0,0),
-d(1988,10,1,0,0,0),
-d(1989,5,5,23,0,0),
-d(1989,10,1,0,0,0),
-d(1990,4,30,23,0,0),
-d(1990,10,1,0,0,0),
-d(1991,4,30,23,0,0),
-d(1991,10,1,0,0,0),
-d(1992,4,30,23,0,0),
-d(1992,10,1,0,0,0),
-d(1993,4,30,23,0,0),
-d(1993,10,1,0,0,0),
-d(1994,4,30,23,0,0),
-d(1994,10,1,0,0,0),
-d(1995,4,27,22,0,0),
-d(1995,9,28,21,0,0),
-d(1996,4,25,22,0,0),
-d(1996,9,26,21,0,0),
-d(1997,4,24,22,0,0),
-d(1997,9,25,21,0,0),
-d(1998,4,23,22,0,0),
-d(1998,9,24,21,0,0),
-d(1999,4,29,22,0,0),
-d(1999,9,30,21,0,0),
-d(2000,4,27,22,0,0),
-d(2000,9,28,21,0,0),
-d(2001,4,26,22,0,0),
-d(2001,9,27,21,0,0),
-d(2002,4,25,22,0,0),
-d(2002,9,26,21,0,0),
-d(2003,4,24,22,0,0),
-d(2003,9,25,21,0,0),
-d(2004,4,29,22,0,0),
-d(2004,9,30,21,0,0),
-d(2005,4,28,22,0,0),
-d(2005,9,29,21,0,0),
-d(2006,4,27,22,0,0),
-d(2006,9,28,21,0,0),
-d(2007,4,26,22,0,0),
-d(2007,9,27,21,0,0),
-d(2008,4,24,22,0,0),
-d(2008,9,25,21,0,0),
-d(2009,4,23,22,0,0),
-d(2009,9,24,21,0,0),
-d(2010,4,29,22,0,0),
-d(2010,9,30,21,0,0),
-d(2011,4,28,22,0,0),
-d(2011,9,29,21,0,0),
-d(2012,4,26,22,0,0),
-d(2012,9,27,21,0,0),
-d(2013,4,25,22,0,0),
-d(2013,9,26,21,0,0),
-d(2014,4,24,22,0,0),
-d(2014,9,25,21,0,0),
-d(2015,4,23,22,0,0),
-d(2015,9,24,21,0,0),
-d(2016,4,28,22,0,0),
-d(2016,9,29,21,0,0),
-d(2017,4,27,22,0,0),
-d(2017,9,28,21,0,0),
-d(2018,4,26,22,0,0),
-d(2018,9,27,21,0,0),
-d(2019,4,25,22,0,0),
-d(2019,9,26,21,0,0),
-d(2020,4,23,22,0,0),
-d(2020,9,24,21,0,0),
-d(2021,4,29,22,0,0),
-d(2021,9,30,21,0,0),
-d(2022,4,28,22,0,0),
-d(2022,9,29,21,0,0),
-d(2023,4,27,22,0,0),
-d(2023,9,28,21,0,0),
-d(2024,4,25,22,0,0),
-d(2024,9,26,21,0,0),
-d(2025,4,24,22,0,0),
-d(2025,9,25,21,0,0),
-d(2026,4,23,22,0,0),
-d(2026,9,24,21,0,0),
-d(2027,4,29,22,0,0),
-d(2027,9,30,21,0,0),
-d(2028,4,27,22,0,0),
-d(2028,9,28,21,0,0),
-d(2029,4,26,22,0,0),
-d(2029,9,27,21,0,0),
-d(2030,4,25,22,0,0),
-d(2030,9,26,21,0,0),
-d(2031,4,24,22,0,0),
-d(2031,9,25,21,0,0),
-d(2032,4,29,22,0,0),
-d(2032,9,30,21,0,0),
-d(2033,4,28,22,0,0),
-d(2033,9,29,21,0,0),
-d(2034,4,27,22,0,0),
-d(2034,9,28,21,0,0),
-d(2035,4,26,22,0,0),
-d(2035,9,27,21,0,0),
-d(2036,4,24,22,0,0),
-d(2036,9,25,21,0,0),
-d(2037,4,23,22,0,0),
-d(2037,9,24,21,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Egypt = Egypt()
-
diff --git a/modules/pytz/zoneinfo/Eire.py b/modules/pytz/zoneinfo/Eire.py
deleted file mode 100644
index eb7f4abe..00000000
--- a/modules/pytz/zoneinfo/Eire.py
+++ /dev/null
@@ -1,478 +0,0 @@
-'''tzinfo timezone information for Eire.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Eire(DstTzInfo):
- '''Eire timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Eire'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,25,21),
-d(1916,10,1,2,25,21),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1921,12,6,0,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1946,10,6,1,0,0),
-d(1947,3,16,2,0,0),
-d(1947,11,2,1,0,0),
-d(1948,4,18,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,20,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,19,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,10,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,3,26,2,0,0),
-d(1961,10,29,2,0,0),
-d(1962,3,25,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,3,31,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,3,22,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,3,21,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,3,20,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,3,19,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,2,18,2,0,0),
-d(1968,10,26,23,0,0),
-d(1971,10,31,2,0,0),
-d(1972,3,19,2,0,0),
-d(1972,10,29,2,0,0),
-d(1973,3,18,2,0,0),
-d(1973,10,28,2,0,0),
-d(1974,3,17,2,0,0),
-d(1974,10,27,2,0,0),
-d(1975,3,16,2,0,0),
-d(1975,10,26,2,0,0),
-d(1976,3,21,2,0,0),
-d(1976,10,24,2,0,0),
-d(1977,3,20,2,0,0),
-d(1977,10,23,2,0,0),
-d(1978,3,19,2,0,0),
-d(1978,10,29,2,0,0),
-d(1979,3,18,2,0,0),
-d(1979,10,28,2,0,0),
-d(1980,3,16,2,0,0),
-d(1980,10,26,2,0,0),
-d(1981,3,29,1,0,0),
-d(1981,10,25,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,10,24,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,10,23,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,10,28,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,10,27,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,10,26,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,10,25,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,10,23,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,10,29,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,10,28,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,10,27,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,10,25,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,10,24,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,10,23,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,10,22,1,0,0),
-d(1996,1,1,0,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-1500,0,'DMT'),
-i(2100,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(3600,0,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
- ]
-
-Eire = Eire()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT.py b/modules/pytz/zoneinfo/Etc/GMT.py
deleted file mode 100644
index b91f301f..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT(StaticTzInfo):
- '''Etc/GMT timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT = GMT()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT0.py b/modules/pytz/zoneinfo/Etc/GMT0.py
deleted file mode 100644
index ce857ca0..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT0.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT0.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT0(StaticTzInfo):
- '''Etc/GMT0 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT0'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT0 = GMT0()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_0.py b/modules/pytz/zoneinfo/Etc/GMT_minus_0.py
deleted file mode 100644
index fb143c9a..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_0.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_0.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_0(StaticTzInfo):
- '''Etc/GMT_minus_0 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_0'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT_minus_0 = GMT_minus_0()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_1.py b/modules/pytz/zoneinfo/Etc/GMT_minus_1.py
deleted file mode 100644
index b280ae98..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_1.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_1.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_1(StaticTzInfo):
- '''Etc/GMT_minus_1 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_1'
- _utcoffset = timedelta(seconds=3600)
- _tzname = 'GMT-1'
-
-GMT_minus_1 = GMT_minus_1()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_10.py b/modules/pytz/zoneinfo/Etc/GMT_minus_10.py
deleted file mode 100644
index 4c97903f..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_10.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_10.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_10(StaticTzInfo):
- '''Etc/GMT_minus_10 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_10'
- _utcoffset = timedelta(seconds=36000)
- _tzname = 'GMT-10'
-
-GMT_minus_10 = GMT_minus_10()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_11.py b/modules/pytz/zoneinfo/Etc/GMT_minus_11.py
deleted file mode 100644
index 4f7d9d44..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_11.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_11.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_11(StaticTzInfo):
- '''Etc/GMT_minus_11 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_11'
- _utcoffset = timedelta(seconds=39600)
- _tzname = 'GMT-11'
-
-GMT_minus_11 = GMT_minus_11()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_12.py b/modules/pytz/zoneinfo/Etc/GMT_minus_12.py
deleted file mode 100644
index c542dbfe..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_12.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_12.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_12(StaticTzInfo):
- '''Etc/GMT_minus_12 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_12'
- _utcoffset = timedelta(seconds=43200)
- _tzname = 'GMT-12'
-
-GMT_minus_12 = GMT_minus_12()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_13.py b/modules/pytz/zoneinfo/Etc/GMT_minus_13.py
deleted file mode 100644
index 78e23fa8..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_13.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_13.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_13(StaticTzInfo):
- '''Etc/GMT_minus_13 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_13'
- _utcoffset = timedelta(seconds=46800)
- _tzname = 'GMT-13'
-
-GMT_minus_13 = GMT_minus_13()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_14.py b/modules/pytz/zoneinfo/Etc/GMT_minus_14.py
deleted file mode 100644
index b20f9859..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_14.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_14.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_14(StaticTzInfo):
- '''Etc/GMT_minus_14 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_14'
- _utcoffset = timedelta(seconds=50400)
- _tzname = 'GMT-14'
-
-GMT_minus_14 = GMT_minus_14()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_2.py b/modules/pytz/zoneinfo/Etc/GMT_minus_2.py
deleted file mode 100644
index 98aeabbc..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_2.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_2.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_2(StaticTzInfo):
- '''Etc/GMT_minus_2 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_2'
- _utcoffset = timedelta(seconds=7200)
- _tzname = 'GMT-2'
-
-GMT_minus_2 = GMT_minus_2()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_3.py b/modules/pytz/zoneinfo/Etc/GMT_minus_3.py
deleted file mode 100644
index a2d4cd50..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_3.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_3.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_3(StaticTzInfo):
- '''Etc/GMT_minus_3 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_3'
- _utcoffset = timedelta(seconds=10800)
- _tzname = 'GMT-3'
-
-GMT_minus_3 = GMT_minus_3()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_4.py b/modules/pytz/zoneinfo/Etc/GMT_minus_4.py
deleted file mode 100644
index 09575ac2..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_4.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_4.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_4(StaticTzInfo):
- '''Etc/GMT_minus_4 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_4'
- _utcoffset = timedelta(seconds=14400)
- _tzname = 'GMT-4'
-
-GMT_minus_4 = GMT_minus_4()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_5.py b/modules/pytz/zoneinfo/Etc/GMT_minus_5.py
deleted file mode 100644
index 4d93e313..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_5.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_5.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_5(StaticTzInfo):
- '''Etc/GMT_minus_5 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_5'
- _utcoffset = timedelta(seconds=18000)
- _tzname = 'GMT-5'
-
-GMT_minus_5 = GMT_minus_5()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_6.py b/modules/pytz/zoneinfo/Etc/GMT_minus_6.py
deleted file mode 100644
index 02612da4..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_6.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_6.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_6(StaticTzInfo):
- '''Etc/GMT_minus_6 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_6'
- _utcoffset = timedelta(seconds=21600)
- _tzname = 'GMT-6'
-
-GMT_minus_6 = GMT_minus_6()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_7.py b/modules/pytz/zoneinfo/Etc/GMT_minus_7.py
deleted file mode 100644
index b675a696..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_7.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_7.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_7(StaticTzInfo):
- '''Etc/GMT_minus_7 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_7'
- _utcoffset = timedelta(seconds=25200)
- _tzname = 'GMT-7'
-
-GMT_minus_7 = GMT_minus_7()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_8.py b/modules/pytz/zoneinfo/Etc/GMT_minus_8.py
deleted file mode 100644
index 34578205..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_8.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_8.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_8(StaticTzInfo):
- '''Etc/GMT_minus_8 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_8'
- _utcoffset = timedelta(seconds=28800)
- _tzname = 'GMT-8'
-
-GMT_minus_8 = GMT_minus_8()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_minus_9.py b/modules/pytz/zoneinfo/Etc/GMT_minus_9.py
deleted file mode 100644
index 2ab33c50..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_minus_9.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_minus_9.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_9(StaticTzInfo):
- '''Etc/GMT_minus_9 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_minus_9'
- _utcoffset = timedelta(seconds=32400)
- _tzname = 'GMT-9'
-
-GMT_minus_9 = GMT_minus_9()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_0.py b/modules/pytz/zoneinfo/Etc/GMT_plus_0.py
deleted file mode 100644
index 342e2a5d..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_0.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_0.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_0(StaticTzInfo):
- '''Etc/GMT_plus_0 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_0'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT_plus_0 = GMT_plus_0()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_1.py b/modules/pytz/zoneinfo/Etc/GMT_plus_1.py
deleted file mode 100644
index 9b62d1ed..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_1.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_1.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_1(StaticTzInfo):
- '''Etc/GMT_plus_1 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_1'
- _utcoffset = timedelta(seconds=-3600)
- _tzname = 'GMT+1'
-
-GMT_plus_1 = GMT_plus_1()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_10.py b/modules/pytz/zoneinfo/Etc/GMT_plus_10.py
deleted file mode 100644
index cf7943b4..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_10.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_10.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_10(StaticTzInfo):
- '''Etc/GMT_plus_10 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_10'
- _utcoffset = timedelta(seconds=-36000)
- _tzname = 'GMT+10'
-
-GMT_plus_10 = GMT_plus_10()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_11.py b/modules/pytz/zoneinfo/Etc/GMT_plus_11.py
deleted file mode 100644
index fb9e3e08..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_11.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_11.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_11(StaticTzInfo):
- '''Etc/GMT_plus_11 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_11'
- _utcoffset = timedelta(seconds=-39600)
- _tzname = 'GMT+11'
-
-GMT_plus_11 = GMT_plus_11()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_12.py b/modules/pytz/zoneinfo/Etc/GMT_plus_12.py
deleted file mode 100644
index fcf2a236..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_12.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_12.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_12(StaticTzInfo):
- '''Etc/GMT_plus_12 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_12'
- _utcoffset = timedelta(seconds=-43200)
- _tzname = 'GMT+12'
-
-GMT_plus_12 = GMT_plus_12()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_2.py b/modules/pytz/zoneinfo/Etc/GMT_plus_2.py
deleted file mode 100644
index 672dbb2b..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_2.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_2.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_2(StaticTzInfo):
- '''Etc/GMT_plus_2 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_2'
- _utcoffset = timedelta(seconds=-7200)
- _tzname = 'GMT+2'
-
-GMT_plus_2 = GMT_plus_2()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_3.py b/modules/pytz/zoneinfo/Etc/GMT_plus_3.py
deleted file mode 100644
index 1d7f3837..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_3.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_3.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_3(StaticTzInfo):
- '''Etc/GMT_plus_3 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_3'
- _utcoffset = timedelta(seconds=-10800)
- _tzname = 'GMT+3'
-
-GMT_plus_3 = GMT_plus_3()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_4.py b/modules/pytz/zoneinfo/Etc/GMT_plus_4.py
deleted file mode 100644
index 8f199672..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_4.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_4.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_4(StaticTzInfo):
- '''Etc/GMT_plus_4 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_4'
- _utcoffset = timedelta(seconds=-14400)
- _tzname = 'GMT+4'
-
-GMT_plus_4 = GMT_plus_4()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_5.py b/modules/pytz/zoneinfo/Etc/GMT_plus_5.py
deleted file mode 100644
index e1015637..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_5.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_5.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_5(StaticTzInfo):
- '''Etc/GMT_plus_5 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_5'
- _utcoffset = timedelta(seconds=-18000)
- _tzname = 'GMT+5'
-
-GMT_plus_5 = GMT_plus_5()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_6.py b/modules/pytz/zoneinfo/Etc/GMT_plus_6.py
deleted file mode 100644
index ee30aba6..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_6.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_6.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_6(StaticTzInfo):
- '''Etc/GMT_plus_6 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_6'
- _utcoffset = timedelta(seconds=-21600)
- _tzname = 'GMT+6'
-
-GMT_plus_6 = GMT_plus_6()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_7.py b/modules/pytz/zoneinfo/Etc/GMT_plus_7.py
deleted file mode 100644
index e56b8287..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_7.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_7.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_7(StaticTzInfo):
- '''Etc/GMT_plus_7 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_7'
- _utcoffset = timedelta(seconds=-25200)
- _tzname = 'GMT+7'
-
-GMT_plus_7 = GMT_plus_7()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_8.py b/modules/pytz/zoneinfo/Etc/GMT_plus_8.py
deleted file mode 100644
index 63856c90..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_8.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_8.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_8(StaticTzInfo):
- '''Etc/GMT_plus_8 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_8'
- _utcoffset = timedelta(seconds=-28800)
- _tzname = 'GMT+8'
-
-GMT_plus_8 = GMT_plus_8()
-
diff --git a/modules/pytz/zoneinfo/Etc/GMT_plus_9.py b/modules/pytz/zoneinfo/Etc/GMT_plus_9.py
deleted file mode 100644
index 6964c544..00000000
--- a/modules/pytz/zoneinfo/Etc/GMT_plus_9.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/GMT_plus_9.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_9(StaticTzInfo):
- '''Etc/GMT_plus_9 timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/GMT_plus_9'
- _utcoffset = timedelta(seconds=-32400)
- _tzname = 'GMT+9'
-
-GMT_plus_9 = GMT_plus_9()
-
diff --git a/modules/pytz/zoneinfo/Etc/Greenwich.py b/modules/pytz/zoneinfo/Etc/Greenwich.py
deleted file mode 100644
index 74ecf645..00000000
--- a/modules/pytz/zoneinfo/Etc/Greenwich.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/Greenwich.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Greenwich(StaticTzInfo):
- '''Etc/Greenwich timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/Greenwich'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-Greenwich = Greenwich()
-
diff --git a/modules/pytz/zoneinfo/Etc/UCT.py b/modules/pytz/zoneinfo/Etc/UCT.py
deleted file mode 100644
index 3c830816..00000000
--- a/modules/pytz/zoneinfo/Etc/UCT.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/UCT.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class UCT(StaticTzInfo):
- '''Etc/UCT timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/UCT'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UCT'
-
-UCT = UCT()
-
diff --git a/modules/pytz/zoneinfo/Etc/UTC.py b/modules/pytz/zoneinfo/Etc/UTC.py
deleted file mode 100644
index 80eb784c..00000000
--- a/modules/pytz/zoneinfo/Etc/UTC.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/UTC.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class UTC(StaticTzInfo):
- '''Etc/UTC timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/UTC'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UTC'
-
-UTC = UTC()
-
diff --git a/modules/pytz/zoneinfo/Etc/Universal.py b/modules/pytz/zoneinfo/Etc/Universal.py
deleted file mode 100644
index bddf3c45..00000000
--- a/modules/pytz/zoneinfo/Etc/Universal.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/Universal.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Universal(StaticTzInfo):
- '''Etc/Universal timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/Universal'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UTC'
-
-Universal = Universal()
-
diff --git a/modules/pytz/zoneinfo/Etc/Zulu.py b/modules/pytz/zoneinfo/Etc/Zulu.py
deleted file mode 100644
index d569a825..00000000
--- a/modules/pytz/zoneinfo/Etc/Zulu.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Etc/Zulu.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Zulu(StaticTzInfo):
- '''Etc/Zulu timezone definition. See datetime.tzinfo for details'''
- zone = 'Etc/Zulu'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UTC'
-
-Zulu = Zulu()
-
diff --git a/modules/pytz/zoneinfo/Etc/__init__.py b/modules/pytz/zoneinfo/Etc/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Europe/Amsterdam.py b/modules/pytz/zoneinfo/Europe/Amsterdam.py
deleted file mode 100644
index b210f20a..00000000
--- a/modules/pytz/zoneinfo/Europe/Amsterdam.py
+++ /dev/null
@@ -1,380 +0,0 @@
-'''tzinfo timezone information for Europe/Amsterdam.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Amsterdam(DstTzInfo):
- '''Europe/Amsterdam timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Amsterdam'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,23,40,28),
-d(1916,9,30,22,40,28),
-d(1917,4,16,1,40,28),
-d(1917,9,17,1,40,28),
-d(1918,4,1,1,40,28),
-d(1918,9,30,1,40,28),
-d(1919,4,7,1,40,28),
-d(1919,9,29,1,40,28),
-d(1920,4,5,1,40,28),
-d(1920,9,27,1,40,28),
-d(1921,4,4,1,40,28),
-d(1921,9,26,1,40,28),
-d(1922,3,26,1,40,28),
-d(1922,10,8,1,40,28),
-d(1923,6,1,1,40,28),
-d(1923,10,7,1,40,28),
-d(1924,3,30,1,40,28),
-d(1924,10,5,1,40,28),
-d(1925,6,5,1,40,28),
-d(1925,10,4,1,40,28),
-d(1926,5,15,1,40,28),
-d(1926,10,3,1,40,28),
-d(1927,5,15,1,40,28),
-d(1927,10,2,1,40,28),
-d(1928,5,15,1,40,28),
-d(1928,10,7,1,40,28),
-d(1929,5,15,1,40,28),
-d(1929,10,6,1,40,28),
-d(1930,5,15,1,40,28),
-d(1930,10,5,1,40,28),
-d(1931,5,15,1,40,28),
-d(1931,10,4,1,40,28),
-d(1932,5,22,1,40,28),
-d(1932,10,2,1,40,28),
-d(1933,5,15,1,40,28),
-d(1933,10,8,1,40,28),
-d(1934,5,15,1,40,28),
-d(1934,10,7,1,40,28),
-d(1935,5,15,1,40,28),
-d(1935,10,6,1,40,28),
-d(1936,5,15,1,40,28),
-d(1936,10,4,1,40,28),
-d(1937,5,22,1,40,28),
-d(1937,6,30,22,40,28),
-d(1937,10,3,1,40,0),
-d(1938,5,15,1,40,0),
-d(1938,10,2,1,40,0),
-d(1939,5,15,1,40,0),
-d(1939,10,8,1,40,0),
-d(1940,5,15,23,40,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,16,1,0,0),
-d(1976,12,31,23,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(1200,0,'AMT'),
-i(4800,3600,'NST'),
-i(4800,3600,'NEST'),
-i(1200,0,'NET'),
-i(4800,3600,'NEST'),
-i(1200,0,'NET'),
-i(4800,3600,'NEST'),
-i(1200,0,'NET'),
-i(7200,6000,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Amsterdam = Amsterdam()
-
diff --git a/modules/pytz/zoneinfo/Europe/Andorra.py b/modules/pytz/zoneinfo/Europe/Andorra.py
deleted file mode 100644
index 2f5d03d0..00000000
--- a/modules/pytz/zoneinfo/Europe/Andorra.py
+++ /dev/null
@@ -1,234 +0,0 @@
-'''tzinfo timezone information for Europe/Andorra.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Andorra(DstTzInfo):
- '''Europe/Andorra timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Andorra'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1946,9,30,0,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Andorra = Andorra()
-
diff --git a/modules/pytz/zoneinfo/Europe/Athens.py b/modules/pytz/zoneinfo/Europe/Athens.py
deleted file mode 100644
index c76b1960..00000000
--- a/modules/pytz/zoneinfo/Europe/Athens.py
+++ /dev/null
@@ -1,294 +0,0 @@
-'''tzinfo timezone information for Europe/Athens.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Athens(DstTzInfo):
- '''Europe/Athens timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Athens'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,27,22,26,8),
-d(1932,7,6,22,0,0),
-d(1932,8,31,21,0,0),
-d(1941,4,6,22,0,0),
-d(1941,4,29,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,23,0,0),
-d(1943,10,3,22,0,0),
-d(1944,4,3,23,0,0),
-d(1952,6,30,22,0,0),
-d(1952,11,1,21,0,0),
-d(1975,4,11,22,0,0),
-d(1975,11,25,22,0,0),
-d(1976,4,11,0,0,0),
-d(1976,10,10,0,0,0),
-d(1977,4,3,0,0,0),
-d(1977,9,26,0,0,0),
-d(1978,4,2,0,0,0),
-d(1978,9,24,1,0,0),
-d(1979,4,1,7,0,0),
-d(1979,9,28,23,0,0),
-d(1980,3,31,22,0,0),
-d(1980,9,27,21,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(5700,0,'AMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Athens = Athens()
-
diff --git a/modules/pytz/zoneinfo/Europe/Belfast.py b/modules/pytz/zoneinfo/Europe/Belfast.py
deleted file mode 100644
index fa9c7b8d..00000000
--- a/modules/pytz/zoneinfo/Europe/Belfast.py
+++ /dev/null
@@ -1,504 +0,0 @@
-'''tzinfo timezone information for Europe/Belfast.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Belfast(DstTzInfo):
- '''Europe/Belfast timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Belfast'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,0,0),
-d(1916,10,1,2,0,0),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1941,5,4,1,0,0),
-d(1941,8,10,1,0,0),
-d(1942,4,5,1,0,0),
-d(1942,8,9,1,0,0),
-d(1943,4,4,1,0,0),
-d(1943,8,15,1,0,0),
-d(1944,4,2,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,7,15,1,0,0),
-d(1945,10,7,2,0,0),
-d(1946,4,14,2,0,0),
-d(1946,10,6,2,0,0),
-d(1947,3,16,2,0,0),
-d(1947,4,13,1,0,0),
-d(1947,8,10,1,0,0),
-d(1947,11,2,2,0,0),
-d(1948,3,14,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,20,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,19,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,10,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,3,26,2,0,0),
-d(1961,10,29,2,0,0),
-d(1962,3,25,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,3,31,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,3,22,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,3,21,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,3,20,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,3,19,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,2,18,2,0,0),
-d(1968,10,26,23,0,0),
-d(1971,10,31,2,0,0),
-d(1972,3,19,2,0,0),
-d(1972,10,29,2,0,0),
-d(1973,3,18,2,0,0),
-d(1973,10,28,2,0,0),
-d(1974,3,17,2,0,0),
-d(1974,10,27,2,0,0),
-d(1975,3,16,2,0,0),
-d(1975,10,26,2,0,0),
-d(1976,3,21,2,0,0),
-d(1976,10,24,2,0,0),
-d(1977,3,20,2,0,0),
-d(1977,10,23,2,0,0),
-d(1978,3,19,2,0,0),
-d(1978,10,29,2,0,0),
-d(1979,3,18,2,0,0),
-d(1979,10,28,2,0,0),
-d(1980,3,16,2,0,0),
-d(1980,10,26,2,0,0),
-d(1981,3,29,1,0,0),
-d(1981,10,25,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,10,24,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,10,23,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,10,28,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,10,27,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,10,26,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,10,25,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,10,23,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,10,29,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,10,28,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,10,27,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,10,25,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,10,24,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,10,23,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,10,22,1,0,0),
-d(1996,1,1,0,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(3600,0,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
- ]
-
-Belfast = Belfast()
-
diff --git a/modules/pytz/zoneinfo/Europe/Belgrade.py b/modules/pytz/zoneinfo/Europe/Belgrade.py
deleted file mode 100644
index 9d363754..00000000
--- a/modules/pytz/zoneinfo/Europe/Belgrade.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Europe/Belgrade.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Belgrade(DstTzInfo):
- '''Europe/Belgrade timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Belgrade'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,4,18,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,5,8,1,0,0),
-d(1945,9,16,1,0,0),
-d(1982,11,26,23,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Belgrade = Belgrade()
-
diff --git a/modules/pytz/zoneinfo/Europe/Berlin.py b/modules/pytz/zoneinfo/Europe/Berlin.py
deleted file mode 100644
index bf588a1c..00000000
--- a/modules/pytz/zoneinfo/Europe/Berlin.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for Europe/Berlin.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Berlin(DstTzInfo):
- '''Europe/Berlin timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Berlin'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,5,24,0,0,0),
-d(1945,9,24,0,0,0),
-d(1945,11,18,1,0,0),
-d(1946,4,14,1,0,0),
-d(1946,10,7,1,0,0),
-d(1947,4,6,1,0,0),
-d(1947,5,11,1,0,0),
-d(1947,6,29,0,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,18,1,0,0),
-d(1948,10,3,1,0,0),
-d(1949,4,10,1,0,0),
-d(1949,10,2,1,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,7200,'CEMT'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,7200,'CEMT'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Berlin = Berlin()
-
diff --git a/modules/pytz/zoneinfo/Europe/Bratislava.py b/modules/pytz/zoneinfo/Europe/Bratislava.py
deleted file mode 100644
index db606b77..00000000
--- a/modules/pytz/zoneinfo/Europe/Bratislava.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Europe/Bratislava.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bratislava(DstTzInfo):
- '''Europe/Bratislava timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Bratislava'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,8,1,0,0),
-d(1945,11,18,1,0,0),
-d(1946,5,6,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,4,20,1,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,18,1,0,0),
-d(1948,10,3,1,0,0),
-d(1949,4,9,1,0,0),
-d(1949,10,2,1,0,0),
-d(1978,12,31,23,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Bratislava = Bratislava()
-
diff --git a/modules/pytz/zoneinfo/Europe/Brussels.py b/modules/pytz/zoneinfo/Europe/Brussels.py
deleted file mode 100644
index 51a28a3f..00000000
--- a/modules/pytz/zoneinfo/Europe/Brussels.py
+++ /dev/null
@@ -1,390 +0,0 @@
-'''tzinfo timezone information for Europe/Brussels.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Brussels(DstTzInfo):
- '''Europe/Brussels timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Brussels'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1914,11,8,0,0,0),
-d(1916,4,30,23,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1918,11,11,11,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,4,23,0,0),
-d(1920,2,14,23,0,0),
-d(1920,10,23,23,0,0),
-d(1921,3,14,23,0,0),
-d(1921,10,25,23,0,0),
-d(1922,3,25,23,0,0),
-d(1922,10,7,23,0,0),
-d(1923,4,21,23,0,0),
-d(1923,10,6,23,0,0),
-d(1924,3,29,23,0,0),
-d(1924,10,4,23,0,0),
-d(1925,4,4,23,0,0),
-d(1925,10,3,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,3,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,3,26,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,8,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,3,31,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,4,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,3,27,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1940,5,20,2,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,2,22,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,16,1,0,0),
-d(1946,5,19,1,0,0),
-d(1946,10,7,1,0,0),
-d(1976,12,31,23,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Brussels = Brussels()
-
diff --git a/modules/pytz/zoneinfo/Europe/Bucharest.py b/modules/pytz/zoneinfo/Europe/Bucharest.py
deleted file mode 100644
index c565d9ef..00000000
--- a/modules/pytz/zoneinfo/Europe/Bucharest.py
+++ /dev/null
@@ -1,294 +0,0 @@
-'''tzinfo timezone information for Europe/Bucharest.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Bucharest(DstTzInfo):
- '''Europe/Bucharest timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Bucharest'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1931,7,23,22,15,36),
-d(1932,5,20,22,0,0),
-d(1932,10,1,22,0,0),
-d(1933,4,1,22,0,0),
-d(1933,9,30,22,0,0),
-d(1934,4,7,22,0,0),
-d(1934,10,6,22,0,0),
-d(1935,4,6,22,0,0),
-d(1935,10,5,22,0,0),
-d(1936,4,4,22,0,0),
-d(1936,10,3,22,0,0),
-d(1937,4,3,22,0,0),
-d(1937,10,2,22,0,0),
-d(1938,4,2,22,0,0),
-d(1938,10,1,22,0,0),
-d(1939,4,1,22,0,0),
-d(1939,9,30,22,0,0),
-d(1979,5,26,22,0,0),
-d(1979,9,29,21,0,0),
-d(1980,4,5,21,0,0),
-d(1980,9,27,22,0,0),
-d(1981,3,29,0,0,0),
-d(1981,9,27,0,0,0),
-d(1982,3,28,0,0,0),
-d(1982,9,26,0,0,0),
-d(1983,3,27,0,0,0),
-d(1983,9,25,0,0,0),
-d(1984,3,25,0,0,0),
-d(1984,9,30,0,0,0),
-d(1985,3,31,0,0,0),
-d(1985,9,29,0,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1988,3,27,0,0,0),
-d(1988,9,25,0,0,0),
-d(1989,3,26,0,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1990,12,31,22,0,0),
-d(1991,3,30,22,0,0),
-d(1991,9,28,22,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,22,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,22,0,0),
-d(1993,12,31,22,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,21,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(6240,0,'BMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Bucharest = Bucharest()
-
diff --git a/modules/pytz/zoneinfo/Europe/Budapest.py b/modules/pytz/zoneinfo/Europe/Budapest.py
deleted file mode 100644
index 3421346b..00000000
--- a/modules/pytz/zoneinfo/Europe/Budapest.py
+++ /dev/null
@@ -1,326 +0,0 @@
-'''tzinfo timezone information for Europe/Budapest.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Budapest(DstTzInfo):
- '''Europe/Budapest timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Budapest'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1917,12,31,23,0,0),
-d(1918,4,1,2,0,0),
-d(1918,9,29,1,0,0),
-d(1919,4,15,2,0,0),
-d(1919,9,15,1,0,0),
-d(1920,4,5,2,0,0),
-d(1920,9,30,1,0,0),
-d(1941,4,6,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,5,1,22,0,0),
-d(1945,11,2,22,0,0),
-d(1946,3,31,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,4,6,1,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,4,1,0,0),
-d(1948,10,3,1,0,0),
-d(1949,4,10,1,0,0),
-d(1949,10,2,1,0,0),
-d(1950,4,17,1,0,0),
-d(1950,10,23,1,0,0),
-d(1954,5,22,23,0,0),
-d(1954,10,2,22,0,0),
-d(1955,5,22,23,0,0),
-d(1955,10,2,22,0,0),
-d(1956,6,2,23,0,0),
-d(1956,9,29,22,0,0),
-d(1957,6,2,0,0,0),
-d(1957,9,29,1,0,0),
-d(1980,4,6,0,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Budapest = Budapest()
-
diff --git a/modules/pytz/zoneinfo/Europe/Chisinau.py b/modules/pytz/zoneinfo/Europe/Chisinau.py
deleted file mode 100644
index a433db39..00000000
--- a/modules/pytz/zoneinfo/Europe/Chisinau.py
+++ /dev/null
@@ -1,300 +0,0 @@
-'''tzinfo timezone information for Europe/Chisinau.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chisinau(DstTzInfo):
- '''Europe/Chisinau timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Chisinau'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,2,14,22,5,0),
-d(1931,7,23,22,15,36),
-d(1932,5,20,22,0,0),
-d(1932,10,1,22,0,0),
-d(1933,4,1,22,0,0),
-d(1933,9,30,22,0,0),
-d(1934,4,7,22,0,0),
-d(1934,10,6,22,0,0),
-d(1935,4,6,22,0,0),
-d(1935,10,5,22,0,0),
-d(1936,4,4,22,0,0),
-d(1936,10,3,22,0,0),
-d(1937,4,3,22,0,0),
-d(1937,10,2,22,0,0),
-d(1938,4,2,22,0,0),
-d(1938,10,1,22,0,0),
-d(1939,4,1,22,0,0),
-d(1939,9,30,22,0,0),
-d(1940,8,14,22,0,0),
-d(1941,7,16,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,8,23,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1989,12,31,21,0,0),
-d(1990,5,5,21,0,0),
-d(1991,3,31,0,0,0),
-d(1991,9,29,0,0,0),
-d(1991,12,31,22,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,21,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(6900,0,'CMT'),
-i(6240,0,'BMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Chisinau = Chisinau()
-
diff --git a/modules/pytz/zoneinfo/Europe/Copenhagen.py b/modules/pytz/zoneinfo/Europe/Copenhagen.py
deleted file mode 100644
index 9a0f2b68..00000000
--- a/modules/pytz/zoneinfo/Europe/Copenhagen.py
+++ /dev/null
@@ -1,286 +0,0 @@
-'''tzinfo timezone information for Europe/Copenhagen.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Copenhagen(DstTzInfo):
- '''Europe/Copenhagen timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Copenhagen'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,14,22,0,0),
-d(1916,9,30,21,0,0),
-d(1940,5,14,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,8,15,1,0,0),
-d(1946,5,1,1,0,0),
-d(1946,9,1,1,0,0),
-d(1947,5,4,1,0,0),
-d(1947,8,10,1,0,0),
-d(1948,5,9,1,0,0),
-d(1948,8,8,1,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Copenhagen = Copenhagen()
-
diff --git a/modules/pytz/zoneinfo/Europe/Dublin.py b/modules/pytz/zoneinfo/Europe/Dublin.py
deleted file mode 100644
index 845c206d..00000000
--- a/modules/pytz/zoneinfo/Europe/Dublin.py
+++ /dev/null
@@ -1,478 +0,0 @@
-'''tzinfo timezone information for Europe/Dublin.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Dublin(DstTzInfo):
- '''Europe/Dublin timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Dublin'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,25,21),
-d(1916,10,1,2,25,21),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1921,12,6,0,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1946,10,6,1,0,0),
-d(1947,3,16,2,0,0),
-d(1947,11,2,1,0,0),
-d(1948,4,18,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,20,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,19,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,10,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,3,26,2,0,0),
-d(1961,10,29,2,0,0),
-d(1962,3,25,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,3,31,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,3,22,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,3,21,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,3,20,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,3,19,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,2,18,2,0,0),
-d(1968,10,26,23,0,0),
-d(1971,10,31,2,0,0),
-d(1972,3,19,2,0,0),
-d(1972,10,29,2,0,0),
-d(1973,3,18,2,0,0),
-d(1973,10,28,2,0,0),
-d(1974,3,17,2,0,0),
-d(1974,10,27,2,0,0),
-d(1975,3,16,2,0,0),
-d(1975,10,26,2,0,0),
-d(1976,3,21,2,0,0),
-d(1976,10,24,2,0,0),
-d(1977,3,20,2,0,0),
-d(1977,10,23,2,0,0),
-d(1978,3,19,2,0,0),
-d(1978,10,29,2,0,0),
-d(1979,3,18,2,0,0),
-d(1979,10,28,2,0,0),
-d(1980,3,16,2,0,0),
-d(1980,10,26,2,0,0),
-d(1981,3,29,1,0,0),
-d(1981,10,25,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,10,24,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,10,23,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,10,28,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,10,27,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,10,26,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,10,25,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,10,23,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,10,29,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,10,28,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,10,27,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,10,25,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,10,24,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,10,23,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,10,22,1,0,0),
-d(1996,1,1,0,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-1500,0,'DMT'),
-i(2100,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(3600,0,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
-i(3600,3600,'IST'),
-i(0,0,'GMT'),
- ]
-
-Dublin = Dublin()
-
diff --git a/modules/pytz/zoneinfo/Europe/Gibraltar.py b/modules/pytz/zoneinfo/Europe/Gibraltar.py
deleted file mode 100644
index b0598e8d..00000000
--- a/modules/pytz/zoneinfo/Europe/Gibraltar.py
+++ /dev/null
@@ -1,414 +0,0 @@
-'''tzinfo timezone information for Europe/Gibraltar.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Gibraltar(DstTzInfo):
- '''Europe/Gibraltar timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Gibraltar'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,0,0),
-d(1916,10,1,2,0,0),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1941,5,4,1,0,0),
-d(1941,8,10,1,0,0),
-d(1942,4,5,1,0,0),
-d(1942,8,9,1,0,0),
-d(1943,4,4,1,0,0),
-d(1943,8,15,1,0,0),
-d(1944,4,2,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,7,15,1,0,0),
-d(1945,10,7,2,0,0),
-d(1946,4,14,2,0,0),
-d(1946,10,6,2,0,0),
-d(1947,3,16,2,0,0),
-d(1947,4,13,1,0,0),
-d(1947,8,10,1,0,0),
-d(1947,11,2,2,0,0),
-d(1948,3,14,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Gibraltar = Gibraltar()
-
diff --git a/modules/pytz/zoneinfo/Europe/Helsinki.py b/modules/pytz/zoneinfo/Europe/Helsinki.py
deleted file mode 100644
index eefbebbc..00000000
--- a/modules/pytz/zoneinfo/Europe/Helsinki.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Europe/Helsinki.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Helsinki(DstTzInfo):
- '''Europe/Helsinki timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Helsinki'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,4,30,22,20,8),
-d(1942,4,2,22,0,0),
-d(1942,10,2,21,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(6000,0,'HMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Helsinki = Helsinki()
-
diff --git a/modules/pytz/zoneinfo/Europe/Istanbul.py b/modules/pytz/zoneinfo/Europe/Istanbul.py
deleted file mode 100644
index 7f02cca9..00000000
--- a/modules/pytz/zoneinfo/Europe/Istanbul.py
+++ /dev/null
@@ -1,362 +0,0 @@
-'''tzinfo timezone information for Europe/Istanbul.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Istanbul(DstTzInfo):
- '''Europe/Istanbul timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Istanbul'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1910,9,30,22,3,4),
-d(1916,4,30,22,0,0),
-d(1916,9,30,21,0,0),
-d(1920,3,27,22,0,0),
-d(1920,10,24,21,0,0),
-d(1921,4,2,22,0,0),
-d(1921,10,2,21,0,0),
-d(1922,3,25,22,0,0),
-d(1922,10,7,21,0,0),
-d(1924,5,12,22,0,0),
-d(1924,9,30,21,0,0),
-d(1925,4,30,22,0,0),
-d(1925,9,30,21,0,0),
-d(1940,6,29,22,0,0),
-d(1940,10,4,21,0,0),
-d(1940,11,30,22,0,0),
-d(1941,9,20,21,0,0),
-d(1942,3,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1945,4,1,22,0,0),
-d(1945,10,7,21,0,0),
-d(1946,5,31,22,0,0),
-d(1946,9,30,21,0,0),
-d(1947,4,19,22,0,0),
-d(1947,10,4,21,0,0),
-d(1948,4,17,22,0,0),
-d(1948,10,2,21,0,0),
-d(1949,4,9,22,0,0),
-d(1949,10,1,21,0,0),
-d(1950,4,18,22,0,0),
-d(1950,10,7,21,0,0),
-d(1951,4,21,22,0,0),
-d(1951,10,7,21,0,0),
-d(1962,7,14,22,0,0),
-d(1962,10,7,21,0,0),
-d(1964,5,14,22,0,0),
-d(1964,9,30,21,0,0),
-d(1970,5,2,22,0,0),
-d(1970,10,3,21,0,0),
-d(1971,5,1,22,0,0),
-d(1971,10,2,21,0,0),
-d(1972,5,6,22,0,0),
-d(1972,10,7,21,0,0),
-d(1973,6,2,23,0,0),
-d(1973,11,4,0,0,0),
-d(1974,3,31,0,0,0),
-d(1974,11,3,2,0,0),
-d(1975,3,29,22,0,0),
-d(1975,10,25,21,0,0),
-d(1976,5,31,22,0,0),
-d(1976,10,30,21,0,0),
-d(1977,4,2,22,0,0),
-d(1977,10,15,21,0,0),
-d(1978,4,1,22,0,0),
-d(1978,10,14,21,0,0),
-d(1979,10,14,20,0,0),
-d(1980,4,6,0,0,0),
-d(1980,10,12,20,0,0),
-d(1981,3,29,0,0,0),
-d(1981,10,11,20,0,0),
-d(1982,3,28,0,0,0),
-d(1982,10,10,20,0,0),
-d(1983,7,30,21,0,0),
-d(1983,10,1,20,0,0),
-d(1985,4,19,21,0,0),
-d(1985,9,27,21,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1988,3,27,0,0,0),
-d(1988,9,25,0,0,0),
-d(1989,3,26,0,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1990,12,31,22,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7020,0,'IMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(14400,7200,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Istanbul = Istanbul()
-
diff --git a/modules/pytz/zoneinfo/Europe/Kaliningrad.py b/modules/pytz/zoneinfo/Europe/Kaliningrad.py
deleted file mode 100644
index a0fe042c..00000000
--- a/modules/pytz/zoneinfo/Europe/Kaliningrad.py
+++ /dev/null
@@ -1,280 +0,0 @@
-'''tzinfo timezone information for Europe/Kaliningrad.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kaliningrad(DstTzInfo):
- '''Europe/Kaliningrad timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Kaliningrad'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1944,12,31,23,0,0),
-d(1945,4,28,22,0,0),
-d(1945,10,31,21,0,0),
-d(1945,12,31,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1990,3,24,23,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,29,0,0,0),
-d(1992,3,28,21,0,0),
-d(1992,9,26,20,0,0),
-d(1993,3,28,0,0,0),
-d(1993,9,26,0,0,0),
-d(1994,3,27,0,0,0),
-d(1994,9,25,0,0,0),
-d(1995,3,26,0,0,0),
-d(1995,9,24,0,0,0),
-d(1996,3,31,0,0,0),
-d(1996,10,27,0,0,0),
-d(1997,3,30,0,0,0),
-d(1997,10,26,0,0,0),
-d(1998,3,29,0,0,0),
-d(1998,10,25,0,0,0),
-d(1999,3,28,0,0,0),
-d(1999,10,31,0,0,0),
-d(2000,3,26,0,0,0),
-d(2000,10,29,0,0,0),
-d(2001,3,25,0,0,0),
-d(2001,10,28,0,0,0),
-d(2002,3,31,0,0,0),
-d(2002,10,27,0,0,0),
-d(2003,3,30,0,0,0),
-d(2003,10,26,0,0,0),
-d(2004,3,28,0,0,0),
-d(2004,10,31,0,0,0),
-d(2005,3,27,0,0,0),
-d(2005,10,30,0,0,0),
-d(2006,3,26,0,0,0),
-d(2006,10,29,0,0,0),
-d(2007,3,25,0,0,0),
-d(2007,10,28,0,0,0),
-d(2008,3,30,0,0,0),
-d(2008,10,26,0,0,0),
-d(2009,3,29,0,0,0),
-d(2009,10,25,0,0,0),
-d(2010,3,28,0,0,0),
-d(2010,10,31,0,0,0),
-d(2011,3,27,0,0,0),
-d(2011,10,30,0,0,0),
-d(2012,3,25,0,0,0),
-d(2012,10,28,0,0,0),
-d(2013,3,31,0,0,0),
-d(2013,10,27,0,0,0),
-d(2014,3,30,0,0,0),
-d(2014,10,26,0,0,0),
-d(2015,3,29,0,0,0),
-d(2015,10,25,0,0,0),
-d(2016,3,27,0,0,0),
-d(2016,10,30,0,0,0),
-d(2017,3,26,0,0,0),
-d(2017,10,29,0,0,0),
-d(2018,3,25,0,0,0),
-d(2018,10,28,0,0,0),
-d(2019,3,31,0,0,0),
-d(2019,10,27,0,0,0),
-d(2020,3,29,0,0,0),
-d(2020,10,25,0,0,0),
-d(2021,3,28,0,0,0),
-d(2021,10,31,0,0,0),
-d(2022,3,27,0,0,0),
-d(2022,10,30,0,0,0),
-d(2023,3,26,0,0,0),
-d(2023,10,29,0,0,0),
-d(2024,3,31,0,0,0),
-d(2024,10,27,0,0,0),
-d(2025,3,30,0,0,0),
-d(2025,10,26,0,0,0),
-d(2026,3,29,0,0,0),
-d(2026,10,25,0,0,0),
-d(2027,3,28,0,0,0),
-d(2027,10,31,0,0,0),
-d(2028,3,26,0,0,0),
-d(2028,10,29,0,0,0),
-d(2029,3,25,0,0,0),
-d(2029,10,28,0,0,0),
-d(2030,3,31,0,0,0),
-d(2030,10,27,0,0,0),
-d(2031,3,30,0,0,0),
-d(2031,10,26,0,0,0),
-d(2032,3,28,0,0,0),
-d(2032,10,31,0,0,0),
-d(2033,3,27,0,0,0),
-d(2033,10,30,0,0,0),
-d(2034,3,26,0,0,0),
-d(2034,10,29,0,0,0),
-d(2035,3,25,0,0,0),
-d(2035,10,28,0,0,0),
-d(2036,3,30,0,0,0),
-d(2036,10,26,0,0,0),
-d(2037,3,29,0,0,0),
-d(2037,10,25,0,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'CET'),
-i(10800,3600,'CEST'),
-i(7200,0,'CET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Kaliningrad = Kaliningrad()
-
diff --git a/modules/pytz/zoneinfo/Europe/Kiev.py b/modules/pytz/zoneinfo/Europe/Kiev.py
deleted file mode 100644
index 6219010a..00000000
--- a/modules/pytz/zoneinfo/Europe/Kiev.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Europe/Kiev.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kiev(DstTzInfo):
- '''Europe/Kiev timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Kiev'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,21,57,56),
-d(1930,6,20,22,0,0),
-d(1941,9,19,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1943,11,5,23,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1989,12,31,21,0,0),
-d(1990,6,30,23,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7320,0,'KMT'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Kiev = Kiev()
-
diff --git a/modules/pytz/zoneinfo/Europe/Lisbon.py b/modules/pytz/zoneinfo/Europe/Lisbon.py
deleted file mode 100644
index a522a5e6..00000000
--- a/modules/pytz/zoneinfo/Europe/Lisbon.py
+++ /dev/null
@@ -1,462 +0,0 @@
-'''tzinfo timezone information for Europe/Lisbon.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Lisbon(DstTzInfo):
- '''Europe/Lisbon timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Lisbon'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,36,32),
-d(1916,6,17,23,0,0),
-d(1916,11,1,0,0,0),
-d(1917,2,28,23,0,0),
-d(1917,10,14,23,0,0),
-d(1918,3,1,23,0,0),
-d(1918,10,14,23,0,0),
-d(1919,2,28,23,0,0),
-d(1919,10,14,23,0,0),
-d(1920,2,29,23,0,0),
-d(1920,10,14,23,0,0),
-d(1921,2,28,23,0,0),
-d(1921,10,14,23,0,0),
-d(1924,4,16,23,0,0),
-d(1924,10,14,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,6,23,0,0),
-d(1929,4,20,23,0,0),
-d(1929,10,5,23,0,0),
-d(1931,4,18,23,0,0),
-d(1931,10,3,23,0,0),
-d(1932,4,2,23,0,0),
-d(1932,10,1,23,0,0),
-d(1934,4,7,23,0,0),
-d(1934,10,6,23,0,0),
-d(1935,3,30,23,0,0),
-d(1935,10,5,23,0,0),
-d(1936,4,18,23,0,0),
-d(1936,10,3,23,0,0),
-d(1937,4,3,23,0,0),
-d(1937,10,2,23,0,0),
-d(1938,3,26,23,0,0),
-d(1938,10,1,23,0,0),
-d(1939,4,15,23,0,0),
-d(1939,11,18,23,0,0),
-d(1940,2,24,23,0,0),
-d(1940,10,5,23,0,0),
-d(1941,4,5,23,0,0),
-d(1941,10,5,23,0,0),
-d(1942,3,14,23,0,0),
-d(1942,4,25,22,0,0),
-d(1942,8,15,22,0,0),
-d(1942,10,24,23,0,0),
-d(1943,3,13,23,0,0),
-d(1943,4,17,22,0,0),
-d(1943,8,28,22,0,0),
-d(1943,10,30,23,0,0),
-d(1944,3,11,23,0,0),
-d(1944,4,22,22,0,0),
-d(1944,8,26,22,0,0),
-d(1944,10,28,23,0,0),
-d(1945,3,10,23,0,0),
-d(1945,4,21,22,0,0),
-d(1945,8,25,22,0,0),
-d(1945,10,27,23,0,0),
-d(1946,4,6,23,0,0),
-d(1946,10,5,23,0,0),
-d(1947,4,6,2,0,0),
-d(1947,10,5,2,0,0),
-d(1948,4,4,2,0,0),
-d(1948,10,3,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,2,2,0,0),
-d(1951,4,1,2,0,0),
-d(1951,10,7,2,0,0),
-d(1952,4,6,2,0,0),
-d(1952,10,5,2,0,0),
-d(1953,4,5,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,4,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,3,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,1,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,7,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,6,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,5,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,3,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,4,2,2,0,0),
-d(1961,10,1,2,0,0),
-d(1962,4,1,2,0,0),
-d(1962,10,7,2,0,0),
-d(1963,4,7,2,0,0),
-d(1963,10,6,2,0,0),
-d(1964,4,5,2,0,0),
-d(1964,10,4,2,0,0),
-d(1965,4,4,2,0,0),
-d(1965,10,3,2,0,0),
-d(1966,4,3,2,0,0),
-d(1976,9,26,0,0,0),
-d(1977,3,27,0,0,0),
-d(1977,9,25,0,0,0),
-d(1978,4,2,0,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,1,0,0,0),
-d(1979,9,30,1,0,0),
-d(1980,3,30,0,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,2,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-2220,0,'LMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
- ]
-
-Lisbon = Lisbon()
-
diff --git a/modules/pytz/zoneinfo/Europe/Ljubljana.py b/modules/pytz/zoneinfo/Europe/Ljubljana.py
deleted file mode 100644
index adf954f0..00000000
--- a/modules/pytz/zoneinfo/Europe/Ljubljana.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Europe/Ljubljana.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Ljubljana(DstTzInfo):
- '''Europe/Ljubljana timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Ljubljana'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,4,18,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,5,8,1,0,0),
-d(1945,9,16,1,0,0),
-d(1982,11,26,23,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Ljubljana = Ljubljana()
-
diff --git a/modules/pytz/zoneinfo/Europe/London.py b/modules/pytz/zoneinfo/Europe/London.py
deleted file mode 100644
index 9eff5985..00000000
--- a/modules/pytz/zoneinfo/Europe/London.py
+++ /dev/null
@@ -1,504 +0,0 @@
-'''tzinfo timezone information for Europe/London.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class London(DstTzInfo):
- '''Europe/London timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/London'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,0,0),
-d(1916,10,1,2,0,0),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1941,5,4,1,0,0),
-d(1941,8,10,1,0,0),
-d(1942,4,5,1,0,0),
-d(1942,8,9,1,0,0),
-d(1943,4,4,1,0,0),
-d(1943,8,15,1,0,0),
-d(1944,4,2,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,7,15,1,0,0),
-d(1945,10,7,2,0,0),
-d(1946,4,14,2,0,0),
-d(1946,10,6,2,0,0),
-d(1947,3,16,2,0,0),
-d(1947,4,13,1,0,0),
-d(1947,8,10,1,0,0),
-d(1947,11,2,2,0,0),
-d(1948,3,14,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,20,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,19,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,10,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,3,26,2,0,0),
-d(1961,10,29,2,0,0),
-d(1962,3,25,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,3,31,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,3,22,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,3,21,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,3,20,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,3,19,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,2,18,2,0,0),
-d(1968,10,26,23,0,0),
-d(1971,10,31,2,0,0),
-d(1972,3,19,2,0,0),
-d(1972,10,29,2,0,0),
-d(1973,3,18,2,0,0),
-d(1973,10,28,2,0,0),
-d(1974,3,17,2,0,0),
-d(1974,10,27,2,0,0),
-d(1975,3,16,2,0,0),
-d(1975,10,26,2,0,0),
-d(1976,3,21,2,0,0),
-d(1976,10,24,2,0,0),
-d(1977,3,20,2,0,0),
-d(1977,10,23,2,0,0),
-d(1978,3,19,2,0,0),
-d(1978,10,29,2,0,0),
-d(1979,3,18,2,0,0),
-d(1979,10,28,2,0,0),
-d(1980,3,16,2,0,0),
-d(1980,10,26,2,0,0),
-d(1981,3,29,1,0,0),
-d(1981,10,25,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,10,24,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,10,23,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,10,28,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,10,27,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,10,26,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,10,25,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,10,23,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,10,29,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,10,28,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,10,27,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,10,25,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,10,24,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,10,23,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,10,22,1,0,0),
-d(1996,1,1,0,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(3600,0,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
- ]
-
-London = London()
-
diff --git a/modules/pytz/zoneinfo/Europe/Luxembourg.py b/modules/pytz/zoneinfo/Europe/Luxembourg.py
deleted file mode 100644
index 89884ecd..00000000
--- a/modules/pytz/zoneinfo/Europe/Luxembourg.py
+++ /dev/null
@@ -1,388 +0,0 @@
-'''tzinfo timezone information for Europe/Luxembourg.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Luxembourg(DstTzInfo):
- '''Europe/Luxembourg timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Luxembourg'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1904,5,31,23,35,24),
-d(1916,5,14,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,28,22,0,0),
-d(1917,9,16,23,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1918,11,24,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,5,2,0,0),
-d(1920,2,14,23,0,0),
-d(1920,10,24,1,0,0),
-d(1921,3,14,23,0,0),
-d(1921,10,26,1,0,0),
-d(1922,3,25,23,0,0),
-d(1922,10,8,0,0,0),
-d(1923,4,21,23,0,0),
-d(1923,10,7,1,0,0),
-d(1924,3,29,23,0,0),
-d(1924,10,5,0,0,0),
-d(1925,4,5,23,0,0),
-d(1925,10,4,0,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,3,0,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,2,0,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,7,0,0,0),
-d(1929,4,20,23,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,3,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,3,26,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,8,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,3,31,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,4,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,3,27,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1940,5,14,2,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,18,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,16,1,0,0),
-d(1946,5,19,1,0,0),
-d(1946,10,7,1,0,0),
-d(1976,12,31,23,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(1500,0,'LMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEST'),
-i(3600,0,'WET'),
-i(7200,3600,'WEST'),
-i(3600,0,'WET'),
-i(7200,3600,'WEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Luxembourg = Luxembourg()
-
diff --git a/modules/pytz/zoneinfo/Europe/Madrid.py b/modules/pytz/zoneinfo/Europe/Madrid.py
deleted file mode 100644
index 9d86ecfe..00000000
--- a/modules/pytz/zoneinfo/Europe/Madrid.py
+++ /dev/null
@@ -1,346 +0,0 @@
-'''tzinfo timezone information for Europe/Madrid.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Madrid(DstTzInfo):
- '''Europe/Madrid timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Madrid'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,5,5,23,0,0),
-d(1917,10,6,23,0,0),
-d(1918,4,15,23,0,0),
-d(1918,10,6,23,0,0),
-d(1919,4,5,23,0,0),
-d(1919,10,6,23,0,0),
-d(1924,4,16,23,0,0),
-d(1924,10,4,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,6,23,0,0),
-d(1929,4,20,23,0,0),
-d(1929,10,5,23,0,0),
-d(1937,5,22,23,0,0),
-d(1937,10,2,23,0,0),
-d(1938,3,22,23,0,0),
-d(1938,10,1,23,0,0),
-d(1939,4,15,23,0,0),
-d(1939,10,7,23,0,0),
-d(1940,3,16,23,0,0),
-d(1942,5,2,22,0,0),
-d(1942,9,1,22,0,0),
-d(1943,4,17,22,0,0),
-d(1943,10,3,22,0,0),
-d(1944,4,15,22,0,0),
-d(1944,10,10,22,0,0),
-d(1945,4,14,22,0,0),
-d(1945,9,29,23,0,0),
-d(1946,4,13,22,0,0),
-d(1946,9,29,22,0,0),
-d(1949,4,30,22,0,0),
-d(1949,9,29,23,0,0),
-d(1974,4,13,22,0,0),
-d(1974,10,5,23,0,0),
-d(1975,4,19,22,0,0),
-d(1975,10,4,23,0,0),
-d(1976,3,27,22,0,0),
-d(1976,9,25,23,0,0),
-d(1977,4,2,22,0,0),
-d(1977,9,24,23,0,0),
-d(1978,4,2,22,0,0),
-d(1978,9,30,23,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Madrid = Madrid()
-
diff --git a/modules/pytz/zoneinfo/Europe/Malta.py b/modules/pytz/zoneinfo/Europe/Malta.py
deleted file mode 100644
index e361bfc5..00000000
--- a/modules/pytz/zoneinfo/Europe/Malta.py
+++ /dev/null
@@ -1,356 +0,0 @@
-'''tzinfo timezone information for Europe/Malta.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Malta(DstTzInfo):
- '''Europe/Malta timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Malta'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,6,2,23,0,0),
-d(1916,9,30,23,0,0),
-d(1917,3,31,23,0,0),
-d(1917,9,29,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,5,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,4,23,0,0),
-d(1920,3,20,23,0,0),
-d(1920,9,18,23,0,0),
-d(1940,6,14,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,14,23,0,0),
-d(1946,3,17,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,3,15,23,0,0),
-d(1947,10,4,23,0,0),
-d(1948,2,29,1,0,0),
-d(1948,10,3,1,0,0),
-d(1966,5,21,23,0,0),
-d(1966,9,24,22,0,0),
-d(1967,5,27,23,0,0),
-d(1967,9,23,22,0,0),
-d(1968,5,25,23,0,0),
-d(1968,9,21,22,0,0),
-d(1969,5,31,23,0,0),
-d(1969,9,27,22,0,0),
-d(1970,5,30,23,0,0),
-d(1970,9,26,22,0,0),
-d(1971,5,22,23,0,0),
-d(1971,9,25,23,0,0),
-d(1972,5,27,23,0,0),
-d(1972,9,30,22,0,0),
-d(1973,3,30,23,0,0),
-d(1973,9,28,23,0,0),
-d(1974,4,20,23,0,0),
-d(1974,9,15,23,0,0),
-d(1975,4,20,1,0,0),
-d(1975,9,21,0,0,0),
-d(1976,4,18,1,0,0),
-d(1976,9,19,0,0,0),
-d(1977,4,17,1,0,0),
-d(1977,9,18,0,0,0),
-d(1978,4,16,1,0,0),
-d(1978,9,17,0,0,0),
-d(1979,4,15,1,0,0),
-d(1979,9,16,0,0,0),
-d(1980,3,31,1,0,0),
-d(1980,9,21,0,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Malta = Malta()
-
diff --git a/modules/pytz/zoneinfo/Europe/Mariehamn.py b/modules/pytz/zoneinfo/Europe/Mariehamn.py
deleted file mode 100644
index cd8bb70f..00000000
--- a/modules/pytz/zoneinfo/Europe/Mariehamn.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Europe/Mariehamn.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mariehamn(DstTzInfo):
- '''Europe/Mariehamn timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Mariehamn'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,4,30,22,20,8),
-d(1942,4,2,22,0,0),
-d(1942,10,2,21,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(6000,0,'HMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Mariehamn = Mariehamn()
-
diff --git a/modules/pytz/zoneinfo/Europe/Minsk.py b/modules/pytz/zoneinfo/Europe/Minsk.py
deleted file mode 100644
index 2a1bb6da..00000000
--- a/modules/pytz/zoneinfo/Europe/Minsk.py
+++ /dev/null
@@ -1,262 +0,0 @@
-'''tzinfo timezone information for Europe/Minsk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Minsk(DstTzInfo):
- '''Europe/Minsk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Minsk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,22,10,0),
-d(1930,6,20,22,0,0),
-d(1941,6,27,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,7,2,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1989,12,31,21,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,29,0,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,22,0,0),
-d(1993,3,28,0,0,0),
-d(1993,9,26,0,0,0),
-d(1994,3,27,0,0,0),
-d(1994,9,25,0,0,0),
-d(1995,3,26,0,0,0),
-d(1995,9,24,0,0,0),
-d(1996,3,31,0,0,0),
-d(1996,10,27,0,0,0),
-d(1997,3,30,0,0,0),
-d(1997,10,26,0,0,0),
-d(1998,3,29,0,0,0),
-d(1998,10,25,0,0,0),
-d(1999,3,28,0,0,0),
-d(1999,10,31,0,0,0),
-d(2000,3,26,0,0,0),
-d(2000,10,29,0,0,0),
-d(2001,3,25,0,0,0),
-d(2001,10,28,0,0,0),
-d(2002,3,31,0,0,0),
-d(2002,10,27,0,0,0),
-d(2003,3,30,0,0,0),
-d(2003,10,26,0,0,0),
-d(2004,3,28,0,0,0),
-d(2004,10,31,0,0,0),
-d(2005,3,27,0,0,0),
-d(2005,10,30,0,0,0),
-d(2006,3,26,0,0,0),
-d(2006,10,29,0,0,0),
-d(2007,3,25,0,0,0),
-d(2007,10,28,0,0,0),
-d(2008,3,30,0,0,0),
-d(2008,10,26,0,0,0),
-d(2009,3,29,0,0,0),
-d(2009,10,25,0,0,0),
-d(2010,3,28,0,0,0),
-d(2010,10,31,0,0,0),
-d(2011,3,27,0,0,0),
-d(2011,10,30,0,0,0),
-d(2012,3,25,0,0,0),
-d(2012,10,28,0,0,0),
-d(2013,3,31,0,0,0),
-d(2013,10,27,0,0,0),
-d(2014,3,30,0,0,0),
-d(2014,10,26,0,0,0),
-d(2015,3,29,0,0,0),
-d(2015,10,25,0,0,0),
-d(2016,3,27,0,0,0),
-d(2016,10,30,0,0,0),
-d(2017,3,26,0,0,0),
-d(2017,10,29,0,0,0),
-d(2018,3,25,0,0,0),
-d(2018,10,28,0,0,0),
-d(2019,3,31,0,0,0),
-d(2019,10,27,0,0,0),
-d(2020,3,29,0,0,0),
-d(2020,10,25,0,0,0),
-d(2021,3,28,0,0,0),
-d(2021,10,31,0,0,0),
-d(2022,3,27,0,0,0),
-d(2022,10,30,0,0,0),
-d(2023,3,26,0,0,0),
-d(2023,10,29,0,0,0),
-d(2024,3,31,0,0,0),
-d(2024,10,27,0,0,0),
-d(2025,3,30,0,0,0),
-d(2025,10,26,0,0,0),
-d(2026,3,29,0,0,0),
-d(2026,10,25,0,0,0),
-d(2027,3,28,0,0,0),
-d(2027,10,31,0,0,0),
-d(2028,3,26,0,0,0),
-d(2028,10,29,0,0,0),
-d(2029,3,25,0,0,0),
-d(2029,10,28,0,0,0),
-d(2030,3,31,0,0,0),
-d(2030,10,27,0,0,0),
-d(2031,3,30,0,0,0),
-d(2031,10,26,0,0,0),
-d(2032,3,28,0,0,0),
-d(2032,10,31,0,0,0),
-d(2033,3,27,0,0,0),
-d(2033,10,30,0,0,0),
-d(2034,3,26,0,0,0),
-d(2034,10,29,0,0,0),
-d(2035,3,25,0,0,0),
-d(2035,10,28,0,0,0),
-d(2036,3,30,0,0,0),
-d(2036,10,26,0,0,0),
-d(2037,3,29,0,0,0),
-d(2037,10,25,0,0,0),
- ]
-
- _transition_info = [
-i(6600,0,'MMT'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Minsk = Minsk()
-
diff --git a/modules/pytz/zoneinfo/Europe/Monaco.py b/modules/pytz/zoneinfo/Europe/Monaco.py
deleted file mode 100644
index 4884ef22..00000000
--- a/modules/pytz/zoneinfo/Europe/Monaco.py
+++ /dev/null
@@ -1,388 +0,0 @@
-'''tzinfo timezone information for Europe/Monaco.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Monaco(DstTzInfo):
- '''Europe/Monaco timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Monaco'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,3,10,23,50,39),
-d(1916,6,14,23,0,0),
-d(1916,10,1,23,0,0),
-d(1917,3,24,23,0,0),
-d(1917,10,7,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,6,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,5,23,0,0),
-d(1920,2,14,23,0,0),
-d(1920,10,23,23,0,0),
-d(1921,3,14,23,0,0),
-d(1921,10,25,23,0,0),
-d(1922,3,25,23,0,0),
-d(1922,10,7,23,0,0),
-d(1923,5,26,23,0,0),
-d(1923,10,6,23,0,0),
-d(1924,3,29,23,0,0),
-d(1924,10,4,23,0,0),
-d(1925,4,4,23,0,0),
-d(1925,10,3,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,6,23,0,0),
-d(1929,4,20,23,0,0),
-d(1929,10,5,23,0,0),
-d(1930,4,12,23,0,0),
-d(1930,10,4,23,0,0),
-d(1931,4,18,23,0,0),
-d(1931,10,3,23,0,0),
-d(1932,4,2,23,0,0),
-d(1932,10,1,23,0,0),
-d(1933,3,25,23,0,0),
-d(1933,10,7,23,0,0),
-d(1934,4,7,23,0,0),
-d(1934,10,6,23,0,0),
-d(1935,3,30,23,0,0),
-d(1935,10,5,23,0,0),
-d(1936,4,18,23,0,0),
-d(1936,10,3,23,0,0),
-d(1937,4,3,23,0,0),
-d(1937,10,2,23,0,0),
-d(1938,3,26,23,0,0),
-d(1938,10,1,23,0,0),
-d(1939,4,15,23,0,0),
-d(1939,11,18,23,0,0),
-d(1940,2,25,2,0,0),
-d(1941,5,4,23,0,0),
-d(1941,10,5,22,0,0),
-d(1942,3,8,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,7,23,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,16,1,0,0),
-d(1976,3,28,0,0,0),
-d(1976,9,25,23,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(540,0,'PMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Monaco = Monaco()
-
diff --git a/modules/pytz/zoneinfo/Europe/Moscow.py b/modules/pytz/zoneinfo/Europe/Moscow.py
deleted file mode 100644
index 943112d0..00000000
--- a/modules/pytz/zoneinfo/Europe/Moscow.py
+++ /dev/null
@@ -1,278 +0,0 @@
-'''tzinfo timezone information for Europe/Moscow.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Moscow(DstTzInfo):
- '''Europe/Moscow timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Moscow'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,2,21,30,0),
-d(1917,7,1,20,29,12),
-d(1917,12,27,20,29,12),
-d(1918,5,31,19,29,12),
-d(1918,9,15,20,29,12),
-d(1919,5,31,19,29,12),
-d(1919,6,30,21,29,12),
-d(1919,8,15,20,0,0),
-d(1921,2,14,20,0,0),
-d(1921,3,20,19,0,0),
-d(1921,8,31,19,0,0),
-d(1921,9,30,20,0,0),
-d(1922,9,30,21,0,0),
-d(1930,6,20,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1990,3,24,23,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,29,0,0,0),
-d(1992,1,19,0,0,0),
-d(1992,3,28,20,0,0),
-d(1992,9,26,19,0,0),
-d(1993,3,27,23,0,0),
-d(1993,9,25,23,0,0),
-d(1994,3,26,23,0,0),
-d(1994,9,24,23,0,0),
-d(1995,3,25,23,0,0),
-d(1995,9,23,23,0,0),
-d(1996,3,30,23,0,0),
-d(1996,10,26,23,0,0),
-d(1997,3,29,23,0,0),
-d(1997,10,25,23,0,0),
-d(1998,3,28,23,0,0),
-d(1998,10,24,23,0,0),
-d(1999,3,27,23,0,0),
-d(1999,10,30,23,0,0),
-d(2000,3,25,23,0,0),
-d(2000,10,28,23,0,0),
-d(2001,3,24,23,0,0),
-d(2001,10,27,23,0,0),
-d(2002,3,30,23,0,0),
-d(2002,10,26,23,0,0),
-d(2003,3,29,23,0,0),
-d(2003,10,25,23,0,0),
-d(2004,3,27,23,0,0),
-d(2004,10,30,23,0,0),
-d(2005,3,26,23,0,0),
-d(2005,10,29,23,0,0),
-d(2006,3,25,23,0,0),
-d(2006,10,28,23,0,0),
-d(2007,3,24,23,0,0),
-d(2007,10,27,23,0,0),
-d(2008,3,29,23,0,0),
-d(2008,10,25,23,0,0),
-d(2009,3,28,23,0,0),
-d(2009,10,24,23,0,0),
-d(2010,3,27,23,0,0),
-d(2010,10,30,23,0,0),
-d(2011,3,26,23,0,0),
-d(2011,10,29,23,0,0),
-d(2012,3,24,23,0,0),
-d(2012,10,27,23,0,0),
-d(2013,3,30,23,0,0),
-d(2013,10,26,23,0,0),
-d(2014,3,29,23,0,0),
-d(2014,10,25,23,0,0),
-d(2015,3,28,23,0,0),
-d(2015,10,24,23,0,0),
-d(2016,3,26,23,0,0),
-d(2016,10,29,23,0,0),
-d(2017,3,25,23,0,0),
-d(2017,10,28,23,0,0),
-d(2018,3,24,23,0,0),
-d(2018,10,27,23,0,0),
-d(2019,3,30,23,0,0),
-d(2019,10,26,23,0,0),
-d(2020,3,28,23,0,0),
-d(2020,10,24,23,0,0),
-d(2021,3,27,23,0,0),
-d(2021,10,30,23,0,0),
-d(2022,3,26,23,0,0),
-d(2022,10,29,23,0,0),
-d(2023,3,25,23,0,0),
-d(2023,10,28,23,0,0),
-d(2024,3,30,23,0,0),
-d(2024,10,26,23,0,0),
-d(2025,3,29,23,0,0),
-d(2025,10,25,23,0,0),
-d(2026,3,28,23,0,0),
-d(2026,10,24,23,0,0),
-d(2027,3,27,23,0,0),
-d(2027,10,30,23,0,0),
-d(2028,3,25,23,0,0),
-d(2028,10,28,23,0,0),
-d(2029,3,24,23,0,0),
-d(2029,10,27,23,0,0),
-d(2030,3,30,23,0,0),
-d(2030,10,26,23,0,0),
-d(2031,3,29,23,0,0),
-d(2031,10,25,23,0,0),
-d(2032,3,27,23,0,0),
-d(2032,10,30,23,0,0),
-d(2033,3,26,23,0,0),
-d(2033,10,29,23,0,0),
-d(2034,3,25,23,0,0),
-d(2034,10,28,23,0,0),
-d(2035,3,24,23,0,0),
-d(2035,10,27,23,0,0),
-d(2036,3,29,23,0,0),
-d(2036,10,25,23,0,0),
-d(2037,3,28,23,0,0),
-d(2037,10,24,23,0,0),
- ]
-
- _transition_info = [
-i(9000,0,'MMT'),
-i(9060,0,'MMT'),
-i(12660,3600,'MST'),
-i(9060,0,'MMT'),
-i(16260,7200,'MDST'),
-i(12660,3600,'MST'),
-i(16260,7200,'MDST'),
-i(14400,5340,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(18000,7200,'MSD'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
- ]
-
-Moscow = Moscow()
-
diff --git a/modules/pytz/zoneinfo/Europe/Nicosia.py b/modules/pytz/zoneinfo/Europe/Nicosia.py
deleted file mode 100644
index 0eb3bc8f..00000000
--- a/modules/pytz/zoneinfo/Europe/Nicosia.py
+++ /dev/null
@@ -1,274 +0,0 @@
-'''tzinfo timezone information for Europe/Nicosia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nicosia(DstTzInfo):
- '''Europe/Nicosia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Nicosia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,11,13,21,46,32),
-d(1975,4,12,22,0,0),
-d(1975,10,11,21,0,0),
-d(1976,5,14,22,0,0),
-d(1976,10,10,21,0,0),
-d(1977,4,2,22,0,0),
-d(1977,9,24,21,0,0),
-d(1978,4,1,22,0,0),
-d(1978,10,1,21,0,0),
-d(1979,3,31,22,0,0),
-d(1979,9,29,21,0,0),
-d(1980,4,5,22,0,0),
-d(1980,9,27,21,0,0),
-d(1981,3,28,22,0,0),
-d(1981,9,26,21,0,0),
-d(1982,3,27,22,0,0),
-d(1982,9,25,21,0,0),
-d(1983,3,26,22,0,0),
-d(1983,9,24,21,0,0),
-d(1984,3,24,22,0,0),
-d(1984,9,29,21,0,0),
-d(1985,3,30,22,0,0),
-d(1985,9,28,21,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,21,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,21,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,21,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,21,0,0),
-d(1990,3,24,22,0,0),
-d(1990,9,29,21,0,0),
-d(1991,3,30,22,0,0),
-d(1991,9,28,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,9,28,21,0,0),
-d(1997,3,29,22,0,0),
-d(1997,9,27,21,0,0),
-d(1998,3,28,22,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7980,0,'LMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Nicosia = Nicosia()
-
diff --git a/modules/pytz/zoneinfo/Europe/Oslo.py b/modules/pytz/zoneinfo/Europe/Oslo.py
deleted file mode 100644
index f2e47949..00000000
--- a/modules/pytz/zoneinfo/Europe/Oslo.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Europe/Oslo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Oslo(DstTzInfo):
- '''Europe/Oslo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Oslo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,22,0,0,0),
-d(1916,9,29,22,0,0),
-d(1940,8,10,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,10,1,1,0,0),
-d(1959,3,15,1,0,0),
-d(1959,9,20,1,0,0),
-d(1960,3,20,1,0,0),
-d(1960,9,18,1,0,0),
-d(1961,3,19,1,0,0),
-d(1961,9,17,1,0,0),
-d(1962,3,18,1,0,0),
-d(1962,9,16,1,0,0),
-d(1963,3,17,1,0,0),
-d(1963,9,15,1,0,0),
-d(1964,3,15,1,0,0),
-d(1964,9,20,1,0,0),
-d(1965,4,25,1,0,0),
-d(1965,9,19,1,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Oslo = Oslo()
-
diff --git a/modules/pytz/zoneinfo/Europe/Paris.py b/modules/pytz/zoneinfo/Europe/Paris.py
deleted file mode 100644
index 59892b45..00000000
--- a/modules/pytz/zoneinfo/Europe/Paris.py
+++ /dev/null
@@ -1,386 +0,0 @@
-'''tzinfo timezone information for Europe/Paris.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Paris(DstTzInfo):
- '''Europe/Paris timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Paris'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,3,10,23,51,39),
-d(1916,6,14,23,0,0),
-d(1916,10,1,23,0,0),
-d(1917,3,24,23,0,0),
-d(1917,10,7,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,6,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,5,23,0,0),
-d(1920,2,14,23,0,0),
-d(1920,10,23,23,0,0),
-d(1921,3,14,23,0,0),
-d(1921,10,25,23,0,0),
-d(1922,3,25,23,0,0),
-d(1922,10,7,23,0,0),
-d(1923,5,26,23,0,0),
-d(1923,10,6,23,0,0),
-d(1924,3,29,23,0,0),
-d(1924,10,4,23,0,0),
-d(1925,4,4,23,0,0),
-d(1925,10,3,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,6,23,0,0),
-d(1929,4,20,23,0,0),
-d(1929,10,5,23,0,0),
-d(1930,4,12,23,0,0),
-d(1930,10,4,23,0,0),
-d(1931,4,18,23,0,0),
-d(1931,10,3,23,0,0),
-d(1932,4,2,23,0,0),
-d(1932,10,1,23,0,0),
-d(1933,3,25,23,0,0),
-d(1933,10,7,23,0,0),
-d(1934,4,7,23,0,0),
-d(1934,10,6,23,0,0),
-d(1935,3,30,23,0,0),
-d(1935,10,5,23,0,0),
-d(1936,4,18,23,0,0),
-d(1936,10,3,23,0,0),
-d(1937,4,3,23,0,0),
-d(1937,10,2,23,0,0),
-d(1938,3,26,23,0,0),
-d(1938,10,1,23,0,0),
-d(1939,4,15,23,0,0),
-d(1939,11,18,23,0,0),
-d(1940,2,25,2,0,0),
-d(1940,6,14,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,8,24,22,0,0),
-d(1944,10,7,23,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,16,1,0,0),
-d(1976,3,28,0,0,0),
-d(1976,9,25,23,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(540,0,'PMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,3600,'WEMT'),
-i(3600,0,'WEST'),
-i(7200,3600,'WEMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Paris = Paris()
-
diff --git a/modules/pytz/zoneinfo/Europe/Prague.py b/modules/pytz/zoneinfo/Europe/Prague.py
deleted file mode 100644
index 9c7f982b..00000000
--- a/modules/pytz/zoneinfo/Europe/Prague.py
+++ /dev/null
@@ -1,302 +0,0 @@
-'''tzinfo timezone information for Europe/Prague.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Prague(DstTzInfo):
- '''Europe/Prague timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Prague'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,8,1,0,0),
-d(1945,11,18,1,0,0),
-d(1946,5,6,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,4,20,1,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,18,1,0,0),
-d(1948,10,3,1,0,0),
-d(1949,4,9,1,0,0),
-d(1949,10,2,1,0,0),
-d(1978,12,31,23,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Prague = Prague()
-
diff --git a/modules/pytz/zoneinfo/Europe/Riga.py b/modules/pytz/zoneinfo/Europe/Riga.py
deleted file mode 100644
index 45b59725..00000000
--- a/modules/pytz/zoneinfo/Europe/Riga.py
+++ /dev/null
@@ -1,274 +0,0 @@
-'''tzinfo timezone information for Europe/Riga.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Riga(DstTzInfo):
- '''Europe/Riga timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Riga'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,4,15,0,23,36),
-d(1918,9,16,0,23,36),
-d(1919,4,1,0,23,36),
-d(1919,5,22,0,23,36),
-d(1926,5,10,22,23,36),
-d(1940,8,4,22,0,0),
-d(1941,6,30,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1944,10,12,23,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1991,3,31,0,0,0),
-d(1991,9,29,0,0,0),
-d(1992,3,29,0,0,0),
-d(1992,9,27,0,0,0),
-d(1993,3,28,0,0,0),
-d(1993,9,26,0,0,0),
-d(1994,3,27,0,0,0),
-d(1994,9,25,0,0,0),
-d(1995,3,26,0,0,0),
-d(1995,9,24,0,0,0),
-d(1996,3,31,0,0,0),
-d(1996,9,29,0,0,0),
-d(1997,1,20,22,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,2,28,22,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(5760,0,'RMT'),
-i(9360,3600,'LST'),
-i(5760,0,'RMT'),
-i(9360,3600,'LST'),
-i(5760,0,'RMT'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Riga = Riga()
-
diff --git a/modules/pytz/zoneinfo/Europe/Rome.py b/modules/pytz/zoneinfo/Europe/Rome.py
deleted file mode 100644
index 758a6ed8..00000000
--- a/modules/pytz/zoneinfo/Europe/Rome.py
+++ /dev/null
@@ -1,360 +0,0 @@
-'''tzinfo timezone information for Europe/Rome.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rome(DstTzInfo):
- '''Europe/Rome timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Rome'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,6,2,23,0,0),
-d(1916,9,30,23,0,0),
-d(1917,3,31,23,0,0),
-d(1917,9,29,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,5,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,4,23,0,0),
-d(1920,3,20,23,0,0),
-d(1920,9,18,23,0,0),
-d(1940,6,14,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,6,30,22,0,0),
-d(1944,9,16,23,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,14,23,0,0),
-d(1946,3,17,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,3,15,23,0,0),
-d(1947,10,4,23,0,0),
-d(1948,2,29,1,0,0),
-d(1948,10,3,1,0,0),
-d(1966,5,21,23,0,0),
-d(1966,9,24,22,0,0),
-d(1967,5,27,23,0,0),
-d(1967,9,23,22,0,0),
-d(1968,5,25,23,0,0),
-d(1968,9,21,22,0,0),
-d(1969,5,31,23,0,0),
-d(1969,9,27,22,0,0),
-d(1970,5,30,23,0,0),
-d(1970,9,26,22,0,0),
-d(1971,5,22,23,0,0),
-d(1971,9,25,23,0,0),
-d(1972,5,27,23,0,0),
-d(1972,9,30,22,0,0),
-d(1973,6,2,23,0,0),
-d(1973,9,29,22,0,0),
-d(1974,5,25,23,0,0),
-d(1974,9,28,22,0,0),
-d(1975,5,31,23,0,0),
-d(1975,9,27,23,0,0),
-d(1976,5,29,23,0,0),
-d(1976,9,25,23,0,0),
-d(1977,5,21,23,0,0),
-d(1977,9,24,23,0,0),
-d(1978,5,27,23,0,0),
-d(1978,9,30,23,0,0),
-d(1979,5,26,23,0,0),
-d(1979,9,29,23,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Rome = Rome()
-
diff --git a/modules/pytz/zoneinfo/Europe/Samara.py b/modules/pytz/zoneinfo/Europe/Samara.py
deleted file mode 100644
index 9be132a3..00000000
--- a/modules/pytz/zoneinfo/Europe/Samara.py
+++ /dev/null
@@ -1,254 +0,0 @@
-'''tzinfo timezone information for Europe/Samara.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Samara(DstTzInfo):
- '''Europe/Samara timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Samara'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,6,30,22,39,24),
-d(1930,6,20,21,0,0),
-d(1981,3,31,20,0,0),
-d(1981,9,30,19,0,0),
-d(1982,3,31,20,0,0),
-d(1982,9,30,19,0,0),
-d(1983,3,31,20,0,0),
-d(1983,9,30,19,0,0),
-d(1984,3,31,20,0,0),
-d(1984,9,29,22,0,0),
-d(1985,3,30,22,0,0),
-d(1985,9,28,22,0,0),
-d(1986,3,29,22,0,0),
-d(1986,9,27,22,0,0),
-d(1987,3,28,22,0,0),
-d(1987,9,26,22,0,0),
-d(1988,3,26,22,0,0),
-d(1988,9,24,22,0,0),
-d(1989,3,25,22,0,0),
-d(1989,9,23,23,0,0),
-d(1990,3,24,23,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,29,0,0,0),
-d(1991,10,20,0,0,0),
-d(1992,3,28,19,0,0),
-d(1992,9,26,18,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,22,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,22,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,22,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,22,0,0),
-d(1997,3,29,22,0,0),
-d(1997,10,25,22,0,0),
-d(1998,3,28,22,0,0),
-d(1998,10,24,22,0,0),
-d(1999,3,27,22,0,0),
-d(1999,10,30,22,0,0),
-d(2000,3,25,22,0,0),
-d(2000,10,28,22,0,0),
-d(2001,3,24,22,0,0),
-d(2001,10,27,22,0,0),
-d(2002,3,30,22,0,0),
-d(2002,10,26,22,0,0),
-d(2003,3,29,22,0,0),
-d(2003,10,25,22,0,0),
-d(2004,3,27,22,0,0),
-d(2004,10,30,22,0,0),
-d(2005,3,26,22,0,0),
-d(2005,10,29,22,0,0),
-d(2006,3,25,22,0,0),
-d(2006,10,28,22,0,0),
-d(2007,3,24,22,0,0),
-d(2007,10,27,22,0,0),
-d(2008,3,29,22,0,0),
-d(2008,10,25,22,0,0),
-d(2009,3,28,22,0,0),
-d(2009,10,24,22,0,0),
-d(2010,3,27,22,0,0),
-d(2010,10,30,22,0,0),
-d(2011,3,26,22,0,0),
-d(2011,10,29,22,0,0),
-d(2012,3,24,22,0,0),
-d(2012,10,27,22,0,0),
-d(2013,3,30,22,0,0),
-d(2013,10,26,22,0,0),
-d(2014,3,29,22,0,0),
-d(2014,10,25,22,0,0),
-d(2015,3,28,22,0,0),
-d(2015,10,24,22,0,0),
-d(2016,3,26,22,0,0),
-d(2016,10,29,22,0,0),
-d(2017,3,25,22,0,0),
-d(2017,10,28,22,0,0),
-d(2018,3,24,22,0,0),
-d(2018,10,27,22,0,0),
-d(2019,3,30,22,0,0),
-d(2019,10,26,22,0,0),
-d(2020,3,28,22,0,0),
-d(2020,10,24,22,0,0),
-d(2021,3,27,22,0,0),
-d(2021,10,30,22,0,0),
-d(2022,3,26,22,0,0),
-d(2022,10,29,22,0,0),
-d(2023,3,25,22,0,0),
-d(2023,10,28,22,0,0),
-d(2024,3,30,22,0,0),
-d(2024,10,26,22,0,0),
-d(2025,3,29,22,0,0),
-d(2025,10,25,22,0,0),
-d(2026,3,28,22,0,0),
-d(2026,10,24,22,0,0),
-d(2027,3,27,22,0,0),
-d(2027,10,30,22,0,0),
-d(2028,3,25,22,0,0),
-d(2028,10,28,22,0,0),
-d(2029,3,24,22,0,0),
-d(2029,10,27,22,0,0),
-d(2030,3,30,22,0,0),
-d(2030,10,26,22,0,0),
-d(2031,3,29,22,0,0),
-d(2031,10,25,22,0,0),
-d(2032,3,27,22,0,0),
-d(2032,10,30,22,0,0),
-d(2033,3,26,22,0,0),
-d(2033,10,29,22,0,0),
-d(2034,3,25,22,0,0),
-d(2034,10,28,22,0,0),
-d(2035,3,24,22,0,0),
-d(2035,10,27,22,0,0),
-d(2036,3,29,22,0,0),
-d(2036,10,25,22,0,0),
-d(2037,3,28,22,0,0),
-d(2037,10,24,22,0,0),
- ]
-
- _transition_info = [
-i(12060,0,'LMT'),
-i(10800,0,'KUYT'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(18000,3600,'KUYST'),
-i(14400,0,'KUYT'),
-i(14400,0,'KUYST'),
-i(10800,0,'KUYT'),
-i(14400,3600,'KUYST'),
-i(10800,0,'KUYT'),
-i(10800,0,'KUYST'),
-i(10800,0,'KUYT'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
-i(18000,3600,'SAMST'),
-i(14400,0,'SAMT'),
- ]
-
-Samara = Samara()
-
diff --git a/modules/pytz/zoneinfo/Europe/San_Marino.py b/modules/pytz/zoneinfo/Europe/San_Marino.py
deleted file mode 100644
index dae62535..00000000
--- a/modules/pytz/zoneinfo/Europe/San_Marino.py
+++ /dev/null
@@ -1,360 +0,0 @@
-'''tzinfo timezone information for Europe/San_Marino.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class San_Marino(DstTzInfo):
- '''Europe/San_Marino timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/San_Marino'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,6,2,23,0,0),
-d(1916,9,30,23,0,0),
-d(1917,3,31,23,0,0),
-d(1917,9,29,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,5,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,4,23,0,0),
-d(1920,3,20,23,0,0),
-d(1920,9,18,23,0,0),
-d(1940,6,14,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,6,30,22,0,0),
-d(1944,9,16,23,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,14,23,0,0),
-d(1946,3,17,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,3,15,23,0,0),
-d(1947,10,4,23,0,0),
-d(1948,2,29,1,0,0),
-d(1948,10,3,1,0,0),
-d(1966,5,21,23,0,0),
-d(1966,9,24,22,0,0),
-d(1967,5,27,23,0,0),
-d(1967,9,23,22,0,0),
-d(1968,5,25,23,0,0),
-d(1968,9,21,22,0,0),
-d(1969,5,31,23,0,0),
-d(1969,9,27,22,0,0),
-d(1970,5,30,23,0,0),
-d(1970,9,26,22,0,0),
-d(1971,5,22,23,0,0),
-d(1971,9,25,23,0,0),
-d(1972,5,27,23,0,0),
-d(1972,9,30,22,0,0),
-d(1973,6,2,23,0,0),
-d(1973,9,29,22,0,0),
-d(1974,5,25,23,0,0),
-d(1974,9,28,22,0,0),
-d(1975,5,31,23,0,0),
-d(1975,9,27,23,0,0),
-d(1976,5,29,23,0,0),
-d(1976,9,25,23,0,0),
-d(1977,5,21,23,0,0),
-d(1977,9,24,23,0,0),
-d(1978,5,27,23,0,0),
-d(1978,9,30,23,0,0),
-d(1979,5,26,23,0,0),
-d(1979,9,29,23,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-San_Marino = San_Marino()
-
diff --git a/modules/pytz/zoneinfo/Europe/Sarajevo.py b/modules/pytz/zoneinfo/Europe/Sarajevo.py
deleted file mode 100644
index 2b7d7540..00000000
--- a/modules/pytz/zoneinfo/Europe/Sarajevo.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Europe/Sarajevo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Sarajevo(DstTzInfo):
- '''Europe/Sarajevo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Sarajevo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,4,18,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,5,8,1,0,0),
-d(1945,9,16,1,0,0),
-d(1982,11,26,23,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Sarajevo = Sarajevo()
-
diff --git a/modules/pytz/zoneinfo/Europe/Simferopol.py b/modules/pytz/zoneinfo/Europe/Simferopol.py
deleted file mode 100644
index 63b47f9a..00000000
--- a/modules/pytz/zoneinfo/Europe/Simferopol.py
+++ /dev/null
@@ -1,266 +0,0 @@
-'''tzinfo timezone information for Europe/Simferopol.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Simferopol(DstTzInfo):
- '''Europe/Simferopol timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Simferopol'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,21,44,0),
-d(1930,6,20,22,0,0),
-d(1941,10,31,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,4,12,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1989,12,31,21,0,0),
-d(1990,6,30,23,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,4,30,21,0,0),
-d(1994,9,24,20,0,0),
-d(1995,3,25,21,0,0),
-d(1995,9,23,20,0,0),
-d(1996,3,30,21,0,0),
-d(1996,3,31,0,0,0),
-d(1996,10,27,0,0,0),
-d(1996,12,31,21,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(8160,0,'SMT'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(14400,7200,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Simferopol = Simferopol()
-
diff --git a/modules/pytz/zoneinfo/Europe/Skopje.py b/modules/pytz/zoneinfo/Europe/Skopje.py
deleted file mode 100644
index c37e0328..00000000
--- a/modules/pytz/zoneinfo/Europe/Skopje.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Europe/Skopje.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Skopje(DstTzInfo):
- '''Europe/Skopje timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Skopje'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,4,18,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,5,8,1,0,0),
-d(1945,9,16,1,0,0),
-d(1982,11,26,23,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Skopje = Skopje()
-
diff --git a/modules/pytz/zoneinfo/Europe/Sofia.py b/modules/pytz/zoneinfo/Europe/Sofia.py
deleted file mode 100644
index 528daf7d..00000000
--- a/modules/pytz/zoneinfo/Europe/Sofia.py
+++ /dev/null
@@ -1,270 +0,0 @@
-'''tzinfo timezone information for Europe/Sofia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Sofia(DstTzInfo):
- '''Europe/Sofia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Sofia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,2,0,0),
-d(1979,3,31,21,0,0),
-d(1979,9,30,22,0,0),
-d(1980,4,5,21,0,0),
-d(1980,9,28,22,0,0),
-d(1981,4,4,21,0,0),
-d(1981,9,26,23,0,0),
-d(1982,4,3,21,0,0),
-d(1982,9,26,0,0,0),
-d(1983,3,27,0,0,0),
-d(1983,9,25,0,0,0),
-d(1984,3,25,0,0,0),
-d(1984,9,30,0,0,0),
-d(1985,3,31,0,0,0),
-d(1985,9,29,0,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1988,3,27,0,0,0),
-d(1988,9,25,0,0,0),
-d(1989,3,26,0,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1990,12,31,22,0,0),
-d(1991,3,30,22,0,0),
-d(1991,9,28,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,21,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Sofia = Sofia()
-
diff --git a/modules/pytz/zoneinfo/Europe/Stockholm.py b/modules/pytz/zoneinfo/Europe/Stockholm.py
deleted file mode 100644
index f9abbe6a..00000000
--- a/modules/pytz/zoneinfo/Europe/Stockholm.py
+++ /dev/null
@@ -1,256 +0,0 @@
-'''tzinfo timezone information for Europe/Stockholm.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Stockholm(DstTzInfo):
- '''Europe/Stockholm timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Stockholm'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,14,22,0,0),
-d(1916,9,30,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Stockholm = Stockholm()
-
diff --git a/modules/pytz/zoneinfo/Europe/Tallinn.py b/modules/pytz/zoneinfo/Europe/Tallinn.py
deleted file mode 100644
index 95e569ac..00000000
--- a/modules/pytz/zoneinfo/Europe/Tallinn.py
+++ /dev/null
@@ -1,268 +0,0 @@
-'''tzinfo timezone information for Europe/Tallinn.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tallinn(DstTzInfo):
- '''Europe/Tallinn timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Tallinn'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,1,31,22,21,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1919,6,30,23,0,0),
-d(1921,4,30,22,21,0),
-d(1940,8,5,22,0,0),
-d(1941,9,14,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,21,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1991,3,31,0,0,0),
-d(1991,9,29,0,0,0),
-d(1992,3,29,0,0,0),
-d(1992,9,27,0,0,0),
-d(1993,3,28,0,0,0),
-d(1993,9,26,0,0,0),
-d(1994,3,27,0,0,0),
-d(1994,9,25,0,0,0),
-d(1995,3,26,0,0,0),
-d(1995,9,24,0,0,0),
-d(1996,3,31,0,0,0),
-d(1996,10,27,0,0,0),
-d(1997,3,30,0,0,0),
-d(1997,10,26,0,0,0),
-d(1998,3,29,0,0,0),
-d(1998,9,21,21,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(1999,10,31,22,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(5940,0,'TMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(5940,0,'TMT'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Tallinn = Tallinn()
-
diff --git a/modules/pytz/zoneinfo/Europe/Tirane.py b/modules/pytz/zoneinfo/Europe/Tirane.py
deleted file mode 100644
index 4dba9c25..00000000
--- a/modules/pytz/zoneinfo/Europe/Tirane.py
+++ /dev/null
@@ -1,286 +0,0 @@
-'''tzinfo timezone information for Europe/Tirane.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tirane(DstTzInfo):
- '''Europe/Tirane timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Tirane'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1913,12,31,22,40,40),
-d(1940,6,15,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,4,10,1,0,0),
-d(1974,5,3,23,0,0),
-d(1974,10,1,22,0,0),
-d(1975,4,30,23,0,0),
-d(1975,10,1,22,0,0),
-d(1976,5,1,23,0,0),
-d(1976,10,2,22,0,0),
-d(1977,5,7,23,0,0),
-d(1977,10,1,22,0,0),
-d(1978,5,5,23,0,0),
-d(1978,9,30,22,0,0),
-d(1979,5,4,23,0,0),
-d(1979,9,29,22,0,0),
-d(1980,5,2,23,0,0),
-d(1980,10,3,22,0,0),
-d(1981,4,25,23,0,0),
-d(1981,9,26,22,0,0),
-d(1982,5,1,23,0,0),
-d(1982,10,2,22,0,0),
-d(1983,4,17,23,0,0),
-d(1983,9,30,22,0,0),
-d(1984,3,31,23,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(4740,0,'LMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Tirane = Tirane()
-
diff --git a/modules/pytz/zoneinfo/Europe/Tiraspol.py b/modules/pytz/zoneinfo/Europe/Tiraspol.py
deleted file mode 100644
index 7663b8c2..00000000
--- a/modules/pytz/zoneinfo/Europe/Tiraspol.py
+++ /dev/null
@@ -1,300 +0,0 @@
-'''tzinfo timezone information for Europe/Tiraspol.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tiraspol(DstTzInfo):
- '''Europe/Tiraspol timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Tiraspol'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,2,14,22,5,0),
-d(1931,7,23,22,15,36),
-d(1932,5,20,22,0,0),
-d(1932,10,1,22,0,0),
-d(1933,4,1,22,0,0),
-d(1933,9,30,22,0,0),
-d(1934,4,7,22,0,0),
-d(1934,10,6,22,0,0),
-d(1935,4,6,22,0,0),
-d(1935,10,5,22,0,0),
-d(1936,4,4,22,0,0),
-d(1936,10,3,22,0,0),
-d(1937,4,3,22,0,0),
-d(1937,10,2,22,0,0),
-d(1938,4,2,22,0,0),
-d(1938,10,1,22,0,0),
-d(1939,4,1,22,0,0),
-d(1939,9,30,22,0,0),
-d(1940,8,14,22,0,0),
-d(1941,7,16,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,8,23,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1989,12,31,21,0,0),
-d(1990,5,5,21,0,0),
-d(1991,3,31,0,0,0),
-d(1991,9,29,0,0,0),
-d(1991,12,31,22,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,25,22,0,0),
-d(1995,9,23,21,0,0),
-d(1996,3,30,22,0,0),
-d(1996,10,26,21,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(6900,0,'CMT'),
-i(6240,0,'BMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Tiraspol = Tiraspol()
-
diff --git a/modules/pytz/zoneinfo/Europe/Uzhgorod.py b/modules/pytz/zoneinfo/Europe/Uzhgorod.py
deleted file mode 100644
index 9da017f6..00000000
--- a/modules/pytz/zoneinfo/Europe/Uzhgorod.py
+++ /dev/null
@@ -1,262 +0,0 @@
-'''tzinfo timezone information for Europe/Uzhgorod.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Uzhgorod(DstTzInfo):
- '''Europe/Uzhgorod timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Uzhgorod'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,30,22,0,0),
-d(1944,10,25,22,0,0),
-d(1945,6,28,23,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1989,12,31,21,0,0),
-d(1990,6,30,23,0,0),
-d(1991,3,31,2,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'MSK'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Uzhgorod = Uzhgorod()
-
diff --git a/modules/pytz/zoneinfo/Europe/Vaduz.py b/modules/pytz/zoneinfo/Europe/Vaduz.py
deleted file mode 100644
index c4af9b35..00000000
--- a/modules/pytz/zoneinfo/Europe/Vaduz.py
+++ /dev/null
@@ -1,248 +0,0 @@
-'''tzinfo timezone information for Europe/Vaduz.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vaduz(DstTzInfo):
- '''Europe/Vaduz timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Vaduz'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Vaduz = Vaduz()
-
diff --git a/modules/pytz/zoneinfo/Europe/Vatican.py b/modules/pytz/zoneinfo/Europe/Vatican.py
deleted file mode 100644
index 1806de2a..00000000
--- a/modules/pytz/zoneinfo/Europe/Vatican.py
+++ /dev/null
@@ -1,360 +0,0 @@
-'''tzinfo timezone information for Europe/Vatican.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vatican(DstTzInfo):
- '''Europe/Vatican timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Vatican'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,6,2,23,0,0),
-d(1916,9,30,23,0,0),
-d(1917,3,31,23,0,0),
-d(1917,9,29,23,0,0),
-d(1918,3,9,23,0,0),
-d(1918,10,5,23,0,0),
-d(1919,3,1,23,0,0),
-d(1919,10,4,23,0,0),
-d(1920,3,20,23,0,0),
-d(1920,9,18,23,0,0),
-d(1940,6,14,23,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,6,30,22,0,0),
-d(1944,9,16,23,0,0),
-d(1945,4,2,1,0,0),
-d(1945,9,14,23,0,0),
-d(1946,3,17,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,3,15,23,0,0),
-d(1947,10,4,23,0,0),
-d(1948,2,29,1,0,0),
-d(1948,10,3,1,0,0),
-d(1966,5,21,23,0,0),
-d(1966,9,24,22,0,0),
-d(1967,5,27,23,0,0),
-d(1967,9,23,22,0,0),
-d(1968,5,25,23,0,0),
-d(1968,9,21,22,0,0),
-d(1969,5,31,23,0,0),
-d(1969,9,27,22,0,0),
-d(1970,5,30,23,0,0),
-d(1970,9,26,22,0,0),
-d(1971,5,22,23,0,0),
-d(1971,9,25,23,0,0),
-d(1972,5,27,23,0,0),
-d(1972,9,30,22,0,0),
-d(1973,6,2,23,0,0),
-d(1973,9,29,22,0,0),
-d(1974,5,25,23,0,0),
-d(1974,9,28,22,0,0),
-d(1975,5,31,23,0,0),
-d(1975,9,27,23,0,0),
-d(1976,5,29,23,0,0),
-d(1976,9,25,23,0,0),
-d(1977,5,21,23,0,0),
-d(1977,9,24,23,0,0),
-d(1978,5,27,23,0,0),
-d(1978,9,30,23,0,0),
-d(1979,5,26,23,0,0),
-d(1979,9,29,23,0,0),
-d(1979,12,31,23,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Vatican = Vatican()
-
diff --git a/modules/pytz/zoneinfo/Europe/Vienna.py b/modules/pytz/zoneinfo/Europe/Vienna.py
deleted file mode 100644
index 5933d9d9..00000000
--- a/modules/pytz/zoneinfo/Europe/Vienna.py
+++ /dev/null
@@ -1,300 +0,0 @@
-'''tzinfo timezone information for Europe/Vienna.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vienna(DstTzInfo):
- '''Europe/Vienna timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Vienna'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1919,12,31,23,0,0),
-d(1920,4,5,1,0,0),
-d(1920,9,13,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,4,12,1,0,0),
-d(1945,12,31,23,0,0),
-d(1946,4,14,1,0,0),
-d(1946,10,6,1,0,0),
-d(1947,4,6,1,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,18,1,0,0),
-d(1948,10,3,1,0,0),
-d(1980,4,5,23,0,0),
-d(1980,9,27,22,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Vienna = Vienna()
-
diff --git a/modules/pytz/zoneinfo/Europe/Vilnius.py b/modules/pytz/zoneinfo/Europe/Vilnius.py
deleted file mode 100644
index 51e3f435..00000000
--- a/modules/pytz/zoneinfo/Europe/Vilnius.py
+++ /dev/null
@@ -1,262 +0,0 @@
-'''tzinfo timezone information for Europe/Vilnius.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Vilnius(DstTzInfo):
- '''Europe/Vilnius timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Vilnius'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,12,31,22,36,0),
-d(1919,10,9,22,24,24),
-d(1920,7,11,23,0,0),
-d(1920,10,8,22,0,0),
-d(1940,8,2,23,0,0),
-d(1941,6,23,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,7,31,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1990,3,24,23,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,29,0,0,0),
-d(1992,3,29,0,0,0),
-d(1992,9,27,0,0,0),
-d(1993,3,28,0,0,0),
-d(1993,9,26,0,0,0),
-d(1994,3,27,0,0,0),
-d(1994,9,25,0,0,0),
-d(1995,3,26,0,0,0),
-d(1995,9,24,0,0,0),
-d(1996,3,31,0,0,0),
-d(1996,10,27,0,0,0),
-d(1997,3,30,0,0,0),
-d(1997,10,26,0,0,0),
-d(1997,12,31,22,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2002,12,31,22,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(5040,0,'WMT'),
-i(5760,0,'KMT'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(7200,0,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Vilnius = Vilnius()
-
diff --git a/modules/pytz/zoneinfo/Europe/Warsaw.py b/modules/pytz/zoneinfo/Europe/Warsaw.py
deleted file mode 100644
index 1a888871..00000000
--- a/modules/pytz/zoneinfo/Europe/Warsaw.py
+++ /dev/null
@@ -1,352 +0,0 @@
-'''tzinfo timezone information for Europe/Warsaw.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Warsaw(DstTzInfo):
- '''Europe/Warsaw timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Warsaw'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1915,8,4,22,36,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1919,4,15,0,0,0),
-d(1919,9,16,0,0,0),
-d(1922,5,31,22,0,0),
-d(1940,6,23,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,30,22,0,0),
-d(1945,4,28,23,0,0),
-d(1945,10,31,22,0,0),
-d(1946,4,13,23,0,0),
-d(1946,10,7,1,0,0),
-d(1947,5,4,1,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,18,1,0,0),
-d(1948,10,3,1,0,0),
-d(1949,4,10,1,0,0),
-d(1949,10,2,1,0,0),
-d(1957,6,2,0,0,0),
-d(1957,9,29,0,0,0),
-d(1958,3,30,0,0,0),
-d(1958,9,28,0,0,0),
-d(1959,5,31,0,0,0),
-d(1959,10,4,0,0,0),
-d(1960,4,3,0,0,0),
-d(1960,10,2,0,0,0),
-d(1961,5,28,0,0,0),
-d(1961,10,1,0,0,0),
-d(1962,5,27,0,0,0),
-d(1962,9,30,0,0,0),
-d(1963,5,26,0,0,0),
-d(1963,9,29,0,0,0),
-d(1964,5,31,0,0,0),
-d(1964,9,27,0,0,0),
-d(1976,12,31,23,0,0),
-d(1977,4,3,0,0,0),
-d(1977,9,25,0,0,0),
-d(1978,4,2,0,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,1,0,0,0),
-d(1979,9,30,0,0,0),
-d(1980,4,6,0,0,0),
-d(1980,9,28,0,0,0),
-d(1981,3,29,0,0,0),
-d(1981,9,27,0,0,0),
-d(1982,3,28,0,0,0),
-d(1982,9,26,0,0,0),
-d(1983,3,27,0,0,0),
-d(1983,9,25,0,0,0),
-d(1984,3,25,0,0,0),
-d(1984,9,30,0,0,0),
-d(1985,3,31,0,0,0),
-d(1985,9,29,0,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1987,12,31,23,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(5040,0,'WMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Warsaw = Warsaw()
-
diff --git a/modules/pytz/zoneinfo/Europe/Zagreb.py b/modules/pytz/zoneinfo/Europe/Zagreb.py
deleted file mode 100644
index 18d5f3a5..00000000
--- a/modules/pytz/zoneinfo/Europe/Zagreb.py
+++ /dev/null
@@ -1,258 +0,0 @@
-'''tzinfo timezone information for Europe/Zagreb.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Zagreb(DstTzInfo):
- '''Europe/Zagreb timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Zagreb'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1941,4,18,22,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1945,5,8,1,0,0),
-d(1945,9,16,1,0,0),
-d(1982,11,26,23,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Zagreb = Zagreb()
-
diff --git a/modules/pytz/zoneinfo/Europe/Zaporozhye.py b/modules/pytz/zoneinfo/Europe/Zaporozhye.py
deleted file mode 100644
index 51d09179..00000000
--- a/modules/pytz/zoneinfo/Europe/Zaporozhye.py
+++ /dev/null
@@ -1,262 +0,0 @@
-'''tzinfo timezone information for Europe/Zaporozhye.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Zaporozhye(DstTzInfo):
- '''Europe/Zaporozhye timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Zaporozhye'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1924,5,1,21,40,0),
-d(1930,6,20,22,0,0),
-d(1941,8,24,21,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1943,10,24,23,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1990,3,24,23,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,28,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,26,21,0,0),
-d(1993,3,27,22,0,0),
-d(1993,9,25,21,0,0),
-d(1994,3,26,22,0,0),
-d(1994,9,24,21,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(8400,0,'CUT'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(7200,-3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Zaporozhye = Zaporozhye()
-
diff --git a/modules/pytz/zoneinfo/Europe/Zurich.py b/modules/pytz/zoneinfo/Europe/Zurich.py
deleted file mode 100644
index 62ee715a..00000000
--- a/modules/pytz/zoneinfo/Europe/Zurich.py
+++ /dev/null
@@ -1,260 +0,0 @@
-'''tzinfo timezone information for Europe/Zurich.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Zurich(DstTzInfo):
- '''Europe/Zurich timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Europe/Zurich'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1940,11,1,23,0,0),
-d(1940,12,30,22,0,0),
-d(1941,5,4,1,0,0),
-d(1941,10,4,22,0,0),
-d(1942,5,3,1,0,0),
-d(1942,10,3,22,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Zurich = Zurich()
-
diff --git a/modules/pytz/zoneinfo/Europe/__init__.py b/modules/pytz/zoneinfo/Europe/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/GB.py b/modules/pytz/zoneinfo/GB.py
deleted file mode 100644
index 559ae59d..00000000
--- a/modules/pytz/zoneinfo/GB.py
+++ /dev/null
@@ -1,504 +0,0 @@
-'''tzinfo timezone information for GB.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class GB(DstTzInfo):
- '''GB timezone definition. See datetime.tzinfo for details'''
-
- zone = 'GB'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,0,0),
-d(1916,10,1,2,0,0),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1941,5,4,1,0,0),
-d(1941,8,10,1,0,0),
-d(1942,4,5,1,0,0),
-d(1942,8,9,1,0,0),
-d(1943,4,4,1,0,0),
-d(1943,8,15,1,0,0),
-d(1944,4,2,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,7,15,1,0,0),
-d(1945,10,7,2,0,0),
-d(1946,4,14,2,0,0),
-d(1946,10,6,2,0,0),
-d(1947,3,16,2,0,0),
-d(1947,4,13,1,0,0),
-d(1947,8,10,1,0,0),
-d(1947,11,2,2,0,0),
-d(1948,3,14,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,20,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,19,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,10,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,3,26,2,0,0),
-d(1961,10,29,2,0,0),
-d(1962,3,25,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,3,31,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,3,22,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,3,21,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,3,20,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,3,19,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,2,18,2,0,0),
-d(1968,10,26,23,0,0),
-d(1971,10,31,2,0,0),
-d(1972,3,19,2,0,0),
-d(1972,10,29,2,0,0),
-d(1973,3,18,2,0,0),
-d(1973,10,28,2,0,0),
-d(1974,3,17,2,0,0),
-d(1974,10,27,2,0,0),
-d(1975,3,16,2,0,0),
-d(1975,10,26,2,0,0),
-d(1976,3,21,2,0,0),
-d(1976,10,24,2,0,0),
-d(1977,3,20,2,0,0),
-d(1977,10,23,2,0,0),
-d(1978,3,19,2,0,0),
-d(1978,10,29,2,0,0),
-d(1979,3,18,2,0,0),
-d(1979,10,28,2,0,0),
-d(1980,3,16,2,0,0),
-d(1980,10,26,2,0,0),
-d(1981,3,29,1,0,0),
-d(1981,10,25,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,10,24,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,10,23,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,10,28,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,10,27,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,10,26,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,10,25,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,10,23,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,10,29,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,10,28,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,10,27,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,10,25,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,10,24,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,10,23,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,10,22,1,0,0),
-d(1996,1,1,0,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(3600,0,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
- ]
-
-GB = GB()
-
diff --git a/modules/pytz/zoneinfo/GB_minus_Eire.py b/modules/pytz/zoneinfo/GB_minus_Eire.py
deleted file mode 100644
index 629bd90f..00000000
--- a/modules/pytz/zoneinfo/GB_minus_Eire.py
+++ /dev/null
@@ -1,504 +0,0 @@
-'''tzinfo timezone information for GB_minus_Eire.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class GB_minus_Eire(DstTzInfo):
- '''GB_minus_Eire timezone definition. See datetime.tzinfo for details'''
-
- zone = 'GB_minus_Eire'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,5,21,2,0,0),
-d(1916,10,1,2,0,0),
-d(1917,4,8,2,0,0),
-d(1917,9,17,2,0,0),
-d(1918,3,24,2,0,0),
-d(1918,9,30,2,0,0),
-d(1919,3,30,2,0,0),
-d(1919,9,29,2,0,0),
-d(1920,3,28,2,0,0),
-d(1920,10,25,2,0,0),
-d(1921,4,3,2,0,0),
-d(1921,10,3,2,0,0),
-d(1922,3,26,2,0,0),
-d(1922,10,8,2,0,0),
-d(1923,4,22,2,0,0),
-d(1923,9,16,2,0,0),
-d(1924,4,13,2,0,0),
-d(1924,9,21,2,0,0),
-d(1925,4,19,2,0,0),
-d(1925,10,4,2,0,0),
-d(1926,4,18,2,0,0),
-d(1926,10,3,2,0,0),
-d(1927,4,10,2,0,0),
-d(1927,10,2,2,0,0),
-d(1928,4,22,2,0,0),
-d(1928,10,7,2,0,0),
-d(1929,4,21,2,0,0),
-d(1929,10,6,2,0,0),
-d(1930,4,13,2,0,0),
-d(1930,10,5,2,0,0),
-d(1931,4,19,2,0,0),
-d(1931,10,4,2,0,0),
-d(1932,4,17,2,0,0),
-d(1932,10,2,2,0,0),
-d(1933,4,9,2,0,0),
-d(1933,10,8,2,0,0),
-d(1934,4,22,2,0,0),
-d(1934,10,7,2,0,0),
-d(1935,4,14,2,0,0),
-d(1935,10,6,2,0,0),
-d(1936,4,19,2,0,0),
-d(1936,10,4,2,0,0),
-d(1937,4,18,2,0,0),
-d(1937,10,3,2,0,0),
-d(1938,4,10,2,0,0),
-d(1938,10,2,2,0,0),
-d(1939,4,16,2,0,0),
-d(1939,11,19,2,0,0),
-d(1940,2,25,2,0,0),
-d(1941,5,4,1,0,0),
-d(1941,8,10,1,0,0),
-d(1942,4,5,1,0,0),
-d(1942,8,9,1,0,0),
-d(1943,4,4,1,0,0),
-d(1943,8,15,1,0,0),
-d(1944,4,2,1,0,0),
-d(1944,9,17,1,0,0),
-d(1945,4,2,1,0,0),
-d(1945,7,15,1,0,0),
-d(1945,10,7,2,0,0),
-d(1946,4,14,2,0,0),
-d(1946,10,6,2,0,0),
-d(1947,3,16,2,0,0),
-d(1947,4,13,1,0,0),
-d(1947,8,10,1,0,0),
-d(1947,11,2,2,0,0),
-d(1948,3,14,2,0,0),
-d(1948,10,31,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,16,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,15,2,0,0),
-d(1951,10,21,2,0,0),
-d(1952,4,20,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,19,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,11,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,17,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,22,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,14,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,20,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,19,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,10,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,3,26,2,0,0),
-d(1961,10,29,2,0,0),
-d(1962,3,25,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,3,31,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,3,22,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,3,21,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,3,20,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,3,19,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,2,18,2,0,0),
-d(1968,10,26,23,0,0),
-d(1971,10,31,2,0,0),
-d(1972,3,19,2,0,0),
-d(1972,10,29,2,0,0),
-d(1973,3,18,2,0,0),
-d(1973,10,28,2,0,0),
-d(1974,3,17,2,0,0),
-d(1974,10,27,2,0,0),
-d(1975,3,16,2,0,0),
-d(1975,10,26,2,0,0),
-d(1976,3,21,2,0,0),
-d(1976,10,24,2,0,0),
-d(1977,3,20,2,0,0),
-d(1977,10,23,2,0,0),
-d(1978,3,19,2,0,0),
-d(1978,10,29,2,0,0),
-d(1979,3,18,2,0,0),
-d(1979,10,28,2,0,0),
-d(1980,3,16,2,0,0),
-d(1980,10,26,2,0,0),
-d(1981,3,29,1,0,0),
-d(1981,10,25,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,10,24,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,10,23,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,10,28,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,10,27,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,10,26,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,10,25,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,10,23,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,10,29,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,10,28,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,10,27,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,10,25,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,10,24,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,10,23,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,10,22,1,0,0),
-d(1996,1,1,0,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(7200,7200,'BDST'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(3600,0,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
-i(3600,3600,'BST'),
-i(0,0,'GMT'),
- ]
-
-GB_minus_Eire = GB_minus_Eire()
-
diff --git a/modules/pytz/zoneinfo/GMT.py b/modules/pytz/zoneinfo/GMT.py
deleted file mode 100644
index d9252ca0..00000000
--- a/modules/pytz/zoneinfo/GMT.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for GMT.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT(StaticTzInfo):
- '''GMT timezone definition. See datetime.tzinfo for details'''
- zone = 'GMT'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT = GMT()
-
diff --git a/modules/pytz/zoneinfo/GMT0.py b/modules/pytz/zoneinfo/GMT0.py
deleted file mode 100644
index c67b1550..00000000
--- a/modules/pytz/zoneinfo/GMT0.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for GMT0.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT0(StaticTzInfo):
- '''GMT0 timezone definition. See datetime.tzinfo for details'''
- zone = 'GMT0'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT0 = GMT0()
-
diff --git a/modules/pytz/zoneinfo/GMT_minus_0.py b/modules/pytz/zoneinfo/GMT_minus_0.py
deleted file mode 100644
index 1504d569..00000000
--- a/modules/pytz/zoneinfo/GMT_minus_0.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for GMT_minus_0.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_minus_0(StaticTzInfo):
- '''GMT_minus_0 timezone definition. See datetime.tzinfo for details'''
- zone = 'GMT_minus_0'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT_minus_0 = GMT_minus_0()
-
diff --git a/modules/pytz/zoneinfo/GMT_plus_0.py b/modules/pytz/zoneinfo/GMT_plus_0.py
deleted file mode 100644
index 543f8566..00000000
--- a/modules/pytz/zoneinfo/GMT_plus_0.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for GMT_plus_0.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class GMT_plus_0(StaticTzInfo):
- '''GMT_plus_0 timezone definition. See datetime.tzinfo for details'''
- zone = 'GMT_plus_0'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-GMT_plus_0 = GMT_plus_0()
-
diff --git a/modules/pytz/zoneinfo/Greenwich.py b/modules/pytz/zoneinfo/Greenwich.py
deleted file mode 100644
index 46174f74..00000000
--- a/modules/pytz/zoneinfo/Greenwich.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Greenwich.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Greenwich(StaticTzInfo):
- '''Greenwich timezone definition. See datetime.tzinfo for details'''
- zone = 'Greenwich'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'GMT'
-
-Greenwich = Greenwich()
-
diff --git a/modules/pytz/zoneinfo/HST.py b/modules/pytz/zoneinfo/HST.py
deleted file mode 100644
index ee3d5d23..00000000
--- a/modules/pytz/zoneinfo/HST.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for HST.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class HST(StaticTzInfo):
- '''HST timezone definition. See datetime.tzinfo for details'''
- zone = 'HST'
- _utcoffset = timedelta(seconds=-36000)
- _tzname = 'HST'
-
-HST = HST()
-
diff --git a/modules/pytz/zoneinfo/Hongkong.py b/modules/pytz/zoneinfo/Hongkong.py
deleted file mode 100644
index a9aa0c40..00000000
--- a/modules/pytz/zoneinfo/Hongkong.py
+++ /dev/null
@@ -1,158 +0,0 @@
-'''tzinfo timezone information for Hongkong.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Hongkong(DstTzInfo):
- '''Hongkong timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Hongkong'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1904,10,29,16,23,24),
-d(1946,4,19,19,30,0),
-d(1946,11,30,18,30,0),
-d(1947,4,12,19,30,0),
-d(1947,12,29,18,30,0),
-d(1948,5,1,19,30,0),
-d(1948,10,30,18,30,0),
-d(1949,4,2,19,30,0),
-d(1949,10,29,18,30,0),
-d(1950,4,1,19,30,0),
-d(1950,10,28,18,30,0),
-d(1951,3,31,19,30,0),
-d(1951,10,27,18,30,0),
-d(1952,4,5,19,30,0),
-d(1952,10,25,18,30,0),
-d(1953,4,4,19,30,0),
-d(1953,10,31,18,30,0),
-d(1954,3,20,19,30,0),
-d(1954,10,30,18,30,0),
-d(1955,3,19,19,30,0),
-d(1955,11,5,18,30,0),
-d(1956,3,17,19,30,0),
-d(1956,11,3,18,30,0),
-d(1957,3,23,19,30,0),
-d(1957,11,2,18,30,0),
-d(1958,3,22,19,30,0),
-d(1958,11,1,18,30,0),
-d(1959,3,21,19,30,0),
-d(1959,10,31,18,30,0),
-d(1960,3,19,19,30,0),
-d(1960,11,5,18,30,0),
-d(1961,3,18,19,30,0),
-d(1961,11,4,18,30,0),
-d(1962,3,17,19,30,0),
-d(1962,11,3,18,30,0),
-d(1963,3,23,19,30,0),
-d(1963,11,2,18,30,0),
-d(1964,3,21,19,30,0),
-d(1964,10,31,18,30,0),
-d(1965,4,17,19,30,0),
-d(1965,10,16,18,30,0),
-d(1966,4,16,19,30,0),
-d(1966,10,15,18,30,0),
-d(1967,4,15,19,30,0),
-d(1967,10,21,18,30,0),
-d(1968,4,20,19,30,0),
-d(1968,10,19,18,30,0),
-d(1969,4,19,19,30,0),
-d(1969,10,18,18,30,0),
-d(1970,4,18,19,30,0),
-d(1970,10,17,18,30,0),
-d(1971,4,17,19,30,0),
-d(1971,10,16,18,30,0),
-d(1972,4,15,19,30,0),
-d(1972,10,21,18,30,0),
-d(1973,4,21,19,30,0),
-d(1973,10,20,18,30,0),
-d(1974,4,20,19,30,0),
-d(1974,10,19,18,30,0),
-d(1975,4,19,19,30,0),
-d(1975,10,18,18,30,0),
-d(1976,4,17,19,30,0),
-d(1976,10,16,18,30,0),
-d(1977,4,16,19,30,0),
-d(1977,10,15,18,30,0),
-d(1979,5,12,19,30,0),
-d(1979,10,20,18,30,0),
-d(1980,5,10,19,30,0),
-d(1980,10,18,18,30,0),
- ]
-
- _transition_info = [
-i(27420,0,'LMT'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
-i(32400,3600,'HKST'),
-i(28800,0,'HKT'),
- ]
-
-Hongkong = Hongkong()
-
diff --git a/modules/pytz/zoneinfo/Iceland.py b/modules/pytz/zoneinfo/Iceland.py
deleted file mode 100644
index e62b5968..00000000
--- a/modules/pytz/zoneinfo/Iceland.py
+++ /dev/null
@@ -1,148 +0,0 @@
-'''tzinfo timezone information for Iceland.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Iceland(DstTzInfo):
- '''Iceland timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Iceland'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1908,1,1,1,27,48),
-d(1917,2,20,0,0,0),
-d(1917,10,21,1,0,0),
-d(1918,2,20,0,0,0),
-d(1918,11,16,1,0,0),
-d(1939,4,30,0,0,0),
-d(1939,11,29,2,0,0),
-d(1940,2,25,3,0,0),
-d(1940,11,3,2,0,0),
-d(1941,3,2,2,0,0),
-d(1941,11,2,2,0,0),
-d(1942,3,8,2,0,0),
-d(1942,10,25,2,0,0),
-d(1943,3,7,2,0,0),
-d(1943,10,24,2,0,0),
-d(1944,3,5,2,0,0),
-d(1944,10,22,2,0,0),
-d(1945,3,4,2,0,0),
-d(1945,10,28,2,0,0),
-d(1946,3,3,2,0,0),
-d(1946,10,27,2,0,0),
-d(1947,4,6,2,0,0),
-d(1947,10,26,2,0,0),
-d(1948,4,4,2,0,0),
-d(1948,10,24,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,30,2,0,0),
-d(1950,4,2,2,0,0),
-d(1950,10,22,2,0,0),
-d(1951,4,1,2,0,0),
-d(1951,10,28,2,0,0),
-d(1952,4,6,2,0,0),
-d(1952,10,26,2,0,0),
-d(1953,4,5,2,0,0),
-d(1953,10,25,2,0,0),
-d(1954,4,4,2,0,0),
-d(1954,10,24,2,0,0),
-d(1955,4,3,2,0,0),
-d(1955,10,23,2,0,0),
-d(1956,4,1,2,0,0),
-d(1956,10,28,2,0,0),
-d(1957,4,7,2,0,0),
-d(1957,10,27,2,0,0),
-d(1958,4,6,2,0,0),
-d(1958,10,26,2,0,0),
-d(1959,4,5,2,0,0),
-d(1959,10,25,2,0,0),
-d(1960,4,3,2,0,0),
-d(1960,10,23,2,0,0),
-d(1961,4,2,2,0,0),
-d(1961,10,22,2,0,0),
-d(1962,4,1,2,0,0),
-d(1962,10,28,2,0,0),
-d(1963,4,7,2,0,0),
-d(1963,10,27,2,0,0),
-d(1964,4,5,2,0,0),
-d(1964,10,25,2,0,0),
-d(1965,4,4,2,0,0),
-d(1965,10,24,2,0,0),
-d(1966,4,3,2,0,0),
-d(1966,10,23,2,0,0),
-d(1967,4,2,2,0,0),
-d(1967,10,29,2,0,0),
-d(1968,4,7,2,0,0),
- ]
-
- _transition_info = [
-i(-5280,0,'RMT'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,3600,'ISST'),
-i(-3600,0,'IST'),
-i(0,0,'GMT'),
- ]
-
-Iceland = Iceland()
-
diff --git a/modules/pytz/zoneinfo/Indian/Antananarivo.py b/modules/pytz/zoneinfo/Indian/Antananarivo.py
deleted file mode 100644
index 05663b9d..00000000
--- a/modules/pytz/zoneinfo/Indian/Antananarivo.py
+++ /dev/null
@@ -1,26 +0,0 @@
-'''tzinfo timezone information for Indian/Antananarivo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Antananarivo(DstTzInfo):
- '''Indian/Antananarivo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Antananarivo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,6,30,20,49,56),
-d(1954,2,27,20,0,0),
-d(1954,5,29,20,0,0),
- ]
-
- _transition_info = [
-i(11400,0,'LMT'),
-i(10800,0,'EAT'),
-i(14400,3600,'EAST'),
-i(10800,0,'EAT'),
- ]
-
-Antananarivo = Antananarivo()
-
diff --git a/modules/pytz/zoneinfo/Indian/Chagos.py b/modules/pytz/zoneinfo/Indian/Chagos.py
deleted file mode 100644
index 3ea97289..00000000
--- a/modules/pytz/zoneinfo/Indian/Chagos.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Indian/Chagos.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chagos(DstTzInfo):
- '''Indian/Chagos timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Chagos'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,12,31,19,10,20),
-d(1995,12,31,19,0,0),
- ]
-
- _transition_info = [
-i(17400,0,'LMT'),
-i(18000,0,'IOT'),
-i(21600,0,'IOT'),
- ]
-
-Chagos = Chagos()
-
diff --git a/modules/pytz/zoneinfo/Indian/Christmas.py b/modules/pytz/zoneinfo/Indian/Christmas.py
deleted file mode 100644
index a6a2e0b9..00000000
--- a/modules/pytz/zoneinfo/Indian/Christmas.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Indian/Christmas.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Christmas(StaticTzInfo):
- '''Indian/Christmas timezone definition. See datetime.tzinfo for details'''
- zone = 'Indian/Christmas'
- _utcoffset = timedelta(seconds=25200)
- _tzname = 'CXT'
-
-Christmas = Christmas()
-
diff --git a/modules/pytz/zoneinfo/Indian/Cocos.py b/modules/pytz/zoneinfo/Indian/Cocos.py
deleted file mode 100644
index 5ffe4706..00000000
--- a/modules/pytz/zoneinfo/Indian/Cocos.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Indian/Cocos.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Cocos(StaticTzInfo):
- '''Indian/Cocos timezone definition. See datetime.tzinfo for details'''
- zone = 'Indian/Cocos'
- _utcoffset = timedelta(seconds=23400)
- _tzname = 'CCT'
-
-Cocos = Cocos()
-
diff --git a/modules/pytz/zoneinfo/Indian/Comoro.py b/modules/pytz/zoneinfo/Indian/Comoro.py
deleted file mode 100644
index 98c6948f..00000000
--- a/modules/pytz/zoneinfo/Indian/Comoro.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Comoro.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Comoro(DstTzInfo):
- '''Indian/Comoro timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Comoro'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,6,30,21,6,56),
- ]
-
- _transition_info = [
-i(10380,0,'LMT'),
-i(10800,0,'EAT'),
- ]
-
-Comoro = Comoro()
-
diff --git a/modules/pytz/zoneinfo/Indian/Kerguelen.py b/modules/pytz/zoneinfo/Indian/Kerguelen.py
deleted file mode 100644
index edc6ab21..00000000
--- a/modules/pytz/zoneinfo/Indian/Kerguelen.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Kerguelen.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kerguelen(DstTzInfo):
- '''Indian/Kerguelen timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Kerguelen'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1950,1,1,0,0,0),
- ]
-
- _transition_info = [
-i(0,0,'zzz'),
-i(18000,0,'TFT'),
- ]
-
-Kerguelen = Kerguelen()
-
diff --git a/modules/pytz/zoneinfo/Indian/Mahe.py b/modules/pytz/zoneinfo/Indian/Mahe.py
deleted file mode 100644
index 0bd7ee36..00000000
--- a/modules/pytz/zoneinfo/Indian/Mahe.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Mahe.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mahe(DstTzInfo):
- '''Indian/Mahe timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Mahe'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,5,31,20,18,12),
- ]
-
- _transition_info = [
-i(13320,0,'LMT'),
-i(14400,0,'SCT'),
- ]
-
-Mahe = Mahe()
-
diff --git a/modules/pytz/zoneinfo/Indian/Maldives.py b/modules/pytz/zoneinfo/Indian/Maldives.py
deleted file mode 100644
index 3f84d43d..00000000
--- a/modules/pytz/zoneinfo/Indian/Maldives.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Maldives.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Maldives(DstTzInfo):
- '''Indian/Maldives timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Maldives'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1959,12,31,19,6,0),
- ]
-
- _transition_info = [
-i(17640,0,'MMT'),
-i(18000,0,'MVT'),
- ]
-
-Maldives = Maldives()
-
diff --git a/modules/pytz/zoneinfo/Indian/Mauritius.py b/modules/pytz/zoneinfo/Indian/Mauritius.py
deleted file mode 100644
index 0e170a6a..00000000
--- a/modules/pytz/zoneinfo/Indian/Mauritius.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Mauritius.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mauritius(DstTzInfo):
- '''Indian/Mauritius timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Mauritius'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1906,12,31,20,10,0),
- ]
-
- _transition_info = [
-i(13800,0,'LMT'),
-i(14400,0,'MUT'),
- ]
-
-Mauritius = Mauritius()
-
diff --git a/modules/pytz/zoneinfo/Indian/Mayotte.py b/modules/pytz/zoneinfo/Indian/Mayotte.py
deleted file mode 100644
index 20df3bb2..00000000
--- a/modules/pytz/zoneinfo/Indian/Mayotte.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Mayotte.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mayotte(DstTzInfo):
- '''Indian/Mayotte timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Mayotte'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,6,30,20,59,4),
- ]
-
- _transition_info = [
-i(10860,0,'LMT'),
-i(10800,0,'EAT'),
- ]
-
-Mayotte = Mayotte()
-
diff --git a/modules/pytz/zoneinfo/Indian/Reunion.py b/modules/pytz/zoneinfo/Indian/Reunion.py
deleted file mode 100644
index 11fb08f8..00000000
--- a/modules/pytz/zoneinfo/Indian/Reunion.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Indian/Reunion.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Reunion(DstTzInfo):
- '''Indian/Reunion timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Indian/Reunion'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,5,31,20,18,8),
- ]
-
- _transition_info = [
-i(13320,0,'LMT'),
-i(14400,0,'RET'),
- ]
-
-Reunion = Reunion()
-
diff --git a/modules/pytz/zoneinfo/Indian/__init__.py b/modules/pytz/zoneinfo/Indian/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Iran.py b/modules/pytz/zoneinfo/Iran.py
deleted file mode 100644
index 75fbcb96..00000000
--- a/modules/pytz/zoneinfo/Iran.py
+++ /dev/null
@@ -1,228 +0,0 @@
-'''tzinfo timezone information for Iran.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Iran(DstTzInfo):
- '''Iran timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Iran'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1915,12,31,20,34,16),
-d(1945,12,31,20,34,16),
-d(1977,10,31,20,30,0),
-d(1978,3,20,20,0,0),
-d(1978,10,20,19,0,0),
-d(1978,12,31,20,0,0),
-d(1979,3,20,20,30,0),
-d(1979,9,18,19,30,0),
-d(1980,3,20,20,30,0),
-d(1980,9,22,19,30,0),
-d(1991,5,2,20,30,0),
-d(1991,9,21,19,30,0),
-d(1992,3,21,20,30,0),
-d(1992,9,21,19,30,0),
-d(1993,3,21,20,30,0),
-d(1993,9,21,19,30,0),
-d(1994,3,21,20,30,0),
-d(1994,9,21,19,30,0),
-d(1995,3,21,20,30,0),
-d(1995,9,21,19,30,0),
-d(1996,3,20,20,30,0),
-d(1996,9,20,19,30,0),
-d(1997,3,21,20,30,0),
-d(1997,9,21,19,30,0),
-d(1998,3,21,20,30,0),
-d(1998,9,21,19,30,0),
-d(1999,3,21,20,30,0),
-d(1999,9,21,19,30,0),
-d(2000,3,20,20,30,0),
-d(2000,9,20,19,30,0),
-d(2001,3,21,20,30,0),
-d(2001,9,21,19,30,0),
-d(2002,3,21,20,30,0),
-d(2002,9,21,19,30,0),
-d(2003,3,21,20,30,0),
-d(2003,9,21,19,30,0),
-d(2004,3,20,20,30,0),
-d(2004,9,20,19,30,0),
-d(2005,3,21,20,30,0),
-d(2005,9,21,19,30,0),
-d(2006,3,21,20,30,0),
-d(2006,9,21,19,30,0),
-d(2007,3,21,20,30,0),
-d(2007,9,21,19,30,0),
-d(2008,3,20,20,30,0),
-d(2008,9,20,19,30,0),
-d(2009,3,21,20,30,0),
-d(2009,9,21,19,30,0),
-d(2010,3,21,20,30,0),
-d(2010,9,21,19,30,0),
-d(2011,3,21,20,30,0),
-d(2011,9,21,19,30,0),
-d(2012,3,20,20,30,0),
-d(2012,9,20,19,30,0),
-d(2013,3,21,20,30,0),
-d(2013,9,21,19,30,0),
-d(2014,3,21,20,30,0),
-d(2014,9,21,19,30,0),
-d(2015,3,21,20,30,0),
-d(2015,9,21,19,30,0),
-d(2016,3,20,20,30,0),
-d(2016,9,20,19,30,0),
-d(2017,3,21,20,30,0),
-d(2017,9,21,19,30,0),
-d(2018,3,21,20,30,0),
-d(2018,9,21,19,30,0),
-d(2019,3,21,20,30,0),
-d(2019,9,21,19,30,0),
-d(2020,3,20,20,30,0),
-d(2020,9,20,19,30,0),
-d(2021,3,21,20,30,0),
-d(2021,9,21,19,30,0),
-d(2022,3,21,20,30,0),
-d(2022,9,21,19,30,0),
-d(2023,3,21,20,30,0),
-d(2023,9,21,19,30,0),
-d(2024,3,20,20,30,0),
-d(2024,9,20,19,30,0),
-d(2025,3,21,20,30,0),
-d(2025,9,21,19,30,0),
-d(2026,3,21,20,30,0),
-d(2026,9,21,19,30,0),
-d(2027,3,21,20,30,0),
-d(2027,9,21,19,30,0),
-d(2028,3,20,20,30,0),
-d(2028,9,20,19,30,0),
-d(2029,3,20,20,30,0),
-d(2029,9,20,19,30,0),
-d(2030,3,21,20,30,0),
-d(2030,9,21,19,30,0),
-d(2031,3,21,20,30,0),
-d(2031,9,21,19,30,0),
-d(2032,3,20,20,30,0),
-d(2032,9,20,19,30,0),
-d(2033,3,20,20,30,0),
-d(2033,9,20,19,30,0),
-d(2034,3,21,20,30,0),
-d(2034,9,21,19,30,0),
-d(2035,3,21,20,30,0),
-d(2035,9,21,19,30,0),
-d(2036,3,20,20,30,0),
-d(2036,9,20,19,30,0),
-d(2037,3,20,20,30,0),
-d(2037,9,20,19,30,0),
- ]
-
- _transition_info = [
-i(12360,0,'LMT'),
-i(12360,0,'TMT'),
-i(12600,0,'IRST'),
-i(14400,0,'IRST'),
-i(18000,3600,'IRDT'),
-i(14400,0,'IRST'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
-i(16200,3600,'IRDT'),
-i(12600,0,'IRST'),
- ]
-
-Iran = Iran()
-
diff --git a/modules/pytz/zoneinfo/Israel.py b/modules/pytz/zoneinfo/Israel.py
deleted file mode 100644
index 14b0bbbb..00000000
--- a/modules/pytz/zoneinfo/Israel.py
+++ /dev/null
@@ -1,304 +0,0 @@
-'''tzinfo timezone information for Israel.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Israel(DstTzInfo):
- '''Israel timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Israel'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1917,12,31,21,39,20),
-d(1940,5,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1943,4,1,0,0,0),
-d(1943,10,31,21,0,0),
-d(1944,3,31,22,0,0),
-d(1944,10,31,21,0,0),
-d(1945,4,15,22,0,0),
-d(1945,10,31,23,0,0),
-d(1946,4,16,0,0,0),
-d(1946,10,31,21,0,0),
-d(1948,5,22,22,0,0),
-d(1948,8,31,20,0,0),
-d(1948,10,31,23,0,0),
-d(1949,4,30,22,0,0),
-d(1949,10,31,23,0,0),
-d(1950,4,15,22,0,0),
-d(1950,9,15,0,0,0),
-d(1951,3,31,22,0,0),
-d(1951,11,11,0,0,0),
-d(1952,4,20,0,0,0),
-d(1952,10,19,0,0,0),
-d(1953,4,12,0,0,0),
-d(1953,9,13,0,0,0),
-d(1954,6,12,22,0,0),
-d(1954,9,11,21,0,0),
-d(1955,6,11,0,0,0),
-d(1955,9,10,21,0,0),
-d(1956,6,2,22,0,0),
-d(1956,9,30,0,0,0),
-d(1957,4,29,0,0,0),
-d(1957,9,21,21,0,0),
-d(1974,7,6,22,0,0),
-d(1974,10,12,21,0,0),
-d(1975,4,19,22,0,0),
-d(1975,8,30,21,0,0),
-d(1985,4,13,22,0,0),
-d(1985,9,14,21,0,0),
-d(1986,5,17,22,0,0),
-d(1986,9,6,21,0,0),
-d(1987,4,14,22,0,0),
-d(1987,9,12,21,0,0),
-d(1988,4,8,22,0,0),
-d(1988,9,2,21,0,0),
-d(1989,4,29,22,0,0),
-d(1989,9,2,21,0,0),
-d(1990,3,24,22,0,0),
-d(1990,8,25,21,0,0),
-d(1991,3,23,22,0,0),
-d(1991,8,31,21,0,0),
-d(1992,3,28,22,0,0),
-d(1992,9,5,21,0,0),
-d(1993,4,1,22,0,0),
-d(1993,9,4,21,0,0),
-d(1994,3,31,22,0,0),
-d(1994,8,27,21,0,0),
-d(1995,3,30,22,0,0),
-d(1995,9,2,21,0,0),
-d(1996,3,14,22,0,0),
-d(1996,9,15,21,0,0),
-d(1997,3,20,22,0,0),
-d(1997,9,13,21,0,0),
-d(1998,3,19,22,0,0),
-d(1998,9,5,21,0,0),
-d(1999,4,2,0,0,0),
-d(1999,9,2,23,0,0),
-d(2000,4,14,0,0,0),
-d(2000,10,5,22,0,0),
-d(2001,4,8,23,0,0),
-d(2001,9,23,22,0,0),
-d(2002,3,28,23,0,0),
-d(2002,10,6,22,0,0),
-d(2003,3,27,23,0,0),
-d(2003,10,2,22,0,0),
-d(2004,4,6,23,0,0),
-d(2004,9,21,22,0,0),
-d(2005,4,1,0,0,0),
-d(2005,10,8,23,0,0),
-d(2006,3,31,0,0,0),
-d(2006,9,30,23,0,0),
-d(2007,3,30,0,0,0),
-d(2007,9,15,23,0,0),
-d(2008,3,28,0,0,0),
-d(2008,10,4,23,0,0),
-d(2009,3,27,0,0,0),
-d(2009,9,26,23,0,0),
-d(2010,3,26,0,0,0),
-d(2010,9,11,23,0,0),
-d(2011,4,1,0,0,0),
-d(2011,10,1,23,0,0),
-d(2012,3,30,0,0,0),
-d(2012,9,22,23,0,0),
-d(2013,3,29,0,0,0),
-d(2013,9,7,23,0,0),
-d(2014,3,28,0,0,0),
-d(2014,9,27,23,0,0),
-d(2015,3,27,0,0,0),
-d(2015,9,19,23,0,0),
-d(2016,4,1,0,0,0),
-d(2016,10,8,23,0,0),
-d(2017,3,31,0,0,0),
-d(2017,9,23,23,0,0),
-d(2018,3,30,0,0,0),
-d(2018,9,15,23,0,0),
-d(2019,3,29,0,0,0),
-d(2019,10,5,23,0,0),
-d(2020,3,27,0,0,0),
-d(2020,9,26,23,0,0),
-d(2021,3,26,0,0,0),
-d(2021,9,11,23,0,0),
-d(2022,4,1,0,0,0),
-d(2022,10,1,23,0,0),
-d(2023,3,31,0,0,0),
-d(2023,9,23,23,0,0),
-d(2024,3,29,0,0,0),
-d(2024,10,5,23,0,0),
-d(2025,3,28,0,0,0),
-d(2025,9,27,23,0,0),
-d(2026,3,27,0,0,0),
-d(2026,9,19,23,0,0),
-d(2027,3,26,0,0,0),
-d(2027,10,9,23,0,0),
-d(2028,3,31,0,0,0),
-d(2028,9,23,23,0,0),
-d(2029,3,30,0,0,0),
-d(2029,9,15,23,0,0),
-d(2030,3,29,0,0,0),
-d(2030,10,5,23,0,0),
-d(2031,3,28,0,0,0),
-d(2031,9,20,23,0,0),
-d(2032,3,26,0,0,0),
-d(2032,9,11,23,0,0),
-d(2033,4,1,0,0,0),
-d(2033,10,1,23,0,0),
-d(2034,3,31,0,0,0),
-d(2034,9,16,23,0,0),
-d(2035,3,30,0,0,0),
-d(2035,10,6,23,0,0),
-d(2036,3,28,0,0,0),
-d(2036,9,27,23,0,0),
-d(2037,3,27,0,0,0),
-d(2037,9,12,23,0,0),
- ]
-
- _transition_info = [
-i(8460,0,'JMT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(14400,7200,'IDDT'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
-i(10800,3600,'IDT'),
-i(7200,0,'IST'),
- ]
-
-Israel = Israel()
-
diff --git a/modules/pytz/zoneinfo/Jamaica.py b/modules/pytz/zoneinfo/Jamaica.py
deleted file mode 100644
index f166a375..00000000
--- a/modules/pytz/zoneinfo/Jamaica.py
+++ /dev/null
@@ -1,62 +0,0 @@
-'''tzinfo timezone information for Jamaica.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Jamaica(DstTzInfo):
- '''Jamaica timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Jamaica'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,2,1,5,7,12),
-d(1974,4,28,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
- ]
-
- _transition_info = [
-i(-18420,0,'KMT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Jamaica = Jamaica()
-
diff --git a/modules/pytz/zoneinfo/Japan.py b/modules/pytz/zoneinfo/Japan.py
deleted file mode 100644
index e3030074..00000000
--- a/modules/pytz/zoneinfo/Japan.py
+++ /dev/null
@@ -1,38 +0,0 @@
-'''tzinfo timezone information for Japan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Japan(DstTzInfo):
- '''Japan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Japan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1937,12,31,15,0,0),
-d(1948,5,1,17,0,0),
-d(1948,9,10,16,0,0),
-d(1949,4,2,17,0,0),
-d(1949,9,9,16,0,0),
-d(1950,5,6,17,0,0),
-d(1950,9,8,16,0,0),
-d(1951,5,5,17,0,0),
-d(1951,9,7,16,0,0),
- ]
-
- _transition_info = [
-i(32400,0,'CJT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
-i(36000,3600,'JDT'),
-i(32400,0,'JST'),
- ]
-
-Japan = Japan()
-
diff --git a/modules/pytz/zoneinfo/Kwajalein.py b/modules/pytz/zoneinfo/Kwajalein.py
deleted file mode 100644
index edab84d1..00000000
--- a/modules/pytz/zoneinfo/Kwajalein.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Kwajalein.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kwajalein(DstTzInfo):
- '''Kwajalein timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Kwajalein'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1969,9,30,13,0,0),
-d(1993,8,20,12,0,0),
- ]
-
- _transition_info = [
-i(39600,0,'MHT'),
-i(-43200,0,'KWAT'),
-i(43200,0,'MHT'),
- ]
-
-Kwajalein = Kwajalein()
-
diff --git a/modules/pytz/zoneinfo/Libya.py b/modules/pytz/zoneinfo/Libya.py
deleted file mode 100644
index 3ab8dbca..00000000
--- a/modules/pytz/zoneinfo/Libya.py
+++ /dev/null
@@ -1,78 +0,0 @@
-'''tzinfo timezone information for Libya.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Libya(DstTzInfo):
- '''Libya timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Libya'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1919,12,31,23,7,16),
-d(1951,10,14,1,0,0),
-d(1951,12,31,22,0,0),
-d(1953,10,9,1,0,0),
-d(1953,12,31,22,0,0),
-d(1955,9,29,23,0,0),
-d(1955,12,31,22,0,0),
-d(1958,12,31,23,0,0),
-d(1981,12,31,22,0,0),
-d(1982,3,31,23,0,0),
-d(1982,9,30,22,0,0),
-d(1983,3,31,23,0,0),
-d(1983,9,30,22,0,0),
-d(1984,3,31,23,0,0),
-d(1984,9,30,22,0,0),
-d(1985,4,5,23,0,0),
-d(1985,9,30,22,0,0),
-d(1986,4,3,23,0,0),
-d(1986,10,2,22,0,0),
-d(1987,3,31,23,0,0),
-d(1987,9,30,22,0,0),
-d(1988,3,31,23,0,0),
-d(1988,9,30,22,0,0),
-d(1989,3,31,23,0,0),
-d(1989,9,30,22,0,0),
-d(1990,5,3,23,0,0),
-d(1996,9,29,22,0,0),
-d(1997,4,3,23,0,0),
-d(1997,10,3,22,0,0),
- ]
-
- _transition_info = [
-i(3180,0,'LMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,0,'EET'),
- ]
-
-Libya = Libya()
-
diff --git a/modules/pytz/zoneinfo/MET.py b/modules/pytz/zoneinfo/MET.py
deleted file mode 100644
index 09009209..00000000
--- a/modules/pytz/zoneinfo/MET.py
+++ /dev/null
@@ -1,288 +0,0 @@
-'''tzinfo timezone information for MET.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class MET(DstTzInfo):
- '''MET timezone definition. See datetime.tzinfo for details'''
-
- zone = 'MET'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1940,4,1,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,10,2,1,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
-i(7200,3600,'MEST'),
-i(3600,0,'MET'),
- ]
-
-MET = MET()
-
diff --git a/modules/pytz/zoneinfo/MST.py b/modules/pytz/zoneinfo/MST.py
deleted file mode 100644
index 6a9cc946..00000000
--- a/modules/pytz/zoneinfo/MST.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for MST.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class MST(StaticTzInfo):
- '''MST timezone definition. See datetime.tzinfo for details'''
- zone = 'MST'
- _utcoffset = timedelta(seconds=-25200)
- _tzname = 'MST'
-
-MST = MST()
-
diff --git a/modules/pytz/zoneinfo/MST7MDT.py b/modules/pytz/zoneinfo/MST7MDT.py
deleted file mode 100644
index baad8bec..00000000
--- a/modules/pytz/zoneinfo/MST7MDT.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for MST7MDT.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class MST7MDT(DstTzInfo):
- '''MST7MDT timezone definition. See datetime.tzinfo for details'''
-
- zone = 'MST7MDT'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,1,6,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-MST7MDT = MST7MDT()
-
diff --git a/modules/pytz/zoneinfo/Mexico/BajaNorte.py b/modules/pytz/zoneinfo/Mexico/BajaNorte.py
deleted file mode 100644
index c3778436..00000000
--- a/modules/pytz/zoneinfo/Mexico/BajaNorte.py
+++ /dev/null
@@ -1,316 +0,0 @@
-'''tzinfo timezone information for Mexico/BajaNorte.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class BajaNorte(DstTzInfo):
- '''Mexico/BajaNorte timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Mexico/BajaNorte'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,8,0,0),
-d(1924,1,1,7,0,0),
-d(1927,6,11,7,0,0),
-d(1930,11,15,7,0,0),
-d(1931,4,1,8,0,0),
-d(1931,9,30,7,0,0),
-d(1942,4,24,8,0,0),
-d(1945,11,12,7,0,0),
-d(1948,4,5,8,0,0),
-d(1949,1,14,7,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,4,1,10,0,0),
-d(2007,10,28,9,0,0),
-d(2008,4,6,10,0,0),
-d(2008,10,26,9,0,0),
-d(2009,4,5,10,0,0),
-d(2009,10,25,9,0,0),
-d(2010,4,4,10,0,0),
-d(2010,10,31,9,0,0),
-d(2011,4,3,10,0,0),
-d(2011,10,30,9,0,0),
-d(2012,4,1,10,0,0),
-d(2012,10,28,9,0,0),
-d(2013,4,7,10,0,0),
-d(2013,10,27,9,0,0),
-d(2014,4,6,10,0,0),
-d(2014,10,26,9,0,0),
-d(2015,4,5,10,0,0),
-d(2015,10,25,9,0,0),
-d(2016,4,3,10,0,0),
-d(2016,10,30,9,0,0),
-d(2017,4,2,10,0,0),
-d(2017,10,29,9,0,0),
-d(2018,4,1,10,0,0),
-d(2018,10,28,9,0,0),
-d(2019,4,7,10,0,0),
-d(2019,10,27,9,0,0),
-d(2020,4,5,10,0,0),
-d(2020,10,25,9,0,0),
-d(2021,4,4,10,0,0),
-d(2021,10,31,9,0,0),
-d(2022,4,3,10,0,0),
-d(2022,10,30,9,0,0),
-d(2023,4,2,10,0,0),
-d(2023,10,29,9,0,0),
-d(2024,4,7,10,0,0),
-d(2024,10,27,9,0,0),
-d(2025,4,6,10,0,0),
-d(2025,10,26,9,0,0),
-d(2026,4,5,10,0,0),
-d(2026,10,25,9,0,0),
-d(2027,4,4,10,0,0),
-d(2027,10,31,9,0,0),
-d(2028,4,2,10,0,0),
-d(2028,10,29,9,0,0),
-d(2029,4,1,10,0,0),
-d(2029,10,28,9,0,0),
-d(2030,4,7,10,0,0),
-d(2030,10,27,9,0,0),
-d(2031,4,6,10,0,0),
-d(2031,10,26,9,0,0),
-d(2032,4,4,10,0,0),
-d(2032,10,31,9,0,0),
-d(2033,4,3,10,0,0),
-d(2033,10,30,9,0,0),
-d(2034,4,2,10,0,0),
-d(2034,10,29,9,0,0),
-d(2035,4,1,10,0,0),
-d(2035,10,28,9,0,0),
-d(2036,4,6,10,0,0),
-d(2036,10,26,9,0,0),
-d(2037,4,5,10,0,0),
-d(2037,10,25,9,0,0),
- ]
-
- _transition_info = [
-i(-28080,0,'LMT'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-BajaNorte = BajaNorte()
-
diff --git a/modules/pytz/zoneinfo/Mexico/BajaSur.py b/modules/pytz/zoneinfo/Mexico/BajaSur.py
deleted file mode 100644
index 22da0533..00000000
--- a/modules/pytz/zoneinfo/Mexico/BajaSur.py
+++ /dev/null
@@ -1,206 +0,0 @@
-'''tzinfo timezone information for Mexico/BajaSur.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class BajaSur(DstTzInfo):
- '''Mexico/BajaSur timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Mexico/BajaSur'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,7,0,0),
-d(1927,6,11,6,0,0),
-d(1930,11,15,6,0,0),
-d(1931,5,2,6,0,0),
-d(1931,10,1,6,0,0),
-d(1932,4,1,7,0,0),
-d(1942,4,24,6,0,0),
-d(1949,1,14,7,0,0),
-d(1970,1,1,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,5,6,9,0,0),
-d(2001,9,30,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,4,1,9,0,0),
-d(2007,10,28,8,0,0),
-d(2008,4,6,9,0,0),
-d(2008,10,26,8,0,0),
-d(2009,4,5,9,0,0),
-d(2009,10,25,8,0,0),
-d(2010,4,4,9,0,0),
-d(2010,10,31,8,0,0),
-d(2011,4,3,9,0,0),
-d(2011,10,30,8,0,0),
-d(2012,4,1,9,0,0),
-d(2012,10,28,8,0,0),
-d(2013,4,7,9,0,0),
-d(2013,10,27,8,0,0),
-d(2014,4,6,9,0,0),
-d(2014,10,26,8,0,0),
-d(2015,4,5,9,0,0),
-d(2015,10,25,8,0,0),
-d(2016,4,3,9,0,0),
-d(2016,10,30,8,0,0),
-d(2017,4,2,9,0,0),
-d(2017,10,29,8,0,0),
-d(2018,4,1,9,0,0),
-d(2018,10,28,8,0,0),
-d(2019,4,7,9,0,0),
-d(2019,10,27,8,0,0),
-d(2020,4,5,9,0,0),
-d(2020,10,25,8,0,0),
-d(2021,4,4,9,0,0),
-d(2021,10,31,8,0,0),
-d(2022,4,3,9,0,0),
-d(2022,10,30,8,0,0),
-d(2023,4,2,9,0,0),
-d(2023,10,29,8,0,0),
-d(2024,4,7,9,0,0),
-d(2024,10,27,8,0,0),
-d(2025,4,6,9,0,0),
-d(2025,10,26,8,0,0),
-d(2026,4,5,9,0,0),
-d(2026,10,25,8,0,0),
-d(2027,4,4,9,0,0),
-d(2027,10,31,8,0,0),
-d(2028,4,2,9,0,0),
-d(2028,10,29,8,0,0),
-d(2029,4,1,9,0,0),
-d(2029,10,28,8,0,0),
-d(2030,4,7,9,0,0),
-d(2030,10,27,8,0,0),
-d(2031,4,6,9,0,0),
-d(2031,10,26,8,0,0),
-d(2032,4,4,9,0,0),
-d(2032,10,31,8,0,0),
-d(2033,4,3,9,0,0),
-d(2033,10,30,8,0,0),
-d(2034,4,2,9,0,0),
-d(2034,10,29,8,0,0),
-d(2035,4,1,9,0,0),
-d(2035,10,28,8,0,0),
-d(2036,4,6,9,0,0),
-d(2036,10,26,8,0,0),
-d(2037,4,5,9,0,0),
-d(2037,10,25,8,0,0),
- ]
-
- _transition_info = [
-i(-25560,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-28800,0,'PST'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-BajaSur = BajaSur()
-
diff --git a/modules/pytz/zoneinfo/Mexico/General.py b/modules/pytz/zoneinfo/Mexico/General.py
deleted file mode 100644
index 9a224612..00000000
--- a/modules/pytz/zoneinfo/Mexico/General.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''tzinfo timezone information for Mexico/General.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class General(DstTzInfo):
- '''Mexico/General timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Mexico/General'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1922,1,1,7,0,0),
-d(1927,6,11,6,0,0),
-d(1930,11,15,6,0,0),
-d(1931,5,2,6,0,0),
-d(1931,10,1,6,0,0),
-d(1932,4,1,7,0,0),
-d(1939,2,5,6,0,0),
-d(1939,6,25,5,0,0),
-d(1940,12,9,6,0,0),
-d(1941,4,1,5,0,0),
-d(1943,12,16,6,0,0),
-d(1944,5,1,5,0,0),
-d(1950,2,12,6,0,0),
-d(1950,7,30,5,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,5,6,8,0,0),
-d(2001,9,30,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,4,1,8,0,0),
-d(2007,10,28,7,0,0),
-d(2008,4,6,8,0,0),
-d(2008,10,26,7,0,0),
-d(2009,4,5,8,0,0),
-d(2009,10,25,7,0,0),
-d(2010,4,4,8,0,0),
-d(2010,10,31,7,0,0),
-d(2011,4,3,8,0,0),
-d(2011,10,30,7,0,0),
-d(2012,4,1,8,0,0),
-d(2012,10,28,7,0,0),
-d(2013,4,7,8,0,0),
-d(2013,10,27,7,0,0),
-d(2014,4,6,8,0,0),
-d(2014,10,26,7,0,0),
-d(2015,4,5,8,0,0),
-d(2015,10,25,7,0,0),
-d(2016,4,3,8,0,0),
-d(2016,10,30,7,0,0),
-d(2017,4,2,8,0,0),
-d(2017,10,29,7,0,0),
-d(2018,4,1,8,0,0),
-d(2018,10,28,7,0,0),
-d(2019,4,7,8,0,0),
-d(2019,10,27,7,0,0),
-d(2020,4,5,8,0,0),
-d(2020,10,25,7,0,0),
-d(2021,4,4,8,0,0),
-d(2021,10,31,7,0,0),
-d(2022,4,3,8,0,0),
-d(2022,10,30,7,0,0),
-d(2023,4,2,8,0,0),
-d(2023,10,29,7,0,0),
-d(2024,4,7,8,0,0),
-d(2024,10,27,7,0,0),
-d(2025,4,6,8,0,0),
-d(2025,10,26,7,0,0),
-d(2026,4,5,8,0,0),
-d(2026,10,25,7,0,0),
-d(2027,4,4,8,0,0),
-d(2027,10,31,7,0,0),
-d(2028,4,2,8,0,0),
-d(2028,10,29,7,0,0),
-d(2029,4,1,8,0,0),
-d(2029,10,28,7,0,0),
-d(2030,4,7,8,0,0),
-d(2030,10,27,7,0,0),
-d(2031,4,6,8,0,0),
-d(2031,10,26,7,0,0),
-d(2032,4,4,8,0,0),
-d(2032,10,31,7,0,0),
-d(2033,4,3,8,0,0),
-d(2033,10,30,7,0,0),
-d(2034,4,2,8,0,0),
-d(2034,10,29,7,0,0),
-d(2035,4,1,8,0,0),
-d(2035,10,28,7,0,0),
-d(2036,4,6,8,0,0),
-d(2036,10,26,7,0,0),
-d(2037,4,5,8,0,0),
-d(2037,10,25,7,0,0),
- ]
-
- _transition_info = [
-i(-23820,0,'LMT'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-25200,0,'MST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-General = General()
-
diff --git a/modules/pytz/zoneinfo/Mexico/__init__.py b/modules/pytz/zoneinfo/Mexico/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/NZ.py b/modules/pytz/zoneinfo/NZ.py
deleted file mode 100644
index 8e80f819..00000000
--- a/modules/pytz/zoneinfo/NZ.py
+++ /dev/null
@@ -1,330 +0,0 @@
-'''tzinfo timezone information for NZ.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class NZ(DstTzInfo):
- '''NZ timezone definition. See datetime.tzinfo for details'''
-
- zone = 'NZ'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,11,5,14,30,0),
-d(1928,3,3,13,30,0),
-d(1928,10,13,14,30,0),
-d(1929,3,16,14,0,0),
-d(1929,10,12,14,30,0),
-d(1930,3,15,14,0,0),
-d(1930,10,11,14,30,0),
-d(1931,3,14,14,0,0),
-d(1931,10,10,14,30,0),
-d(1932,3,19,14,0,0),
-d(1932,10,8,14,30,0),
-d(1933,3,18,14,0,0),
-d(1933,10,7,14,30,0),
-d(1934,4,28,14,0,0),
-d(1934,9,29,14,30,0),
-d(1935,4,27,14,0,0),
-d(1935,9,28,14,30,0),
-d(1936,4,25,14,0,0),
-d(1936,9,26,14,30,0),
-d(1937,4,24,14,0,0),
-d(1937,9,25,14,30,0),
-d(1938,4,23,14,0,0),
-d(1938,9,24,14,30,0),
-d(1939,4,29,14,0,0),
-d(1939,9,23,14,30,0),
-d(1940,4,27,14,0,0),
-d(1940,9,28,14,30,0),
-d(1945,12,31,12,0,0),
-d(1974,11,2,14,0,0),
-d(1975,2,22,14,0,0),
-d(1975,10,25,14,0,0),
-d(1976,3,6,14,0,0),
-d(1976,10,30,14,0,0),
-d(1977,3,5,14,0,0),
-d(1977,10,29,14,0,0),
-d(1978,3,4,14,0,0),
-d(1978,10,28,14,0,0),
-d(1979,3,3,14,0,0),
-d(1979,10,27,14,0,0),
-d(1980,3,1,14,0,0),
-d(1980,10,25,14,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,14,0,0),
-d(1982,3,6,14,0,0),
-d(1982,10,30,14,0,0),
-d(1983,3,5,14,0,0),
-d(1983,10,29,14,0,0),
-d(1984,3,3,14,0,0),
-d(1984,10,27,14,0,0),
-d(1985,3,2,14,0,0),
-d(1985,10,26,14,0,0),
-d(1986,3,1,14,0,0),
-d(1986,10,25,14,0,0),
-d(1987,2,28,14,0,0),
-d(1987,10,24,14,0,0),
-d(1988,3,5,14,0,0),
-d(1988,10,29,14,0,0),
-d(1989,3,4,14,0,0),
-d(1989,10,7,14,0,0),
-d(1990,3,17,14,0,0),
-d(1990,10,6,14,0,0),
-d(1991,3,16,14,0,0),
-d(1991,10,5,14,0,0),
-d(1992,3,14,14,0,0),
-d(1992,10,3,14,0,0),
-d(1993,3,20,14,0,0),
-d(1993,10,2,14,0,0),
-d(1994,3,19,14,0,0),
-d(1994,10,1,14,0,0),
-d(1995,3,18,14,0,0),
-d(1995,9,30,14,0,0),
-d(1996,3,16,14,0,0),
-d(1996,10,5,14,0,0),
-d(1997,3,15,14,0,0),
-d(1997,10,4,14,0,0),
-d(1998,3,14,14,0,0),
-d(1998,10,3,14,0,0),
-d(1999,3,20,14,0,0),
-d(1999,10,2,14,0,0),
-d(2000,3,18,14,0,0),
-d(2000,9,30,14,0,0),
-d(2001,3,17,14,0,0),
-d(2001,10,6,14,0,0),
-d(2002,3,16,14,0,0),
-d(2002,10,5,14,0,0),
-d(2003,3,15,14,0,0),
-d(2003,10,4,14,0,0),
-d(2004,3,20,14,0,0),
-d(2004,10,2,14,0,0),
-d(2005,3,19,14,0,0),
-d(2005,10,1,14,0,0),
-d(2006,3,18,14,0,0),
-d(2006,9,30,14,0,0),
-d(2007,3,17,14,0,0),
-d(2007,10,6,14,0,0),
-d(2008,3,15,14,0,0),
-d(2008,10,4,14,0,0),
-d(2009,3,14,14,0,0),
-d(2009,10,3,14,0,0),
-d(2010,3,20,14,0,0),
-d(2010,10,2,14,0,0),
-d(2011,3,19,14,0,0),
-d(2011,10,1,14,0,0),
-d(2012,3,17,14,0,0),
-d(2012,10,6,14,0,0),
-d(2013,3,16,14,0,0),
-d(2013,10,5,14,0,0),
-d(2014,3,15,14,0,0),
-d(2014,10,4,14,0,0),
-d(2015,3,14,14,0,0),
-d(2015,10,3,14,0,0),
-d(2016,3,19,14,0,0),
-d(2016,10,1,14,0,0),
-d(2017,3,18,14,0,0),
-d(2017,9,30,14,0,0),
-d(2018,3,17,14,0,0),
-d(2018,10,6,14,0,0),
-d(2019,3,16,14,0,0),
-d(2019,10,5,14,0,0),
-d(2020,3,14,14,0,0),
-d(2020,10,3,14,0,0),
-d(2021,3,20,14,0,0),
-d(2021,10,2,14,0,0),
-d(2022,3,19,14,0,0),
-d(2022,10,1,14,0,0),
-d(2023,3,18,14,0,0),
-d(2023,9,30,14,0,0),
-d(2024,3,16,14,0,0),
-d(2024,10,5,14,0,0),
-d(2025,3,15,14,0,0),
-d(2025,10,4,14,0,0),
-d(2026,3,14,14,0,0),
-d(2026,10,3,14,0,0),
-d(2027,3,20,14,0,0),
-d(2027,10,2,14,0,0),
-d(2028,3,18,14,0,0),
-d(2028,9,30,14,0,0),
-d(2029,3,17,14,0,0),
-d(2029,10,6,14,0,0),
-d(2030,3,16,14,0,0),
-d(2030,10,5,14,0,0),
-d(2031,3,15,14,0,0),
-d(2031,10,4,14,0,0),
-d(2032,3,20,14,0,0),
-d(2032,10,2,14,0,0),
-d(2033,3,19,14,0,0),
-d(2033,10,1,14,0,0),
-d(2034,3,18,14,0,0),
-d(2034,9,30,14,0,0),
-d(2035,3,17,14,0,0),
-d(2035,10,6,14,0,0),
-d(2036,3,15,14,0,0),
-d(2036,10,4,14,0,0),
-d(2037,3,14,14,0,0),
-d(2037,10,3,14,0,0),
- ]
-
- _transition_info = [
-i(41400,0,'NZMT'),
-i(45000,3600,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
- ]
-
-NZ = NZ()
-
diff --git a/modules/pytz/zoneinfo/NZ_minus_CHAT.py b/modules/pytz/zoneinfo/NZ_minus_CHAT.py
deleted file mode 100644
index 4cbbb3ee..00000000
--- a/modules/pytz/zoneinfo/NZ_minus_CHAT.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for NZ_minus_CHAT.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class NZ_minus_CHAT(DstTzInfo):
- '''NZ_minus_CHAT timezone definition. See datetime.tzinfo for details'''
-
- zone = 'NZ_minus_CHAT'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1956,12,31,11,46,12),
-d(1974,11,2,14,0,0),
-d(1975,2,22,14,0,0),
-d(1975,10,25,14,0,0),
-d(1976,3,6,14,0,0),
-d(1976,10,30,14,0,0),
-d(1977,3,5,14,0,0),
-d(1977,10,29,14,0,0),
-d(1978,3,4,14,0,0),
-d(1978,10,28,14,0,0),
-d(1979,3,3,14,0,0),
-d(1979,10,27,14,0,0),
-d(1980,3,1,14,0,0),
-d(1980,10,25,14,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,14,0,0),
-d(1982,3,6,14,0,0),
-d(1982,10,30,14,0,0),
-d(1983,3,5,14,0,0),
-d(1983,10,29,14,0,0),
-d(1984,3,3,14,0,0),
-d(1984,10,27,14,0,0),
-d(1985,3,2,14,0,0),
-d(1985,10,26,14,0,0),
-d(1986,3,1,14,0,0),
-d(1986,10,25,14,0,0),
-d(1987,2,28,14,0,0),
-d(1987,10,24,14,0,0),
-d(1988,3,5,14,0,0),
-d(1988,10,29,14,0,0),
-d(1989,3,4,14,0,0),
-d(1989,10,7,14,0,0),
-d(1990,3,17,14,0,0),
-d(1990,10,6,14,0,0),
-d(1991,3,16,14,0,0),
-d(1991,10,5,14,0,0),
-d(1992,3,14,14,0,0),
-d(1992,10,3,14,0,0),
-d(1993,3,20,14,0,0),
-d(1993,10,2,14,0,0),
-d(1994,3,19,14,0,0),
-d(1994,10,1,14,0,0),
-d(1995,3,18,14,0,0),
-d(1995,9,30,14,0,0),
-d(1996,3,16,14,0,0),
-d(1996,10,5,14,0,0),
-d(1997,3,15,14,0,0),
-d(1997,10,4,14,0,0),
-d(1998,3,14,14,0,0),
-d(1998,10,3,14,0,0),
-d(1999,3,20,14,0,0),
-d(1999,10,2,14,0,0),
-d(2000,3,18,14,0,0),
-d(2000,9,30,14,0,0),
-d(2001,3,17,14,0,0),
-d(2001,10,6,14,0,0),
-d(2002,3,16,14,0,0),
-d(2002,10,5,14,0,0),
-d(2003,3,15,14,0,0),
-d(2003,10,4,14,0,0),
-d(2004,3,20,14,0,0),
-d(2004,10,2,14,0,0),
-d(2005,3,19,14,0,0),
-d(2005,10,1,14,0,0),
-d(2006,3,18,14,0,0),
-d(2006,9,30,14,0,0),
-d(2007,3,17,14,0,0),
-d(2007,10,6,14,0,0),
-d(2008,3,15,14,0,0),
-d(2008,10,4,14,0,0),
-d(2009,3,14,14,0,0),
-d(2009,10,3,14,0,0),
-d(2010,3,20,14,0,0),
-d(2010,10,2,14,0,0),
-d(2011,3,19,14,0,0),
-d(2011,10,1,14,0,0),
-d(2012,3,17,14,0,0),
-d(2012,10,6,14,0,0),
-d(2013,3,16,14,0,0),
-d(2013,10,5,14,0,0),
-d(2014,3,15,14,0,0),
-d(2014,10,4,14,0,0),
-d(2015,3,14,14,0,0),
-d(2015,10,3,14,0,0),
-d(2016,3,19,14,0,0),
-d(2016,10,1,14,0,0),
-d(2017,3,18,14,0,0),
-d(2017,9,30,14,0,0),
-d(2018,3,17,14,0,0),
-d(2018,10,6,14,0,0),
-d(2019,3,16,14,0,0),
-d(2019,10,5,14,0,0),
-d(2020,3,14,14,0,0),
-d(2020,10,3,14,0,0),
-d(2021,3,20,14,0,0),
-d(2021,10,2,14,0,0),
-d(2022,3,19,14,0,0),
-d(2022,10,1,14,0,0),
-d(2023,3,18,14,0,0),
-d(2023,9,30,14,0,0),
-d(2024,3,16,14,0,0),
-d(2024,10,5,14,0,0),
-d(2025,3,15,14,0,0),
-d(2025,10,4,14,0,0),
-d(2026,3,14,14,0,0),
-d(2026,10,3,14,0,0),
-d(2027,3,20,14,0,0),
-d(2027,10,2,14,0,0),
-d(2028,3,18,14,0,0),
-d(2028,9,30,14,0,0),
-d(2029,3,17,14,0,0),
-d(2029,10,6,14,0,0),
-d(2030,3,16,14,0,0),
-d(2030,10,5,14,0,0),
-d(2031,3,15,14,0,0),
-d(2031,10,4,14,0,0),
-d(2032,3,20,14,0,0),
-d(2032,10,2,14,0,0),
-d(2033,3,19,14,0,0),
-d(2033,10,1,14,0,0),
-d(2034,3,18,14,0,0),
-d(2034,9,30,14,0,0),
-d(2035,3,17,14,0,0),
-d(2035,10,6,14,0,0),
-d(2036,3,15,14,0,0),
-d(2036,10,4,14,0,0),
-d(2037,3,14,14,0,0),
-d(2037,10,3,14,0,0),
- ]
-
- _transition_info = [
-i(44040,0,'LMT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
- ]
-
-NZ_minus_CHAT = NZ_minus_CHAT()
-
diff --git a/modules/pytz/zoneinfo/Navajo.py b/modules/pytz/zoneinfo/Navajo.py
deleted file mode 100644
index 793142ec..00000000
--- a/modules/pytz/zoneinfo/Navajo.py
+++ /dev/null
@@ -1,334 +0,0 @@
-'''tzinfo timezone information for Navajo.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Navajo(DstTzInfo):
- '''Navajo timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Navajo'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1920,3,28,9,0,0),
-d(1920,10,31,8,0,0),
-d(1921,3,27,9,0,0),
-d(1921,5,22,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,8,0,0),
-d(1966,4,24,9,0,0),
-d(1966,10,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,1,6,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Navajo = Navajo()
-
diff --git a/modules/pytz/zoneinfo/PRC.py b/modules/pytz/zoneinfo/PRC.py
deleted file mode 100644
index 872a94da..00000000
--- a/modules/pytz/zoneinfo/PRC.py
+++ /dev/null
@@ -1,54 +0,0 @@
-'''tzinfo timezone information for PRC.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class PRC(DstTzInfo):
- '''PRC timezone definition. See datetime.tzinfo for details'''
-
- zone = 'PRC'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,12,31,15,54,8),
-d(1940,6,2,16,0,0),
-d(1940,9,30,15,0,0),
-d(1941,3,15,16,0,0),
-d(1941,9,30,15,0,0),
-d(1986,5,3,16,0,0),
-d(1986,9,13,15,0,0),
-d(1987,4,11,16,0,0),
-d(1987,9,12,15,0,0),
-d(1988,4,9,16,0,0),
-d(1988,9,10,15,0,0),
-d(1989,4,15,16,0,0),
-d(1989,9,16,15,0,0),
-d(1990,4,14,16,0,0),
-d(1990,9,15,15,0,0),
-d(1991,4,13,16,0,0),
-d(1991,9,14,15,0,0),
- ]
-
- _transition_info = [
-i(29160,0,'LMT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-PRC = PRC()
-
diff --git a/modules/pytz/zoneinfo/PST8PDT.py b/modules/pytz/zoneinfo/PST8PDT.py
deleted file mode 100644
index b4ef54d6..00000000
--- a/modules/pytz/zoneinfo/PST8PDT.py
+++ /dev/null
@@ -1,318 +0,0 @@
-'''tzinfo timezone information for PST8PDT.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class PST8PDT(DstTzInfo):
- '''PST8PDT timezone definition. See datetime.tzinfo for details'''
-
- zone = 'PST8PDT'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,10,0,0),
-d(1918,10,27,9,0,0),
-d(1919,3,30,10,0,0),
-d(1919,10,26,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,1,6,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,2,23,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,3,11,10,0,0),
-d(2007,11,4,9,0,0),
-d(2008,3,9,10,0,0),
-d(2008,11,2,9,0,0),
-d(2009,3,8,10,0,0),
-d(2009,11,1,9,0,0),
-d(2010,3,14,10,0,0),
-d(2010,11,7,9,0,0),
-d(2011,3,13,10,0,0),
-d(2011,11,6,9,0,0),
-d(2012,3,11,10,0,0),
-d(2012,11,4,9,0,0),
-d(2013,3,10,10,0,0),
-d(2013,11,3,9,0,0),
-d(2014,3,9,10,0,0),
-d(2014,11,2,9,0,0),
-d(2015,3,8,10,0,0),
-d(2015,11,1,9,0,0),
-d(2016,3,13,10,0,0),
-d(2016,11,6,9,0,0),
-d(2017,3,12,10,0,0),
-d(2017,11,5,9,0,0),
-d(2018,3,11,10,0,0),
-d(2018,11,4,9,0,0),
-d(2019,3,10,10,0,0),
-d(2019,11,3,9,0,0),
-d(2020,3,8,10,0,0),
-d(2020,11,1,9,0,0),
-d(2021,3,14,10,0,0),
-d(2021,11,7,9,0,0),
-d(2022,3,13,10,0,0),
-d(2022,11,6,9,0,0),
-d(2023,3,12,10,0,0),
-d(2023,11,5,9,0,0),
-d(2024,3,10,10,0,0),
-d(2024,11,3,9,0,0),
-d(2025,3,9,10,0,0),
-d(2025,11,2,9,0,0),
-d(2026,3,8,10,0,0),
-d(2026,11,1,9,0,0),
-d(2027,3,14,10,0,0),
-d(2027,11,7,9,0,0),
-d(2028,3,12,10,0,0),
-d(2028,11,5,9,0,0),
-d(2029,3,11,10,0,0),
-d(2029,11,4,9,0,0),
-d(2030,3,10,10,0,0),
-d(2030,11,3,9,0,0),
-d(2031,3,9,10,0,0),
-d(2031,11,2,9,0,0),
-d(2032,3,14,10,0,0),
-d(2032,11,7,9,0,0),
-d(2033,3,13,10,0,0),
-d(2033,11,6,9,0,0),
-d(2034,3,12,10,0,0),
-d(2034,11,5,9,0,0),
-d(2035,3,11,10,0,0),
-d(2035,11,4,9,0,0),
-d(2036,3,9,10,0,0),
-d(2036,11,2,9,0,0),
-d(2037,3,8,10,0,0),
-d(2037,11,1,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-PST8PDT = PST8PDT()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Apia.py b/modules/pytz/zoneinfo/Pacific/Apia.py
deleted file mode 100644
index 05cb54a0..00000000
--- a/modules/pytz/zoneinfo/Pacific/Apia.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Apia.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Apia(DstTzInfo):
- '''Pacific/Apia timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Apia'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,1,1,11,26,56),
-d(1950,1,1,11,30,0),
- ]
-
- _transition_info = [
-i(-41220,0,'LMT'),
-i(-41400,0,'SAMT'),
-i(-39600,0,'WST'),
- ]
-
-Apia = Apia()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Auckland.py b/modules/pytz/zoneinfo/Pacific/Auckland.py
deleted file mode 100644
index a257d229..00000000
--- a/modules/pytz/zoneinfo/Pacific/Auckland.py
+++ /dev/null
@@ -1,330 +0,0 @@
-'''tzinfo timezone information for Pacific/Auckland.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Auckland(DstTzInfo):
- '''Pacific/Auckland timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Auckland'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1927,11,5,14,30,0),
-d(1928,3,3,13,30,0),
-d(1928,10,13,14,30,0),
-d(1929,3,16,14,0,0),
-d(1929,10,12,14,30,0),
-d(1930,3,15,14,0,0),
-d(1930,10,11,14,30,0),
-d(1931,3,14,14,0,0),
-d(1931,10,10,14,30,0),
-d(1932,3,19,14,0,0),
-d(1932,10,8,14,30,0),
-d(1933,3,18,14,0,0),
-d(1933,10,7,14,30,0),
-d(1934,4,28,14,0,0),
-d(1934,9,29,14,30,0),
-d(1935,4,27,14,0,0),
-d(1935,9,28,14,30,0),
-d(1936,4,25,14,0,0),
-d(1936,9,26,14,30,0),
-d(1937,4,24,14,0,0),
-d(1937,9,25,14,30,0),
-d(1938,4,23,14,0,0),
-d(1938,9,24,14,30,0),
-d(1939,4,29,14,0,0),
-d(1939,9,23,14,30,0),
-d(1940,4,27,14,0,0),
-d(1940,9,28,14,30,0),
-d(1945,12,31,12,0,0),
-d(1974,11,2,14,0,0),
-d(1975,2,22,14,0,0),
-d(1975,10,25,14,0,0),
-d(1976,3,6,14,0,0),
-d(1976,10,30,14,0,0),
-d(1977,3,5,14,0,0),
-d(1977,10,29,14,0,0),
-d(1978,3,4,14,0,0),
-d(1978,10,28,14,0,0),
-d(1979,3,3,14,0,0),
-d(1979,10,27,14,0,0),
-d(1980,3,1,14,0,0),
-d(1980,10,25,14,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,14,0,0),
-d(1982,3,6,14,0,0),
-d(1982,10,30,14,0,0),
-d(1983,3,5,14,0,0),
-d(1983,10,29,14,0,0),
-d(1984,3,3,14,0,0),
-d(1984,10,27,14,0,0),
-d(1985,3,2,14,0,0),
-d(1985,10,26,14,0,0),
-d(1986,3,1,14,0,0),
-d(1986,10,25,14,0,0),
-d(1987,2,28,14,0,0),
-d(1987,10,24,14,0,0),
-d(1988,3,5,14,0,0),
-d(1988,10,29,14,0,0),
-d(1989,3,4,14,0,0),
-d(1989,10,7,14,0,0),
-d(1990,3,17,14,0,0),
-d(1990,10,6,14,0,0),
-d(1991,3,16,14,0,0),
-d(1991,10,5,14,0,0),
-d(1992,3,14,14,0,0),
-d(1992,10,3,14,0,0),
-d(1993,3,20,14,0,0),
-d(1993,10,2,14,0,0),
-d(1994,3,19,14,0,0),
-d(1994,10,1,14,0,0),
-d(1995,3,18,14,0,0),
-d(1995,9,30,14,0,0),
-d(1996,3,16,14,0,0),
-d(1996,10,5,14,0,0),
-d(1997,3,15,14,0,0),
-d(1997,10,4,14,0,0),
-d(1998,3,14,14,0,0),
-d(1998,10,3,14,0,0),
-d(1999,3,20,14,0,0),
-d(1999,10,2,14,0,0),
-d(2000,3,18,14,0,0),
-d(2000,9,30,14,0,0),
-d(2001,3,17,14,0,0),
-d(2001,10,6,14,0,0),
-d(2002,3,16,14,0,0),
-d(2002,10,5,14,0,0),
-d(2003,3,15,14,0,0),
-d(2003,10,4,14,0,0),
-d(2004,3,20,14,0,0),
-d(2004,10,2,14,0,0),
-d(2005,3,19,14,0,0),
-d(2005,10,1,14,0,0),
-d(2006,3,18,14,0,0),
-d(2006,9,30,14,0,0),
-d(2007,3,17,14,0,0),
-d(2007,10,6,14,0,0),
-d(2008,3,15,14,0,0),
-d(2008,10,4,14,0,0),
-d(2009,3,14,14,0,0),
-d(2009,10,3,14,0,0),
-d(2010,3,20,14,0,0),
-d(2010,10,2,14,0,0),
-d(2011,3,19,14,0,0),
-d(2011,10,1,14,0,0),
-d(2012,3,17,14,0,0),
-d(2012,10,6,14,0,0),
-d(2013,3,16,14,0,0),
-d(2013,10,5,14,0,0),
-d(2014,3,15,14,0,0),
-d(2014,10,4,14,0,0),
-d(2015,3,14,14,0,0),
-d(2015,10,3,14,0,0),
-d(2016,3,19,14,0,0),
-d(2016,10,1,14,0,0),
-d(2017,3,18,14,0,0),
-d(2017,9,30,14,0,0),
-d(2018,3,17,14,0,0),
-d(2018,10,6,14,0,0),
-d(2019,3,16,14,0,0),
-d(2019,10,5,14,0,0),
-d(2020,3,14,14,0,0),
-d(2020,10,3,14,0,0),
-d(2021,3,20,14,0,0),
-d(2021,10,2,14,0,0),
-d(2022,3,19,14,0,0),
-d(2022,10,1,14,0,0),
-d(2023,3,18,14,0,0),
-d(2023,9,30,14,0,0),
-d(2024,3,16,14,0,0),
-d(2024,10,5,14,0,0),
-d(2025,3,15,14,0,0),
-d(2025,10,4,14,0,0),
-d(2026,3,14,14,0,0),
-d(2026,10,3,14,0,0),
-d(2027,3,20,14,0,0),
-d(2027,10,2,14,0,0),
-d(2028,3,18,14,0,0),
-d(2028,9,30,14,0,0),
-d(2029,3,17,14,0,0),
-d(2029,10,6,14,0,0),
-d(2030,3,16,14,0,0),
-d(2030,10,5,14,0,0),
-d(2031,3,15,14,0,0),
-d(2031,10,4,14,0,0),
-d(2032,3,20,14,0,0),
-d(2032,10,2,14,0,0),
-d(2033,3,19,14,0,0),
-d(2033,10,1,14,0,0),
-d(2034,3,18,14,0,0),
-d(2034,9,30,14,0,0),
-d(2035,3,17,14,0,0),
-d(2035,10,6,14,0,0),
-d(2036,3,15,14,0,0),
-d(2036,10,4,14,0,0),
-d(2037,3,14,14,0,0),
-d(2037,10,3,14,0,0),
- ]
-
- _transition_info = [
-i(41400,0,'NZMT'),
-i(45000,3600,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(41400,0,'NZMT'),
-i(43200,1800,'NZST'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
-i(43200,0,'NZST'),
-i(46800,3600,'NZDT'),
- ]
-
-Auckland = Auckland()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Chatham.py b/modules/pytz/zoneinfo/Pacific/Chatham.py
deleted file mode 100644
index 8b78fdd1..00000000
--- a/modules/pytz/zoneinfo/Pacific/Chatham.py
+++ /dev/null
@@ -1,276 +0,0 @@
-'''tzinfo timezone information for Pacific/Chatham.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Chatham(DstTzInfo):
- '''Pacific/Chatham timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Chatham'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1956,12,31,11,46,12),
-d(1974,11,2,14,0,0),
-d(1975,2,22,14,0,0),
-d(1975,10,25,14,0,0),
-d(1976,3,6,14,0,0),
-d(1976,10,30,14,0,0),
-d(1977,3,5,14,0,0),
-d(1977,10,29,14,0,0),
-d(1978,3,4,14,0,0),
-d(1978,10,28,14,0,0),
-d(1979,3,3,14,0,0),
-d(1979,10,27,14,0,0),
-d(1980,3,1,14,0,0),
-d(1980,10,25,14,0,0),
-d(1981,2,28,14,0,0),
-d(1981,10,24,14,0,0),
-d(1982,3,6,14,0,0),
-d(1982,10,30,14,0,0),
-d(1983,3,5,14,0,0),
-d(1983,10,29,14,0,0),
-d(1984,3,3,14,0,0),
-d(1984,10,27,14,0,0),
-d(1985,3,2,14,0,0),
-d(1985,10,26,14,0,0),
-d(1986,3,1,14,0,0),
-d(1986,10,25,14,0,0),
-d(1987,2,28,14,0,0),
-d(1987,10,24,14,0,0),
-d(1988,3,5,14,0,0),
-d(1988,10,29,14,0,0),
-d(1989,3,4,14,0,0),
-d(1989,10,7,14,0,0),
-d(1990,3,17,14,0,0),
-d(1990,10,6,14,0,0),
-d(1991,3,16,14,0,0),
-d(1991,10,5,14,0,0),
-d(1992,3,14,14,0,0),
-d(1992,10,3,14,0,0),
-d(1993,3,20,14,0,0),
-d(1993,10,2,14,0,0),
-d(1994,3,19,14,0,0),
-d(1994,10,1,14,0,0),
-d(1995,3,18,14,0,0),
-d(1995,9,30,14,0,0),
-d(1996,3,16,14,0,0),
-d(1996,10,5,14,0,0),
-d(1997,3,15,14,0,0),
-d(1997,10,4,14,0,0),
-d(1998,3,14,14,0,0),
-d(1998,10,3,14,0,0),
-d(1999,3,20,14,0,0),
-d(1999,10,2,14,0,0),
-d(2000,3,18,14,0,0),
-d(2000,9,30,14,0,0),
-d(2001,3,17,14,0,0),
-d(2001,10,6,14,0,0),
-d(2002,3,16,14,0,0),
-d(2002,10,5,14,0,0),
-d(2003,3,15,14,0,0),
-d(2003,10,4,14,0,0),
-d(2004,3,20,14,0,0),
-d(2004,10,2,14,0,0),
-d(2005,3,19,14,0,0),
-d(2005,10,1,14,0,0),
-d(2006,3,18,14,0,0),
-d(2006,9,30,14,0,0),
-d(2007,3,17,14,0,0),
-d(2007,10,6,14,0,0),
-d(2008,3,15,14,0,0),
-d(2008,10,4,14,0,0),
-d(2009,3,14,14,0,0),
-d(2009,10,3,14,0,0),
-d(2010,3,20,14,0,0),
-d(2010,10,2,14,0,0),
-d(2011,3,19,14,0,0),
-d(2011,10,1,14,0,0),
-d(2012,3,17,14,0,0),
-d(2012,10,6,14,0,0),
-d(2013,3,16,14,0,0),
-d(2013,10,5,14,0,0),
-d(2014,3,15,14,0,0),
-d(2014,10,4,14,0,0),
-d(2015,3,14,14,0,0),
-d(2015,10,3,14,0,0),
-d(2016,3,19,14,0,0),
-d(2016,10,1,14,0,0),
-d(2017,3,18,14,0,0),
-d(2017,9,30,14,0,0),
-d(2018,3,17,14,0,0),
-d(2018,10,6,14,0,0),
-d(2019,3,16,14,0,0),
-d(2019,10,5,14,0,0),
-d(2020,3,14,14,0,0),
-d(2020,10,3,14,0,0),
-d(2021,3,20,14,0,0),
-d(2021,10,2,14,0,0),
-d(2022,3,19,14,0,0),
-d(2022,10,1,14,0,0),
-d(2023,3,18,14,0,0),
-d(2023,9,30,14,0,0),
-d(2024,3,16,14,0,0),
-d(2024,10,5,14,0,0),
-d(2025,3,15,14,0,0),
-d(2025,10,4,14,0,0),
-d(2026,3,14,14,0,0),
-d(2026,10,3,14,0,0),
-d(2027,3,20,14,0,0),
-d(2027,10,2,14,0,0),
-d(2028,3,18,14,0,0),
-d(2028,9,30,14,0,0),
-d(2029,3,17,14,0,0),
-d(2029,10,6,14,0,0),
-d(2030,3,16,14,0,0),
-d(2030,10,5,14,0,0),
-d(2031,3,15,14,0,0),
-d(2031,10,4,14,0,0),
-d(2032,3,20,14,0,0),
-d(2032,10,2,14,0,0),
-d(2033,3,19,14,0,0),
-d(2033,10,1,14,0,0),
-d(2034,3,18,14,0,0),
-d(2034,9,30,14,0,0),
-d(2035,3,17,14,0,0),
-d(2035,10,6,14,0,0),
-d(2036,3,15,14,0,0),
-d(2036,10,4,14,0,0),
-d(2037,3,14,14,0,0),
-d(2037,10,3,14,0,0),
- ]
-
- _transition_info = [
-i(44040,0,'LMT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
-i(45900,0,'CHAST'),
-i(49500,3600,'CHADT'),
- ]
-
-Chatham = Chatham()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Easter.py b/modules/pytz/zoneinfo/Pacific/Easter.py
deleted file mode 100644
index 5b725e6c..00000000
--- a/modules/pytz/zoneinfo/Pacific/Easter.py
+++ /dev/null
@@ -1,310 +0,0 @@
-'''tzinfo timezone information for Pacific/Easter.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Easter(DstTzInfo):
- '''Pacific/Easter timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Easter'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1932,9,1,7,17,28),
-d(1966,10,9,4,0,0),
-d(1967,3,12,3,0,0),
-d(1967,10,15,4,0,0),
-d(1968,3,10,3,0,0),
-d(1968,10,13,4,0,0),
-d(1969,3,9,3,0,0),
-d(1969,10,12,4,0,0),
-d(1970,3,15,3,0,0),
-d(1970,10,11,4,0,0),
-d(1971,3,14,3,0,0),
-d(1971,10,10,4,0,0),
-d(1972,3,12,3,0,0),
-d(1972,10,15,4,0,0),
-d(1973,3,11,3,0,0),
-d(1973,10,14,4,0,0),
-d(1974,3,10,3,0,0),
-d(1974,10,13,4,0,0),
-d(1975,3,9,3,0,0),
-d(1975,10,12,4,0,0),
-d(1976,3,14,3,0,0),
-d(1976,10,10,4,0,0),
-d(1977,3,13,3,0,0),
-d(1977,10,9,4,0,0),
-d(1978,3,12,3,0,0),
-d(1978,10,15,4,0,0),
-d(1979,3,11,3,0,0),
-d(1979,10,14,4,0,0),
-d(1980,3,9,3,0,0),
-d(1980,10,12,4,0,0),
-d(1981,3,15,3,0,0),
-d(1981,10,11,4,0,0),
-d(1982,3,14,3,0,0),
-d(1982,3,14,7,0,0),
-d(1982,10,10,4,0,0),
-d(1983,3,13,3,0,0),
-d(1983,10,9,4,0,0),
-d(1984,3,11,3,0,0),
-d(1984,10,14,4,0,0),
-d(1985,3,10,3,0,0),
-d(1985,10,13,4,0,0),
-d(1986,3,9,3,0,0),
-d(1986,10,12,4,0,0),
-d(1987,3,15,3,0,0),
-d(1987,10,11,4,0,0),
-d(1988,3,13,3,0,0),
-d(1988,10,9,4,0,0),
-d(1989,3,12,3,0,0),
-d(1989,10,15,4,0,0),
-d(1990,3,11,3,0,0),
-d(1990,10,14,4,0,0),
-d(1991,3,10,3,0,0),
-d(1991,10,13,4,0,0),
-d(1992,3,15,3,0,0),
-d(1992,10,11,4,0,0),
-d(1993,3,14,3,0,0),
-d(1993,10,10,4,0,0),
-d(1994,3,13,3,0,0),
-d(1994,10,9,4,0,0),
-d(1995,3,12,3,0,0),
-d(1995,10,15,4,0,0),
-d(1996,3,10,3,0,0),
-d(1996,10,13,4,0,0),
-d(1997,3,9,3,0,0),
-d(1997,10,12,4,0,0),
-d(1998,3,15,3,0,0),
-d(1998,9,27,4,0,0),
-d(1999,4,4,3,0,0),
-d(1999,10,10,4,0,0),
-d(2000,3,12,3,0,0),
-d(2000,10,15,4,0,0),
-d(2001,3,11,3,0,0),
-d(2001,10,14,4,0,0),
-d(2002,3,10,3,0,0),
-d(2002,10,13,4,0,0),
-d(2003,3,9,3,0,0),
-d(2003,10,12,4,0,0),
-d(2004,3,14,3,0,0),
-d(2004,10,10,4,0,0),
-d(2005,3,13,3,0,0),
-d(2005,10,9,4,0,0),
-d(2006,3,12,3,0,0),
-d(2006,10,15,4,0,0),
-d(2007,3,11,3,0,0),
-d(2007,10,14,4,0,0),
-d(2008,3,9,3,0,0),
-d(2008,10,12,4,0,0),
-d(2009,3,15,3,0,0),
-d(2009,10,11,4,0,0),
-d(2010,3,14,3,0,0),
-d(2010,10,10,4,0,0),
-d(2011,3,13,3,0,0),
-d(2011,10,9,4,0,0),
-d(2012,3,11,3,0,0),
-d(2012,10,14,4,0,0),
-d(2013,3,10,3,0,0),
-d(2013,10,13,4,0,0),
-d(2014,3,9,3,0,0),
-d(2014,10,12,4,0,0),
-d(2015,3,15,3,0,0),
-d(2015,10,11,4,0,0),
-d(2016,3,13,3,0,0),
-d(2016,10,9,4,0,0),
-d(2017,3,12,3,0,0),
-d(2017,10,15,4,0,0),
-d(2018,3,11,3,0,0),
-d(2018,10,14,4,0,0),
-d(2019,3,10,3,0,0),
-d(2019,10,13,4,0,0),
-d(2020,3,15,3,0,0),
-d(2020,10,11,4,0,0),
-d(2021,3,14,3,0,0),
-d(2021,10,10,4,0,0),
-d(2022,3,13,3,0,0),
-d(2022,10,9,4,0,0),
-d(2023,3,12,3,0,0),
-d(2023,10,15,4,0,0),
-d(2024,3,10,3,0,0),
-d(2024,10,13,4,0,0),
-d(2025,3,9,3,0,0),
-d(2025,10,12,4,0,0),
-d(2026,3,15,3,0,0),
-d(2026,10,11,4,0,0),
-d(2027,3,14,3,0,0),
-d(2027,10,10,4,0,0),
-d(2028,3,12,3,0,0),
-d(2028,10,15,4,0,0),
-d(2029,3,11,3,0,0),
-d(2029,10,14,4,0,0),
-d(2030,3,10,3,0,0),
-d(2030,10,13,4,0,0),
-d(2031,3,9,3,0,0),
-d(2031,10,12,4,0,0),
-d(2032,3,14,3,0,0),
-d(2032,10,10,4,0,0),
-d(2033,3,13,3,0,0),
-d(2033,10,9,4,0,0),
-d(2034,3,12,3,0,0),
-d(2034,10,15,4,0,0),
-d(2035,3,11,3,0,0),
-d(2035,10,14,4,0,0),
-d(2036,3,9,3,0,0),
-d(2036,10,12,4,0,0),
-d(2037,3,15,3,0,0),
-d(2037,10,11,4,0,0),
- ]
-
- _transition_info = [
-i(-26220,0,'MMT'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,3600,'EASST'),
-i(-25200,0,'EAST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
-i(-21600,0,'EAST'),
-i(-18000,3600,'EASST'),
- ]
-
-Easter = Easter()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Efate.py b/modules/pytz/zoneinfo/Pacific/Efate.py
deleted file mode 100644
index 51421914..00000000
--- a/modules/pytz/zoneinfo/Pacific/Efate.py
+++ /dev/null
@@ -1,62 +0,0 @@
-'''tzinfo timezone information for Pacific/Efate.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Efate(DstTzInfo):
- '''Pacific/Efate timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Efate'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,12,12,46,44),
-d(1983,9,24,13,0,0),
-d(1984,3,24,12,0,0),
-d(1984,10,22,13,0,0),
-d(1985,3,23,12,0,0),
-d(1985,9,28,13,0,0),
-d(1986,3,22,12,0,0),
-d(1986,9,27,13,0,0),
-d(1987,3,28,12,0,0),
-d(1987,9,26,13,0,0),
-d(1988,3,26,12,0,0),
-d(1988,9,24,13,0,0),
-d(1989,3,25,12,0,0),
-d(1989,9,23,13,0,0),
-d(1990,3,24,12,0,0),
-d(1990,9,22,13,0,0),
-d(1991,3,23,12,0,0),
-d(1991,9,28,13,0,0),
-d(1992,1,25,12,0,0),
-d(1992,10,24,13,0,0),
-d(1993,1,23,12,0,0),
- ]
-
- _transition_info = [
-i(40380,0,'LMT'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
-i(43200,3600,'VUST'),
-i(39600,0,'VUT'),
- ]
-
-Efate = Efate()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Enderbury.py b/modules/pytz/zoneinfo/Pacific/Enderbury.py
deleted file mode 100644
index 4c7d28f5..00000000
--- a/modules/pytz/zoneinfo/Pacific/Enderbury.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Enderbury.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Enderbury(DstTzInfo):
- '''Pacific/Enderbury timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Enderbury'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1979,10,1,12,0,0),
-d(1995,1,1,11,0,0),
- ]
-
- _transition_info = [
-i(-43200,0,'PHOT'),
-i(-39600,0,'PHOT'),
-i(46800,0,'PHOT'),
- ]
-
-Enderbury = Enderbury()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Fakaofo.py b/modules/pytz/zoneinfo/Pacific/Fakaofo.py
deleted file mode 100644
index 6d39db7f..00000000
--- a/modules/pytz/zoneinfo/Pacific/Fakaofo.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Fakaofo.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Fakaofo(StaticTzInfo):
- '''Pacific/Fakaofo timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Fakaofo'
- _utcoffset = timedelta(seconds=-36000)
- _tzname = 'TKT'
-
-Fakaofo = Fakaofo()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Fiji.py b/modules/pytz/zoneinfo/Pacific/Fiji.py
deleted file mode 100644
index 8f416d9e..00000000
--- a/modules/pytz/zoneinfo/Pacific/Fiji.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''tzinfo timezone information for Pacific/Fiji.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Fiji(DstTzInfo):
- '''Pacific/Fiji timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Fiji'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1915,10,25,12,6,20),
-d(1998,10,31,14,0,0),
-d(1999,2,27,14,0,0),
-d(1999,11,6,14,0,0),
-d(2000,2,26,14,0,0),
- ]
-
- _transition_info = [
-i(42840,0,'LMT'),
-i(43200,0,'FJT'),
-i(46800,3600,'FJST'),
-i(43200,0,'FJT'),
-i(46800,3600,'FJST'),
-i(43200,0,'FJT'),
- ]
-
-Fiji = Fiji()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Funafuti.py b/modules/pytz/zoneinfo/Pacific/Funafuti.py
deleted file mode 100644
index 9801538c..00000000
--- a/modules/pytz/zoneinfo/Pacific/Funafuti.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Funafuti.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Funafuti(StaticTzInfo):
- '''Pacific/Funafuti timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Funafuti'
- _utcoffset = timedelta(seconds=43200)
- _tzname = 'TVT'
-
-Funafuti = Funafuti()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Galapagos.py b/modules/pytz/zoneinfo/Pacific/Galapagos.py
deleted file mode 100644
index 9102a8e8..00000000
--- a/modules/pytz/zoneinfo/Pacific/Galapagos.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Galapagos.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Galapagos(DstTzInfo):
- '''Pacific/Galapagos timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Galapagos'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1931,1,1,5,58,24),
-d(1986,1,1,5,0,0),
- ]
-
- _transition_info = [
-i(-21480,0,'LMT'),
-i(-18000,0,'ECT'),
-i(-21600,0,'GALT'),
- ]
-
-Galapagos = Galapagos()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Gambier.py b/modules/pytz/zoneinfo/Pacific/Gambier.py
deleted file mode 100644
index fd04b894..00000000
--- a/modules/pytz/zoneinfo/Pacific/Gambier.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Gambier.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Gambier(DstTzInfo):
- '''Pacific/Gambier timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Gambier'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,10,1,8,59,48),
- ]
-
- _transition_info = [
-i(-32400,0,'LMT'),
-i(-32400,0,'GAMT'),
- ]
-
-Gambier = Gambier()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Guadalcanal.py b/modules/pytz/zoneinfo/Pacific/Guadalcanal.py
deleted file mode 100644
index e88689c7..00000000
--- a/modules/pytz/zoneinfo/Pacific/Guadalcanal.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Guadalcanal.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Guadalcanal(DstTzInfo):
- '''Pacific/Guadalcanal timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Guadalcanal'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,9,30,13,20,12),
- ]
-
- _transition_info = [
-i(38400,0,'LMT'),
-i(39600,0,'SBT'),
- ]
-
-Guadalcanal = Guadalcanal()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Guam.py b/modules/pytz/zoneinfo/Pacific/Guam.py
deleted file mode 100644
index 7ea7b706..00000000
--- a/modules/pytz/zoneinfo/Pacific/Guam.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Guam.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Guam(DstTzInfo):
- '''Pacific/Guam timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Guam'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(2000,12,22,14,0,0),
- ]
-
- _transition_info = [
-i(36000,0,'GST'),
-i(36000,0,'ChST'),
- ]
-
-Guam = Guam()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Honolulu.py b/modules/pytz/zoneinfo/Pacific/Honolulu.py
deleted file mode 100644
index e32cc01a..00000000
--- a/modules/pytz/zoneinfo/Pacific/Honolulu.py
+++ /dev/null
@@ -1,32 +0,0 @@
-'''tzinfo timezone information for Pacific/Honolulu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Honolulu(DstTzInfo):
- '''Pacific/Honolulu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Honolulu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1933,4,30,12,30,0),
-d(1933,5,21,11,30,0),
-d(1942,2,9,12,30,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,11,30,0),
-d(1947,6,8,12,30,0),
- ]
-
- _transition_info = [
-i(-37800,0,'HST'),
-i(-34200,3600,'HDT'),
-i(-37800,0,'HST'),
-i(-34200,3600,'HWT'),
-i(-34200,3600,'HPT'),
-i(-37800,0,'HST'),
-i(-36000,0,'HST'),
- ]
-
-Honolulu = Honolulu()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Johnston.py b/modules/pytz/zoneinfo/Pacific/Johnston.py
deleted file mode 100644
index a4a29579..00000000
--- a/modules/pytz/zoneinfo/Pacific/Johnston.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Johnston.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Johnston(StaticTzInfo):
- '''Pacific/Johnston timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Johnston'
- _utcoffset = timedelta(seconds=-36000)
- _tzname = 'HST'
-
-Johnston = Johnston()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Kiritimati.py b/modules/pytz/zoneinfo/Pacific/Kiritimati.py
deleted file mode 100644
index f1e45643..00000000
--- a/modules/pytz/zoneinfo/Pacific/Kiritimati.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Kiritimati.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kiritimati(DstTzInfo):
- '''Pacific/Kiritimati timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Kiritimati'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1979,10,1,10,40,0),
-d(1995,1,1,10,0,0),
- ]
-
- _transition_info = [
-i(-38400,0,'LINT'),
-i(-36000,0,'LINT'),
-i(50400,0,'LINT'),
- ]
-
-Kiritimati = Kiritimati()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Kosrae.py b/modules/pytz/zoneinfo/Pacific/Kosrae.py
deleted file mode 100644
index 76e694c9..00000000
--- a/modules/pytz/zoneinfo/Pacific/Kosrae.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Kosrae.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kosrae(DstTzInfo):
- '''Pacific/Kosrae timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Kosrae'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1969,9,30,13,0,0),
-d(1998,12,31,12,0,0),
- ]
-
- _transition_info = [
-i(39600,0,'KOST'),
-i(43200,0,'KOST'),
-i(39600,0,'KOST'),
- ]
-
-Kosrae = Kosrae()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Kwajalein.py b/modules/pytz/zoneinfo/Pacific/Kwajalein.py
deleted file mode 100644
index 65c4b031..00000000
--- a/modules/pytz/zoneinfo/Pacific/Kwajalein.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Kwajalein.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Kwajalein(DstTzInfo):
- '''Pacific/Kwajalein timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Kwajalein'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1969,9,30,13,0,0),
-d(1993,8,20,12,0,0),
- ]
-
- _transition_info = [
-i(39600,0,'MHT'),
-i(-43200,0,'KWAT'),
-i(43200,0,'MHT'),
- ]
-
-Kwajalein = Kwajalein()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Majuro.py b/modules/pytz/zoneinfo/Pacific/Majuro.py
deleted file mode 100644
index e2c09901..00000000
--- a/modules/pytz/zoneinfo/Pacific/Majuro.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Majuro.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Majuro(DstTzInfo):
- '''Pacific/Majuro timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Majuro'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1969,9,30,13,0,0),
- ]
-
- _transition_info = [
-i(39600,0,'MHT'),
-i(43200,0,'MHT'),
- ]
-
-Majuro = Majuro()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Marquesas.py b/modules/pytz/zoneinfo/Pacific/Marquesas.py
deleted file mode 100644
index 943211a7..00000000
--- a/modules/pytz/zoneinfo/Pacific/Marquesas.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Marquesas.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Marquesas(DstTzInfo):
- '''Pacific/Marquesas timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Marquesas'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,10,1,9,18,0),
- ]
-
- _transition_info = [
-i(-33480,0,'LMT'),
-i(-34200,0,'MART'),
- ]
-
-Marquesas = Marquesas()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Midway.py b/modules/pytz/zoneinfo/Pacific/Midway.py
deleted file mode 100644
index 04570f01..00000000
--- a/modules/pytz/zoneinfo/Pacific/Midway.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Pacific/Midway.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Midway(DstTzInfo):
- '''Pacific/Midway timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Midway'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1956,6,3,11,0,0),
-d(1956,9,2,10,0,0),
-d(1967,4,1,11,0,0),
-d(1983,11,30,11,0,0),
- ]
-
- _transition_info = [
-i(-39600,0,'NST'),
-i(-36000,3600,'NDT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-39600,0,'SST'),
- ]
-
-Midway = Midway()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Nauru.py b/modules/pytz/zoneinfo/Pacific/Nauru.py
deleted file mode 100644
index 97ddde30..00000000
--- a/modules/pytz/zoneinfo/Pacific/Nauru.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Pacific/Nauru.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Nauru(DstTzInfo):
- '''Pacific/Nauru timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Nauru'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1921,1,14,12,52,20),
-d(1942,3,14,12,30,0),
-d(1944,8,14,15,0,0),
-d(1979,4,30,12,30,0),
- ]
-
- _transition_info = [
-i(40080,0,'LMT'),
-i(41400,0,'NRT'),
-i(32400,0,'JST'),
-i(41400,0,'NRT'),
-i(43200,0,'NRT'),
- ]
-
-Nauru = Nauru()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Niue.py b/modules/pytz/zoneinfo/Pacific/Niue.py
deleted file mode 100644
index 6449e84f..00000000
--- a/modules/pytz/zoneinfo/Pacific/Niue.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Niue.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Niue(DstTzInfo):
- '''Pacific/Niue timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Niue'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1951,1,1,11,20,0),
-d(1978,10,1,11,30,0),
- ]
-
- _transition_info = [
-i(-40800,0,'NUT'),
-i(-41400,0,'NUT'),
-i(-39600,0,'NUT'),
- ]
-
-Niue = Niue()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Norfolk.py b/modules/pytz/zoneinfo/Pacific/Norfolk.py
deleted file mode 100644
index 8eda51a2..00000000
--- a/modules/pytz/zoneinfo/Pacific/Norfolk.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Norfolk.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Norfolk(DstTzInfo):
- '''Pacific/Norfolk timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Norfolk'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1950,12,31,12,48,0),
- ]
-
- _transition_info = [
-i(40320,0,'NMT'),
-i(41400,0,'NFT'),
- ]
-
-Norfolk = Norfolk()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Noumea.py b/modules/pytz/zoneinfo/Pacific/Noumea.py
deleted file mode 100644
index 32efeea0..00000000
--- a/modules/pytz/zoneinfo/Pacific/Noumea.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for Pacific/Noumea.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Noumea(DstTzInfo):
- '''Pacific/Noumea timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Noumea'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,12,12,54,12),
-d(1977,12,3,13,0,0),
-d(1978,2,26,12,0,0),
-d(1978,12,2,13,0,0),
-d(1979,2,26,12,0,0),
-d(1996,11,30,15,0,0),
-d(1997,3,1,15,0,0),
- ]
-
- _transition_info = [
-i(39960,0,'LMT'),
-i(39600,0,'NCT'),
-i(43200,3600,'NCST'),
-i(39600,0,'NCT'),
-i(43200,3600,'NCST'),
-i(39600,0,'NCT'),
-i(43200,3600,'NCST'),
-i(39600,0,'NCT'),
- ]
-
-Noumea = Noumea()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Pago_Pago.py b/modules/pytz/zoneinfo/Pacific/Pago_Pago.py
deleted file mode 100644
index d0fa9c02..00000000
--- a/modules/pytz/zoneinfo/Pacific/Pago_Pago.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Pacific/Pago_Pago.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pago_Pago(DstTzInfo):
- '''Pacific/Pago_Pago timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Pago_Pago'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,1,1,11,22,48),
-d(1950,1,1,11,30,0),
-d(1967,4,1,11,0,0),
-d(1983,11,30,11,0,0),
- ]
-
- _transition_info = [
-i(-40980,0,'LMT'),
-i(-41400,0,'SAMT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-39600,0,'SST'),
- ]
-
-Pago_Pago = Pago_Pago()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Palau.py b/modules/pytz/zoneinfo/Pacific/Palau.py
deleted file mode 100644
index b873d880..00000000
--- a/modules/pytz/zoneinfo/Pacific/Palau.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Palau.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Palau(StaticTzInfo):
- '''Pacific/Palau timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Palau'
- _utcoffset = timedelta(seconds=32400)
- _tzname = 'PWT'
-
-Palau = Palau()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Pitcairn.py b/modules/pytz/zoneinfo/Pacific/Pitcairn.py
deleted file mode 100644
index 125b8a8e..00000000
--- a/modules/pytz/zoneinfo/Pacific/Pitcairn.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Pitcairn.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pitcairn(DstTzInfo):
- '''Pacific/Pitcairn timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Pitcairn'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1998,4,27,8,30,0),
- ]
-
- _transition_info = [
-i(-30600,0,'PNT'),
-i(-28800,0,'PST'),
- ]
-
-Pitcairn = Pitcairn()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Ponape.py b/modules/pytz/zoneinfo/Pacific/Ponape.py
deleted file mode 100644
index 4cd6ad8e..00000000
--- a/modules/pytz/zoneinfo/Pacific/Ponape.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Ponape.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Ponape(StaticTzInfo):
- '''Pacific/Ponape timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Ponape'
- _utcoffset = timedelta(seconds=39600)
- _tzname = 'PONT'
-
-Ponape = Ponape()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Port_Moresby.py b/modules/pytz/zoneinfo/Pacific/Port_Moresby.py
deleted file mode 100644
index 8510d854..00000000
--- a/modules/pytz/zoneinfo/Pacific/Port_Moresby.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Port_Moresby.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Port_Moresby(StaticTzInfo):
- '''Pacific/Port_Moresby timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Port_Moresby'
- _utcoffset = timedelta(seconds=36000)
- _tzname = 'PGT'
-
-Port_Moresby = Port_Moresby()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Rarotonga.py b/modules/pytz/zoneinfo/Pacific/Rarotonga.py
deleted file mode 100644
index d6106e9c..00000000
--- a/modules/pytz/zoneinfo/Pacific/Rarotonga.py
+++ /dev/null
@@ -1,72 +0,0 @@
-'''tzinfo timezone information for Pacific/Rarotonga.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Rarotonga(DstTzInfo):
- '''Pacific/Rarotonga timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Rarotonga'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1978,11,12,10,30,0),
-d(1979,3,4,9,30,0),
-d(1979,10,28,10,0,0),
-d(1980,3,2,9,30,0),
-d(1980,10,26,10,0,0),
-d(1981,3,1,9,30,0),
-d(1981,10,25,10,0,0),
-d(1982,3,7,9,30,0),
-d(1982,10,31,10,0,0),
-d(1983,3,6,9,30,0),
-d(1983,10,30,10,0,0),
-d(1984,3,4,9,30,0),
-d(1984,10,28,10,0,0),
-d(1985,3,3,9,30,0),
-d(1985,10,27,10,0,0),
-d(1986,3,2,9,30,0),
-d(1986,10,26,10,0,0),
-d(1987,3,1,9,30,0),
-d(1987,10,25,10,0,0),
-d(1988,3,6,9,30,0),
-d(1988,10,30,10,0,0),
-d(1989,3,5,9,30,0),
-d(1989,10,29,10,0,0),
-d(1990,3,4,9,30,0),
-d(1990,10,28,10,0,0),
-d(1991,3,3,9,30,0),
- ]
-
- _transition_info = [
-i(-37800,0,'CKT'),
-i(-34200,3600,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
-i(-34200,1800,'CKHST'),
-i(-36000,0,'CKT'),
- ]
-
-Rarotonga = Rarotonga()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Saipan.py b/modules/pytz/zoneinfo/Pacific/Saipan.py
deleted file mode 100644
index 9c1e93ec..00000000
--- a/modules/pytz/zoneinfo/Pacific/Saipan.py
+++ /dev/null
@@ -1,24 +0,0 @@
-'''tzinfo timezone information for Pacific/Saipan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Saipan(DstTzInfo):
- '''Pacific/Saipan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Saipan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1969,9,30,15,0,0),
-d(2000,12,22,14,0,0),
- ]
-
- _transition_info = [
-i(32400,0,'MPT'),
-i(36000,0,'MPT'),
-i(36000,0,'ChST'),
- ]
-
-Saipan = Saipan()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Samoa.py b/modules/pytz/zoneinfo/Pacific/Samoa.py
deleted file mode 100644
index 91f1ab54..00000000
--- a/modules/pytz/zoneinfo/Pacific/Samoa.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for Pacific/Samoa.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Samoa(DstTzInfo):
- '''Pacific/Samoa timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Samoa'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,1,1,11,22,48),
-d(1950,1,1,11,30,0),
-d(1967,4,1,11,0,0),
-d(1983,11,30,11,0,0),
- ]
-
- _transition_info = [
-i(-40980,0,'LMT'),
-i(-41400,0,'SAMT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-39600,0,'SST'),
- ]
-
-Samoa = Samoa()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Tahiti.py b/modules/pytz/zoneinfo/Pacific/Tahiti.py
deleted file mode 100644
index e930a5bf..00000000
--- a/modules/pytz/zoneinfo/Pacific/Tahiti.py
+++ /dev/null
@@ -1,22 +0,0 @@
-'''tzinfo timezone information for Pacific/Tahiti.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tahiti(DstTzInfo):
- '''Pacific/Tahiti timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Tahiti'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,10,1,9,58,16),
- ]
-
- _transition_info = [
-i(-35880,0,'LMT'),
-i(-36000,0,'TAHT'),
- ]
-
-Tahiti = Tahiti()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Tarawa.py b/modules/pytz/zoneinfo/Pacific/Tarawa.py
deleted file mode 100644
index 70a1ea4c..00000000
--- a/modules/pytz/zoneinfo/Pacific/Tarawa.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Tarawa.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Tarawa(StaticTzInfo):
- '''Pacific/Tarawa timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Tarawa'
- _utcoffset = timedelta(seconds=43200)
- _tzname = 'GILT'
-
-Tarawa = Tarawa()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Tongatapu.py b/modules/pytz/zoneinfo/Pacific/Tongatapu.py
deleted file mode 100644
index 85e3d258..00000000
--- a/modules/pytz/zoneinfo/Pacific/Tongatapu.py
+++ /dev/null
@@ -1,34 +0,0 @@
-'''tzinfo timezone information for Pacific/Tongatapu.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Tongatapu(DstTzInfo):
- '''Pacific/Tongatapu timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Pacific/Tongatapu'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1940,12,31,11,40,0),
-d(1999,10,6,13,0,0),
-d(2000,3,18,13,0,0),
-d(2000,11,4,13,0,0),
-d(2001,1,27,12,0,0),
-d(2001,11,3,13,0,0),
-d(2002,1,26,12,0,0),
- ]
-
- _transition_info = [
-i(44400,0,'TOT'),
-i(46800,0,'TOT'),
-i(50400,3600,'TOST'),
-i(46800,0,'TOT'),
-i(50400,3600,'TOST'),
-i(46800,0,'TOT'),
-i(50400,3600,'TOST'),
-i(46800,0,'TOT'),
- ]
-
-Tongatapu = Tongatapu()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Truk.py b/modules/pytz/zoneinfo/Pacific/Truk.py
deleted file mode 100644
index e6631a2b..00000000
--- a/modules/pytz/zoneinfo/Pacific/Truk.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Truk.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Truk(StaticTzInfo):
- '''Pacific/Truk timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Truk'
- _utcoffset = timedelta(seconds=36000)
- _tzname = 'TRUT'
-
-Truk = Truk()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Wake.py b/modules/pytz/zoneinfo/Pacific/Wake.py
deleted file mode 100644
index a7e296c7..00000000
--- a/modules/pytz/zoneinfo/Pacific/Wake.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Wake.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Wake(StaticTzInfo):
- '''Pacific/Wake timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Wake'
- _utcoffset = timedelta(seconds=43200)
- _tzname = 'WAKT'
-
-Wake = Wake()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Wallis.py b/modules/pytz/zoneinfo/Pacific/Wallis.py
deleted file mode 100644
index 76f52519..00000000
--- a/modules/pytz/zoneinfo/Pacific/Wallis.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Wallis.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Wallis(StaticTzInfo):
- '''Pacific/Wallis timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Wallis'
- _utcoffset = timedelta(seconds=43200)
- _tzname = 'WFT'
-
-Wallis = Wallis()
-
diff --git a/modules/pytz/zoneinfo/Pacific/Yap.py b/modules/pytz/zoneinfo/Pacific/Yap.py
deleted file mode 100644
index 98152b50..00000000
--- a/modules/pytz/zoneinfo/Pacific/Yap.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Pacific/Yap.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Yap(StaticTzInfo):
- '''Pacific/Yap timezone definition. See datetime.tzinfo for details'''
- zone = 'Pacific/Yap'
- _utcoffset = timedelta(seconds=36000)
- _tzname = 'TRUT'
-
-Yap = Yap()
-
diff --git a/modules/pytz/zoneinfo/Pacific/__init__.py b/modules/pytz/zoneinfo/Pacific/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Poland.py b/modules/pytz/zoneinfo/Poland.py
deleted file mode 100644
index 3ea36299..00000000
--- a/modules/pytz/zoneinfo/Poland.py
+++ /dev/null
@@ -1,352 +0,0 @@
-'''tzinfo timezone information for Poland.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Poland(DstTzInfo):
- '''Poland timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Poland'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1915,8,4,22,36,0),
-d(1916,4,30,22,0,0),
-d(1916,9,30,23,0,0),
-d(1917,4,16,1,0,0),
-d(1917,9,17,1,0,0),
-d(1918,4,15,1,0,0),
-d(1918,9,16,1,0,0),
-d(1919,4,15,0,0,0),
-d(1919,9,16,0,0,0),
-d(1922,5,31,22,0,0),
-d(1940,6,23,1,0,0),
-d(1942,11,2,1,0,0),
-d(1943,3,29,1,0,0),
-d(1943,10,4,1,0,0),
-d(1944,4,3,1,0,0),
-d(1944,9,30,22,0,0),
-d(1945,4,28,23,0,0),
-d(1945,10,31,22,0,0),
-d(1946,4,13,23,0,0),
-d(1946,10,7,1,0,0),
-d(1947,5,4,1,0,0),
-d(1947,10,5,1,0,0),
-d(1948,4,18,1,0,0),
-d(1948,10,3,1,0,0),
-d(1949,4,10,1,0,0),
-d(1949,10,2,1,0,0),
-d(1957,6,2,0,0,0),
-d(1957,9,29,0,0,0),
-d(1958,3,30,0,0,0),
-d(1958,9,28,0,0,0),
-d(1959,5,31,0,0,0),
-d(1959,10,4,0,0,0),
-d(1960,4,3,0,0,0),
-d(1960,10,2,0,0,0),
-d(1961,5,28,0,0,0),
-d(1961,10,1,0,0,0),
-d(1962,5,27,0,0,0),
-d(1962,9,30,0,0,0),
-d(1963,5,26,0,0,0),
-d(1963,9,29,0,0,0),
-d(1964,5,31,0,0,0),
-d(1964,9,27,0,0,0),
-d(1976,12,31,23,0,0),
-d(1977,4,3,0,0,0),
-d(1977,9,25,0,0,0),
-d(1978,4,2,0,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,1,0,0,0),
-d(1979,9,30,0,0,0),
-d(1980,4,6,0,0,0),
-d(1980,9,28,0,0,0),
-d(1981,3,29,0,0,0),
-d(1981,9,27,0,0,0),
-d(1982,3,28,0,0,0),
-d(1982,9,26,0,0,0),
-d(1983,3,27,0,0,0),
-d(1983,9,25,0,0,0),
-d(1984,3,25,0,0,0),
-d(1984,9,30,0,0,0),
-d(1985,3,31,0,0,0),
-d(1985,9,29,0,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1987,12,31,23,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(5040,0,'WMT'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
- ]
-
-Poland = Poland()
-
diff --git a/modules/pytz/zoneinfo/Portugal.py b/modules/pytz/zoneinfo/Portugal.py
deleted file mode 100644
index 24cb4801..00000000
--- a/modules/pytz/zoneinfo/Portugal.py
+++ /dev/null
@@ -1,462 +0,0 @@
-'''tzinfo timezone information for Portugal.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Portugal(DstTzInfo):
- '''Portugal timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Portugal'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1912,1,1,0,36,32),
-d(1916,6,17,23,0,0),
-d(1916,11,1,0,0,0),
-d(1917,2,28,23,0,0),
-d(1917,10,14,23,0,0),
-d(1918,3,1,23,0,0),
-d(1918,10,14,23,0,0),
-d(1919,2,28,23,0,0),
-d(1919,10,14,23,0,0),
-d(1920,2,29,23,0,0),
-d(1920,10,14,23,0,0),
-d(1921,2,28,23,0,0),
-d(1921,10,14,23,0,0),
-d(1924,4,16,23,0,0),
-d(1924,10,14,23,0,0),
-d(1926,4,17,23,0,0),
-d(1926,10,2,23,0,0),
-d(1927,4,9,23,0,0),
-d(1927,10,1,23,0,0),
-d(1928,4,14,23,0,0),
-d(1928,10,6,23,0,0),
-d(1929,4,20,23,0,0),
-d(1929,10,5,23,0,0),
-d(1931,4,18,23,0,0),
-d(1931,10,3,23,0,0),
-d(1932,4,2,23,0,0),
-d(1932,10,1,23,0,0),
-d(1934,4,7,23,0,0),
-d(1934,10,6,23,0,0),
-d(1935,3,30,23,0,0),
-d(1935,10,5,23,0,0),
-d(1936,4,18,23,0,0),
-d(1936,10,3,23,0,0),
-d(1937,4,3,23,0,0),
-d(1937,10,2,23,0,0),
-d(1938,3,26,23,0,0),
-d(1938,10,1,23,0,0),
-d(1939,4,15,23,0,0),
-d(1939,11,18,23,0,0),
-d(1940,2,24,23,0,0),
-d(1940,10,5,23,0,0),
-d(1941,4,5,23,0,0),
-d(1941,10,5,23,0,0),
-d(1942,3,14,23,0,0),
-d(1942,4,25,22,0,0),
-d(1942,8,15,22,0,0),
-d(1942,10,24,23,0,0),
-d(1943,3,13,23,0,0),
-d(1943,4,17,22,0,0),
-d(1943,8,28,22,0,0),
-d(1943,10,30,23,0,0),
-d(1944,3,11,23,0,0),
-d(1944,4,22,22,0,0),
-d(1944,8,26,22,0,0),
-d(1944,10,28,23,0,0),
-d(1945,3,10,23,0,0),
-d(1945,4,21,22,0,0),
-d(1945,8,25,22,0,0),
-d(1945,10,27,23,0,0),
-d(1946,4,6,23,0,0),
-d(1946,10,5,23,0,0),
-d(1947,4,6,2,0,0),
-d(1947,10,5,2,0,0),
-d(1948,4,4,2,0,0),
-d(1948,10,3,2,0,0),
-d(1949,4,3,2,0,0),
-d(1949,10,2,2,0,0),
-d(1951,4,1,2,0,0),
-d(1951,10,7,2,0,0),
-d(1952,4,6,2,0,0),
-d(1952,10,5,2,0,0),
-d(1953,4,5,2,0,0),
-d(1953,10,4,2,0,0),
-d(1954,4,4,2,0,0),
-d(1954,10,3,2,0,0),
-d(1955,4,3,2,0,0),
-d(1955,10,2,2,0,0),
-d(1956,4,1,2,0,0),
-d(1956,10,7,2,0,0),
-d(1957,4,7,2,0,0),
-d(1957,10,6,2,0,0),
-d(1958,4,6,2,0,0),
-d(1958,10,5,2,0,0),
-d(1959,4,5,2,0,0),
-d(1959,10,4,2,0,0),
-d(1960,4,3,2,0,0),
-d(1960,10,2,2,0,0),
-d(1961,4,2,2,0,0),
-d(1961,10,1,2,0,0),
-d(1962,4,1,2,0,0),
-d(1962,10,7,2,0,0),
-d(1963,4,7,2,0,0),
-d(1963,10,6,2,0,0),
-d(1964,4,5,2,0,0),
-d(1964,10,4,2,0,0),
-d(1965,4,4,2,0,0),
-d(1965,10,3,2,0,0),
-d(1966,4,3,2,0,0),
-d(1976,9,26,0,0,0),
-d(1977,3,27,0,0,0),
-d(1977,9,25,0,0,0),
-d(1978,4,2,0,0,0),
-d(1978,10,1,0,0,0),
-d(1979,4,1,0,0,0),
-d(1979,9,30,1,0,0),
-d(1980,3,30,0,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,2,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(-2220,0,'LMT'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(7200,7200,'WEMT'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,0,'CET'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(7200,3600,'CEST'),
-i(3600,0,'CET'),
-i(3600,0,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
- ]
-
-Portugal = Portugal()
-
diff --git a/modules/pytz/zoneinfo/ROC.py b/modules/pytz/zoneinfo/ROC.py
deleted file mode 100644
index 6aad5b5d..00000000
--- a/modules/pytz/zoneinfo/ROC.py
+++ /dev/null
@@ -1,100 +0,0 @@
-'''tzinfo timezone information for ROC.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class ROC(DstTzInfo):
- '''ROC timezone definition. See datetime.tzinfo for details'''
-
- zone = 'ROC'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1945,4,30,16,0,0),
-d(1945,9,30,15,0,0),
-d(1946,4,30,16,0,0),
-d(1946,9,30,15,0,0),
-d(1947,4,30,16,0,0),
-d(1947,9,30,15,0,0),
-d(1948,4,30,16,0,0),
-d(1948,9,30,15,0,0),
-d(1949,4,30,16,0,0),
-d(1949,9,30,15,0,0),
-d(1950,4,30,16,0,0),
-d(1950,9,30,15,0,0),
-d(1951,4,30,16,0,0),
-d(1951,9,30,15,0,0),
-d(1952,2,29,16,0,0),
-d(1952,10,31,15,0,0),
-d(1953,3,31,16,0,0),
-d(1953,10,31,15,0,0),
-d(1954,3,31,16,0,0),
-d(1954,10,31,15,0,0),
-d(1955,3,31,16,0,0),
-d(1955,9,30,15,0,0),
-d(1956,3,31,16,0,0),
-d(1956,9,30,15,0,0),
-d(1957,3,31,16,0,0),
-d(1957,9,30,15,0,0),
-d(1958,3,31,16,0,0),
-d(1958,9,30,15,0,0),
-d(1959,3,31,16,0,0),
-d(1959,9,30,15,0,0),
-d(1960,5,31,16,0,0),
-d(1960,9,30,15,0,0),
-d(1961,5,31,16,0,0),
-d(1961,9,30,15,0,0),
-d(1974,3,31,16,0,0),
-d(1974,9,30,15,0,0),
-d(1975,3,31,16,0,0),
-d(1975,9,30,15,0,0),
-d(1980,6,29,16,0,0),
-d(1980,9,29,15,0,0),
- ]
-
- _transition_info = [
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
-i(32400,3600,'CDT'),
-i(28800,0,'CST'),
- ]
-
-ROC = ROC()
-
diff --git a/modules/pytz/zoneinfo/ROK.py b/modules/pytz/zoneinfo/ROK.py
deleted file mode 100644
index 6c867718..00000000
--- a/modules/pytz/zoneinfo/ROK.py
+++ /dev/null
@@ -1,44 +0,0 @@
-'''tzinfo timezone information for ROK.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class ROK(DstTzInfo):
- '''ROK timezone definition. See datetime.tzinfo for details'''
-
- zone = 'ROK'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1904,11,30,15,30,0),
-d(1927,12,31,15,0,0),
-d(1931,12,31,15,30,0),
-d(1954,3,20,15,0,0),
-d(1960,5,14,16,0,0),
-d(1960,9,12,15,0,0),
-d(1961,8,9,16,0,0),
-d(1968,9,30,15,30,0),
-d(1987,5,9,15,0,0),
-d(1987,10,10,14,0,0),
-d(1988,5,7,15,0,0),
-d(1988,10,8,14,0,0),
- ]
-
- _transition_info = [
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(28800,0,'KST'),
-i(32400,3600,'KDT'),
-i(28800,0,'KST'),
-i(30600,0,'KST'),
-i(32400,0,'KST'),
-i(36000,3600,'KDT'),
-i(32400,0,'KST'),
-i(36000,3600,'KDT'),
-i(32400,0,'KST'),
- ]
-
-ROK = ROK()
-
diff --git a/modules/pytz/zoneinfo/Singapore.py b/modules/pytz/zoneinfo/Singapore.py
deleted file mode 100644
index a5780315..00000000
--- a/modules/pytz/zoneinfo/Singapore.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''tzinfo timezone information for Singapore.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Singapore(DstTzInfo):
- '''Singapore timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Singapore'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,5,31,17,4,35),
-d(1932,12,31,17,0,0),
-d(1935,12,31,16,40,0),
-d(1941,8,31,16,40,0),
-d(1942,2,15,16,30,0),
-d(1945,9,11,15,0,0),
-d(1965,8,8,16,30,0),
-d(1981,12,31,16,30,0),
- ]
-
- _transition_info = [
-i(24900,0,'SMT'),
-i(25200,0,'MALT'),
-i(26400,1200,'MALST'),
-i(26400,0,'MALT'),
-i(27000,0,'MALT'),
-i(32400,0,'JST'),
-i(27000,0,'MALT'),
-i(27000,0,'SGT'),
-i(28800,0,'SGT'),
- ]
-
-Singapore = Singapore()
-
diff --git a/modules/pytz/zoneinfo/SystemV/__init__.py b/modules/pytz/zoneinfo/SystemV/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/Turkey.py b/modules/pytz/zoneinfo/Turkey.py
deleted file mode 100644
index 70303e34..00000000
--- a/modules/pytz/zoneinfo/Turkey.py
+++ /dev/null
@@ -1,362 +0,0 @@
-'''tzinfo timezone information for Turkey.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Turkey(DstTzInfo):
- '''Turkey timezone definition. See datetime.tzinfo for details'''
-
- zone = 'Turkey'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1910,9,30,22,3,4),
-d(1916,4,30,22,0,0),
-d(1916,9,30,21,0,0),
-d(1920,3,27,22,0,0),
-d(1920,10,24,21,0,0),
-d(1921,4,2,22,0,0),
-d(1921,10,2,21,0,0),
-d(1922,3,25,22,0,0),
-d(1922,10,7,21,0,0),
-d(1924,5,12,22,0,0),
-d(1924,9,30,21,0,0),
-d(1925,4,30,22,0,0),
-d(1925,9,30,21,0,0),
-d(1940,6,29,22,0,0),
-d(1940,10,4,21,0,0),
-d(1940,11,30,22,0,0),
-d(1941,9,20,21,0,0),
-d(1942,3,31,22,0,0),
-d(1942,10,31,21,0,0),
-d(1945,4,1,22,0,0),
-d(1945,10,7,21,0,0),
-d(1946,5,31,22,0,0),
-d(1946,9,30,21,0,0),
-d(1947,4,19,22,0,0),
-d(1947,10,4,21,0,0),
-d(1948,4,17,22,0,0),
-d(1948,10,2,21,0,0),
-d(1949,4,9,22,0,0),
-d(1949,10,1,21,0,0),
-d(1950,4,18,22,0,0),
-d(1950,10,7,21,0,0),
-d(1951,4,21,22,0,0),
-d(1951,10,7,21,0,0),
-d(1962,7,14,22,0,0),
-d(1962,10,7,21,0,0),
-d(1964,5,14,22,0,0),
-d(1964,9,30,21,0,0),
-d(1970,5,2,22,0,0),
-d(1970,10,3,21,0,0),
-d(1971,5,1,22,0,0),
-d(1971,10,2,21,0,0),
-d(1972,5,6,22,0,0),
-d(1972,10,7,21,0,0),
-d(1973,6,2,23,0,0),
-d(1973,11,4,0,0,0),
-d(1974,3,31,0,0,0),
-d(1974,11,3,2,0,0),
-d(1975,3,29,22,0,0),
-d(1975,10,25,21,0,0),
-d(1976,5,31,22,0,0),
-d(1976,10,30,21,0,0),
-d(1977,4,2,22,0,0),
-d(1977,10,15,21,0,0),
-d(1978,4,1,22,0,0),
-d(1978,10,14,21,0,0),
-d(1979,10,14,20,0,0),
-d(1980,4,6,0,0,0),
-d(1980,10,12,20,0,0),
-d(1981,3,29,0,0,0),
-d(1981,10,11,20,0,0),
-d(1982,3,28,0,0,0),
-d(1982,10,10,20,0,0),
-d(1983,7,30,21,0,0),
-d(1983,10,1,20,0,0),
-d(1985,4,19,21,0,0),
-d(1985,9,27,21,0,0),
-d(1986,3,30,0,0,0),
-d(1986,9,28,0,0,0),
-d(1987,3,29,0,0,0),
-d(1987,9,27,0,0,0),
-d(1988,3,27,0,0,0),
-d(1988,9,25,0,0,0),
-d(1989,3,26,0,0,0),
-d(1989,9,24,0,0,0),
-d(1990,3,25,0,0,0),
-d(1990,9,30,0,0,0),
-d(1990,12,31,22,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(7020,0,'IMT'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(14400,7200,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(14400,3600,'TRST'),
-i(10800,0,'TRT'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
-i(10800,3600,'EEST'),
-i(7200,0,'EET'),
- ]
-
-Turkey = Turkey()
-
diff --git a/modules/pytz/zoneinfo/UCT.py b/modules/pytz/zoneinfo/UCT.py
deleted file mode 100644
index 1d62aff0..00000000
--- a/modules/pytz/zoneinfo/UCT.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for UCT.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class UCT(StaticTzInfo):
- '''UCT timezone definition. See datetime.tzinfo for details'''
- zone = 'UCT'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UCT'
-
-UCT = UCT()
-
diff --git a/modules/pytz/zoneinfo/US/Alaska.py b/modules/pytz/zoneinfo/US/Alaska.py
deleted file mode 100644
index be9f68b8..00000000
--- a/modules/pytz/zoneinfo/US/Alaska.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for US/Alaska.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Alaska(DstTzInfo):
- '''US/Alaska timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Alaska'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,12,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,11,0,0),
-d(1967,4,1,10,0,0),
-d(1969,4,27,12,0,0),
-d(1969,10,26,11,0,0),
-d(1970,4,26,12,0,0),
-d(1970,10,25,11,0,0),
-d(1971,4,25,12,0,0),
-d(1971,10,31,11,0,0),
-d(1972,4,30,12,0,0),
-d(1972,10,29,11,0,0),
-d(1973,4,29,12,0,0),
-d(1973,10,28,11,0,0),
-d(1974,1,6,12,0,0),
-d(1974,10,27,11,0,0),
-d(1975,2,23,12,0,0),
-d(1975,10,26,11,0,0),
-d(1976,4,25,12,0,0),
-d(1976,10,31,11,0,0),
-d(1977,4,24,12,0,0),
-d(1977,10,30,11,0,0),
-d(1978,4,30,12,0,0),
-d(1978,10,29,11,0,0),
-d(1979,4,29,12,0,0),
-d(1979,10,28,11,0,0),
-d(1980,4,27,12,0,0),
-d(1980,10,26,11,0,0),
-d(1981,4,26,12,0,0),
-d(1981,10,25,11,0,0),
-d(1982,4,25,12,0,0),
-d(1982,10,31,11,0,0),
-d(1983,4,24,12,0,0),
-d(1983,10,30,11,0,0),
-d(1983,11,30,9,0,0),
-d(1984,4,29,11,0,0),
-d(1984,10,28,10,0,0),
-d(1985,4,28,11,0,0),
-d(1985,10,27,10,0,0),
-d(1986,4,27,11,0,0),
-d(1986,10,26,10,0,0),
-d(1987,4,5,11,0,0),
-d(1987,10,25,10,0,0),
-d(1988,4,3,11,0,0),
-d(1988,10,30,10,0,0),
-d(1989,4,2,11,0,0),
-d(1989,10,29,10,0,0),
-d(1990,4,1,11,0,0),
-d(1990,10,28,10,0,0),
-d(1991,4,7,11,0,0),
-d(1991,10,27,10,0,0),
-d(1992,4,5,11,0,0),
-d(1992,10,25,10,0,0),
-d(1993,4,4,11,0,0),
-d(1993,10,31,10,0,0),
-d(1994,4,3,11,0,0),
-d(1994,10,30,10,0,0),
-d(1995,4,2,11,0,0),
-d(1995,10,29,10,0,0),
-d(1996,4,7,11,0,0),
-d(1996,10,27,10,0,0),
-d(1997,4,6,11,0,0),
-d(1997,10,26,10,0,0),
-d(1998,4,5,11,0,0),
-d(1998,10,25,10,0,0),
-d(1999,4,4,11,0,0),
-d(1999,10,31,10,0,0),
-d(2000,4,2,11,0,0),
-d(2000,10,29,10,0,0),
-d(2001,4,1,11,0,0),
-d(2001,10,28,10,0,0),
-d(2002,4,7,11,0,0),
-d(2002,10,27,10,0,0),
-d(2003,4,6,11,0,0),
-d(2003,10,26,10,0,0),
-d(2004,4,4,11,0,0),
-d(2004,10,31,10,0,0),
-d(2005,4,3,11,0,0),
-d(2005,10,30,10,0,0),
-d(2006,4,2,11,0,0),
-d(2006,10,29,10,0,0),
-d(2007,3,11,11,0,0),
-d(2007,11,4,10,0,0),
-d(2008,3,9,11,0,0),
-d(2008,11,2,10,0,0),
-d(2009,3,8,11,0,0),
-d(2009,11,1,10,0,0),
-d(2010,3,14,11,0,0),
-d(2010,11,7,10,0,0),
-d(2011,3,13,11,0,0),
-d(2011,11,6,10,0,0),
-d(2012,3,11,11,0,0),
-d(2012,11,4,10,0,0),
-d(2013,3,10,11,0,0),
-d(2013,11,3,10,0,0),
-d(2014,3,9,11,0,0),
-d(2014,11,2,10,0,0),
-d(2015,3,8,11,0,0),
-d(2015,11,1,10,0,0),
-d(2016,3,13,11,0,0),
-d(2016,11,6,10,0,0),
-d(2017,3,12,11,0,0),
-d(2017,11,5,10,0,0),
-d(2018,3,11,11,0,0),
-d(2018,11,4,10,0,0),
-d(2019,3,10,11,0,0),
-d(2019,11,3,10,0,0),
-d(2020,3,8,11,0,0),
-d(2020,11,1,10,0,0),
-d(2021,3,14,11,0,0),
-d(2021,11,7,10,0,0),
-d(2022,3,13,11,0,0),
-d(2022,11,6,10,0,0),
-d(2023,3,12,11,0,0),
-d(2023,11,5,10,0,0),
-d(2024,3,10,11,0,0),
-d(2024,11,3,10,0,0),
-d(2025,3,9,11,0,0),
-d(2025,11,2,10,0,0),
-d(2026,3,8,11,0,0),
-d(2026,11,1,10,0,0),
-d(2027,3,14,11,0,0),
-d(2027,11,7,10,0,0),
-d(2028,3,12,11,0,0),
-d(2028,11,5,10,0,0),
-d(2029,3,11,11,0,0),
-d(2029,11,4,10,0,0),
-d(2030,3,10,11,0,0),
-d(2030,11,3,10,0,0),
-d(2031,3,9,11,0,0),
-d(2031,11,2,10,0,0),
-d(2032,3,14,11,0,0),
-d(2032,11,7,10,0,0),
-d(2033,3,13,11,0,0),
-d(2033,11,6,10,0,0),
-d(2034,3,12,11,0,0),
-d(2034,11,5,10,0,0),
-d(2035,3,11,11,0,0),
-d(2035,11,4,10,0,0),
-d(2036,3,9,11,0,0),
-d(2036,11,2,10,0,0),
-d(2037,3,8,11,0,0),
-d(2037,11,1,10,0,0),
- ]
-
- _transition_info = [
-i(-36000,0,'CAT'),
-i(-32400,3600,'CAWT'),
-i(-32400,3600,'CAWT'),
-i(-36000,0,'CAT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-36000,0,'AHST'),
-i(-32400,3600,'AHDT'),
-i(-32400,0,'YST'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
-i(-28800,3600,'AKDT'),
-i(-32400,0,'AKST'),
- ]
-
-Alaska = Alaska()
-
diff --git a/modules/pytz/zoneinfo/US/Aleutian.py b/modules/pytz/zoneinfo/US/Aleutian.py
deleted file mode 100644
index 64f7fdc0..00000000
--- a/modules/pytz/zoneinfo/US/Aleutian.py
+++ /dev/null
@@ -1,306 +0,0 @@
-'''tzinfo timezone information for US/Aleutian.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Aleutian(DstTzInfo):
- '''US/Aleutian timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Aleutian'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1942,2,9,13,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,12,0,0),
-d(1967,4,1,11,0,0),
-d(1969,4,27,13,0,0),
-d(1969,10,26,12,0,0),
-d(1970,4,26,13,0,0),
-d(1970,10,25,12,0,0),
-d(1971,4,25,13,0,0),
-d(1971,10,31,12,0,0),
-d(1972,4,30,13,0,0),
-d(1972,10,29,12,0,0),
-d(1973,4,29,13,0,0),
-d(1973,10,28,12,0,0),
-d(1974,1,6,13,0,0),
-d(1974,10,27,12,0,0),
-d(1975,2,23,13,0,0),
-d(1975,10,26,12,0,0),
-d(1976,4,25,13,0,0),
-d(1976,10,31,12,0,0),
-d(1977,4,24,13,0,0),
-d(1977,10,30,12,0,0),
-d(1978,4,30,13,0,0),
-d(1978,10,29,12,0,0),
-d(1979,4,29,13,0,0),
-d(1979,10,28,12,0,0),
-d(1980,4,27,13,0,0),
-d(1980,10,26,12,0,0),
-d(1981,4,26,13,0,0),
-d(1981,10,25,12,0,0),
-d(1982,4,25,13,0,0),
-d(1982,10,31,12,0,0),
-d(1983,4,24,13,0,0),
-d(1983,10,30,12,0,0),
-d(1983,11,30,10,0,0),
-d(1984,4,29,12,0,0),
-d(1984,10,28,11,0,0),
-d(1985,4,28,12,0,0),
-d(1985,10,27,11,0,0),
-d(1986,4,27,12,0,0),
-d(1986,10,26,11,0,0),
-d(1987,4,5,12,0,0),
-d(1987,10,25,11,0,0),
-d(1988,4,3,12,0,0),
-d(1988,10,30,11,0,0),
-d(1989,4,2,12,0,0),
-d(1989,10,29,11,0,0),
-d(1990,4,1,12,0,0),
-d(1990,10,28,11,0,0),
-d(1991,4,7,12,0,0),
-d(1991,10,27,11,0,0),
-d(1992,4,5,12,0,0),
-d(1992,10,25,11,0,0),
-d(1993,4,4,12,0,0),
-d(1993,10,31,11,0,0),
-d(1994,4,3,12,0,0),
-d(1994,10,30,11,0,0),
-d(1995,4,2,12,0,0),
-d(1995,10,29,11,0,0),
-d(1996,4,7,12,0,0),
-d(1996,10,27,11,0,0),
-d(1997,4,6,12,0,0),
-d(1997,10,26,11,0,0),
-d(1998,4,5,12,0,0),
-d(1998,10,25,11,0,0),
-d(1999,4,4,12,0,0),
-d(1999,10,31,11,0,0),
-d(2000,4,2,12,0,0),
-d(2000,10,29,11,0,0),
-d(2001,4,1,12,0,0),
-d(2001,10,28,11,0,0),
-d(2002,4,7,12,0,0),
-d(2002,10,27,11,0,0),
-d(2003,4,6,12,0,0),
-d(2003,10,26,11,0,0),
-d(2004,4,4,12,0,0),
-d(2004,10,31,11,0,0),
-d(2005,4,3,12,0,0),
-d(2005,10,30,11,0,0),
-d(2006,4,2,12,0,0),
-d(2006,10,29,11,0,0),
-d(2007,3,11,12,0,0),
-d(2007,11,4,11,0,0),
-d(2008,3,9,12,0,0),
-d(2008,11,2,11,0,0),
-d(2009,3,8,12,0,0),
-d(2009,11,1,11,0,0),
-d(2010,3,14,12,0,0),
-d(2010,11,7,11,0,0),
-d(2011,3,13,12,0,0),
-d(2011,11,6,11,0,0),
-d(2012,3,11,12,0,0),
-d(2012,11,4,11,0,0),
-d(2013,3,10,12,0,0),
-d(2013,11,3,11,0,0),
-d(2014,3,9,12,0,0),
-d(2014,11,2,11,0,0),
-d(2015,3,8,12,0,0),
-d(2015,11,1,11,0,0),
-d(2016,3,13,12,0,0),
-d(2016,11,6,11,0,0),
-d(2017,3,12,12,0,0),
-d(2017,11,5,11,0,0),
-d(2018,3,11,12,0,0),
-d(2018,11,4,11,0,0),
-d(2019,3,10,12,0,0),
-d(2019,11,3,11,0,0),
-d(2020,3,8,12,0,0),
-d(2020,11,1,11,0,0),
-d(2021,3,14,12,0,0),
-d(2021,11,7,11,0,0),
-d(2022,3,13,12,0,0),
-d(2022,11,6,11,0,0),
-d(2023,3,12,12,0,0),
-d(2023,11,5,11,0,0),
-d(2024,3,10,12,0,0),
-d(2024,11,3,11,0,0),
-d(2025,3,9,12,0,0),
-d(2025,11,2,11,0,0),
-d(2026,3,8,12,0,0),
-d(2026,11,1,11,0,0),
-d(2027,3,14,12,0,0),
-d(2027,11,7,11,0,0),
-d(2028,3,12,12,0,0),
-d(2028,11,5,11,0,0),
-d(2029,3,11,12,0,0),
-d(2029,11,4,11,0,0),
-d(2030,3,10,12,0,0),
-d(2030,11,3,11,0,0),
-d(2031,3,9,12,0,0),
-d(2031,11,2,11,0,0),
-d(2032,3,14,12,0,0),
-d(2032,11,7,11,0,0),
-d(2033,3,13,12,0,0),
-d(2033,11,6,11,0,0),
-d(2034,3,12,12,0,0),
-d(2034,11,5,11,0,0),
-d(2035,3,11,12,0,0),
-d(2035,11,4,11,0,0),
-d(2036,3,9,12,0,0),
-d(2036,11,2,11,0,0),
-d(2037,3,8,12,0,0),
-d(2037,11,1,11,0,0),
- ]
-
- _transition_info = [
-i(-39600,0,'NST'),
-i(-36000,3600,'NWT'),
-i(-36000,3600,'NPT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-39600,0,'BST'),
-i(-36000,3600,'BDT'),
-i(-36000,0,'AHST'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
-i(-32400,3600,'HADT'),
-i(-36000,0,'HAST'),
- ]
-
-Aleutian = Aleutian()
-
diff --git a/modules/pytz/zoneinfo/US/Arizona.py b/modules/pytz/zoneinfo/US/Arizona.py
deleted file mode 100644
index d4ffa5a7..00000000
--- a/modules/pytz/zoneinfo/US/Arizona.py
+++ /dev/null
@@ -1,40 +0,0 @@
-'''tzinfo timezone information for US/Arizona.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Arizona(DstTzInfo):
- '''US/Arizona timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Arizona'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1942,2,9,9,0,0),
-d(1944,1,1,6,1,0),
-d(1944,4,1,7,1,0),
-d(1944,10,1,6,1,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Arizona = Arizona()
-
diff --git a/modules/pytz/zoneinfo/US/Central.py b/modules/pytz/zoneinfo/US/Central.py
deleted file mode 100644
index b7776bef..00000000
--- a/modules/pytz/zoneinfo/US/Central.py
+++ /dev/null
@@ -1,490 +0,0 @@
-'''tzinfo timezone information for US/Central.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Central(DstTzInfo):
- '''US/Central timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Central'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1920,6,13,8,0,0),
-d(1920,10,31,7,0,0),
-d(1921,3,27,8,0,0),
-d(1921,10,30,7,0,0),
-d(1922,4,30,8,0,0),
-d(1922,9,24,7,0,0),
-d(1923,4,29,8,0,0),
-d(1923,9,30,7,0,0),
-d(1924,4,27,8,0,0),
-d(1924,9,28,7,0,0),
-d(1925,4,26,8,0,0),
-d(1925,9,27,7,0,0),
-d(1926,4,25,8,0,0),
-d(1926,9,26,7,0,0),
-d(1927,4,24,8,0,0),
-d(1927,9,25,7,0,0),
-d(1928,4,29,8,0,0),
-d(1928,9,30,7,0,0),
-d(1929,4,28,8,0,0),
-d(1929,9,29,7,0,0),
-d(1930,4,27,8,0,0),
-d(1930,9,28,7,0,0),
-d(1931,4,26,8,0,0),
-d(1931,9,27,7,0,0),
-d(1932,4,24,8,0,0),
-d(1932,9,25,7,0,0),
-d(1933,4,30,8,0,0),
-d(1933,9,24,7,0,0),
-d(1934,4,29,8,0,0),
-d(1934,9,30,7,0,0),
-d(1935,4,28,8,0,0),
-d(1935,9,29,7,0,0),
-d(1936,3,1,8,0,0),
-d(1936,11,15,7,0,0),
-d(1937,4,25,8,0,0),
-d(1937,9,26,7,0,0),
-d(1938,4,24,8,0,0),
-d(1938,9,25,7,0,0),
-d(1939,4,30,8,0,0),
-d(1939,9,24,7,0,0),
-d(1940,4,28,8,0,0),
-d(1940,9,29,7,0,0),
-d(1941,4,27,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,10,30,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,10,27,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,10,26,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,10,29,7,0,0),
-d(1962,4,29,8,0,0),
-d(1962,10,28,7,0,0),
-d(1963,4,28,8,0,0),
-d(1963,10,27,7,0,0),
-d(1964,4,26,8,0,0),
-d(1964,10,25,7,0,0),
-d(1965,4,25,8,0,0),
-d(1965,10,31,7,0,0),
-d(1966,4,24,8,0,0),
-d(1966,10,30,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(1992,4,5,8,0,0),
-d(1992,10,25,7,0,0),
-d(1993,4,4,8,0,0),
-d(1993,10,31,7,0,0),
-d(1994,4,3,8,0,0),
-d(1994,10,30,7,0,0),
-d(1995,4,2,8,0,0),
-d(1995,10,29,7,0,0),
-d(1996,4,7,8,0,0),
-d(1996,10,27,7,0,0),
-d(1997,4,6,8,0,0),
-d(1997,10,26,7,0,0),
-d(1998,4,5,8,0,0),
-d(1998,10,25,7,0,0),
-d(1999,4,4,8,0,0),
-d(1999,10,31,7,0,0),
-d(2000,4,2,8,0,0),
-d(2000,10,29,7,0,0),
-d(2001,4,1,8,0,0),
-d(2001,10,28,7,0,0),
-d(2002,4,7,8,0,0),
-d(2002,10,27,7,0,0),
-d(2003,4,6,8,0,0),
-d(2003,10,26,7,0,0),
-d(2004,4,4,8,0,0),
-d(2004,10,31,7,0,0),
-d(2005,4,3,8,0,0),
-d(2005,10,30,7,0,0),
-d(2006,4,2,8,0,0),
-d(2006,10,29,7,0,0),
-d(2007,3,11,8,0,0),
-d(2007,11,4,7,0,0),
-d(2008,3,9,8,0,0),
-d(2008,11,2,7,0,0),
-d(2009,3,8,8,0,0),
-d(2009,11,1,7,0,0),
-d(2010,3,14,8,0,0),
-d(2010,11,7,7,0,0),
-d(2011,3,13,8,0,0),
-d(2011,11,6,7,0,0),
-d(2012,3,11,8,0,0),
-d(2012,11,4,7,0,0),
-d(2013,3,10,8,0,0),
-d(2013,11,3,7,0,0),
-d(2014,3,9,8,0,0),
-d(2014,11,2,7,0,0),
-d(2015,3,8,8,0,0),
-d(2015,11,1,7,0,0),
-d(2016,3,13,8,0,0),
-d(2016,11,6,7,0,0),
-d(2017,3,12,8,0,0),
-d(2017,11,5,7,0,0),
-d(2018,3,11,8,0,0),
-d(2018,11,4,7,0,0),
-d(2019,3,10,8,0,0),
-d(2019,11,3,7,0,0),
-d(2020,3,8,8,0,0),
-d(2020,11,1,7,0,0),
-d(2021,3,14,8,0,0),
-d(2021,11,7,7,0,0),
-d(2022,3,13,8,0,0),
-d(2022,11,6,7,0,0),
-d(2023,3,12,8,0,0),
-d(2023,11,5,7,0,0),
-d(2024,3,10,8,0,0),
-d(2024,11,3,7,0,0),
-d(2025,3,9,8,0,0),
-d(2025,11,2,7,0,0),
-d(2026,3,8,8,0,0),
-d(2026,11,1,7,0,0),
-d(2027,3,14,8,0,0),
-d(2027,11,7,7,0,0),
-d(2028,3,12,8,0,0),
-d(2028,11,5,7,0,0),
-d(2029,3,11,8,0,0),
-d(2029,11,4,7,0,0),
-d(2030,3,10,8,0,0),
-d(2030,11,3,7,0,0),
-d(2031,3,9,8,0,0),
-d(2031,11,2,7,0,0),
-d(2032,3,14,8,0,0),
-d(2032,11,7,7,0,0),
-d(2033,3,13,8,0,0),
-d(2033,11,6,7,0,0),
-d(2034,3,12,8,0,0),
-d(2034,11,5,7,0,0),
-d(2035,3,11,8,0,0),
-d(2035,11,4,7,0,0),
-d(2036,3,9,8,0,0),
-d(2036,11,2,7,0,0),
-d(2037,3,8,8,0,0),
-d(2037,11,1,7,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
- ]
-
-Central = Central()
-
diff --git a/modules/pytz/zoneinfo/US/East_minus_Indiana.py b/modules/pytz/zoneinfo/US/East_minus_Indiana.py
deleted file mode 100644
index f1d6c37d..00000000
--- a/modules/pytz/zoneinfo/US/East_minus_Indiana.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''tzinfo timezone information for US/East_minus_Indiana.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class East_minus_Indiana(DstTzInfo):
- '''US/East_minus_Indiana timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/East_minus_Indiana'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1941,6,22,8,0,0),
-d(1941,9,28,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1946,4,28,8,0,0),
-d(1946,9,29,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-East_minus_Indiana = East_minus_Indiana()
-
diff --git a/modules/pytz/zoneinfo/US/Eastern.py b/modules/pytz/zoneinfo/US/Eastern.py
deleted file mode 100644
index 7399d286..00000000
--- a/modules/pytz/zoneinfo/US/Eastern.py
+++ /dev/null
@@ -1,490 +0,0 @@
-'''tzinfo timezone information for US/Eastern.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Eastern(DstTzInfo):
- '''US/Eastern timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Eastern'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,7,0,0),
-d(1918,10,27,6,0,0),
-d(1919,3,30,7,0,0),
-d(1919,10,26,6,0,0),
-d(1920,3,28,7,0,0),
-d(1920,10,31,6,0,0),
-d(1921,4,24,7,0,0),
-d(1921,9,25,6,0,0),
-d(1922,4,30,7,0,0),
-d(1922,9,24,6,0,0),
-d(1923,4,29,7,0,0),
-d(1923,9,30,6,0,0),
-d(1924,4,27,7,0,0),
-d(1924,9,28,6,0,0),
-d(1925,4,26,7,0,0),
-d(1925,9,27,6,0,0),
-d(1926,4,25,7,0,0),
-d(1926,9,26,6,0,0),
-d(1927,4,24,7,0,0),
-d(1927,9,25,6,0,0),
-d(1928,4,29,7,0,0),
-d(1928,9,30,6,0,0),
-d(1929,4,28,7,0,0),
-d(1929,9,29,6,0,0),
-d(1930,4,27,7,0,0),
-d(1930,9,28,6,0,0),
-d(1931,4,26,7,0,0),
-d(1931,9,27,6,0,0),
-d(1932,4,24,7,0,0),
-d(1932,9,25,6,0,0),
-d(1933,4,30,7,0,0),
-d(1933,9,24,6,0,0),
-d(1934,4,29,7,0,0),
-d(1934,9,30,6,0,0),
-d(1935,4,28,7,0,0),
-d(1935,9,29,6,0,0),
-d(1936,4,26,7,0,0),
-d(1936,9,27,6,0,0),
-d(1937,4,25,7,0,0),
-d(1937,9,26,6,0,0),
-d(1938,4,24,7,0,0),
-d(1938,9,25,6,0,0),
-d(1939,4,30,7,0,0),
-d(1939,9,24,6,0,0),
-d(1940,4,28,7,0,0),
-d(1940,9,29,6,0,0),
-d(1941,4,27,7,0,0),
-d(1941,9,28,6,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1946,4,28,7,0,0),
-d(1946,9,29,6,0,0),
-d(1947,4,27,7,0,0),
-d(1947,9,28,6,0,0),
-d(1948,4,25,7,0,0),
-d(1948,9,26,6,0,0),
-d(1949,4,24,7,0,0),
-d(1949,9,25,6,0,0),
-d(1950,4,30,7,0,0),
-d(1950,9,24,6,0,0),
-d(1951,4,29,7,0,0),
-d(1951,9,30,6,0,0),
-d(1952,4,27,7,0,0),
-d(1952,9,28,6,0,0),
-d(1953,4,26,7,0,0),
-d(1953,9,27,6,0,0),
-d(1954,4,25,7,0,0),
-d(1954,9,26,6,0,0),
-d(1955,4,24,7,0,0),
-d(1955,10,30,6,0,0),
-d(1956,4,29,7,0,0),
-d(1956,10,28,6,0,0),
-d(1957,4,28,7,0,0),
-d(1957,10,27,6,0,0),
-d(1958,4,27,7,0,0),
-d(1958,10,26,6,0,0),
-d(1959,4,26,7,0,0),
-d(1959,10,25,6,0,0),
-d(1960,4,24,7,0,0),
-d(1960,10,30,6,0,0),
-d(1961,4,30,7,0,0),
-d(1961,10,29,6,0,0),
-d(1962,4,29,7,0,0),
-d(1962,10,28,6,0,0),
-d(1963,4,28,7,0,0),
-d(1963,10,27,6,0,0),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Eastern = Eastern()
-
diff --git a/modules/pytz/zoneinfo/US/Hawaii.py b/modules/pytz/zoneinfo/US/Hawaii.py
deleted file mode 100644
index 626ac1bb..00000000
--- a/modules/pytz/zoneinfo/US/Hawaii.py
+++ /dev/null
@@ -1,32 +0,0 @@
-'''tzinfo timezone information for US/Hawaii.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Hawaii(DstTzInfo):
- '''US/Hawaii timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Hawaii'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1933,4,30,12,30,0),
-d(1933,5,21,11,30,0),
-d(1942,2,9,12,30,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,11,30,0),
-d(1947,6,8,12,30,0),
- ]
-
- _transition_info = [
-i(-37800,0,'HST'),
-i(-34200,3600,'HDT'),
-i(-37800,0,'HST'),
-i(-34200,3600,'HWT'),
-i(-34200,3600,'HPT'),
-i(-37800,0,'HST'),
-i(-36000,0,'HST'),
- ]
-
-Hawaii = Hawaii()
-
diff --git a/modules/pytz/zoneinfo/US/Indiana_minus_Starke.py b/modules/pytz/zoneinfo/US/Indiana_minus_Starke.py
deleted file mode 100644
index e48867e6..00000000
--- a/modules/pytz/zoneinfo/US/Indiana_minus_Starke.py
+++ /dev/null
@@ -1,326 +0,0 @@
-'''tzinfo timezone information for US/Indiana_minus_Starke.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Indiana_minus_Starke(DstTzInfo):
- '''US/Indiana_minus_Starke timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Indiana_minus_Starke'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,8,0,0),
-d(1918,10,27,7,0,0),
-d(1919,3,30,8,0,0),
-d(1919,10,26,7,0,0),
-d(1942,2,9,8,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,7,0,0),
-d(1947,4,27,8,0,0),
-d(1947,9,28,7,0,0),
-d(1948,4,25,8,0,0),
-d(1948,9,26,7,0,0),
-d(1949,4,24,8,0,0),
-d(1949,9,25,7,0,0),
-d(1950,4,30,8,0,0),
-d(1950,9,24,7,0,0),
-d(1951,4,29,8,0,0),
-d(1951,9,30,7,0,0),
-d(1952,4,27,8,0,0),
-d(1952,9,28,7,0,0),
-d(1953,4,26,8,0,0),
-d(1953,9,27,7,0,0),
-d(1954,4,25,8,0,0),
-d(1954,9,26,7,0,0),
-d(1955,4,24,8,0,0),
-d(1955,10,30,7,0,0),
-d(1956,4,29,8,0,0),
-d(1956,10,28,7,0,0),
-d(1957,4,28,8,0,0),
-d(1957,9,29,7,0,0),
-d(1958,4,27,8,0,0),
-d(1958,9,28,7,0,0),
-d(1959,4,26,8,0,0),
-d(1959,10,25,7,0,0),
-d(1960,4,24,8,0,0),
-d(1960,10,30,7,0,0),
-d(1961,4,30,8,0,0),
-d(1961,10,29,7,0,0),
-d(1962,4,29,8,0,0),
-d(1963,10,27,7,0,0),
-d(1967,4,30,8,0,0),
-d(1967,10,29,7,0,0),
-d(1968,4,28,8,0,0),
-d(1968,10,27,7,0,0),
-d(1969,4,27,8,0,0),
-d(1969,10,26,7,0,0),
-d(1970,4,26,8,0,0),
-d(1970,10,25,7,0,0),
-d(1971,4,25,8,0,0),
-d(1971,10,31,7,0,0),
-d(1972,4,30,8,0,0),
-d(1972,10,29,7,0,0),
-d(1973,4,29,8,0,0),
-d(1973,10,28,7,0,0),
-d(1974,1,6,8,0,0),
-d(1974,10,27,7,0,0),
-d(1975,2,23,8,0,0),
-d(1975,10,26,7,0,0),
-d(1976,4,25,8,0,0),
-d(1976,10,31,7,0,0),
-d(1977,4,24,8,0,0),
-d(1977,10,30,7,0,0),
-d(1978,4,30,8,0,0),
-d(1978,10,29,7,0,0),
-d(1979,4,29,8,0,0),
-d(1979,10,28,7,0,0),
-d(1980,4,27,8,0,0),
-d(1980,10,26,7,0,0),
-d(1981,4,26,8,0,0),
-d(1981,10,25,7,0,0),
-d(1982,4,25,8,0,0),
-d(1982,10,31,7,0,0),
-d(1983,4,24,8,0,0),
-d(1983,10,30,7,0,0),
-d(1984,4,29,8,0,0),
-d(1984,10,28,7,0,0),
-d(1985,4,28,8,0,0),
-d(1985,10,27,7,0,0),
-d(1986,4,27,8,0,0),
-d(1986,10,26,7,0,0),
-d(1987,4,5,8,0,0),
-d(1987,10,25,7,0,0),
-d(1988,4,3,8,0,0),
-d(1988,10,30,7,0,0),
-d(1989,4,2,8,0,0),
-d(1989,10,29,7,0,0),
-d(1990,4,1,8,0,0),
-d(1990,10,28,7,0,0),
-d(1991,4,7,8,0,0),
-d(1991,10,27,7,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CWT'),
-i(-18000,3600,'CPT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-21600,0,'CST'),
-i(-18000,3600,'CDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Indiana_minus_Starke = Indiana_minus_Starke()
-
diff --git a/modules/pytz/zoneinfo/US/Michigan.py b/modules/pytz/zoneinfo/US/Michigan.py
deleted file mode 100644
index e4126b52..00000000
--- a/modules/pytz/zoneinfo/US/Michigan.py
+++ /dev/null
@@ -1,298 +0,0 @@
-'''tzinfo timezone information for US/Michigan.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Michigan(DstTzInfo):
- '''US/Michigan timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Michigan'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1905,1,1,5,32,11),
-d(1915,5,15,8,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1948,4,25,7,0,0),
-d(1948,9,26,6,0,0),
-d(1967,6,14,7,0,0),
-d(1967,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,4,27,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-19920,0,'LMT'),
-i(-21600,0,'CST'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-Michigan = Michigan()
-
diff --git a/modules/pytz/zoneinfo/US/Mountain.py b/modules/pytz/zoneinfo/US/Mountain.py
deleted file mode 100644
index ab6b1b68..00000000
--- a/modules/pytz/zoneinfo/US/Mountain.py
+++ /dev/null
@@ -1,334 +0,0 @@
-'''tzinfo timezone information for US/Mountain.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Mountain(DstTzInfo):
- '''US/Mountain timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Mountain'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,9,0,0),
-d(1918,10,27,8,0,0),
-d(1919,3,30,9,0,0),
-d(1919,10,26,8,0,0),
-d(1920,3,28,9,0,0),
-d(1920,10,31,8,0,0),
-d(1921,3,27,9,0,0),
-d(1921,5,22,8,0,0),
-d(1942,2,9,9,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,8,0,0),
-d(1965,4,25,9,0,0),
-d(1965,10,31,8,0,0),
-d(1966,4,24,9,0,0),
-d(1966,10,30,8,0,0),
-d(1967,4,30,9,0,0),
-d(1967,10,29,8,0,0),
-d(1968,4,28,9,0,0),
-d(1968,10,27,8,0,0),
-d(1969,4,27,9,0,0),
-d(1969,10,26,8,0,0),
-d(1970,4,26,9,0,0),
-d(1970,10,25,8,0,0),
-d(1971,4,25,9,0,0),
-d(1971,10,31,8,0,0),
-d(1972,4,30,9,0,0),
-d(1972,10,29,8,0,0),
-d(1973,4,29,9,0,0),
-d(1973,10,28,8,0,0),
-d(1974,1,6,9,0,0),
-d(1974,10,27,8,0,0),
-d(1975,2,23,9,0,0),
-d(1975,10,26,8,0,0),
-d(1976,4,25,9,0,0),
-d(1976,10,31,8,0,0),
-d(1977,4,24,9,0,0),
-d(1977,10,30,8,0,0),
-d(1978,4,30,9,0,0),
-d(1978,10,29,8,0,0),
-d(1979,4,29,9,0,0),
-d(1979,10,28,8,0,0),
-d(1980,4,27,9,0,0),
-d(1980,10,26,8,0,0),
-d(1981,4,26,9,0,0),
-d(1981,10,25,8,0,0),
-d(1982,4,25,9,0,0),
-d(1982,10,31,8,0,0),
-d(1983,4,24,9,0,0),
-d(1983,10,30,8,0,0),
-d(1984,4,29,9,0,0),
-d(1984,10,28,8,0,0),
-d(1985,4,28,9,0,0),
-d(1985,10,27,8,0,0),
-d(1986,4,27,9,0,0),
-d(1986,10,26,8,0,0),
-d(1987,4,5,9,0,0),
-d(1987,10,25,8,0,0),
-d(1988,4,3,9,0,0),
-d(1988,10,30,8,0,0),
-d(1989,4,2,9,0,0),
-d(1989,10,29,8,0,0),
-d(1990,4,1,9,0,0),
-d(1990,10,28,8,0,0),
-d(1991,4,7,9,0,0),
-d(1991,10,27,8,0,0),
-d(1992,4,5,9,0,0),
-d(1992,10,25,8,0,0),
-d(1993,4,4,9,0,0),
-d(1993,10,31,8,0,0),
-d(1994,4,3,9,0,0),
-d(1994,10,30,8,0,0),
-d(1995,4,2,9,0,0),
-d(1995,10,29,8,0,0),
-d(1996,4,7,9,0,0),
-d(1996,10,27,8,0,0),
-d(1997,4,6,9,0,0),
-d(1997,10,26,8,0,0),
-d(1998,4,5,9,0,0),
-d(1998,10,25,8,0,0),
-d(1999,4,4,9,0,0),
-d(1999,10,31,8,0,0),
-d(2000,4,2,9,0,0),
-d(2000,10,29,8,0,0),
-d(2001,4,1,9,0,0),
-d(2001,10,28,8,0,0),
-d(2002,4,7,9,0,0),
-d(2002,10,27,8,0,0),
-d(2003,4,6,9,0,0),
-d(2003,10,26,8,0,0),
-d(2004,4,4,9,0,0),
-d(2004,10,31,8,0,0),
-d(2005,4,3,9,0,0),
-d(2005,10,30,8,0,0),
-d(2006,4,2,9,0,0),
-d(2006,10,29,8,0,0),
-d(2007,3,11,9,0,0),
-d(2007,11,4,8,0,0),
-d(2008,3,9,9,0,0),
-d(2008,11,2,8,0,0),
-d(2009,3,8,9,0,0),
-d(2009,11,1,8,0,0),
-d(2010,3,14,9,0,0),
-d(2010,11,7,8,0,0),
-d(2011,3,13,9,0,0),
-d(2011,11,6,8,0,0),
-d(2012,3,11,9,0,0),
-d(2012,11,4,8,0,0),
-d(2013,3,10,9,0,0),
-d(2013,11,3,8,0,0),
-d(2014,3,9,9,0,0),
-d(2014,11,2,8,0,0),
-d(2015,3,8,9,0,0),
-d(2015,11,1,8,0,0),
-d(2016,3,13,9,0,0),
-d(2016,11,6,8,0,0),
-d(2017,3,12,9,0,0),
-d(2017,11,5,8,0,0),
-d(2018,3,11,9,0,0),
-d(2018,11,4,8,0,0),
-d(2019,3,10,9,0,0),
-d(2019,11,3,8,0,0),
-d(2020,3,8,9,0,0),
-d(2020,11,1,8,0,0),
-d(2021,3,14,9,0,0),
-d(2021,11,7,8,0,0),
-d(2022,3,13,9,0,0),
-d(2022,11,6,8,0,0),
-d(2023,3,12,9,0,0),
-d(2023,11,5,8,0,0),
-d(2024,3,10,9,0,0),
-d(2024,11,3,8,0,0),
-d(2025,3,9,9,0,0),
-d(2025,11,2,8,0,0),
-d(2026,3,8,9,0,0),
-d(2026,11,1,8,0,0),
-d(2027,3,14,9,0,0),
-d(2027,11,7,8,0,0),
-d(2028,3,12,9,0,0),
-d(2028,11,5,8,0,0),
-d(2029,3,11,9,0,0),
-d(2029,11,4,8,0,0),
-d(2030,3,10,9,0,0),
-d(2030,11,3,8,0,0),
-d(2031,3,9,9,0,0),
-d(2031,11,2,8,0,0),
-d(2032,3,14,9,0,0),
-d(2032,11,7,8,0,0),
-d(2033,3,13,9,0,0),
-d(2033,11,6,8,0,0),
-d(2034,3,12,9,0,0),
-d(2034,11,5,8,0,0),
-d(2035,3,11,9,0,0),
-d(2035,11,4,8,0,0),
-d(2036,3,9,9,0,0),
-d(2036,11,2,8,0,0),
-d(2037,3,8,9,0,0),
-d(2037,11,1,8,0,0),
- ]
-
- _transition_info = [
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MWT'),
-i(-21600,3600,'MPT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
-i(-21600,3600,'MDT'),
-i(-25200,0,'MST'),
- ]
-
-Mountain = Mountain()
-
diff --git a/modules/pytz/zoneinfo/US/Pacific.py b/modules/pytz/zoneinfo/US/Pacific.py
deleted file mode 100644
index f41984bd..00000000
--- a/modules/pytz/zoneinfo/US/Pacific.py
+++ /dev/null
@@ -1,390 +0,0 @@
-'''tzinfo timezone information for US/Pacific.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pacific(DstTzInfo):
- '''US/Pacific timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Pacific'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,10,0,0),
-d(1918,10,27,9,0,0),
-d(1919,3,30,10,0,0),
-d(1919,10,26,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1948,3,14,10,0,0),
-d(1949,1,1,9,0,0),
-d(1950,4,30,10,0,0),
-d(1950,9,24,9,0,0),
-d(1951,4,29,10,0,0),
-d(1951,9,30,9,0,0),
-d(1952,4,27,10,0,0),
-d(1952,9,28,9,0,0),
-d(1953,4,26,10,0,0),
-d(1953,9,27,9,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1961,4,30,10,0,0),
-d(1961,9,24,9,0,0),
-d(1962,4,29,10,0,0),
-d(1962,10,28,9,0,0),
-d(1963,4,28,10,0,0),
-d(1963,10,27,9,0,0),
-d(1964,4,26,10,0,0),
-d(1964,10,25,9,0,0),
-d(1965,4,25,10,0,0),
-d(1965,10,31,9,0,0),
-d(1966,4,24,10,0,0),
-d(1966,10,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,1,6,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,2,23,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,3,11,10,0,0),
-d(2007,11,4,9,0,0),
-d(2008,3,9,10,0,0),
-d(2008,11,2,9,0,0),
-d(2009,3,8,10,0,0),
-d(2009,11,1,9,0,0),
-d(2010,3,14,10,0,0),
-d(2010,11,7,9,0,0),
-d(2011,3,13,10,0,0),
-d(2011,11,6,9,0,0),
-d(2012,3,11,10,0,0),
-d(2012,11,4,9,0,0),
-d(2013,3,10,10,0,0),
-d(2013,11,3,9,0,0),
-d(2014,3,9,10,0,0),
-d(2014,11,2,9,0,0),
-d(2015,3,8,10,0,0),
-d(2015,11,1,9,0,0),
-d(2016,3,13,10,0,0),
-d(2016,11,6,9,0,0),
-d(2017,3,12,10,0,0),
-d(2017,11,5,9,0,0),
-d(2018,3,11,10,0,0),
-d(2018,11,4,9,0,0),
-d(2019,3,10,10,0,0),
-d(2019,11,3,9,0,0),
-d(2020,3,8,10,0,0),
-d(2020,11,1,9,0,0),
-d(2021,3,14,10,0,0),
-d(2021,11,7,9,0,0),
-d(2022,3,13,10,0,0),
-d(2022,11,6,9,0,0),
-d(2023,3,12,10,0,0),
-d(2023,11,5,9,0,0),
-d(2024,3,10,10,0,0),
-d(2024,11,3,9,0,0),
-d(2025,3,9,10,0,0),
-d(2025,11,2,9,0,0),
-d(2026,3,8,10,0,0),
-d(2026,11,1,9,0,0),
-d(2027,3,14,10,0,0),
-d(2027,11,7,9,0,0),
-d(2028,3,12,10,0,0),
-d(2028,11,5,9,0,0),
-d(2029,3,11,10,0,0),
-d(2029,11,4,9,0,0),
-d(2030,3,10,10,0,0),
-d(2030,11,3,9,0,0),
-d(2031,3,9,10,0,0),
-d(2031,11,2,9,0,0),
-d(2032,3,14,10,0,0),
-d(2032,11,7,9,0,0),
-d(2033,3,13,10,0,0),
-d(2033,11,6,9,0,0),
-d(2034,3,12,10,0,0),
-d(2034,11,5,9,0,0),
-d(2035,3,11,10,0,0),
-d(2035,11,4,9,0,0),
-d(2036,3,9,10,0,0),
-d(2036,11,2,9,0,0),
-d(2037,3,8,10,0,0),
-d(2037,11,1,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Pacific = Pacific()
-
diff --git a/modules/pytz/zoneinfo/US/Pacific_minus_New.py b/modules/pytz/zoneinfo/US/Pacific_minus_New.py
deleted file mode 100644
index 38c25efe..00000000
--- a/modules/pytz/zoneinfo/US/Pacific_minus_New.py
+++ /dev/null
@@ -1,390 +0,0 @@
-'''tzinfo timezone information for US/Pacific_minus_New.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Pacific_minus_New(DstTzInfo):
- '''US/Pacific_minus_New timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Pacific_minus_New'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,10,0,0),
-d(1918,10,27,9,0,0),
-d(1919,3,30,10,0,0),
-d(1919,10,26,9,0,0),
-d(1942,2,9,10,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,9,0,0),
-d(1948,3,14,10,0,0),
-d(1949,1,1,9,0,0),
-d(1950,4,30,10,0,0),
-d(1950,9,24,9,0,0),
-d(1951,4,29,10,0,0),
-d(1951,9,30,9,0,0),
-d(1952,4,27,10,0,0),
-d(1952,9,28,9,0,0),
-d(1953,4,26,10,0,0),
-d(1953,9,27,9,0,0),
-d(1954,4,25,10,0,0),
-d(1954,9,26,9,0,0),
-d(1955,4,24,10,0,0),
-d(1955,9,25,9,0,0),
-d(1956,4,29,10,0,0),
-d(1956,9,30,9,0,0),
-d(1957,4,28,10,0,0),
-d(1957,9,29,9,0,0),
-d(1958,4,27,10,0,0),
-d(1958,9,28,9,0,0),
-d(1959,4,26,10,0,0),
-d(1959,9,27,9,0,0),
-d(1960,4,24,10,0,0),
-d(1960,9,25,9,0,0),
-d(1961,4,30,10,0,0),
-d(1961,9,24,9,0,0),
-d(1962,4,29,10,0,0),
-d(1962,10,28,9,0,0),
-d(1963,4,28,10,0,0),
-d(1963,10,27,9,0,0),
-d(1964,4,26,10,0,0),
-d(1964,10,25,9,0,0),
-d(1965,4,25,10,0,0),
-d(1965,10,31,9,0,0),
-d(1966,4,24,10,0,0),
-d(1966,10,30,9,0,0),
-d(1967,4,30,10,0,0),
-d(1967,10,29,9,0,0),
-d(1968,4,28,10,0,0),
-d(1968,10,27,9,0,0),
-d(1969,4,27,10,0,0),
-d(1969,10,26,9,0,0),
-d(1970,4,26,10,0,0),
-d(1970,10,25,9,0,0),
-d(1971,4,25,10,0,0),
-d(1971,10,31,9,0,0),
-d(1972,4,30,10,0,0),
-d(1972,10,29,9,0,0),
-d(1973,4,29,10,0,0),
-d(1973,10,28,9,0,0),
-d(1974,1,6,10,0,0),
-d(1974,10,27,9,0,0),
-d(1975,2,23,10,0,0),
-d(1975,10,26,9,0,0),
-d(1976,4,25,10,0,0),
-d(1976,10,31,9,0,0),
-d(1977,4,24,10,0,0),
-d(1977,10,30,9,0,0),
-d(1978,4,30,10,0,0),
-d(1978,10,29,9,0,0),
-d(1979,4,29,10,0,0),
-d(1979,10,28,9,0,0),
-d(1980,4,27,10,0,0),
-d(1980,10,26,9,0,0),
-d(1981,4,26,10,0,0),
-d(1981,10,25,9,0,0),
-d(1982,4,25,10,0,0),
-d(1982,10,31,9,0,0),
-d(1983,4,24,10,0,0),
-d(1983,10,30,9,0,0),
-d(1984,4,29,10,0,0),
-d(1984,10,28,9,0,0),
-d(1985,4,28,10,0,0),
-d(1985,10,27,9,0,0),
-d(1986,4,27,10,0,0),
-d(1986,10,26,9,0,0),
-d(1987,4,5,10,0,0),
-d(1987,10,25,9,0,0),
-d(1988,4,3,10,0,0),
-d(1988,10,30,9,0,0),
-d(1989,4,2,10,0,0),
-d(1989,10,29,9,0,0),
-d(1990,4,1,10,0,0),
-d(1990,10,28,9,0,0),
-d(1991,4,7,10,0,0),
-d(1991,10,27,9,0,0),
-d(1992,4,5,10,0,0),
-d(1992,10,25,9,0,0),
-d(1993,4,4,10,0,0),
-d(1993,10,31,9,0,0),
-d(1994,4,3,10,0,0),
-d(1994,10,30,9,0,0),
-d(1995,4,2,10,0,0),
-d(1995,10,29,9,0,0),
-d(1996,4,7,10,0,0),
-d(1996,10,27,9,0,0),
-d(1997,4,6,10,0,0),
-d(1997,10,26,9,0,0),
-d(1998,4,5,10,0,0),
-d(1998,10,25,9,0,0),
-d(1999,4,4,10,0,0),
-d(1999,10,31,9,0,0),
-d(2000,4,2,10,0,0),
-d(2000,10,29,9,0,0),
-d(2001,4,1,10,0,0),
-d(2001,10,28,9,0,0),
-d(2002,4,7,10,0,0),
-d(2002,10,27,9,0,0),
-d(2003,4,6,10,0,0),
-d(2003,10,26,9,0,0),
-d(2004,4,4,10,0,0),
-d(2004,10,31,9,0,0),
-d(2005,4,3,10,0,0),
-d(2005,10,30,9,0,0),
-d(2006,4,2,10,0,0),
-d(2006,10,29,9,0,0),
-d(2007,3,11,10,0,0),
-d(2007,11,4,9,0,0),
-d(2008,3,9,10,0,0),
-d(2008,11,2,9,0,0),
-d(2009,3,8,10,0,0),
-d(2009,11,1,9,0,0),
-d(2010,3,14,10,0,0),
-d(2010,11,7,9,0,0),
-d(2011,3,13,10,0,0),
-d(2011,11,6,9,0,0),
-d(2012,3,11,10,0,0),
-d(2012,11,4,9,0,0),
-d(2013,3,10,10,0,0),
-d(2013,11,3,9,0,0),
-d(2014,3,9,10,0,0),
-d(2014,11,2,9,0,0),
-d(2015,3,8,10,0,0),
-d(2015,11,1,9,0,0),
-d(2016,3,13,10,0,0),
-d(2016,11,6,9,0,0),
-d(2017,3,12,10,0,0),
-d(2017,11,5,9,0,0),
-d(2018,3,11,10,0,0),
-d(2018,11,4,9,0,0),
-d(2019,3,10,10,0,0),
-d(2019,11,3,9,0,0),
-d(2020,3,8,10,0,0),
-d(2020,11,1,9,0,0),
-d(2021,3,14,10,0,0),
-d(2021,11,7,9,0,0),
-d(2022,3,13,10,0,0),
-d(2022,11,6,9,0,0),
-d(2023,3,12,10,0,0),
-d(2023,11,5,9,0,0),
-d(2024,3,10,10,0,0),
-d(2024,11,3,9,0,0),
-d(2025,3,9,10,0,0),
-d(2025,11,2,9,0,0),
-d(2026,3,8,10,0,0),
-d(2026,11,1,9,0,0),
-d(2027,3,14,10,0,0),
-d(2027,11,7,9,0,0),
-d(2028,3,12,10,0,0),
-d(2028,11,5,9,0,0),
-d(2029,3,11,10,0,0),
-d(2029,11,4,9,0,0),
-d(2030,3,10,10,0,0),
-d(2030,11,3,9,0,0),
-d(2031,3,9,10,0,0),
-d(2031,11,2,9,0,0),
-d(2032,3,14,10,0,0),
-d(2032,11,7,9,0,0),
-d(2033,3,13,10,0,0),
-d(2033,11,6,9,0,0),
-d(2034,3,12,10,0,0),
-d(2034,11,5,9,0,0),
-d(2035,3,11,10,0,0),
-d(2035,11,4,9,0,0),
-d(2036,3,9,10,0,0),
-d(2036,11,2,9,0,0),
-d(2037,3,8,10,0,0),
-d(2037,11,1,9,0,0),
- ]
-
- _transition_info = [
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PWT'),
-i(-25200,3600,'PPT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
-i(-25200,3600,'PDT'),
-i(-28800,0,'PST'),
- ]
-
-Pacific_minus_New = Pacific_minus_New()
-
diff --git a/modules/pytz/zoneinfo/US/Samoa.py b/modules/pytz/zoneinfo/US/Samoa.py
deleted file mode 100644
index 66c6b091..00000000
--- a/modules/pytz/zoneinfo/US/Samoa.py
+++ /dev/null
@@ -1,28 +0,0 @@
-'''tzinfo timezone information for US/Samoa.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class Samoa(DstTzInfo):
- '''US/Samoa timezone definition. See datetime.tzinfo for details'''
-
- zone = 'US/Samoa'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1911,1,1,11,22,48),
-d(1950,1,1,11,30,0),
-d(1967,4,1,11,0,0),
-d(1983,11,30,11,0,0),
- ]
-
- _transition_info = [
-i(-40980,0,'LMT'),
-i(-41400,0,'SAMT'),
-i(-39600,0,'NST'),
-i(-39600,0,'BST'),
-i(-39600,0,'SST'),
- ]
-
-Samoa = Samoa()
-
diff --git a/modules/pytz/zoneinfo/US/__init__.py b/modules/pytz/zoneinfo/US/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/UTC.py b/modules/pytz/zoneinfo/UTC.py
deleted file mode 100644
index fdb84339..00000000
--- a/modules/pytz/zoneinfo/UTC.py
+++ /dev/null
@@ -1,2 +0,0 @@
-'''tzinfo timezone information for UTC.'''
-from pytz import UTC
diff --git a/modules/pytz/zoneinfo/Universal.py b/modules/pytz/zoneinfo/Universal.py
deleted file mode 100644
index 0ed335fd..00000000
--- a/modules/pytz/zoneinfo/Universal.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Universal.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Universal(StaticTzInfo):
- '''Universal timezone definition. See datetime.tzinfo for details'''
- zone = 'Universal'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UTC'
-
-Universal = Universal()
-
diff --git a/modules/pytz/zoneinfo/WET.py b/modules/pytz/zoneinfo/WET.py
deleted file mode 100644
index a721990d..00000000
--- a/modules/pytz/zoneinfo/WET.py
+++ /dev/null
@@ -1,264 +0,0 @@
-'''tzinfo timezone information for WET.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class WET(DstTzInfo):
- '''WET timezone definition. See datetime.tzinfo for details'''
-
- zone = 'WET'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1977,4,3,1,0,0),
-d(1977,9,25,1,0,0),
-d(1978,4,2,1,0,0),
-d(1978,10,1,1,0,0),
-d(1979,4,1,1,0,0),
-d(1979,9,30,1,0,0),
-d(1980,4,6,1,0,0),
-d(1980,9,28,1,0,0),
-d(1981,3,29,1,0,0),
-d(1981,9,27,1,0,0),
-d(1982,3,28,1,0,0),
-d(1982,9,26,1,0,0),
-d(1983,3,27,1,0,0),
-d(1983,9,25,1,0,0),
-d(1984,3,25,1,0,0),
-d(1984,9,30,1,0,0),
-d(1985,3,31,1,0,0),
-d(1985,9,29,1,0,0),
-d(1986,3,30,1,0,0),
-d(1986,9,28,1,0,0),
-d(1987,3,29,1,0,0),
-d(1987,9,27,1,0,0),
-d(1988,3,27,1,0,0),
-d(1988,9,25,1,0,0),
-d(1989,3,26,1,0,0),
-d(1989,9,24,1,0,0),
-d(1990,3,25,1,0,0),
-d(1990,9,30,1,0,0),
-d(1991,3,31,1,0,0),
-d(1991,9,29,1,0,0),
-d(1992,3,29,1,0,0),
-d(1992,9,27,1,0,0),
-d(1993,3,28,1,0,0),
-d(1993,9,26,1,0,0),
-d(1994,3,27,1,0,0),
-d(1994,9,25,1,0,0),
-d(1995,3,26,1,0,0),
-d(1995,9,24,1,0,0),
-d(1996,3,31,1,0,0),
-d(1996,10,27,1,0,0),
-d(1997,3,30,1,0,0),
-d(1997,10,26,1,0,0),
-d(1998,3,29,1,0,0),
-d(1998,10,25,1,0,0),
-d(1999,3,28,1,0,0),
-d(1999,10,31,1,0,0),
-d(2000,3,26,1,0,0),
-d(2000,10,29,1,0,0),
-d(2001,3,25,1,0,0),
-d(2001,10,28,1,0,0),
-d(2002,3,31,1,0,0),
-d(2002,10,27,1,0,0),
-d(2003,3,30,1,0,0),
-d(2003,10,26,1,0,0),
-d(2004,3,28,1,0,0),
-d(2004,10,31,1,0,0),
-d(2005,3,27,1,0,0),
-d(2005,10,30,1,0,0),
-d(2006,3,26,1,0,0),
-d(2006,10,29,1,0,0),
-d(2007,3,25,1,0,0),
-d(2007,10,28,1,0,0),
-d(2008,3,30,1,0,0),
-d(2008,10,26,1,0,0),
-d(2009,3,29,1,0,0),
-d(2009,10,25,1,0,0),
-d(2010,3,28,1,0,0),
-d(2010,10,31,1,0,0),
-d(2011,3,27,1,0,0),
-d(2011,10,30,1,0,0),
-d(2012,3,25,1,0,0),
-d(2012,10,28,1,0,0),
-d(2013,3,31,1,0,0),
-d(2013,10,27,1,0,0),
-d(2014,3,30,1,0,0),
-d(2014,10,26,1,0,0),
-d(2015,3,29,1,0,0),
-d(2015,10,25,1,0,0),
-d(2016,3,27,1,0,0),
-d(2016,10,30,1,0,0),
-d(2017,3,26,1,0,0),
-d(2017,10,29,1,0,0),
-d(2018,3,25,1,0,0),
-d(2018,10,28,1,0,0),
-d(2019,3,31,1,0,0),
-d(2019,10,27,1,0,0),
-d(2020,3,29,1,0,0),
-d(2020,10,25,1,0,0),
-d(2021,3,28,1,0,0),
-d(2021,10,31,1,0,0),
-d(2022,3,27,1,0,0),
-d(2022,10,30,1,0,0),
-d(2023,3,26,1,0,0),
-d(2023,10,29,1,0,0),
-d(2024,3,31,1,0,0),
-d(2024,10,27,1,0,0),
-d(2025,3,30,1,0,0),
-d(2025,10,26,1,0,0),
-d(2026,3,29,1,0,0),
-d(2026,10,25,1,0,0),
-d(2027,3,28,1,0,0),
-d(2027,10,31,1,0,0),
-d(2028,3,26,1,0,0),
-d(2028,10,29,1,0,0),
-d(2029,3,25,1,0,0),
-d(2029,10,28,1,0,0),
-d(2030,3,31,1,0,0),
-d(2030,10,27,1,0,0),
-d(2031,3,30,1,0,0),
-d(2031,10,26,1,0,0),
-d(2032,3,28,1,0,0),
-d(2032,10,31,1,0,0),
-d(2033,3,27,1,0,0),
-d(2033,10,30,1,0,0),
-d(2034,3,26,1,0,0),
-d(2034,10,29,1,0,0),
-d(2035,3,25,1,0,0),
-d(2035,10,28,1,0,0),
-d(2036,3,30,1,0,0),
-d(2036,10,26,1,0,0),
-d(2037,3,29,1,0,0),
-d(2037,10,25,1,0,0),
- ]
-
- _transition_info = [
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
-i(3600,3600,'WEST'),
-i(0,0,'WET'),
- ]
-
-WET = WET()
-
diff --git a/modules/pytz/zoneinfo/W_minus_SU.py b/modules/pytz/zoneinfo/W_minus_SU.py
deleted file mode 100644
index a897cbde..00000000
--- a/modules/pytz/zoneinfo/W_minus_SU.py
+++ /dev/null
@@ -1,278 +0,0 @@
-'''tzinfo timezone information for W_minus_SU.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class W_minus_SU(DstTzInfo):
- '''W_minus_SU timezone definition. See datetime.tzinfo for details'''
-
- zone = 'W_minus_SU'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1916,7,2,21,30,0),
-d(1917,7,1,20,29,12),
-d(1917,12,27,20,29,12),
-d(1918,5,31,19,29,12),
-d(1918,9,15,20,29,12),
-d(1919,5,31,19,29,12),
-d(1919,6,30,21,29,12),
-d(1919,8,15,20,0,0),
-d(1921,2,14,20,0,0),
-d(1921,3,20,19,0,0),
-d(1921,8,31,19,0,0),
-d(1921,9,30,20,0,0),
-d(1922,9,30,21,0,0),
-d(1930,6,20,22,0,0),
-d(1981,3,31,21,0,0),
-d(1981,9,30,20,0,0),
-d(1982,3,31,21,0,0),
-d(1982,9,30,20,0,0),
-d(1983,3,31,21,0,0),
-d(1983,9,30,20,0,0),
-d(1984,3,31,21,0,0),
-d(1984,9,29,23,0,0),
-d(1985,3,30,23,0,0),
-d(1985,9,28,23,0,0),
-d(1986,3,29,23,0,0),
-d(1986,9,27,23,0,0),
-d(1987,3,28,23,0,0),
-d(1987,9,26,23,0,0),
-d(1988,3,26,23,0,0),
-d(1988,9,24,23,0,0),
-d(1989,3,25,23,0,0),
-d(1989,9,23,23,0,0),
-d(1990,3,24,23,0,0),
-d(1990,9,29,23,0,0),
-d(1991,3,30,23,0,0),
-d(1991,9,29,0,0,0),
-d(1992,1,19,0,0,0),
-d(1992,3,28,20,0,0),
-d(1992,9,26,19,0,0),
-d(1993,3,27,23,0,0),
-d(1993,9,25,23,0,0),
-d(1994,3,26,23,0,0),
-d(1994,9,24,23,0,0),
-d(1995,3,25,23,0,0),
-d(1995,9,23,23,0,0),
-d(1996,3,30,23,0,0),
-d(1996,10,26,23,0,0),
-d(1997,3,29,23,0,0),
-d(1997,10,25,23,0,0),
-d(1998,3,28,23,0,0),
-d(1998,10,24,23,0,0),
-d(1999,3,27,23,0,0),
-d(1999,10,30,23,0,0),
-d(2000,3,25,23,0,0),
-d(2000,10,28,23,0,0),
-d(2001,3,24,23,0,0),
-d(2001,10,27,23,0,0),
-d(2002,3,30,23,0,0),
-d(2002,10,26,23,0,0),
-d(2003,3,29,23,0,0),
-d(2003,10,25,23,0,0),
-d(2004,3,27,23,0,0),
-d(2004,10,30,23,0,0),
-d(2005,3,26,23,0,0),
-d(2005,10,29,23,0,0),
-d(2006,3,25,23,0,0),
-d(2006,10,28,23,0,0),
-d(2007,3,24,23,0,0),
-d(2007,10,27,23,0,0),
-d(2008,3,29,23,0,0),
-d(2008,10,25,23,0,0),
-d(2009,3,28,23,0,0),
-d(2009,10,24,23,0,0),
-d(2010,3,27,23,0,0),
-d(2010,10,30,23,0,0),
-d(2011,3,26,23,0,0),
-d(2011,10,29,23,0,0),
-d(2012,3,24,23,0,0),
-d(2012,10,27,23,0,0),
-d(2013,3,30,23,0,0),
-d(2013,10,26,23,0,0),
-d(2014,3,29,23,0,0),
-d(2014,10,25,23,0,0),
-d(2015,3,28,23,0,0),
-d(2015,10,24,23,0,0),
-d(2016,3,26,23,0,0),
-d(2016,10,29,23,0,0),
-d(2017,3,25,23,0,0),
-d(2017,10,28,23,0,0),
-d(2018,3,24,23,0,0),
-d(2018,10,27,23,0,0),
-d(2019,3,30,23,0,0),
-d(2019,10,26,23,0,0),
-d(2020,3,28,23,0,0),
-d(2020,10,24,23,0,0),
-d(2021,3,27,23,0,0),
-d(2021,10,30,23,0,0),
-d(2022,3,26,23,0,0),
-d(2022,10,29,23,0,0),
-d(2023,3,25,23,0,0),
-d(2023,10,28,23,0,0),
-d(2024,3,30,23,0,0),
-d(2024,10,26,23,0,0),
-d(2025,3,29,23,0,0),
-d(2025,10,25,23,0,0),
-d(2026,3,28,23,0,0),
-d(2026,10,24,23,0,0),
-d(2027,3,27,23,0,0),
-d(2027,10,30,23,0,0),
-d(2028,3,25,23,0,0),
-d(2028,10,28,23,0,0),
-d(2029,3,24,23,0,0),
-d(2029,10,27,23,0,0),
-d(2030,3,30,23,0,0),
-d(2030,10,26,23,0,0),
-d(2031,3,29,23,0,0),
-d(2031,10,25,23,0,0),
-d(2032,3,27,23,0,0),
-d(2032,10,30,23,0,0),
-d(2033,3,26,23,0,0),
-d(2033,10,29,23,0,0),
-d(2034,3,25,23,0,0),
-d(2034,10,28,23,0,0),
-d(2035,3,24,23,0,0),
-d(2035,10,27,23,0,0),
-d(2036,3,29,23,0,0),
-d(2036,10,25,23,0,0),
-d(2037,3,28,23,0,0),
-d(2037,10,24,23,0,0),
- ]
-
- _transition_info = [
-i(9000,0,'MMT'),
-i(9060,0,'MMT'),
-i(12660,3600,'MST'),
-i(9060,0,'MMT'),
-i(16260,7200,'MDST'),
-i(12660,3600,'MST'),
-i(16260,7200,'MDST'),
-i(14400,5340,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(18000,7200,'MSD'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(10800,0,'EEST'),
-i(7200,0,'EET'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
-i(14400,3600,'MSD'),
-i(10800,0,'MSK'),
- ]
-
-W_minus_SU = W_minus_SU()
-
diff --git a/modules/pytz/zoneinfo/Zulu.py b/modules/pytz/zoneinfo/Zulu.py
deleted file mode 100644
index 4d6142a5..00000000
--- a/modules/pytz/zoneinfo/Zulu.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''tzinfo timezone information for Zulu.'''
-from pytz.tzinfo import StaticTzInfo
-from pytz.tzinfo import memorized_timedelta as timedelta
-
-class Zulu(StaticTzInfo):
- '''Zulu timezone definition. See datetime.tzinfo for details'''
- zone = 'Zulu'
- _utcoffset = timedelta(seconds=0)
- _tzname = 'UTC'
-
-Zulu = Zulu()
-
diff --git a/modules/pytz/zoneinfo/__init__.py b/modules/pytz/zoneinfo/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/modules/pytz/zoneinfo/posixrules.py b/modules/pytz/zoneinfo/posixrules.py
deleted file mode 100644
index dd34e6e1..00000000
--- a/modules/pytz/zoneinfo/posixrules.py
+++ /dev/null
@@ -1,490 +0,0 @@
-'''tzinfo timezone information for posixrules.'''
-from pytz.tzinfo import DstTzInfo
-from pytz.tzinfo import memorized_datetime as d
-from pytz.tzinfo import memorized_ttinfo as i
-
-class posixrules(DstTzInfo):
- '''posixrules timezone definition. See datetime.tzinfo for details'''
-
- zone = 'posixrules'
-
- _utc_transition_times = [
-d(1,1,1,0,0,0),
-d(1918,3,31,7,0,0),
-d(1918,10,27,6,0,0),
-d(1919,3,30,7,0,0),
-d(1919,10,26,6,0,0),
-d(1920,3,28,7,0,0),
-d(1920,10,31,6,0,0),
-d(1921,4,24,7,0,0),
-d(1921,9,25,6,0,0),
-d(1922,4,30,7,0,0),
-d(1922,9,24,6,0,0),
-d(1923,4,29,7,0,0),
-d(1923,9,30,6,0,0),
-d(1924,4,27,7,0,0),
-d(1924,9,28,6,0,0),
-d(1925,4,26,7,0,0),
-d(1925,9,27,6,0,0),
-d(1926,4,25,7,0,0),
-d(1926,9,26,6,0,0),
-d(1927,4,24,7,0,0),
-d(1927,9,25,6,0,0),
-d(1928,4,29,7,0,0),
-d(1928,9,30,6,0,0),
-d(1929,4,28,7,0,0),
-d(1929,9,29,6,0,0),
-d(1930,4,27,7,0,0),
-d(1930,9,28,6,0,0),
-d(1931,4,26,7,0,0),
-d(1931,9,27,6,0,0),
-d(1932,4,24,7,0,0),
-d(1932,9,25,6,0,0),
-d(1933,4,30,7,0,0),
-d(1933,9,24,6,0,0),
-d(1934,4,29,7,0,0),
-d(1934,9,30,6,0,0),
-d(1935,4,28,7,0,0),
-d(1935,9,29,6,0,0),
-d(1936,4,26,7,0,0),
-d(1936,9,27,6,0,0),
-d(1937,4,25,7,0,0),
-d(1937,9,26,6,0,0),
-d(1938,4,24,7,0,0),
-d(1938,9,25,6,0,0),
-d(1939,4,30,7,0,0),
-d(1939,9,24,6,0,0),
-d(1940,4,28,7,0,0),
-d(1940,9,29,6,0,0),
-d(1941,4,27,7,0,0),
-d(1941,9,28,6,0,0),
-d(1942,2,9,7,0,0),
-d(1945,8,14,23,0,0),
-d(1945,9,30,6,0,0),
-d(1946,4,28,7,0,0),
-d(1946,9,29,6,0,0),
-d(1947,4,27,7,0,0),
-d(1947,9,28,6,0,0),
-d(1948,4,25,7,0,0),
-d(1948,9,26,6,0,0),
-d(1949,4,24,7,0,0),
-d(1949,9,25,6,0,0),
-d(1950,4,30,7,0,0),
-d(1950,9,24,6,0,0),
-d(1951,4,29,7,0,0),
-d(1951,9,30,6,0,0),
-d(1952,4,27,7,0,0),
-d(1952,9,28,6,0,0),
-d(1953,4,26,7,0,0),
-d(1953,9,27,6,0,0),
-d(1954,4,25,7,0,0),
-d(1954,9,26,6,0,0),
-d(1955,4,24,7,0,0),
-d(1955,10,30,6,0,0),
-d(1956,4,29,7,0,0),
-d(1956,10,28,6,0,0),
-d(1957,4,28,7,0,0),
-d(1957,10,27,6,0,0),
-d(1958,4,27,7,0,0),
-d(1958,10,26,6,0,0),
-d(1959,4,26,7,0,0),
-d(1959,10,25,6,0,0),
-d(1960,4,24,7,0,0),
-d(1960,10,30,6,0,0),
-d(1961,4,30,7,0,0),
-d(1961,10,29,6,0,0),
-d(1962,4,29,7,0,0),
-d(1962,10,28,6,0,0),
-d(1963,4,28,7,0,0),
-d(1963,10,27,6,0,0),
-d(1964,4,26,7,0,0),
-d(1964,10,25,6,0,0),
-d(1965,4,25,7,0,0),
-d(1965,10,31,6,0,0),
-d(1966,4,24,7,0,0),
-d(1966,10,30,6,0,0),
-d(1967,4,30,7,0,0),
-d(1967,10,29,6,0,0),
-d(1968,4,28,7,0,0),
-d(1968,10,27,6,0,0),
-d(1969,4,27,7,0,0),
-d(1969,10,26,6,0,0),
-d(1970,4,26,7,0,0),
-d(1970,10,25,6,0,0),
-d(1971,4,25,7,0,0),
-d(1971,10,31,6,0,0),
-d(1972,4,30,7,0,0),
-d(1972,10,29,6,0,0),
-d(1973,4,29,7,0,0),
-d(1973,10,28,6,0,0),
-d(1974,1,6,7,0,0),
-d(1974,10,27,6,0,0),
-d(1975,2,23,7,0,0),
-d(1975,10,26,6,0,0),
-d(1976,4,25,7,0,0),
-d(1976,10,31,6,0,0),
-d(1977,4,24,7,0,0),
-d(1977,10,30,6,0,0),
-d(1978,4,30,7,0,0),
-d(1978,10,29,6,0,0),
-d(1979,4,29,7,0,0),
-d(1979,10,28,6,0,0),
-d(1980,4,27,7,0,0),
-d(1980,10,26,6,0,0),
-d(1981,4,26,7,0,0),
-d(1981,10,25,6,0,0),
-d(1982,4,25,7,0,0),
-d(1982,10,31,6,0,0),
-d(1983,4,24,7,0,0),
-d(1983,10,30,6,0,0),
-d(1984,4,29,7,0,0),
-d(1984,10,28,6,0,0),
-d(1985,4,28,7,0,0),
-d(1985,10,27,6,0,0),
-d(1986,4,27,7,0,0),
-d(1986,10,26,6,0,0),
-d(1987,4,5,7,0,0),
-d(1987,10,25,6,0,0),
-d(1988,4,3,7,0,0),
-d(1988,10,30,6,0,0),
-d(1989,4,2,7,0,0),
-d(1989,10,29,6,0,0),
-d(1990,4,1,7,0,0),
-d(1990,10,28,6,0,0),
-d(1991,4,7,7,0,0),
-d(1991,10,27,6,0,0),
-d(1992,4,5,7,0,0),
-d(1992,10,25,6,0,0),
-d(1993,4,4,7,0,0),
-d(1993,10,31,6,0,0),
-d(1994,4,3,7,0,0),
-d(1994,10,30,6,0,0),
-d(1995,4,2,7,0,0),
-d(1995,10,29,6,0,0),
-d(1996,4,7,7,0,0),
-d(1996,10,27,6,0,0),
-d(1997,4,6,7,0,0),
-d(1997,10,26,6,0,0),
-d(1998,4,5,7,0,0),
-d(1998,10,25,6,0,0),
-d(1999,4,4,7,0,0),
-d(1999,10,31,6,0,0),
-d(2000,4,2,7,0,0),
-d(2000,10,29,6,0,0),
-d(2001,4,1,7,0,0),
-d(2001,10,28,6,0,0),
-d(2002,4,7,7,0,0),
-d(2002,10,27,6,0,0),
-d(2003,4,6,7,0,0),
-d(2003,10,26,6,0,0),
-d(2004,4,4,7,0,0),
-d(2004,10,31,6,0,0),
-d(2005,4,3,7,0,0),
-d(2005,10,30,6,0,0),
-d(2006,4,2,7,0,0),
-d(2006,10,29,6,0,0),
-d(2007,3,11,7,0,0),
-d(2007,11,4,6,0,0),
-d(2008,3,9,7,0,0),
-d(2008,11,2,6,0,0),
-d(2009,3,8,7,0,0),
-d(2009,11,1,6,0,0),
-d(2010,3,14,7,0,0),
-d(2010,11,7,6,0,0),
-d(2011,3,13,7,0,0),
-d(2011,11,6,6,0,0),
-d(2012,3,11,7,0,0),
-d(2012,11,4,6,0,0),
-d(2013,3,10,7,0,0),
-d(2013,11,3,6,0,0),
-d(2014,3,9,7,0,0),
-d(2014,11,2,6,0,0),
-d(2015,3,8,7,0,0),
-d(2015,11,1,6,0,0),
-d(2016,3,13,7,0,0),
-d(2016,11,6,6,0,0),
-d(2017,3,12,7,0,0),
-d(2017,11,5,6,0,0),
-d(2018,3,11,7,0,0),
-d(2018,11,4,6,0,0),
-d(2019,3,10,7,0,0),
-d(2019,11,3,6,0,0),
-d(2020,3,8,7,0,0),
-d(2020,11,1,6,0,0),
-d(2021,3,14,7,0,0),
-d(2021,11,7,6,0,0),
-d(2022,3,13,7,0,0),
-d(2022,11,6,6,0,0),
-d(2023,3,12,7,0,0),
-d(2023,11,5,6,0,0),
-d(2024,3,10,7,0,0),
-d(2024,11,3,6,0,0),
-d(2025,3,9,7,0,0),
-d(2025,11,2,6,0,0),
-d(2026,3,8,7,0,0),
-d(2026,11,1,6,0,0),
-d(2027,3,14,7,0,0),
-d(2027,11,7,6,0,0),
-d(2028,3,12,7,0,0),
-d(2028,11,5,6,0,0),
-d(2029,3,11,7,0,0),
-d(2029,11,4,6,0,0),
-d(2030,3,10,7,0,0),
-d(2030,11,3,6,0,0),
-d(2031,3,9,7,0,0),
-d(2031,11,2,6,0,0),
-d(2032,3,14,7,0,0),
-d(2032,11,7,6,0,0),
-d(2033,3,13,7,0,0),
-d(2033,11,6,6,0,0),
-d(2034,3,12,7,0,0),
-d(2034,11,5,6,0,0),
-d(2035,3,11,7,0,0),
-d(2035,11,4,6,0,0),
-d(2036,3,9,7,0,0),
-d(2036,11,2,6,0,0),
-d(2037,3,8,7,0,0),
-d(2037,11,1,6,0,0),
- ]
-
- _transition_info = [
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EWT'),
-i(-14400,3600,'EPT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
-i(-14400,3600,'EDT'),
-i(-18000,0,'EST'),
- ]
-
-posixrules = posixrules()
-
diff --git a/otp/src/ai/AIBaseGlobal.py b/otp/src/ai/AIBaseGlobal.py
index 3fee7309..937f95f2 100644
--- a/otp/src/ai/AIBaseGlobal.py
+++ b/otp/src/ai/AIBaseGlobal.py
@@ -1,7 +1,7 @@
"""instantiate global ShowBase object"""
-from AIBase import *
+from .AIBase import *
# guard against AI files being imported on the client
assert game.process != 'client'
diff --git a/otp/src/ai/AIDistrict.py b/otp/src/ai/AIDistrict.py
index 021fe2df..660def97 100644
--- a/otp/src/ai/AIDistrict.py
+++ b/otp/src/ai/AIDistrict.py
@@ -1,6 +1,6 @@
from pandac.PandaModules import *
from otp.otpbase import OTPGlobals
-from AIMsgTypes import *
+from .AIMsgTypes import *
from direct.showbase.PythonUtil import Functor, randUint32
from direct.directnotify import DirectNotifyGlobal
from direct.fsm import ClassicFSM
@@ -26,12 +26,12 @@ def __init__(
districtId, districtName, districtType, serverId,
minChannel, maxChannel, dcSuffix = 'AI'):
assert self.notify.debugStateCall(self)
-
+
# Save the district Id (needed for calculations in AIRepository code)
self.districtId = districtId
self.districtName = districtName
self.districtType = districtType
-
+
AIRepository.__init__(
self, mdip, mdport, esip, esport, dcFileNames,
serverId,
@@ -100,6 +100,7 @@ def getGameDoId(self):
def incrementPopulation(self):
self._population += 1
+
def decrementPopulation(self):
if __dev__:
assert self._population > 0
@@ -157,7 +158,7 @@ def enterPlayGame(self):
from otp.distributed import DistributedTestObjectAI
self.testObject = DistributedTestObjectAI.DistributedTestObjectAI(self)
self.testObject.generateOtpObject(self.getGameDoId(), 3)
-
+
taskMgr.doMethodLater(300, self.printPopulationToLog, self.uniqueName("printPopulationTask"))
@@ -275,14 +276,14 @@ def readerPollUntilEmpty(self, task):
try:
return AIRepository.readerPollUntilEmpty(self, task)
- except Exception, e:
+ except Exception as e:
appendStr(e, '\nSENDER ID: %s' % self.getAvatarIdFromSender())
raise
def handleReaderOverflow(self):
# may as well delete the shard at this point
self.deleteDistrict(self.districtId)
- raise StandardError, ("incoming-datagram buffer overflowed, "
+ raise Exception("incoming-datagram buffer overflowed, "
"aborting AI process")
##### General Purpose functions #####
@@ -386,11 +387,11 @@ def registerShardDownMessage(self, stateserverid):
datagram.addChannel(self.ourChannel)
# schedule for execution on socket close
self.addPostSocketClose(datagram)
-
+
def sendSetZone(self, distobj, zoneId):
datagram = PyDatagram()
datagram.addServerHeader(
- distobj.doId, self.ourChannel, STATESERVER_OBJECT_SET_ZONE)
+ distobj.doId, self.ourChannel, STATESERVER_OBJECT_SET_ZONE)
# Add the zone parent id
# HACK:
parentId = oldParentId = self.districtId
@@ -427,8 +428,8 @@ def makeFriends(self, avatarAId, avatarBId, flags, context):
"""
datagram = PyDatagram()
datagram.addServerHeader(
- DBSERVER_ID, self.ourChannel, DBSERVER_MAKE_FRIENDS)
-
+ DBSERVER_ID, self.ourChannel, DBSERVER_MAKE_FRIENDS)
+
# Indicate the two avatars who are making friends
datagram.addUint32(avatarAId)
datagram.addUint32(avatarBId)
@@ -450,8 +451,8 @@ def requestSecret(self, requesterId):
"""
datagram = PyDatagram()
datagram.addServerHeader(
- DBSERVER_ID,self.ourChannel,DBSERVER_REQUEST_SECRET)
-
+ DBSERVER_ID,self.ourChannel,DBSERVER_REQUEST_SECRET)
+
# Indicate the number we want to associate with the new secret.
datagram.addUint32(requesterId)
# Send it off!
diff --git a/otp/src/ai/AIMsgTypes.py b/otp/src/ai/AIMsgTypes.py
index 18de7d6d..f8f467cd 100644
--- a/otp/src/ai/AIMsgTypes.py
+++ b/otp/src/ai/AIMsgTypes.py
@@ -108,11 +108,13 @@
AIMsgId2Names = invertDictLossless(AIMsgName2Id)
# put msg names in module scope, assigned to msg value
-for name, value in AIMsgName2Id.items():
- exec '%s = %s' % (name, value)
+for name, value in list(AIMsgName2Id.items()):
+ exec('%s = %s' % (name, value))
del name, value
# The ID number of the database server. The above direct-to-dbserver
# transactions are sent to this ID.
DBSERVER_ID = 4003
+# District
+STATESERVER_UPDATE_SHARD = 2091
\ No newline at end of file
diff --git a/otp/src/ai/AIRepository.py b/otp/src/ai/AIRepository.py
index 4bbce7e5..eebbbd75 100644
--- a/otp/src/ai/AIRepository.py
+++ b/otp/src/ai/AIRepository.py
@@ -1,6 +1,6 @@
from pandac.PandaModules import *
from otp.otpbase import OTPGlobals
-from AIMsgTypes import *
+from .AIMsgTypes import *
from direct.showbase.PythonUtil import Functor
from direct.directnotify.DirectNotifyGlobal import directNotify
from direct.fsm import ClassicFSM
@@ -29,14 +29,14 @@
class AIRepository(ConnectionRepository):
"""
The new AIRepository base class
-
+
It does not have:
- district or shard code (see AIDistrict.py)
- friends or secret friends code
- a collision traverser
-
+
of course, a derived class may add those.
-
+
It does have:
+ object creation code
+ channel listening code
@@ -52,17 +52,17 @@ def __init__(
minChannel, maxChannel, dcSuffix = 'AI'):
assert self.notify.debugStateCall(self)
self._channels={}
- self.AIRunningNetYield = simbase.config.GetBool('ai-running-net-yield', 0)
-
+ self.AIRunningNetYield = simbase.config.GetBool('ai-running-net-yield', 0)
+
self._msgBundleNames = []
# doId->requestDeleted object
self._requestDeletedDOs = {}
-
+
ConnectionRepository.__init__(
self, ConnectionRepository.CM_NATIVE, simbase.config)
self.dcSuffix = dcSuffix
-
+
simbase.setupCpuAffinities(minChannel)
self.distributedObjectRequests=set()
@@ -90,7 +90,7 @@ def __init__(
# UDP socket for sending events to the event server.
self.udpSock = None
-
+
if not self.esurl.empty():
udpEventServer = SocketAddress()
if not udpEventServer.setHost(self.esurl.getServer(), self.esurl.getPort()):
@@ -154,23 +154,18 @@ def __init__(
# in. However, in the normal AI repository, we should do
# these things.
self.doLiveUpdates = 1
-
+
#for generating unqiue names for non-dos, manly used for tasks
self.keyCounter = 0
-
- self.MaxEpockSpeed = self.config.GetFloat('ai-net-yield-epoch', 1.0/30.0)
-
+
+ self.MaxEpockSpeed = self.config.GetFloat('ai-net-yield-epoch', 1.0/30.0)
+
if self.AIRunningNetYield :
taskMgr.doYield =self.taskManagerDoYieldNetwork
- # use this for time yields without sleeps
+ # use this for time yields without sleeps
#taskMgr.doYield = self.taskManagerDoYield
- # Used for moderation of report-a-player feature
- self.centralLogger = self.generateGlobalObject(
- OtpDoGlobals.OTP_DO_ID_CENTRAL_LOGGER,
- "CentralLogger")
-
self.garbageLeakLogger = GarbageLeakServerEventAggregatorAI(self)
taskMgr.add(self._checkBundledMsgs, 'checkBundledMsgs', priority=-100)
@@ -252,12 +247,12 @@ def _handleLeak(self, container, containerName):
fastRepr(container, maxLen=1, strFactor=50)))
def getPlayerAvatars(self):
- return [i for i in self.doId2do.values()
+ return [i for i in list(self.doId2do.values())
if isinstance(i, DistributedPlayerAI)]
def uniqueName(self, desc):
return desc+"-"+str(self.serverId)
-
+
def trueUniqueName(self, desc):
self.keyCounter += 1
return desc+"-"+str(self.serverId)+"-"+str(self.keyCounter)
@@ -329,7 +324,7 @@ def writeServerEvent(self, eventType, who, description, serverId=None):
break
breakCount += 1
-
+
def writeServerStatus(self, who, avatar_count, object_count):
"""
Sends the Status Packet to the event server via UDP for
@@ -463,19 +458,19 @@ def handlePlayGame(self, msgType, di):
def handleAvatarUsage(self, di):
"""
- Should only be handled by the UD process containing the AvatarManagerUD
+ Should only be handled by the UD process containing the AvatarManagerUD
"""
pass
-
+
def handleAccountUsage(self, di):
"""
- Should only be handled by the UD process containing the AvatarManagerUD
+ Should only be handled by the UD process containing the AvatarManagerUD
"""
pass
-
+
def handleObjectDeleteDisk(self, di):
pass
-
+
def handleObjectQueryField(self, di):
assert self.notify.debugStateCall(self)
@@ -496,7 +491,7 @@ def handleObjectQueryField(self, di):
value = packer.unpackObject()
messenger.send(
"doFieldResponse-%s"%(context,), [context, value])
-
+
def handleObjectQueryFields(self, di):
assert self.notify.debugStateCall(self)
@@ -541,15 +536,15 @@ def handleServerPing(self, di):
datagram = PyDatagram()
sender=self.getMsgSender()
datagram.addServerHeader(
- sender, self.ourChannel, SERVER_PING)
+ sender, self.ourChannel, SERVER_PING)
# A context that can be used to index the response if needed
datagram.addUint32(sec)
datagram.addUint32(usec)
datagram.addString(url)
datagram.addUint32(channel)
self.send(datagram)
-
-
+
+
def handleMessageType(self, msgType, di):
if msgType == CLIENT_GET_STATE_RESP:
@@ -605,11 +600,11 @@ def handleMessageType(self, msgType, di):
if __dev__:
import pdb
pdb.set_trace()
-
+
def exitPlayGame(self):
self.handler = None
self.stopReaderPollTask()
-
+
self.deleteDistributedObjects()
cleanupAsyncRequests()
@@ -624,12 +619,12 @@ def exitPlayGame(self):
# These tasks are ok
continue
else:
- print taskMgr
+ print(taskMgr)
self.notify.error("You can't leave otp until you clean up your tasks.")
# Make sure there are no event hooks still hanging.
if not messenger.isEmpty():
- print messenger
+ print(messenger)
self.notify.error("Messenger should not have any events in it.")
##### NoConnection #####
@@ -697,8 +692,8 @@ def postGenerate(self, context, distObj):
self.distributedObjectRequests.discard(doId)
distObj.setLocation(parentId, zoneId)
self.writeServerEvent('distObjEnter', doId, '')
-
- def handleDistObjEnter(self, di):
+
+ def handleDistObjEnter(self, di):
assert self.notify.debugStateCall(self)
context = di.getUint32()
parentId = di.getUint32()
@@ -708,7 +703,7 @@ def handleDistObjEnter(self, di):
# Look up the dclass
dclass = self.dclassesByNumber[classId]
# Is it in our dictionary?
- if self.doId2do.has_key(doId):
+ if doId in self.doId2do:
self.notify.warning("Object Entered " + str(doId) +
" re-entered without exiting")
# Create a new distributed object
@@ -727,7 +722,7 @@ def handleDistObjEnter(self, di):
## self.notify.error("Avatar %s re-entered without exiting" % doId)
- def handleDistObjEnterZone(self, di):
+ def handleDistObjEnterZone(self, di):
assert self.notify.debugStateCall(self)
parentId = di.getUint32()
zoneId = di.getUint32()
@@ -736,7 +731,7 @@ def handleDistObjEnterZone(self, di):
# Look up the dclass
dclass = self.dclassesByNumber[classId]
# Is it in our dictionary?
- if self.doId2do.has_key(doId):
+ if doId in self.doId2do:
self.notify.warning("Object Entered " + str(doId) +
" re-entered without exiting")
# Create a new distributed object
@@ -817,7 +812,7 @@ def _announceDistObjExit(self, doId):
pass
def _generateFromDatagram(self, parentId, zoneId, dclass, doId, di, addToTables=True):
- if (self.doId2do.has_key(doId)):
+ if (doId in self.doId2do):
# added to prevent objects already generated from being generated again (was
# happening with some traded inventory objects, quests specfically)
return self.doId2do[doId]
@@ -825,7 +820,7 @@ def _generateFromDatagram(self, parentId, zoneId, dclass, doId, di, addToTables=
classDef = dclass.getClassDef()
try:
distObj = classDef(self)
- except TypeError, e:
+ except TypeError as e:
self.notify.error('%s (class %s, parentId %d, zoneId %d, doId %d)' % \
(e, dclass.getName(), parentId, zoneId, doId))
distObj.dclass = dclass
@@ -906,7 +901,7 @@ def sendUpdate(self, do, fieldName, args):
#print args
dg = do.dclass.aiFormatUpdate(
fieldName, do.doId, do.doId, self.ourChannel, args)
- self.sendDatagram(dg)
+ self.sendDatagram(dg)
def sendUpdateToDoId(self, dclassName, fieldName, doId, args,
channelId=None):
@@ -915,7 +910,7 @@ def sendUpdateToDoId(self, dclassName, fieldName, doId, args,
airecv, ownrecv, broadcast, etc. If you don't include a channelId
or if channelId == doId, then the normal broadcast options will
be used.
-
+
See Also: def queryObjectField
"""
dclass=self.dclassesByName.get(dclassName+self.dcSuffix)
@@ -934,7 +929,7 @@ def createDgUpdateToDoId(self, dclassName, fieldName, doId, args,
airecv, ownrecv, broadcast, etc. If you don't include a channelId
or if channelId == doId, then the normal broadcast options will
be used.
-
+
This is just like sendUpdateToDoId, but just returns
the datagram instead of immediately sending it.
"""
@@ -959,7 +954,7 @@ def sendUpdateToGlobalDoId(self, dclassName, fieldName, doId, args):
dg = dclass.aiFormatUpdate(
fieldName, doId, doId, self.ourChannel, args)
self.send(dg)
-
+
def sendUpdateToChannel(self, do, channelId, fieldName, args):
dg = do.dclass.aiFormatUpdate(
fieldName, do.doId, channelId, self.ourChannel, args)
@@ -992,7 +987,7 @@ def _checkBundledMsgs(self, task=None):
self.abandonMessageBundles()
self.notify.error('message bundling leak, see warnings above (most recent first)')
return task.cont
-
+
def registerForChannel(self, channelNumber):
if self._channels.get(channelNumber):
# We are already registered for this channel.
@@ -1004,19 +999,19 @@ def registerForChannel(self, channelNumber):
datagram.addInt8(1)
datagram.addChannel(CONTROL_MESSAGE)
datagram.addUint16(CONTROL_SET_CHANNEL)
-
+
datagram.addChannel(channelNumber)
self.send(datagram)
def addPostSocketClose(self, themessage):
# Time to send a register for channel message to the msgDirector
datagram = PyDatagram()
-# datagram.addServerControlHeader(CONTROL_ADD_POST_REMOVE)
+# datagram.addServerControlHeader(CONTROL_ADD_POST_REMOVE)
datagram.addInt8(1)
datagram.addChannel(CONTROL_MESSAGE)
datagram.addUint16(CONTROL_ADD_POST_REMOVE)
- datagram.addString(themessage.getMessage())
+ datagram.addBlob(themessage.getMessage())
self.send(datagram)
def addPostSocketCloseUD(self, dclassName, fieldName, doId, args):
@@ -1033,7 +1028,7 @@ def unregisterForChannel(self, channelNumber):
del self._channels[channelNumber]
# Time to send a unregister for channel message to the msgDirector
datagram = PyDatagram()
-# datagram.addServerControlHeader(CONTROL_REMOVE_CHANNEL)
+# datagram.addServerControlHeader(CONTROL_REMOVE_CHANNEL)
datagram.addInt8(1)
datagram.addChannel(CONTROL_MESSAGE)
datagram.addUint16(CONTROL_REMOVE_CHANNEL)
@@ -1042,20 +1037,20 @@ def unregisterForChannel(self, channelNumber):
self.send(datagram)
#----------------------------------
-
+
def addAvatarToChannels(self, avatarId, listOfChannels):
"""
avatarId is a 32 bit doId
"""
assert self.notify.debugCall()
- self.addConnectionToChannels((1L<<32)+avatarId, listOfChannels)
+ self.addConnectionToChannels((1<<32)+avatarId, listOfChannels)
def removeAvatarFromChannels(self, avatarId, listOfChannels):
"""
avatarId is a 32 bit doId
"""
assert self.notify.debugCall()
- self.removeConnectionToChannels((1L<<32)+avatarId, listOfChannels)
+ self.removeConnectionToChannels((1<<32)+avatarId, listOfChannels)
def addConnectionToChannels(self, targetConnection, listOfChannels):
"""
@@ -1064,7 +1059,7 @@ def addConnectionToChannels(self, targetConnection, listOfChannels):
assert self.notify.debugCall()
dg = PyDatagram()
dg.addServerHeader(
- targetConnection, self.serverId, CLIENT_AGENT_OPEN_CHANNEL)
+ targetConnection, self.serverId, CLIENT_AGENT_OPEN_CHANNEL)
for i in listOfChannels:
dg.addUint64(i)
self.send(dg)
@@ -1076,7 +1071,7 @@ def removeConnectionToChannels(self, targetConnection, listOfChannels):
assert self.notify.debugCall()
dg = PyDatagram()
dg.addServerHeader(
- targetConnection, self.serverId, CLIENT_AGENT_CLOSE_CHANNEL)
+ targetConnection, self.serverId, CLIENT_AGENT_CLOSE_CHANNEL)
for i in listOfChannels:
dg.addUint64(i)
self.send(dg)
@@ -1099,7 +1094,7 @@ def addInterestToConnection(self, targetConnection, interestId,
dg.addUint32(contextId)
dg.addUint32(parentDoId)
dg.addUint32(contextId)
- if isinstance(zoneIdList, types.ListType):
+ if isinstance(zoneIdList, list):
# sort and remove repeated entries
zIdSet = set(zoneIdList)
for zoneId in zIdSet:
@@ -1123,7 +1118,7 @@ def removeInterestFromConnection(self, targetConnection, interestId,
# the AI and not the client
dg.addUint16((1<<15)+interestId)
dg.addUint32(contextId)
- self.send(dg)
+ self.send(dg)
def setAllowClientSend(self, avatarId,
dObject, fieldNameList = []):
@@ -1143,7 +1138,7 @@ def setAllowClientSend(self, avatarId,
# Set the high bit to indicate that the interest is being governed by
# the AI and not the client
dg.addUint32(dObject.doId)
- assert isinstance(fieldNameList, types.ListType)
+ assert isinstance(fieldNameList, list)
dclass = dObject.dclass
# sort and remove repeated entries as we discover the field
@@ -1153,23 +1148,23 @@ def setAllowClientSend(self, avatarId,
# insert the fieldIds into the datagram
for fieldId in sorted(fieldIdSet):
- dg.addUint16(fieldId)
+ dg.addUint16(fieldId)
self.send(dg)
def clearAllowClientSend(self, avatarId, dObject):
self.setAllowClientSend(avatarId, dObject)
-
+
# ----------------------------------
-
+
def setConnectionName(self, name):
self.connectionName = name
# Time to send a register for channel message to the msgDirector
datagram = PyDatagram()
- # datagram.addServerControlHeader(CONTROL_SET_CON_NAME)
+ # datagram.addServerControlHeader(CONTROL_SET_CON_NAME)
datagram.addInt8(1)
datagram.addChannel(CONTROL_MESSAGE)
datagram.addUint16(CONTROL_SET_CON_NAME)
-
+
datagram.addString(name)
self.send(datagram)
@@ -1177,11 +1172,11 @@ def setConnectionURL(self, url):
self.connectionURL = url
# Time to send a register for channel message to the msgDirector
datagram = PyDatagram()
- # datagram.addServerControlHeader(CONTROL_SET_CON_NAME)
+ # datagram.addServerControlHeader(CONTROL_SET_CON_NAME)
datagram.addInt8(1)
datagram.addChannel(CONTROL_MESSAGE)
datagram.addUint16(CONTROL_SET_CON_URL)
-
+
datagram.addString(url)
self.send(datagram)
@@ -1198,7 +1193,7 @@ def deleteObjects(self):
def allocateChannel(self):
channel=self.channelAllocator.allocate()
if channel==-1:
- raise RuntimeError, "channelAllocator.allocate() is out of channels"
+ raise RuntimeError("channelAllocator.allocate() is out of channels")
if self.channelAllocator.fractionUsed()>0.75:
# There is some debate about how bad it is to run out of
# channels. Being ignorant about what exactly will happen
@@ -1214,7 +1209,7 @@ def allocateChannel(self):
# of freed ids and sleep or flag an error as apropriate. See him
# for details (esp. if you want to write a cross-platform version
# of said feature).
- raise RuntimeError, "Dangerously low on channels."
+ raise RuntimeError("Dangerously low on channels.")
# Sanity check
assert (channel >= self.minChannel) and (channel <= self.maxChannel)
@@ -1224,12 +1219,12 @@ def allocateChannel(self):
self.debug_dictionary = {}
__builtins__["debug_dictionary"] = self.debug_dictionary
- for id in self.debug_dictionary.keys():
- if not self.doId2do.has_key(id):
- print "--------------------- Not In DOID table"
- print id
+ for id in list(self.debug_dictionary.keys()):
+ if id not in self.doId2do:
+ print("--------------------- Not In DOID table")
+ print(id)
#traceback.print_list(self.debug_dictionary[id])
- print self.debug_dictionary[id]
+ print(self.debug_dictionary[id])
del self.debug_dictionary[id] # never report it again ..
self.debug_dictionary[channel] = traceback.extract_stack(None,7)
@@ -1255,7 +1250,7 @@ def getMaxDynamicZone(self):
def allocateZone(self):
zoneId=self.zoneAllocator.allocate()
if zoneId==-1:
- raise RuntimeError, "zoneAllocator.allocate() is out of zoneIds"
+ raise RuntimeError("zoneAllocator.allocate() is out of zoneIds")
# Sanity check
assert (zoneId >= self.minZone) and (zoneId <= self.maxZone)
return zoneId
@@ -1301,7 +1296,7 @@ def sendClearOwnerDoId(self, doId):
doId, self.ourChannel, STATESERVER_OBJECT_SET_OWNER_RECV)
datagram.addChannel(0)
self.send(datagram)
-
+
def sendSetZone(self, distobj, zoneId):
self.notify.error("non-district types should not call sendSetZone")
@@ -1321,7 +1316,7 @@ def getRequestDeletedDOs(self):
# returns list of (obj, age of delete request), sorted by descending age
response = []
now = globalClock.getRealTime()
- for obj, requestTime in self._requestDeletedDOs.values():
+ for obj, requestTime in list(self._requestDeletedDOs.values()):
# calculate how long it has been since delete was requested
age = now - requestTime
index = 0
@@ -1337,7 +1332,7 @@ def requestDelete(self, distobj):
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
- distobj.doId, self.ourChannel, STATESERVER_OBJECT_DELETE_RAM)
+ distobj.doId, self.ourChannel, STATESERVER_OBJECT_DELETE_RAM)
# The Id of the object in question
datagram.addUint32(distobj.doId)
self.send(datagram)
@@ -1347,7 +1342,7 @@ def requestDeleteDoId(self, doId):
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
- doId, self.ourChannel, STATESERVER_OBJECT_DELETE_RAM)
+ doId, self.ourChannel, STATESERVER_OBJECT_DELETE_RAM)
# The Id of the object in question
datagram.addUint32(doId)
self.send(datagram)
@@ -1374,7 +1369,7 @@ def _handleDatabaseGenerateResponse(self, di):
(context, doId))
messenger.send(
self.getDatabaseGenerateResponseEvent(context), [doId])
-
+
def getDatabaseIdForClassName(self, className):
assert 0
# You probably want to override this to return something better.
@@ -1408,14 +1403,14 @@ def requestDatabaseGenerate(
# (classId, context))
if ownerChannel == 0 and ownerAvId is not None:
ownerChannel = (1<<32) + ownerAvId
- if self.dclassesByNumber.has_key(classId):
+ if classId in self.dclassesByNumber:
dclass = self.dclassesByNumber[classId]
else:
- if self.dclassesByName.has_key(classId):
+ if classId in self.dclassesByName:
dclass = self.dclassesByName[classId]
- elif self.dclassesByName.has_key(classId+self.dcSuffix):
+ elif classId+self.dcSuffix in self.dclassesByName:
dclass = self.dclassesByName[classId+self.dcSuffix]
- elif self.dclassesByName.has_key(classId+'AI'):
+ elif classId+'AI' in self.dclassesByName:
dclass = self.dclassesByName[classId+'AI']
else:
self.notify.warning("dclass not found %s"%(classId,))
@@ -1435,7 +1430,7 @@ def requestDatabaseGenerate(
self.send(dg)
else:
packer = DCPacker()
- packer.rawPackUint8(1)
+ packer.rawPackUint8(1)
packer.rawPackUint64(databaseId)
packer.rawPackUint64(self.ourChannel)
packer.rawPackUint16(
@@ -1463,7 +1458,7 @@ def requestDatabaseGenerate(
packer.packDefaultValue()
else:
if not field.packArgs(packer, value):
- raise StandardError
+ raise Exception
packer.endPack()
else:
value = values.get(field.getName(), None)
@@ -1487,18 +1482,18 @@ def requestDatabaseGenerate(
packer.endPack()
if packer.hadError():
- raise StandardError
+ raise Exception
dg = Datagram(packer.getString())
self.send(dg)
-
+
def lostConnection(self):
ConnectionRepository.lostConnection(self)
sys.exit()
def handleDatagram(self, di):
if self.notify.getDebug():
- print "AIRepository received datagram:"
+ print("AIRepository received datagram:")
di.getDatagram().dumpHex(ostream)
channel=self.getMsgChannel()
@@ -1526,7 +1521,7 @@ def sendAnotherGenerate(self, distObj, toChannel):
distObj, distObj.doId, distObj.parentId, distObj.zoneId,
toChannel, self.ourChannel, [])
self.send(dg)
-
+
def generateWithRequired(self, distObj, parentId, zoneId, optionalFields=[]):
assert self.notify.debugStateCall(self)
# Assign it an id
@@ -1552,7 +1547,7 @@ def generateWithRequiredAndId(
self.addDOToTables(distObj, location = (parentId,zoneId))
# Send a generate message
distObj.sendGenerateWithRequired(self, parentId, zoneId, optionalFields)
-
+
def queryObjectAll(self, doId, context=0):
"""
Get a one-time snapshot look at the object.
@@ -1561,7 +1556,7 @@ def queryObjectAll(self, doId, context=0):
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
- doId, self.ourChannel, STATESERVER_QUERY_OBJECT_ALL)
+ doId, self.ourChannel, STATESERVER_QUERY_OBJECT_ALL)
# A context that can be used to index the response if needed
datagram.addUint32(context)
self.send(datagram)
@@ -1573,14 +1568,14 @@ def queryObjectZoneIds(self, stateServerId, obj2ZoneDict):
# { objId : [zoneId, zoneId, ...],
# objId : [zoneId, zoneId, ...],
# }
- assert self.notify.debugStateCall(self)
+ assert self.notify.debugStateCall(self)
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
stateServerId, self.ourChannel, STATESERVER_QUERY_ZONE_OBJECT_ALL)
- numObjs = len(obj2ZoneDict.keys())
+ numObjs = len(list(obj2ZoneDict.keys()))
datagram.addUint16(numObjs)
- for objId, zoneIds in obj2ZoneDict.values():
+ for objId, zoneIds in list(obj2ZoneDict.values()):
datagram.addUint32(objId)
datagram.addUint16(len(zoneIds))
for zoneId in zoneIds:
@@ -1593,7 +1588,7 @@ def queryObjectZoneIds(self, stateServerId, obj2ZoneDict):
self.flush()
def queryObjectChildrenLocal(self, parentId, context=0):
- assert self.notify.debugStateCall(self)
+ assert self.notify.debugStateCall(self)
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
@@ -1627,7 +1622,7 @@ def queryObjectFieldId(self, doId, fieldId, context=0):
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
- doId, self.ourChannel, STATESERVER_OBJECT_QUERY_FIELD)
+ doId, self.ourChannel, STATESERVER_OBJECT_QUERY_FIELD)
datagram.addUint32(doId)
datagram.addUint16(fieldId)
# A context that can be used to index the response if needed
@@ -1646,7 +1641,7 @@ def queryObjectFieldIds(self, doId, fieldIds, context=0):
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
- doId, self.ourChannel, STATESERVER_OBJECT_QUERY_FIELDS)
+ doId, self.ourChannel, STATESERVER_OBJECT_QUERY_FIELDS)
datagram.addUint32(doId)
datagram.addUint32(context)
for x in fieldIds:
@@ -1665,7 +1660,7 @@ def queryObjectStringFieldIds(self, dbId, objString, fieldIds, context=0):
# Create a message
dg = PyDatagram()
dg.addServerHeader(
- dbId, self.ourChannel, STATESERVER_OBJECT_QUERY_FIELDS_STRING)
+ dbId, self.ourChannel, STATESERVER_OBJECT_QUERY_FIELDS_STRING)
dg.addString(objString)
dg.addUint32(context)
for x in fieldIds:
@@ -1753,9 +1748,9 @@ def queryObjectFields(self, dclassName, fieldNames, doId, context=0):
self.queryObjectFieldIds(doId, fieldIds, context)
else:
assert self.notify.error(
- "queryObjectFields invalid field in %s, %s"%(doId, `fieldNames`))
-
-
+ "queryObjectFields invalid field in %s, %s"%(doId, repr(fieldNames)))
+
+
def requestDistributedObject(self, doId):
"""
Ask for the object to be added to the private
@@ -1764,7 +1759,7 @@ def requestDistributedObject(self, doId):
Normally a query object all does not actually enter the object
returned into the doId2do table. This function will change a query
request to a distributed object that is part of the normal set of
- objects on this server.
+ objects on this server.
"""
assert self.notify.debugCall()
distObj = self.doId2do.get(doId)
@@ -1778,7 +1773,7 @@ def requestDistributedObject(self, doId):
self.distributedObjectRequests.add(doId)
context=self.allocateContext()
self.acceptOnce(
- "doRequestResponse-%s"%(context,),
+ "doRequestResponse-%s"%(context,),
self.postGenerate, [])
self.registerForChannel(doId)
self.queryObjectAll(doId, context)
@@ -1788,7 +1783,7 @@ def setAIReceiver(self, objectId, aiChannel=None):
# Create a message
datagram = PyDatagram()
datagram.addServerHeader(
- self.ourChannel, self.ourChannel, STATESERVER_ADD_AI_RECV)
+ self.ourChannel, self.ourChannel, STATESERVER_ADD_AI_RECV)
# The Id of the object in question
datagram.addUint32(objectId)
if aiChannel is None:
@@ -1859,7 +1854,7 @@ def getAvatarIdFromSender(self):
"""
only works on the dc updates from the client agent
"""
- return self.getMsgSender() & 0xffffffffL
+ return self.getMsgSender() & 0xffffffff
def getSenderReturnChannel(self):
return self.getMsgSender()
@@ -1871,43 +1866,43 @@ def taskManagerDoYieldNetwork(self , frameStartTime, nextScheuledTaksTime):
minFinTime = frameStartTime + self.MaxEpockSpeed
if nextScheuledTaksTime > 0 and nextScheuledTaksTime < minFinTime:
minFinTime = nextScheuledTaksTime
-
- self.networkBasedReaderAndYielder(self.handleDatagram,globalClock,minFinTime)
+
+ self.networkBasedReaderAndYielder(self.handleDatagram,globalClock,minFinTime)
if not self.isConnected():
self.stopReaderPollTask()
self.lostConnection()
-
- ###############################################################
+
+ ###############################################################
# Optimized version of old behavior..
def readerPollUntilEmpty(self, task):
- self.checkDatagramAi(self.handleDatagram)
+ self.checkDatagramAi(self.handleDatagram)
if not self.isConnected():
self.stopReaderPollTask()
self.lostConnection()
return Task.cont
-
- ###############################################################
+
+ ###############################################################
# This can be used to do time based yielding instead of the sleep task.
def taskManagerDoYield(self , frameStartTime, nextScheuledTaksTime):
minFinTime = frameStartTime + self.MaxEpockSpeed
if nextScheuledTaksTime > 0 and nextScheuledTaksTime < minFinTime:
minFinTime = nextScheuledTaksTime
-
+
delta = minFinTime - globalClock.getRealTime()
while(delta > 0.002):
- time.sleep(delta)
+ time.sleep(delta)
delta = minFinTime - globalClock.getRealTime()
-
-
- ###############################################################
+
+
+ ###############################################################
# This can be used to do time based yielding instead of the sleep task.
def startReaderPollTask(self):
if not self.AIRunningNetYield:
ConnectionRepository.startReaderPollTask(self)
- else:
- print '########## startReaderPollTask New '
+ else:
+ print('########## startReaderPollTask New ')
self.stopReaderPollTask()
self.accept(CConnectionRepository.getOverflowEventName(),self.handleReaderOverflow)
diff --git a/otp/src/ai/AIZoneData.py b/otp/src/ai/AIZoneData.py
index 1d299657..8d5e4f51 100644
--- a/otp/src/ai/AIZoneData.py
+++ b/otp/src/ai/AIZoneData.py
@@ -50,7 +50,7 @@ def __str__(self):
output += '\n'
totalColliders = 0
totalTraversers = 0
- for currCollTrav in self._collTravs.values():
+ for currCollTrav in list(self._collTravs.values()):
totalTraversers += 1
totalColliders += currCollTrav.getNumColliders()
output += 'Num traversers: %s Num total colliders: %s'%(totalTraversers,totalColliders)
@@ -128,7 +128,7 @@ def getCollTrav(self, name=None):
self._collTravs[name] = CollisionTraverser('cTrav-%s-%s-%s' % (name, self._parentId, self._zoneId))
return self._collTravs[name]
def removeCollTrav(self, name):
- if (self._collTravs.has_key(name)):
+ if (name in self._collTravs):
del self._collTravs[name]
def _getCTravTaskName(self, name=None):
@@ -216,7 +216,7 @@ def __init__(self):
# table of (parentId, zoneId) -> AIZoneDataObj
self._zone2data = {}
def destroy(self):
- for zone, data in self._zone2data.items():
+ for zone, data in list(self._zone2data.items()):
data.destroy()
del self._zone2data
def hasDataForZone(self, parentId, zoneId):
diff --git a/otp/src/ai/BanManagerAI.py b/otp/src/ai/BanManagerAI.py
index 8dea8f57..cad0a075 100644
--- a/otp/src/ai/BanManagerAI.py
+++ b/otp/src/ai/BanManagerAI.py
@@ -3,7 +3,7 @@
# Purpose: Module to ban avatars while inside the game and kick
# them out of the game
#################################################################
-import urllib
+import urllib.request, urllib.parse, urllib.error
import os
from pandac.PandaModules import HTTPClient, Ramfile
from direct.directnotify import DirectNotifyGlobal
@@ -39,7 +39,7 @@ def ban(self, avatarId, dislid, comment):
parameters += "&event_name=%s" % self.EventName
commentWithAvatarId = "avId-%s " % avatarId
commentWithAvatarId += comment
- parameters += "&comments=%s" % urllib.quote(str(commentWithAvatarId))
+ parameters += "&comments=%s" % urllib.parse.quote(str(commentWithAvatarId))
# get the base ban url from the environment variable first
baseUrlToUse = self.BanUrl
diff --git a/otp/src/ai/GarbageLeakServerEventAggregator.py b/otp/src/ai/GarbageLeakServerEventAggregator.py
index 4a30759e..fd6945c9 100644
--- a/otp/src/ai/GarbageLeakServerEventAggregator.py
+++ b/otp/src/ai/GarbageLeakServerEventAggregator.py
@@ -31,7 +31,7 @@ def _stopSending(self):
self._doLaterName = None
def _sendLeaks(self, task=None):
- for desc, curNum in self._curLeakDesc2num.iteritems():
+ for desc, curNum in self._curLeakDesc2num.items():
# only send the number of occurrences of each leak that
# we haven't already sent
self._sentLeakDesc2num.setdefault(desc, 0)
diff --git a/otp/src/ai/GarbageLeakServerEventAggregatorAI.py b/otp/src/ai/GarbageLeakServerEventAggregatorAI.py
index b00ad33b..9e9a4a1e 100644
--- a/otp/src/ai/GarbageLeakServerEventAggregatorAI.py
+++ b/otp/src/ai/GarbageLeakServerEventAggregatorAI.py
@@ -50,7 +50,7 @@ def _stopSending(self):
def _sendLeaks(self, task=None):
# only send the number of occurences of each leak that
# we haven't already sent
- for desc, curNum in self._curLeakDesc2num.iteritems():
+ for desc, curNum in self._curLeakDesc2num.items():
self._sentLeakDesc2num.setdefault(desc, 0)
num = curNum - self._sentLeakDesc2num[desc]
if num > 0:
@@ -79,7 +79,7 @@ def _stopSendingClientLeaks(self):
def _sendClientLeaks(self, task=None):
# only send the number of occurences of each leak that
# we haven't already sent
- for desc, curNum in self._curClientDesc2num.iteritems():
+ for desc, curNum in self._curClientDesc2num.items():
self._sentClientDesc2num.setdefault(desc, 0)
num = curNum - self._sentClientDesc2num[desc]
if num > 0:
diff --git a/otp/src/ai/MagicWordManager.py b/otp/src/ai/MagicWordManager.py
index 32542273..02f314da 100644
--- a/otp/src/ai/MagicWordManager.py
+++ b/otp/src/ai/MagicWordManager.py
@@ -75,7 +75,7 @@ def getWordIs(self, word):
def doMagicWord(self, word, avId, zoneId):
wordIs = self.getWordIs(word)
- print word
+ print(word)
if wordIs("~oobe"):
base.oobe()
elif wordIs("~oobeCull"):
@@ -180,7 +180,7 @@ def doMagicWord(self, word, avId, zoneId):
elif wordIs("~badname"):
# ~badname with an argument becomes ~for ... ~badname
word = "~for %s ~badname" % (word[9:])
- print "word is %s" % (word)
+ print("word is %s" % (word))
self.forAnother(word, avId, zoneId)
elif wordIs('~avId'):
@@ -448,11 +448,11 @@ def doMagicWord(self, word, avId, zoneId):
type2count.setdefault(tn, 0)
type2count[tn] += 1
count2type = invertDictLossless(type2count)
- counts = count2type.keys()
+ counts = list(count2type.keys())
counts.sort()
counts.reverse()
for count in counts:
- print '%s: %s' % (count, count2type[count])
+ print('%s: %s' % (count, count2type[count]))
self.setMagicWordResponse('~aiobjecthg complete')
elif wordIs('~containers'):
@@ -589,11 +589,11 @@ def leakTask(task):
self.setMagicWordResponse('logging client distributed object count...')
elif wordIs('~taskmgr'):
- print taskMgr
+ print(taskMgr)
self.setMagicWordResponse('logging client taskMgr...')
elif wordIs('~jobmgr'):
- print jobMgr
+ print(jobMgr)
self.setMagicWordResponse('logging client jobMgr...')
elif wordIs('~jobtime'):
@@ -636,7 +636,7 @@ def leakTask(task):
self.setMagicWordResponse(response)
elif wordIs('~messenger'):
- print messenger
+ print(messenger)
self.setMagicWordResponse('logging client messenger...')
elif wordIs('~clientcrash'):
@@ -689,7 +689,7 @@ def leakTask(task):
##############
ts = time.time()
- for i in xrange(1000000):
+ for i in range(1000000):
### code to be timed ###
p.set(1,2,3)
@@ -698,7 +698,7 @@ def leakTask(task):
tf = time.time()
dt = tf - ts
response = 'prof(%s): %s secs' % (name, dt)
- print response
+ print(response)
self.setMagicWordResponse(response)
elif wordIs('~gptc'):
@@ -815,7 +815,7 @@ def identifyDistributedObjects(self, name):
result = []
lowerName = string.lower(name)
- for obj in self.cr.doId2do.values():
+ for obj in list(self.cr.doId2do.values()):
className = obj.__class__.__name__
try:
name = obj.getName()
@@ -905,7 +905,7 @@ def getCSBitmask(self, str):
# might not be an integer. Is there a better way
# to check?
bitmask |= BitMask32.bit(int(w))
- print bitmask
+ print(bitmask)
except ValueError:
invalid += " " + w
if invalid:
@@ -1112,5 +1112,5 @@ def garbageReportDone(self, garbageReport):
def magicWord(mw):
messenger.send('magicWord', [mw])
-import __builtin__
-__builtin__.magicWord = magicWord
+import builtins
+builtins.magicWord = magicWord
diff --git a/otp/src/ai/MagicWordManagerAI.py b/otp/src/ai/MagicWordManagerAI.py
index 9cdbab0e..044c7ded 100644
--- a/otp/src/ai/MagicWordManagerAI.py
+++ b/otp/src/ai/MagicWordManagerAI.py
@@ -1,4 +1,4 @@
-from AIBaseGlobal import *
+from .AIBaseGlobal import *
from pandac.PandaModules import *
from direct.distributed import DistributedObjectAI
from direct.directnotify import DirectNotifyGlobal
@@ -6,11 +6,11 @@
from direct.showbase import PythonUtil, GarbageReport, ContainerReport, MessengerLeakDetector
from direct.showbase import ContainerLeakDetector
from direct.showbase.PythonUtil import Functor, DelayedCall, formatTimeCompact
-import fpformat
import string
import time
import re
from direct.task import Task
+from otp.avatar.DistributedPlayerAI import DistributedPlayerAI
class MagicWordManagerAI(DistributedObjectAI.DistributedObjectAI):
notify = DirectNotifyGlobal.directNotify.newCategory("MagicWordManagerAI")
@@ -28,7 +28,7 @@ class MagicWordManagerAI(DistributedObjectAI.DistributedObjectAI):
def __init__(self, air):
DistributedObjectAI.DistributedObjectAI.__init__(self, air)
- def setMagicWord(self, word, avId, zoneId, signature):
+ def setMagicWord(self, word, avId, zoneId):
senderId = self.air.getAvatarIdFromSender()
sender = self.air.doId2do.get(senderId, None)
@@ -40,9 +40,9 @@ def setMagicWord(self, word, avId, zoneId, signature):
else:
sender = "Unknown avatar %d" % (senderId)
- self.notify.info("%s (%s) just said the magic word: %s" % (sender, signature, word))
- self.air.writeServerEvent('magic-word', senderId, "%s|%s|%s" % (sender, signature, word))
- if self.air.doId2do.has_key(avId):
+ self.notify.info("%s just said the magic word: %s" % (sender, word))
+ self.air.writeServerEvent('magic-word', senderId, "%s|%s" % (sender, word))
+ if avId in self.air.doId2do:
av = self.air.doId2do[avId]
try:
@@ -73,7 +73,7 @@ def doMagicWord(self, word, av, zoneId, senderId):
response = "No name."
else:
av.d_setName(name)
-
+
elif wordIs("~badname"):
self.notify.warning("Renaming inappropriately named toon %s (doId %d)." % (av.name, av.doId))
name = "toon%d" % (av.doId % 1000000)
@@ -115,7 +115,7 @@ def doMagicWord(self, word, av, zoneId, senderId):
elif wordIs("~who all"):
str = ''
- for obj in self.air.doId2do.values():
+ for obj in list(self.air.doId2do.values()):
if hasattr(obj, "accountName"):
str += '%s %s\n' % (obj.accountName, obj.name)
if not str:
@@ -131,7 +131,7 @@ def doMagicWord(self, word, av, zoneId, senderId):
self.notify.debug("Only 1 hp for " + av.name)
elif wordIs("~sad"):
av.b_setHp(0)
- self.notify.debug("Only 0 hp for " + av.name)
+ self.notify.debug("Only 0 hp for " + av.name)
elif wordIs("~dead"):
av.takeDamage(av.hp)
self.notify.debug(av.name + " is dead")
@@ -205,7 +205,7 @@ def doMagicWord(self, word, av, zoneId, senderId):
elif wordIs('~ud'):
# Execute an arbitrary Python command on the ud.
- print word
+ print(word)
channel,command = re.match("~ud ([0-9]+) (.+)", word).groups()
channel = int(channel)
if(simbase.air.doId2do.get(channel)):
@@ -247,11 +247,11 @@ def doMagicWord(self, word, av, zoneId, senderId):
type2count.setdefault(tn, 0)
type2count[tn] += 1
count2type = invertDictLossless(type2count)
- counts = count2type.keys()
+ counts = list(count2type.keys())
counts.sort()
counts.reverse()
for count in counts:
- print '%s: %s' % (count, count2type[count])
+ print('%s: %s' % (count, count2type[count]))
self.down_setMagicWordResponse(senderId, '~aiobjecthg complete')
elif wordIs('~aicrash'):
@@ -399,11 +399,11 @@ def leakTask(task):
self.down_setMagicWordResponse(senderId, 'logging AI distributed object count...')
elif wordIs('~aitaskmgr'):
- print taskMgr
+ print(taskMgr)
self.down_setMagicWordResponse(senderId, 'logging AI taskMgr...')
elif wordIs('~aijobmgr'):
- print jobMgr
+ print(jobMgr)
self.down_setMagicWordResponse(senderId, 'logging AI jobMgr...')
elif wordIs('~aijobtime'):
@@ -447,7 +447,7 @@ def leakTask(task):
self.down_setMagicWordResponse(senderId, response)
elif wordIs('~aimessenger'):
- print messenger
+ print(messenger)
self.down_setMagicWordResponse(senderId, 'logging AI messenger...')
elif wordIs('~requestdeleted'):
@@ -481,6 +481,17 @@ def leakTask(task):
else:
self.down_setMagicWordResponse(senderId, 'error')
+ elif wordIs('~system') or wordIs('~smsg'):
+ args = word.split()
+ message = ' '.join(x for x in args[1:])
+
+ for doId, do in list(simbase.air.doId2do.items()):
+ if isinstance(do, DistributedPlayerAI):
+ if doId != simbase.air.districtId and do.isPlayerControlled():
+ do.d_setSystemMessage(0, f'{do.getName()}: {message}')
+
+ self.down_setMagicWordResponse(senderId, 'Broadcasted message to shard.')
+
else:
# The word is not an AI-side magic word. If the sender is
# different than the target avatar, then pass the magic
@@ -511,7 +522,7 @@ def doDna(self, word, av, zoneId, senderId):
response = "%s" % (dna.asTuple(),)
self.down_setMagicWordResponse(senderId, response)
- """
+ """
def _handleGPTCfinished(self, senderId, ct, gptcJob):
self.down_setMagicWordResponse(senderId, 'aigptc(%s) finished' % ct)
@@ -522,7 +533,7 @@ def _handleGPTCNfinished(self, senderId, cn, gptcnJob):
def __execMessage(self, message):
if not self.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
- exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+ exec('from pandac.PandaModules import *', globals(), self.ExecNamespace)
#self.importExecNamespace()
# Now try to evaluate the expression using ChatInputNormal.ExecNamespace as
@@ -535,7 +546,7 @@ def __execMessage(self, message):
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
- exec message in globals(), self.ExecNamespace
+ exec(message, globals(), self.ExecNamespace)
return 'ok'
except:
exception = sys.exc_info()[0]
@@ -571,7 +582,7 @@ def setWho(self, avIds):
str += '%s %s\n' % (obj.accountName, obj.name)
if not str:
str = "No avatars."
-
+
senderId = self.air.getAvatarIdFromSender()
self.down_setMagicWordResponse(senderId, str)
@@ -593,5 +604,5 @@ def magicWord(mw, av=None, zoneId=0, senderId=0):
av = FakeAv(senderId)
simbase.air.magicWordManager.doMagicWord(mw, av, zoneId, senderId)
-import __builtin__
-__builtin__.magicWord = magicWord
+import builtins
+builtins.magicWord = magicWord
diff --git a/otp/src/ai/TimeManager.py b/otp/src/ai/TimeManager.py
index 61620dac..6a8cc74f 100644
--- a/otp/src/ai/TimeManager.py
+++ b/otp/src/ai/TimeManager.py
@@ -313,7 +313,7 @@ def sendCpuInfo(self):
'%0.03f,%0.03f' % cpuSpeed,
'%d,%d' % (numCpuCores, numLogicalCpus))
- print "cpu info: %s" % (info)
+ print("cpu info: %s" % (info))
self.sendUpdate("setCpuInfo", [info, cacheStatus])
@@ -418,7 +418,7 @@ def d_setFrameRate(self, fps, deviation, numAvs,
pageFaultCount, '%s.%d.%d.%d' % osInfo, '%0.03f,%0.03f' % cpuSpeed,
'%d,%d' % (numCpuCores, numLogicalCpus),
apiName)
- print "frame rate: %s" % (info)
+ print("frame rate: %s" % (info))
self.sendUpdate("setFrameRate", [
fps, deviation, numAvs, locationCode,
@@ -478,7 +478,7 @@ def getMacOsInfo(self, defaultOsInfo):
bugfix, # what do we put for platform id?
major,
minor)
- except Exception, e:
+ except Exception as e:
self.notify.debug("getMacOsInfo %s" % str(e))
self.notify.debug('getMacOsInfo returning %s' % str(result))
return result
diff --git a/otp/src/ai/TimeManagerAI.py b/otp/src/ai/TimeManagerAI.py
index 8b432ff7..6103de27 100644
--- a/otp/src/ai/TimeManagerAI.py
+++ b/otp/src/ai/TimeManagerAI.py
@@ -1,4 +1,4 @@
-from AIBaseGlobal import *
+from .AIBaseGlobal import *
from pandac.PandaModules import *
from direct.distributed.ClockDelta import *
from direct.task import Task
diff --git a/otp/src/avatar/AvatarPanel.py b/otp/src/avatar/AvatarPanel.py
index b0cb5ff7..7b0a7b78 100644
--- a/otp/src/avatar/AvatarPanel.py
+++ b/otp/src/avatar/AvatarPanel.py
@@ -1,7 +1,7 @@
from pandac.PandaModules import *
from direct.gui.DirectGui import *
from direct.showbase import DirectObject
-import Avatar
+from . import Avatar
from direct.distributed import DistributedObject
class AvatarPanel(DirectObject.DirectObject):
@@ -42,7 +42,7 @@ def __init__(self, avatar, FriendsListPanel = None):
# If we have an actual DistributedObject for this avatar, use
# that one instead of whatever we're given.
- if base.cr.doId2do.has_key(self.avId):
+ if self.avId in base.cr.doId2do:
self.avatar = base.cr.doId2do[self.avId]
else:
self.avDisableName = None
diff --git a/otp/src/avatar/DistributedAvatar.py b/otp/src/avatar/DistributedAvatar.py
index a7a7c4cb..1ffa77a3 100644
--- a/otp/src/avatar/DistributedAvatar.py
+++ b/otp/src/avatar/DistributedAvatar.py
@@ -17,8 +17,8 @@
import random
-from Avatar import Avatar
-import AvatarDNA
+from .Avatar import Avatar
+from . import AvatarDNA
class DistributedAvatar(DistributedActor, Avatar):
diff --git a/otp/src/avatar/DistributedAvatarAI.py b/otp/src/avatar/DistributedAvatarAI.py
index 65b6a3e3..dac906db 100644
--- a/otp/src/avatar/DistributedAvatarAI.py
+++ b/otp/src/avatar/DistributedAvatarAI.py
@@ -53,14 +53,14 @@ def getHp(self):
return self.hp
#----------------------------------
-
+
def b_setLocationName(self, locationName):
self.d_setLocationName(locationName)
self.setLocationName(locationName)
def d_setLocationName(self, locationName):
pass
-
+
def setLocationName(self, locationName):
self.locationName = locationName
@@ -68,7 +68,7 @@ def getLocationName(self):
return self.locationName
#----------------------------------
-
+
def b_setActivity(self, activity):
self.d_setActivity(activity)
self.setActivity(activity)
@@ -83,7 +83,7 @@ def getActivity(self):
return self.activity
#----------------------------------
-
+
def toonUp(self, num):
# The default toonup is HP recharge. If other games want
# a more involved toonup, they can redefine this function
@@ -94,10 +94,13 @@ def toonUp(self, num):
def getRadius(self):
return OTPGlobals.AvatarDefaultRadius
-
+
def checkAvOnShard(self, avId):
senderId = self.air.getAvatarIdFromSender()
onShard = False
if simbase.air.doId2do.get(avId):
onShard = True
self.sendUpdateToAvatarId(senderId,"confirmAvOnShard",[avId, onShard])
+
+ def d_friendsNotify(self, avId, status):
+ self.sendUpdate("friendsNotify", [avId, status])
diff --git a/otp/src/avatar/DistributedPlayer.py b/otp/src/avatar/DistributedPlayer.py
index 6183dd13..1b2bd66e 100644
--- a/otp/src/avatar/DistributedPlayer.py
+++ b/otp/src/avatar/DistributedPlayer.py
@@ -172,7 +172,7 @@ def displayWhisper(self, fromId, chatString, whisperType):
name from within setWhisper and expect the derived function to
override it.
"""
- print "Whisper type %s from %s: %s" % (whisperType, fromId, chatString)
+ print("Whisper type %s from %s: %s" % (whisperType, fromId, chatString))
def displayWhisperPlayer(self, playerId, chatString, whisperType):
@@ -182,7 +182,7 @@ def displayWhisperPlayer(self, playerId, chatString, whisperType):
name from within setWhisper and expect the derived function to
override it.
"""
- print "WhisperPlayer type %s from %s: %s" % (whisperType, playerId, chatString)
+ print("WhisperPlayer type %s from %s: %s" % (whisperType, playerId, chatString))
### setWhisperSC ###
@@ -273,7 +273,7 @@ def whisperSCEmoteTo(self, emoteId, sendToId, toPlayer):
Sends a speedchat whisper message to the indicated
toon, prefixed with our own name.
"""
- print("whisperSCEmoteTo %s %s %s" % (emoteId, sendToId, toPlayer))
+ print(("whisperSCEmoteTo %s %s %s" % (emoteId, sendToId, toPlayer)))
if toPlayer:
base.cr.playerFriendsManager.sendSCEmoteWhisper(sendToId, emoteId)
return
@@ -366,7 +366,7 @@ def displayTalkWhisper(self, fromId, avatarName, chatString, mods):
name from within setWhisper and expect the derived function to
override it.
"""
- print "TalkWhisper from %s: %s" % (fromId, chatString)
+ print("TalkWhisper from %s: %s" % (fromId, chatString))
def scrubTalk(self, chat, mods):
"""
diff --git a/otp/src/avatar/DistributedPlayerAI.py b/otp/src/avatar/DistributedPlayerAI.py
index 4c5f6074..2a73c4d0 100644
--- a/otp/src/avatar/DistributedPlayerAI.py
+++ b/otp/src/avatar/DistributedPlayerAI.py
@@ -21,13 +21,6 @@ def announceGenerate(self):
DistributedAvatarAI.DistributedAvatarAI.announceGenerate(self)
self._doPlayerEnter()
- def _announceArrival(self):
- self.sendUpdate('arrivedOnDistrict', [self.air.districtId])
-
- def _announceExit(self):
- # clear out the 'arrivedOnDistrict' field
- self.sendUpdate('arrivedOnDistrict', [0])
-
def _sendExitServerEvent(self):
"""call this in your delete() function. This would be an
override of delete(), but player classes typically use
@@ -54,7 +47,7 @@ def delete(self):
def isPlayerControlled(self):
return True
-
+
def setLocation(self, parentId, zoneId, teleport=0):
DistributedAvatarAI.DistributedAvatarAI.setLocation(self, parentId, zoneId, teleport)
if self.isPlayerControlled():
@@ -65,14 +58,14 @@ def setLocation(self, parentId, zoneId, teleport=0):
self.air.writeServerEvent('suspicious', self.doId,
'invalid setLocation: (%s, %s)' % (parentId, zoneId))
self.requestDelete()
-
+
def _doPlayerEnter(self):
self.incrementPopulation()
- self._announceArrival()
+ simbase.air.sendShardInfo()
def _doPlayerExit(self):
- self._announceExit()
self.decrementPopulation()
+ simbase.air.sendShardInfo()
# override if you don't want to affect the population count for a
# particular PlayerAI
@@ -120,8 +113,11 @@ def setAccountName(self, accountName):
def getAccountName(self):
return self.accountName
- def setDISLid(self, id):
- self.DISLid = id
+ def setOwningAccount(self, accountId):
+ self.accountId = accountId
+
+ def getOwningAccount(self, accountId):
+ return self.accountId
def d_setFriendsList(self, friendsList):
self.sendUpdate("setFriendsList", [friendsList])
@@ -144,7 +140,7 @@ def extendFriendsList(self, friendId, friendCode):
for i in range(len(self.friendsList)):
friendPair = self.friendsList[i]
if friendPair[0] == friendId:
- # We did. Update the code.
+ # We did. Update the code.
self.friendsList[i] = (friendId, friendCode)
return
@@ -154,5 +150,4 @@ def extendFriendsList(self, friendId, friendCode):
# Note that if an avatar *breaks* a friendship, the AI never
# hears about it. So our friends list will not be 100%
# up-to-date, but it will at least be good enough for the
- # quest manager.
-
+ # quest manager.
\ No newline at end of file
diff --git a/otp/src/avatar/Emote.py b/otp/src/avatar/Emote.py
index 88894449..ddc132c5 100644
--- a/otp/src/avatar/Emote.py
+++ b/otp/src/avatar/Emote.py
@@ -17,7 +17,7 @@ def __init__(self):
def isEnabled(self, index):
# find the emotes index if we are given a string
- if isinstance(index, types.StringType):
+ if isinstance(index, bytes):
index = OTPLocalizer.EmoteFuncDict[index]
if self.emoteFunc == None:
diff --git a/otp/src/avatar/LocalAvatar.py b/otp/src/avatar/LocalAvatar.py
index c1601137..a8a61d3c 100644
--- a/otp/src/avatar/LocalAvatar.py
+++ b/otp/src/avatar/LocalAvatar.py
@@ -8,11 +8,11 @@
from direct.showbase.InputStateGlobal import inputState
from pandac.PandaModules import *
-import Avatar
+from . import Avatar
from direct.controls import ControlManager
-import DistributedAvatar
+from . import DistributedAvatar
from direct.task import Task
-import PositionExaminer
+from . import PositionExaminer
from otp.otpbase import OTPGlobals
from otp.otpbase import OTPRender
import math
@@ -921,20 +921,20 @@ def removeCameraPosition(self):
self.nextCameraPos(1)
def printCameraPositions(self):
- print '['
+ print('[')
for i in range(len(self.cameraPositions)):
self.printCameraPosition(i)
- print ','
- print ']'
+ print(',')
+ print(']')
def printCameraPosition(self, index):
cp = self.cameraPositions[index]
- print '(Point3(%0.2f, %0.2f, %0.2f),' % (cp[0][0],cp[0][1],cp[0][2])
- print 'Point3(%0.2f, %0.2f, %0.2f),' % (cp[1][0],cp[1][1],cp[1][2])
- print 'Point3(%0.2f, %0.2f, %0.2f),' % (cp[2][0],cp[2][1],cp[2][2])
- print 'Point3(%0.2f, %0.2f, %0.2f),' % (cp[3][0],cp[3][1],cp[3][2])
- print '%d,' % cp[4]
- print ')',
+ print('(Point3(%0.2f, %0.2f, %0.2f),' % (cp[0][0],cp[0][1],cp[0][2]))
+ print('Point3(%0.2f, %0.2f, %0.2f),' % (cp[1][0],cp[1][1],cp[1][2]))
+ print('Point3(%0.2f, %0.2f, %0.2f),' % (cp[2][0],cp[2][1],cp[2][2]))
+ print('Point3(%0.2f, %0.2f, %0.2f),' % (cp[3][0],cp[3][1],cp[3][2]))
+ print('%d,' % cp[4])
+ print(')', end=' ')
def posCamera(self, lerp, time):
"""posCamera(self, boolean, float)
@@ -1929,7 +1929,7 @@ def printCamPos(self):
node = base.camera.getParent()
pos = base.cam.getPos(node)
hpr = base.cam.getHpr(node)
- print 'cam pos = ',`pos`,', cam hpr = ',`hpr`
+ print('cam pos = ',repr(pos),', cam hpr = ',repr(hpr))
def d_broadcastPositionNow(self):
"""
diff --git a/otp/src/chat/ChatInputNormal.py b/otp/src/chat/ChatInputNormal.py
index 7ef5c2dc..981b4d0c 100644
--- a/otp/src/chat/ChatInputNormal.py
+++ b/otp/src/chat/ChatInputNormal.py
@@ -136,7 +136,7 @@ def __execMessage(self, message):
if not ChatInputNormal.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
ChatInputNormal.ExecNamespace = { }
- exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+ exec('from pandac.PandaModules import *', globals(), self.ExecNamespace)
self.importExecNamespace()
# Now try to evaluate the expression using ChatInputNormal.ExecNamespace as
@@ -149,7 +149,7 @@ def __execMessage(self, message):
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
- exec message in globals(), ChatInputNormal.ExecNamespace
+ exec(message, globals(), ChatInputNormal.ExecNamespace)
return 'ok'
except:
exception = sys.exc_info()[0]
diff --git a/otp/src/chat/ChatInputTyped.py b/otp/src/chat/ChatInputTyped.py
index 999138a1..cdb19cc8 100644
--- a/otp/src/chat/ChatInputTyped.py
+++ b/otp/src/chat/ChatInputTyped.py
@@ -178,7 +178,7 @@ def __execMessage(self, message):
if not ChatInputTyped.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
ChatInputTyped.ExecNamespace = { }
- exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+ exec('from pandac.PandaModules import *', globals(), self.ExecNamespace)
self.importExecNamespace()
# Now try to evaluate the expression using ChatInputTyped.ExecNamespace as
@@ -191,7 +191,7 @@ def __execMessage(self, message):
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
- exec message in globals(), ChatInputTyped.ExecNamespace
+ exec(message, globals(), ChatInputTyped.ExecNamespace)
return 'ok'
except:
exception = sys.exc_info()[0]
diff --git a/otp/src/chat/ChatInputWhiteList.py b/otp/src/chat/ChatInputWhiteList.py
index b9f8635f..93c7b15c 100644
--- a/otp/src/chat/ChatInputWhiteList.py
+++ b/otp/src/chat/ChatInputWhiteList.py
@@ -305,11 +305,11 @@ def importExecNamespace(self):
pass
def __execMessage(self, message):
- print ("_execMessage %s" % (message))
+ print(("_execMessage %s" % (message)))
if not ChatInputTyped.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
ChatInputTyped.ExecNamespace = { }
- exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+ exec('from pandac.PandaModules import *', globals(), self.ExecNamespace)
self.importExecNamespace()
# Now try to evaluate the expression using ChatInputTyped.ExecNamespace as
@@ -322,7 +322,7 @@ def __execMessage(self, message):
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
- exec message in globals(), ChatInputTyped.ExecNamespace
+ exec(message, globals(), ChatInputTyped.ExecNamespace)
return 'ok'
except:
exception = sys.exc_info()[0]
diff --git a/otp/src/chat/ChatInputWhiteListFrame.py b/otp/src/chat/ChatInputWhiteListFrame.py
index 28da44d5..993036a6 100644
--- a/otp/src/chat/ChatInputWhiteListFrame.py
+++ b/otp/src/chat/ChatInputWhiteListFrame.py
@@ -361,7 +361,7 @@ def __execMessage(self, message):
if not ChatInputTyped.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
ChatInputTyped.ExecNamespace = { }
- exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+ exec('from pandac.PandaModules import *', globals(), self.ExecNamespace)
self.importExecNamespace()
# Now try to evaluate the expression using ChatInputTyped.ExecNamespace as
@@ -374,7 +374,7 @@ def __execMessage(self, message):
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
- exec message in globals(), ChatInputTyped.ExecNamespace
+ exec(message, globals(), ChatInputTyped.ExecNamespace)
return 'ok'
except:
exception = sys.exc_info()[0]
diff --git a/otp/src/chat/ChatManager.py b/otp/src/chat/ChatManager.py
index e8151aea..99d1385f 100644
--- a/otp/src/chat/ChatManager.py
+++ b/otp/src/chat/ChatManager.py
@@ -465,7 +465,7 @@ def enterWhisper(self, avatarName, avatarId, playerId = None):
chatToToon = 1 #set to 0 to chat to player
online = 0
- if self.cr.doId2do.has_key(avatarId):
+ if avatarId in self.cr.doId2do:
# The avatar is online, and in fact, nearby.
online = 1
elif self.cr.isFriend(avatarId):
@@ -493,7 +493,7 @@ def enterWhisper(self, avatarName, avatarId, playerId = None):
## This is less true now, but still possible.
if playerId:
- if base.cr.playerFriendsManager.playerId2Info.has_key(playerId):
+ if playerId in base.cr.playerFriendsManager.playerId2Info:
playerInfo = base.cr.playerFriendsManager.playerId2Info.get(playerId)
playerName = playerInfo.playerName
online = 1
diff --git a/otp/src/chat/TalkAssistant.py b/otp/src/chat/TalkAssistant.py
index 3a4b06e9..4f6255cf 100644
--- a/otp/src/chat/TalkAssistant.py
+++ b/otp/src/chat/TalkAssistant.py
@@ -178,7 +178,7 @@ def addToHistoryDoId(self, message, doId, scrubbed = 0):
self.lastWhisperDoId = doId
self.lastWhisper = self.lastWhisperDoId
- if not self.historyByDoId.has_key(doId):
+ if doId not in self.historyByDoId:
self.historyByDoId[doId] = []
self.historyByDoId[doId].append(message)
@@ -186,7 +186,7 @@ def addToHistoryDoId(self, message, doId, scrubbed = 0):
self.doWhiteListWarning()
self.shownWhiteListWarning = 1
- if not self.floodDataByDoId.has_key(doId):
+ if doId not in self.floodDataByDoId:
self.floodDataByDoId[doId] = [0.0, self.stampTime(), message] #floodRating, lastTime, message
else:
oldTime = self.floodDataByDoId[doId][1]
@@ -219,7 +219,7 @@ def addToHistoryDISLId(self, message, dISLId, scrubbed = 0):
if (message.getTalkType() == TALK_ACCOUNT) and (dISLId != base.cr.accountDetailRecord.playerAccountId):
self.lastWhisperPlayerId = dISLId
self.lastWhisper = self.lastWhisperPlayerId
- if not self.historyByDISLId.has_key(dISLId):
+ if dISLId not in self.historyByDISLId:
self.historyByDISLId[dISLId] = []
self.historyByDISLId[dISLId].append(message)
@@ -348,7 +348,7 @@ def fillWithTestText(self):
def printHistoryComplete(self):
print("HISTORY COMPLETE")
for message in self.historyComplete:
- print("%s %s %s\n%s\n" % (message.getTimeStamp(), message.getSenderAvatarName(), message.getSenderAccountName(), message.getBody()))
+ print(("%s %s %s\n%s\n" % (message.getTimeStamp(), message.getSenderAvatarName(), message.getSenderAccountName(), message.getBody())))
####################################
# Exec-chat functions
@@ -359,11 +359,11 @@ def importExecNamespace(self):
pass
def execMessage(self, message):
- print ("execMessage %s" % (message))
+ print(("execMessage %s" % (message)))
if not TalkAssistant.ExecNamespace:
# Import some useful variables into the ExecNamespace initially.
TalkAssistant.ExecNamespace = { }
- exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+ exec('from pandac.PandaModules import *', globals(), self.ExecNamespace)
self.importExecNamespace()
# Now try to evaluate the expression using ChatInputTyped.ExecNamespace as
@@ -377,7 +377,7 @@ def execMessage(self, message):
# "import math". These aren't expressions, so eval()
# fails, but they can be exec'ed.
try:
- exec message in globals(), TalkAssistant.ExecNamespace
+ exec(message, globals(), TalkAssistant.ExecNamespace)
return "ok"
except:
exception = sys.exc_info()[0]
@@ -526,7 +526,7 @@ def receiveOpenTalk(self, avatarId, avatarName, accountId, accountName, message,
def receiveWhisperTalk(self, avatarId, avatarName, accountId, accountName, toId, toName, message, scrubbed = 0):
error = None
- print ("receiveWhisperTalk %s %s %s %s %s" % (avatarId, avatarName, accountId, accountName, message))
+ print(("receiveWhisperTalk %s %s %s %s %s" % (avatarId, avatarName, accountId, accountName, message)))
if (not avatarName) and (avatarId):
avatarName = self.findAvatarName(avatarId)
if (not accountName) and (accountId):
@@ -1017,7 +1017,7 @@ def sendGuildTalk(self, message):
# Guild chat is sent through the guildManager
base.cr.guildManager.sendTalk(message)
else:
- print "Guild chat error"
+ print("Guild chat error")
error = ERROR_NO_GUILD_CHAT
return error
@@ -1132,7 +1132,7 @@ def sendGuildSpeedChat(self, type, msgIndex):
if self.checkGuildSpeedChat():
base.cr.guildManager.sendSC(msgIndex)
else:
- print "Guild Speedchat error"
+ print("Guild Speedchat error")
error = ERROR_NO_GUILD_CHAT
return error
diff --git a/otp/src/distributed/CentralLogger.py b/otp/src/distributed/CentralLogger.py
index 54ed5b8a..add24eec 100644
--- a/otp/src/distributed/CentralLogger.py
+++ b/otp/src/distributed/CentralLogger.py
@@ -17,7 +17,7 @@ class CentralLogger(DistributedObjectGlobal):
def hasReportedPlayer(self, targetDISLId, targetAvId):
# Has this playerId, avatarId already been reported this session?
- return self.PlayersReportedThisSession.has_key((targetDISLId, targetAvId))
+ return (targetDISLId, targetAvId) in self.PlayersReportedThisSession
def reportPlayer(self, category, targetDISLId, targetAvId, description = "None"):
# You can only report another player once per session.
diff --git a/otp/src/distributed/DistributedDirectoryAI.py b/otp/src/distributed/DistributedDirectoryAI.py
index e0223b1f..28bc19ec 100644
--- a/otp/src/distributed/DistributedDirectoryAI.py
+++ b/otp/src/distributed/DistributedDirectoryAI.py
@@ -7,4 +7,16 @@ class DistributedDirectoryAI(DistributedObjectAI):
is still needed. It is used as a parent for the individual games.
The dc system uses the parenting rules as if this object existed.
"""
- pass
+ def __init__(self, air):
+ DistributedObjectAI.__init__(self, air)
+
+ self.name = ''
+
+ def setParentingRules(self, todo0, todo1):
+ pass
+
+ def setName(self, name):
+ self.name = name
+
+ def getName(self):
+ return self.name
\ No newline at end of file
diff --git a/otp/src/distributed/DistributedDistrict.py b/otp/src/distributed/DistributedDistrict.py
index 172f27b1..98a89217 100644
--- a/otp/src/distributed/DistributedDistrict.py
+++ b/otp/src/distributed/DistributedDistrict.py
@@ -24,7 +24,7 @@ def announceGenerate(self):
def delete(self):
if base.cr.distributedDistrict is self:
base.cr.distributedDistrict = None
- if self.cr.activeDistrictMap.has_key(self.doId):
+ if self.doId in self.cr.activeDistrictMap:
del self.cr.activeDistrictMap[self.doId]
DistributedObject.delete(self)
messenger.send('shardInfoUpdated')
diff --git a/otp/src/distributed/DistributedInterestOpener.py b/otp/src/distributed/DistributedInterestOpener.py
index dbe3b605..3a7586ef 100644
--- a/otp/src/distributed/DistributedInterestOpener.py
+++ b/otp/src/distributed/DistributedInterestOpener.py
@@ -12,7 +12,7 @@ def __init__(self, cr):
def generate(self):
DistributedObject.generate(self)
self.childInterest = None
- print 'DistributedInterestOpener.generate'
+ print('DistributedInterestOpener.generate')
def disable(self):
self._removeInterest()
@@ -24,7 +24,7 @@ def setChildZones(self, childZones):
def setRequiredDoIds(self, requiredDoIds):
self.requiredDoIds = requiredDoIds
- print 'DistributedInterestOpener.setRequiredDoIds'
+ print('DistributedInterestOpener.setRequiredDoIds')
if self.childInterest is None:
self.getObject(self.requiredDoIds, self._openInterest)
else:
@@ -32,19 +32,19 @@ def setRequiredDoIds(self, requiredDoIds):
self.getObject(self.requiredDoIds, self._alterInterest)
def _openInterest(self):
- print 'DistributedInterestOpener._openInterest: %s' % self.getDoId()
+ print('DistributedInterestOpener._openInterest: %s' % self.getDoId())
self.childInterest = self.cr.addInterest(
self.getDoId(), self.childZones,
self.uniqueName('interestOpener'))
def _alterInterest(self):
- print 'DistributedInterestOpener._alterInterest'
+ print('DistributedInterestOpener._alterInterest')
self.cr.alterInterest(self.childInterest, self.getDoId(),
self.childZones,
self.uniqueName('interestOpenerAlter'))
def _removeInterest(self):
- print 'DistributedInterestOpener._removeInterest'
+ print('DistributedInterestOpener._removeInterest')
if self.childInterest is not None:
self.getRepository().removeInterest(self.childInterest)
self.childInterest = None
diff --git a/otp/src/distributed/DistributedInterestOpenerAI.py b/otp/src/distributed/DistributedInterestOpenerAI.py
index 03bdc2f1..7dc8076b 100644
--- a/otp/src/distributed/DistributedInterestOpenerAI.py
+++ b/otp/src/distributed/DistributedInterestOpenerAI.py
@@ -18,7 +18,7 @@ def __init__(self, air, requiredDoIds, zones=None):
def announceGenerate(self):
DistributedObjectAI.announceGenerate(self)
- print 'DistributedInterestOpenerAI.announceGenerate: %s' % self.doId
+ print('DistributedInterestOpenerAI.announceGenerate: %s' % self.doId)
def setRequiredDoIds(self, requiredDoIds):
# call this to change the list of required doIds
diff --git a/modules/pytz/zoneinfo/Africa/__init__.py b/otp/src/distributed/DistributedPuppeteerAI.py
similarity index 100%
rename from modules/pytz/zoneinfo/Africa/__init__.py
rename to otp/src/distributed/DistributedPuppeteerAI.py
diff --git a/otp/src/distributed/OTPClientRepository.py b/otp/src/distributed/OTPClientRepository.py
index e795bbaa..6380ba1c 100644
--- a/otp/src/distributed/OTPClientRepository.py
+++ b/otp/src/distributed/OTPClientRepository.py
@@ -49,7 +49,7 @@
from otp.distributed import OtpDoGlobals
from otp.ai.GarbageLeakServerEventAggregator import GarbageLeakServerEventAggregator
-from PotentialAvatar import PotentialAvatar
+from .PotentialAvatar import PotentialAvatar
class OTPClientRepository(ClientRepositoryBase):
# Create a notify category
@@ -189,7 +189,7 @@ def __init__(self, serverVersion, launcher = None, playGame = None):
)
self.DISLToken += ("&WL_CHAT_ENABLED=%s" % config.GetString('fake-DISL-WLChatEnabled','YES') +
"&valid=true")
- print self.DISLToken
+ print(self.DISLToken)
# Find out what kind of login we are supposed to used and let
# us know if it's not found:
@@ -693,7 +693,7 @@ def gotoFirstScreen(self):
# attempt to grab the account server constants
try:
self.accountServerConstants = AccountServerConstants.AccountServerConstants(self)
- except TTAccount.TTAccountException, e:
+ except TTAccount.TTAccountException as e:
self.notify.debug(str(e))
self.loginFSM.request('failedToGetServerConstants', [e])
return
@@ -1063,7 +1063,7 @@ def exitWaitForShardList(self):
def _shardsAreReady(self):
# make sure there's at least one shard up
#print self.activeDistrictMap
- for shard in self.activeDistrictMap.values():
+ for shard in list(self.activeDistrictMap.values()):
if shard.available:
return True
else:
@@ -1198,8 +1198,7 @@ def enterNoConnection(self):
gameUsername = launcher.getValue('GAME_USERNAME', base.cr.userName)
# Look for a good explanation to display for the user.
- if self.bootedIndex != None and OTPLocalizer.CRBootedReasons.has_key(
- self.bootedIndex):
+ if self.bootedIndex != None and self.bootedIndex in OTPLocalizer.CRBootedReasons:
# We've got a standard reason code for the boot from the server.
message = (OTPLocalizer.CRBootedReasons[self.bootedIndex]) % {'name' : gameUsername}
@@ -1813,10 +1812,10 @@ def detectLeakedTasks(self, extraTasks=None):
continue
else:
if hasattr(task, "debugInitTraceback"):
- print task.debugInitTraceback
+ print(task.debugInitTraceback)
problems.append(task.name)
if problems:
- print taskMgr
+ print(taskMgr)
msg = "You can't leave until you clean up your tasks: {"
for task in problems:
msg += "\n " + task
@@ -1876,7 +1875,7 @@ def detectLeakedEvents(self, extraHooks=None):
# there are so many ways this could fail that it's in a try block
value = whoAccepts[obj]
callback = value[0]
- guiObj = callback.im_self
+ guiObj = callback.__self__
if hasattr(guiObj, 'getCreationStackTraceCompactStr'):
msg += '\n CREATIONSTACKTRACE:%s' % guiObj.getCreationStackTraceCompactStr()
except:
@@ -1891,7 +1890,7 @@ def detectLeakedIntervals(self):
# Make sure there are no leftover intervals that shouldn't be here.
numIvals = ivalMgr.getNumIntervals()
if numIvals > 0:
- print "You can't leave until you clean up your intervals: {"
+ print("You can't leave until you clean up your intervals: {")
for i in range(ivalMgr.getMaxIndex()):
# We go through some effort to print each interval in
# detail. This means we need to find the interval.
@@ -1904,12 +1903,12 @@ def detectLeakedIntervals(self):
if ival == None:
ival = ivalMgr.getCInterval(i)
if ival:
- print ival
+ print(ival)
if hasattr(ival, "debugName"):
- print ival.debugName
+ print(ival.debugName)
if hasattr(ival, "debugInitTraceback"):
- print ival.debugInitTraceback
- print "}"
+ print(ival.debugInitTraceback)
+ print("}")
self.notify.info(
"You can't leave until you clean up your intervals.")
return numIvals
@@ -2159,7 +2158,7 @@ def _removeLocalAvFromStateServer(self):
@report(types = ['args', 'deltaStamp'], dConfigParam = 'teleport')
def _removeAllOV(self):
# force delete for all owner-view objects, OTP server has done the same on its end
- ownerDoIds = self.doId2ownerView.keys()
+ ownerDoIds = list(self.doId2ownerView.keys())
for doId in ownerDoIds:
self.disableDoId(doId, ownerView=True)
@@ -2342,7 +2341,7 @@ def moveOnFromUberZone(self):
def handlePlayGame(self, msgType, di):
assert self.notify.debugStateCall(self, 'loginFSM', 'gameFSM')
if self.notify.getDebug():
- self.notify.debug("handle play game got message type: " + `msgType`)
+ self.notify.debug("handle play game got message type: " + repr(msgType))
if msgType == CLIENT_CREATE_OBJECT_REQUIRED:
self.handleGenerateWithRequired(di)
elif msgType == CLIENT_CREATE_OBJECT_REQUIRED_OTHER:
@@ -2584,7 +2583,7 @@ def getStartingDistrict(self):
"""
district = None
- if len(self.activeDistrictMap.keys()) == 0:
+ if len(list(self.activeDistrictMap.keys())) == 0:
self.notify.info('no shards')
return None
@@ -2594,7 +2593,7 @@ def getStartingDistrict(self):
lowPop, midPop, highPop = base.getShardPopLimits()
self.notify.debug('low: %s mid: %s high: %s' %
(lowPop, midPop, highPop))
- for s in self.activeDistrictMap.values():
+ for s in list(self.activeDistrictMap.values()):
if s.available and s.avatarCount < lowPop:
self.notify.debug('%s: pop %s' %
(s.name, s.avatarCount))
@@ -2615,7 +2614,7 @@ def getStartingDistrict(self):
if district is None:
self.notify.debug(
'all shards over cutoff, picking lowest-population shard')
- for s in self.activeDistrictMap.values():
+ for s in list(self.activeDistrictMap.values()):
if s.available:
self.notify.debug('%s: pop %s' %
(s.name, s.avatarCount))
@@ -2658,7 +2657,7 @@ def listActiveShards(self):
"""
assert self.notify.debugStateCall(self, 'loginFSM', 'gameFSM')
list = []
- for s in self.activeDistrictMap.values():
+ for s in list(self.activeDistrictMap.values()):
if s.available:
list.append(
(s.doId, s.name, s.avatarCount,
@@ -2670,7 +2669,7 @@ def listActiveShards(self):
######### General senders and handlers #########
def getPlayerAvatars(self):
- return [i for i in self.doId2do.values()
+ return [i for i in list(self.doId2do.values())
if isinstance(i, DistributedPlayer)]
if 0:
@@ -2826,7 +2825,7 @@ def refreshAccountServerDate(self, forceRefresh=0):
assert self.notify.debugStateCall(self, 'loginFSM', 'gameFSM')
try:
self.accountServerDate.grabDate(force=forceRefresh)
- except TTAccount.TTAccountException, e:
+ except TTAccount.TTAccountException as e:
self.notify.debug(str(e))
return 1
@@ -3064,7 +3063,7 @@ def replayDeferredGenerate(self, msgType, extra):
@exceptionLogged(append=False)
def handleDatagram(self, di):
if self.notify.getDebug():
- print "ClientRepository received datagram:"
+ print("ClientRepository received datagram:")
di.getDatagram().dumpHex(ostream)
diff --git a/otp/src/distributed/ObjectServerAI.py b/otp/src/distributed/ObjectServerAI.py
index bd6e97ba..58b09d93 100644
--- a/otp/src/distributed/ObjectServerAI.py
+++ b/otp/src/distributed/ObjectServerAI.py
@@ -27,8 +27,8 @@ def setName(self, name):
def setDcHash(self, dcHash):
self.dcHash=dcHash
if dcHash != self.air.hashVal:
- print "\nBad DC Version compare -- hash value mismatch (district %s, otp_server %s)"%(
- (self.air.hashVal, dcHash))
+ print("\nBad DC Version compare -- hash value mismatch (district %s, otp_server %s)"%(
+ (self.air.hashVal, dcHash)))
sys.exit()
else:
- print "DC hash matches."
+ print("DC hash matches.")
diff --git a/otp/src/distributed/ObjectServerUD.py b/otp/src/distributed/ObjectServerUD.py
index ca64aecc..d9632900 100644
--- a/otp/src/distributed/ObjectServerUD.py
+++ b/otp/src/distributed/ObjectServerUD.py
@@ -27,8 +27,8 @@ def setName(self, name):
def setDcHash(self, dcHash):
self.dcHash=dcHash
if dcHash != self.air.hashVal:
- print "\nBad DC Version compare -- hash value mismatch (district %s, otp_server %s)"%(
- (self.air.hashVal, dcHash))
+ print("\nBad DC Version compare -- hash value mismatch (district %s, otp_server %s)"%(
+ (self.air.hashVal, dcHash)))
sys.exit()
else:
- print "DC hash matches."
+ print("DC hash matches.")
diff --git a/otp/src/distributed/OtpDoGlobals.py b/otp/src/distributed/OtpDoGlobals.py
index d4137353..4e8ab82c 100644
--- a/otp/src/distributed/OtpDoGlobals.py
+++ b/otp/src/distributed/OtpDoGlobals.py
@@ -28,10 +28,10 @@
OTP_NET_MSGR_CHANNEL_ID_UBER_DOG =4606
OTP_NET_MSGR_CHANNEL_ID_AI_ONLY = 4607
-OTP_DO_ID_COMMON = 4615 # Global objects shared across toontwon, pirates, et al.
+OTP_DO_ID_COMMON = 4610 # Global objects shared across toontwon, pirates, et al.
OTP_DO_ID_GATEWAY = 4616 # Root of Gateway
OTP_DO_ID_PIRATES = 4617 # Root of Pirates
-OTP_DO_ID_TOONTOWN = 4618 # Root of Toontown
+OTP_DO_ID_TOONTOWN = 4615 # Root of Toontown
OTP_DO_ID_FAIRIES = 4619 # Root of Fairies
OTP_DO_ID_CARS = 4620 # Root of Cars
diff --git a/otp/src/friends/AvatarFriendsDB.py b/otp/src/friends/AvatarFriendsDB.py
index 7e3392e4..38b31576 100644
--- a/otp/src/friends/AvatarFriendsDB.py
+++ b/otp/src/friends/AvatarFriendsDB.py
@@ -30,7 +30,7 @@ def __init__(self,host,port,user,passwd,dbname):
port=port,
user=user,
passwd=passwd)
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if __debug__:
self.notify.warning("Failed to connect to MySQL at %s:%d. Avatar friends DB is disabled."%(host,port))
self.sqlAvailable = 0
@@ -46,7 +46,7 @@ def __init__(self,host,port,user,passwd,dbname):
cursor.execute("CREATE DATABASE `%s`"%self.dbname)
if __debug__:
self.notify.info("Database '%s' did not exist, created a new one!"%self.dbname)
- except _mysql_exceptions.ProgrammingError,e:
+ except _mysql_exceptions.ProgrammingError as e:
pass
cursor.execute("USE `%s`"%self.dbname)
@@ -66,7 +66,7 @@ def __init__(self,host,port,user,passwd,dbname):
""")
if __debug__:
self.notify.info("Table avatarfriends did not exist, created a new one!")
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
pass
def reconnect(self):
@@ -96,7 +96,7 @@ def getFriends(self,avatarId):
cursor = MySQLdb.cursors.DictCursor(self.db)
try:
cursor.execute("SELECT * FROM avatarfriends WHERE friendId1=%s OR friendId2=%s",(avatarId,avatarId))
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if e[0] == SERVER_GONE_ERROR or e[0] == SERVER_LOST:
self.reconnect()
cursor = MySQLdb.cursors.DictCursor(self.db)
@@ -123,7 +123,7 @@ def addFriendship(self,avatarId1,avatarId2,openChat=0):
cursor.execute("INSERT INTO avatarfriends (friendId1,friendId2,openChatYesNo) VALUES (%s,%s,%s)",(avatarId1,avatarId2,openChat))
else:
cursor.execute("INSERT INTO avatarfriends (friendId1,friendId2,openChatYesNo) VALUES (%s,%s,%s)",(avatarId2,avatarId1,openChat))
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if e[0] == SERVER_GONE_ERROR or e[0] == SERVER_LOST:
self.reconnect()
cursor = MySQLdb.cursors.DictCursor(self.db)
@@ -145,7 +145,7 @@ def removeFriendship(self,avatarId1,avatarId2):
cursor.execute("DELETE FROM avatarfriends where friendId1=%s AND friendId2=%s",(avatarId1,avatarId2))
else:
cursor.execute("DELETE FROM avatarfriends where friendId1=%s AND friendId2=%s",(avatarId2,avatarId1))
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if e[0] == SERVER_GONE_ERROR or e[0] == SERVER_LOST: # 'Lost connection to MySQL server during query'
self.reconnect()
cursor = MySQLdb.cursors.DictCursor(self.db)
diff --git a/otp/src/friends/AvatarFriendsManagerUD.py b/otp/src/friends/AvatarFriendsManagerUD.py
index 48dde8bc..e7a9d929 100644
--- a/otp/src/friends/AvatarFriendsManagerUD.py
+++ b/otp/src/friends/AvatarFriendsManagerUD.py
@@ -66,7 +66,7 @@ def announceGenerate(self):
def delete(self):
assert self.notify.debugCall()
self.ignoreAll()
- for i in self.asyncRequests.values():
+ for i in list(self.asyncRequests.values()):
i.delete()
DistributedObjectGlobalUD.delete(self)
@@ -79,10 +79,10 @@ def avatarOnlinePlusAccountInfo(self,avatarId,accountId,playerName,
assert avatarId
self.notify.debug("avatarOnlinePlusAccountInfo")
- if self.isAvatarOnline.has_key(avatarId):
+ if avatarId in self.isAvatarOnline:
assert self.notify.debug(
"\n\nWe got a duplicate avatar online notice %s"%(avatarId,))
- if avatarId and not self.isAvatarOnline.has_key(avatarId):
+ if avatarId and avatarId not in self.isAvatarOnline:
self.isAvatarOnline[avatarId]=True
self.avatarId2Info[avatarId] = AvatarFriendInfo(avatarName=str(avatarId),
playerName = playerName,
@@ -100,20 +100,20 @@ def avatarOnlinePlusAccountInfo(self,avatarId,accountId,playerName,
# Callback function for asynchronous avatar name fetch
def setName(avatarId, avatarId2info, friends, context, name):
- if avatarId2info.has_key(avatarId):
+ if avatarId in avatarId2info:
avatarId2info[avatarId].avatarName = name[0]
for friendId in friends:
- if self.isAvatarOnline.has_key(friendId):
+ if friendId in self.isAvatarOnline:
if (friendId in self.avatarId2FriendsList) and (avatarId in self.avatarId2FriendsList[friendId]):
self.sendUpdateToAvatarId(friendId,"updateAvatarFriend",
[avatarId,self.getFriendView(friendId,avatarId)])
self.sendExtraUpdates(friendId,avatarId)
# Get my friends' info to me
- for friend in friends.keys():
+ for friend in list(friends.keys()):
friendId = friend
- if not self.isAvatarOnline.has_key(friendId):
- if not self.avatarId2Info.has_key(friendId):
+ if friendId not in self.isAvatarOnline:
+ if friendId not in self.avatarId2Info:
self.avatarId2Info[friendId] = AvatarFriendInfo()
#fetch this friend's name from the gameDB since we don't have it yet
context=self.air.allocateContext()
@@ -127,7 +127,7 @@ def setName(avatarId, avatarId2info, friends, context, name):
self.sendUpdateToAvatarId(avatarId,"updateAvatarFriend",[friendId,self.getFriendView(avatarId,friendId)])
self.sendExtraUpdates(avatarId,friendId)
else:
- assert self.avatarId2Info.has_key(friendId)
+ assert friendId in self.avatarId2Info
self.sendUpdateToAvatarId(avatarId,"updateAvatarFriend",[friendId,self.getFriendView(avatarId,friendId)])
self.sendExtraUpdates(avatarId,friendId)
@@ -138,14 +138,14 @@ def setName(avatarId, avatarId2info, friends, context, name):
self.air.contextToClassName[context]=dclassName
self.acceptOnce(
"doFieldResponse-%s"%(context,),
- setName, [avatarId, self.avatarId2Info, friends.keys()])
+ setName, [avatarId, self.avatarId2Info, list(friends.keys())])
self.air.queryObjectField(
dclassName, "setName", avatarId, context)
def getFriendView(self, viewerId, friendId):
info = self.avatarId2Info[friendId]
- assert self.avatarId2FriendsList.has_key(viewerId), "avatarId2FriendsList has no key %d" % viewerId
- assert self.avatarId2FriendsList[viewerId].has_key(friendId), "avatarId2FriendsList[%d] has no key %d" % (viewerId, friendId)
+ assert viewerId in self.avatarId2FriendsList, "avatarId2FriendsList has no key %d" % viewerId
+ assert friendId in self.avatarId2FriendsList[viewerId], "avatarId2FriendsList[%d] has no key %d" % (viewerId, friendId)
info.openChatFriendshipYesNo = self.avatarId2FriendsList[viewerId][friendId]
if info.openChatFriendshipYesNo or \
(info.openChatEnabledYesNo and \
@@ -169,12 +169,12 @@ def avatarOffline(self, avatarId):
assert self.notify.debugCall()
self.isAvatarOnline.pop(avatarId,None)
- if self.avatarId2Info.has_key(avatarId):
+ if avatarId in self.avatarId2Info:
self.avatarId2Info[avatarId].onlineYesNo = 0
if avatarId:
friendsList = self.avatarId2FriendsList.get(avatarId, None)
- if friendsList is not None and self.avatarId2Info.has_key(avatarId):
+ if friendsList is not None and avatarId in self.avatarId2Info:
for friend in friendsList:
self.sendUpdateToAvatarId(
friend, "updateAvatarFriend", [avatarId,self.avatarId2Info[avatarId]])
@@ -243,7 +243,7 @@ def reject(reason):
assert otherAvatarId not in invitations
self.avatarId2FriendsList[avatarId][otherAvatarId] = 0
- if self.avatarId2FriendsList.has_key(otherAvatarId):
+ if otherAvatarId in self.avatarId2FriendsList:
self.avatarId2FriendsList[otherAvatarId][avatarId] = 0
#update the friends database
@@ -319,9 +319,9 @@ def reject(reason):
if otherAvatarId not in friendsList:
reject(RejectCode.ALREADY_NOT_YOUR_FRIEND)
else:
- if self.avatarId2FriendsList.has_key(avatarId):
+ if avatarId in self.avatarId2FriendsList:
self.avatarId2FriendsList[avatarId].pop(otherAvatarId,None)
- if self.avatarId2FriendsList.has_key(otherAvatarId):
+ if otherAvatarId in self.avatarId2FriendsList:
self.avatarId2FriendsList[otherAvatarId].pop(avatarId,None)
self.db.removeFriendship(avatarId,otherAvatarId)
self.sendUpdateToAvatarId(avatarId,"removeAvatarFriend",[otherAvatarId])
@@ -329,11 +329,11 @@ def reject(reason):
def updateAvatarName(self, avatarId, avatarName):
- if self.avatarId2Info.has_key(avatarId):
+ if avatarId in self.avatarId2Info:
self.avatarId2Info[avatarId].avatarName = avatarName
friends = self.avatarId2FriendsList.get(avatarId,[])
for friendId in friends:
- if self.isAvatarOnline.has_key(friendId):
+ if friendId in self.isAvatarOnline:
self.sendUpdateToAvatarId(friendId,"updateAvatarFriend",
[avatarId,self.getFriendView(friendId,avatarId)])
self.sendExtraUpdates(friendId,avatarId)
diff --git a/otp/src/friends/EmailInvite.py b/otp/src/friends/EmailInvite.py
index a03bf65e..91dcb430 100644
--- a/otp/src/friends/EmailInvite.py
+++ b/otp/src/friends/EmailInvite.py
@@ -62,7 +62,7 @@ def sendEmailInvite(self, fromAddr, toAddr, subject, fromAvName, inviteCode):
# Now send the message
outbound = msg.as_string()
- print 'The ougoing message is: %s' % (outbound)
+ print('The ougoing message is: %s' % (outbound))
try:
self.mailServer.sendmail(fromAddr, [toAddr], outbound)
diff --git a/otp/src/friends/FriendManagerAI.py b/otp/src/friends/FriendManagerAI.py
index 6a6df84d..9a3082bc 100644
--- a/otp/src/friends/FriendManagerAI.py
+++ b/otp/src/friends/FriendManagerAI.py
@@ -1,571 +1,570 @@
-## from otp.ai.AIBaseGlobal import *
-## from pandac.PandaModules import *
+from otp.ai.AIBaseGlobal import *
+from pandac.PandaModules import *
from direct.distributed import DistributedObjectAI
-## from direct.directnotify import DirectNotifyGlobal
-## from otp.avatar import DistributedAvatarAI
+from direct.directnotify import DirectNotifyGlobal
+from otp.avatar import DistributedAvatarAI
# all of this is commented out because the friend manager was moved
# to the OTP server
# we need something for the AI DC parser to load
class FriendManagerAI(DistributedObjectAI.DistributedObjectAI):
- pass
-## # These structures record the invitations currently being handled.
-## nextContext = 0
-## invites = {}
-## inviters = {}
-## invitees = {}
-
-## # This is the length of time, in seconds, to sit on a secret guess
-## # before processing it. This serves to make it difficult to guess
-## # passwords at random.
-## SecretDelay = 1.0
-
-## # This is the length of time that should elapse before we start to
-## # forget who has declined friendships from whom.
-## DeclineFriendshipTimeout = 600.0
-
-## notify = DirectNotifyGlobal.directNotify.newCategory("FriendManagerAI")
-
-## # This subclass is used to record currently outstanding
-## # in-the-game invitation requests.
-## class Invite:
-## def __init__(self, context, inviterId, inviteeId):
-## self.context = context
-## self.inviterId = inviterId
-## self.inviteeId = inviteeId
-## self.inviter = None
-## self.invitee = None
-## self.inviteeKnows = 0
-## self.sendSpecialResponse = 0
-
-## def __init__(self, air):
-## DistributedObjectAI.DistributedObjectAI.__init__(self, air)
-
-## # We maintain two maps of toons who have declined
-## # friendships. We add entries to map1, and every ten
-## # minutes, we roll map1 into map2. This provides a
-## # timeout of ten to twenty minutes for a particular
-## # rejection, and also prevents the maps from growing very
-## # large in memory.
-## self.declineFriends1 = {}
-## self.declineFriends2 = {}
-## self.lastRollTime = 0
-
-## def generate(self):
-## DistributedObjectAI.DistributedObjectAI.generate(self)
-
-## # The FriendManagerAI always listens for these events, which
-## # will be sent in response to secret requests to the database,
-## # via the AIR.
-## self.accept("makeFriendsReply", self.makeFriendsReply)
-## self.accept("requestSecretReply", self.__requestSecretReply)
-## self.accept("submitSecretReply", self.__submitSecretReply)
-
-## def delete(self):
-## self.ignore("makeFriendsReply")
-## self.ignore("requestSecretReply")
-## self.ignore("submitSecretReply")
-
-## # Clean up all outstanding secret request tasks.
-## taskMgr.removeTasksMatching("secret-*")
-
-## DistributedObjectAI.DistributedObjectAI.delete(self)
-
-
-## ### Messages sent from inviter client to AI
-
-## def friendQuery(self, inviteeId):
-## """friendQuery(self, int inviterId, int inviteeId)
-
-## Sent by the inviter to the AI to initiate a friendship
-## request.
-## """
-## inviterId = self.air.getAvatarIdFromSender()
-## invitee = self.air.doId2do.get(inviteeId)
-
-## # see if the inviteeId is valid
-## if not invitee:
-## self.air.writeServerEvent('suspicious', inviteeId, 'FriendManagerAI.friendQuery not on list')
-## return
+ # These structures record the invitations currently being handled.
+ nextContext = 0
+ invites = {}
+ inviters = {}
+ invitees = {}
+
+ # This is the length of time, in seconds, to sit on a secret guess
+ # before processing it. This serves to make it difficult to guess
+ # passwords at random.
+ SecretDelay = 1.0
+
+ # This is the length of time that should elapse before we start to
+ # forget who has declined friendships from whom.
+ DeclineFriendshipTimeout = 600.0
+
+ notify = DirectNotifyGlobal.directNotify.newCategory("FriendManagerAI")
+
+ # This subclass is used to record currently outstanding
+ # in-the-game invitation requests.
+ class Invite:
+ def __init__(self, context, inviterId, inviteeId):
+ self.context = context
+ self.inviterId = inviterId
+ self.inviteeId = inviteeId
+ self.inviter = None
+ self.invitee = None
+ self.inviteeKnows = 0
+ self.sendSpecialResponse = 0
+
+ def __init__(self, air):
+ DistributedObjectAI.DistributedObjectAI.__init__(self, air)
+
+ # We maintain two maps of toons who have declined
+ # friendships. We add entries to map1, and every ten
+ # minutes, we roll map1 into map2. This provides a
+ # timeout of ten to twenty minutes for a particular
+ # rejection, and also prevents the maps from growing very
+ # large in memory.
+ self.declineFriends1 = {}
+ self.declineFriends2 = {}
+ self.lastRollTime = 0
+
+ def generate(self):
+ DistributedObjectAI.DistributedObjectAI.generate(self)
+
+ # The FriendManagerAI always listens for these events, which
+ # will be sent in response to secret requests to the database,
+ # via the AIR.
+ self.accept("makeFriendsReply", self.makeFriendsReply)
+ self.accept("requestSecretReply", self.__requestSecretReply)
+ self.accept("submitSecretReply", self.__submitSecretReply)
+
+ def delete(self):
+ self.ignore("makeFriendsReply")
+ self.ignore("requestSecretReply")
+ self.ignore("submitSecretReply")
+
+ # Clean up all outstanding secret request tasks.
+ taskMgr.removeTasksMatching("secret-*")
+
+ DistributedObjectAI.DistributedObjectAI.delete(self)
+
+
+ #Messages sent from inviter client to AI
+
+ def friendQuery(self, inviteeId):
+ """friendQuery(self, int inviterId, int inviteeId)
+
+ Sent by the inviter to the AI to initiate a friendship
+ request.
+ """
+ inviterId = self.air.getAvatarIdFromSender()
+ invitee = self.air.doId2do.get(inviteeId)
+
+ # see if the inviteeId is valid
+ if not invitee:
+ self.air.writeServerEvent('suspicious', inviteeId, 'FriendManagerAI.friendQuery not on list')
+ return
-## self.notify.debug("AI: friendQuery(%d, %d)" % (inviterId, inviteeId))
-## self.newInvite(inviterId, inviteeId)
+ self.notify.debug("AI: friendQuery(%d, %d)" % (inviterId, inviteeId))
+ self.newInvite(inviterId, inviteeId)
-## def cancelFriendQuery(self, context):
-## """cancelFriendQuery(self, int context)
+ def cancelFriendQuery(self, context):
+ """cancelFriendQuery(self, int context)
-## Sent by the inviter to the AI to cancel a pending friendship
-## request.
-## """
+ Sent by the inviter to the AI to cancel a pending friendship
+ request.
+ """
-## avId = self.air.getAvatarIdFromSender()
-## self.notify.debug("AI: cancelFriendQuery(%d)" % (context))
-
-## try:
-## invite = FriendManagerAI.invites[context]
-## except:
-## # The client might legitimately try to cancel a context
-## # that has already been cancelled.
-## #self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.cancelFriendQuery unknown context')
-## #FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
-## return
-
-## self.cancelInvite(invite)
-
-
-## ### Messages sent from invitee client to AI
-
-## def inviteeFriendConsidering(self, response, context):
-## """inviteeFriendConsidering(self, int response, int context)
-
-## Sent by the invitee to the AI to indicate whether the invitee
-## is able to consider the request right now.
+ avId = self.air.getAvatarIdFromSender()
+ self.notify.debug("AI: cancelFriendQuery(%d)" % (context))
+
+ try:
+ invite = FriendManagerAI.invites[context]
+ except:
+ # The client might legitimately try to cancel a context
+ # that has already been cancelled.
+ #self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.cancelFriendQuery unknown context')
+ #FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
+ return
+
+ self.cancelInvite(invite)
+
+
+ #Messages sent from invitee client to AI
+
+ def inviteeFriendConsidering(self, response, context):
+ """inviteeFriendConsidering(self, int response, int context)
+
+ Sent by the invitee to the AI to indicate whether the invitee
+ is able to consider the request right now.
-## The responses are:
-## 0 - no
-## 1 - yes
-## 4 - the invitee is ignoring you.
-## """
-## self.notify.debug("AI: inviteeFriendConsidering(%d, %d)" % (response, context))
-## avId = self.air.getAvatarIdFromSender()
+ The responses are:
+ 0 - no
+ 1 - yes
+ 4 - the invitee is ignoring you.
+ """
+ self.notify.debug("AI: inviteeFriendConsidering(%d, %d)" % (response, context))
+ avId = self.air.getAvatarIdFromSender()
-## try:
-## invite = FriendManagerAI.invites[context]
-## except:
-## self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.inviteeFriendConsidering unknown context')
-## FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
-## return
-
-## if response == 1:
-## self.inviteeAvailable(invite)
-## else:
-## self.inviteeUnavailable(invite, response)
-
-## def inviteeFriendResponse(self, yesNoMaybe, context):
-## """inviteeFriendResponse(self, int yesNoMaybe, int context)
-
-## Sent by the invitee to the AI, following an affirmative
-## response in inviteeFriendConsidering, to indicate whether or
-## not the user decided to accept the friendship.
-## """
-
-## self.notify.debug("AI: inviteeFriendResponse(%d, %d)" % (yesNoMaybe, context))
-## avId = self.air.getAvatarIdFromSender()
-
-## try:
-## invite = FriendManagerAI.invites[context]
-## except:
-## self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.inviteeFriendResponse unknown context')
-## FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
-## return
+ try:
+ invite = FriendManagerAI.invites[context]
+ except:
+ self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.inviteeFriendConsidering unknown context')
+ FriendManagerAI.notify.warning('Message for unknown context ' + repr(context))
+ return
+
+ if response == 1:
+ self.inviteeAvailable(invite)
+ else:
+ self.inviteeUnavailable(invite, response)
+
+ def inviteeFriendResponse(self, yesNoMaybe, context):
+ """inviteeFriendResponse(self, int yesNoMaybe, int context)
+
+ Sent by the invitee to the AI, following an affirmative
+ response in inviteeFriendConsidering, to indicate whether or
+ not the user decided to accept the friendship.
+ """
+
+ self.notify.debug("AI: inviteeFriendResponse(%d, %d)" % (yesNoMaybe, context))
+ avId = self.air.getAvatarIdFromSender()
+
+ try:
+ invite = FriendManagerAI.invites[context]
+ except:
+ self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.inviteeFriendResponse unknown context')
+ FriendManagerAI.notify.warning('Message for unknown context ' + repr(context))
+ return
-## if yesNoMaybe == 1:
-## self.makeFriends(invite)
-## else:
-## self.noFriends(invite, yesNoMaybe)
+ if yesNoMaybe == 1:
+ self.makeFriends(invite)
+ else:
+ self.noFriends(invite, yesNoMaybe)
-## def inviteeAcknowledgeCancel(self, context):
-## """inviteeAcknowledgeCancel(self, int context)
+ def inviteeAcknowledgeCancel(self, context):
+ """inviteeAcknowledgeCancel(self, int context)
-## Sent by the invitee to the AI, in response to an
-## inviteeCancelFriendQuery message. This simply acknowledges
-## receipt of the message and tells the AI that it is safe to
-## clean up the context.
-## """
+ Sent by the invitee to the AI, in response to an
+ inviteeCancelFriendQuery message. This simply acknowledges
+ receipt of the message and tells the AI that it is safe to
+ clean up the context.
+ """
-## self.notify.debug("AI: inviteeAcknowledgeCancel(%d)" % (context))
-## avId = self.air.getAvatarIdFromSender()
+ self.notify.debug("AI: inviteeAcknowledgeCancel(%d)" % (context))
+ avId = self.air.getAvatarIdFromSender()
-## try:
-## invite = FriendManagerAI.invites[context]
-## except:
-## # The client might legitimately try to cancel a context
-## # that has already been cancelled.
-## #self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.inviteeAcknowledgeCancel unknown context')
-## #FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
-## return
+ try:
+ invite = FriendManagerAI.invites[context]
+ except:
+ # The client might legitimately try to cancel a context
+ # that has already been cancelled.
+ #self.air.writeServerEvent('suspicious', avId, 'FriendManagerAI.inviteeAcknowledgeCancel unknown context')
+ #FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
+ return
-## self.clearInvite(invite)
+ self.clearInvite(invite)
-## ### Messages sent from AI to inviter client
+ #Messages sent from AI to inviter client
-## def down_friendConsidering(self, recipient, yesNoAlready, context):
-## """friendConsidering(self, DistributedObject recipient,
-## int yesNoAlready, int context)
+ def down_friendConsidering(self, recipient, yesNoAlready, context):
+ """friendConsidering(self, DistributedObject recipient,
+ int yesNoAlready, int context)
-## Sent by the AI to the inviter client to indicate whether the
-## invitee is able to consider the request right now.
+ Sent by the AI to the inviter client to indicate whether the
+ invitee is able to consider the request right now.
-## The responses are:
-## # 0 - the invitee is busy
-## # 2 - the invitee is already your friend
-## # 3 - the invitee is yourself
-## # 4 - the invitee is ignoring you.
-## # 6 - the invitee not accepting friends
-## """
-
-## self.sendUpdateToAvatarId(recipient, "friendConsidering", [yesNoAlready, context])
-## self.notify.debug("AI: friendConsidering(%d, %d)" % (yesNoAlready, context))
+ The responses are:
+ # 0 - the invitee is busy
+ # 2 - the invitee is already your friend
+ # 3 - the invitee is yourself
+ # 4 - the invitee is ignoring you.
+ # 6 - the invitee not accepting friends
+ """
+
+ self.sendUpdateToAvatarId(recipient, "friendConsidering", [yesNoAlready, context])
+ self.notify.debug("AI: friendConsidering(%d, %d)" % (yesNoAlready, context))
-## def down_friendResponse(self, recipient, yesNoMaybe, context):
-## """friendResponse(self, DistributedOBject recipient,
-## int yesNoMaybe, int context)
+ def down_friendResponse(self, recipient, yesNoMaybe, context):
+ """friendResponse(self, DistributedOBject recipient,
+ int yesNoMaybe, int context)
-## Sent by the AI to the inviter client, following an affirmitive
-## response in friendConsidering, to indicate whether or not the
-## user decided to accept the friendship.
-## """
-
-## self.sendUpdateToAvatarId(recipient, "friendResponse", [yesNoMaybe, context])
-## self.notify.debug("AI: friendResponse(%d, %d)" % (yesNoMaybe, context))
-
-
-
-## ### Messages sent from AI to invitee client
+ Sent by the AI to the inviter client, following an affirmitive
+ response in friendConsidering, to indicate whether or not the
+ user decided to accept the friendship.
+ """
+
+ self.sendUpdateToAvatarId(recipient, "friendResponse", [yesNoMaybe, context])
+ self.notify.debug("AI: friendResponse(%d, %d)" % (yesNoMaybe, context))
+
+
+
+ #Messages sent from AI to invitee client
-## def down_inviteeFriendQuery(self, recipient, inviterId, inviterName,
-## inviterDna, context):
-## """inviteeFriendQuery(self, DistributedObject recipient,
-## int inviterId, string inviterName,
-## AvatarDNA inviterDna, int context)
+ def down_inviteeFriendQuery(self, recipient, inviterId, inviterName,
+ inviterDna, context):
+ """inviteeFriendQuery(self, DistributedObject recipient,
+ int inviterId, string inviterName,
+ AvatarDNA inviterDna, int context)
-## Sent by the AI to the invitee client to initiate a friendship
-## request from the indiciated inviter. The invitee client
-## should respond immediately with inviteeFriendConsidering, to
-## indicate whether the invitee is able to consider the
-## invitation right now.
-## """
+ Sent by the AI to the invitee client to initiate a friendship
+ request from the indiciated inviter. The invitee client
+ should respond immediately with inviteeFriendConsidering, to
+ indicate whether the invitee is able to consider the
+ invitation right now.
+ """
-## self.sendUpdateToAvatarId(recipient, "inviteeFriendQuery",
-## [inviterId, inviterName,
-## inviterDna.makeNetString(), context])
-## self.notify.debug("AI: inviteeFriendQuery(%d, %s, dna, %d)" % (inviterId, inviterName, context))
+ self.sendUpdateToAvatarId(recipient, "inviteeFriendQuery",
+ [inviterId, inviterName,
+ inviterDna.makeNetString(), context])
+ self.notify.debug("AI: inviteeFriendQuery(%d, %s, dna, %d)" % (inviterId, inviterName, context))
-## def down_inviteeCancelFriendQuery(self, recipient, context):
-## """inviteeCancelFriendQuery(self, DistributedObject recipient,
-## int context)
+ def down_inviteeCancelFriendQuery(self, recipient, context):
+ """inviteeCancelFriendQuery(self, DistributedObject recipient,
+ int context)
-## Sent by the AI to the invitee client to initiate that the
-## inviter has rescinded his/her previous invitation by clicking
-## the cancel button.
-## """
+ Sent by the AI to the invitee client to initiate that the
+ inviter has rescinded his/her previous invitation by clicking
+ the cancel button.
+ """
-## self.sendUpdateToAvatarId(recipient, "inviteeCancelFriendQuery", [context])
-## self.notify.debug("AI: inviteeCancelFriendQuery(%d)" % (context))
+ self.sendUpdateToAvatarId(recipient, "inviteeCancelFriendQuery", [context])
+ self.notify.debug("AI: inviteeCancelFriendQuery(%d)" % (context))
-## ### Messages involving secrets
+ #Messages involving secrets
-## def requestSecret(self):
-## """requestSecret(self)
+ def requestSecret(self):
+ """requestSecret(self)
-## Sent by the client to the AI to request a new "secret" for the
-## user.
-## """
-## avId = self.air.getAvatarIdFromSender()
-## self.air.requestSecret(avId)
+ Sent by the client to the AI to request a new "secret" for the
+ user.
+ """
+ avId = self.air.getAvatarIdFromSender()
+ self.air.requestSecret(avId)
-## def down_requestSecretResponse(self, recipient, result, secret):
-## """requestSecret(self, int8 result, string secret)
+ def down_requestSecretResponse(self, recipient, result, secret):
+ """requestSecret(self, int8 result, string secret)
-## Sent by the AI to the client in response to requestSecret().
-## result is one of:
+ Sent by the AI to the client in response to requestSecret().
+ result is one of:
-## 0 - Too many secrets outstanding. Try again later.
-## 1 - Success. The new secret is supplied.
+ 0 - Too many secrets outstanding. Try again later.
+ 1 - Success. The new secret is supplied.
-## """
-## self.sendUpdateToAvatarId(recipient, 'requestSecretResponse', [result, secret])
+ """
+ self.sendUpdateToAvatarId(recipient, 'requestSecretResponse', [result, secret])
-## def submitSecret(self, secret):
-## """submitSecret(self, string secret)
+ def submitSecret(self, secret):
+ """submitSecret(self, string secret)
-## Sent by the client to the AI to submit a "secret" typed in by
-## the user.
-## """
-## avId = self.air.getAvatarIdFromSender()
+ Sent by the client to the AI to submit a "secret" typed in by
+ the user.
+ """
+ avId = self.air.getAvatarIdFromSender()
-## # We have to sit on this request for a few seconds before
-## # processing it. This delay is solely to discourage password
-## # guessing.
-## taskName = "secret-" + str(avId)
-## taskMgr.remove(taskName)
-## if FriendManagerAI.SecretDelay:
-## taskMgr.doMethodLater(FriendManagerAI.SecretDelay,
-## self.continueSubmission,
-## taskName,
-## extraArgs = (avId, secret))
-## else:
-## # No delay
-## self.continueSubmission(avId, secret)
-
-## def continueSubmission(self, avId, secret):
-## """continueSubmission(self, avId, secret)
-## Finishes the work of submitSecret, a short time later.
-## """
-## self.air.submitSecret(avId, secret)
-
-## def down_submitSecretResponse(self, recipient, result, avId):
-## """submitSecret(self, int8 result, int32 avId)
-
-## Sent by the AI to the client in response to submitSecret().
-## result is one of:
-
-## 0 - Failure. The secret is unknown or has timed out.
-## 1 - Success. You are now friends with the indicated avId.
-## 2 - Failure. One of the avatars has too many friends already.
-## 3 - Failure. You just used up your own secret.
-
-## """
-## self.sendUpdateToAvatarId(recipient, 'submitSecretResponse', [result, avId])
-
-
-## ### Support methods
-
-## def newInvite(self, inviterId, inviteeId):
-## context = FriendManagerAI.nextContext
-## FriendManagerAI.nextContext += 1
-
-## invite = FriendManagerAI.Invite(context, inviterId, inviteeId)
-## FriendManagerAI.invites[context] = invite
-
-## # If the invitee has previously (recently) declined a
-## # friendship from this inviter, don't ask again.
-## previous = self.__previousResponse(inviteeId, inviterId)
-## if previous != None:
-## self.inviteeUnavailable(invite, previous + 10)
-## return
-
-## # If the invitee is presently being invited by someone else,
-## # we don't even have to bother him.
-## if FriendManagerAI.invitees.has_key(inviteeId):
-## self.inviteeUnavailable(invite, 0)
-## return
-
-## if invite.inviterId == invite.inviteeId:
-## # You can't be friends with yourself.
-## self.inviteeUnavailable(invite, 3)
-## return
-
-## # If the inviter is already involved in some other context,
-## # that one is now void.
-## if FriendManagerAI.inviters.has_key(inviterId):
-## self.cancelInvite(FriendManagerAI.inviters[inviterId])
-
-## FriendManagerAI.inviters[inviterId] = invite
-## FriendManagerAI.invitees[inviteeId] = invite
-
-## #self.air.queryObject(inviteeId, self.gotInvitee, invite)
-## #self.air.queryObject(inviterId, self.gotInviter, invite)
-## invite.inviter = self.air.doId2do.get(inviterId)
-## invite.invitee = self.air.doId2do.get(inviteeId)
-## if invite.inviter and invite.invitee:
-## self.beginInvite(invite)
-
-
-## # def gotInviter(self, handle, invite):
-## # if not invite.inviter:
-## # invite.inviter = handle
-## # if invite.invitee:
-## # self.beginInvite(invite)
-
-## # def gotInvitee(self, handle, invite):
-## # if not invite.invitee:
-## # invite.invitee = handle
-## # if invite.inviter:
-## # self.beginInvite(invite)
-
-## def beginInvite(self, invite):
-## # Ask the invitee if he is available to consider being
-## # someone's friend--that is, that he's not busy playing a
-## # minigame or something.
-
-## invite.inviteeKnows = 1
-## self.down_inviteeFriendQuery(invite.inviteeId, invite.inviterId,
-## invite.inviter.getName(),
-## invite.inviter.dna, invite.context)
-
-## def inviteeUnavailable(self, invite, code):
-## # Cannot make the request for one of these reasons:
-## #
-## # 0 - the invitee is busy
-## # 2 - the invitee is already your friend
-## # 3 - the invitee is yourself
-## # 4 - the invitee is ignoring you.
-## # 6 - the invitee not accepting friends
-## self.down_friendConsidering(invite.inviterId, code, invite.context)
-
-## # That ends the invitation.
-## self.clearInvite(invite)
-
-## def inviteeAvailable(self, invite):
-## # The invitee is considering our friendship request.
-## self.down_friendConsidering(invite.inviterId, 1, invite.context)
-
-
-## def noFriends(self, invite, yesNoMaybe):
-## # The invitee declined to make friends.
-## #
-## # 0 - no
-## # 2 - unable to answer; e.g. entered a minigame or something.
-## # 3 - the invitee has too many friends already.
-
-## if yesNoMaybe == 0 or yesNoMaybe == 3:
-## # The user explictly said no or has too many friends.
-## # Disallow this guy from asking again for the next ten
-## # minutes or so.
-
-## if not self.declineFriends1.has_key(invite.inviteeId):
-## self.declineFriends1[invite.inviteeId] = {}
-## self.declineFriends1[invite.inviteeId][invite.inviterId] = yesNoMaybe
-
-## self.down_friendResponse(invite.inviterId, yesNoMaybe, invite.context)
-## self.clearInvite(invite)
-
-## def makeFriends(self, invite):
-## # The invitee agreed to make friends.
-## self.air.makeFriends(invite.inviteeId, invite.inviterId, 0,
-## invite.context)
-## self.down_friendResponse(invite.inviterId, 1, invite.context)
-## # The reply will clear the context out when it comes in.
-
-## def makeSpecialFriends(self, requesterId, avId):
-## # The "requester" has typed in a codeword that successfully
-## # matches a friend in the world. Attempt to make the
-## # friendship (with chat permission), and send back a code
-## # indicating success or failure.
-
-## # Get a special Invite structure just for this purpose.
-## context = FriendManagerAI.nextContext
-## FriendManagerAI.nextContext += 1
-
-## invite = FriendManagerAI.Invite(context, requesterId, avId)
-## FriendManagerAI.invites[context] = invite
-
-## invite.sendSpecialResponse = 1
-
-## self.air.makeFriends(invite.inviteeId, invite.inviterId, 1,
-## invite.context)
-
-## def clearInvite(self, invite):
-## try:
-## del FriendManagerAI.invites[invite.context]
-## except:
-## pass
-
-## try:
-## del FriendManagerAI.inviters[invite.inviterId]
-## except:
-## pass
-
-## try:
-## del FriendManagerAI.invitees[invite.inviteeId]
-## except:
-## pass
-
-## def cancelInvite(self, invite):
-## if invite.inviteeKnows:
-## self.down_inviteeCancelFriendQuery(invite.inviteeId, invite.context)
-
-## invite.inviteeKnows = 0
-
-
-## def makeFriendsReply(self, result, context):
-## try:
-## invite = FriendManagerAI.invites[context]
-## except:
-## FriendManagerAI.notify.warning('Message for unknown context ' + `context`)
-## return
-
-## if result:
-## # By now, the server has OK'ed the friends transaction.
-## # Update our internal bookkeeping so we remember who's
-## # friends with whom. This is mainly useful for correct
-## # accounting of the make-a-friend quest.
-## invitee = self.air.doId2do.get(invite.inviteeId)
-## inviter = self.air.doId2do.get(invite.inviterId)
-## if invitee != None:
-## invitee.extendFriendsList(invite.inviterId, invite.sendSpecialResponse)
-## self.air.questManager.toonMadeFriend(invitee, inviter)
-
-## #inviter = self.air.doId2do.get(invite.inviterId)
-## if inviter != None:
-## inviter.extendFriendsList(invite.inviteeId, invite.sendSpecialResponse)
-## self.air.questManager.toonMadeFriend(inviter, invitee)
-
-## if invite.sendSpecialResponse:
-## # If this flag is set, the "invite" was generated via the
-## # codeword system, instead of through the normal path. In
-## # this case, we need to send the acknowledgement back to
-## # the client.
-
-## if result:
-## # Success! Send a result code of 1.
-## result = 1
-## else:
-## # Failure, some friends list problem. Result code of 2.
-## result = 2
-
-## self.down_submitSecretResponse(invite.inviterId, result,
-## invite.inviteeId)
-
-## # Also send a notification to the other avatar, if he's on.
-## avatar = DistributedAvatarAI.DistributedAvatarAI(self.air)
-## avatar.doId = invite.inviteeId
-## avatar.d_friendsNotify(invite.inviterId, 2)
-
-## self.clearInvite(invite)
-
-
-
-## def __requestSecretReply(self, result, secret, requesterId):
-## self.notify.debug("request secret result = %d, secret = '%s', requesterId = %d" % (result, secret, requesterId))
-## self.down_requestSecretResponse(requesterId, result, secret)
-
-
-## def __submitSecretReply(self, result, secret, requesterId, avId):
-## self.notify.debug("submit secret result = %d, secret = '%s', requesterId = %d, avId = %d" % (result, secret, requesterId, avId))
-## if result == 1:
-## # We successfully matched the secret, so we should do a
-## # few more sanity checks and then try to make friends.
-## if avId == requesterId:
-## # This is the requester's own secret!
-## result = 3
-## else:
-## # Ok, make us special friends.
-## self.makeSpecialFriends(requesterId, avId)
-
-## # In this case, the response gets sent after the
-## # friends transaction completes.
-## return
-
-## self.down_submitSecretResponse(requesterId, result, avId)
-
-## def __previousResponse(self, inviteeId, inviterId):
-## # Return the previous rejection code if this invitee has
-## # previously (recently) declined a friendship from this
-## # inviter, or None if there was no previous rejection.
-
-## now = globalClock.getRealTime()
-## if now - self.lastRollTime >= self.DeclineFriendshipTimeout:
-## self.declineFriends2 = self.declineFriends1
-## self.declineFriends1 = {}
-
-## # Now, is the invitee/inviter combination present in either
-## # map?
-## previous = None
-## if self.declineFriends1.has_key(inviteeId):
-## previous = self.declineFriends1[inviteeId].get(inviterId)
-## if previous != None:
-## return previous
-
-## if self.declineFriends2.has_key(inviteeId):
-## previous = self.declineFriends2[inviteeId].get(inviterId)
-## if previous != None:
-## return previous
-
-## # Nope, go ahead and ask.
-## return None
+ # We have to sit on this request for a few seconds before
+ # processing it. This delay is solely to discourage password
+ # guessing.
+ taskName = "secret-" + str(avId)
+ taskMgr.remove(taskName)
+ if FriendManagerAI.SecretDelay:
+ taskMgr.doMethodLater(FriendManagerAI.SecretDelay,
+ self.continueSubmission,
+ taskName,
+ extraArgs = (avId, secret))
+ else:
+ # No delay
+ self.continueSubmission(avId, secret)
+
+ def continueSubmission(self, avId, secret):
+ """continueSubmission(self, avId, secret)
+ Finishes the work of submitSecret, a short time later.
+ """
+ self.air.submitSecret(avId, secret)
+
+ def down_submitSecretResponse(self, recipient, result, avId):
+ """submitSecret(self, int8 result, int32 avId)
+
+ Sent by the AI to the client in response to submitSecret().
+ result is one of:
+
+ 0 - Failure. The secret is unknown or has timed out.
+ 1 - Success. You are now friends with the indicated avId.
+ 2 - Failure. One of the avatars has too many friends already.
+ 3 - Failure. You just used up your own secret.
+
+ """
+ self.sendUpdateToAvatarId(recipient, 'submitSecretResponse', [result, avId])
+
+
+ #Support methods
+
+ def newInvite(self, inviterId, inviteeId):
+ context = FriendManagerAI.nextContext
+ FriendManagerAI.nextContext += 1
+
+ invite = FriendManagerAI.Invite(context, inviterId, inviteeId)
+ FriendManagerAI.invites[context] = invite
+
+ # If the invitee has previously (recently) declined a
+ # friendship from this inviter, don't ask again.
+ previous = self.__previousResponse(inviteeId, inviterId)
+ if previous != None:
+ self.inviteeUnavailable(invite, previous + 10)
+ return
+
+ # If the invitee is presently being invited by someone else,
+ # we don't even have to bother him.
+ if inviteeId in FriendManagerAI.invitees:
+ self.inviteeUnavailable(invite, 0)
+ return
+
+ if invite.inviterId == invite.inviteeId:
+ # You can't be friends with yourself.
+ self.inviteeUnavailable(invite, 3)
+ return
+
+ # If the inviter is already involved in some other context,
+ # that one is now void.
+ if inviterId in FriendManagerAI.inviters:
+ self.cancelInvite(FriendManagerAI.inviters[inviterId])
+
+ FriendManagerAI.inviters[inviterId] = invite
+ FriendManagerAI.invitees[inviteeId] = invite
+
+ #self.air.queryObject(inviteeId, self.gotInvitee, invite)
+ #self.air.queryObject(inviterId, self.gotInviter, invite)
+ invite.inviter = self.air.doId2do.get(inviterId)
+ invite.invitee = self.air.doId2do.get(inviteeId)
+ if invite.inviter and invite.invitee:
+ self.beginInvite(invite)
+
+
+# def gotInviter(self, handle, invite):
+# if not invite.inviter:
+# invite.inviter = handle
+# if invite.invitee:
+# self.beginInvite(invite)
+
+# def gotInvitee(self, handle, invite):
+# if not invite.invitee:
+# invite.invitee = handle
+# if invite.inviter:
+# self.beginInvite(invite)
+
+ def beginInvite(self, invite):
+ # Ask the invitee if he is available to consider being
+ # someone's friend--that is, that he's not busy playing a
+ # minigame or something.
+
+ invite.inviteeKnows = 1
+ self.down_inviteeFriendQuery(invite.inviteeId, invite.inviterId,
+ invite.inviter.getName(),
+ invite.inviter.dna, invite.context)
+
+ def inviteeUnavailable(self, invite, code):
+ # Cannot make the request for one of these reasons:
+ #
+ # 0 - the invitee is busy
+ # 2 - the invitee is already your friend
+ # 3 - the invitee is yourself
+ # 4 - the invitee is ignoring you.
+ # 6 - the invitee not accepting friends
+ self.down_friendConsidering(invite.inviterId, code, invite.context)
+
+ # That ends the invitation.
+ self.clearInvite(invite)
+
+ def inviteeAvailable(self, invite):
+ # The invitee is considering our friendship request.
+ self.down_friendConsidering(invite.inviterId, 1, invite.context)
+
+
+ def noFriends(self, invite, yesNoMaybe):
+ # The invitee declined to make friends.
+ #
+ # 0 - no
+ # 2 - unable to answer; e.g. entered a minigame or something.
+ # 3 - the invitee has too many friends already.
+
+ if yesNoMaybe == 0 or yesNoMaybe == 3:
+ # The user explictly said no or has too many friends.
+ # Disallow this guy from asking again for the next ten
+ # minutes or so.
+
+ if invite.inviteeId not in self.declineFriends1:
+ self.declineFriends1[invite.inviteeId] = {}
+ self.declineFriends1[invite.inviteeId][invite.inviterId] = yesNoMaybe
+
+ self.down_friendResponse(invite.inviterId, yesNoMaybe, invite.context)
+ self.clearInvite(invite)
+
+ def makeFriends(self, invite):
+ # The invitee agreed to make friends.
+ self.air.makeFriends(invite.inviteeId, invite.inviterId, 0,
+ invite.context)
+ self.down_friendResponse(invite.inviterId, 1, invite.context)
+ # The reply will clear the context out when it comes in.
+
+ def makeSpecialFriends(self, requesterId, avId):
+ # The "requester" has typed in a codeword that successfully
+ # matches a friend in the world. Attempt to make the
+ # friendship (with chat permission), and send back a code
+ # indicating success or failure.
+
+ # Get a special Invite structure just for this purpose.
+ context = FriendManagerAI.nextContext
+ FriendManagerAI.nextContext += 1
+
+ invite = FriendManagerAI.Invite(context, requesterId, avId)
+ FriendManagerAI.invites[context] = invite
+
+ invite.sendSpecialResponse = 1
+
+ self.air.makeFriends(invite.inviteeId, invite.inviterId, 1,
+ invite.context)
+
+ def clearInvite(self, invite):
+ try:
+ del FriendManagerAI.invites[invite.context]
+ except:
+ pass
+
+ try:
+ del FriendManagerAI.inviters[invite.inviterId]
+ except:
+ pass
+
+ try:
+ del FriendManagerAI.invitees[invite.inviteeId]
+ except:
+ pass
+
+ def cancelInvite(self, invite):
+ if invite.inviteeKnows:
+ self.down_inviteeCancelFriendQuery(invite.inviteeId, invite.context)
+
+ invite.inviteeKnows = 0
+
+
+ def makeFriendsReply(self, result, context):
+ try:
+ invite = FriendManagerAI.invites[context]
+ except:
+ FriendManagerAI.notify.warning('Message for unknown context ' + repr(context))
+ return
+
+ if result:
+ # By now, the server has OK'ed the friends transaction.
+ # Update our internal bookkeeping so we remember who's
+ # friends with whom. This is mainly useful for correct
+ # accounting of the make-a-friend quest.
+ invitee = self.air.doId2do.get(invite.inviteeId)
+ inviter = self.air.doId2do.get(invite.inviterId)
+ if invitee != None:
+ invitee.extendFriendsList(invite.inviterId, invite.sendSpecialResponse)
+ self.air.questManager.toonMadeFriend(invitee, inviter)
+
+ #inviter = self.air.doId2do.get(invite.inviterId)
+ if inviter != None:
+ inviter.extendFriendsList(invite.inviteeId, invite.sendSpecialResponse)
+ self.air.questManager.toonMadeFriend(inviter, invitee)
+
+ if invite.sendSpecialResponse:
+ # If this flag is set, the "invite" was generated via the
+ # codeword system, instead of through the normal path. In
+ # this case, we need to send the acknowledgement back to
+ # the client.
+
+ if result:
+ # Success! Send a result code of 1.
+ result = 1
+ else:
+ # Failure, some friends list problem. Result code of 2.
+ result = 2
+
+ self.down_submitSecretResponse(invite.inviterId, result,
+ invite.inviteeId)
+
+ # Also send a notification to the other avatar, if he's on.
+ avatar = DistributedAvatarAI.DistributedAvatarAI(self.air)
+ avatar.doId = invite.inviteeId
+ avatar.d_friendsNotify(invite.inviterId, 2)
+
+ self.clearInvite(invite)
+
+
+
+ def __requestSecretReply(self, result, secret, requesterId):
+ self.notify.debug("request secret result = %d, secret = '%s', requesterId = %d" % (result, secret, requesterId))
+ self.down_requestSecretResponse(requesterId, result, secret)
+
+
+ def __submitSecretReply(self, result, secret, requesterId, avId):
+ self.notify.debug("submit secret result = %d, secret = '%s', requesterId = %d, avId = %d" % (result, secret, requesterId, avId))
+ if result == 1:
+ # We successfully matched the secret, so we should do a
+ # few more sanity checks and then try to make friends.
+ if avId == requesterId:
+ # This is the requester's own secret!
+ result = 3
+ else:
+ # Ok, make us special friends.
+ self.makeSpecialFriends(requesterId, avId)
+
+ # In this case, the response gets sent after the
+ # friends transaction completes.
+ return
+
+ self.down_submitSecretResponse(requesterId, result, avId)
+
+ def __previousResponse(self, inviteeId, inviterId):
+ # Return the previous rejection code if this invitee has
+ # previously (recently) declined a friendship from this
+ # inviter, or None if there was no previous rejection.
+
+ now = globalClock.getRealTime()
+ if now - self.lastRollTime >= self.DeclineFriendshipTimeout:
+ self.declineFriends2 = self.declineFriends1
+ self.declineFriends1 = {}
+
+ # Now, is the invitee/inviter combination present in either
+ # map?
+ previous = None
+ if inviteeId in self.declineFriends1:
+ previous = self.declineFriends1[inviteeId].get(inviterId)
+ if previous != None:
+ return previous
+
+ if inviteeId in self.declineFriends2:
+ previous = self.declineFriends2[inviteeId].get(inviterId)
+ if previous != None:
+ return previous
+
+ # Nope, go ahead and ask.
+ return None
diff --git a/otp/src/friends/FriendSecret.py b/otp/src/friends/FriendSecret.py
index 465f8b9e..a7b5f56f 100644
--- a/otp/src/friends/FriendSecret.py
+++ b/otp/src/friends/FriendSecret.py
@@ -788,7 +788,7 @@ def __gotAccountSecret(self, secret):
def __rejectAccountSecret(self, reason):
assert self.notify.debugCall()
- print "## rejectAccountSecret: reason = ", reason
+ print("## rejectAccountSecret: reason = ", reason)
self.ignore(OTPGlobals.PlayerFriendNewSecretEvent)
self.ignore(OTPGlobals.PlayerFriendRejectNewSecretEvent)
# TODO: handle more reasons
@@ -901,7 +901,7 @@ def __useAccountSecret(self, avId, friendInfo):
def __rejectUseAccountSecret(self, reason):
assert self.notify.debugCall("reason = %s" % reason)
- print "## rejectUseAccountSecret: reason = ", reason
+ print("## rejectUseAccountSecret: reason = ", reason)
self.ignore(OTPGlobals.PlayerFriendUpdateEvent)
self.ignore(OTPGlobals.PlayerFriendRejectUseSecretEvent)
diff --git a/otp/src/friends/GuildDB.py b/otp/src/friends/GuildDB.py
index c19cdeb5..a0872271 100644
--- a/otp/src/friends/GuildDB.py
+++ b/otp/src/friends/GuildDB.py
@@ -86,7 +86,7 @@ def __init__(self,host,port,user,passwd,dbname):
cursor.execute("CREATE DATABASE `%s`" % self.dbname)
if __debug__:
self.notify.debug("Database '%s' did not exist, created a new one!" % self.dbname)
- except _mysql_exceptions.ProgrammingError,e:
+ except _mysql_exceptions.ProgrammingError as e:
pass
cursor.execute("USE `%s`" % self.dbname)
@@ -97,14 +97,14 @@ def __init__(self,host,port,user,passwd,dbname):
cursor.execute("CREATE TABLE `guildinfo` (`gid` INT(32) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(21), `wantname` VARCHAR(21), `namestatus` INT(8), `create_date` DATETIME)")
if __debug__:
self.notify.debug("Table guildinfo did not exist, created a new one!")
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
pass
try:
cursor.execute("CREATE TABLE `member` (`gid` INT(32) UNSIGNED NOT NULL, `avid` INT(32) UNSIGNED NOT NULL PRIMARY KEY, `rank` INT(8) NOT NULL, FOREIGN KEY (`gid`) REFERENCES `guildinfo` (`gid`))")
if __debug__:
self.notify.debug("Table member did not exist, created a new one!")
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
pass
try:
@@ -113,7 +113,7 @@ def __init__(self,host,port,user,passwd,dbname):
cursor.execute("CREATE INDEX `avatarid` on guildtokens (avid)")
if __debug__:
self.notify.debug("Table guildtokens did not exist, created a new one!")
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
pass
# Commented out next table create function for the time being.
@@ -164,13 +164,13 @@ def createGuild(self, avId, isRetry=False):
guildId = cursor.fetchall()[0][0]
self.addMember(guildId, avId, 3)
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry:
raise e
else:
self.reconnect()
self.createGuild(avId,True)
- except _mysql_exceptions.IntegrityError,e:
+ except _mysql_exceptions.IntegrityError as e:
self.notify.warning("IntegrityError creating new guild for avId %s: %s. Rolling back." % (avId,e))
from direct.showbase import PythonUtil
self.notify.warning(str(PythonUtil.StackTrace()))
@@ -178,7 +178,7 @@ def createGuild(self, avId, isRetry=False):
def memberCount(self, guildId):
if not self.sqlAvailable:
- print "Guild DB Unavailable"
+ print("Guild DB Unavailable")
return 99999
try:
@@ -186,16 +186,16 @@ def memberCount(self, guildId):
cursor.execute("SELECT * FROM `member` where `gid` = %s" , guildId)
stuff = cursor.fetchall()
return len(stuff)
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
return self.memberCount(guildId)
- print "Guild DB failed member Count for ", guildId
+ print("Guild DB failed member Count for ", guildId)
return 9999
def verifyGuild(self, guildId):
if not self.sqlAvailable:
- print "Guild DB Unavailable"
+ print("Guild DB Unavailable")
return False
try:
@@ -206,14 +206,14 @@ def verifyGuild(self, guildId):
return True
else:
return False
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
return self.verifyGuild(guildId)
def queryStatus(self, avatarId):
if not self.sqlAvailable:
- print "Guild DB Unavailable"
+ print("Guild DB Unavailable")
return 0, "DB Unavailable", 0
try:
@@ -243,7 +243,7 @@ def queryStatus(self, avatarId):
change = 3
else:
change = 0
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
return self.queryStatus(avatarId)
@@ -259,7 +259,7 @@ def getName(self, guildId):
cursor.execute("SELECT * FROM `guildinfo` where `gid` = %s" , guildId)
stuff = cursor.fetchall()
return stuff[0][1]
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.getName(guildId)
@@ -304,7 +304,7 @@ def setWantName(self, guildId, wantname):
self.db.commit()
return success
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
return self.setWantName(guildId, wantname)
@@ -318,7 +318,7 @@ def getWantName(self, guildId):
cursor.execute("SELECT * FROM `guildinfo` where `gid` = %s" , guildId)
stuff = cursor.fetchall()
return stuff[0][2]
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.getWantName(guildId)
@@ -337,7 +337,7 @@ def approveName(self, guildId):
cursor.execute("UPDATE `guildinfo` SET `name` = %s WHERE `gid` = %s" , (wantname, guildId))
cursor.execute("UPDATE `guildinfo` SET `namestatus` = %s WHERE `gid` = %s" , (APPROVE_FLAG, guildId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.approveName(guildId)
@@ -354,7 +354,7 @@ def rejectName(self, guildId):
cursor.execute("UPDATE `guildinfo` SET `wantname` = 'Rejected' WHERE `gid` = %s" , (guildId))
cursor.execute("UPDATE `guildinfo` SET `namestatus` = %s WHERE `gid` = %s" , (DENY_FLAG, guildId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.rejectName(guildId)
@@ -367,7 +367,7 @@ def nameProcessed(self, guildId, newval):
try:
cursor.execute("UPDATE `guildinfo` SET `namestatus` = %s WHERE `gid` = %s" , (newval, guildId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.nameProcessed(guildId, newval)
@@ -384,12 +384,12 @@ def addMember(self, guildId, avId, rank):
cursor = self.db.cursor()
cursor.execute("INSERT INTO `member` VALUES (%s, %s, %s)" , (guildId, avId, rank))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "GuildDB::addMember - reconnect"
+ print("GuildDB::addMember - reconnect")
self.addMember(guildId, avId, rank)
return
- except _mysql_exceptions.IntegrityError,e:
+ except _mysql_exceptions.IntegrityError as e:
self.notify.warning("IntegrityError adding avId %s to guild %s: %s. Rolling back." % (avId,guildId,e))
from direct.showbase import PythonUtil
self.notify.warning(str(PythonUtil.StackTrace()))
@@ -409,7 +409,7 @@ def removeMember(self, avId, guildId, guildRank):
cursor.execute("UPDATE `guildinfo` SET `wantname` = %s WHERE `gid` = %s" , (0, guildId))
cursor.execute("UPDATE `guildinfo` SET `namestatus` = %s WHERE `gid` = %s" , (NOACTION_FLAG, guildId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.removeMember(avId)
return
@@ -424,7 +424,7 @@ def removeGuild(self, guildId):
cursor.execute("DELETE FROM `guildtokens` WHERE `gid` = %s" , guildId)
cursor.execute("DELETE FROM `guildinfo` WHERE `gid` = %s", guildId)
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.removeGuild(guildId)
return
@@ -438,7 +438,7 @@ def changeRank(self, avId, rank):
try:
cursor.execute("UPDATE `member` SET `rank` = %s WHERE `avId` = %s" , (rank, avId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.changeRank(avId, rank)
@@ -454,9 +454,9 @@ def getMembers(self, guildId):
cursor.execute("SELECT * FROM `member` where `gid` = %s" , guildId)
members = cursor.fetchall()
return members
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Operational Error"
+ print("DEBUG - Operational Error")
return self.getMembers(guildId)
def genToken(self):
@@ -486,9 +486,9 @@ def isTokenUnique(self, token):
return 1
else:
return 0
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Operational Error"
+ print("DEBUG - Operational Error")
return self.isTokenUnique(token)
def redeemToken(self, token, avId):
@@ -507,9 +507,9 @@ def redeemToken(self, token, avId):
pass
else:
raise Exception("INVALID_TOKEN")
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Operational Error"
+ print("DEBUG - Operational Error")
return self.redeemToken(token, avId)
@@ -554,7 +554,7 @@ def deleteFriendToken(self, token):
cursor = self.db.cursor()
cursor.execute("DELETE FROM `guildtokens` WHERE `tokenid` = %s" , token)
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.deleteFriendToken(token)
return
@@ -580,9 +580,9 @@ def checkForTooManyTokens(self, avId):
else:
return False
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Operational Error - Checking for Too Many Tokens from AVID"
+ print("DEBUG - Operational Error - Checking for Too Many Tokens from AVID")
return self.checkForTooManyTokens(avId)
def getFriendToken(self, guildId, avId, ttl = 10):
@@ -638,9 +638,9 @@ def getFriendToken(self, guildId, avId, ttl = 10):
cursor = self.db.cursor()
cursor.execute("INSERT INTO `guildtokens` VALUES (%s, %s, %s, %s, %s, NULL)", (ourToken, date_time, ttl, guildId, avId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "GuildDB::getFriendToken Error "
+ print("GuildDB::getFriendToken Error ")
self.getFriendToken(guildId, avId, ttl)
# Step Four:
@@ -656,7 +656,7 @@ def changeTokenRValue(self, avatarId, tokenString, rValue):
cursor = self.db.cursor()
cursor.execute("UPDATE `guildtokens` SET `rcount` = %s WHERE `avid` = %s AND `tokenid` = %s", (rValue, avatarId, tokenString))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.changeTokenRValue(avatarId, tokenString, rValue)
self.notify.debug('Guild Token (%s) rValue (%s) Updated for %s' % (tokenString, rValue, avatarId))
@@ -669,7 +669,7 @@ def decRCountInDB(self, token, avId, newRCount):
try:
cursor.execute("UPDATE `guildtokens` SET `rcount` = %s WHERE `tokenid` = %s AND `avid` = %s", (newRCount, token, avId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
self.decRCountInDB(token, avId, newRCount)
@@ -690,9 +690,9 @@ def tokenDeleteSQLCall(self, task):
cursor.execute("DELETE FROM `guildtokens` WHERE(`createtime` + INTERVAL `ttl` DAY) < NOW() AND `rcount` = NULL ORDER BY `createtime` LIMIT 100")
self.db.commit()
self.notify.debug('Executing expired token cleanup in DB. Deleting up to 100 expired/old tokens')
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "GuildDB::tokenDeleteSQLCall Error "
+ print("GuildDB::tokenDeleteSQLCall Error ")
self.tokenDeleteSQLCall(task)
return Task.again
@@ -713,9 +713,9 @@ def checkForUnlimitedUseToken(self, avId):
else:
return entries[0][0]
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Operational Error - checkForUnlimitedUseToken"
+ print("DEBUG - Operational Error - checkForUnlimitedUseToken")
return self.checkForUnlimitedUseToken(avId)
def returnLimitedUseTokens(self, avId):
@@ -733,9 +733,9 @@ def returnLimitedUseTokens(self, avId):
entries = cursor.fetchall()
recCount = len(entries)
return recCount
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Operational Error - returnLimitedUseTokens"
+ print("DEBUG - Operational Error - returnLimitedUseTokens")
return self.returnLimitedUseTokens(avId)
def clearLimitedUseTokens(self, avId):
@@ -748,9 +748,9 @@ def clearLimitedUseTokens(self, avId):
try:
cursor.execute("DELETE FROM `guildtokens` WHERE `avid` = %s AND (`rcount` != -1 OR `rcount` IS NULL)", (avId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Error in clearLimitedUseTokens - reconnecting to DB"
+ print("DEBUG - Error in clearLimitedUseTokens - reconnecting to DB")
self.clearLimitedUseTokens(avId)
return
@@ -764,9 +764,9 @@ def clearPermUseTokens(self, avId):
try:
cursor.execute("DELETE FROM `guildtokens` WHERE `avid` = %s AND `rcount` = -1", (avId))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - Error in clearPermUseTokens - reconnecting to DB"
+ print("DEBUG - Error in clearPermUseTokens - reconnecting to DB")
self.clearPermUseTokens(avId)
return
@@ -781,9 +781,9 @@ def suspendToken(self, avId, token):
try:
cursor.execute("UPDATE `guildtokens` SET `rcount` = -2 WHERE `avid` = %s AND `tokenid` = %s", (avId, token))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - reconnecting to DB in suspendToken"
+ print("DEBUG - reconnecting to DB in suspendToken")
self.suspendToken(avId, token)
return
@@ -798,9 +798,9 @@ def reEnableToken(self, avId, token):
try:
cursor.execute("UPDATE `guildtokens` SET `rcount` = -1 WHERE `avid` = %s AND `tokenid` = %s", (avId, token))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.reconnect()
- print "DEBUG - reconnecting to DB in reEnableToken"
+ print("DEBUG - reconnecting to DB in reEnableToken")
self.reEnableToken(avId, token)
return
diff --git a/otp/src/friends/GuildManager.py b/otp/src/friends/GuildManager.py
index a2b47860..01582948 100644
--- a/otp/src/friends/GuildManager.py
+++ b/otp/src/friends/GuildManager.py
@@ -11,7 +11,7 @@
GUILDRANK_MEMBER = 1
-import Queue
+import queue
class GuildMemberInfo(AvatarHandle):
def __init__(self, name, isOnline, rank, bandId):
@@ -279,19 +279,19 @@ def guildNameChange(self, guildName, changeStatus):
base.localAvatar.guildNameChange(guildName, changeStatus)
def guildNameUpdate(self, avatarId, guildName):
- print "DEBUG - guildNameUpdate for ", avatarId, " to ", guildName
+ print("DEBUG - guildNameUpdate for ", avatarId, " to ", guildName)
def invitationFrom(self, avatarId, avatarName, guildId, guildName):
- print "GM invitationFrom %s(%d)" % (avatarName,avatarId)
+ print("GM invitationFrom %s(%d)" % (avatarName,avatarId))
if hasattr(base, "localAvatar"):
base.localAvatar.guiMgr.handleGuildInvitation(avatarId, avatarName, guildId, guildName)
def retractInvite(self,avatarId):
- print "GM retraction"
+ print("GM retraction")
def guildAcceptInvite(self, avatarId):
# Tell ourselves the person we are inviting accepted us
- print "sending accept event"
+ print("sending accept event")
messenger.send(OTPGlobals.GuildAcceptInviteEvent,[avatarId])
def leaderboardTopTen(self, stuff):
diff --git a/otp/src/friends/GuildManagerUD.py b/otp/src/friends/GuildManagerUD.py
index 79388e4b..77737682 100644
--- a/otp/src/friends/GuildManagerUD.py
+++ b/otp/src/friends/GuildManagerUD.py
@@ -1,4 +1,4 @@
-from itertools import izip
+
from direct.distributed.DistributedObjectGlobalUD import DistributedObjectGlobalUD
from otp.distributed import OtpDoGlobals
from otp.ai import AIMsgTypes
@@ -100,14 +100,14 @@ def __init__(self, air):
def tallyFunction(self,funcName):
if funcName not in self.funcTally:
self.funcTally[funcName] = 1
- funcs = self.funcTally.keys()
+ funcs = list(self.funcTally.keys())
funcs.sort()
self.notify.info("funcs tallied: %s" % funcs)
else:
self.funcTally[funcName] += 1
def logFuncTally(self,task):
- funcs = self.funcTally.keys()
+ funcs = list(self.funcTally.keys())
funcs.sort()
str = ["%s" % self.funcTally[f] for f in funcs]
str = string.join(str," ")
@@ -127,7 +127,7 @@ def announceGenerate(self):
def delete(self):
assert self.notify.debugCall()
self.ignoreAll()
- for i in self.asyncRequests.values():
+ for i in list(self.asyncRequests.values()):
i.delete()
DistributedObjectGlobalUD.delete(self)
@@ -193,7 +193,7 @@ def _sendFinishedList(self, player):
if guildInfo:
if 0:
# alternate coolness
- guildmates, haveData = izip(*guildInfo)
+ guildmates, haveData = zip(*guildInfo)
else:
guildmates = [x[0] for x in guildInfo]
haveData = [x[1] for x in guildInfo]
@@ -233,7 +233,7 @@ def _sendFinishedLists(self, arrivingPlayer):
that list.
"""
finishedLists = []
- for player,guildInfo in self.pendingSends.iteritems():
+ for player,guildInfo in self.pendingSends.items():
send = True
for infoItem in guildInfo:
[(guildId,avId,rank), haveData] = infoItem
@@ -294,7 +294,7 @@ def memberInfoFailure(self, avatarId, context):
self.db.removeMember(avatarId, gId, rank)
- for recipientId in self.pendingSends.keys():
+ for recipientId in list(self.pendingSends.keys()):
info = self.pendingSends.get(recipientId,[])
newInfo = []
rep = False
@@ -319,7 +319,7 @@ def memberList(self):
# queue us a member list send
haveData = [(avId in self.avatarName) for guildId,avId,rank in guildfolk]
- self.pendingSends[avatarId] = [[x,y] for x,y in izip(guildfolk,haveData)]
+ self.pendingSends[avatarId] = [[x,y] for x,y in zip(guildfolk,haveData)]
if False not in haveData:
self._sendFinishedLists(avatarId)
@@ -531,7 +531,7 @@ def requestInvite(self, otherAvatarId):
self.air.writeServerEvent('requestGuildInvite', avatarId, '%s|%s' % (otherAvatarId, name))
guildid, guildname, guildrank, change = self.db.queryStatus(avatarId)
- print "DEBUG, query came back: ", guildid, " ", guildname
+ print("DEBUG, query came back: ", guildid, " ", guildname)
otherguild, othername, otherrank, otherchange = self.db.queryStatus(otherAvatarId)
if guildrank < GUILDRANK_OFFICER:
@@ -578,7 +578,7 @@ def requestLeaderboardTopTen(self):
self.air.send(dg)
def testThis(self, args):
- print "DEBUG: sending setValue and getValuesRespondTo"
+ print("DEBUG: sending setValue and getValuesRespondTo")
dcfile = self.air.getDcFile()
dclass = dcfile.getClassByName('LeaderBoard')
@@ -599,7 +599,7 @@ def testThis(self, args):
def getValuesResponce(self, contest, stuff):
# This should automatically get called in response by the dclass object
# No additional catch/subscribe required
- print "DEBUG: GuildManagerUD:getValuesResponce"
+ print("DEBUG: GuildManagerUD:getValuesResponce")
import pdb; pdb.set_trace();
def getTopTenResponce(self, contest, stuff):
@@ -728,7 +728,7 @@ def sendTokenForJoinRequest(self, token, name):
try:
results = self.db.redeemToken(token, avatarId)
- except Exception,e:
+ except Exception as e:
if e.args[0] == "INVALID_TOKEN":
guildName = '***ERROR - GUILD CODE INVALID***'
self.sendTokenRedeemMessage(requestId, guildName)
diff --git a/otp/src/friends/PlayerFriendsManager.py b/otp/src/friends/PlayerFriendsManager.py
index 3672dbc9..0643e380 100644
--- a/otp/src/friends/PlayerFriendsManager.py
+++ b/otp/src/friends/PlayerFriendsManager.py
@@ -32,7 +32,7 @@ def delete(self):
self.ignoreAll()
def sendRequestInvite(self,playerId):
- print ("PFM sendRequestInvite id:%s" % (playerId))
+ print(("PFM sendRequestInvite id:%s" % (playerId)))
assert self.notify.debugCall()
self.sendUpdate("requestInvite", [0,playerId,True])
@@ -104,17 +104,17 @@ def rejectRemove(self,playerId,reason):
messenger.send(OTPGlobals.PlayerFriendRejectRemoveEvent,[playerId,reason])
def secretResponse(self,secret):
- print ("secretResponse %s"%(secret))
+ print(("secretResponse %s"%(secret)))
assert self.notify.debugCall()
messenger.send(OTPGlobals.PlayerFriendNewSecretEvent,[secret])
def rejectSecret(self,reason):
- print ("rejectSecret %s"%(reason))
+ print(("rejectSecret %s"%(reason)))
assert self.notify.debugCall()
messenger.send(OTPGlobals.PlayerFriendRejectNewSecretEvent,[reason])
def rejectUseSecret(self,reason):
- print ("rejectUseSecret %s"%(reason))
+ print(("rejectUseSecret %s"%(reason)))
assert self.notify.debugCall()
messenger.send(OTPGlobals.PlayerFriendRejectUseSecretEvent,[reason])
@@ -140,7 +140,7 @@ def updatePlayerFriend(self,id,info,isNewFriend):
self.playerId2Info[id] = info
messenger.send(OTPGlobals.PlayerFriendAddEvent,[id,info,isNewFriend])
#need to detect if the playerFriend is coming online so we can send a message
- elif self.playerId2Info.has_key(id):
+ elif id in self.playerId2Info:
if (not self.playerId2Info[id].onlineYesNo) and info.onlineYesNo:
#send "coming online message"
self.playerId2Info[id] = info
@@ -221,11 +221,11 @@ def findPlayerInfoFromAvId(self, avId):
def askAvatarOnline(self, avId):
returnValue = 0
- if self.cr.doId2do.has_key(avId):
+ if avId in self.cr.doId2do:
returnValue = 1
- if self.playerAvId2avInfo.has_key(avId):
+ if avId in self.playerAvId2avInfo:
playerId = self.findPlayerIdFromAvId(avId)
- if self.playerId2Info.has_key(playerId):
+ if playerId in self.playerId2Info:
playerInfo = self.playerId2Info[playerId]
if playerInfo.onlineYesNo:
returnValue = 1
@@ -239,7 +239,7 @@ def countTrueFriends(self):
return count
def askTransientFriend(self, avId):
- if self.playerAvId2avInfo.has_key(avId) and not base.cr.isAvatarFriend(avId):
+ if avId in self.playerAvId2avInfo and not base.cr.isAvatarFriend(avId):
return 1
else:
return 0
@@ -257,7 +257,7 @@ def askAvatarKnownElseWhere(self, avId):
return 0
def askAvatarKnownHere(self, avId):
- if self.playerAvId2avInfo.has_key(avId):
+ if avId in self.playerAvId2avInfo:
return 1
else:
return 0
@@ -274,7 +274,7 @@ def __handleFriendHandles(self, handleList):
messenger.send('friendsListChanged')
def getAvHandleFromId(self, avId):
- if self.playerAvId2avInfo.has_key(avId):
+ if avId in self.playerAvId2avInfo:
return self.playerAvId2avInfo[avId]
else:
return None
@@ -300,7 +300,7 @@ def identifyAvatar(self, doId):
Returns either an avatar or a FriendHandle, whichever we can
find, to reference the indicated doId.
"""
- if base.cr.doId2do.has_key(doId):
+ if doId in base.cr.doId2do:
return base.cr.doId2do[doId]
else:
return self.identifyFriend(doId)
diff --git a/otp/src/friends/PlayerFriendsManagerUD.py b/otp/src/friends/PlayerFriendsManagerUD.py
index 1e3b921c..f9134be1 100644
--- a/otp/src/friends/PlayerFriendsManagerUD.py
+++ b/otp/src/friends/PlayerFriendsManagerUD.py
@@ -171,11 +171,11 @@ def recvFriendsUpdate(self,accountId,accountInfo,friends):
accountInfo.openChatEnabledYesNo)
if accountInfo.onlineYesNo:
- self.sendUpdateToChannel((3L<<32)+accountId,
+ self.sendUpdateToChannel((3<<32)+accountId,
"updatePlayerFriend",
[friendId,friendInfo,0])
- self.sendUpdateToChannel((3L<<32)+friend[0],
+ self.sendUpdateToChannel((3<<32)+friend[0],
"updatePlayerFriend",
[accountId,accountInfo,0])
@@ -215,28 +215,28 @@ def requestRemove(self, senderId, otherAccountId):
self.removeFriendship(accountId,otherAccountId)
def recvInviteNotice(self, inviteeId, inviterId, inviterAvName):
- self.sendUpdateToChannel((3L<<32)+inviteeId, "invitationFrom", [inviterId,inviterAvName])
+ self.sendUpdateToChannel((3<<32)+inviteeId, "invitationFrom", [inviterId,inviterAvName])
def recvInviteRetracted(self, inviteeId, inviterId):
- self.sendUpdateToChannel((3L<<32)+inviteeId, "retractInvite", [inviterId])
+ self.sendUpdateToChannel((3<<32)+inviteeId, "retractInvite", [inviterId])
def recvInviteRejected(self, inviterId, inviteeId, reason):
- self.sendUpdateToChannel((3L<<32)+inviterId, "rejectInvite", [inviteeId, reason])
+ self.sendUpdateToChannel((3<<32)+inviterId, "rejectInvite", [inviteeId, reason])
def recvFriendshipRemoved(self,accountId,otherAccountId):
self.notify.debug("recvFriendshipRemoved on %d,%d"%(accountId,otherAccountId))
- self.sendUpdateToChannel((3L<<32)+accountId,"removePlayerFriend",[otherAccountId])
- self.sendUpdateToChannel((3L<<32)+otherAccountId,"removePlayerFriend",[accountId])
+ self.sendUpdateToChannel((3<<32)+accountId,"removePlayerFriend",[otherAccountId])
+ self.sendUpdateToChannel((3<<32)+otherAccountId,"removePlayerFriend",[accountId])
# SECRETS
def requestUnlimitedSecret(self,senderId):
- print "# got unlimited secret request"
+ print("# got unlimited secret request")
self.sendSecretRequest(senderId)
def requestLimitedSecret(self,senderId,parentUsername,parentPassword):
- print "# got limited secret request"
+ print("# got limited secret request")
self.sendSecretRequest(senderId,parentUsername,parentPassword)
def requestUseUnlimitedSecret(self,senderId,secret):
@@ -246,16 +246,16 @@ def requestUseLimitedSecret(self,senderId,secret,parentUsername,parentPassword):
self.sendSecretRedeem(senderId,secret,parentUsername,parentPassword)
def recvAddFriendshipError(self,playerId,error):
- self.sendUpdateToChannel((3L<<32)+playerId,"rejectInvite",[error])
+ self.sendUpdateToChannel((3<<32)+playerId,"rejectInvite",[error])
def recvSecretGenerated(self,playerId,secret):
- self.sendUpdateToChannel((3L<<32)+playerId,"secretResponse",[secret])
+ self.sendUpdateToChannel((3<<32)+playerId,"secretResponse",[secret])
def recvSecretRequestError(self,playerId,error):
- self.sendUpdateToChannel((3L<<32)+playerId,"rejectSecret",[error])
+ self.sendUpdateToChannel((3<<32)+playerId,"rejectSecret",[error])
def recvSecretRedeemError(self,playerId,error):
- self.sendUpdateToChannel((3L<<32)+playerId,"rejectUseSecret",[error])
+ self.sendUpdateToChannel((3<<32)+playerId,"rejectUseSecret",[error])
# WHISPERS
@@ -371,15 +371,15 @@ def whisperSCQuestTo(self,senderId,playerId,msgData):
def recvWhisper(self,recipientId,senderId,msgText):
self.log.debug("Received open whisper from %d to %d: %s" % (senderId,recipientId,msgText))
- self.sendUpdateToChannel((3L<<32)+recipientId,"whisperFrom",[senderId,msgText])
+ self.sendUpdateToChannel((3<<32)+recipientId,"whisperFrom",[senderId,msgText])
def recvWLWhisper(self,recipientId,senderId,msgText):
self.log.debug("Received WLwhisper from %d to %d: %s" % (senderId,recipientId,msgText))
- self.sendUpdateToChannel((3L<<32)+recipientId,"whisperWLFrom",[senderId,msgText])
+ self.sendUpdateToChannel((3<<32)+recipientId,"whisperWLFrom",[senderId,msgText])
def recvSCWhisper(self,recipientId,senderId,msgText):
self.log.debug("Received SCwhisper from %d to %d: %s" % (senderId,recipientId,msgText))
- self.sendUpdateToChannel((3L<<32)+recipientId,"whisperSCFrom",[senderId,msgText])
+ self.sendUpdateToChannel((3<<32)+recipientId,"whisperSCFrom",[senderId,msgText])
def recvEnterPlayer(self,playerId,playerInfo,friendsList):
self.log.debug("Saw player %d enter."%playerId)
@@ -392,7 +392,7 @@ def recvEnterPlayer(self,playerId,playerInfo,friendsList):
playerInfo.understandableYesNo = friendInfo.openChatFriendshipYesNo or \
(friendInfo.openChatEnabledYesNo and \
playerInfo.openChatEnabledYesNo)
- self.sendUpdateToChannel((3L<<32)+friend,
+ self.sendUpdateToChannel((3<<32)+friend,
"updatePlayerFriend",
[playerId,playerInfo,0])
@@ -408,7 +408,7 @@ def recvExitPlayer(self,playerId,playerInfo,friendsList):
playerInfo.understandableYesNo = friendInfo.openChatFriendshipYesNo or \
(friendInfo.openChatEnabledYesNo and \
playerInfo.openChatEnabledYesNo)
- self.sendUpdateToChannel((3L<<32)+friend,
+ self.sendUpdateToChannel((3<<32)+friend,
"updatePlayerFriend",
[playerId,playerInfo,0])
@@ -418,12 +418,12 @@ def recvExitPlayer(self,playerId,playerInfo,friendsList):
def _getFriendView(self, viewerId, friendId, info=None):
if info is None:
info = self.accountId2Info[friendId]
- if self.accountId2Friends.has_key(viewerId):
+ if viewerId in self.accountId2Friends:
if [friendId,True] in self.accountId2Friends[viewerId]:
info.openChatFriendshipYesNo = 1
else:
info.openChatFriendshipYesNo = 0
- elif self.accountId2Friends.has_key(friendId):
+ elif friendId in self.accountId2Friends:
if [viewerId,True] in self.accountId2Friends[friendId]:
info.openChatFriendshipYesNo = 1
else:
diff --git a/otp/src/launcher/DummyLauncherBase.py b/otp/src/launcher/DummyLauncherBase.py
index 25723b23..21aa070a 100644
--- a/otp/src/launcher/DummyLauncherBase.py
+++ b/otp/src/launcher/DummyLauncherBase.py
@@ -136,7 +136,7 @@ def fakeDownloadPhaseTask(self, task):
self.setPhaseComplete(task.phase, percentComplete)
messenger.send("launcherPercentPhaseComplete", [task.phase, percentComplete, 0, 0])
if (percentComplete >= 100.0):
- messenger.send('phaseComplete-' + `task.phase`)
+ messenger.send('phaseComplete-' + repr(task.phase))
return Task.done
else:
return Task.cont
diff --git a/otp/src/launcher/LauncherBase.py b/otp/src/launcher/LauncherBase.py
index fb3224d1..aa3ee39b 100644
--- a/otp/src/launcher/LauncherBase.py
+++ b/otp/src/launcher/LauncherBase.py
@@ -9,7 +9,7 @@
import os
import time
import string
-import __builtin__
+import builtins
from pandac.libpandaexpressModules import *
# Import DIRECT files
from direct.showbase.MessengerGlobal import *
@@ -138,7 +138,7 @@ def __init__(self):
# This line is to ensure that Python is running in opt mode -OO.
if __debug__:
- print "WARNING: Client should run Python optimized -OO"
+ print("WARNING: Client should run Python optimized -OO")
self.taskMgrStarted = False
@@ -196,16 +196,16 @@ def __init__(self):
os.system('/sbin/ifconfig -a >>' + logfile)
# Write to the log
- print "\n\nStarting %s..." % self.GameName
- print ("Current time: " + time.asctime(time.localtime(time.time()))
- + " " + time.tzname[0])
- print "sys.path = ", sys.path
- print "sys.argv = ", sys.argv
- print "os.environ = ", os.environ
+ print("\n\nStarting %s..." % self.GameName)
+ print(("Current time: " + time.asctime(time.localtime(time.time()))
+ + " " + time.tzname[0]))
+ print("sys.path = ", sys.path)
+ print("sys.argv = ", sys.argv)
+ print("os.environ = ", os.environ)
if(len(sys.argv)>=self.ArgCount):
Configrc_args = sys.argv[self.ArgCount-1]
- print("generating configrc using: '" + Configrc_args + "'")
+ print(("generating configrc using: '" + Configrc_args + "'"))
else:
Configrc_args = ""
print("generating standard configrc")
@@ -216,9 +216,9 @@ def __init__(self):
# arguments to pass to Configrc.exe, but the use of Configrc.exe
# itself is a stopgap until we can replace that system with the newer
# signed prc file system.
- if os.environ.has_key("PRC_EXECUTABLE_ARGS"):
- print "PRC_EXECUTABLE_ARGS is set to: " + os.environ["PRC_EXECUTABLE_ARGS"]
- print "Resetting PRC_EXECUTABLE_ARGS"
+ if "PRC_EXECUTABLE_ARGS" in os.environ:
+ print("PRC_EXECUTABLE_ARGS is set to: " + os.environ["PRC_EXECUTABLE_ARGS"])
+ print("Resetting PRC_EXECUTABLE_ARGS")
# Cannot assign to os.environ here; we have to use
# ExecutionEnvironment to make the low-level prc respect it.
@@ -227,9 +227,9 @@ def __init__(self):
# Actually, we still have to set CONFIG_CONFIG too, since Configrc.exe
# itself expects that.
- if os.environ.has_key("CONFIG_CONFIG"):
- print "CONFIG_CONFIG is set to: " + os.environ["CONFIG_CONFIG"]
- print "Resetting CONFIG_CONFIG"
+ if "CONFIG_CONFIG" in os.environ:
+ print("CONFIG_CONFIG is set to: " + os.environ["CONFIG_CONFIG"])
+ print("Resetting CONFIG_CONFIG")
os.environ["CONFIG_CONFIG"] = ":_:configdir_.:configpath_:configname_Configrc.exe:configexe_1:configargs_-stdout " + Configrc_args
# Now reload the Configrc file. We've actually already run it
@@ -239,7 +239,7 @@ def __init__(self):
# This is our config object until we get the show running
launcherConfig = getConfigExpress()
- __builtin__.config = launcherConfig
+ builtins.config = launcherConfig
# We'll need a MiniTaskManager to manage our download tasks
# before we've downloaded enough to start the real one.
@@ -363,7 +363,7 @@ def __init__(self):
self.fromCD = 0
else:
self.fromCD = tmpVal
- self.notify.info('patch directory is ' + `self.fromCD`)
+ self.notify.info('patch directory is ' + repr(self.fromCD))
assert self.notify.debug("init: Launcher found install dir: " + self.topDir.cStr())
@@ -424,7 +424,7 @@ def __init__(self):
phaseIdx = 0
for phase in self.LauncherPhases:
# Clear the registry on each phase's percentage completion
- percentPhaseCompleteKey = "PERCENT_PHASE_COMPLETE_" + `phase`
+ percentPhaseCompleteKey = "PERCENT_PHASE_COMPLETE_" + repr(phase)
self.setRegistry(percentPhaseCompleteKey, 0)
# Initialize
self.phaseComplete[phase] = 0
@@ -1443,7 +1443,7 @@ def getProgressSum(self, phase):
# given the phase lookup its sum
sum = 0
- for i in xrange(0,len(self.linesInProgress)):
+ for i in range(0,len(self.linesInProgress)):
# search for phase and sum the sizes for each
if self.linesInProgress[i].find(phase) > -1:
#split it, find the size, add to the sum
@@ -1474,7 +1474,7 @@ def readProgressFile(self):
self.progressSum = self.getProgressSum(token)
# deduct phase_2 files, I don't think this is downloaded
self.progressSum -= self.getProgressSum(token + '2')
- self.notify.info('total phases to be downloaded = ' + `self.progressSum`)
+ self.notify.info('total phases to be downloaded = ' + repr(self.progressSum))
# done reading the file, now carry on with client download
self.checkClientDbExists()
@@ -1621,7 +1621,7 @@ def maybeStartGame(self):
# Go into the background now since Panda will be fired up shortly
self.background()
# Put ourselves in the global dict
- __builtin__.launcher = self
+ builtins.launcher = self
# Start the show
self.startGame()
@@ -1703,7 +1703,7 @@ def mainLoop(self):
sys.exit()
def updatePhase(self, phase):
- self.notify.info('Updating multifiles in phase: ' + `phase`)
+ self.notify.info('Updating multifiles in phase: ' + repr(phase))
# Phase may need downloading, clear the percentage to 0
self.setPercentPhaseComplete(self.currentPhase, 0)
assert(self.dldb)
@@ -1732,7 +1732,7 @@ def updateNextMultifile(self):
for i in range(self.dldb.getServerNumMultifiles()):
mfname = self.dldb.getServerMultifileName(i)
phase = self.dldb.getServerMultifilePhase(mfname)
- print i, mfname, phase
+ print(i, mfname, phase)
# This will exit
self.handleGenericMultifileError()
@@ -1758,14 +1758,14 @@ def updateNextMultifile(self):
# Phase all done, now set the percent to really be 100
self.setPercentPhaseComplete(self.currentPhase, 100)
# Now we are done updating all the multifiles for this phase
- self.notify.info('Done updating multifiles in phase: ' + `self.currentPhase`)
+ self.notify.info('Done updating multifiles in phase: ' + repr(self.currentPhase))
# Also update the overall progress bar
self.progressSoFar += int(round(self.phaseOverallMap[self.currentPhase]*100))
- self.notify.info('progress so far ' + `self.progressSoFar`)
+ self.notify.info('progress so far ' + repr(self.progressSoFar))
#self.forceSleep()
# Send the phase complete event in case anybody cares
- messenger.send('phaseComplete-' + `self.currentPhase`)
+ messenger.send('phaseComplete-' + repr(self.currentPhase))
if nextIndex < len(self.LauncherPhases):
# go to the next phase
self.currentPhase = self.LauncherPhases[nextIndex]
@@ -2123,7 +2123,7 @@ def getPatchFilename(self, fname, currentVersion):
# Example:
# fname = foo.rgb.v1
# patch = foo.rgb.v1.pch
- return (fname + '.v' + `currentVersion` + '.' + self.patchExtension)
+ return (fname + '.v' + repr(currentVersion) + '.' + self.patchExtension)
#============================================================
# Patching functions
@@ -2155,7 +2155,7 @@ def downloadPatches(self):
else:
# Now we are done applying all patches for this multifile
self.notify.info('applyNextPatch: Done patching multifile: '
- + `self.currentPhase`)
+ + repr(self.currentPhase))
# Ok, we are done patching. Lets run through the patchAndHash step
# again to make sure we are all clean. If it decides we are, it will
# move on to the next multifile
@@ -2173,7 +2173,7 @@ def downloadPatchDone(self):
def decompressPatchDone(self):
self.notify.info('decompressPatchDone: Patching file: ' + self.currentPatchee
- + ' from ver: ' + `self.currentPatchVersion`)
+ + ' from ver: ' + repr(self.currentPatchVersion))
# Determine the filenames
patchFile = Filename(self.patchDir, Filename(self.currentPatch))
patchFile.setBinary()
@@ -2199,7 +2199,7 @@ def patchDone(self):
def startReextractingFiles(self):
# See if there are any files to patch
- self.notify.info('startReextractingFiles: Reextracting ' + `len(self.reextractList)`
+ self.notify.info('startReextractingFiles: Reextracting ' + repr(len(self.reextractList))
+ ' files for multifile: ' + self.currentMfname)
self.launcherMessage(self.Localizer.LauncherRecoverFiles)
# read in the multifile
@@ -2221,7 +2221,7 @@ def reextractNextFile(self):
failure = 1
else:
self.notify.warning('reextractNextFile: File not found in multifile: '
- + `currentReextractFile`)
+ + repr(currentReextractFile))
failure = 1
if failure:
@@ -2230,7 +2230,7 @@ def reextractNextFile(self):
# Now we are done extracting files for this multifile
self.notify.info('reextractNextFile: Done reextracting files for multifile: '
- + `self.currentPhase`)
+ + repr(self.currentPhase))
# Ok, now move on to the next multifile
del self.currentMfile
self.updateMultifileDone()
@@ -2280,7 +2280,7 @@ def patchMultifile(self):
elif (clientVer > 1):
self.notify.info('patchMultifile: Old version for multifile: ' +
- self.currentMfname + ' Client ver: ' + `clientVer`)
+ self.currentMfname + ' Client ver: ' + repr(clientVer))
self.maybeStartGame()
self.totalPatchDownload = 0
self.patchDownloadSoFar = 0
@@ -2292,7 +2292,7 @@ def patchMultifile(self):
# sum the file size to totalPatchDownload (phase_3 only)
if (self.currentPhase == 3):
self.totalPatchDownload += self.getProgressSum(patch)
- self.notify.info('total patch to be downloaded = ' + `self.totalPatchDownload`)
+ self.notify.info('total patch to be downloaded = ' + repr(self.totalPatchDownload))
self.downloadPatches()
return
@@ -2486,7 +2486,7 @@ def getReferrerCode(self):
return self.getValue(self.ReferrerKey, None)
def getPhaseComplete(self, phase):
- assert(self.phaseComplete.has_key(phase))
+ assert(phase in self.phaseComplete)
percentDone = self.phaseComplete[phase]
return (percentDone == 100)
@@ -2501,7 +2501,7 @@ def setPercentPhaseComplete(self, phase, percent):
messenger.send("launcherPercentPhaseComplete",
[phase, percent, self.getBandwidth(), self.byteRate])
# Also set the value in the registry
- percentPhaseCompleteKey = "PERCENT_PHASE_COMPLETE_" + `phase`
+ percentPhaseCompleteKey = "PERCENT_PHASE_COMPLETE_" + repr(phase)
self.setRegistry(percentPhaseCompleteKey, percent)
# now calculate an overall percenatage
@@ -2614,7 +2614,7 @@ def increaseBandwidth(self, targetBandwidth = None):
# if we have a long way to go.
self.bandwidthIndex += 1
assert self.notify.debug('increaseBandwidth: Increasing bandwidth to: '
- + `self.getBandwidth()`)
+ + repr(self.getBandwidth()))
self.everIncreasedBandwidth = 1
self.setBandwidth()
return 1
@@ -2661,7 +2661,7 @@ def decreaseBandwidth(self, targetBandwidth = None):
self.bandwidthIndex -= 1
assert self.notify.debug('decreaseBandwidth: Decreasing bandwidth to: '
- + `self.getBandwidth()`)
+ + repr(self.getBandwidth()))
self.setBandwidth()
return 1
@@ -2775,7 +2775,7 @@ def increaseBandwidth(self, targetBandwidth = None):
# if we have a long way to go.
self.bandwidthIndex += 1
assert self.notify.debug('increaseBandwidth: Increasing bandwidth to: '
- + `self.getBandwidth()`)
+ + repr(self.getBandwidth()))
self.everIncreasedBandwidth = 1
self.setBandwidth()
return 1
@@ -2822,7 +2822,7 @@ def decreaseBandwidth(self, targetBandwidth = None):
self.bandwidthIndex -= 1
assert self.notify.debug('decreaseBandwidth: Decreasing bandwidth to: '
- + `self.getBandwidth()`)
+ + repr(self.getBandwidth()))
self.setBandwidth()
return 1
@@ -2876,7 +2876,7 @@ def cleanup(self):
def scanForHacks(self):
if not self.WIN32:
return
- import _winreg
+ import winreg
hacksInstalled = {}
hacksRunning = {}
hackName = [
@@ -2889,26 +2889,26 @@ def scanForHacks(self):
#
knownHacksRegistryKeys = {
hackName[0]:[
- [_winreg.HKEY_LOCAL_MACHINE,'Software\\Microsoft\\Windows\\CurrentVersion\\Run\\!xSpeed'],
- [_winreg.HKEY_CURRENT_USER,'Software\\!xSpeednethy'],
- [_winreg.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MenuOrder\\Start Menu\\Programs\\!xSpeednet'],
- [_winreg.HKEY_LOCAL_MACHINE,'Software\\Gentee\\Paths\\!xSpeednet'],
- [_winreg.HKEY_LOCAL_MACHINE,'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\!xSpeed.net 2.0'],
+ [winreg.HKEY_LOCAL_MACHINE,'Software\\Microsoft\\Windows\\CurrentVersion\\Run\\!xSpeed'],
+ [winreg.HKEY_CURRENT_USER,'Software\\!xSpeednethy'],
+ [winreg.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MenuOrder\\Start Menu\\Programs\\!xSpeednet'],
+ [winreg.HKEY_LOCAL_MACHINE,'Software\\Gentee\\Paths\\!xSpeednet'],
+ [winreg.HKEY_LOCAL_MACHINE,'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\!xSpeed.net 2.0'],
],
hackName[1]:[
- [_winreg.HKEY_CURRENT_USER,'Software\\aspeeder'],
- [_winreg.HKEY_LOCAL_MACHINE,'Software\\aspeeder'],
- [_winreg.HKEY_LOCAL_MACHINE,'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\aspeeder'],
+ [winreg.HKEY_CURRENT_USER,'Software\\aspeeder'],
+ [winreg.HKEY_LOCAL_MACHINE,'Software\\aspeeder'],
+ [winreg.HKEY_LOCAL_MACHINE,'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\aspeeder'],
],
}
try:
- for prog in knownHacksRegistryKeys.keys():
+ for prog in list(knownHacksRegistryKeys.keys()):
for key in knownHacksRegistryKeys[prog]:
try:
- h = _winreg.OpenKey(key[0], key[1])
+ h = winreg.OpenKey(key[0], key[1])
#print 'found %s in registry %s' % (prog,key[1])
hacksInstalled[prog] = 1
- _winreg.CloseKey(h)
+ winreg.CloseKey(h)
break # next program when any registry entry found
except:
pass
@@ -2926,9 +2926,9 @@ def scanForHacks(self):
}
i = 0
try:
- rh = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\ShellNoRoam\\MUICache')
+ rh = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\ShellNoRoam\\MUICache')
while 1:
- name,value,type = _winreg.EnumValue(rh, i)
+ name,value,type = winreg.EnumValue(rh, i)
i += 1
if type == 1:
val = value.lower()
@@ -2937,7 +2937,7 @@ def scanForHacks(self):
#print "found %s in MUICache:%s" % (knownHacksMUI[hackprog], val.encode('utf-8'))
hacksInstalled[knownHacksMUI[hackprog]] = 1
break
- _winreg.CloseKey(rh)
+ winreg.CloseKey(rh)
except:
#print "%s: stopped at %d" % (sys.exc_info()[0], i)
pass
@@ -2959,19 +2959,19 @@ def scanForHacks(self):
try:
for p in procapi.getProcessList():
pname = p.name
- if knownHacksExe.has_key(pname):
+ if pname in knownHacksExe:
hacksRunning[knownHacksExe[pname]] = 1
except:
pass
if len(hacksInstalled) > 0:
self.notify.info('Third party programs installed:')
- for hack in hacksInstalled.keys():
+ for hack in list(hacksInstalled.keys()):
self.notify.info(hack)
if len(hacksRunning) > 0:
self.notify.info('Third party programs running:')
- for hack in hacksRunning.keys():
+ for hack in list(hacksRunning.keys()):
self.notify.info(hack)
# quit out because 3rd party program hack detected and is running
self.setPandaErrorCode(8)
diff --git a/otp/src/launcher/WebLauncherBase.py b/otp/src/launcher/WebLauncherBase.py
index 6a8ca136..cf9ff3d8 100644
--- a/otp/src/launcher/WebLauncherBase.py
+++ b/otp/src/launcher/WebLauncherBase.py
@@ -8,7 +8,7 @@
import time
import os
import subprocess
-import __builtin__
+import builtins
class WebLauncherBase(DirectObject):
@@ -79,7 +79,7 @@ def __nextCallback(self, currentCallback, currentTaskChain):
del self.postProcessCallbacks[0]
if taskChain != currentTaskChain:
# Switch to the next task chain.
- print "switching to %s" % (taskChain)
+ print("switching to %s" % (taskChain))
taskMgr.add(self.__nextCallback, 'phaseCallback-%s' % (self.phase),
taskChain = taskChain, extraArgs = [callback, taskChain])
return
@@ -91,7 +91,7 @@ def __nextCallback(self, currentCallback, currentTaskChain):
def __init__(self, appRunner):
self.appRunner = appRunner
- __builtin__.launcher = self
+ builtins.launcher = self
appRunner.exceptionHandler = self.exceptionHandler
@@ -137,12 +137,12 @@ class DummyGameInfo:
self.notify.info("isTestServer: %s" % (self.testServerFlag))
# Write to the log
- print "\n\nStarting %s..." % self.GameName
- print ("Current time: " + time.asctime(time.localtime(time.time()))
- + " " + time.tzname[0])
- print "sys.argv = ", sys.argv
- print "tokens = ", appRunner.tokens
- print "gameInfo = ", self.gameInfo
+ print("\n\nStarting %s..." % self.GameName)
+ print(("Current time: " + time.asctime(time.localtime(time.time()))
+ + " " + time.tzname[0]))
+ print("sys.argv = ", sys.argv)
+ print("tokens = ", appRunner.tokens)
+ print("gameInfo = ", self.gameInfo)
# Run an external command to get the system hardware
# information into a log file. First, we have to change the
@@ -186,14 +186,14 @@ def __gotPhaseComplete(self):
# Already sent.
return
- for phaseData in self.phaseData.values():
+ for phaseData in list(self.phaseData.values()):
if not phaseData.complete:
# More to come later.
return
# All phases are now complete. Tell the world.
self.allPhasesComplete = True
- print "launcherAllPhasesComplete"
+ print("launcherAllPhasesComplete")
messenger.send("launcherAllPhasesComplete", taskChain = 'default')
@@ -471,7 +471,7 @@ def packageFinished(self, package, success):
PackageInstaller.packageFinished(self, package, success)
if not success:
- print "Failed to download %s" % (package.packageName)
+ print("Failed to download %s" % (package.packageName))
self.launcher.setPandaErrorCode(6)
sys.exit()
@@ -489,7 +489,7 @@ def downloadFinished(self, success):
PackageInstaller.downloadFinished(self, success)
if not success:
- print "Failed to download all packages."
+ print("Failed to download all packages.")
# We don't immediately trigger launcherAllPhasesComplete here,
# because we might still be waiting on one or more
diff --git a/otp/src/level/AmbientSound.py b/otp/src/level/AmbientSound.py
index 7c3897ff..c1e556f6 100644
--- a/otp/src/level/AmbientSound.py
+++ b/otp/src/level/AmbientSound.py
@@ -1,8 +1,9 @@
from direct.interval.IntervalGlobal import *
-import BasicEntities
-import random
+import BasicEntities, random
class AmbientSound(BasicEntities.NodePathEntity):
+ __module__ = __name__
+
def __init__(self, level, entId):
BasicEntities.NodePathEntity.__init__(self, level, entId)
self.initSound()
@@ -19,10 +20,10 @@ def initSound(self):
self.sound = base.loadSfx(self.soundPath)
if self.sound is None:
return
- self.soundIval = SoundInterval(self.sound, node=self,
- volume=self.volume)
+ self.soundIval = SoundInterval(self.sound, node=self, volume=self.volume)
self.soundIval.loop()
self.soundIval.setT(random.random() * self.sound.length())
+ return
def destroySound(self):
if hasattr(self, 'soundIval'):
@@ -32,6 +33,7 @@ def destroySound(self):
del self.sound
if __dev__:
+
def attribChanged(self, *args):
self.destroySound()
- self.initSound()
+ self.initSound()
\ No newline at end of file
diff --git a/otp/src/level/BasicEntities.py b/otp/src/level/BasicEntities.py
index 82a2d5fc..2bfdff6b 100644
--- a/otp/src/level/BasicEntities.py
+++ b/otp/src/level/BasicEntities.py
@@ -1,28 +1,14 @@
-"""BasicEntities module: contains fundamental entity types and base classes"""
-
-import Entity
-import DistributedEntity
+from . import Entity, DistributedEntity
from pandac.PandaModules import NodePath
-# base class for entities that support NodePath attributes
-# *** Don't derive directly from this class; derive from the appropriate
-# specialized class from the classes defined below.
class NodePathEntityBase:
- # we don't call this __init__ because it doesn't have to be called
- # upon object init
+
def initNodePathAttribs(self, doReparent=1):
- """Call this after the entity has been initialized"""
- self.callSetters('pos','x','y','z',
- 'hpr','h','p','r',
- 'scale','sx','sy','sz')
+ self.callSetters('pos', 'x', 'y', 'z', 'hpr', 'h', 'p', 'r', 'scale', 'sx', 'sy', 'sz')
if doReparent:
self.callSetters('parentEntId')
-
- self.getNodePath().setName('%s-%s' %
- (self.__class__.__name__, self.entId))
-
+ self.getNodePath().setName('%s-%s' % (self.__class__.__name__, self.entId))
if __dev__:
- # for the editor
self.getNodePath().setTag('entity', '1')
def setParentEntId(self, parentEntId):
@@ -31,12 +17,11 @@ def setParentEntId(self, parentEntId):
def destroy(self):
if __dev__:
- # for the editor
self.getNodePath().clearTag('entity')
-# Entities that already derive from NodePath and Entity should derive
-# from this class
+
class NodePathAttribs(NodePathEntityBase):
+
def initNodePathAttribs(self, doReparent=1):
NodePathEntityBase.initNodePathAttribs(self, doReparent)
@@ -46,9 +31,9 @@ def destroy(self):
def getNodePath(self):
return self
-# Entities that already derive from Entity, and do not derive from NodePath,
-# but want to be a NodePath, should derive from this.
+
class NodePathAndAttribs(NodePathEntityBase, NodePath):
+
def __init__(self):
node = hidden.attachNewNode('EntityNodePath')
NodePath.__init__(self, node)
@@ -62,41 +47,58 @@ def destroy(self):
def getNodePath(self):
return self
-
-# Entities that already derive from Entity, and do not derive from NodePath,
-# but HAVE a NodePath that they want to represent them, should derive from
-# this. They must define getNodePath(), which should return their 'proxy'
-# NodePath instance.
+
+
class NodePathAttribsProxy(NodePathEntityBase):
+
def initNodePathAttribs(self, doReparent=1):
- """Call this after the entity has been initialized"""
NodePathEntityBase.initNodePathAttribs(self, doReparent)
- assert self.getNodePath() != self
def destroy(self):
NodePathEntityBase.destroy(self)
- def setPos(self, *args): self.getNodePath().setPos(*args)
- def setX(self, *args): self.getNodePath().setX(*args)
- def setY(self, *args): self.getNodePath().setY(*args)
- def setZ(self, *args): self.getNodePath().setZ(*args)
-
- def setHpr(self, *args): self.getNodePath().setHpr(*args)
- def setH(self, *args): self.getNodePath().setH(*args)
- def setP(self, *args): self.getNodePath().setP(*args)
- def setR(self, *args): self.getNodePath().setR(*args)
-
- def setScale(self, *args): self.getNodePath().setScale(*args)
- def setSx(self, *args): self.getNodePath().setSx(*args)
- def setSy(self, *args): self.getNodePath().setSy(*args)
- def setSz(self, *args): self.getNodePath().setSz(*args)
-
- def reparentTo(self, *args): self.getNodePath().reparentTo(*args)
-
-# This is an entity that represents a NodePath on the client.
-# It may be instantiated directly or used as a base class for other
-# entity types that 'are' NodePaths.
+ def setPos(self, *args):
+ self.getNodePath().setPos(*args)
+
+ def setX(self, *args):
+ self.getNodePath().setX(*args)
+
+ def setY(self, *args):
+ self.getNodePath().setY(*args)
+
+ def setZ(self, *args):
+ self.getNodePath().setZ(*args)
+
+ def setHpr(self, *args):
+ self.getNodePath().setHpr(*args)
+
+ def setH(self, *args):
+ self.getNodePath().setH(*args)
+
+ def setP(self, *args):
+ self.getNodePath().setP(*args)
+
+ def setR(self, *args):
+ self.getNodePath().setR(*args)
+
+ def setScale(self, *args):
+ self.getNodePath().setScale(*args)
+
+ def setSx(self, *args):
+ self.getNodePath().setSx(*args)
+
+ def setSy(self, *args):
+ self.getNodePath().setSy(*args)
+
+ def setSz(self, *args):
+ self.getNodePath().setSz(*args)
+
+ def reparentTo(self, *args):
+ self.getNodePath().reparentTo(*args)
+
+
class NodePathEntity(Entity.Entity, NodePath, NodePathAttribs):
+
def __init__(self, level, entId):
node = hidden.attachNewNode('NodePathEntity')
NodePath.__init__(self, node)
@@ -108,11 +110,10 @@ def destroy(self):
Entity.Entity.destroy(self)
self.removeNode()
-# This is a distributed version of NodePathEntity. It should not
-# be instantiated directly; distributed entities that are also NodePaths
-# may derive from this instead of DistributedEntity.
-class DistributedNodePathEntity(DistributedEntity.DistributedEntity,
- NodePath, NodePathAttribs):
+
+class DistributedNodePathEntity(DistributedEntity.DistributedEntity, NodePath, NodePathAttribs):
+ __module__ = __name__
+
def __init__(self, cr):
DistributedEntity.DistributedEntity.__init__(self, cr)
@@ -127,4 +128,4 @@ def announceGenerate(self):
def delete(self):
self.removeNode()
- DistributedEntity.DistributedEntity.delete(self)
+ DistributedEntity.DistributedEntity.delete(self)
\ No newline at end of file
diff --git a/otp/src/level/CollisionSolidEntity.py b/otp/src/level/CollisionSolidEntity.py
index 5046bd84..26e2e128 100644
--- a/otp/src/level/CollisionSolidEntity.py
+++ b/otp/src/level/CollisionSolidEntity.py
@@ -1,16 +1,18 @@
from pandac.PandaModules import *
from otp.otpbase import OTPGlobals
from direct.directnotify import DirectNotifyGlobal
-import BasicEntities
+from . import BasicEntities
class CollisionSolidEntity(BasicEntities.NodePathEntity):
+ __module__ = __name__
notify = DirectNotifyGlobal.directNotify.newCategory('CollisionSolidEntity')
def __init__(self, level, entId):
self.collNodePath = None
BasicEntities.NodePathEntity.__init__(self, level, entId)
self.initSolid()
-
+ return
+
def destroy(self):
self.destroySolid()
BasicEntities.NodePathEntity.destroy(self)
@@ -35,9 +37,10 @@ def destroySolid(self):
if self.collNodePath is not None:
self.collNodePath.removeNode()
self.collNodePath = None
+ return
if __dev__:
+
def attribChanged(self, attrib, value):
- print 'attribChanged'
- self.initSolid()
-
+ print('attribChanged')
+ self.initSolid()
\ No newline at end of file
diff --git a/otp/src/level/CutScene.py b/otp/src/level/CutScene.py
index 67c77297..91a47018 100644
--- a/otp/src/level/CutScene.py
+++ b/otp/src/level/CutScene.py
@@ -1,189 +1,97 @@
-"""CutScene.py"""
-
-
from direct.showbase import DirectObject
from direct.directnotify import DirectNotifyGlobal
-import BasicEntities
-
-from pandac.PandaModules import *
+from . import BasicEntities
from pandac.PandaModules import *
+from direct.showbase.ShowBaseGlobal import *
from direct.interval.IntervalGlobal import *
from direct.distributed.ClockDelta import *
-
from toontown.toonbase import ToontownGlobals
from direct.directnotify import DirectNotifyGlobal
from direct.fsm import ClassicFSM
-#import DistributedInteractiveEntity
-
-# effects #
+from direct.distributed import DelayDelete
def nothing(self, track, subjectNodePath, duration):
- assert self.debugPrint(
- "nothing(track=%s, subjectNodePath=%s, duration=%s)"%(
- track, subjectNodePath, duration))
return track
+
def irisInOut(self, track, subjectNodePath, duration):
- assert self.debugPrint(
- "irisInOut(track=%s, subjectNodePath=%s, duration=%s)"%(
- track, subjectNodePath, duration))
- track.append(Sequence(
- Func(base.transitions.irisOut, 0.5),
- Func(base.transitions.irisIn, 1.5),
- Wait(duration),
- Func(base.transitions.irisOut, 1.0),
- Func(base.transitions.irisIn, 0.5),
- ))
+ track.append(Sequence(Func(base.transitions.irisOut, 0.5), Func(base.transitions.irisIn, 1.5), Wait(duration), Func(base.transitions.irisOut, 1.0), Func(base.transitions.irisIn, 0.5)))
return track
+
def letterBox(self, track, subjectNodePath, duration):
- assert self.debugPrint(
- "letterBox(track=%s, subjectNodePath=%s, duration=%s)"%(
- track, subjectNodePath, duration))
- track.append(Sequence(
- #Func(base.transitions.letterBox, 0.5),
- Wait(duration),
- #Func(base.transitions.letterBox, 0.5),
- ))
+ track.append(Sequence(Wait(duration)))
return track
-# motions #
def foo1(self, track, subjectNodePath, duration):
- assert self.debugPrint(
- "foo1(track=%s, subjectNodePath=%s, duration=%s)"%(
- track, subjectNodePath, duration))
- track.append(Sequence(
- Func(base.localAvatar.stopUpdateSmartCamera),
- PosHprInterval(
- camera,
- other=subjectNodePath,
- pos=Point3(-2, -35, 7.5),
- hpr=VBase3(-7, 0, 0)),
- LerpPosHprInterval(
- nodePath=camera,
- other=subjectNodePath,
- duration=duration,
- pos=Point3(2, -22, 7.5),
- hpr=VBase3(4, 0, 0),
- blendType="easeInOut"),
- PosHprInterval(
- camera,
- other=subjectNodePath,
- pos=Point3(0, -28, 7.5),
- hpr=VBase3(0, 0, 0)),
- Func(base.localAvatar.startUpdateSmartCamera),
- ))
+ track.append(Sequence(Func(base.localAvatar.stopUpdateSmartCamera), PosHprInterval(camera, other=subjectNodePath, pos=Point3(-2, -35, 7.5), hpr=VBase3(-7, 0, 0)), LerpPosHprInterval(nodePath=camera, other=subjectNodePath, duration=duration, pos=Point3(2, -22, 7.5), hpr=VBase3(4, 0, 0), blendType='easeInOut'), PosHprInterval(camera, other=subjectNodePath, pos=Point3(0, -28, 7.5), hpr=VBase3(0, 0, 0)), Func(base.localAvatar.startUpdateSmartCamera)))
return track
+
def doorUnlock(self, track, subjectNodePath, duration):
- assert self.debugPrint(
- "doorUnlock(track=%s, subjectNodePath=%s, duration=%s)"%(
- track, subjectNodePath, duration))
- track.append(Sequence(
- Func(base.localAvatar.stopUpdateSmartCamera),
- PosHprInterval(
- camera,
- other=self,
- pos=Point3(-2, -35, 7.5),
- hpr=VBase3(-7, 0, 0)),
- LerpPosHprInterval(
- nodePath=camera,
- other=self,
- duration=duration,
- pos=Point3(2, -22, 7.5),
- hpr=VBase3(4, 0, 0),
- blendType="easeInOut"),
- PosHprInterval(
- camera,
- other=self,
- pos=Point3(0, -28, 7.5),
- hpr=VBase3(0, 0, 0)),
- Func(base.localAvatar.startUpdateSmartCamera),
- ))
+ track.append(Sequence(Func(base.localAvatar.stopUpdateSmartCamera), PosHprInterval(camera, other=self, pos=Point3(-2, -35, 7.5), hpr=VBase3(-7, 0, 0)), LerpPosHprInterval(nodePath=camera, other=self, duration=duration, pos=Point3(2, -22, 7.5), hpr=VBase3(4, 0, 0), blendType='easeInOut'), PosHprInterval(camera, other=self, pos=Point3(0, -28, 7.5), hpr=VBase3(0, 0, 0)), Func(base.localAvatar.startUpdateSmartCamera)))
return track
class CutScene(BasicEntities.NodePathEntity, DirectObject.DirectObject):
- notify = DirectNotifyGlobal.directNotify.newCategory('CutScene')
-
- effects={
- "nothing": nothing,
- "irisInOut": irisInOut,
- "letterBox": letterBox,
- }
-
- motions={
- "foo1": foo1,
- "doorUnlock": doorUnlock,
- }
+ __module__ = __name__
+ effects = {'nothing': nothing, 'irisInOut': irisInOut, 'letterBox': letterBox}
+ motions = {'foo1': foo1, 'doorUnlock': doorUnlock}
def __init__(self, level, entId):
- assert self.debugPrint(
- "CutScene(level=%s, entId=%s)"%(level, entId))
DirectObject.DirectObject.__init__(self)
BasicEntities.NodePathEntity.__init__(self, level, entId)
self.track = None
self.setEffect(self.effect)
self.setMotion(self.motion)
- self.subjectNodePath = render.attachNewNode("CutScene")
+ self.subjectNodePath = render.attachNewNode('CutScene')
self.subjectNodePath.setPos(self.pos)
self.subjectNodePath.setHpr(self.hpr)
- #self.setSubjectNodePath(self.subjectNodePath)
self.setStartStop(self.startStopEvent)
+ return
def destroy(self):
- assert self.debugPrint("destroy()")
self.ignore(self.startStopEvent)
self.startStopEvent = None
BasicEntities.NodePathEntity.destroy(self)
- #DirectObject.DirectObject.destroy(self)
-
+ return
+
def setEffect(self, effect):
- assert self.debugPrint("setEffect(effect=%s)"%(effect,))
- self.effect=effect
- assert self.effects[effect]
- self.getEffect=self.effects[effect]
-
+ self.effect = effect
+ self.getEffect = self.effects[effect]
+
def setMotion(self, motion):
- assert self.debugPrint("setMotion(motion=%s)"%(motion,))
- self.motionType=motion
- assert self.motions[motion]
- self.getMotion=self.motions[motion]
-
+ self.motionType = motion
+ self.getMotion = self.motions[motion]
+
def setSubjectNodePath(self, subjectNodePath):
- assert self.debugPrint(
- "setSubjectNodePath(subjectNodePath=%s)"%(subjectNodePath,))
- self.subjectNodePath=subjectNodePath
-
+ self.subjectNodePath = subjectNodePath
+
def startOrStop(self, start):
- assert self.debugPrint("startOrStop(start=%s)"%(start,))
- trackName = "cutSceneTrack-%d" % (id(self),)
+ trackName = 'cutSceneTrack-%d' % (id(self),)
if start:
if self.track:
self.track.finish()
self.track = None
- track = Parallel(name = trackName)
+ track = Parallel(name=trackName)
track = self.getEffect(self, track, self.subjectNodePath, self.duration)
track = self.getMotion(self, track, self.subjectNodePath, self.duration)
track = Sequence(Wait(0.4), track)
track.start(0.0)
- assert self.debugPrint("starting track=%s"%(track,))
self.track = track
- else:
- if self.track:
- self.track.pause()
- self.track = None
- base.localAvatar.startUpdateSmartCamera()
-
+ elif self.track:
+ self.track.pause()
+ self.track = None
+ base.localAvatar.startUpdateSmartCamera()
+ return
+
def setStartStop(self, event):
- assert self.debugPrint("setStartStop(event=%s)"%(event,))
if self.startStopEvent:
self.ignore(self.startStopEvent)
self.startStopEvent = self.getOutputEventName(event)
if self.startStopEvent:
self.accept(self.startStopEvent, self.startOrStop)
-
+
def getName(self):
- #return "CutScene-%s"%(self.entId,)
- return "switch-%s"%(self.entId,)
+ return 'switch-%s' % (self.entId,)
\ No newline at end of file
diff --git a/otp/src/level/DistributedEntity.py b/otp/src/level/DistributedEntity.py
index 1306a3f6..083723a2 100644
--- a/otp/src/level/DistributedEntity.py
+++ b/otp/src/level/DistributedEntity.py
@@ -1,23 +1,22 @@
from direct.distributed import DistributedObject
-import Entity
+from . import Entity
from direct.directnotify import DirectNotifyGlobal
class DistributedEntity(DistributedObject.DistributedObject, Entity.Entity):
- notify = DirectNotifyGlobal.directNotify.newCategory(
- 'DistributedEntity')
+ __module__ = __name__
+ notify = DirectNotifyGlobal.directNotify.newCategory('DistributedEntity')
def __init__(self, cr):
DistributedObject.DistributedObject.__init__(self, cr)
Entity.Entity.__init__(self)
-
self.levelDoId = 0
self.entId = 0
self.level = None
+ return
def generateInit(self):
DistributedEntity.notify.debug('generateInit')
DistributedObject.DistributedObject.generateInit(self)
- # load stuff
def generate(self):
DistributedEntity.notify.debug('generate')
@@ -32,34 +31,21 @@ def setEntId(self, entId):
self.entId = entId
def announceGenerate(self):
- ###
- ### THIS IS WHERE CLIENT-SIDE DISTRIBUTED ENTITIES GET THEIR
- ### ATTRIBUTES SET
- ###
DistributedEntity.notify.debug('announceGenerate (%s)' % self.entId)
-
- # ask our level obj for our spec data
if self.levelDoId != 0:
level = base.cr.doId2do[self.levelDoId]
self.initializeEntity(level, self.entId)
- # announce our presence (Level does this for non-distributed entities)
self.level.onEntityCreate(self.entId)
-
else:
- # We don't have a level. This probably indicates an
- # intention to create an Entity unassociated with any
- # particular level (e.g. a Goon).
self.level = None
-
DistributedObject.DistributedObject.announceGenerate(self)
+ return
def disable(self):
DistributedEntity.notify.debug('disable (%s)' % self.entId)
- # stop things
self.destroy()
DistributedObject.DistributedObject.disable(self)
def delete(self):
DistributedEntity.notify.debug('delete')
- # unload things
- DistributedObject.DistributedObject.delete(self)
+ DistributedObject.DistributedObject.delete(self)
\ No newline at end of file
diff --git a/otp/src/level/DistributedEntityAI.py b/otp/src/level/DistributedEntityAI.py
index 84c8ddda..ea49b357 100644
--- a/otp/src/level/DistributedEntityAI.py
+++ b/otp/src/level/DistributedEntityAI.py
@@ -1,5 +1,5 @@
from direct.distributed import DistributedObjectAI
-import Entity
+from . import Entity
from direct.directnotify import DirectNotifyGlobal
class DistributedEntityAI(DistributedObjectAI.DistributedObjectAI,
diff --git a/otp/src/level/DistributedInteractiveEntity.py b/otp/src/level/DistributedInteractiveEntity.py
index 3379ef04..68f5707a 100644
--- a/otp/src/level/DistributedInteractiveEntity.py
+++ b/otp/src/level/DistributedInteractiveEntity.py
@@ -1,147 +1,75 @@
-""" DistributedInteractiveEntity module: contains the DistributedInteractiveEntity
- class, the client side representation of a 'landmark door'."""
-
-from pandac.PandaModules import *
+from direct.showbase.ShowBaseGlobal import *
from direct.distributed.ClockDelta import *
-
from direct.directnotify import DirectNotifyGlobal
from direct.fsm import ClassicFSM
-import DistributedEntity
+from . import DistributedEntity
class DistributedInteractiveEntity(DistributedEntity.DistributedEntity):
- """
- DistributedInteractiveEntity class: The client side representation of any
- simple animated prop.
- """
-
- notify = DirectNotifyGlobal.directNotify.newCategory('DistributedInteractiveEntity')
+ __module__ = __name__
def __init__(self, cr):
- """constructor for the DistributedInteractiveEntity"""
DistributedEntity.DistributedEntity.__init__(self, cr)
- assert self.debugPrint("DistributedInteractiveEntity()")
-
- self.fsm = ClassicFSM.ClassicFSM('DistributedInteractiveEntity',
- [State.State('off',
- self.enterOff,
- self.exitOff,
- ['playing',
- 'attract']),
- State.State('attract',
- self.enterAttract,
- self.exitAttract,
- ['playing']),
- State.State('playing',
- self.enterPlaying,
- self.exitPlaying,
- ['attract'])],
- # Initial State
- 'off',
- # Final State
- 'off',
- )
+ self.fsm = ClassicFSM.ClassicFSM('DistributedInteractiveEntity', [
+ State.State('off', self.enterOff, self.exitOff, [
+ 'playing', 'attract']),
+ State.State('attract', self.enterAttract, self.exitAttract, [
+ 'playing']),
+ State.State('playing', self.enterPlaying, self.exitPlaying, [
+ 'attract'])], 'off', 'off')
self.fsm.enterInitialState()
- # self.generate will be called automatically.
-
+
def generate(self):
- """
- This method is called when the DistributedEntity is introduced
- to the world, either for the first time or from the cache.
- """
- assert self.debugPrint("generate()")
DistributedEntity.DistributedEntity.generate(self)
def disable(self):
- assert self.debugPrint("disable()")
- # Go to the off state when the object is put in the cache
- self.fsm.request("off")
+ self.fsm.request('off')
DistributedEntity.DistributedEntity.disable(self)
- # self.delete() will automatically be called.
-
+
def delete(self):
- assert self.debugPrint("delete()")
del self.fsm
DistributedEntity.DistributedEntity.delete(self)
-
+
def setAvatarInteract(self, avatarId):
- """
- required dc field.
- """
- assert self.debugPrint("setAvatarInteract(%s)"%(avatarId,))
- assert not self.__dict__.has_key(avatarId)
- self.avatarId=avatarId
-
+ self.avatarId = avatarId
+
def setOwnerDoId(self, ownerDoId):
- """
- required dc field.
- """
- assert self.debugPrint("setOwnerDoId(%s)"%(ownerDoId,))
- assert not self.__dict__.has_key("ownerDoId")
- self.ownerDoId=ownerDoId
-
+ self.ownerDoId = ownerDoId
+
def setState(self, state, timestamp):
- assert self.debugPrint("setState(%s, %d)" % (state, timestamp))
if self.isGenerated():
self.fsm.request(state, [globalClockDelta.localElapsedTime(timestamp)])
else:
self.initialState = state
self.initialStateTimestamp = timestamp
-
- #def __getPropNodePath(self):
- # assert self.debugPrint("__getPropNodePath()")
- # if (not self.__dict__.has_key('propNodePath')):
- # self.propNodePath=self.cr.playGame.hood.loader.geom.find(
- # "**/prop"+self.entID+":*_DNARoot")
- # return self.propNodePath
-
+
def enterTrigger(self, args=None):
- assert self.debugPrint("enterTrigger(args="+str(args)+")")
- messenger.send("DistributedInteractiveEntity_enterTrigger")
- self.sendUpdate("requestInteract")
- # the AI server will reply with toonInteract or rejectInteract.
-
+ messenger.send('DistributedInteractiveEntity_enterTrigger')
+ self.sendUpdate('requestInteract')
+
def exitTrigger(self, args=None):
- assert self.debugPrint("exitTrigger(args="+str(args)+")")
- messenger.send("DistributedInteractiveEntity_exitTrigger")
- self.sendUpdate("requestExit")
- # the AI server will reply with avatarExit.
-
+ messenger.send('DistributedInteractiveEntity_exitTrigger')
+ self.sendUpdate('requestExit')
+
def rejectInteract(self):
- """
- Server doesn't let the avatar interact with prop.
- """
- assert self.debugPrint("rejectInteract()")
self.cr.playGame.getPlace().setState('walk')
-
+
def avatarExit(self, avatarId):
- assert self.debugPrint("avatarExit(avatarId=%s)"%(avatarId,))
-
- ##### off state #####
-
+ pass
+
def enterOff(self):
- assert self.debugPrint("enterOff()")
-
+ pass
+
def exitOff(self):
- assert self.debugPrint("exitOff()")
-
- ##### attract state #####
-
+ pass
+
def enterAttract(self, ts):
- assert self.debugPrint("enterAttract()")
-
+ pass
+
def exitAttract(self):
- assert self.debugPrint("exitAttract()")
-
- ##### playing state #####
-
+ pass
+
def enterPlaying(self, ts):
- assert self.debugPrint("enterPlaying()")
-
+ pass
+
def exitPlaying(self):
- assert self.debugPrint("exitPlaying()")
-
- if __debug__:
- def debugPrint(self, message):
- """for debugging"""
- return self.notify.debug(
- str(self.__dict__.get('entId', '?'))+' '+message)
+ pass
\ No newline at end of file
diff --git a/otp/src/level/DistributedInteractiveEntityAI.py b/otp/src/level/DistributedInteractiveEntityAI.py
index 160193f0..096fe963 100644
--- a/otp/src/level/DistributedInteractiveEntityAI.py
+++ b/otp/src/level/DistributedInteractiveEntityAI.py
@@ -8,7 +8,7 @@
from direct.directnotify import DirectNotifyGlobal
from direct.fsm import ClassicFSM
-import DistributedEntityAI
+from . import DistributedEntityAI
from direct.fsm import State
diff --git a/otp/src/level/DistributedLevel.py b/otp/src/level/DistributedLevel.py
index e0f606be..b35baa0a 100644
--- a/otp/src/level/DistributedLevel.py
+++ b/otp/src/level/DistributedLevel.py
@@ -1,5 +1,3 @@
-"""DistributedLevel.py: contains the DistributedLevel class"""
-
from direct.distributed.ClockDelta import *
from pandac.PandaModules import *
from direct.showbase.PythonUtil import Functor, sameElements, list2dict, uniqueElements
@@ -8,33 +6,21 @@
from toontown.toonbase import ToontownGlobals
from otp.otpbase import OTPGlobals
from direct.distributed import DistributedObject
-import Level
-import LevelConstants
+from . import Level, LevelConstants
from direct.directnotify import DirectNotifyGlobal
-import EntityCreator
+from . import EntityCreator
from direct.gui import OnscreenText
from direct.task import Task
-import LevelUtil
-import random
+import LevelUtil, random
-class DistributedLevel(DistributedObject.DistributedObject,
- Level.Level):
- """DistributedLevel"""
+class DistributedLevel(DistributedObject.DistributedObject, Level.Level):
+ __module__ = __name__
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedLevel')
-
WantVisibility = config.GetBool('level-visibility', 1)
- # set this to true to get all distrib objs when showing hidden zones
ColorZonesAllDOs = 0
-
- # TODO: move level-model stuff to LevelMgr or FactoryLevelMgr?
FloorCollPrefix = 'zoneFloor'
-
OuchTaskName = 'ouchTask'
VisChangeTaskName = 'visChange'
-
- # Override and set this to False to prevent the level from placing
- # the avatar at the origin of a random zone in the absence of an
- # entrancePoint entity.
EmulateEntrancePoint = True
def __init__(self, cr):
@@ -42,66 +28,27 @@ def __init__(self, cr):
Level.Level.__init__(self)
self.lastToonZone = None
self.lastCamZone = 0
- self.titleColor = (1,1,1,1)
- self.titleText = OnscreenText.OnscreenText(
- "",
- fg = self.titleColor,
- shadow = (0,0,0,1),
- font = ToontownGlobals.getSuitFont(),
- pos = (0,-0.5),
- scale = 0.16,
- drawOrder = 0,
- mayChange = 1,
- )
-
- self.smallTitleText = OnscreenText.OnscreenText(
- "",
- fg = self.titleColor,
- font = ToontownGlobals.getSuitFont(),
- pos = (0.65,0.9),
- scale = 0.08,
- drawOrder = 0,
- mayChange = 1,
- bg = (.5,.5,.5,.5),
- align = TextNode.ARight,
- )
+ self.titleColor = (1, 1, 1, 1)
+ self.titleText = OnscreenText.OnscreenText('', fg=self.titleColor, shadow=(0, 0, 0, 1), font=ToontownGlobals.getSuitFont(), pos=(0, -0.5), scale=0.16, drawOrder=0, mayChange=1)
+ self.smallTitleText = OnscreenText.OnscreenText('', fg=self.titleColor, font=ToontownGlobals.getSuitFont(), pos=(0.65, 0.9), scale=0.08, drawOrder=0, mayChange=1, bg=(0.5, 0.5, 0.5, 0.5), align=TextNode.ARight)
self.zonesEnteredList = []
self.fColorZones = 0
self.scenarioIndex = 0
+ return
def generate(self):
DistributedLevel.notify.debug('generate')
DistributedObject.DistributedObject.generate(self)
-
- # this dict stores entity reparents if the parent hasn't been
- # created yet
self.parent2pendingChildren = {}
-
- # if the AI sends us a full spec, it will be put here
self.curSpec = None
+ base.cr.timeManager.synchronize('DistributedLevel.generate')
+ return
- # Most (if not all) of the timed entities of levels
- # run on looping intervals that are started once based on
- # the level's start time.
- # This sync request is *NOT* guaranteed to finish by the time
- # the entities get created.
- # We should listen for any and all time-sync events and re-sync
- # all our entities at that time.
- if base.cr.timeManager is not None:
- base.cr.timeManager.synchronize('DistributedLevel.generate')
- else:
- self.notify.warning('generate(): no TimeManager!')
-
-
- # the real required fields
def setLevelZoneId(self, zoneId):
- # this is the zone that the level is in; we should listen to this
- # zone the entire time we're in here
self.levelZone = zoneId
def setPlayerIds(self, avIdList):
self.avIdList = avIdList
- assert base.localAvatar.doId in self.avIdList
def setEntranceId(self, entranceId):
self.entranceId = entranceId
@@ -109,79 +56,50 @@ def setEntranceId(self, entranceId):
def getEntranceId(self):
return self.entranceId
- # "required" fields (these ought to be required fields, but
- # the AI level obj doesn't know the data values until it has been
- # generated.)
def setZoneIds(self, zoneIds):
DistributedLevel.notify.debug('setZoneIds: %s' % zoneIds)
self.zoneIds = zoneIds
def setStartTimestamp(self, timestamp):
DistributedLevel.notify.debug('setStartTimestamp: %s' % timestamp)
- self.startTime = globalClockDelta.networkToLocalTime(timestamp,bits=32)
-
- # ugly hack: we treat a few DC fields as if they were required,
- # and use 'levelAnnounceGenerate()' in place of regular old
- # announceGenerate(). Note that we have to call
- # gotAllRequired() in the last 'faux-required' DC update
- # handler. If you add another field, move this to the last one.
+ self.startTime = globalClockDelta.networkToLocalTime(timestamp, bits=32)
self.privGotAllRequired()
- """
- # this is no longer used
- def setScenarioIndex(self, scenarioIndex):
- self.scenarioIndex = scenarioIndex
-
- # ugly hack: we treat a few DC fields as if they were required,
- # and use 'levelAnnounceGenerate()' in place of regular old
- # announceGenerate(). Note that we have to call
- # gotAllRequired() in the last 'faux-required' DC update
- # handler. If you add another field, move this to the last one.
- self.privGotAllRequired()
- """
-
def privGotAllRequired(self):
self.levelAnnounceGenerate()
+
def levelAnnounceGenerate(self):
pass
def initializeLevel(self, levelSpec):
- """subclass should call this as soon as it's located its level spec.
- Must be called after obj has been generated."""
if __dev__:
- # if we're in dev, give the server the opportunity to send us
- # a full spec
self.candidateSpec = levelSpec
- self.sendUpdate('requestCurrentLevelSpec',
- [hash(levelSpec),
- levelSpec.entTypeReg.getHashStr()])
+ self.sendUpdate('requestCurrentLevelSpec', [
+ hash(levelSpec), levelSpec.entTypeReg.getHashStr()])
else:
self.privGotSpec(levelSpec)
if __dev__:
+
def reportModelSpecSyncError(self, msg):
- DistributedLevel.notify.error(
- '%s\n'
- '\n'
- 'your spec does not match the level model\n'
- 'use SpecUtil.updateSpec, then restart your AI and client' %
- (msg))
+ DistributedLevel.notify.error('%s\n\nyour spec does not match the level model\nuse SpecUtil.updateSpec, then restart your AI and client' % msg)
def setSpecDeny(self, reason):
DistributedLevel.notify.error(reason)
-
+
def setSpecSenderDoId(self, doId):
DistributedLevel.notify.debug('setSpecSenderDoId: %s' % doId)
blobSender = base.cr.doId2do[doId]
def setSpecBlob(specBlob, blobSender=blobSender, self=self):
blobSender.sendAck()
- from LevelSpec import LevelSpec
+ from .LevelSpec import LevelSpec
spec = eval(specBlob)
if spec is None:
spec = self.candidateSpec
del self.candidateSpec
self.privGotSpec(spec)
+ return
if blobSender.isComplete():
setSpecBlob(blobSender.getBlob())
@@ -191,172 +109,112 @@ def setSpecBlob(specBlob, blobSender=blobSender, self=self):
self.acceptOnce(evtName, setSpecBlob)
def privGotSpec(self, levelSpec):
- Level.Level.initializeLevel(self, self.doId, levelSpec,
- self.scenarioIndex)
-
- # all of the local entities have been created now.
- # TODO: have any of the distributed entities been created at this point?
-
- # there should not be any pending reparents left at this point
- # TODO: is it possible for a local entity to be parented to a
- # distributed entity? I think so!
- # Yes, it is. Don't do this check.
- #assert len(self.parent2pendingChildren) == 0
- # make sure the zoneNums from the model match the zoneNums from
- # the zone entities
+ Level.Level.initializeLevel(self, self.doId, levelSpec, self.scenarioIndex)
modelZoneNums = self.zoneNums
- specZoneNums = self.zoneNum2zoneId.keys()
+ specZoneNums = list(self.zoneNum2zoneId.keys())
if not sameElements(modelZoneNums, specZoneNums):
- self.reportModelSpecSyncError(
- 'model zone nums (%s) do not match spec zone nums (%s)' %
- (modelZoneNums, specZoneNums))
-
- # load stuff
+ self.reportModelSpecSyncError('model zone nums (%s) do not match spec zone nums (%s)' % (modelZoneNums, specZoneNums))
self.initVisibility()
self.placeLocalToon()
def announceLeaving(self):
- """call this just before leaving the level; this may result in
- the factory being destroyed on the AI"""
DistributedLevel.notify.debug('announceLeaving')
self.doneBarrier()
- def placeLocalToon(self, moveLocalAvatar=True):
+ def placeLocalToon(self):
initialZoneEnt = None
- # the entrancePoint entities register themselves with us
if self.entranceId in self.entranceId2entity:
epEnt = self.entranceId2entity[self.entranceId]
- if moveLocalAvatar:
- epEnt.placeToon(base.localAvatar,
- self.avIdList.index(base.localAvatar.doId),
- len(self.avIdList))
+ epEnt.placeToon(base.localAvatar, self.avIdList.index(base.localAvatar.doId), len(self.avIdList))
initialZoneEnt = self.getEntity(epEnt.getZoneEntId())
elif self.EmulateEntrancePoint:
self.notify.debug('unknown entranceId %s' % self.entranceId)
- if moveLocalAvatar:
- base.localAvatar.reparentTo(render)
- base.localAvatar.setPosHpr(0,0,0,0,0,0)
+ base.localAvatar.reparentTo(render)
+ base.localAvatar.setPosHpr(0, 0, 0, 0, 0, 0)
self.notify.debug('showing all zones')
self.setColorZones(1)
- # put the toon in a random zone to start
zoneEntIds = list(self.entType2ids['zone'])
zoneEntIds.remove(LevelConstants.UberZoneEntId)
if len(zoneEntIds):
zoneEntId = random.choice(zoneEntIds)
initialZoneEnt = self.getEntity(zoneEntId)
- if moveLocalAvatar:
- base.localAvatar.setPos(
- render,
- initialZoneEnt.getZoneNode().getPos(render))
+ base.localAvatar.setPos(render, initialZoneEnt.getZoneNode().getPos(render))
else:
- initialZoneEnt = self.getEntity(
- LevelConstants.UberZoneEntId)
- if moveLocalAvatar:
- base.localAvatar.setPos(render,0,0,0)
-
+ initialZoneEnt = self.getEntity(LevelConstants.UberZoneEntId)
+ base.localAvatar.setPos(render, 0, 0, 0)
if initialZoneEnt is not None:
- # kickstart the visibility
self.enterZone(initialZoneEnt.entId)
+ return
def createEntityCreator(self):
- """Create the object that will be used to create Entities.
- Inheritors, override if desired."""
return EntityCreator.EntityCreator(level=self)
def onEntityTypePostCreate(self, entType):
- """listen for certain entity types to be created"""
Level.Level.onEntityTypePostCreate(self, entType)
- # NOTE: these handlers are private in order to avoid overriding
- # similar handlers in base classes
if entType == 'levelMgr':
self.__handleLevelMgrCreated()
def __handleLevelMgrCreated(self):
- # as soon as the levelMgr has been created, load up the model
- # and extract zone info. We need to do this before any entities
- # get parented to the level!
levelMgr = self.getEntity(LevelConstants.LevelMgrEntId)
self.geom = levelMgr.geom
-
- # find the zones in the model and fix them up
self.zoneNum2node = LevelUtil.getZoneNum2Node(self.geom)
-
- self.zoneNums = self.zoneNum2node.keys()
+ self.zoneNums = list(self.zoneNum2node.keys())
self.zoneNums.sort()
self.zoneNumDict = list2dict(self.zoneNums)
DistributedLevel.notify.debug('zones from model: %s' % self.zoneNums)
-
- # give the level a chance to muck with the model before the entities
- # get placed
self.fixupLevelModel()
-
+
def fixupLevelModel(self):
- # fix up the floor collisions for walkable zones *before*
- # any entities get put under the model
- for zoneNum,zoneNode in self.zoneNum2node.items():
- # don't do this to the uberzone
+ for (zoneNum, zoneNode) in list(self.zoneNum2node.items()):
if zoneNum == LevelConstants.UberZoneEntId:
continue
- # if this is a walkable zone, fix up the model
- allColls = zoneNode.findAllMatches('**/+CollisionNode')
- # which of them, if any, are floors?
+ allColls = zoneNode.findAllMatches('**/+CollisionNode').asList()
floorColls = []
for coll in allColls:
bitmask = coll.node().getIntoCollideMask()
if not (bitmask & ToontownGlobals.FloorBitmask).isZero():
floorColls.append(coll)
+
if len(floorColls) > 0:
- # rename the floor collision nodes, and make sure no other
- # nodes under the ZoneNode have that name
- floorCollName = '%s%s' % (DistributedLevel.FloorCollPrefix,
- zoneNum)
- others = zoneNode.findAllMatches(
- '**/%s' % floorCollName)
+ floorCollName = '%s%s' % (DistributedLevel.FloorCollPrefix, zoneNum)
+ others = zoneNode.findAllMatches('**/%s' % floorCollName).asList()
for other in others:
other.setName('%s_renamed' % floorCollName)
+
for floorColl in floorColls:
floorColl.setName(floorCollName)
- # listen for zone enter events from floor collisions
- def handleZoneEnter(collisionEntry,
- self=self, zoneNum=zoneNum):
+ def handleZoneEnter(collisionEntry, self=self, zoneNum=zoneNum):
self.toonEnterZone(zoneNum)
floorNode = collisionEntry.getIntoNode()
if floorNode.hasTag('ouch'):
ouchLevel = int(self.getFloorOuchLevel())
self.startOuch(ouchLevel)
+
self.accept('enter%s' % floorCollName, handleZoneEnter)
- # also listen for zone exit events for the sake of the
- # ouch system
- def handleZoneExit(collisionEntry,
- self=self, zoneNum=zoneNum):
+ def handleZoneExit(collisionEntry, self=self, zoneNum=zoneNum):
floorNode = collisionEntry.getIntoNode()
if floorNode.hasTag('ouch'):
self.stopOuch()
+
self.accept('exit%s' % floorCollName, handleZoneExit)
def getFloorOuchLevel(self):
- # override this to make dangerous ground do more damage
return 1
-
+
def announceGenerate(self):
DistributedLevel.notify.debug('announceGenerate')
DistributedObject.DistributedObject.announceGenerate(self)
def disable(self):
DistributedLevel.notify.debug('disable')
-
- # geom is owned by the levelMgr
if hasattr(self, 'geom'):
del self.geom
-
self.shutdownVisibility()
self.destroyLevel()
self.ignoreAll()
-
- # NOTE: this should be moved to FactoryInterior
- taskMgr.remove(self.uniqueName("titleText"))
+ taskMgr.remove(self.uniqueName('titleText'))
if self.smallTitleText:
self.smallTitleText.cleanup()
self.smallTitleText = None
@@ -364,71 +222,54 @@ def disable(self):
self.titleText.cleanup()
self.titleText = None
self.zonesEnteredList = []
-
DistributedObject.DistributedObject.disable(self)
+ return
def delete(self):
DistributedLevel.notify.debug('delete')
DistributedObject.DistributedObject.delete(self)
- # make sure the ouch task is stopped
self.stopOuch()
-
+
def requestReparent(self, entity, parentId, wrt=False):
- if __debug__:
- # some things (like cogs) are not actually entities yet;
- # they don't have an entId. Big deal, let it go through.
- if hasattr(entity, 'entId'):
- assert entity.entId != parentId
parent = self.getEntity(parentId)
if parent is not None:
- # parent has already been created
if wrt:
entity.wrtReparentTo(parent.getNodePath())
else:
entity.reparentTo(parent.getNodePath())
else:
- # parent hasn't been created yet; schedule the reparent
- DistributedLevel.notify.debug(
- 'entity %s requesting reparent to %s, not yet created' %
- (entity, parentId))
-
+ DistributedLevel.notify.debug('entity %s requesting reparent to %s, not yet created' % (entity, parentId))
entity.reparentTo(hidden)
-
- # if this parent doesn't already have another child pending,
- # do some setup
- if not self.parent2pendingChildren.has_key(parentId):
+ if parentId not in self.parent2pendingChildren:
self.parent2pendingChildren[parentId] = []
- # do the reparent(s) once the parent is initialized
def doReparent(parentId=parentId, self=self, wrt=wrt):
- assert self.parent2pendingChildren.has_key(parentId)
- parent=self.getEntity(parentId)
+ parent = self.getEntity(parentId)
for child in self.parent2pendingChildren[parentId]:
- DistributedLevel.notify.debug(
- 'performing pending reparent of %s to %s' %
- (child, parent))
+ DistributedLevel.notify.debug('performing pending reparent of %s to %s' % (child, parent))
if wrt:
child.wrtReparentTo(parent.getNodePath())
else:
child.reparentTo(parent.getNodePath())
+
del self.parent2pendingChildren[parentId]
self.ignore(self.getEntityCreateEvent(parentId))
-
- self.accept(self.getEntityCreateEvent(parentId), doReparent)
+ self.accept(self.getEntityCreateEvent(parentId), doReparent)
self.parent2pendingChildren[parentId].append(entity)
-
+ return
+
def getZoneNode(self, zoneEntId):
return self.zoneNum2node.get(zoneEntId)
def warpToZone(self, zoneNum):
- """put avatar at the origin of the given zone"""
zoneNode = self.getZoneNode(zoneNum)
if zoneNode is None:
return
- base.localAvatar.setPos(zoneNode,0,0,0)
- base.localAvatar.setHpr(zoneNode,0,0,0)
+ base.localAvatar.setPos(zoneNode, 0, 0, 0)
+ base.localAvatar.setHpr(zoneNode, 0, 0, 0)
self.enterZone(zoneNum)
+ return
def showZone(self, zoneNum):
zone = self.getZoneNode(zoneNum)
@@ -446,7 +287,7 @@ def hideZone(self, zoneNum):
zone = self.getZoneNode(zoneNum)
if self.fColorZones:
zone.unstash()
- zone.setColor(1,0,0)
+ zone.setColor(1, 0, 0)
else:
zone.stash()
@@ -457,174 +298,101 @@ def setTransparency(self, alpha, zone=None):
else:
node = self.getZoneNode(zoneNum)
node.setAlphaScale(alpha)
+ return
def initVisibility(self):
- # start out with every zone visible, since none of the zones have
- # been hidden
self.curVisibleZoneNums = list2dict(self.zoneNums)
- # the UberZone is always visible, so it's not included in the
- # zones' viz lists
del self.curVisibleZoneNums[LevelConstants.UberZoneEntId]
- # we have not entered any zone yet
self.curZoneNum = None
-
self.visChangedThisFrame = 0
self.fForceSetZoneThisFrame = 0
- # listen for camera-ray/floor collision events
def handleCameraRayFloorCollision(collEntry, self=self):
name = collEntry.getIntoNode().getName()
self.notify.debug('camera floor ray collided with: %s' % name)
prefixLen = len(DistributedLevel.FloorCollPrefix)
- if (name[:prefixLen] == DistributedLevel.FloorCollPrefix):
+ if name[:prefixLen] == DistributedLevel.FloorCollPrefix:
try:
zoneNum = int(name[prefixLen:])
except:
- DistributedLevel.notify.warning(
- 'Invalid zone floor collision node: %s'
- % name)
+ DistributedLevel.notify.warning('Invalid zone floor collision node: %s' % name)
else:
self.camEnterZone(zoneNum)
- self.accept('on-floor', handleCameraRayFloorCollision)
- # if no viz, listen to all the zones
+ self.accept('on-floor', handleCameraRayFloorCollision)
if not DistributedLevel.WantVisibility:
zoneNums = list(self.zoneNums)
zoneNums.remove(LevelConstants.UberZoneEntId)
- # make sure a setZone goes out on the first frame
self.forceSetZoneThisFrame()
self.setVisibility(zoneNums)
-
- # send out any zone changes at the end of the frame, just before
- # rendering
- taskMgr.add(self.visChangeTask,
- self.uniqueName(DistributedLevel.VisChangeTaskName),
- priority=49)
+ taskMgr.add(self.visChangeTask, self.uniqueName(DistributedLevel.VisChangeTaskName), priority=49)
+ return
def shutdownVisibility(self):
taskMgr.remove(self.uniqueName(DistributedLevel.VisChangeTaskName))
def toonEnterZone(self, zoneNum, ouchLevel=None):
- """
- zoneNum is an int.
- ouchLevel is a ??.
-
- The avatar (and not necessarily the camera) has entered
- a zone.
- See camEnterZone()
- """
DistributedLevel.notify.debug('toonEnterZone%s' % zoneNum)
-
if zoneNum != self.lastToonZone:
self.lastToonZone = zoneNum
- self.notify.debug("toon is standing in zone %s" % zoneNum)
- messenger.send("factoryZoneChanged", [zoneNum])
+ self.notify.debug('toon is standing in zone %s' % zoneNum)
+ messenger.send('factoryZoneChanged', [zoneNum])
def camEnterZone(self, zoneNum):
- """
- zoneNum is an int.
-
- The camera (and not necessarily the avatar) has entered
- a zone.
- See toonEnterZone()
- """
DistributedLevel.notify.debug('camEnterZone%s' % zoneNum)
self.enterZone(zoneNum)
-
if zoneNum != self.lastCamZone:
self.lastCamZone = zoneNum
self.smallTitleText.hide()
self.spawnTitleText()
def lockVisibility(self, zoneNum=None, zoneId=None):
- """call this to lock the visibility to a particular zone
- pass in either network zoneId or zoneNum
-
- this was added for battles in the HQ factories; if you engage a suit
- in zone A with your camera in zone B, and you don't call this func,
- your client will remain in zone B. If there's a door between A and B,
- and it closes, zone B might disappear, along with the suit and the
- battle objects.
- """
- assert zoneNum is None or zoneId is None
- assert not ((zoneNum is None) and (zoneId is None))
if zoneId is not None:
zoneNum = self.getZoneNumFromId(zoneId)
-
self.notify.debug('lockVisibility to zoneNum %s' % zoneNum)
self.lockVizZone = zoneNum
self.enterZone(self.lockVizZone)
+ return
def unlockVisibility(self):
- """release the visibility lock"""
self.notify.debug('unlockVisibility')
if not hasattr(self, 'lockVizZone'):
self.notify.warning('visibility already unlocked')
else:
del self.lockVizZone
self.updateVisibility()
-
def enterZone(self, zoneNum):
- DistributedLevel.notify.debug("entering zone %s" % zoneNum)
-
+ DistributedLevel.notify.debug('entering zone %s' % zoneNum)
if not DistributedLevel.WantVisibility:
return
-
if zoneNum == self.curZoneNum:
return
-
if zoneNum not in self.zoneNumDict:
- DistributedLevel.notify.error(
- 'no ZoneEntity for this zone (%s)!!' % zoneNum)
-
+ DistributedLevel.notify.error('no ZoneEntity for this zone (%s)!!' % zoneNum)
self.updateVisibility(zoneNum)
def updateVisibility(self, zoneNum=None):
- """update the visibility assuming that we're in the specified
- zone; don't check to see if it's the zone we're already in"""
- #self.notify.debug('updateVisibility %s' % globalClock.getFrameCount())
if zoneNum is None:
zoneNum = self.curZoneNum
if zoneNum is None:
return
if hasattr(self, 'lockVizZone'):
zoneNum = self.lockVizZone
-
zoneEnt = self.getEntity(zoneNum)
- # use dicts to efficiently ensure that there are no duplicates
visibleZoneNums = list2dict([zoneNum])
visibleZoneNums.update(list2dict(zoneEnt.getVisibleZoneNums()))
-
if not __debug__:
- # HACK
- # make sure that the visibility list includes the zone that the toon
- # is standing in
if self.lastToonZone not in visibleZoneNums:
- # make sure there IS a last zone
if self.lastToonZone is not None:
- self.notify.warning(
- 'adding zoneNum %s to visibility list '
- 'because toon is standing in that zone!' %
- self.lastToonZone)
+ self.notify.warning('adding zoneNum %s to visibility list because toon is standing in that zone!' % self.lastToonZone)
visibleZoneNums.update(list2dict([self.lastToonZone]))
-
- # we should not have the uberZone in the list at this point
- zoneEntIds = list(self.entType2ids['zone'])
- zoneEntIds.remove(LevelConstants.UberZoneEntId)
- if len(zoneEntIds):
- assert not LevelConstants.UberZoneEntId in visibleZoneNums
-
- # this flag will prevent a network msg from being sent if
- # the list of visible zones has not changed
vizZonesChanged = 1
- # figure out which zones are new and which are going invisible
- # use dicts because 'x in dict' is faster than 'x in list'
addedZoneNums = []
removedZoneNums = []
allVZ = dict(visibleZoneNums)
allVZ.update(self.curVisibleZoneNums)
- for vz,dummy in allVZ.items():
+ for (vz, dummy) in list(allVZ.items()):
new = vz in visibleZoneNums
old = vz in self.curVisibleZoneNums
if new and old:
@@ -634,218 +402,133 @@ def updateVisibility(self, zoneNum=None):
else:
removedZoneNums.append(vz)
- if (not addedZoneNums) and (not removedZoneNums):
- DistributedLevel.notify.debug(
- 'visible zone list has not changed')
+ if not addedZoneNums and not removedZoneNums:
+ DistributedLevel.notify.debug('visible zone list has not changed')
vizZonesChanged = 0
- else:
- # show the new, hide the old
- DistributedLevel.notify.debug('showing zones %s' %
- addedZoneNums)
- for az in addedZoneNums:
- self.showZone(az)
- DistributedLevel.notify.debug('hiding zones %s' %
- removedZoneNums)
- for rz in removedZoneNums:
- self.hideZone(rz)
-
- # it's important for us to send a setZone request on the first
- # frame, whether or not the visibility is different from what
- # we already have
+ DistributedLevel.notify.debug('showing zones %s' % addedZoneNums)
+ for az in addedZoneNums:
+ self.showZone(az)
+
+ DistributedLevel.notify.debug('hiding zones %s' % removedZoneNums)
+ for rz in removedZoneNums:
+ self.hideZone(rz)
+
if vizZonesChanged or self.fForceSetZoneThisFrame:
- self.setVisibility(visibleZoneNums.keys())
+ self.setVisibility(list(visibleZoneNums.keys()))
self.fForceSetZoneThisFrame = 0
-
self.curZoneNum = zoneNum
self.curVisibleZoneNums = visibleZoneNums
+ return
def setVisibility(self, vizList):
- """
- vizList is a list of visible zone numbers.
- """
- # if we're showing all zones, get all the DOs
if self.fColorZones and DistributedLevel.ColorZonesAllDOs:
vizList = list(self.zoneNums)
vizList.remove(LevelConstants.UberZoneEntId)
- # convert the zone numbers into their actual zoneIds
- # always include Toontown and factory uberZones
uberZone = self.getZoneId(LevelConstants.UberZoneEntId)
- # the level itself is in the 'level zone'
- visibleZoneIds = [OTPGlobals.UberZone, self.levelZone, uberZone]
+ visibleZoneIds = [
+ OTPGlobals.UberZone, self.levelZone, uberZone]
for vz in vizList:
- if vz is not LevelConstants.UberZoneEntId:
- visibleZoneIds.append(self.getZoneId(vz))
- assert uniqueElements(visibleZoneIds)
- DistributedLevel.notify.debug('new viz list: %s' % visibleZoneIds)
+ visibleZoneIds.append(self.getZoneId(vz))
+ DistributedLevel.notify.debug('new viz list: %s' % visibleZoneIds)
base.cr.sendSetZoneMsg(self.levelZone, visibleZoneIds)
def resetVisibility(self):
- # start out with every zone visible, since none of the zones have
- # been hidden
self.curVisibleZoneNums = list2dict(self.zoneNums)
- # the UberZone is always visible, so it's not included in the
- # zones' viz lists
del self.curVisibleZoneNums[LevelConstants.UberZoneEntId]
- # Make sure every zone is visible
- for vz,dummy in self.curVisibleZoneNums.items():
+ for (vz, dummy) in list(self.curVisibleZoneNums.items()):
self.showZone(vz)
- # Redo visibility using current zone num
+
self.updateVisibility()
def handleVisChange(self):
- """the zone visibility lists have changed on-the-fly"""
Level.Level.handleVisChange(self)
self.visChangedThisFrame = 1
def forceSetZoneThisFrame(self):
- # call this to ensure that a setZone call will be generated this frame
self.fForceSetZoneThisFrame = 1
def visChangeTask(self, task):
- # this runs just before igLoop; if viz lists have changed
- # this frame, updates the visibility and sends out a setZoneMsg
if self.visChangedThisFrame or self.fForceSetZoneThisFrame:
self.updateVisibility()
self.visChangedThisFrame = 0
return Task.cont
if __dev__:
- # level editing stuff
+
def setAttribChange(self, entId, attribName, valueStr, username):
- """every time the spec is edited, we get this message
- from the AI"""
value = eval(valueStr)
self.levelSpec.setAttribChange(entId, attribName, value, username)
def spawnTitleText(self):
+
def getDescription(zoneNum, self=self):
ent = self.entities.get(zoneNum)
if ent and hasattr(ent, 'description'):
return ent.description
return None
+ return
description = getDescription(self.lastCamZone)
if description and description != '':
- taskMgr.remove(self.uniqueName("titleText"))
+ taskMgr.remove(self.uniqueName('titleText'))
self.smallTitleText.setText(description)
self.titleText.setText(description)
self.titleText.setColor(Vec4(*self.titleColor))
self.titleText.setFg(self.titleColor)
-
- # Only show the big title once per session.
- # If we've already seen it, just show the small title
-
titleSeq = None
if not self.lastCamZone in self.zonesEnteredList:
self.zonesEnteredList.append(self.lastCamZone)
- titleSeq = Task.sequence(
- Task.Task(self.hideSmallTitleTextTask),
- Task.Task(self.showTitleTextTask),
- Task.pause(0.1),
- Task.pause(6.0),
- self.titleText.lerpColor(Vec4(self.titleColor[0],
- self.titleColor[1],
- self.titleColor[2],
- self.titleColor[3]),
- Vec4(self.titleColor[0],
- self.titleColor[1],
- self.titleColor[2],
- 0.0),
- 0.5),
- )
- smallTitleSeq = Task.sequence(Task.Task(self.hideTitleTextTask),
- Task.Task(self.showSmallTitleTask))
+ titleSeq = Task.sequence(Task.Task(self.hideSmallTitleTextTask), Task.Task(self.showTitleTextTask), Task.pause(0.1), Task.pause(6.0), self.titleText.lerpColor(Vec4(self.titleColor[0], self.titleColor[1], self.titleColor[2], self.titleColor[3]), Vec4(self.titleColor[0], self.titleColor[1], self.titleColor[2], 0.0), 0.5))
+ smallTitleSeq = Task.sequence(Task.Task(self.hideTitleTextTask), Task.Task(self.showSmallTitleTask))
if titleSeq:
seq = Task.sequence(titleSeq, smallTitleSeq)
else:
seq = smallTitleSeq
- taskMgr.add(seq, self.uniqueName("titleText"))
-
-
- def showInfoText(self, text = "hello world"):
- description = text
- if description and description != '':
- taskMgr.remove(self.uniqueName("titleText"))
- self.smallTitleText.setText(description)
- self.titleText.setText(description)
- self.titleText.setColor(Vec4(*self.titleColor))
- self.titleText.setFg(self.titleColor)
+ taskMgr.add(seq, self.uniqueName('titleText'))
+ return
- # Only show the big title once per session.
- # If we've already seen it, just show the small title
-
- titleSeq = None
- titleSeq = Task.sequence(
- Task.Task(self.hideSmallTitleTextTask),
- Task.Task(self.showTitleTextTask),
- Task.pause(0.1),
- Task.pause(3.0),
- self.titleText.lerpColor(Vec4(self.titleColor[0],
- self.titleColor[1],
- self.titleColor[2],
- self.titleColor[3]),
- Vec4(self.titleColor[0],
- self.titleColor[1],
- self.titleColor[2],
- 0.0),
- 0.5),
- )
-
- if titleSeq:
- seq = Task.sequence(titleSeq)
- taskMgr.add(seq, self.uniqueName("titleText"))
-
def showTitleTextTask(self, task):
- assert DistributedLevel.notify.debug("hideTitleTextTask()")
self.titleText.show()
return Task.done
def hideTitleTextTask(self, task):
- assert DistributedLevel.notify.debug("hideTitleTextTask()")
if self.titleText:
self.titleText.hide()
return Task.done
def showSmallTitleTask(self, task):
- # make sure large title is hidden
if self.titleText:
self.titleText.hide()
- # show the small title
self.smallTitleText.show()
return Task.done
-
+
def hideSmallTitleTextTask(self, task):
- assert DistributedLevel.notify.debug("hideTitleTextTask()")
if self.smallTitleText:
self.smallTitleText.hide()
return Task.done
- # Ouch!
def startOuch(self, ouchLevel, period=2):
self.notify.debug('startOuch %s' % ouchLevel)
if not hasattr(self, 'doingOuch'):
+
def doOuch(task, self=self, ouchLevel=ouchLevel, period=period):
self.b_setOuch(ouchLevel)
self.lastOuchTime = globalClock.getFrameTime()
- taskMgr.doMethodLater(period, doOuch,
- DistributedLevel.OuchTaskName)
+ taskMgr.doMethodLater(period, doOuch, DistributedLevel.OuchTaskName)
- # check to make sure we haven't done an ouch too recently
delay = 0
if hasattr(self, 'lastOuchTime'):
curFrameTime = globalClock.getFrameTime()
- timeSinceLastOuch = (curFrameTime - self.lastOuchTime)
+ timeSinceLastOuch = curFrameTime - self.lastOuchTime
if timeSinceLastOuch < period:
delay = period - timeSinceLastOuch
-
if delay > 0:
- taskMgr.doMethodLater(
- period, doOuch,
- DistributedLevel.OuchTaskName)
+ taskMgr.doMethodLater(period, doOuch, DistributedLevel.OuchTaskName)
else:
doOuch(None)
self.doingOuch = 1
+ return
def stopOuch(self):
if hasattr(self, 'doingOuch'):
@@ -855,26 +538,18 @@ def stopOuch(self):
def b_setOuch(self, penalty, anim=None):
self.notify.debug('b_setOuch %s' % penalty)
av = base.localAvatar
-
- # play the stun track (flashing toon)
if not av.isStunned:
self.d_setOuch(penalty)
self.setOuch(penalty, anim)
def d_setOuch(self, penalty):
- self.sendUpdate("setOuch", [penalty])
-
- def setOuch(self, penalty, anim = None):
- if anim == "Squish":
- if base.cr.playGame.getPlace():
- base.cr.playGame.getPlace().fsm.request('squished')
- elif anim == "Fall":
- if base.cr.playGame.getPlace():
- base.cr.playGame.getPlace().fsm.request('fallDown')
-
+ self.sendUpdate('setOuch', [penalty])
+
+ def setOuch(self, penalty, anim=None):
+ if anim == 'Squish':
+ base.cr.playGame.getPlace().fsm.request('squished')
+ elif anim == 'Fall':
+ base.cr.playGame.getPlace().fsm.request('fallDown')
av = base.localAvatar
av.stunToon()
- av.playDialogueForString("!")
-
- def complexVis(self):
- return 1
+ av.playDialogueForString('!')
\ No newline at end of file
diff --git a/otp/src/level/DistributedLevelAI.py b/otp/src/level/DistributedLevelAI.py
index 3dc2f7e9..0933b2d5 100644
--- a/otp/src/level/DistributedLevelAI.py
+++ b/otp/src/level/DistributedLevelAI.py
@@ -3,9 +3,9 @@
from otp.ai.AIBaseGlobal import *
from direct.distributed.ClockDelta import *
from direct.distributed import DistributedObjectAI
-import Level
+from . import Level
from direct.directnotify import DirectNotifyGlobal
-import EntityCreatorAI
+from . import EntityCreatorAI
from direct.showbase.PythonUtil import Functor, weightedChoice
class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
@@ -87,8 +87,8 @@ def initializeLevel(self, levelSpec):
# choose a scenario
# make list of lists: [(weight, scenarioIndex), ...]
- lol = zip([1] * levelSpec.getNumScenarios(),
- range(levelSpec.getNumScenarios()))
+ lol = list(zip([1] * levelSpec.getNumScenarios(),
+ list(range(levelSpec.getNumScenarios()))))
scenarioIndex = weightedChoice(lol)
Level.Level.initializeLevel(self, self.doId, levelSpec, scenarioIndex)
diff --git a/otp/src/level/EditMgr.py b/otp/src/level/EditMgr.py
index a5cea0be..c548a914 100644
--- a/otp/src/level/EditMgr.py
+++ b/otp/src/level/EditMgr.py
@@ -1,7 +1,4 @@
-"""EditMgr module: contains the EditMgr class"""
-
-import EditMgrBase
+from . import EditMgrBase
class EditMgr(EditMgrBase.EditMgrBase):
- """This class handles client-side editor-specific functionality"""
- pass
+ __module__ = __name__
\ No newline at end of file
diff --git a/otp/src/level/EditMgrAI.py b/otp/src/level/EditMgrAI.py
index db2cf775..22944053 100644
--- a/otp/src/level/EditMgrAI.py
+++ b/otp/src/level/EditMgrAI.py
@@ -1,9 +1,9 @@
"""EditMgrAI module: contains the EditMgrAI class"""
-import EditMgrBase
+from . import EditMgrBase
if __dev__:
from direct.showbase.PythonUtil import list2dict
- import EditorGlobals
+ from . import EditorGlobals
class EditMgrAI(EditMgrBase.EditMgrBase):
"""This class handles AI-side editor-specific functionality"""
@@ -26,8 +26,8 @@ def setRequestNewEntity(self, data):
while not idChosen:
# linear search for an unused entId starting with the
# last-allocated id
- for id in xrange(self.lastAllocatedEntId, allocRange[1]):
- print id
+ for id in range(self.lastAllocatedEntId, allocRange[1]):
+ print(id)
if not id in entIdDict:
idChosen = 1
break
diff --git a/otp/src/level/EditMgrBase.py b/otp/src/level/EditMgrBase.py
index 78bbf5a7..40b009e5 100644
--- a/otp/src/level/EditMgrBase.py
+++ b/otp/src/level/EditMgrBase.py
@@ -1,11 +1,10 @@
-"""EditMgrBase module: contains the EditMgrBase class"""
-
-import Entity
+from . import Entity
from direct.directnotify import DirectNotifyGlobal
class EditMgrBase(Entity.Entity):
- """This class contains EditMgr code shared between AI and client"""
- notify = DirectNotifyGlobal.directNotify.newCategory("EditMgr")
+ __module__ = __name__
+ notify = DirectNotifyGlobal.directNotify.newCategory('EditMgr')
+
def __init__(self, level, entId):
Entity.Entity.__init__(self, level, entId)
@@ -14,21 +13,14 @@ def destroy(self):
self.ignoreAll()
if __dev__:
+
def setInsertEntity(self, data):
- # tell the level who created this entity
self.level.setEntityCreatorUsername(data['entId'], data['username'])
- # create the entity
- self.level.levelSpec.insertEntity(data['entId'],
- data['entType'],
- data['parentEntId'],
- )
- # clear out the attrib, it shouldn't be kept in the spec
- self.level.levelSpec.doSetAttrib(self.entId, 'insertEntity',
- None)
+ self.level.levelSpec.insertEntity(data['entId'], data['entType'], data['parentEntId'])
+ self.level.levelSpec.doSetAttrib(self.entId, 'insertEntity', None)
+ return
def setRemoveEntity(self, data):
- self.level.levelSpec.removeEntity(data['entId'],
- )
- # clear out the attrib, it shouldn't be kept in the spec
- self.level.levelSpec.doSetAttrib(self.entId, 'removeEntity',
- None)
+ self.level.levelSpec.removeEntity(data['entId'])
+ self.level.levelSpec.doSetAttrib(self.entId, 'removeEntity', None)
+ return
\ No newline at end of file
diff --git a/otp/src/level/EditorGlobals.py b/otp/src/level/EditorGlobals.py
index 30b303b7..23c702c2 100644
--- a/otp/src/level/EditorGlobals.py
+++ b/otp/src/level/EditorGlobals.py
@@ -21,7 +21,7 @@
'jloehrle':10*EntIdRange,
'rurbino' :11*EntIdRange,
}
-assert uniqueElements(username2entIdBase.values())
+assert uniqueElements(list(username2entIdBase.values()))
usernameConfigVar = 'level-edit-username'
undefinedUsername = 'UNDEFINED_USERNAME'
diff --git a/otp/src/level/Entity.py b/otp/src/level/Entity.py
index 66b55b0d..f6b02c23 100644
--- a/otp/src/level/Entity.py
+++ b/otp/src/level/Entity.py
@@ -1,116 +1,75 @@
-"""Entity.py: contains the Entity class"""
-
-from direct.showbase.DirectObject import DirectObject
+from direct.showbase.DirectObject import *
from direct.showbase.PythonUtil import lineInfo
-import string
from direct.directnotify import DirectNotifyGlobal
class Entity(DirectObject):
- """
- Entity is the base class for all objects that exist in a Level
- and can be edited with the LevelEditor.
- """
notify = DirectNotifyGlobal.directNotify.newCategory('Entity')
def __init__(self, level=None, entId=None):
self.initializeEntity(level, entId)
def initializeEntity(self, level, entId):
- ###
- ### THIS IS WHERE ENTITIES GET THEIR ATTRIBUTES SET
- ###
- """
- Distributed entities on the client don't know their level or
- entId values until they've been generated, so they call this
- after they've been generated. At that point, the entity is good
- to go.
- """
self.level = level
self.entId = entId
- if (self.level is not None) and (self.entId is not None):
+ if self.level is not None and self.entId is not None:
self.level.initializeEntity(self)
+ return
def __str__(self):
- if hasattr(self, 'level') and self.level:
+ if self.level:
return 'ent%s(%s)' % (self.entId, self.level.getEntityType(self.entId))
- elif hasattr(self, 'name'):
- return self.name
- elif hasattr(self, 'entId'):
- return '%s-%s' % (self.__class__.__name__, self.entId)
else:
- return self.__class__.__name__
-
+ return self.name
+
def destroy(self):
- """
- This is called when the level wants this entity to go away.
- Once this is called, the Entity should be considered defunct.
- NOTE: distributed entities are still valid distributed objects
- after this is called, but they are no longer valid entities.
- Distributed entities ought to be disabled and/or deleted shortly
- after this is called.
- """
Entity.notify.debug('Entity.destroy() %s' % self.entId)
- # client-side distributed entities might be doing this after
- # the level has been been destroyed...?
if self.level:
if self.level.isInitialized():
self.level.onEntityDestroy(self.entId)
else:
- Entity.notify.warning('Entity %s destroyed after level??' %
- self.entId)
+ Entity.notify.warning('Entity %s destroyed after level??' % self.entId)
self.ignoreAll()
del self.level
del self.entId
-
+
def getUniqueName(self, name, entId=None):
- """returns a name that is unique for a particular entity;
- defaults to this entity"""
if entId is None:
entId = self.entId
return '%s-%s-%s' % (name, self.level.levelId, entId)
+ return
def getParentToken(self):
- """returns a value that uniquely identifies this entity for purposes
- of distributed parenting"""
- # give the level the option of modifying our entId, to handle instances
- # where there are multiple levels present on the client simultaneously
return self.level.getParentTokenForEntity(self.entId)
def getOutputEventName(self, entId=None):
- """returns the event generated by an entity; defaults to this entity"""
if entId is None:
entId = self.entId
return self.getUniqueName('entityOutput', entId)
+ return
def getZoneEntId(self):
- """returns entId of zone that contains this entity"""
return self.level.getEntityZoneEntId(self.entId)
def getZoneEntity(self):
- """returns zone entity for zone that contains this entity"""
return self.level.getEntity(self.getZoneEntId())
def getZoneNode(self):
- """returns zoneNode for zone that contains this entity"""
return self.getZoneEntity().getNodePath()
def privGetSetter(self, attrib):
- setFuncName = 'set%s%s' % (string.upper(attrib[0]), attrib[1:])
+ setFuncName = 'set%s%s' % (attrib[0].upper(), attrib[1:])
if hasattr(self, setFuncName):
return getattr(self, setFuncName)
return None
+ return
def callSetters(self, *attribs):
- """call this with a list of attribs, and any that exist on the
- entity and have setters will be passed to their setter"""
self.privCallSetters(0, *attribs)
def callSettersAndDelete(self, *attribs):
- """same as callSetters, but also removes attribs from entity"""
self.privCallSetters(1, *attribs)
def privCallSetters(self, doDelete, *attribs):
- """common implementation of callSetters and callSettersAndDelete"""
for attrib in attribs:
if hasattr(self, attrib):
setter = self.privGetSetter(attrib)
@@ -120,44 +79,21 @@ def privCallSetters(self, doDelete, *attribs):
delattr(self, attrib)
setter(value)
- # this will be called with each item of our spec data on initialization
+ return
+
def setAttribInit(self, attrib, value):
-## if __debug__:
-## if hasattr(self, attrib):
-## Entity.notify.warning(
-## '%s already has member %s in setAttribInit' %
-## (self, attrib))
- # TODO: we should probably put this crep in a dictionary
- # rather than dump it into the entity's namespace
self.__dict__[attrib] = value
- if __debug__:
- def debugPrint(self, message):
- """for debugging"""
- return self.notify.debug(
- str(self.__dict__.get('entId', '?'))+' '+message)
-
if __dev__:
- # support for level editing
+
def handleAttribChange(self, attrib, value):
- # call callback function if it exists
- # otherwise set attrib directly and call notify func
setter = self.privGetSetter(attrib)
if setter is not None:
- # call the setter
setter(value)
else:
- # set the attrib directly
self.__dict__[attrib] = value
- # and call the notify func
self.attribChanged(attrib, value)
+ return
def attribChanged(self, attrib, value):
- """
- This is called when a parameter is tweaked and no setter
- is called; i.e. the value is set directly on the object.
- Some Entities might want to completely reset every time anything
- is tweaked; this is the place to do it, just override this func
- in your derived class
- """
- pass
+ pass
\ No newline at end of file
diff --git a/otp/src/level/EntityCreator.py b/otp/src/level/EntityCreator.py
index a8305f7c..80d5dbf8 100644
--- a/otp/src/level/EntityCreator.py
+++ b/otp/src/level/EntityCreator.py
@@ -1,61 +1,22 @@
-"""EntityCreator module: contains the EntityCreator class"""
-
-import CutScene
-import EntityCreatorBase
-import BasicEntities
+import CutScene, EntityCreatorBase, BasicEntities
from direct.directnotify import DirectNotifyGlobal
-import EditMgr
-import EntrancePoint
-import LevelMgr
-import LogicGate
-import ZoneEntity
-import ModelEntity
-import PathEntity
-import VisibilityExtender
-import PropSpinner
-import AmbientSound
-import LocatorEntity
-import CollisionSolidEntity
+import EditMgr, EntrancePoint, LevelMgr, LogicGate, ZoneEntity, ModelEntity, PathEntity, VisibilityExtender, PropSpinner, AmbientSound, LocatorEntity, CollisionSolidEntity
-# some useful constructor functions
-# ctor functions must take (level, entId)
-# and they must return the entity that was created, or 'nothing'
def nothing(*args):
- """For entities that don't exist on the client at all"""
return 'nothing'
+
def nonlocal(*args):
- """For entities that don't need to be created by the client and will
- show up independently (they're distributed and created by the AI)"""
return 'nonlocal'
+
class EntityCreator(EntityCreatorBase.EntityCreatorBase):
- """
- This class is responsible for creating instances of Entities on the
- client. It can be subclassed to handle more Entity types.
- """
-
+ __module__ = __name__
+
def __init__(self, level):
EntityCreatorBase.EntityCreatorBase.__init__(self, level)
self.level = level
- self.privRegisterTypes({
- 'attribModifier': nothing,
- 'ambientSound': AmbientSound.AmbientSound,
- 'collisionSolid': CollisionSolidEntity.CollisionSolidEntity,
- 'cutScene': CutScene.CutScene,
- 'editMgr': EditMgr.EditMgr,
- 'entityGroup': nothing,
- 'entrancePoint': EntrancePoint.EntrancePoint,
- 'levelMgr': LevelMgr.LevelMgr,
- 'locator': LocatorEntity.LocatorEntity,
- 'logicGate': LogicGate.LogicGate,
- 'model': ModelEntity.ModelEntity,
- 'nodepath': BasicEntities.NodePathEntity,
- 'path': PathEntity.PathEntity,
- 'propSpinner': PropSpinner.PropSpinner,
- 'visibilityExtender': VisibilityExtender.VisibilityExtender,
- 'zone': ZoneEntity.ZoneEntity,
- })
+ self.privRegisterTypes({'attribModifier': nothing, 'ambientSound': AmbientSound.AmbientSound, 'collisionSolid': CollisionSolidEntity.CollisionSolidEntity, 'cutScene': CutScene.CutScene, 'editMgr': EditMgr.EditMgr, 'entityGroup': nothing, 'entrancePoint': EntrancePoint.EntrancePoint, 'levelMgr': LevelMgr.LevelMgr, 'locator': LocatorEntity.LocatorEntity, 'logicGate': LogicGate.LogicGate, 'model': ModelEntity.ModelEntity, 'nodepath': BasicEntities.NodePathEntity, 'path': PathEntity.PathEntity, 'propSpinner': PropSpinner.PropSpinner, 'visibilityExtender': VisibilityExtender.VisibilityExtender, 'zone': ZoneEntity.ZoneEntity})
def doCreateEntity(self, ctor, entId):
- return ctor(self.level, entId)
+ return ctor(self.level, entId)
\ No newline at end of file
diff --git a/otp/src/level/EntityCreatorAI.py b/otp/src/level/EntityCreatorAI.py
index a84eb14c..ca0d20a9 100644
--- a/otp/src/level/EntityCreatorAI.py
+++ b/otp/src/level/EntityCreatorAI.py
@@ -1,10 +1,10 @@
"""EntityCreatorAI module: contains the EntityCreatorAI class"""
-import EntityCreatorBase
-import LogicGate
-import EditMgrAI
-import LevelMgrAI
-import ZoneEntityAI
+from . import EntityCreatorBase
+from . import LogicGate
+from . import EditMgrAI
+from . import LevelMgrAI
+from . import ZoneEntityAI
from direct.showbase.PythonUtil import Functor
# some useful constructor functions
diff --git a/otp/src/level/EntityCreatorBase.py b/otp/src/level/EntityCreatorBase.py
index 57643f06..6ffe8e66 100644
--- a/otp/src/level/EntityCreatorBase.py
+++ b/otp/src/level/EntityCreatorBase.py
@@ -1,11 +1,7 @@
-"""EntityCreatorBase module: contains the EntityCreatorBase class"""
-
from direct.directnotify import DirectNotifyGlobal
class EntityCreatorBase:
- """This class is responsible for creating instances of Entities on the
- AI and on the client. It must be subclassed to specify what entity
- types it can create, and to provide the creation implementation."""
+ __module__ = __name__
notify = DirectNotifyGlobal.directNotify.newCategory('EntityCreator')
def __init__(self, level):
@@ -14,27 +10,19 @@ def __init__(self, level):
def createEntity(self, entId):
entType = self.level.getEntityType(entId)
-
- if not self.entType2Ctor.has_key(entType):
- self.notify.error('unknown entity type: %s (ent%s)' %
- (entType, entId))
-
- # inheritor must define doCreateEntity
+ if entType not in self.entType2Ctor:
+ self.notify.error('unknown entity type: %s (ent%s)' % (entType, entId))
ent = self.doCreateEntity(self.entType2Ctor[entType], entId)
- assert ent is not None # must be Entity or 'nothing'
return ent
def getEntityTypes(self):
- """by definition, this object knows the full list of entity types
- that may exist within the level"""
- return self.entType2Ctor.keys()
+ return list(self.entType2Ctor.keys())
def privRegisterType(self, entType, ctor):
- if self.entType2Ctor.has_key(entType):
- self.notify.debug('replacing %s ctor %s with %s' %
- (entType, self.entType2Ctor[entType], ctor))
+ if entType in self.entType2Ctor:
+ self.notify.debug('replacing %s ctor %s with %s' % (entType, self.entType2Ctor[entType], ctor))
self.entType2Ctor[entType] = ctor
def privRegisterTypes(self, type2ctor):
- for entType, ctor in type2ctor.items():
- self.privRegisterType(entType, ctor)
+ for (entType, ctor) in list(type2ctor.items()):
+ self.privRegisterType(entType, ctor)
\ No newline at end of file
diff --git a/otp/src/level/EntityTypeDesc.py b/otp/src/level/EntityTypeDesc.py
index 0ddb3db2..0f5a00ab 100644
--- a/otp/src/level/EntityTypeDesc.py
+++ b/otp/src/level/EntityTypeDesc.py
@@ -1,7 +1,7 @@
"""EntityTypeDesc module: contains the EntityTypeDesc class"""
from direct.directnotify import DirectNotifyGlobal
-import AttribDesc
+from . import AttribDesc
from direct.showbase.PythonUtil import mostDerivedLast
class EntityTypeDesc:
@@ -27,12 +27,12 @@ def __init__(self):
def isConcrete(self):
""" means that entity of this exact type can be created """
- return not self.__class__.__dict__.has_key('abstract')
+ return 'abstract' not in self.__class__.__dict__
def isPermanent(self):
""" means that entity of this exact type cannot be inserted or
removed in the editor """
- return self.__class__.__dict__.has_key('permanent')
+ return 'permanent' in self.__class__.__dict__
def getOutputType(self):
return self.output
@@ -48,7 +48,7 @@ def getAttribDescDict(self):
def getAttribsOfType(self, type):
"""returns list of attrib names of the given type"""
names = []
- for attribName, desc in self.attribDescDict.items():
+ for attribName, desc in list(self.attribDescDict.items()):
if desc.getDatatype() == type:
names.append(attribName)
return names
@@ -59,7 +59,7 @@ def privCompileAttribDescs(entTypeClass):
passed in. The attribute descriptors describe the properties of each
of the Entity type's attributes"""
# has someone already compiled the info?
- if entTypeClass.__dict__.has_key('_attribDescs'):
+ if '_attribDescs' in entTypeClass.__dict__:
return
c = entTypeClass
@@ -99,7 +99,7 @@ def privCompileAttribDescs(entTypeClass):
# now that we have all of the descriptors from our base classes,
# add the descriptors from this class
attribDescs = []
- if c.__dict__.has_key('attribs'):
+ if 'attribs' in c.__dict__:
for attrib in c.attribs:
desc = AttribDesc.AttribDesc(*attrib)
diff --git a/otp/src/level/EntityTypeRegistry.py b/otp/src/level/EntityTypeRegistry.py
index debe8442..316641e2 100644
--- a/otp/src/level/EntityTypeRegistry.py
+++ b/otp/src/level/EntityTypeRegistry.py
@@ -3,11 +3,12 @@
from pandac.PandaModules import *
from direct.directnotify import DirectNotifyGlobal
import types
-import AttribDesc
-import EntityTypeDesc
+from . import AttribDesc
+from . import EntityTypeDesc
from direct.showbase.PythonUtil import mostDerivedLast
import os
import string
+import importlib
class EntityTypeRegistry:
notify = DirectNotifyGlobal.directNotify.newCategory('EntityTypeRegistry')
@@ -18,9 +19,9 @@ def __init__(self, entityTypeModule):
# compute the hash of the source modules as of the time of creation
hv = HashVal()
- import EntityTypes
- reload(EntityTypes)
- reload(self.entTypeModule)
+ from . import EntityTypes
+ importlib.reload(EntityTypes)
+ importlib.reload(self.entTypeModule)
# Convert a pyc or pyo to a py
# If the client runs genPyCode -n then ihooks will not be installed
@@ -53,8 +54,8 @@ def getPyExtVersion(filename):
# get a list of the EntityTypeDesc classes in the type module
classes = []
- for key, value in entityTypeModule.__dict__.items():
- if type(value) is types.ClassType:
+ for key, value in list(entityTypeModule.__dict__.items()):
+ if type(value) is type:
if issubclass(value, EntityTypeDesc.EntityTypeDesc):
classes.append(value)
@@ -64,8 +65,8 @@ def getPyExtVersion(filename):
# make sure that derived classes come after bases
mostDerivedLast(classes)
for c in classes:
- if c.__dict__.has_key('type'):
- if self.entTypeName2typeDesc.has_key(c.type):
+ if 'type' in c.__dict__:
+ if c.type in self.entTypeName2typeDesc:
# a more-derived class is replacing a less-derived class
# to implement a particular entity type
EntityTypeRegistry.notify.debug(
@@ -77,7 +78,7 @@ def getPyExtVersion(filename):
# create mapping of entity output types to list of concrete entity
# typenames with that output type
self.output2typeNames = {}
- for typename, typeDesc in self.entTypeName2typeDesc.items():
+ for typename, typeDesc in list(self.entTypeName2typeDesc.items()):
if typeDesc.isConcrete():
if hasattr(typeDesc, 'output'):
outputType = typeDesc.output
@@ -87,7 +88,7 @@ def getPyExtVersion(filename):
# create list of permanent entity typenames (entity types that cannot
# be inserted or removed in the editor)
self.permanentTypeNames = []
- for typename, typeDesc in self.entTypeName2typeDesc.items():
+ for typename, typeDesc in list(self.entTypeName2typeDesc.items()):
if typeDesc.isPermanent():
assert typeDesc.isConcrete()
self.permanentTypeNames.append(typename)
@@ -96,16 +97,16 @@ def getPyExtVersion(filename):
# of entity typenames are concrete and are of that type or derive
# from that type
self.typeName2derivedTypeNames = {}
- for typename, typeDesc in self.entTypeName2typeDesc.items():
+ for typename, typeDesc in list(self.entTypeName2typeDesc.items()):
typenames = []
- for tn, td in self.entTypeName2typeDesc.items():
+ for tn, td in list(self.entTypeName2typeDesc.items()):
if td.isConcrete():
if issubclass(td.__class__, typeDesc.__class__):
typenames.append(tn)
self.typeName2derivedTypeNames[typename] = typenames
def getAllTypeNames(self):
- return self.entTypeName2typeDesc.keys()
+ return list(self.entTypeName2typeDesc.keys())
def getTypeDesc(self, entTypeName):
"""returns EntityTypeDesc instance for concrete Entity type"""
diff --git a/otp/src/level/EntityTypes.py b/otp/src/level/EntityTypes.py
index 8f6648f3..124a3629 100644
--- a/otp/src/level/EntityTypes.py
+++ b/otp/src/level/EntityTypes.py
@@ -1,154 +1,113 @@
-"""EntityTypes module: contains classes that describe Entity types"""
-
-from EntityTypeDesc import EntityTypeDesc
+from .EntityTypeDesc import EntityTypeDesc
from toontown.coghq.SpecImports import *
class Entity(EntityTypeDesc):
+ __module__ = __name__
abstract = 1
type = 'entity'
- attribs = (
- ('type', None, 'const'),
- ('name', '', 'string'),
- ('comment', '', 'string'),
- ('parentEntId', 0, 'entId'),
- )
+ attribs = (('type', None, 'const'), ('name', '', 'string'), ('comment', '', 'string'), ('parentEntId', 0, 'entId'))
+
class LevelMgr(Entity):
+ __module__ = __name__
type = 'levelMgr'
permanent = 1
- attribs = (
- ('name', 'LevelMgr', 'const'),
- ('parentEntId', 0, 'const'),
- ('modelFilename', '', 'const'),
- )
+ attribs = (('name', 'LevelMgr', 'const'), ('parentEntId', 0, 'const'), ('modelFilename', '', 'const'))
+
class EditMgr(Entity):
+ __module__ = __name__
type = 'editMgr'
permanent = 1
- blockAttribs = (
- 'comment',
- )
+ blockAttribs = ('comment',)
attribs = (
- ('name', 'LevelMgr', 'const'),
- ('parentEntId', 0, 'const'),
- ('requestSave', None, 'const'),
- ('requestNewEntity', None, 'const'),
- ('insertEntity', None, 'const'),
- ('removeEntity', None, 'const'),
- )
+ (
+ 'name', 'LevelMgr', 'const'), ('parentEntId', 0, 'const'), ('requestSave', None, 'const'), ('requestNewEntity', None, 'const'), ('insertEntity', None, 'const'), ('removeEntity', None, 'const'))
+
class AttribModifier(Entity):
+ __module__ = __name__
type = 'attribModifier'
- attribs = (
- ('recursive', 0, 'bool'),
- ('typeName', '', 'string'),
- ('attribName', '', 'string'),
- ('value', '', 'string'),
- )
+ attribs = (('recursive', 0, 'bool'), ('typeName', '', 'string'), ('attribName', '', 'string'), ('value', '', 'string'))
+
class Locator(Entity):
- type='locator'
- attribs = (
- ('searchPath', '', 'string'),
- )
+ __module__ = __name__
+ type = 'locator'
+ attribs = (('searchPath', '', 'string'),)
+
class Nodepath(Entity):
+ __module__ = __name__
type = 'nodepath'
- attribs = (
- ('parentEntId', 0, 'entId', {'type':'nodepath'}),
- ('pos', Point3(0,0,0), 'pos'),
- ('hpr', Vec3(0,0,0), 'hpr'),
- ('scale', 1, 'scale'),
- )
+ attribs = (('parentEntId', 0, 'entId', {'type': 'nodepath'}), ('pos', Point3(0, 0, 0), 'pos'), ('hpr', Vec3(0, 0, 0), 'hpr'), ('scale', 1, 'scale'))
+
class Zone(Nodepath):
+ __module__ = __name__
type = 'zone'
permanent = 1
- blockAttribs = (
- 'pos',
- 'hpr',
- )
+ blockAttribs = ('pos', 'hpr')
attribs = (
- ('parentEntId', 0, 'const'),
- ('description', '', 'string'),
- ('visibility', [], 'visZoneList'),
- )
+ (
+ 'parentEntId', 0, 'const'), ('description', '', 'string'), ('visibility', [], 'visZoneList'))
+
class EntrancePoint(Nodepath):
+ __module__ = __name__
type = 'entrancePoint'
- attribs = (
- ('entranceId', -1, 'int'),
- ('radius', 15, 'float', {'min':0}),
- ('theta', 20, 'float', {'min':0}),
- )
+ attribs = (('entranceId', -1, 'int'), ('radius', 15, 'float', {'min': 0}), ('theta', 20, 'float', {'min': 0}))
+
class LogicGate(Entity):
+ __module__ = __name__
type = 'logicGate'
output = 'bool'
- attribs = (
- ('input1Event', 0, 'entId', {'output':'bool'}),
- ('input2Event', 0, 'entId', {'output':'bool'}),
- ('isInput1', 0, 'bool'),
- ('isInput2', 0, 'bool'),
- ('logicType', 'or', 'choice',
- {'choiceSet':['or','and','xor','nand','nor','xnor']}),
- )
+ attribs = (('input1Event', 0, 'entId', {'output': 'bool'}), ('input2Event', 0, 'entId', {'output': 'bool'}), ('isInput1', 0, 'bool'), ('isInput2', 0, 'bool'), ('logicType', 'or', 'choice', {'choiceSet': ['or', 'and', 'xor', 'nand', 'nor', 'xnor']}))
+
class CutScene(Entity):
+ __module__ = __name__
type = 'cutScene'
output = 'bool'
- attribs = (
- ('pos', Point3(0,0,0), 'pos'),
- ('hpr', Vec3(0,0,0), 'hpr'),
- ('startStopEvent', 0, 'entId', {'output':'bool'}),
- ('effect', 'irisInOut', 'choice', {'choiceSet':['nothing','irisInOut','letterBox']}),
- ('motion', 'foo1', 'choice', {'choiceSet':['foo1']}),
- ('duration', 5.0, 'float'),
- )
+ attribs = (('pos', Point3(0, 0, 0), 'pos'), ('hpr', Vec3(0, 0, 0), 'hpr'), ('startStopEvent', 0, 'entId', {'output': 'bool'}), ('effect', 'irisInOut', 'choice', {'choiceSet': ['nothing', 'irisInOut', 'letterBox']}), ('motion', 'foo1', 'choice', {'choiceSet': ['foo1']}), ('duration', 5.0, 'float'))
+
class CollisionSolid(Nodepath):
+ __module__ = __name__
type = 'collisionSolid'
- attribs = (
- ('solidType', 'sphere', 'choice', {'choiceSet':['sphere', 'tube']}),
- ('radius', 1., 'float'),
- ('length', 0., 'float'),
- ('showSolid', 0, 'bool'),
- )
+ attribs = (('solidType', 'sphere', 'choice', {'choiceSet': ['sphere', 'tube']}), ('radius', 1.0, 'float'), ('length', 0.0, 'float'), ('showSolid', 0, 'bool'))
+
class Model(Nodepath):
+ __module__ = __name__
type = 'model'
- attribs = (
- ('loadType', 'loadModelCopy', 'choice', {'choiceSet':['loadModelCopy','loadModel','loadModelOnce']}),
- ('modelPath', None, 'bamfilename'),
- ('flattenType', 'light', 'choice', {'choiceSet':['none','light','medium','strong']}),
- ('collisionsOnly', 0, 'bool'),
- ('goonHatType', 'none', 'choice', {'choiceSet':['none', 'hardhat', 'security']}),
- )
+ attribs = (('loadType', 'loadModelCopy', 'choice', {'choiceSet': ['loadModelCopy', 'loadModel', 'loadModelOnce']}), ('modelPath', None, 'bamfilename'), ('flattenType', 'light', 'choice', {'choiceSet': ['none', 'light', 'medium', 'strong']}), ('collisionsOnly', 0, 'bool'))
+
class Path(Nodepath):
+ __module__ = __name__
type = 'path'
- attribs = (
- ('pathIndex', 0, 'int'),
- ('pathScale', 1., 'float'),
- )
+ attribs = (('pathIndex', 0, 'int'), ('pathScale', 1.0, 'float'))
+
class VisibilityExtender(Entity):
+ __module__ = __name__
type = 'visibilityExtender'
- attribs = (
- ('event', None, 'entId', {'output':'bool'}),
- ('newZones', [], 'visZoneList'),
- )
+ attribs = (('event', None, 'entId', {'output': 'bool'}), ('newZones', [], 'visZoneList'))
+
class AmbientSound(Nodepath):
+ __module__ = __name__
type = 'ambientSound'
- attribs = (
- ('soundPath', '', 'bamfilename'),
- ('volume', 1, 'float', {'min':0,'max':1}),
- ('enabled', 1, 'bool'),
- )
+ attribs = (('soundPath', '', 'bamfilename'), ('volume', 1, 'float', {'min': 0, 'max': 1}), ('enabled', 1, 'bool'))
+
class PropSpinner(Entity):
+ __module__ = __name__
type = 'propSpinner'
+
class EntityGroup(Entity):
- type = 'entityGroup'
+ __module__ = __name__
+ type = 'entityGroup'
\ No newline at end of file
diff --git a/otp/src/level/EntrancePoint.py b/otp/src/level/EntrancePoint.py
index b2d53e46..ed7a70ef 100644
--- a/otp/src/level/EntrancePoint.py
+++ b/otp/src/level/EntrancePoint.py
@@ -1,8 +1,11 @@
from toontown.toonbase.ToontownGlobals import *
from direct.directnotify import DirectNotifyGlobal
-import BasicEntities
+from . import BasicEntities
+from pandac import NodePath
class EntrancePoint(BasicEntities.NodePathEntity):
+ __module__ = __name__
+
def __init__(self, level, entId):
BasicEntities.NodePathEntity.__init__(self, level, entId)
self.rotator = self.attachNewNode('rotator')
@@ -13,14 +16,14 @@ def destroy(self):
self.destroyEntrancePoint()
self.placer.removeNode()
self.rotator.removeNode()
- del self.placer, self.rotator
+ del self.placer
+ del self.rotator
BasicEntities.NodePathEntity.destroy(self)
def placeToon(self, toon, toonIndex, numToons):
self.placer.setY(-self.radius)
- self.rotator.setH((-self.theta*(numToons-1)*.5) +
- (toonIndex*self.theta))
- toon.setPosHpr(self.placer, 0,0,0, 0,0,0)
+ self.rotator.setH(-self.theta * (numToons - 1) * 0.5 + toonIndex * self.theta)
+ toon.setPosHpr(self.placer, 0, 0, 0, 0, 0, 0)
def initEntrancePoint(self):
if self.entranceId >= 0:
@@ -28,11 +31,12 @@ def initEntrancePoint(self):
def destroyEntrancePoint(self):
if self.entranceId >= 0:
- if self.level.entranceId2entity.has_key(self.entranceId):
+ if self.entranceId in self.level.entranceId2entity:
del self.level.entranceId2entity[self.entranceId]
if __dev__:
+
def attribChanged(self, *args):
BasicEntities.NodePathEntity.attribChanged(self, *args)
self.destroyEntrancePoint()
- self.initEntrancePoint()
+ self.initEntrancePoint()
\ No newline at end of file
diff --git a/otp/src/level/Level.py b/otp/src/level/Level.py
index 50f689c7..769ec7a3 100644
--- a/otp/src/level/Level.py
+++ b/otp/src/level/Level.py
@@ -1,110 +1,37 @@
-"""Level.py: contains the Level class"""
-
from direct.directnotify import DirectNotifyGlobal
import string
-import LevelConstants
+from . import LevelConstants
from direct.showbase.PythonUtil import lineInfo, uniqueElements
import types
-"""
-Any data that can be edited by a level editor must be represented as
-an attribute of an entity owned by the level, in order to keep the
-level-editing interface simple and constant (there are at least three
-places where the entire editing interface must be duplicated).
-
-To support this, we have entities such as 'levelMgr' and 'zoneEntity' that
-contain crucial level information, much of which is needed when setting
-up the level object, and is needed before other entity types can be
-effectively created. (If you try to create a distributed entity, but
-you don't yet have the information for the zone that it's in, because
-you haven't created the zone's ZoneEntity, you're hurting.)
-"""
-
-"""
-ZONE TERMINOLOGY
-zoneNum / zoneEntId: the number that a modeler chooses for a zone, and also
- the entity ID of the ZoneEntity that represents a zone
-zoneId: the network ID of a zone
-"""
-
class Level:
- """Level: representation of a game level, keeps track of all of the
- entities and their interrelations, and creates and destroys entities"""
notify = DirectNotifyGlobal.directNotify.newCategory('Level')
def __init__(self):
self.levelSpec = None
self.initialized = 0
+ return
def initializeLevel(self, levelId, levelSpec, scenarioIndex):
- """subclass should call this as soon as it has located
- its spec data. levelId should be a unique integer (a doId works
- just fine) that differentiates this level from all other levels
- that may exist concurrently."""
self.levelId = levelId
self.levelSpec = levelSpec
self.scenarioIndex = scenarioIndex
-
self.levelSpec.setScenario(self.scenarioIndex)
if __dev__:
self.levelSpec.setLevel(self)
-
- # create some handy tables
-
- # entranceId to entrance entity
self.entranceId2entity = {}
-
- # dict of entId -> list of callbacks to be called upon creation
self.entId2createCallbacks = {}
-
- # this list contains the entIds of entities that we have actually
- # created, in order of creation
self.createdEntIds = []
-
- # non-ordered list of entIds of entities that are not 'local', i.e.
- # they are created by someone else (i.e. the AI) and will come and go.
self.nonlocalEntIds = {}
-
- # non-ordered list of entIds of entities that do not ever have any
- # representation on this side (i.e. client-side or AI-side). Populated
- # as the entities get their turn to be created.
self.nothingEntIds = {}
-
- # get an entity creator object
self.entityCreator = self.createEntityCreator()
-
- # entity type -> list of entIds
- self.entType2ids = self.levelSpec.getEntType2ids(
- self.levelSpec.getAllEntIds())
- # create empty list for any entity types that are not represented
- # in the spec
+ self.entType2ids = self.levelSpec.getEntType2ids(self.levelSpec.getAllEntIds())
for entType in self.entityCreator.getEntityTypes():
self.entType2ids.setdefault(entType, [])
- # create all the entities
- # TODO: maybe we should leave this to a subclass or the level user
- self.createAllEntities(priorityTypes=['levelMgr','zone','propSpinner'])
-
- # check on the singleton entities
- # we make our own references to them rather than expect them to
- # create the references so that the editor can create dummy
- # do-nothing entities
-
- # there should be one and only one levelMgr
- assert len(self.entType2ids['levelMgr']) == 1
- assert self.entType2ids['levelMgr'][0] == LevelConstants.LevelMgrEntId
+ self.createAllEntities(priorityTypes=['levelMgr', 'zone', 'propSpinner'])
self.levelMgrEntity = self.getEntity(LevelConstants.LevelMgrEntId)
-
- # there should be one and only one editMgr
- assert len(self.entType2ids['editMgr']) == 1
- assert self.entType2ids['editMgr'][0] == LevelConstants.EditMgrEntId
- if __debug__:
- self.editMgrEntity = self.getEntity(LevelConstants.EditMgrEntId)
-
- # there should be one and only one UberZone
- assert LevelConstants.UberZoneEntId in self.entType2ids['zone']
self.uberZoneEntity = self.getEntity(LevelConstants.UberZoneEntId)
-
self.initialized = 1
def isInitialized(self):
@@ -117,13 +44,10 @@ def destroyLevel(self):
self.destroyAllEntities()
if self.initialized:
del self.levelMgrEntity
- if __debug__:
- del self.editMgrEntity
del self.uberZoneEntity
del self.entityCreator
del self.entId2createCallbacks
del self.entranceId2entity
- self.levelSpec.destroy()
del self.levelSpec
self.initialized = 0
del self.createdEntIds
@@ -132,306 +56,190 @@ def destroyLevel(self):
if hasattr(self, 'entities'):
del self.entities
if hasattr(self, 'levelSpec'):
- self.levelSpec.destroy()
del self.levelSpec
def createEntityCreator(self):
- Level.notify.error(
- 'concrete Level class must override %s' % lineInfo()[2])
+ Level.notify.error('concrete Level class must override %s' % lineInfo()[2])
def createAllEntities(self, priorityTypes=[]):
- """creates all entities in the spec. priorityTypes is an
- optional ordered list of entity types to create first."""
- # this will be filled in as the entities are created and report in
- # this includes distributed objects on the client
self.entities = {}
-
- # get list of all entity types we need to create
entTypes = self.entityCreator.getEntityTypes()
-
self.onLevelPreCreate()
-
- # first create the types in the priority list
for type in priorityTypes:
- assert type in entTypes
self.createAllEntitiesOfType(type)
entTypes.remove(type)
- # create the other entities in any old order
for type in entTypes:
self.createAllEntitiesOfType(type)
- assert uniqueElements(self.createdEntIds)
-
self.onLevelPostCreate()
def destroyAllEntities(self):
- assert uniqueElements(self.createdEntIds)
self.nonlocalEntIds = {}
self.nothingEntIds = {}
- # destroy the entities that we created in reverse order
- if not uniqueElements(self.createdEntIds):
- Level.notify.warning('%s: self.createdEntIds is not unique: %s' %
- (getattr(self, 'doId', None), self.createdEntIds))
while len(self.createdEntIds) > 0:
entId = self.createdEntIds.pop()
entity = self.getEntity(entId)
if entity is not None:
- Level.notify.debug('destroying %s %s' % (
- self.getEntityType(entId), entId))
+ Level.notify.debug('destroying %s %s' % (self.getEntityType(entId), entId))
entity.destroy()
- assert not entId in self.entities
else:
- Level.notify.error('trying to destroy entity %s, but '
- 'it is already gone' % entId)
+ Level.notify.error('trying to destroy entity %s, but it is already gone' % entId)
- def createAllEntitiesOfType(self, entType):
- """creates all entities of a given type"""
- assert entType in self.entityCreator.getEntityTypes()
+ return
+ def createAllEntitiesOfType(self, entType):
self.onEntityTypePreCreate(entType)
-
for entId in self.entType2ids[entType]:
self.createEntity(entId)
self.onEntityTypePostCreate(entType)
def createEntity(self, entId):
- assert not entId in self.createdEntIds
spec = self.levelSpec.getEntitySpec(entId)
Level.notify.debug('creating %s %s' % (spec['type'], entId))
entity = self.entityCreator.createEntity(entId)
- # NOTE: the entity is not considered to really be created until
- # it has all of its initial spec data; see 'initializeEntity'
- # below.
- announce = False
- if entity is 'nonlocal':
+ if entity == 'nonlocal':
self.nonlocalEntIds[entId] = None
- elif entity is 'nothing':
+ elif entity == 'nothing':
self.nothingEntIds[entId] = None
- announce = True
else:
self.createdEntIds.append(entId)
- announce = True
-
- if announce:
- # call the create handler
- # we used to do this in initializeEntity, but that did not
- # allow for additional initialization to be performed in
- # derived entity __init__ funcs before their presence was announced
- # Note that now DistributedEntity's are responsible for calling
- # this for themselves
- self.onEntityCreate(entId)
-
+ self.onEntityCreate(entId)
return entity
+ return
def initializeEntity(self, entity):
- """populate an entity with its spec data. This is not done
- in createEntity in order to allow other pieces of code to create
- entities; this is called directly by Entity.
- """
entId = entity.entId
spec = self.levelSpec.getEntitySpec(entId)
- # on initialization, set items directly on entity
- for key,value in spec.items():
- if key in ('type', 'name', 'comment',):
+ for (key, value) in list(spec.items()):
+ if key in ('type', 'name', 'comment'):
continue
entity.setAttribInit(key, value)
- # entity is initialized, add it to the list of entities
- # if this assert fails, check distributed entities to make sure
- # they're calling down to Entity.destroy
- if __debug__:
- if entId in self.entities:
- self.notify.warning(
- 'entity %s already in entity table... '%(entId)+
- 'make sure distributedEntity is calling down to '
- 'Entity.destroy!')
self.entities[entId] = entity
def getEntity(self, entId):
- if hasattr(self, 'entities'):
- return self.entities.get(entId)
- else:
- return None
+ return self.entities.get(entId)
def getEntityType(self, entId):
return self.levelSpec.getEntityType(entId)
def getEntityZoneEntId(self, entId):
- """return entId of zone that contains the entity"""
return self.levelSpec.getEntityZoneEntId(entId)
def getEntityZoneId(self, entId):
- """return network zoneId of zone that contains the entity"""
- # this is called during entity creation on the AI; we have to
- # handle this carefully, since the information required to
- # produce a zoneId is not available until the level's zone
- # entities have been instantiated.
zoneEntId = self.getEntityZoneEntId(entId)
- # fundamental entities (levelMgr) are responsible for creating
- # tables like 'zoneNum2zoneId'; if those tables haven't been
- # created yet, just return None
if not hasattr(self, 'zoneNum2zoneId'):
return None
- # this might return None if all of our zone entities haven't
- # been created yet. this could be a problem if zone entities
- # are ever distributed. it also means that no distributed entities
- # should be created before the zone entities.
return self.zoneNum2zoneId.get(zoneEntId)
+ return
def getZoneId(self, zoneEntId):
- """look up network zoneId by zone entId"""
- assert zoneEntId in self.zoneNum2zoneId
return self.zoneNum2zoneId[zoneEntId]
def getZoneNumFromId(self, zoneId):
- """returns the model zoneNum that corresponds to a network zoneId"""
return self.zoneId2zoneNum[zoneId]
def getParentTokenForEntity(self, entId):
- """returns a unique parent token for this entity"""
- # default impl
- # subclasses can override to allow for multiple levels present
- # on the client simultaneously
return entId
- # these events are thrown as the level initializes itself
- # LEVEL
def getLevelPreCreateEvent(self):
- """This is the event that is thrown immediately before the level
- creates its entities."""
- return 'levelPreCreate-%s' % (self.levelId)
+ return 'levelPreCreate-%s' % self.levelId
+
def getLevelPostCreateEvent(self):
- """This is the event that is thrown immediately after the level
- creates its entities."""
- return 'levelPostCreate-%s' % (self.levelId)
- # ENTITY TYPE
+ return 'levelPostCreate-%s' % self.levelId
+
def getEntityTypePreCreateEvent(self, entType):
- """This is the event that is thrown immediately before the level
- creates the entities of the given type."""
return 'entityTypePreCreate-%s-%s' % (self.levelId, entType)
+
def getEntityTypePostCreateEvent(self, entType):
- """This is the event that is thrown immediately after the level
- creates the entities of the given type."""
return 'entityTypePostCreate-%s-%s' % (self.levelId, entType)
- # ENTITY
+
def getEntityCreateEvent(self, entId):
- """This is the event that is thrown immediately after a
- particular entity is initialized"""
return 'entityCreate-%s-%s' % (self.levelId, entId)
+
def getEntityOfTypeCreateEvent(self, entType):
- """This event is thrown immediately after each instance of the
- given entity type is created; handlers must accept an entId"""
return 'entityOfTypeCreate-%s-%s' % (self.levelId, entType)
- # these handlers are called as the level initializes itself
- # LEVEL
def onLevelPreCreate(self):
- """Level is about to create its entities"""
messenger.send(self.getLevelPreCreateEvent())
+
def onLevelPostCreate(self):
- """Level is done creating its entities"""
messenger.send(self.getLevelPostCreateEvent())
- # ENTITY TYPE
+
def onEntityTypePreCreate(self, entType):
- """Level is about to create these entities"""
messenger.send(self.getEntityTypePreCreateEvent(entType))
+
def onEntityTypePostCreate(self, entType):
- """Level has just created these entities"""
messenger.send(self.getEntityTypePostCreateEvent(entType))
- # ENTITY
+
def onEntityCreate(self, entId):
- """Level has just created this entity"""
- # send the entity-create event
messenger.send(self.getEntityCreateEvent(entId))
- # send the entity-of-type create event
- messenger.send(
- self.getEntityOfTypeCreateEvent(self.getEntityType(entId)),
- [entId])
- # call any callbacks
+ messenger.send(self.getEntityOfTypeCreateEvent(self.getEntityType(entId)), [
+ entId])
if entId in self.entId2createCallbacks:
for callback in self.entId2createCallbacks[entId]:
callback()
+
del self.entId2createCallbacks[entId]
- # Use to set a callback to be called when entity is created.
- # If entity already exists, callback will be called immediately.
def setEntityCreateCallback(self, entId, callback):
ent = self.getEntity(entId)
if ent is not None:
- # entity already exists
callNow = True
elif entId in self.nothingEntIds:
- # entity has been 'created' but will never manifest
callNow = True
else:
- # entity has not been created
callNow = False
-
if callNow:
callback()
else:
self.entId2createCallbacks.setdefault(entId, [])
self.entId2createCallbacks[entId].append(callback)
+ return
- # these are events and handlers that are invoked as entities are destroyed
def getEntityDestroyEvent(self, entId):
- """This is the event that is thrown immediately before an
- entity is destroyed"""
return 'entityDestroy-%s-%s' % (self.levelId, entId)
+
def onEntityDestroy(self, entId):
- """Level is about to destroy this entity"""
- assert entId in self.entities
- # send the entity-destroy event
messenger.send(self.getEntityDestroyEvent(entId))
-
del self.entities[entId]
- # if we created this entity, remove its entId from the
- # createdEntIds list
if entId in self.createdEntIds:
- # this should only happen if someone deleted an entity
- # with an editor
self.createdEntIds.remove(entId)
def handleVisChange(self):
- """the zone visibility lists have changed"""
pass
-
+
if __dev__:
- # the level generates these events when the spec changes
+
def getAttribChangeEventName(self):
return 'attribChange-%s' % self.levelId
+
def getInsertEntityEventName(self):
return 'insertEntity-%s' % self.levelId
+
def getRemoveEntityEventName(self):
return 'removeEntity-%s' % self.levelId
-
- # these handlers are called directly by our levelSpec
+
def handleAttribChange(self, entId, attrib, value, username=None):
entity = self.getEntity(entId)
- # the entity might be AI- or client-only
if entity is not None:
entity.handleAttribChange(attrib, value)
- messenger.send(self.getAttribChangeEventName(),
- [entId, attrib, value, username])
+ messenger.send(self.getAttribChangeEventName(), [
+ entId, attrib, value, username])
+ return
def setEntityCreatorUsername(self, entId, editUsername):
- # this is called just before an entity is inserted, with the
- # entId of the new entity and the username of the editor
- # that requested its creation.
pass
def handleEntityInsert(self, entId):
- # update our local type->entId table
self.entType2ids[self.getEntityType(entId)].append(entId)
self.createEntity(entId)
messenger.send(self.getInsertEntityEventName(), [entId])
def handleEntityRemove(self, entId):
messenger.send(self.getRemoveEntityEventName(), [entId])
- # if we didn't create it, don't destroy it (probably a distributed
- # entity on the client; wait for AI to destroy it)
if entId in self.createdEntIds:
entity = self.getEntity(entId)
entity.destroy()
@@ -439,5 +247,4 @@ def handleEntityRemove(self, entId):
del self.nothingEntIds[entId]
elif entId in self.nonlocalEntIds:
del self.nonlocalEntIds[entId]
- # update our local type->entId table
- self.entType2ids[self.getEntityType(entId)].remove(entId)
+ self.entType2ids[self.getEntityType(entId)].remove(entId)
\ No newline at end of file
diff --git a/otp/src/level/LevelConstants.py b/otp/src/level/LevelConstants.py
index b7fe44fb..9823225c 100644
--- a/otp/src/level/LevelConstants.py
+++ b/otp/src/level/LevelConstants.py
@@ -1,12 +1,5 @@
-"""LevelConstants module: contains Level-related constants"""
-
-# Zone Num from model is also the Zone Entity's entId
MinZoneNum = 0
MaxZoneNum = 999
-
-# zoneNum 0 is reserved for UberZone
UberZoneEntId = 0
-
-# system-allocated entities start at 1000
LevelMgrEntId = 1000
-EditMgrEntId = 1001
+EditMgrEntId = 1001
\ No newline at end of file
diff --git a/otp/src/level/LevelMgr.py b/otp/src/level/LevelMgr.py
index 246ee77b..7ccb742f 100644
--- a/otp/src/level/LevelMgr.py
+++ b/otp/src/level/LevelMgr.py
@@ -1,31 +1,16 @@
-"""LevelMgr module: contains the LevelMgr class"""
-
from direct.showbase.PythonUtil import Functor
-import LevelMgrBase
+from . import LevelMgrBase
class LevelMgr(LevelMgrBase.LevelMgrBase):
- """This class manages editable client-side level attributes"""
+ __module__ = __name__
def __init__(self, level, entId):
LevelMgrBase.LevelMgrBase.__init__(self, level, entId)
-
- # load the model
self.geom = loader.loadModel(self.modelFilename)
-
- if not self.geom:
- import pdb; pdb.set_trace()
-
- # this will hold the zoneNums/entIds for our own bookkeeping
self.zoneNums = []
-
- # zoneNum -> network zoneId
self.level.zoneNum2zoneId = {}
- # network zoneId -> zoneNum
self.level.zoneId2zoneNum = {}
-
- # listen for every zone creation
- self.accept(self.level.getEntityOfTypeCreateEvent('zone'),
- self.handleZoneCreated)
+ self.accept(self.level.getEntityOfTypeCreateEvent('zone'), self.handleZoneCreated)
def destroy(self):
del self.level.zoneIds
@@ -37,47 +22,23 @@ def destroy(self):
def handleZoneCreated(self, entId):
zoneEnt = self.level.getEntity(entId)
-
- # register the zone's info in the tables
-
- assert zoneEnt.entId not in self.zoneNums
self.zoneNums.append(zoneEnt.entId)
-
- # we can assume that we have a complete list of network zoneIds in
- # self.level.zoneIds. As each zone entity is created, set up
- # as if we have all of the zone entities. This allows dynamic
- # zone entity creation and deletion during editing.
- # TODO: we should delay this until all zone entities have been
- # created on level init
self.privAssignZoneIds()
-
- # listen for the zone's destruction
- self.accept(self.level.getEntityDestroyEvent(entId),
- Functor(self.handleZoneDestroy, entId))
+ self.accept(self.level.getEntityDestroyEvent(entId), Functor(self.handleZoneDestroy, entId))
def handleZoneDestroy(self, entId):
zoneEnt = self.level.getEntity(entId)
- # unregister the zone from the maps
- del self.level.zoneId2zoneNum[
- self.level.zoneNum2zoneId[zoneEnt.entId]]
+ del self.level.zoneId2zoneNum[self.level.zoneNum2zoneId[zoneEnt.entId]]
del self.level.zoneNum2zoneId[zoneEnt.entId]
self.zoneNums.remove(zoneEnt.entId)
- # reassign the zoneIds (we may not need to do this, if all of the
- # other entities already have their correct zoneId...?)
self.privAssignZoneIds()
def privAssignZoneIds(self):
- """assign network zoneIds from self.level.zoneIds, according to
- the zones that are registered so far"""
- # sort the zoneNums
self.zoneNums.sort()
-
- # dole out the zoneIds, in increasing order of zoneNum
for i in range(len(self.zoneNums)):
zoneNum = self.zoneNums[i]
zoneEnt = self.level.getEntity(zoneNum)
zoneId = self.level.zoneIds[i]
zoneEnt.setZoneId(zoneId)
- # the zoneIds have shifted. update the tables
self.level.zoneNum2zoneId[zoneNum] = zoneId
- self.level.zoneId2zoneNum[zoneId] = zoneNum
+ self.level.zoneId2zoneNum[zoneId] = zoneNum
\ No newline at end of file
diff --git a/otp/src/level/LevelMgrAI.py b/otp/src/level/LevelMgrAI.py
index 751bddac..34775602 100644
--- a/otp/src/level/LevelMgrAI.py
+++ b/otp/src/level/LevelMgrAI.py
@@ -1,7 +1,7 @@
"""LevelMgrAI module: contains the LevelMgrAI class"""
from direct.showbase.PythonUtil import Functor
-import LevelMgrBase
+from . import LevelMgrBase
class LevelMgrAI(LevelMgrBase.LevelMgrBase):
"""This class manages editable AI level attributes"""
@@ -45,7 +45,7 @@ def handleZoneDestroy(self, entId):
def privCreateSortedZoneIdList(self):
# sort the zoneNums
- zoneNums = self.level.zoneNum2zoneId.keys()
+ zoneNums = list(self.level.zoneNum2zoneId.keys())
zoneNums.sort()
# create a list of network zoneIds, ordered by their corresponding
diff --git a/otp/src/level/LevelMgrBase.py b/otp/src/level/LevelMgrBase.py
index c810479b..dc390894 100644
--- a/otp/src/level/LevelMgrBase.py
+++ b/otp/src/level/LevelMgrBase.py
@@ -1,12 +1,11 @@
-"""LevelMgrBase module: contains the LevelMgrBase class"""
-
-import Entity
+from . import Entity
class LevelMgrBase(Entity.Entity):
- """This class contains LevelMgr code shared by the AI and client"""
+ __module__ = __name__
+
def __init__(self, level, entId):
Entity.Entity.__init__(self, level, entId)
def destroy(self):
Entity.Entity.destroy(self)
- self.ignoreAll()
+ self.ignoreAll()
\ No newline at end of file
diff --git a/otp/src/level/LevelSpec.py b/otp/src/level/LevelSpec.py
index 3539ab05..890be652 100644
--- a/otp/src/level/LevelSpec.py
+++ b/otp/src/level/LevelSpec.py
@@ -1,138 +1,93 @@
-"""LevelSpec module: contains the LevelSpec class"""
-
from direct.directnotify import DirectNotifyGlobal
from direct.showbase.PythonUtil import list2dict, uniqueElements
-import string
-import LevelConstants
-import types
+import string, types
+from . import LevelConstants
+import importlib
if __dev__:
import os
class LevelSpec:
- """contains spec data for a level, is responsible for handing the data
- out upon request, as well as recording changes made during editing, and
- saving out modified spec data"""
- notify = DirectNotifyGlobal.directNotify.newCategory("LevelSpec")
-
- SystemEntIds = (LevelConstants.UberZoneEntId,
- LevelConstants.LevelMgrEntId,
- LevelConstants.EditMgrEntId)
-
+ notify = DirectNotifyGlobal.directNotify.newCategory('LevelSpec')
+ SystemEntIds = (
+ LevelConstants.UberZoneEntId, LevelConstants.LevelMgrEntId, LevelConstants.EditMgrEntId)
+
def __init__(self, spec=None, scenario=0):
- """spec must be passed in as a python module or a dictionary.
- If not passed in, will create a new spec."""
newSpec = 0
if type(spec) is types.ModuleType:
if __dev__:
- # reload the spec module to pick up changes
- reload(spec)
+ importlib.reload(spec)
self.specDict = spec.levelSpec
if __dev__:
self.setFilename(spec.__file__)
- elif type(spec) is types.DictType:
- # we need this for repr/eval-ing LevelSpecs
+ elif type(spec) is dict:
self.specDict = spec
elif spec is None:
if __dev__:
newSpec = 1
- self.specDict = {
- 'globalEntities': {},
- 'scenarios': [{}],
- }
-
- assert hasattr(self, 'specDict')
-
- # this maps an entId to the dict that holds its spec;
- # entities are either in the global dict or a scenario dict
- # update the map of entId to spec dict
+ self.specDict = {'globalEntities': {}, 'scenarios': [{}]}
self.entId2specDict = {}
- self.entId2specDict.update(
- list2dict(self.getGlobalEntIds(),
- value=self.privGetGlobalEntityDict()))
+ self.entId2specDict.update(list2dict(self.getGlobalEntIds(), value=self.privGetGlobalEntityDict()))
for i in range(self.getNumScenarios()):
- self.entId2specDict.update(
- list2dict(self.getScenarioEntIds(i),
- value=self.privGetScenarioEntityDict(i)))
+ self.entId2specDict.update(list2dict(self.getScenarioEntIds(i), value=self.privGetScenarioEntityDict(i)))
self.setScenario(scenario)
-
if __dev__:
if newSpec:
- # add basic required entities
- import EntityTypes
- import EntityTypeRegistry
+ from . import EntityTypes, EntityTypeRegistry
etr = EntityTypeRegistry.EntityTypeRegistry(EntityTypes)
self.setEntityTypeReg(etr)
-
- # UberZone
entId = LevelConstants.UberZoneEntId
self.insertEntity(entId, 'zone')
self.doSetAttrib(entId, 'name', 'UberZone')
- # LevelMgr
entId = LevelConstants.LevelMgrEntId
self.insertEntity(entId, 'levelMgr')
self.doSetAttrib(entId, 'name', 'LevelMgr')
- # EditMgr
entId = LevelConstants.EditMgrEntId
self.insertEntity(entId, 'editMgr')
self.doSetAttrib(entId, 'name', 'EditMgr')
-
- def destroy(self):
- del self.specDict
- del self.entId2specDict
- del self.scenario
- if hasattr(self, 'level'):
- del self.level
- if hasattr(self, 'entTypeReg'):
- del self.entTypeReg
+ return
def getNumScenarios(self):
return len(self.specDict['scenarios'])
def setScenario(self, scenario):
- assert scenario in range(0, self.getNumScenarios())
self.scenario = scenario
def getScenario(self):
return self.scenario
def getGlobalEntIds(self):
- return self.privGetGlobalEntityDict().keys()
+ return list(self.privGetGlobalEntityDict().keys())
def getScenarioEntIds(self, scenario=None):
if scenario is None:
scenario = self.scenario
- return self.privGetScenarioEntityDict(scenario).keys()
+ return list(self.privGetScenarioEntityDict(scenario).keys())
+ return
def getAllEntIds(self):
- """this returns all of the entIds involved in the current scenario"""
return self.getGlobalEntIds() + self.getScenarioEntIds()
def getAllEntIdsFromAllScenarios(self):
- """this returns all of the entIds involved in all scenarios"""
entIds = self.getGlobalEntIds()
- for scenario in xrange(self.getNumScenarios()):
+ for scenario in range(self.getNumScenarios()):
entIds.extend(self.getScenarioEntIds(scenario))
+
return entIds
def getEntitySpec(self, entId):
- assert entId in self.entId2specDict
specDict = self.entId2specDict[entId]
return specDict[entId]
def getCopyOfSpec(self, spec):
- # return a copy of the spec, making sure that none of the attributes
- # are shared between the original and the copy (i.e. Point3's)
specCopy = {}
- exec 'from %s import *' % self.getSpecImportsModuleName()
- for key in spec.keys():
+ exec('from %s import *' % self.getSpecImportsModuleName())
+ for key in list(spec.keys()):
specCopy[key] = eval(repr(spec[key]))
+
return specCopy
def getEntitySpecCopy(self, entId):
- # return a copy of the spec, making sure that none of the attributes
- # are shared between the original and the copy (i.e. Point3's)
- assert entId in self.entId2specDict
specDict = self.entId2specDict[entId]
return self.getCopyOfSpec(specDict[entId])
@@ -140,27 +95,21 @@ def getEntityType(self, entId):
return self.getEntitySpec(entId)['type']
def getEntityZoneEntId(self, entId):
- """ return the entId of the zone that entity is in; if entity
- is a zone, returns its entId """
spec = self.getEntitySpec(entId)
type = spec['type']
- # if it's a zone, this is our entity
if type == 'zone':
return entId
- assert spec['parentEntId'] != entId
- # keep looking up the heirarchy for a zone entity
return self.getEntityZoneEntId(spec['parentEntId'])
def getEntType2ids(self, entIds):
- """given list of entIds, return dict of entType->entIds"""
entType2ids = {}
for entId in entIds:
type = self.getEntityType(entId)
entType2ids.setdefault(type, [])
entType2ids[type].append(entId)
+
return entType2ids
- # private support functions to abstract dict structure
def privGetGlobalEntityDict(self):
return self.specDict['globalEntities']
@@ -168,20 +117,18 @@ def privGetScenarioEntityDict(self, scenario):
return self.specDict['scenarios'][scenario]
def printZones(self):
- """currently prints list of zoneNum->zone name"""
- # this could be more efficient
allIds = self.getAllEntIds()
type2id = self.getEntType2ids(allIds)
zoneIds = type2id['zone']
- # omit the UberZone
if 0 in zoneIds:
zoneIds.remove(0)
zoneIds.sort()
for zoneNum in zoneIds:
spec = self.getEntitySpec(zoneNum)
- print 'zone %s: %s' % (zoneNum, spec['name'])
+ print('zone %s : %s' % (zoneNum, spec['name']))
if __dev__:
+
def setLevel(self, level):
self.level = level
@@ -199,102 +146,57 @@ def setFilename(self, filename):
self.filename = filename
def doSetAttrib(self, entId, attrib, value):
- """ do the dirty work of changing an attrib value """
- assert entId in self.entId2specDict
specDict = self.entId2specDict[entId]
- assert specDict[entId].has_key(attrib)
specDict[entId][attrib] = value
def setAttribChange(self, entId, attrib, value, username):
- """ we're being asked to change an attribute """
- LevelSpec.notify.info("setAttribChange(%s): %s, %s = %s" %
- (username, entId, attrib, repr(value)))
+ LevelSpec.notify.info('setAttribChange(%s): %s, %s = %s' % (username, entId, attrib, repr(value)))
self.doSetAttrib(entId, attrib, value)
if self.hasLevel():
- # let the level know that this attribute value has
- # officially changed
self.level.handleAttribChange(entId, attrib, value, username)
def insertEntity(self, entId, entType, parentEntId='unspecified'):
LevelSpec.notify.info('inserting entity %s (%s)' % (entId, entType))
- assert entId not in self.entId2specDict
- assert self.entTypeReg is not None
globalEnts = self.privGetGlobalEntityDict()
self.entId2specDict[entId] = globalEnts
-
- # create a new entity spec entry w/ default values
globalEnts[entId] = {}
spec = globalEnts[entId]
- attribDescs = self.entTypeReg.getTypeDesc(entType
- ).getAttribDescDict()
- for name, desc in attribDescs.items():
+ attribDescs = self.entTypeReg.getTypeDesc(entType).getAttribDescDict()
+ for (name, desc) in list(attribDescs.items()):
spec[name] = desc.getDefaultValue()
+
spec['type'] = entType
if parentEntId != 'unspecified':
spec['parentEntId'] = parentEntId
-
if self.hasLevel():
- # notify the level
self.level.handleEntityInsert(entId)
else:
LevelSpec.notify.warning('no level to be notified of insertion')
- """ this was never used/tested but may come in handy
- def insertEntityWithSpec(self, entId, spec):
- # use this to add an entity with an existing spec
- # NOTE: DO NOT use this to add an entity with an editor; this
- # will not propogate the spec to the level. For now, editors
- # should manually insert the item and set each attribute
- # individually.
- self.insertEntity(entId, spec['type'])
- specCopy = self.getCopyOfSpec(spec)
- del specCopy['type']
- for attribName, value in specCopy.items():
- self.doSetAttrib(entId, attribName, value)
- """
-
def removeEntity(self, entId):
LevelSpec.notify.info('removing entity %s' % entId)
- assert entId in self.entId2specDict
-
if self.hasLevel():
- # notify the level
self.level.handleEntityRemove(entId)
else:
LevelSpec.notify.warning('no level to be notified of removal')
-
- # remove the entity's spec
dict = self.entId2specDict[entId]
del dict[entId]
del self.entId2specDict[entId]
def removeZoneReferences(self, removedZoneNums):
- """call with a list of zoneNums of zone entities that have just
- been removed; will clean up references to those zones"""
- assert self.hasEntityTypeReg()
- # get dict of entType->entIds, for ALL scenarios
type2ids = self.getEntType2ids(self.getAllEntIdsFromAllScenarios())
- # figure out which entity types have attributes that need to be
- # updated
for type in type2ids:
typeDesc = self.entTypeReg.getTypeDesc(type)
visZoneListAttribs = typeDesc.getAttribsOfType('visZoneList')
if len(visZoneListAttribs) > 0:
- # this entity type has at least one attrib of type
- # 'visZoneList'.
- # run through all of the existing entities of this type
for entId in type2ids[type]:
spec = self.getEntitySpec(entId)
- # for each attrib of type 'visZoneList'...
for attribName in visZoneListAttribs:
- # remove each of the removed zoneNums
for zoneNum in removedZoneNums:
while zoneNum in spec[attribName]:
spec[attribName].remove(zoneNum)
def getSpecImportsModuleName(self):
- # name of module that should be imported by spec py file
- # TODO: make this generic
return 'toontown.coghq.SpecImports'
def getFilename(self):
@@ -304,35 +206,29 @@ def privGetBackupFilename(self, filename):
return '%s.bak' % filename
def saveToDisk(self, filename=None, makeBackup=1):
- """returns zero on failure"""
if filename is None:
filename = self.filename
- if filename.endswith('.pyc'):
- filename = filename.replace('.pyc','.py')
-
if makeBackup and self.privFileExists(filename):
- # create a backup
try:
backupFilename = self.privGetBackupFilename(filename)
self.privRemoveFile(backupFilename)
os.rename(filename, backupFilename)
- except OSError, e:
- LevelSpec.notify.warning(
- 'error during backup: %s' % str(e))
+ except OSError as e:
+ LevelSpec.notify.warning('error during backup: %s' % str(e))
LevelSpec.notify.info("writing to '%s'" % filename)
self.privRemoveFile(filename)
self.privSaveToDisk(filename)
+ return
def privSaveToDisk(self, filename):
- """internal. saves spec to file. returns zero on failure"""
retval = 1
- # wb to create a UNIX-format file
f = file(filename, 'wb')
try:
f.write(self.getPrettyString())
except IOError:
retval = 0
+
f.close()
return retval
@@ -351,178 +247,114 @@ def privRemoveFile(self, filename):
return 0
def getPrettyString(self):
- """Returns a string that contains the spec data, nicely formatted.
- This should be used when writing the spec out to file."""
import pprint
-
tabWidth = 4
tab = ' ' * tabWidth
- # structure names
globalEntitiesName = 'GlobalEntities'
scenarioEntitiesName = 'Scenario%s'
topLevelName = 'levelSpec'
+
def getPrettyEntityDictStr(name, dict, tabs=0):
+
def t(n):
- return (tabs+n)*tab
+ return (tabs + n) * tab
+
def sortList(lst, firstElements=[]):
- """sort list; elements in firstElements will be put
- first, in the order that they appear in firstElements;
- rest of elements will follow, sorted"""
elements = list(lst)
- # put elements in order
result = []
for el in firstElements:
if el in elements:
result.append(el)
elements.remove(el)
+
elements.sort()
result.extend(elements)
return result
-
- firstTypes = ('levelMgr', 'editMgr', 'zone',)
- firstAttribs = ('type', 'name', 'comment', 'parentEntId',
- 'pos', 'x', 'y', 'z',
- 'hpr', 'h', 'p', 'r',
- 'scale', 'sx', 'sy', 'sz',
- 'color',
- 'model',
- )
- str = t(0)+'%s = {\n' % name
- # get list of types
- entIds = dict.keys()
+
+ firstTypes = (
+ 'levelMgr', 'editMgr', 'zone')
+ firstAttribs = ('type', 'name', 'comment', 'parentEntId', 'pos', 'x', 'y', 'z', 'hpr', 'h', 'p', 'r', 'scale', 'sx', 'sy', 'sz', 'color', 'model')
+ str = t(0) + '%s = {\n' % name
+ entIds = list(dict.keys())
entType2ids = self.getEntType2ids(entIds)
- # put types in order
- types = sortList(entType2ids.keys(), firstTypes)
+ types = sortList(list(entType2ids.keys()), firstTypes)
for type in types:
- str += t(1)+'# %s\n' % string.upper(type)
+ str += t(1) + '# %s\n' % string.upper(type)
entIds = entType2ids[type]
entIds.sort()
for entId in entIds:
- str += t(1)+'%s: {\n' % entId
+ str += t(1) + '%s: {\n' % entId
spec = dict[entId]
- attribs = sortList(spec.keys(), firstAttribs)
+ attribs = sortList(list(spec.keys()), firstAttribs)
for attrib in attribs:
- str += t(2)+"'%s': %s,\n" % (attrib,
- repr(spec[attrib]))
- # maybe this will help with CVS merges?
- str += t(2)+'}, # end entity %s\n' % entId
-
- str += t(1)+'}\n'
+ str += t(2) + "'%s': %s,\n" % (attrib, repr(spec[attrib]))
+
+ str += t(2) + '}, # end entity %s\n' % entId
+
+ str += t(1) + '}\n'
return str
+
def getPrettyTopLevelDictStr(tabs=0):
+
def t(n):
- return (tabs+n)*tab
- str = t(0)+'%s = {\n' % topLevelName
- str += t(1)+"'globalEntities': %s,\n" % globalEntitiesName
- str += t(1)+"'scenarios': [\n"
+ return (tabs + n) * tab
+
+ str = t(0) + '%s = {\n' % topLevelName
+ str += t(1) + "'globalEntities': %s,\n" % globalEntitiesName
+ str += t(1) + "'scenarios': [\n"
for i in range(self.getNumScenarios()):
- str += t(2)+'%s,\n' % (scenarioEntitiesName % i)
- str += t(2)+'],\n'
- str += t(1)+'}\n'
+ str += t(2) + '%s,\n' % (scenarioEntitiesName % i)
+
+ str += t(2) + '],\n'
+ str += t(1) + '}\n'
return str
-
- str = 'from %s import *\n' % self.getSpecImportsModuleName()
- str += '\n'
- # add the global entities
- str += getPrettyEntityDictStr('GlobalEntities',
- self.privGetGlobalEntityDict())
+ str = 'from %s import *\n' % self.getSpecImportsModuleName()
+ str += '\n'
+ str += getPrettyEntityDictStr('GlobalEntities', self.privGetGlobalEntityDict())
str += '\n'
-
- # add the scenario entities
numScenarios = self.getNumScenarios()
for i in range(numScenarios):
- str += getPrettyEntityDictStr('Scenario%s' % i,
- self.privGetScenarioEntityDict(i))
+ str += getPrettyEntityDictStr('Scenario%s' % i, self.privGetScenarioEntityDict(i))
str += '\n'
- # add the top-level table
str += getPrettyTopLevelDictStr()
-
self.testPrettyString(prettyString=str)
-
return str
-
- def _recurKeyTest(self, dict1, dict2):
- # recursive key test for testPrettyString
- # cannot be sub function due to exec call in testPrettyString
- s = '' # error out string
- errorCount = 0 # number of non-matching keys; more or less
-
- #if set of keys don't match than they are not the same
- if set(dict1.keys()) != set(dict2.keys()):
- return 0
- for key in dict1:
- #if they are both dicitonaries we must test the subkeys
- #this is because dicts are unordered and we are using repr to dump the
- #values into strings for comparision
- if type(dict1[key]) == type({}) and type(dict2[key]) == type({}):
- if not self._recurKeyTest(dict1[key], dict2[key]):
- return 0
- #if they are not dicts turn the values into strings and compare the strings
- else:
- strd1 = repr(dict1[key])
- strd2 = repr(dict2[key])
- if strd1 != strd2:
- #if the strings don't match print an error
- s += '\nBAD VALUE(%s): %s != %s\n' % (key, strd1, strd2)
- errorCount += 1 #we could just bail here but instead we accumulate the errors
- print s
- #import pdb;pdb.set_trace
- if errorCount == 0:
- return 1
- else:
- return 0
def testPrettyString(self, prettyString=None):
- # execute the pretty output in our local scope
if prettyString is None:
- prettyString=self.getPrettyString()
+ prettyString = self.getPrettyString()
exec(prettyString)
- if self._recurKeyTest(levelSpec, self.specDict):
- return 1
- else:
- #import pdb;pdb.set_trace()
- assert 0, (
- 'LevelSpec pretty string does not match spec data.\n'
- )
+ return
def checkSpecIntegrity(self):
- # make sure there are no duplicate entIds
entIds = self.getGlobalEntIds()
- assert uniqueElements(entIds)
entIds = list2dict(entIds)
for i in range(self.getNumScenarios()):
for id in self.getScenarioEntIds(i):
- assert not entIds.has_key(id)
entIds[id] = None
if self.entTypeReg is not None:
- # check each spec
allEntIds = entIds
for entId in allEntIds:
spec = self.getEntitySpec(entId)
-
- assert spec.has_key('type')
entType = spec['type']
typeDesc = self.entTypeReg.getTypeDesc(entType)
attribNames = typeDesc.getAttribNames()
attribDescs = typeDesc.getAttribDescDict()
-
- # are there any unknown attribs in the spec?
- for attrib in spec.keys():
+ for attrib in list(spec.keys()):
if attrib not in attribNames:
- LevelSpec.notify.warning(
- "entId %s (%s): unknown attrib '%s', omitting"
- % (entId, spec['type'], attrib))
+ LevelSpec.notify.warning("entId %s (%s): unknown attrib '%s', omitting" % (entId, spec['type'], attrib))
del spec[attrib]
- # does the spec have all of its attributes?
for attribName in attribNames:
- if not spec.has_key(attribName):
- LevelSpec.notify.warning(
- "entId %s (%s): missing attrib '%s'" % (
- entId, spec['type'], attribName))
+ if attribName not in spec:
+ default = attribDescs[attribName].getDefaultValue()
+ LevelSpec.notify.warning("entId %s (%s): missing attrib '%s', setting to default (%s)" % (entId, spec['type'], attribName, repr(default)))
+ spec[attribName] = default
+
+ return
def __hash__(self):
return hash(repr(self))
@@ -531,5 +363,4 @@ def __str__(self):
return 'LevelSpec'
def __repr__(self):
- return 'LevelSpec(%s, scenario=%s)' % (repr(self.specDict),
- self.scenario)
+ return 'LevelSpec(%s, scenario=%s)' % (repr(self.specDict), self.scenario)
\ No newline at end of file
diff --git a/otp/src/level/LevelUtil.py b/otp/src/level/LevelUtil.py
index 68d845e0..d80f09e9 100644
--- a/otp/src/level/LevelUtil.py
+++ b/otp/src/level/LevelUtil.py
@@ -1,17 +1,12 @@
-"""LevelUtil module: contains Level utility funcs"""
+import string, LevelConstants
-import string
-import LevelConstants
+def getZoneNum2Node(levelModel, logFunc=lambda str: str):
-def getZoneNum2Node(levelModel, logFunc=lambda str:str):
- """ given model, returns dict of ZoneNumber -> ZoneNode """
def findNumberedNodes(baseString, model, caseInsens=1):
- # finds nodes whose name follows the pattern 'baseString#blah'
- # returns dictionary that maps # to node
srch = '**/%s*' % baseString
if caseInsens:
srch += ';+i'
- potentialNodes = model.findAllMatches(srch)
+ potentialNodes = model.findAllMatches(srch).asList()
num2node = {}
for potentialNode in potentialNodes:
name = potentialNode.getName()
@@ -22,30 +17,23 @@ def findNumberedNodes(baseString, model, caseInsens=1):
if name[numDigits] not in string.digits:
break
numDigits += 1
+
if numDigits == 0:
continue
num = int(name[:numDigits])
- # is this a valid zoneNum?
if num == LevelConstants.UberZoneEntId:
- logFunc('warning: cannot use UberZone zoneNum (%s). '
- 'ignoring %s' % (LevelConstants.UberZoneEntId,
- potentialNode))
+ logFunc('warning: cannot use UberZone zoneNum (%s). ignoring %s' % (LevelConstants.UberZoneEntId, potentialNode))
continue
- if (num < LevelConstants.MinZoneNum) or (
- num > LevelConstants.MaxZoneNum):
- logFunc('warning: zone %s is out of range. ignoring %s' %
- (num, potentialNode))
+ if num < LevelConstants.MinZoneNum or num > LevelConstants.MaxZoneNum:
+ logFunc('warning: zone %s is out of range. ignoring %s' % (num, potentialNode))
continue
- # do we already have a ZoneNode for this zone num?
if num in num2node:
- logFunc('warning: zone %s already assigned to %s. ignoring %s' %
- (num, num2node[num], potentialNode))
+ logFunc('warning: zone %s already assigned to %s. ignoring %s' % (num, num2node[num], potentialNode))
continue
num2node[num] = potentialNode
return num2node
zoneNum2node = findNumberedNodes('zone', levelModel)
- # add the UberZone to the table
zoneNum2node[LevelConstants.UberZoneEntId] = levelModel
- return zoneNum2node
+ return zoneNum2node
\ No newline at end of file
diff --git a/otp/src/level/LocatorEntity.py b/otp/src/level/LocatorEntity.py
index e9a6d6ed..71c8329a 100644
--- a/otp/src/level/LocatorEntity.py
+++ b/otp/src/level/LocatorEntity.py
@@ -1,12 +1,14 @@
-import Entity, BasicEntities
-from pandac.PandaModules import NodePath
+from . import Entity, BasicEntities
+from pandac import NodePath
from direct.directnotify import DirectNotifyGlobal
-class LocatorEntity(Entity.Entity, NodePath):
+class LocatorEntity(Entity.Entity, NodePath.NodePath):
+ __module__ = __name__
notify = DirectNotifyGlobal.directNotify.newCategory('LocatorEntity')
+
def __init__(self, level, entId):
node = hidden.attachNewNode('LocatorEntity-%s' % entId)
- NodePath.__init__(self, node)
+ NodePath.NodePath.__init__(self, node)
Entity.Entity.__init__(self, level, entId)
self.doReparent()
@@ -15,19 +17,18 @@ def destroy(self):
self.removeNode()
def getNodePath(self):
- # this allows other entities to be parented to us
return self
def doReparent(self):
if self.searchPath != '':
parent = self.level.geom.find(self.searchPath)
if parent.isEmpty():
- LocatorEntity.notify.warning(
- "could not find '%s'" % self.searchPath)
+ LocatorEntity.notify.warning("could not find '%s'" % self.searchPath)
self.reparentTo(hidden)
else:
self.reparentTo(parent)
if __dev__:
+
def attribChanged(self, attrib, value):
- self.doReparent()
+ self.doReparent()
\ No newline at end of file
diff --git a/otp/src/level/LogicGate.py b/otp/src/level/LogicGate.py
index dd7b238d..845406ac 100644
--- a/otp/src/level/LogicGate.py
+++ b/otp/src/level/LogicGate.py
@@ -1,86 +1,39 @@
-"""
-LogicGate.py
-
- Logic Gates:
-
- and: 0 0 = 0 or: 0 0 = 0 xor: 0 0 = 0
- 0 1 = 0 0 1 = 1 0 1 = 1
- 1 0 = 0 1 0 = 1 1 0 = 1
- 1 1 = 1 1 1 = 1 1 1 = 0
-
- nand: 0 0 = 1 nor: 0 0 = 1 xnor: 0 0 = 1
- 0 1 = 1 0 1 = 0 0 1 = 0
- 1 0 = 1 1 0 = 0 1 0 = 0
- 1 1 = 0 1 1 = 0 1 1 = 1
-
- In the following:
- 1: send a true message
- 0: send a false message
- -: don't send a message
-
- a b and or xor nand nor xnor
- (0 0) (0) (0) (0) (1) (1) (1) <--- initial state
- 1 0 - 1 1 - 0 0
- 0 0 - 0 0 - 1 1
- 1 0 - 1 1 - 0 0
- 1 1 1 - 0 0 - 1
- 0 1 0 - 1 1 - 0
- 1 1 1 - 0 0 - 1
- 0 1 0 - 1 1 - 0
- 0 0 - 0 0 - 1 1
-"""
-
from direct.showbase import DirectObject
from direct.directnotify import DirectNotifyGlobal
-import Entity
-
+from . import Entity
def andTest(self, a, b):
- assert self.debugPrint("andTest(a=%s, b=%s)"%(a, b))
if b:
messenger.send(self.getOutputEventName(), [a])
+
def orTest(self, a, b):
- assert self.debugPrint("orTest(a=%s, b=%s)"%(a, b))
if not b:
messenger.send(self.getOutputEventName(), [a])
- # else: ...we already sent the messege when b was set.
+
def xorTest(self, a, b):
- assert self.debugPrint("xorTest(a=%s, b=%s)"%(a, b))
- messenger.send(self.getOutputEventName(), [(not (a and b)) and (a or b)])
+ messenger.send(self.getOutputEventName(), [not (a and b) and (a or b)])
+
def nandTest(self, a, b):
- assert self.debugPrint("nandTest(a=%s, b=%s)"%(a, b))
if b:
messenger.send(self.getOutputEventName(), [not (a and b)])
+
def norTest(self, a, b):
- assert self.debugPrint("norTest(a=%s, b=%s)"%(a, b))
if not b:
messenger.send(self.getOutputEventName(), [not (a or b)])
- # else: ...we already sent the messege when b was set.
+
def xnorTest(self, a, b):
- assert self.debugPrint("xnorTest(a=%s, b=%s)"%(a, b))
- messenger.send(self.getOutputEventName(), [(a and b) or (not (a or b))])
+ messenger.send(self.getOutputEventName(), [a and b or not (a or b)])
class LogicGate(Entity.Entity, DirectObject.DirectObject):
- notify = DirectNotifyGlobal.directNotify.newCategory('LogicGate')
-
- logicTests={
- "and": andTest,
- "or": orTest,
- "xor": xorTest,
- "nand": nandTest,
- "nor": norTest,
- "xnor": xnorTest,
- }
+ logicTests = {'and': andTest, 'or': orTest, 'xor': xorTest, 'nand': nandTest, 'nor': norTest, 'xnor': xnorTest}
def __init__(self, level, entId):
- """entId: """
- assert self.debugPrint("LogicGate(entId=%s)"%(entId))
self.input1Event = None
self.input2Event = None
DirectObject.DirectObject.__init__(self)
@@ -90,51 +43,43 @@ def __init__(self, level, entId):
self.setIsInput2(self.isInput2)
self.setInput1Event(self.input1Event)
self.setInput2Event(self.input2Event)
+ return
def destroy(self):
- assert self.debugPrint("destroy()")
self.ignore(self.input1Event)
self.input1Event = None
self.ignore(self.input2Event)
self.input2Event = None
Entity.Entity.destroy(self)
-
+ return
+
def setLogicType(self, logicType):
- assert self.debugPrint("setLogicType(logicType=%s)"%(logicType,))
- self.logicType=logicType
- assert self.logicTests[logicType]
- self.logicTest=self.logicTests[logicType]
-
+ self.logicType = logicType
+ self.logicTest = self.logicTests[logicType]
+
def setIsInput1(self, isTrue):
- assert self.debugPrint("setIsInput1(isTrue=%s)"%(isTrue,))
if 1 or (not isTrue) != (not self.input1Event):
- # ...the logical state of self.input1Event has changed.
- self.isInput1=isTrue
+ self.isInput1 = isTrue
self.logicTest(self, isTrue, self.isInput2)
-
+
def setIsInput2(self, isTrue):
- assert self.debugPrint("setIsInput2(isTrue=%s)"%(isTrue,))
if 1 or (not isTrue) != (not self.input2Event):
- # ...the logical state of self.input2Event has changed.
- self.isInput2=isTrue
+ self.isInput2 = isTrue
self.logicTest(self, isTrue, self.isInput1)
-
+
def setInput1Event(self, event):
- assert self.debugPrint("setInput1Event(event=%s)"%(event,))
if self.input1Event:
self.ignore(self.input1Event)
self.input1Event = self.getOutputEventName(event)
if self.input1Event:
self.accept(self.input1Event, self.setIsInput1)
-
+
def setInput2Event(self, event):
- assert self.debugPrint("setInput2Event(event=%s)"%(event,))
if self.input2Event:
self.ignore(self.input2Event)
self.input2Event = self.getOutputEventName(event)
if self.input2Event:
self.accept(self.input2Event, self.setIsInput2)
-
+
def getName(self):
- #return "logicGate-%s"%(self.entId,)
- return "switch-%s"%(self.entId,)
+ return 'switch-%s' % (self.entId,)
\ No newline at end of file
diff --git a/otp/src/level/ModelEntity.py b/otp/src/level/ModelEntity.py
index 5850215d..64111444 100644
--- a/otp/src/level/ModelEntity.py
+++ b/otp/src/level/ModelEntity.py
@@ -1,25 +1,22 @@
from toontown.toonbase.ToontownGlobals import *
from direct.directnotify import DirectNotifyGlobal
-import BasicEntities
+from . import BasicEntities
class ModelEntity(BasicEntities.NodePathEntity):
- LoadFuncs = {
- 'loadModelCopy': loader.loadModelCopy,
- 'loadModel': loader.loadModel,
- 'loadModelOnce': loader.loadModelOnce,
- }
+ __module__ = __name__
+ LoadFuncs = {'loadModelCopy': loader.loadModelCopy, 'loadModel': loader.loadModel, 'loadModelOnce': loader.loadModelOnce}
+
def __init__(self, level, entId):
- # TODO: fill in default values automatically for missing attribs
self.collisionsOnly = False
self.loadType = 'loadModelCopy'
self.flattenType = 'light'
- self.goonHatType = 'none'
self.entInitialized = False
BasicEntities.NodePathEntity.__init__(self, level, entId)
self.entInitialized = True
self.model = None
self.loadModel()
-
+ return
+
def destroy(self):
if self.model:
self.model.removeNode()
@@ -32,76 +29,36 @@ def loadModel(self):
self.model = None
if self.modelPath is None:
return
-
self.model = ModelEntity.LoadFuncs[self.loadType](self.modelPath)
if self.model:
self.model.reparentTo(self)
-
- # hide/show as appropriate
if self.collisionsOnly:
if __dev__:
self.model.setTransparency(1)
- self.model.setColorScale(1,1,1,.1)
+ self.model.setColorScale(1, 1, 1, 0.1)
else:
self.model.hide()
else:
self.model.show()
-
- # HACK SDN: special code for moving crate wall collisions down
- if self.modelPath in ("phase_9/models/cogHQ/woodCrateB.bam",
- "phase_9/models/cogHQ/metal_crateB.bam",
- "phase_10/models/cashbotHQ/CBMetalCrate.bam",
- "phase_10/models/cogHQ/CBMetalCrate2.bam",
- "phase_10/models/cashbotHQ/CBWoodCrate.bam",
- "phase_11/models/lawbotHQ/LB_metal_crate.bam",
- "phase_11/models/lawbotHQ/LB_metal_crate2.bam",
- ):
- # get rid of any scales
- #self.model.flattenLight()
- # move walls down
- cNode = self.find("**/wall")
- cNode.setZ(cNode, -.75)
- # duplicate the floor and move it down to crate a
- # catch effect for low-hopped toons
- colNode = self.find("**/collision")
- floor = colNode.find("**/floor")
+ if self.modelPath in ('phase_9/models/cogHQ/woodCrateB.bam', 'phase_9/models/cogHQ/metal_crateB.bam', 'phase_10/models/cashbotHQ/CBMetalCrate.bam', 'phase_10/models/cogHQ/CBMetalCrate2.bam', 'phase_10/models/cashbotHQ/CBWoodCrate.bam'):
+ cNode = self.find('**/wall')
+ cNode.setZ(cNode, -0.75)
+ colNode = self.find('**/collision')
+ floor = colNode.find('**/floor')
floor2 = floor.copyTo(colNode)
- floor2.setZ(floor2, -.75)
-
- """
- # incorporate the entity's overall scale
- self.model.setScale(self.getScale())
- self.setScale(1)
- self.model.flattenLight()
- """
-
- if self.goonHatType is not 'none':
- self.goonType = {'hardhat':'pg','security':'sg'}[self.goonHatType]
- self.hat = self.model
- ### this was copied from Goon.createHead
- if self.goonType == "pg":
- self.hat.find("**/security_hat").hide()
- elif self.goonType == "sg":
- self.hat.find("**/hard_hat").hide()
- ###
- del self.hat
- del self.goonType
-
+ floor2.setZ(floor2, -0.75)
if self.flattenType == 'light':
self.model.flattenLight()
elif self.flattenType == 'medium':
self.model.flattenMedium()
elif self.flattenType == 'strong':
self.model.flattenStrong()
+ return
def setModelPath(self, path):
self.modelPath = path
self.loadModel()
-
+
def setCollisionsOnly(self, collisionsOnly):
self.collisionsOnly = collisionsOnly
- self.loadModel()
-
- def setGoonHatType(self, goonHatType):
- self.goonHatType = goonHatType
- self.loadModel()
+ self.loadModel()
\ No newline at end of file
diff --git a/otp/src/level/PathEntity.py b/otp/src/level/PathEntity.py
index 92c8f347..787a4fe5 100644
--- a/otp/src/level/PathEntity.py
+++ b/otp/src/level/PathEntity.py
@@ -1,16 +1,18 @@
from toontown.toonbase.ToontownGlobals import *
from direct.interval.IntervalGlobal import *
from direct.directnotify import DirectNotifyGlobal
-import BasicEntities
+from . import BasicEntities
from toontown.suit import GoonPathData
class PathEntity(BasicEntities.NodePathEntity):
+ __module__ = __name__
notify = DirectNotifyGlobal.directNotify.newCategory('PathEntity')
+
def __init__(self, level, entId):
- self.pathScale = 1.
+ self.pathScale = 1.0
BasicEntities.NodePathEntity.__init__(self, level, entId)
self.setPathIndex(self.pathIndex)
-
+
def destroy(self):
BasicEntities.NodePathEntity.destroy(self)
@@ -24,50 +26,34 @@ def setPathIndex(self, pathIndex):
else:
PathEntity.notify.warning('invalid pathIndex: %s' % pathIndex)
self.path = None
-
- def makePathTrack(self, node, velocity, name, turnTime=1,
- lookAroundNode=None):
- track = Sequence(name = name)
+ return
+
+ def makePathTrack(self, node, velocity, name, turnTime=1, lookAroundNode=None):
+ track = Sequence(name=name)
if self.path is None:
- track.append(WaitInterval(1.))
+ track.append(WaitInterval(1.0))
return track
- assert len(self.path) > 1
-
- # end with the starting point at the end, so we have a continuous loop
path = self.path + [self.path[0]]
for pointIndex in range(len(path) - 1):
startPoint = Point3(path[pointIndex]) * self.pathScale
- endPoint = Point3(path[pointIndex + 1]) * self.pathScale
- # Face the endpoint
+ endPoint = Point3(path[(pointIndex + 1)]) * self.pathScale
v = startPoint - endPoint
-
- # figure out the angle we have to turn to look at the next point
- # Note: this will only look right for paths that are defined in a
- # counterclockwise order. Otherwise the goon will always turn the
- # "long" way to look at the next point
- node.setPos(startPoint[0], startPoint[1],startPoint[2])
+ node.setPos(startPoint[0], startPoint[1], startPoint[2])
node.headsUp(endPoint[0], endPoint[1], endPoint[2])
theta = node.getH() % 360
-
- track.append(
- LerpHprInterval(node, # stop and look around
- turnTime,
- Vec3(theta,0,0)))
-
- # Calculate the amount of time we should spend walking
+ track.append(LerpHprInterval(node, turnTime, Vec3(theta, 0, 0)))
distance = Vec3(v).length()
duration = distance / velocity
-
- # Walk to the end point
- track.append(
- LerpPosInterval(node, duration=duration,
- pos=endPoint, startPos=startPoint))
+ track.append(LerpPosInterval(node, duration=duration, pos=endPoint, startPos=startPoint))
+
return track
+ return
if __dev__:
+
def getChangeEvent(self):
return self.getUniqueName('pathChanged')
def setPathScale(self, pathScale):
self.pathScale = pathScale
- self.setPathIndex(self.pathIndex)
+ self.setPathIndex(self.pathIndex)
\ No newline at end of file
diff --git a/otp/src/level/PropSpinner.py b/otp/src/level/PropSpinner.py
index 49a7a76f..acaed0e7 100644
--- a/otp/src/level/PropSpinner.py
+++ b/otp/src/level/PropSpinner.py
@@ -1,48 +1,48 @@
+from direct.interval.IntervalGlobal import *
+from . import Entity
-import string
-from direct.interval.IntervalGlobal import *
-from Entity import Entity
-from pandac.PandaModules import Vec3
+class PropSpinner(Entity.Entity):
+ __module__ = __name__
-class PropSpinner(Entity):
def __init__(self, level, entId):
- Entity.__init__(self, level, entId)
+ Entity.Entity.__init__(self, level, entId)
self.initProps()
def destroy(self):
self.destroyProps()
- Entity.destroy(self)
+ Entity.Entity.destroy(self)
def initProps(self):
topNode = self.getZoneNode()
- props = topNode.findAllMatches("**/Prop_*")
- spinTracks = Parallel()
- for prop in props:
- name = prop.getName()
- nameParts = name.split('_')
- # ['Prop', 'Rotate', 'Y', '15', 'Gear2']
+ props = topNode.findAllMatches('**/Prop_*').asList()
+ spinTracks = Parallel()
+ for prop in props:
+ name = prop.getName()
+ nameParts = name.split('_')
axis = nameParts[2]
rate = 0
- neg = (string.upper(nameParts[3][0]) == 'N')
+ neg = string.upper(nameParts[3][0]) == 'N'
if neg:
nameParts[3] = nameParts[3][1:]
try:
rate = int(nameParts[3])
except:
- print 'invalid prop rotate string: %s' % name
+ print('invalid prop rotate string: %s' % name)
+
if neg:
rate = -rate
- prop.setHpr(0,0,0)
- if axis == "X":
- hpr = Vec3(0, rate*360, 0)
- elif axis == "Y":
- hpr = Vec3(rate*360, 0, 0)
- elif axis == "Z":
- hpr = Vec3(0, 0, rate*360)
- else:
- print 'error', axis
- spinTracks.append(LerpHprInterval(prop, 60, hpr))
- spinTracks.loop()
+ prop.setHpr(0, 0, 0)
+ if axis == 'X':
+ hpr = Vec3(0, rate * 360, 0)
+ elif axis == 'Y':
+ hpr = Vec3(rate * 360, 0, 0)
+ elif axis == 'Z':
+ hpr = Vec3(0, 0, rate * 360)
+ else:
+ print('error', axis)
+ spinTracks.append(LerpHprInterval(prop, 60, hpr))
+
+ spinTracks.loop()
self.spinTracks = spinTracks
def destroyProps(self):
@@ -51,6 +51,7 @@ def destroyProps(self):
del self.spinTracks
if __dev__:
+
def attribChanged(self, *args):
self.destroyProps()
- self.initProps()
+ self.initProps()
\ No newline at end of file
diff --git a/otp/src/level/SpecUtil.py b/otp/src/level/SpecUtil.py
index f1928327..d4ebc1ec 100644
--- a/otp/src/level/SpecUtil.py
+++ b/otp/src/level/SpecUtil.py
@@ -2,11 +2,11 @@
import direct.directbase.DirectStart
from pandac.PandaModules import *
-import LevelSpec
-import LevelConstants
-import LevelUtil
+from . import LevelSpec
+from . import LevelConstants
+from . import LevelUtil
from direct.showbase.PythonUtil import list2dict
-import EntityTypes
+from . import EntityTypes
import types
"""
@@ -24,7 +24,7 @@ def makeNewSpec(filename, modelPath, entTypeModule=EntityTypes):
# expand any env vars, then convert to an OS-correct path
fname = Filename.expandFrom(filename).toOsSpecific()
spec.saveToDisk(fname, makeBackup=0)
- print 'Done.'
+ print('Done.')
"""
FOR SAME LEVEL MODEL PATH:
@@ -47,7 +47,7 @@ def updateSpec(specModule, entTypeModule=EntityTypes, modelPath=None):
spec = LevelSpec.LevelSpec(specModule)
privUpdateSpec(spec, modelPath, entTypeModule)
spec.saveToDisk()
- print 'Done.'
+ print('Done.')
def privUpdateSpec(spec, modelPath, entTypeModule, newZonesGloballyVisible=0):
"""internal: take a spec and update it to match its level model
@@ -56,7 +56,7 @@ def privUpdateSpec(spec, modelPath, entTypeModule, newZonesGloballyVisible=0):
"""
assert __dev__
assert type(entTypeModule) is types.ModuleType
- import EntityTypeRegistry
+ from . import EntityTypeRegistry
etr = EntityTypeRegistry.EntityTypeRegistry(entTypeModule)
spec.setEntityTypeReg(etr)
@@ -76,7 +76,7 @@ def privUpdateSpec(spec, modelPath, entTypeModule, newZonesGloballyVisible=0):
TexturePool.clearFakeTextureImage()
# get the model's zone info
zoneNum2node = LevelUtil.getZoneNum2Node(model)
- zoneNums = zoneNum2node.keys()
+ zoneNums = list(zoneNum2node.keys())
# what zone entities do we have specs for?
type2ids = spec.getEntType2ids(spec.getAllEntIds())
@@ -96,7 +96,7 @@ def insertZoneEntity(zoneNum, spec=spec, zoneEntIds=zoneEntIds):
removedZoneNums = []
for entId in list(zoneEntIds):
if entId not in zoneNums:
- print 'zone %s no longer exists; removing' % entId
+ print('zone %s no longer exists; removing' % entId)
removeZoneEntity(entId)
removedZoneNums.append(entId)
@@ -106,7 +106,7 @@ def insertZoneEntity(zoneNum, spec=spec, zoneEntIds=zoneEntIds):
if zoneNum not in zoneEntIds:
newZoneNums.append(zoneNum)
- print 'adding new zone entity %s' % zoneNum
+ print('adding new zone entity %s' % zoneNum)
insertZoneEntity(zoneNum)
# by default, new zone can't see any other zones
spec.doSetAttrib(zoneNum, 'visibility', [])
@@ -117,7 +117,7 @@ def insertZoneEntity(zoneNum, spec=spec, zoneEntIds=zoneEntIds):
visDict = list2dict(visList)
for zoneNum in newZoneNums:
visDict[zoneNum] = None
- visList = visDict.keys()
+ visList = list(visDict.keys())
visList.sort()
spec.doSetAttrib(entId, 'visibility', visList)
diff --git a/otp/src/level/VisibilityBlocker.py b/otp/src/level/VisibilityBlocker.py
index 135b249f..cd4e6e6f 100644
--- a/otp/src/level/VisibilityBlocker.py
+++ b/otp/src/level/VisibilityBlocker.py
@@ -1,52 +1,31 @@
-"""VisibilityBlocker module: contains the VisibilityBlocker class"""
-
-import Entity
+from . import Entity
class VisibilityBlocker:
- """This is a mixin class for level entities (see Entity.py) that in some
- way 'block' visibility (such as doors) -- entities that can completely
- obscure what's behind them. It provides the blocker with a mechanism
- whereby they are informed of when it is safe for them to 'unblock' the
- visibility and show what's behind them. Without this mechanism, the
- blocker might show what's behind it before all of the distributed objects
- behind it have been generated."""
+ __module__ = __name__
+
def __init__(self):
- self.__nextSetZoneDoneEvent=None
+ self.__nextSetZoneDoneEvent = None
+ return
def destroy(self):
self.cancelUnblockVis()
def requestUnblockVis(self):
- """derived class should call this before the end of the frame in which
- they cause the visibility to be extended. okToUnblockVis (see below)
- will be called when it's safe to show the new zones."""
if self.__nextSetZoneDoneEvent is None:
self.__nextSetZoneDoneEvent = self.level.cr.getNextSetZoneDoneEvent()
self.acceptOnce(self.__nextSetZoneDoneEvent, self.okToUnblockVis)
- # make sure that a setZone is sent this frame, even if the
- # visibility list doesn't change
self.level.forceSetZoneThisFrame()
+ return
def cancelUnblockVis(self):
- """
- derived class should call this if they have called
- requestUnblockVis, but no longer need that service. For example
- the user could have canceled the request that started the
- visibility change.
- """
if self.__nextSetZoneDoneEvent is not None:
self.ignore(self.__nextSetZoneDoneEvent)
self.__nextSetZoneDoneEvent = None
+ return
def isWaitingForUnblockVis(self):
- """
- returns a boolean for whether there is a requestUnblockVis() pending.
- """
return self.__nextSetZoneDoneEvent is not None
+ return
def okToUnblockVis(self):
- """
- derived class should override this func and do the vis unblock
- (i.e. open the door, etc.)
- """
- self.cancelUnblockVis()
+ self.cancelUnblockVis()
\ No newline at end of file
diff --git a/otp/src/level/VisibilityExtender.py b/otp/src/level/VisibilityExtender.py
index cb824d6b..363b7b42 100644
--- a/otp/src/level/VisibilityExtender.py
+++ b/otp/src/level/VisibilityExtender.py
@@ -1,8 +1,8 @@
-"""VisibilityExtender module: contains the VisibilityExtender class"""
-
-import Entity
+from . import Entity
class VisibilityExtender(Entity.Entity):
+ __module__ = __name__
+
def __init__(self, level, entId):
Entity.Entity.__init__(self, level, entId)
self.initVisExt()
@@ -14,32 +14,29 @@ def initVisExt(self):
if self.event is not None:
self.eventName = self.getOutputEventName(self.event)
self.accept(self.eventName, self.handleEvent)
+ return
def destroyVisExt(self):
if self.eventName is not None:
self.ignore(self.eventName)
if self.extended:
self.retract()
+ return
def handleEvent(self, doExtend):
if doExtend:
if not self.extended:
self.extend()
- else:
- if self.extended:
- self.retract()
+ elif self.extended:
+ self.retract()
def extend(self):
- """extend the visibility list"""
- assert not self.extended
zoneEnt = self.level.getEntity(self.getZoneEntId())
zoneEnt.incrementRefCounts(self.newZones)
self.extended = 1
self.level.handleVisChange()
-
+
def retract(self):
- """un-extend the visibility list"""
- assert self.extended
zoneEnt = self.level.getEntity(self.getZoneEntId())
zoneEnt.decrementRefCounts(self.newZones)
self.extended = 0
@@ -50,18 +47,18 @@ def destroy(self):
Entity.Entity.destroy(self)
if __dev__:
+
def setNewZones(self, newZones):
- # we need to call destroyVisExt before accepting the new zone set
extended = self.extended
self.destroyVisExt()
self.newZones = newZones
self.initVisExt()
if extended:
self.extend()
-
+
def attribChanged(self, *args):
extended = self.extended
self.destroyVisExt()
self.initVisExt()
if extended:
- self.extend()
+ self.extend()
\ No newline at end of file
diff --git a/otp/src/level/ZoneEntity.py b/otp/src/level/ZoneEntity.py
index e10c05a9..5a759311 100644
--- a/otp/src/level/ZoneEntity.py
+++ b/otp/src/level/ZoneEntity.py
@@ -1,31 +1,22 @@
-"""ZoneEntity module: contains the ZoneEntity class"""
-
-import ZoneEntityBase
-import BasicEntities
+from . import ZoneEntityBase, BasicEntities
class ZoneEntity(ZoneEntityBase.ZoneEntityBase, BasicEntities.NodePathAttribs):
+ __module__ = __name__
+
def __init__(self, level, entId):
ZoneEntityBase.ZoneEntityBase.__init__(self, level, entId)
-
self.nodePath = self.level.getZoneNode(self.entId)
if self.nodePath is None:
if __dev__:
- self.level.reportModelSpecSyncError(
- 'unknown zoneNum %s; zone was removed from model?' %
- self.entId)
+ self.level.reportModelSpecSyncError('unknown zoneNum %s; zone was removed from model?' % self.entId)
else:
- self.notify.error('zone %s not found in level model' %
- self.entId)
+ self.notify.error('zone %s not found in level model' % self.entId)
BasicEntities.NodePathAttribs.initNodePathAttribs(self, doReparent=0)
-
- # dict of zoneNum to 'visible' reference count
self.visibleZoneNums = {}
-
- # inc ref counts for the zones that are always visible from this zone
self.incrementRefCounts(self.visibility)
+ return
def destroy(self):
- # no need to dec our visibility reference counts
BasicEntities.NodePathAttribs.destroy(self)
ZoneEntityBase.ZoneEntityBase.destroy(self)
@@ -33,15 +24,13 @@ def getNodePath(self):
return self.nodePath
def getVisibleZoneNums(self):
- return self.visibleZoneNums.keys()
+ return list(self.visibleZoneNums.keys())
- # call these with lists of zoneNums to increment or decrement their
- # 'visible' reference counts
- # zone is visible as long as its ref count is nonzero
def incrementRefCounts(self, zoneNumList):
for zoneNum in zoneNumList:
self.visibleZoneNums.setdefault(zoneNum, 0)
self.visibleZoneNums[zoneNum] += 1
+
def decrementRefCounts(self, zoneNumList):
for zoneNum in zoneNumList:
self.visibleZoneNums[zoneNum] -= 1
@@ -49,9 +38,9 @@ def decrementRefCounts(self, zoneNumList):
del self.visibleZoneNums[zoneNum]
if __dev__:
+
def setVisibility(self, visibility):
self.decrementRefCounts(self.visibility)
self.visibility = visibility
self.incrementRefCounts(self.visibility)
-
- self.level.handleVisChange()
+ self.level.handleVisChange()
\ No newline at end of file
diff --git a/otp/src/level/ZoneEntityAI.py b/otp/src/level/ZoneEntityAI.py
index 4c8e9dbd..ae6fbd21 100644
--- a/otp/src/level/ZoneEntityAI.py
+++ b/otp/src/level/ZoneEntityAI.py
@@ -1,6 +1,6 @@
"""ZoneEntityAI module: contains the ZoneEntityAI class"""
-import ZoneEntityBase
+from . import ZoneEntityBase
class ZoneEntityAI(ZoneEntityBase.ZoneEntityBase):
def __init__(self, level, entId):
diff --git a/otp/src/level/ZoneEntityBase.py b/otp/src/level/ZoneEntityBase.py
index 48f9a075..ac9b1046 100644
--- a/otp/src/level/ZoneEntityBase.py
+++ b/otp/src/level/ZoneEntityBase.py
@@ -1,12 +1,12 @@
-"""ZoneEntityBase module: contains the ZoneEntityBase class"""
-
-import Entity
-import LevelConstants
+from . import Entity, LevelConstants
class ZoneEntityBase(Entity.Entity):
+ __module__ = __name__
+
def __init__(self, level, entId):
Entity.Entity.__init__(self, level, entId)
self.zoneId = None
+ return
def destroy(self):
del self.zoneId
@@ -16,13 +16,10 @@ def isUberZone(self):
return self.entId == LevelConstants.UberZoneEntId
def setZoneId(self, zoneId):
- """set the network zoneId that this zone entity corresponds to"""
self.zoneId = zoneId
def getZoneId(self):
- """network zoneId"""
return self.zoneId
def getZoneNum(self):
- """zoneNum from model / entityId"""
- return self.entId
+ return self.entId
\ No newline at end of file
diff --git a/otp/src/leveleditor/LevelEditor.py b/otp/src/leveleditor/LevelEditor.py
index 4a5483a8..30ffb14e 100644
--- a/otp/src/leveleditor/LevelEditor.py
+++ b/otp/src/leveleditor/LevelEditor.py
@@ -6,10 +6,10 @@
"""
from direct.leveleditor.LevelEditorBase import *
-from ObjectHandler import *
-from ObjectPalette import *
-from LevelEditorUI import *
-from ProtoPalette import *
+from .ObjectHandler import *
+from .ObjectPalette import *
+from .LevelEditorUI import *
+from .ProtoPalette import *
class LevelEditor(LevelEditorBase):
""" Class for Panda3D LevelEditor """
diff --git a/otp/src/leveleditor/LevelEditorStart.py b/otp/src/leveleditor/LevelEditorStart.py
index 3ea17da9..bb40a7ae 100644
--- a/otp/src/leveleditor/LevelEditorStart.py
+++ b/otp/src/leveleditor/LevelEditorStart.py
@@ -1,4 +1,4 @@
-import LevelEditor
+from . import LevelEditor
base.le = LevelEditor.LevelEditor()
# You should define LevelEditor instance as
diff --git a/otp/src/login/AccountServerConstants.py b/otp/src/login/AccountServerConstants.py
index 91970075..9663bc50 100644
--- a/otp/src/login/AccountServerConstants.py
+++ b/otp/src/login/AccountServerConstants.py
@@ -1,10 +1,10 @@
"""AccountServerConstants.py: contains the AccountServerConstants class """
from pandac.PandaModules import *
-from RemoteValueSet import *
+from .RemoteValueSet import *
from direct.directnotify import DirectNotifyGlobal
-import TTAccount
-import HTTPUtil
+from . import TTAccount
+from . import HTTPUtil
class AccountServerConstants(RemoteValueSet):
notify = \
diff --git a/otp/src/login/CreateAccountScreen.py b/otp/src/login/CreateAccountScreen.py
index 50d0941b..d19d1e11 100644
--- a/otp/src/login/CreateAccountScreen.py
+++ b/otp/src/login/CreateAccountScreen.py
@@ -9,8 +9,8 @@
from direct.fsm import State
from direct.directnotify import DirectNotifyGlobal
from otp.otpbase import OTPLocalizer
-import TTAccount
-import GuiScreen
+from . import TTAccount
+from . import GuiScreen
from otp.otpbase import OTPGlobals
from direct.distributed.MsgTypes import *
@@ -336,7 +336,7 @@ def enterWaitForLoginResponse(self):
error=self.loginInterface.createAccount(self.userName,
self.password,
data)
- except TTAccount.TTAccountException, e:
+ except TTAccount.TTAccountException as e:
# show the error message, and back out of account creation
error = str(e)
self.notify.info(error)
diff --git a/otp/src/login/GuiScreen.py b/otp/src/login/GuiScreen.py
index 0735ade5..c00b506e 100644
--- a/otp/src/login/GuiScreen.py
+++ b/otp/src/login/GuiScreen.py
@@ -102,7 +102,7 @@ def startFocusMgmt(self,
# Note that we still need to listen for DirectEntry focus events,
# in case the user clicks on a DirectEntry.
self.focusHandlerAbsorbCounts = {}
- for i in xrange(len(self.focusList)):
+ for i in range(len(self.focusList)):
item = self.focusList[i]
if isinstance(item, DirectEntry):
self.focusHandlerAbsorbCounts[item] = 0
@@ -111,7 +111,7 @@ def startFocusMgmt(self,
self.userFocusHandlers = {}
self.userCommandHandlers = {}
- for i in xrange(len(self.focusList)):
+ for i in range(len(self.focusList)):
item = self.focusList[i]
if isinstance(item, DirectEntry):
# store the old focus handler so that we can chain to it
@@ -146,12 +146,12 @@ def startFocusMgmt(self,
# set up the Enter-press handlers
self.enterPressHandlers = {}
- for i in xrange(len(self.focusList)):
+ for i in range(len(self.focusList)):
item = self.focusList[i]
# pick an enter-press behavior
behavior = enterPressBehavior
- if overrides.has_key(item):
+ if item in overrides:
behavior = overrides[item]
if callable(behavior):
@@ -320,16 +320,16 @@ def __chainToUserCommandHandler(self, item):
if userHandler:
if isinstance(item, DirectEntry):
enteredText = item.get()
- apply(userHandler, [enteredText] + userHandlerArgs)
+ userHandler(*[enteredText] + userHandlerArgs)
elif isinstance(item, DirectScrolledList):
- apply(userHandler, userHandlerArgs)
+ userHandler(*userHandlerArgs)
def __chainToUserFocusHandler(self, item):
# call the user focus handler, if any
if isinstance(item, DirectEntry):
userHandler, userHandlerArgs = self.userFocusHandlers[item]
if userHandler:
- apply(userHandler, userHandlerArgs)
+ userHandler(*userHandlerArgs)
### TAB key handlers ##########
diff --git a/otp/src/login/HTTPUtil.py b/otp/src/login/HTTPUtil.py
index 0e897cb4..0e101d7c 100644
--- a/otp/src/login/HTTPUtil.py
+++ b/otp/src/login/HTTPUtil.py
@@ -25,7 +25,7 @@ def getHTTPResponse(url, http, body=''):
response = sr.readlines()
# strip trailing newlines
- for i in xrange(len(response)):
+ for i in range(len(response)):
if response[i][-1] == '\n':
response[i] = response[i][:-1]
diff --git a/otp/src/login/LoginDISLTokenAccount.py b/otp/src/login/LoginDISLTokenAccount.py
index 834f568b..af71874d 100644
--- a/otp/src/login/LoginDISLTokenAccount.py
+++ b/otp/src/login/LoginDISLTokenAccount.py
@@ -3,7 +3,7 @@
from direct.showbase.ShowBaseGlobal import *
from direct.distributed.MsgTypes import *
from direct.directnotify import DirectNotifyGlobal
-import LoginBase
+from . import LoginBase
from direct.distributed.PyDatagram import PyDatagram
diff --git a/otp/src/login/LoginGSAccount.py b/otp/src/login/LoginGSAccount.py
index 820bc526..79f9a7e4 100644
--- a/otp/src/login/LoginGSAccount.py
+++ b/otp/src/login/LoginGSAccount.py
@@ -3,7 +3,7 @@
from pandac.PandaModules import *
from direct.distributed.MsgTypes import *
from direct.directnotify import DirectNotifyGlobal
-import LoginBase
+from . import LoginBase
from direct.distributed.PyDatagram import PyDatagram
diff --git a/otp/src/login/LoginGoAccount.py b/otp/src/login/LoginGoAccount.py
index 6c896fb1..eea1921d 100644
--- a/otp/src/login/LoginGoAccount.py
+++ b/otp/src/login/LoginGoAccount.py
@@ -4,7 +4,7 @@
from pandac.PandaModules import *
from direct.distributed.MsgTypes import *
from direct.directnotify import DirectNotifyGlobal
-import LoginBase
+from . import LoginBase
from direct.distributed.PyDatagram import PyDatagram
diff --git a/otp/src/login/LoginScreen.py b/otp/src/login/LoginScreen.py
index 5b6da59d..8f09518e 100644
--- a/otp/src/login/LoginScreen.py
+++ b/otp/src/login/LoginScreen.py
@@ -19,8 +19,8 @@
from otp.otpbase import OTPGlobals
from otp.uberdog.AccountDetailRecord import AccountDetailRecord, SubDetailRecord
-import TTAccount
-import GuiScreen
+from . import TTAccount
+from . import GuiScreen
class LoginScreen(StateData.StateData, GuiScreen.GuiScreen):
"""
@@ -420,7 +420,7 @@ def enterWaitForLoginResponse(self):
try:
error=self.loginInterface.authorize(self.userName, self.password)
- except TTAccount.TTAccountException, e:
+ except TTAccount.TTAccountException as e:
self.fsm.request('showConnectionProblemDialog', [str(e)])
return
diff --git a/otp/src/login/LoginTTAccount.py b/otp/src/login/LoginTTAccount.py
index 466efd80..73de178a 100644
--- a/otp/src/login/LoginTTAccount.py
+++ b/otp/src/login/LoginTTAccount.py
@@ -3,9 +3,9 @@
from pandac.PandaModules import *
from direct.distributed.MsgTypes import *
from direct.directnotify import DirectNotifyGlobal
-import LoginBase
-import TTAccount
-from TTAccount import TTAccountException
+from . import LoginBase
+from . import TTAccount
+from .TTAccount import TTAccountException
from direct.distributed.PyDatagram import PyDatagram
@@ -143,7 +143,7 @@ def authenticateParentPassword(self, loginName,
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
@@ -163,7 +163,7 @@ def authenticateParentPassword(self, loginName,
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
@@ -193,7 +193,7 @@ def authenticateDelete(self, loginName, password):
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
diff --git a/otp/src/login/LoginTTSpecificDevAccount.py b/otp/src/login/LoginTTSpecificDevAccount.py
index a5938243..2e9c1e0c 100644
--- a/otp/src/login/LoginTTSpecificDevAccount.py
+++ b/otp/src/login/LoginTTSpecificDevAccount.py
@@ -3,9 +3,9 @@
from pandac.PandaModules import *
from direct.distributed.MsgTypes import *
from direct.directnotify import DirectNotifyGlobal
-import LoginTTAccount
+from . import LoginTTAccount
from direct.distributed.PyDatagram import PyDatagram
-from TTAccount import TTAccountException
+from .TTAccount import TTAccountException
class LoginTTSpecificDevAccount(LoginTTAccount.LoginTTAccount):
"""This is a login that is meant to work only on a developer's local setup.
diff --git a/otp/src/login/LoginWebPlayTokenAccount.py b/otp/src/login/LoginWebPlayTokenAccount.py
index 759ed9e1..82755cc7 100644
--- a/otp/src/login/LoginWebPlayTokenAccount.py
+++ b/otp/src/login/LoginWebPlayTokenAccount.py
@@ -2,7 +2,7 @@
from pandac.PandaModules import *
from direct.directnotify import DirectNotifyGlobal
-import LoginTTAccount
+from . import LoginTTAccount
class LoginWebPlayTokenAccount(LoginTTAccount.LoginTTAccount):
@@ -52,7 +52,7 @@ def getAccountData(self, loginName, password):
pass
def getErrorCode(self):
- if not self.has_key("response"):
+ if "response" not in self:
return 0
return self.response.getInt('errorCode', 0)
diff --git a/otp/src/login/PrivacyPolicyPanel.py b/otp/src/login/PrivacyPolicyPanel.py
index 5c369678..93f46bc2 100644
--- a/otp/src/login/PrivacyPolicyPanel.py
+++ b/otp/src/login/PrivacyPolicyPanel.py
@@ -2,7 +2,7 @@
from pandac.PandaModules import *
from otp.otpbase.OTPGlobals import *
from direct.gui.DirectGui import *
-from MultiPageTextFrame import *
+from .MultiPageTextFrame import *
from direct.directnotify import DirectNotifyGlobal
from otp.otpbase import OTPLocalizer
from otp.otpgui import OTPDialog
diff --git a/otp/src/login/RemoteValueSet.py b/otp/src/login/RemoteValueSet.py
index d350d196..02ab3b37 100644
--- a/otp/src/login/RemoteValueSet.py
+++ b/otp/src/login/RemoteValueSet.py
@@ -1,8 +1,8 @@
"""RemoteValueSet.py: contains the RemoteValueSet class"""
from direct.directnotify import DirectNotifyGlobal
-import TTAccount
-import HTTPUtil
+from . import TTAccount
+from . import HTTPUtil
class RemoteValueSet:
"""
@@ -55,7 +55,7 @@ def __init__(self, url, http, body='',
# '1' means only make one split (the first one, from the left)
try:
name, value = line.split('=', 1)
- except ValueError, e:
+ except ValueError as e:
errMsg = 'unexpected response: %s' % response
self.notify.warning(errMsg)
onUnexpectedResponse(errMsg)
@@ -72,7 +72,7 @@ def __init__(self, url, http, body='',
# make sure we got all of the expected fields
for name in expectedFields:
- if not self.dict.has_key(name):
+ if name not in self.dict:
errMsg = "missing expected field '%s'" % name
self.notify.warning(errMsg)
onUnexpectedResponse(errMsg)
@@ -82,7 +82,7 @@ def __repr__(self):
return "RemoteValueSet:%s" % str(self.dict)
def hasKey(self, key):
- return self.dict.has_key(key)
+ return key in self.dict
# accessors
# If 'name' is not found, and you provide a 'default' value,
diff --git a/otp/src/login/SecretFriendsInfoPanel.py b/otp/src/login/SecretFriendsInfoPanel.py
index af78fd28..87f63f23 100644
--- a/otp/src/login/SecretFriendsInfoPanel.py
+++ b/otp/src/login/SecretFriendsInfoPanel.py
@@ -1,7 +1,7 @@
from pandac.PandaModules import *
from otp.otpbase.OTPGlobals import *
from direct.gui.DirectGui import *
-from MultiPageTextFrame import *
+from .MultiPageTextFrame import *
from otp.otpbase import OTPLocalizer
from otp.otpgui import OTPDialog
diff --git a/otp/src/login/TTAccount.py b/otp/src/login/TTAccount.py
index 6cf416fa..b469f6f1 100644
--- a/otp/src/login/TTAccount.py
+++ b/otp/src/login/TTAccount.py
@@ -5,22 +5,22 @@
from direct.directnotify import DirectNotifyGlobal
from direct.showbase import PythonUtil
from otp.otpbase import OTPLocalizer
-import HTTPUtil
-import RemoteValueSet
+from . import HTTPUtil
+from . import RemoteValueSet
import copy
accountServer = ''
accountServer = launcher.getAccountServer()
-print "TTAccount: accountServer from launcher: ", (accountServer)
+print("TTAccount: accountServer from launcher: ", (accountServer))
configAccountServer = base.config.GetString('account-server', '')
if configAccountServer:
accountServer = configAccountServer
- print "TTAccount: overriding accountServer from config: ", (accountServer)
+ print("TTAccount: overriding accountServer from config: ", (accountServer))
if not accountServer:
accountServer = "https://toontown.go.com"
- print "TTAccount: default accountServer: ", (accountServer)
+ print("TTAccount: default accountServer: ", (accountServer))
accountServer = URLSpec(accountServer, 1)
@@ -113,7 +113,7 @@ def authenticateParentPassword(self, loginName,
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
@@ -151,7 +151,7 @@ def authenticateDelete(self, loginName, password):
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
@@ -186,7 +186,7 @@ def enableSecretFriends(self, loginName, password,
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
@@ -261,8 +261,8 @@ def getAccountData(self, loginName, password):
# rename some fields
dict = self.accountData.dict
- for fieldName in dict.keys():
- if fieldNameMap.has_key(fieldName):
+ for fieldName in list(dict.keys()):
+ if fieldName in fieldNameMap:
dict[fieldNameMap[fieldName]] = dict[fieldName]
del dict[fieldName]
@@ -344,7 +344,7 @@ def talk(self, operation, data={}):
self.notify.debug("TTAccount.talk()")
# ensure that data contains nothing but strings
- for key in data.keys():
+ for key in list(data.keys()):
data[key] = str(data[key])
# assert that 'data' contains all the required data
@@ -354,33 +354,33 @@ def talk(self, operation, data={}):
'authenticateParentPasswordNewStyle',
'authenticateDeleteNewStyle'):
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'password'))
elif operation == 'authenticateParentUsernameAndPassword':
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'parentUsername',
'parentPasswordNewStyle',
'userid'))
elif operation == 'forgotPassword':
- assert data.has_key('accountName') or data.has_key('email')
+ assert 'accountName' in data or 'email' in data
elif operation == 'setParentPassword':
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'password',
'parentPassword',))
elif operation == 'setSecretChat':
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'password',
'chat',))
elif operation == 'create':
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'password',
#'dobYear',
@@ -391,14 +391,14 @@ def talk(self, operation, data={}):
))
elif operation == 'purchase':
# is this a password change or a purchase op?
- if data.has_key('newPassword'):
+ if 'newPassword' in data:
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'password'))
else:
assert PythonUtil.contains(
- data.keys(),
+ list(data.keys()),
('accountName',
'password',
'email',
@@ -449,7 +449,7 @@ def talk(self, operation, data={}):
url.setPath('/%s.php' % (op2Php[operation]))
body = ''
- if data.has_key('accountName'):
+ if 'accountName' in data:
if operation not in newWebOperations:
# name is put on url for documentation only
url.setQuery('n=%s' % (URLSpec.quote(data['accountName'])))
@@ -489,8 +489,8 @@ def talk(self, operation, data={}):
# populate a map of serverField:value pairs so that we
# can add the fields in alphabetical order
outBoundFields = {}
- for fieldName in data.keys():
- if not serverFields.has_key(fieldName):
+ for fieldName in list(data.keys()):
+ if fieldName not in serverFields:
if not fieldName in ignoredFields:
# unknown field name
self.notify.error(
@@ -499,7 +499,7 @@ def talk(self, operation, data={}):
outBoundFields[serverFields[fieldName]] = data[fieldName]
# add the fields to the body in alphabetical order
- orderedFields = outBoundFields.keys()
+ orderedFields = list(outBoundFields.keys())
orderedFields.sort()
for fieldName in orderedFields:
if len(body):
@@ -606,7 +606,7 @@ def authenticateParentUsernameAndPassword(self, loginName,
# some other error, pass it back
return (0, errorMsg)
- except TTAccountException, e:
+ except TTAccountException as e:
# connection error, bad response, etc.
# pass it back
return (0, str(e))
diff --git a/otp/src/movement/ImpFriction.py b/otp/src/movement/ImpFriction.py
index 51e1f885..862e0531 100644
--- a/otp/src/movement/ImpFriction.py
+++ b/otp/src/movement/ImpFriction.py
@@ -1,5 +1,5 @@
from pandac.PandaModules import *
-import Impulse
+from . import Impulse
class ImpFriction(Impulse.Impulse):
"""friction impulse"""
diff --git a/otp/src/movement/Mover.py b/otp/src/movement/Mover.py
index ec546c83..739b0a43 100644
--- a/otp/src/movement/Mover.py
+++ b/otp/src/movement/Mover.py
@@ -1,10 +1,10 @@
from pandac.PandaModules import *
-from libotp import CMover
+from panda3d.otp import CMover
from direct.directnotify import DirectNotifyGlobal
from otp.movement.PyVec3 import PyVec3
from direct.showbase import PythonUtil
-import __builtin__
+import builtins
class Mover(CMover):
@@ -18,7 +18,7 @@ class Mover(CMover):
PSCCpp = 'App:Show code:moveObjects:MoverC++'
PSCPy = 'App:Show code:moveObjects:MoverPy'
PSCInt = 'App:Show code:moveObjects:MoverIntegrate'
-
+
def __init__(self, objNodePath, fwdSpeed=1, rotSpeed=1):
"""objNodePath: nodepath to be moved"""
CMover.__init__(self, objNodePath, fwdSpeed, rotSpeed)
@@ -38,7 +38,7 @@ def __init__(self, objNodePath, fwdSpeed=1, rotSpeed=1):
self.pscInt = PStatCollector(Mover.PSCInt)
def destroy(self):
- for name, impulse in self.impulses.items():
+ for name, impulse in list(self.impulses.items()):
Mover.notify.debug('removing impulse: %s' % name)
self.removeImpulse(name)
@@ -72,11 +72,11 @@ def move(self, dt=-1, profile=0):
if Mover.Profile and (not profile):
# profile
def func(doMove=self.move):
- for i in xrange(10000):
+ for i in range(10000):
doMove(dt, profile=1)
- __builtin__.func = func
+ builtins.func = func
PythonUtil.startProfile(cmd='func()', filename='profile', sorts=['cumulative'], callInfo=0)
- del __builtin__.func
+ del builtins.func
return
if Mover.Pstats:
@@ -90,7 +90,7 @@ def func(doMove=self.move):
self.pscPy.start()
# now do Python impulses
- for impulse in self.impulses.values():
+ for impulse in list(self.impulses.values()):
impulse._process(self.getDt())
if Mover.Pstats:
diff --git a/otp/src/movement/MoverGroup.py b/otp/src/movement/MoverGroup.py
index 2c4e6ffe..55075404 100644
--- a/otp/src/movement/MoverGroup.py
+++ b/otp/src/movement/MoverGroup.py
@@ -25,7 +25,7 @@ def add(self, name, mover):
self._name2pyMovers[name] = mover
def remove(self, name):
self.removeCMover(name)
- if (self._name2pyMovers.has_key(name)):
+ if (name in self._name2pyMovers):
del self._name2pyMovers[name]
def move(self, dt=-1):
@@ -36,8 +36,8 @@ def move(self, dt=-1):
# process all the Py impulses first
if Mover.Pstats:
self.pscPy.start()
- for mover in self._name2pyMovers.values():
- for impulse in mover.impulses.values():
+ for mover in list(self._name2pyMovers.values()):
+ for impulse in list(mover.impulses.values()):
impulse._process(dt)
if Mover.Pstats:
self.pscPy.stop()
@@ -50,6 +50,6 @@ def move(self, dt=-1):
self.pscCppInt.stop()
def broadcastPositionUpdates(self):
- for mover in self._name2pyMovers.itervalues():
+ for mover in self._name2pyMovers.values():
mover._posHprBroadcast()
diff --git a/otp/src/movement/ProfVec.py b/otp/src/movement/ProfVec.py
index 6c562129..2f16d271 100644
--- a/otp/src/movement/ProfVec.py
+++ b/otp/src/movement/ProfVec.py
@@ -32,35 +32,35 @@ def __init__(self, x, y, z):
Reps = 100000
def nullLoop(n=Reps):
- for i in xrange(n):
+ for i in range(n):
pass
def createNullClass(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = NullClass()
def createSimpleClass(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = SimpleClass(1,2,3)
def createArgsClass(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = ArgsClass(1,2,3)
def createDerivedClass(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = DerivedClass(1,2,3)
def createComplexClass(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = ComplexClass(1,2,3)
def createFFIClass(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = FFIClass(1,2,3)
def createPyVec3(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = PyVec3(1,2,3)
def createVec3Direct(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = Vec3(None)
v._Vec3__overloaded_constructor_float_float_float(1,2,3)
def createVec3(n=Reps):
- for i in xrange(n):
+ for i in range(n):
v = Vec3(1,2,3)
def doProfile(cmd, filename):
diff --git a/otp/src/movement/PyVec3.py b/otp/src/movement/PyVec3.py
index 9f3394a9..13d77f2f 100644
--- a/otp/src/movement/PyVec3.py
+++ b/otp/src/movement/PyVec3.py
@@ -8,7 +8,7 @@ class PyVec3:
# interface is mostly patterned after Panda Vec3
Epsilon = .0001
- ScalarTypes = (types.FloatType, types.IntType, types.LongType)
+ ScalarTypes = (float, int, int)
def __init__(self, *args):
self.assign(*args)
diff --git a/otp/src/namepanel/NameCheck.py b/otp/src/namepanel/NameCheck.py
index 94fd8472..0b70a490 100644
--- a/otp/src/namepanel/NameCheck.py
+++ b/otp/src/namepanel/NameCheck.py
@@ -254,7 +254,7 @@ def allCaps(name):
TextEncoder.upper(
TextEncoder().encodeWtext(letters)))
# some unicode characters can't be capitalized
- for i in xrange(len(upperLetters)):
+ for i in range(len(upperLetters)):
if not upperLetters[0].isupper():
# at least one letter is not upper-case
# name is not all-caps
@@ -280,11 +280,11 @@ def checkJapanese(name):
# but, allows not ASCII and kanji(CJK) characters for a name
# All Japanese characters are three-byte-encoded utf-8 characters from unicode
# Reference: http://unicode.org/charts/
- asciiSpace = range(0x20, 0x21)
- asciiDigits = range(0x30, 0x40)
- hiragana = range(0x3041, 0x30A0)
- katakana = range(0x30A1, 0x3100)
- halfwidthKatakana = range(0xFF65, 0xFFA0)
+ asciiSpace = list(range(0x20, 0x21))
+ asciiDigits = list(range(0x30, 0x40))
+ hiragana = list(range(0x3041, 0x30A0))
+ katakana = list(range(0x30A1, 0x3100))
+ halfwidthKatakana = list(range(0xFF65, 0xFFA0))
halfwidthCharacter = set(asciiSpace + halfwidthKatakana)
allowedUtf8 = set(asciiSpace + hiragana + katakana + halfwidthKatakana)
te = TextEncoder()
@@ -299,7 +299,7 @@ def checkJapanese(name):
return OTPLocalizer.NCNoDigits
else:
notify.info('name contains not allowed utf8 char: 0x%04x' % char)
- return OTPLocalizer.NCBadCharacter % te.encodeWtext(unichr(char))
+ return OTPLocalizer.NCBadCharacter % te.encodeWtext(chr(char))
else:
# Restrict the number of characters, if three-byte-encoded utf-8 character
# The full-width characters would fit into a single display cell,
@@ -373,7 +373,7 @@ def repeatedChars(name):
nName = name[:]
bName.reverse()
problem = check(bName)
- print "problem = %s" % (problem)
+ print("problem = %s" % (problem))
if problem:
return problem
@@ -392,11 +392,11 @@ def repeatedChars(name):
# empty name
assert checkName('')
assert checkName('\t')
-assert checkName(TextEncoder().encodeWtext(u'\xa0'))
-assert checkName(TextEncoder().encodeWtext(u'\u1680'))
-assert checkName(TextEncoder().encodeWtext(u'\u2001'))
+assert checkName(TextEncoder().encodeWtext('\xa0'))
+assert checkName(TextEncoder().encodeWtext('\u1680'))
+assert checkName(TextEncoder().encodeWtext('\u2001'))
# printable chars
-for i in xrange(32):
+for i in range(32):
assert checkName(chr(i))
assert checkName(chr(0x7f))
# bad characters
@@ -412,7 +412,7 @@ def repeatedChars(name):
# mono letter
assert checkName('Eeee')
assert checkName('Jjj')
-assert checkName(TextEncoder().encodeWtext(u'\u30a1\u30a1\u30a1'))
+assert checkName(TextEncoder().encodeWtext('\u30a1\u30a1\u30a1'))
# dashes
assert checkName('-Conqueror')
assert checkName('Conqueror-')
diff --git a/otp/src/namepanel/PickANamePattern.py b/otp/src/namepanel/PickANamePattern.py
index 7f21d63b..edc7d0f7 100644
--- a/otp/src/namepanel/PickANamePattern.py
+++ b/otp/src/namepanel/PickANamePattern.py
@@ -14,10 +14,10 @@ def getNameString(self, pattern, gender):
nameParts = self._getNameParts(gender)
# convert from string->index to index->string
invNameParts = []
- for i in xrange(len(nameParts)):
+ for i in range(len(nameParts)):
invNameParts.append(invertDict(nameParts[i]))
name = ''
- for i in xrange(len(pattern)):
+ for i in range(len(pattern)):
if pattern[i] != -1:
if len(name):
name += ' '
@@ -134,9 +134,9 @@ def _compute(self, nameStr, gender):
combinedIndex2indices = {}
lastNamePrefixesCapped = set(self._getLastNameCapPrefixes())
k = 0
- for first, i in nameParts[-2].iteritems():
+ for first, i in nameParts[-2].items():
capitalize = first in lastNamePrefixesCapped
- for second, j in nameParts[-1].iteritems():
+ for second, j in nameParts[-1].items():
combinedLastName = first
# capitalize the last name suffix if appropriate (Mc, Mac, etc.)
if capitalize:
diff --git a/otp/src/navigation/APSPSlave.py b/otp/src/navigation/APSPSlave.py
index 7aaf752a..5e2d9ee8 100644
--- a/otp/src/navigation/APSPSlave.py
+++ b/otp/src/navigation/APSPSlave.py
@@ -1,4 +1,4 @@
-import cPickle as pickle
+import pickle as pickle
from otp.navigation.NavMesh import NavMesh
import sys
diff --git a/otp/src/navigation/AreaMapper.py b/otp/src/navigation/AreaMapper.py
index 92c40606..4bce022f 100644
--- a/otp/src/navigation/AreaMapper.py
+++ b/otp/src/navigation/AreaMapper.py
@@ -190,11 +190,11 @@ def _explore(self,p):
def _exploreFrontier(self):
if len(self.frontierSquaresQueue) == 0:
- assert len(self.frontierSquares.keys()) == 0
+ assert len(list(self.frontierSquares.keys())) == 0
return 0
else:
qlen = len(self.frontierSquaresQueue)
- for i in xrange(qlen):
+ for i in range(qlen):
p = self.frontierSquaresQueue.pop(0)
del self.frontierSquares[p]
self._explore(p)
@@ -203,7 +203,7 @@ def _exploreFrontier(self):
def runDiscovery(self,maxSquares):
- print "Discovering walkable space (this will take 30-60 seconds)..."
+ print("Discovering walkable space (this will take 30-60 seconds)...")
#self._unstashEnvironment()
squaresExplored = 1
@@ -437,7 +437,7 @@ def _addOpenSquare(self, gridX1, gridY1, gridX2, gridY2):
def _subdivide(self):
- print "Growing squares..."
+ print("Growing squares...")
self.vertexCounter = 0
self.polyCounter = 0
diff --git a/otp/src/navigation/NavMesh.py b/otp/src/navigation/NavMesh.py
index 1fb79fc4..1d411580 100644
--- a/otp/src/navigation/NavMesh.py
+++ b/otp/src/navigation/NavMesh.py
@@ -1,10 +1,10 @@
import math
import bisect
-import cPickle as pickle
+import pickle as pickle
import string
import time
import os
-import StringIO
+import io
# File I/O stuff
import direct
@@ -82,7 +82,7 @@ def visualize(self, parentNodePath, highlightVerts = [], pathVerts = [], visited
vertToWriterIndex = {}
currIndex = 0
- for v in self.vertexCoords.keys():
+ for v in list(self.vertexCoords.keys()):
vertToWriterIndex[v] = currIndex
x = self.vertexCoords[v][0]
y = self.vertexCoords[v][1]
@@ -105,14 +105,14 @@ def visualize(self, parentNodePath, highlightVerts = [], pathVerts = [], visited
lines = GeomLinestrips(Geom.UHStatic)
- for p in self.polyToVerts.keys():
+ for p in list(self.polyToVerts.keys()):
for v in self.polyToVerts[p]:
lines.addVertex(vertToWriterIndex[v])
lines.addVertex(vertToWriterIndex[self.polyToVerts[p][0]])
lines.closePrimitive()
if len(pathVerts) > 0:
- for i in xrange(len(pathVerts)):
+ for i in range(len(pathVerts)):
lines.addVertex(pathOffsetIntoIndex+i)
lines.closePrimitive()
@@ -129,8 +129,8 @@ def visualize(self, parentNodePath, highlightVerts = [], pathVerts = [], visited
def _discoverInitialConnectivity(self):
- print "Building initial connectivity graph..."
- for pId in self.polyToVerts.keys():
+ print("Building initial connectivity graph...")
+ for pId in list(self.polyToVerts.keys()):
verts = self.polyToVerts[pId]
numVerts = len(verts)
@@ -140,7 +140,7 @@ def _discoverInitialConnectivity(self):
for v in verts:
candidates += [p for p in self.vertToPolys[v] if (p not in candidates) and (p != pId)]
- for vNum in xrange(numVerts):
+ for vNum in range(numVerts):
neighbor = [p for p in candidates if ((verts[vNum] in self.polyToVerts[p]) and \
(verts[(vNum+1)%numVerts] in self.polyToVerts[p]))]
if len(neighbor) == 0:
@@ -242,7 +242,7 @@ def _attemptToMergePolys(self, polyA, polyB):
neighbor = self.connectionLookup[polyB][locB]
newConnections.append(neighbor)
if neighbor is not None:
- for i in xrange(len(self.connectionLookup[neighbor])):
+ for i in range(len(self.connectionLookup[neighbor])):
if self.connectionLookup[neighbor][i] == polyB:
self.connectionLookup[neighbor][i] = polyA
@@ -254,7 +254,7 @@ def _attemptToMergePolys(self, polyA, polyB):
neighbor = self.connectionLookup[polyB][locB]
newConnections.append(neighbor)
if neighbor is not None:
- for i in xrange(len(self.connectionLookup[neighbor])):
+ for i in range(len(self.connectionLookup[neighbor])):
if self.connectionLookup[neighbor][i] == polyB:
self.connectionLookup[neighbor][i] = polyA
locB = (locB + 1) % lenB
@@ -296,7 +296,7 @@ def _attemptToGrowPoly(self, pId):
def _growEachPolyOnce(self):
grewAtLeastOne = False
- for pId in self.connectionLookup.keys():
+ for pId in list(self.connectionLookup.keys()):
if self._attemptToGrowPoly(pId):
grewAtLeastOne = True
@@ -331,7 +331,7 @@ def optimizeMesh(self):
biggest = len(self.polyToVerts[p])
biggestPoly = p
- print "Most verts in a single poly: ", biggest
+ print("Most verts in a single poly: ", biggest)
assert biggest < 256
@@ -345,7 +345,7 @@ def _cleanPoly(self, polyId):
newAngles = []
newNeighbors = []
- for i in xrange(numVerts):
+ for i in range(numVerts):
if (angles[i] != 180) or \
(len(self.vertToPolys.get(verts[i],[])) > 2) or \
(neighbors[i] != neighbors[(i-1)%numVerts]):
@@ -367,15 +367,15 @@ def _cleanPoly(self, polyId):
def _pruneExtraVerts(self):
- print "Pruning extra vertices..."
- print "Starting verts: %s" % len(self.vertToPolys)
- for polyId in self.connectionLookup.keys():
+ print("Pruning extra vertices...")
+ print("Starting verts: %s" % len(self.vertToPolys))
+ for polyId in list(self.connectionLookup.keys()):
self._cleanPoly(polyId)
- print "Ending verts: %s" % len(self.vertToPolys)
+ print("Ending verts: %s" % len(self.vertToPolys))
def _compactPolyIds(self):
- polyList = self.polyToVerts.keys()
+ polyList = list(self.polyToVerts.keys())
polyList.sort()
oldToNewId = {None:None}
@@ -395,7 +395,7 @@ def _compactPolyIds(self):
newPolyToVerts[oldToNewId[oldId]] = self.polyToVerts[oldId]
newPolyToAngles[oldToNewId[oldId]] = self.polyToAngles[oldId]
#self.connections[oldToNewId[oldId]] = []
- for edgeNum in xrange(len(self.connectionLookup[oldId])):
+ for edgeNum in range(len(self.connectionLookup[oldId])):
self.connections[oldToNewId[oldId]].append( oldToNewId[self.connectionLookup[oldId][edgeNum]] )
self.polyToVerts = newPolyToVerts
@@ -608,7 +608,7 @@ def _findAllRoutesToGoal(self, goalNode):
openQueue.push((nodeToG[neighbor],neighbor))
- for startNode in xrange(len(self.connections)):
+ for startNode in range(len(self.connections)):
departingEdge = walkBack[startNode][0]
assert self.pathData[startNode][goalNode] is None
@@ -631,7 +631,7 @@ def generatePathData(self,rowRange=None):
self.initPathData()
- for goalNode in xrange(rowRange[0],rowRange[1]):
+ for goalNode in range(rowRange[0],rowRange[1]):
self._findAllRoutesToGoal(goalNode)
@@ -651,11 +651,11 @@ def createPathTable(self):
self.pathData = []
# Run-Length Encode the whole thing!
- for start in xrange(self.numNodes):
+ for start in range(self.numNodes):
row = []
lastVal = None
nodesInRow = 0
- for goal in xrange(self.numNodes):
+ for goal in range(self.numNodes):
val = shortestPathLookup[start][goal]
if val != lastVal:
row.append([goal,val])
@@ -695,13 +695,13 @@ def printPathData(self):
def initPathData(self):
self.pathData = []
- for i in xrange(self.numNodes):
+ for i in range(self.numNodes):
self.pathData.append([None,]*self.numNodes)
def addPaths(self, partialData):
- for i in xrange(len(partialData)):
- for j in xrange(len(partialData[i])):
+ for i in range(len(partialData)):
+ for j in range(len(partialData[i])):
if partialData[i][j] is not None:
assert self.pathData[i][j] is None
self.pathData[i][j] = partialData[i][j]
@@ -854,7 +854,7 @@ def writeToFile(self, filename, storePathTable=True):
protocol=2)
f.close()
- print "Successfully wrote to file %s." % filename
+ print("Successfully wrote to file %s." % filename)
def _initFromString(self, str):
@@ -887,7 +887,7 @@ def _initFromFilename(self, filepath, filename):
found = vfs.resolveFilename(filename,searchPath)
if not found:
- raise IOError, "File not found!"
+ raise IOError("File not found!")
str = vfs.readFile(filename,1)
diff --git a/otp/src/navigation/NavigationManager.py b/otp/src/navigation/NavigationManager.py
index 8936dd03..2c7bdea0 100644
--- a/otp/src/navigation/NavigationManager.py
+++ b/otp/src/navigation/NavigationManager.py
@@ -1,7 +1,7 @@
import string
import md5
import subprocess
-import cPickle as pickle
+import pickle as pickle
import time
import os
@@ -79,7 +79,7 @@ def _getEnvironmentHash(self, env):
node = np.node()
if node.getIntoCollideMask() & OTPGlobals.WallBitmask != BitMask32.allOff():
- for i in xrange(node.getNumSolids()):
+ for i in range(node.getNumSolids()):
s = node.getSolid(i)
monsterData.append( str(s) )
@@ -154,7 +154,7 @@ def addEnvironment(self, env, performHashCheck=True):
assert self.notify.debug("Farming rows out to %s slaves:" % numProcs)
- for i in xrange(numProcs):
+ for i in range(numProcs):
if rowsLeft < rowsPerProc*2:
assert i == numProcs-1
todo = rowsLeft
@@ -225,13 +225,13 @@ def gogogo():
def randomlookups():
import random
import time
- mesh = simbase.air.navMgr.meshes.values()[0]
+ mesh = list(simbase.air.navMgr.meshes.values())[0]
assert self.notify.debug("Timing lookups...")
routeList = []
- for i in xrange(1000000):
+ for i in range(1000000):
routeList.append((random.randint(0,mesh.numNodes-1),random.randint(0,mesh.numNodes-1)))
t1 = time.time()
@@ -252,15 +252,15 @@ def randomlookups():
def routelookups():
import time
- mesh = simbase.nm.meshes.values()[0]
+ mesh = list(simbase.nm.meshes.values())[0]
assert self.notify.debug("Timing lookups...")
t1 = time.time()
i = 0
- for i in xrange(mesh.numNodes):
- for j in xrange(mesh.numNodes):
+ for i in range(mesh.numNodes):
+ for j in range(mesh.numNodes):
route = mesh.pathTable.findRoute(i,j)
t2 = time.time()
@@ -277,14 +277,14 @@ def intersectiontest():
s = set()
t = set()
- for i in xrange(0,2500):
+ for i in range(0,2500):
s.add(i)
- for i in xrange(2000,4000):
+ for i in range(2000,4000):
t.add(i)
t1 = time.time()
- for i in xrange(1000000):
+ for i in range(1000000):
s.intersection(t)
t2 = time.time()
@@ -300,7 +300,7 @@ def addtest():
t1 = time.time()
- for i in xrange(1000000):
+ for i in range(1000000):
s.add(i)
t2 = time.time()
@@ -312,14 +312,14 @@ def addtest():
def findNodeTest():
import time
- mesh = simbase.nm.meshes.values()[0]
+ mesh = list(simbase.nm.meshes.values())[0]
pr = simbase.air.doFind("Port Royal")
mesh.makeNodeLocator(pr)
t1 = time.time()
- for i in xrange(10000):
+ for i in range(10000):
pId = mesh.findNodeFromPos(pr, 0.5, 0.5)
t2 = time.time()
diff --git a/otp/src/otpbase/OTPBase.py b/otp/src/otpbase/OTPBase.py
index 131de9d6..828b42ec 100644
--- a/otp/src/otpbase/OTPBase.py
+++ b/otp/src/otpbase/OTPBase.py
@@ -4,7 +4,7 @@
from direct.showbase.ShowBase import ShowBase
from pandac.PandaModules import Camera, TPLow, VBase4, ColorWriteAttrib, Filename, getModelPath, NodePath
-import OTPRender
+from . import OTPRender
import time
import math
import re
@@ -282,7 +282,7 @@ def __chasePixelZoom(self, task):
# Now set the pixel zoom according to the average feet per
# second the camera has moved over the past history seconds.
- dist = sum(map(lambda pair: pair[1], self.pixelZoomCamMovedList))
+ dist = sum([pair[1] for pair in self.pixelZoomCamMovedList])
speed = dist / self.pixelZoomCamHistory
if speed < 5:
diff --git a/otp/src/otpbase/OTPExceptionVarDump.py b/otp/src/otpbase/OTPExceptionVarDump.py
index 7444d20f..b732fc39 100644
--- a/otp/src/otpbase/OTPExceptionVarDump.py
+++ b/otp/src/otpbase/OTPExceptionVarDump.py
@@ -2,7 +2,7 @@
import base64
def _doPrint(s):
- print base64.b64encode(s)
+ print(base64.b64encode(s))
def install():
# make sure DIRECT print func is installed
diff --git a/otp/src/otpbase/OTPGlobals.py b/otp/src/otpbase/OTPGlobals.py
index c3f7694f..7966bad3 100644
--- a/otp/src/otpbase/OTPGlobals.py
+++ b/otp/src/otpbase/OTPGlobals.py
@@ -227,8 +227,8 @@ def setFancyFont(path):
def getNametagFont(index):
global NametagFonts
- if ((not NametagFonts.has_key(index) )or NametagFonts[index] == None):
- if (not NametagFontPaths.has_key(index) ) or (NametagFontPaths[index] == None):
+ if ((index not in NametagFonts )or NametagFonts[index] == None):
+ if (index not in NametagFontPaths ) or (NametagFontPaths[index] == None):
InterfaceFont = TextNode.getDefaultFont()
NametagFonts[index] = TextNode.getDefaultFont()
else:
diff --git a/otp/src/otpbase/OTPLocalizer.py b/otp/src/otpbase/OTPLocalizer.py
index 36a85456..ba16eca9 100644
--- a/otp/src/otpbase/OTPLocalizer.py
+++ b/otp/src/otpbase/OTPLocalizer.py
@@ -7,7 +7,7 @@
# Do not import panda modules because it is not downloaded until Phase 3
# This file is in phase 2
-from pandac.libpandaexpressModules import *
+from pandac.PandaModules import *
import string
import types
@@ -25,15 +25,15 @@
# Ask what language we are running in. Returns a string.
def getLanguage():
return language
-
-print ("OTPLocalizer: Running in language: %s" % (language))
+
+print(("OTPLocalizer: Running in language: %s" % (language)))
if language == "english":
- _languageModule = "otp.otpbase.OTPLocalizer" + string.capitalize(language)
+ _languageModule = "otp.otpbase.OTPLocalizer" + language.capitalize()
else:
checkLanguage = 1
_languageModule = "otp.otpbase.OTPLocalizer_" + language
-print("from " + _languageModule + " import *")
+print(("from " + _languageModule + " import *"))
exec("from " + _languageModule + " import *")
if checkLanguage:
@@ -41,26 +41,26 @@ def getLanguage():
g = {}
englishModule = __import__("otp.otpbase.OTPLocalizerEnglish", g, l)
foreignModule = __import__(_languageModule, g, l)
- for key, val in englishModule.__dict__.items():
- if not foreignModule.__dict__.has_key(key):
- print ("WARNING: Foreign module: %s missing key: %s" % (_languageModule, key))
+ for key, val in list(englishModule.__dict__.items()):
+ if key not in foreignModule.__dict__:
+ print(("WARNING: Foreign module: %s missing key: %s" % (_languageModule, key)))
# Add the english version to our local namespace so we do not crash
locals()[key] = val
else:
# The key is in both files, but if it is a dictionary we
# should go one step further and make sure the individual
# elements also match.
- if isinstance(val, types.DictType):
+ if isinstance(val, dict):
fval = foreignModule.__dict__.get(key)
- for dkey, dval in val.items():
- if not fval.has_key(dkey):
- print ("WARNING: Foreign module: %s missing key: %s.%s" % (_languageModule, key, dkey))
+ for dkey, dval in list(val.items()):
+ if dkey not in fval:
+ print(("WARNING: Foreign module: %s missing key: %s.%s" % (_languageModule, key, dkey)))
fval[dkey] = dval
- for dkey in fval.keys():
- if not val.has_key(dkey):
- print ("WARNING: Foreign module: %s extra key: %s.%s" % (_languageModule, key, dkey))
-
-
- for key in foreignModule.__dict__.keys():
- if not englishModule.__dict__.has_key(key):
- print ("WARNING: Foreign module: %s extra key: %s" % (_languageModule, key))
+ for dkey in list(fval.keys()):
+ if dkey not in val:
+ print(("WARNING: Foreign module: %s extra key: %s.%s" % (_languageModule, key, dkey)))
+
+
+ for key in list(foreignModule.__dict__.keys()):
+ if key not in englishModule.__dict__:
+ print(("WARNING: Foreign module: %s extra key: %s" % (_languageModule, key)))
diff --git a/otp/src/otpbase/OTPLocalizerEnglish.py b/otp/src/otpbase/OTPLocalizerEnglish.py
index 5908630d..bcd1109e 100644
--- a/otp/src/otpbase/OTPLocalizerEnglish.py
+++ b/otp/src/otpbase/OTPLocalizerEnglish.py
@@ -33,7 +33,7 @@
# DistributedAvatar.py
WhisperNoLongerFriend = "%s left your friends list."
-WhisperNowSpecialFriend = "%s is now your True Friend!"
+WhisperNowSpecialFriend = "%s is now your secret friend!"
WhisperComingToVisit = "%s is coming to visit you."
WhisperFailedVisit = "%s tried to visit you."
WhisperTargetLeftVisit = "%s has gone somewhere else. Try again!"
@@ -42,13 +42,6 @@
TeleportGreeting = "Hi, %s."
WhisperFriendComingOnline = "%s is coming online!"
WhisperFriendLoggedOut = "%s has logged out."
-WhisperPlayerOnline = "%s logged into %s"
-WhisperPlayerOffline = "%s is offline."
-WhisperUnavailable = "That player is no longer available for whispers."
-
-DialogSpecial = "ooo"
-DialogExclamation = "!"
-DialogQuestion = "?"
# ChatInputNormal.py
ChatInputNormalSayIt = "Say It"
@@ -61,53 +54,46 @@
SCEmoteNoAccessOK = lOK
ParentLogin = "Parent Login"
-ParentPassword = "Parent Account Password"
+ParentPassword = "Parent Password"
# ChatGarbler.py
ChatGarblerDefault = ["blah"]
# ChatManager.py
-ChatManagerChat = "Chat"
-ChatManagerWhisperTo = "Whisper to:"
-ChatManagerWhisperToName = "Whisper To:\n%s"
+ChatManagerChat = 'Chat'
+ChatManagerWhisperTo = 'Whisper to:'
+ChatManagerWhisperToName = 'Whisper To:\n%s'
ChatManagerCancel = lCancel
-ChatManagerWhisperOffline = "%s is offline."
-OpenChatWarning = 'To become True Friends with somebody, click on them, and select "True Friends" from the detail panel.\n\nSpeedChat Plus can also be enabled, which allow users to chat by typing words found in the Disney SpeedChat Plus dictionary.\n\nTo activate these features or to learn more, exit Toontown and then click on Membership and select Manage Account. Log in to edit your "Community Settings."\n\nIf you are under 18, you need a Parent Account to manage these settings.'
+ChatManagerWhisperOffline = '%s is offline.'
+OpenChatWarning = 'You don\'t have any "Secret Friends" yet! You cannot chat with other Toons unless they are your Secret Friends.\n\nTo become Secret Friends with somebody, click on them, and select "Secrets" from the detail panel. Of course, you can always talk to anybody with SpeedChat.'
OpenChatWarningOK = lOK
UnpaidChatWarning = 'Once you have subscribed, you can use this button to chat with your friends using the keyboard. Until then, you should chat with other Toons using SpeedChat.'
-UnpaidChatWarningPay = "Subscribe"
-UnpaidChatWarningContinue = "Continue Free Trial"
-PaidNoParentPasswordWarning = 'Use this button to chat with your friends by using the keyboard, enable it through your Account Manager on the Toontown Web site. Until then, you can chat by using SpeedChat.'
-UnpaidNoParentPasswordWarning = 'This is for SpeedChat Plus, which allows users to chat by typing words found in the Disney SpeedChat Plus dictionary. To activate this feature, exit Toontown and click on Membership. Select Manage Account and log in to edit your "Community Settings." If you are under 18, you need a Parent Account to manage these settings.'
-PaidNoParentPasswordWarningSet = "Set Your Community Settings Now!"
-PaidNoParentPasswordWarningContinue = "Continue Playing Game"
+UnpaidChatWarningPay = 'Subscribe Now!'
+UnpaidChatWarningContinue = 'Continue Free Trial'
+PaidNoParentPasswordWarning = 'Once you have set your parent password, you can enable this button to chat with your friends using the keyboard. Until then, you should chat with other Toons using SpeedChat.'
+PaidNoParentPasswordWarningSet = 'Set Parent Password Now!'
+PaidNoParentPasswordWarningContinue = 'Continue Playing Game'
PaidParentPasswordUKWarning = 'Once you have Enabled Chat, you can enable this button to chat with your friends using the keyboard. Until then, you should chat with other Toons using SpeedChat.'
-PaidParentPasswordUKWarningSet = "Enable Chat Now!"
-PaidParentPasswordUKWarningContinue = "Continue Playing Game"
-NoSecretChatWarningTitle = "Parental Controls"
-NoSecretChatWarning = 'To chat with a friend, the True Friends feature must first be enabled. Kids, have your parent visit the Toontown Web site to learn about True Friends.'
-RestrictedSecretChatWarning = 'To get or enter a True Friend Code, log in with the Parent Account. You can disable this prompt by changing your True Friends options.'
+PaidParentPasswordUKWarningSet = 'Enable Chat Now!'
+PaidParentPasswordUKWarningContinue = 'Continue Playing Game'
+NoSecretChatWarningTitle = 'Parental Controls'
+NoSecretChatWarning = 'To chat with a friend, the Secret Friends feature must first be enabled. Kids, have your parent log in with their Parent Password to learn about Secret Friends.'
+RestrictedSecretChatWarning = 'To get or enter a secret, you must enter the Parent Password. You can disable this prompt by changing your Secret Friends options.'
NoSecretChatWarningOK = lOK
NoSecretChatWarningCancel = lCancel
-NoSecretChatWarningWrongPassword = 'That\'s not the correct Parent Account. Please log in with the Parent Account that is linked to this account.'
-NoSecretChatAtAllTitle = "Open Chat With True Friends"
-# not sure what this should do in the new world order
-NoSecretChatAtAll = 'Open Chat with True Friends allows real-life friends to chat openly with each other by means of a True Friend Code that must be shared outside of the game.\n\nTo activate these features or to learn more, exit Toontown and then click on Membership and select Manage Account. Log in to edit your "Community Settings." If you are under 18, you need a Parent Account to manage these settings.'
-NoSecretChatAtAllAndNoWhitelistTitle = "Chat button"
+NoSecretChatWarningWrongPassword = "That's not the correct password. Please enter the Parent Password created when purchasing this account. This is not the same password used to play the game."
+NoSecretChatAtAllTitle = 'Secret Friends Chat'
# not sure what this should do in the new world order
-NoSecretChatAtAllAndNoWhitelist = 'You can use the blue Chat button to communicate with other Toons by using Speechat Plus or Open Chat with True Friends.\n\nSpeedchat Plus is a form of type chat that allows users to communicate by using the Disney SpeedChat Plus dictionary.\n\nOpen Chat with True Friends allows real-life friends to chat openly with each other by means of a True Friend Code that must be shared outside of the game.\n\nTo activate these features or to learn more, exit Toontown and then click on Membership and select Manage Account. Log in to edit your "Community Settings." If you are under 18, you need a Parent Account to manage these settings.'
+NoSecretChatAtAll = 'To chat with a friend, the Secret Friends feature must first be enabled. Secret Friends allows one member to chat with another member only by means of a secret code that must be communicated outside of the game.\n\nTo activate this feature or to learn more about it, exit Toontown and then click on "Account Options" on the Toontown web page.'
NoSecretChatAtAllOK = lOK
-ChangeSecretFriendsOptions = "Change True Friends Options"
-ChangeSecretFriendsOptionsWarning = '\nPlease enter the Parent Account Password to change your True Friends options.'
-ActivateChatTitle = "True Friends Options"
+ChangeSecretFriendsOptions = 'Change Secret Friends Options'
+ChangeSecretFriendsOptionsWarning = "\nPlease enter the Parent Password to change your Secret Friends options."
+ActivateChatTitle = "Secret Friends Options"
WhisperToFormat = "To %s %s"
WhisperToFormatName = "To %s"
WhisperFromFormatName = "%s whispers"
-ThoughtOtherFormatName = "%s thinks"
-ThoughtSelfFormatName = "You think"
-
from pandac.PandaModules import TextProperties
from pandac.PandaModules import TextPropertiesManager
@@ -120,111 +106,42 @@
red.setTextColor(1,0,0,1)
TextPropertiesManager.getGlobalPtr().setProperties('red', red)
-green = TextProperties()
-green.setTextColor(0,1,0,1)
-TextPropertiesManager.getGlobalPtr().setProperties('green', green)
-
-yellow = TextProperties()
-yellow.setTextColor(1,1,0,1)
-TextPropertiesManager.getGlobalPtr().setProperties('yellow', yellow)
-
-midgreen = TextProperties()
-midgreen.setTextColor(0.2,1,0.2,1)
-TextPropertiesManager.getGlobalPtr().setProperties('midgreen', midgreen)
-
-blue = TextProperties()
-blue.setTextColor(0,0,1,1)
-TextPropertiesManager.getGlobalPtr().setProperties('blue', blue)
-
-white = TextProperties()
-white.setTextColor(1,1,1,1)
-TextPropertiesManager.getGlobalPtr().setProperties('white', white)
-
-black = TextProperties()
-black.setTextColor(0,0,0,1)
-TextPropertiesManager.getGlobalPtr().setProperties('black', black)
+ActivateChat = """Secret Friends allows one member to chat with another member only by means of a secret Code that must be communicated outside of the game. Secret Friends is not moderated or supervised.
-grey = TextProperties()
-grey.setTextColor(0.5, 0.5, 0.5, 1)
-TextPropertiesManager.getGlobalPtr().setProperties('grey', grey)
+Please choose one of Toontown's Secret Friends options:
-ActivateChat = """True Friends allows one member to chat with another member only by means of a True Friend Code that must be communicated outside of the game. True Friends is not moderated or supervised.
-
-Please choose one of Toontown's True Friends options:
-
- \1shadow\1No True Friends\2 - Ability to make True Friends is disabled.
+ \1shadow\1No Secret Friends\2 - Ability to make Secret Friends is disabled.
This offers the highest level of control.
- \1shadow\1Restricted True Friends\2 - Requires the Parent Account Password to make
- each new True Friend.
+ \1shadow\1Restricted Secret Friends\2 - Requires the Parent Password to make
+ each new Secret Friend.
- \1shadow\1Unrestricted True Friends\2 - Once enabled with the Parent Account Password,
- it is not required to supply the Parent Account Password to make each new
- True Friend. \1red\1This option is not recommended for children under 13.\2
+ \1shadow\1Unrestricted Secret Friends\2 - Once enabled with the Parent Password,
+ it is not required to supply the Parent Password to make each new
+ Secret Friend. \1red\1This option is not recommended for children under 13.\2
-By enabling the True Friends feature, you acknowledge that there are some risks inherent in the True Friends feature and that you have been informed of, and agree to accept, any such risks."""
+By enabling the Secret Friends feature, you acknowledge that there are some risks inherent in the Secret Friends feature and that you have been informed of, and agree to accept, any such risks."""
ActivateChatYes = "Update"
ActivateChatNo = lCancel
ActivateChatMoreInfo = "More Info"
-ActivateChatPrivacyPolicy = "Privacy Policy"
-
-ActivateChatPrivacyPolicy_Button1A = "Version 1"
-ActivateChatPrivacyPolicy_Button1K = "Version 1"
-ActivateChatPrivacyPolicy_Button2A = "Version 2"
-ActivateChatPrivacyPolicy_Button2K = "Version 2"
-
-PrivacyPolicyText_1A = [""" """]
-PrivacyPolicyText_1K = [""" """]
-PrivacyPolicyText_2A = [""" """]
-PrivacyPolicyText_2K = [""" """]
-PrivacyPolicyText_Intro = [""" """]
-PrivacyPolicyClose = lClose
# SecretFriendsInfoPanel.py
SecretFriendsInfoPanelOk = lOK
SecretFriendsInfoPanelClose = lClose
-SecretFriendsInfoPanelText = ["""
-The Open Chat with True Friends Feature
-
-The Open Chat with True Friends feature enables a member to chat directly with another member within Disney's Toontown Online (the "Service") once the members establish a True Friends connection. When your child attempts to use the Open Chat with True Friends feature, we will require that you indicate your consent to your child's use of this feature by entering your Parent Account Password. Here is a detailed description of the process of creating an Open Chat with True Friends connection between members whom we will call "Sally" and "Mike."
-1. Sally's parent and Mike's parent each enable the Open Chat with True Friends feature by entering their respective Parent Account Passwords either (a) in the Account Options areas within the Service, or (b) when prompted within the game by a Parental Controls pop-up.
-2. Sally requests a True Friend Code (described below) from within the Service.
-""","""
-3. Sally's True Friend Code is communicated to Mike outside of the Service. (Sally's True Friend Code may be communicated to Mike either directly by Sally, or indirectly through Sally's disclosure of the True Friend Code to another person.)
-4. Mike submits Sally's True Friend Code to the Service within 48 hours of the time that Sally requested the True Friend Code from the Service.
-5. The Service then notifies Mike that Sally has become Mike's True Friend. The Service similarly notifies Sally that Mike has become Sally's True Friend.
-6. Sally and Mike can now open chat directly with each other until either one chooses to terminate the other as a True Friend, or until the Open Chat with True Friends feature is disabled for either Sally or Mike by their respective parent. The True Friends connection can thus be disabled anytime by either: (a) a member removing the True Friend from his or her friends list (as described in the Service); or, (b) the parent of that member disabling the Open Chat with ""","""
-True Friends feature by going to the Account Options area within the Service and following the steps set forth there.
-
-A True Friend Code is a computer-generated random code assigned to a particular member. The True Friend Code must be used to activate a True Friend connection within 48 hours of the time that the member requests the True Friend Code; otherwise, the True Friend Code expires and cannot be used. Moreover, a single True Friend Code can only be used to establish one True Friend connection. To make additional True Friend connections, a member must request an additional True Friend Code for each additional True Friend.
-
-True Friendships do not transfer. For example, if Sally becomes a True Friend of Mike, and Mike becomes a True Friend of Jessica, Sally does not automatically become Jessica's True Friend. In order for Sally and Jessica to
-""","""
-become True Friends, one of them must request a new True Friend Code from the Service and communicate it to the other.
-
-True Friends communicate with one another in a free-form interactive open chat. The content of this chat is directly entered by the participating member and is processed through the Service, which is operated by the Walt Disney Internet Group ("WDIG"), 500 S. Buena Vista St., Burbank, CA 91521-7691. While we advise members not to exchange personal information such as first and last names, e-mail addresses, postal addresses, or phone numbers while using Open Chat with True Friends, we cannot guarantee that such exchanges of personal information will not happen. Although the True Friends chat is automatically filtered for most bad words, Open Chat with True Friends may be moderated, and Disney reserves the right to moderate any part of the Service that Disney,
-""","""
-in its sole and absolute discretion, deems necessary. However, because Open Chat with True Friends will not always be moderated, if the Parent Account allows a child to use his or her account with the Open Chat with True Friends feature enabled, we strongly encourage parents to supervise their child or children while they play in the Service. By enabling the Open Chat with True Friends feature, the Parent Account acknowledges that there are some risks inherent in the Open Chat with True Friends feature and that the Parent Account has been informed of, and agrees to accept, any such risks, whether foreseeable or otherwise.
-
-WDIG does not use the content of True Friends chat for any purpose other than communicating that content to the member's true friend, and does not disclose that content to any third party except: (1) if required by law, for example, to comply with a court order or subpoena; (2) to enforce the Terms of Use
-""","""
-applicable to the Service (which may be accessed on the home page of the Service); or, (3) to protect the safety and security of Members of the Service and the Service itself. In accordance with the Children's Online Privacy Protection Act, we are prohibited from conditioning, and do not condition, a child's participation in any activity (including Open Chat with True Friends) on the child's disclosing more personal information than is reasonably necessary to participate in such activity.
-
-In addition, as noted above, we recognize the right of a parent to refuse to permit us to continue to allow a child to use the True Friends feature. By enabling the Open Chat with True Friends feature, you acknowledge that there are some risks inherent in the ability of members to open chat with one another through the Open Chat with True Friends feature, and that you have been informed of, and agree to accept, any such risks, whether foreseeable or otherwise.
-"""
+SecretFriendsInfoPanelText = [""" The Secret Friends Feature The Secret Friends feature enables a member to chat directly with another member within Disney\'s Toontown Online (the "Service") once the members establish a Secret Friends connection. When your child attempts to use the Secret Friends feature, we will require that you indicate your consent to your child\'s use of this feature by entering your Parent Password. Here is a detailed description of the process of creating a Secret Friends connection between members whom we will call "Sally" and "Mike." 1. Sally\'s parent and Mike\'s parent each enable the Secret Friends feature by entering their respective Parent Passwords either (a) in the Account Options areas within the Service, or (b) when prompted within the game by a Parental Controls pop-up. 2. Sally requests a Secret (described below) from within the Service.""", """ 3. Sally's Secret is communicated to Mike outside of the Service. (Sally's Secret may be communicated to Mike either directly by Sally, or indirectly through Sally's disclosure of the Secret to another person.) 4. Mike submits Sally's Secret to the Service within 48 hours of the time that Sally requested the Secret from the Service. 5. The Service then notifies Mike that Sally has become Mike's Secret Friend. The Service similarly notifies Sally that Mike has become Sally's Secret Friend.\n6. Sally and Mike can now chat directly with each other until either one chooses to terminate the other as a Secret Friend, or until the Secret Friends feature is disabled for either Sally or Mike by their respective parent. The Secret Friends connection can thus be disabled anytime by either: (a) a member removing the Secret Friend from his or her friends list (as described in the Service); or, (b) the parent of that member disabling the Secret Friends feature by going to the Account Options area within the Service and following the steps set forth there. """, """ A Secret is a computer-generated random code assigned to a particular member. The Secret must be used to activate a Secret Friend connection within 48 hours of the time that the member requests the Secret; otherwise, the Secret expires and cannot be used. Moreover, a single Secret can only be used to establish one Secret Friend connection. To make additional Secret Friend connections, a member must request an additional Secret for each additional Secret Friend. Secret Friendships do not transfer. For example, if Sally becomes a Secret Friend of Mike, and Mike becomes a Secret Friend of Jessica, Sally does not automatically become Jessica's Secret Friend. In order for Sally and Jessica to become Secret Friends, one of them must request a new Secret from the Service and communicate it to the other. """, """ Secret Friends communicate with one another in a free-form interactive chat. The content of this chat is directly entered by the participating member and is processed through the Service, which is operated by the Walt Disney Internet Group ("WDIG"), 506 2nd Avenue, Suite 2100, Seattle, WA 98104 (telephone (509) 742-4698; email ms_support@help.go.com). While we advise members not to exchange personal information such as first and last names, e-mail addresses, postal addresses, or phone numbers while using Secret Friends, we cannot guarantee that such exchanges of personal information will not happen. Although the Secret Friends chat is automatically filtered for most bad words, it is not moderated or supervised by us. If parents allow their children to use their account with the Secret Friends feature enabled, we encourage parents to supervise their children while they play in the Service. """, """ WDIG does not use the content of Secret Friends chat for any purpose other than communicating that content to the member's secret friend, and does not disclose that content to any third party except: (1) if required by law, for example, to comply with a court order or subpoena; (2) to enforce the Terms of Use applicable to the Service (which may be accessed on the home page of the Service); or, (3) to protect the safety and security of Members of the Service and the Service itself. Upon request to WDIG, a child's parent can review and have deleted any Secret Friends chat content supplied by that child, provided that such chat content has not already been deleted by WDIG from its files. In accordance with the Children's Online Privacy Protection Act, we are prohibited from conditioning, and do not condition, a child's participation in any activity (including Secret Friends) on the child's disclosing more personal information than is reasonably necessary to participate in such activity. """, """ In addition, as noted above, we recognize the right of a parent to refuse to permit us to continue to allow a child to use the Secret Friends feature. By enabling the Secret Friends feature, you acknowledge that there are some risks inherent in the ability of members to chat with one another through the Secret Friends feature, and that you have been informed of, and agree to accept, any such risks. """
]
-LeaveToPay = """Click Purchase to exit the game and buy a Membership at toontown.com"""
+LeaveToPay = """In order to purchase, the game will exit to the Toontown website."""
LeaveToPayYes = "Purchase"
LeaveToPayNo = lCancel
-LeaveToSetParentPassword = """In order to set parent account password, the game will exit to the Toontown website."""
+LeaveToSetParentPassword = """In order to set Parent Password, the game will exit to the Toontown website."""
LeaveToSetParentPasswordYes = "Set Password"
LeaveToSetParentPasswordNo = lCancel
@@ -233,12 +150,12 @@
LeaveToEnableChatUKNo = lCancel
ChatMoreInfoOK = lOK
-SecretChatDeactivated = 'The "True Friends" feature has been disabled.'
-RestrictedSecretChatActivated = 'The "Restricted True Friends" feature has been enabled!'
-SecretChatActivated = 'The "Unrestricted True Friends" feature has been enabled!'
+SecretChatDeactivated = 'The "Secret Friends" feature has been disabled.'
+RestrictedSecretChatActivated = 'The "Restricted Secret Friends" feature has been enabled!'
+SecretChatActivated = 'The "Unrestricted Secret Friends" feature has been enabled!'
SecretChatActivatedOK = lOK
SecretChatActivatedChange = "Change Options"
-ProblemActivatingChat = 'Oops! We were unable to activate the "True Friends" chat feature.\n\n%s\n\nPlease try again later.'
+ProblemActivatingChat = 'Oops! We were unable to activate the "Secret Friends" chat feature.\n\n%s\n\nPlease try again later.'
ProblemActivatingChatOK = lOK
# MultiPageTextFrame.py
@@ -273,19 +190,17 @@
CRNoConnectProxyNoPort = "Could not connect to %s:%s.\n\nYou are communicating to the internet via a proxy, but your proxy does not permit connections on port %s.\n\nYou must open up this port, or disable your proxy, in order to play. If your proxy has been provided by your ISP, you must contact your ISP to request them to open up this port."
CRMissingGameRootObject = """Missing some root game objects. (May be a failed network connection).\n\nTry again?"""
CRNoDistrictsTryAgain = "No Districts are available. Try again?"
-CRRejectRemoveAvatar = "The avatar was not able to be deleted, try again another time."
CRLostConnection = "Your internet connection to the servers has been unexpectedly broken."
CRBootedReasons = {
1: "An unexpected problem has occurred. Your connection has been lost, but you should be able to connect again and go right back into the game.",
100: "You have been disconnected because someone else just logged in using your account on another computer.",
120: "You have been disconnected because of a problem with your authorization to use keyboard chat.",
122: "There has been an unexpected problem logging you in. Please contact customer support.",
- 125: "Your installed files appear to be invalid. Please use the Play button on the official website to run.",
+ 125: "Your installed Toontown files appear to be invalid. Please use the Play button on the official website to run.",
126: "You are not authorized to use administrator privileges.",
- 127: "A problem has occurred with your Toon. Please contact Member Services via phone, email or live chat and reference Error Code 127. Thank you.",
151: "You have been logged out by an administrator working on the servers.",
152: "There has been a reported violation of our Terms of Use connected to '%(name)s'. For more details, please review the message sent to the e-mail address associated with '%(name)s'.",
- 153: "The district you were playing on has been reset. Everyone who was playing on that district has been disconnected. However, you should be able to connect again and go right back into the game.",
+ 153: "The Tontown district you were playing on has been reset. Everyone who was playing on that district has been disconnected. However, you should be able to connect again and go right back into the game.",
288: "Sorry, you have used up all of your available minutes this month.",
349: "Sorry, you have used up all of your available minutes this month.",
}
@@ -302,13 +217,8 @@
CRServerDateTryAgain = "Could not get server date from %s. Try again?"
AfkForceAcknowledgeMessage = "Your toon got sleepy and went to bed."
PeriodTimerWarning = "Your available time is almost over!"
-PeriodForceAcknowledgeMessage = "Sorry, you have used up all of your available time. Please exit to purchase more."
-CREnteringToontown = "Entering..."
-
-# DownloadWatcher.py
-# phase, percent
-DownloadWatcherUpdate = "Downloading %s"
-DownloadWatcherInitializing = "Download Initializing..."
+PeriodForceAcknowledgeMessage = "You have used up all of your available minutes in Toontown this month. Come back and play some more next month!"
+CREnteringToontown = "Entering Toontown..."
# LoginScreen.py
LoginScreenUserName = "Account Name"
@@ -341,7 +251,6 @@
GlobalSpeedChatName = "SpeedChat"
# Toontown Speedchat
-SCMenuPromotion = "PROMOTIONAL"
SCMenuElection = "ELECTION"
SCMenuEmotions = "EMOTIONS"
SCMenuCustom = "MY PHRASES"
@@ -366,11 +275,7 @@
SCMenuCFOBattle = "C.F.O."
SCMenuCFOBattleCranes = "CRANES"
SCMenuCFOBattleGoons = "GOONS"
-SCMenuCJBattle = "CHIEF JUSTICE"
-SCMenuCEOBattle = "C.E.O."
-SCMenuGolf = "GOLF"
-SCMenuWhiteList = "WHITELIST"
-SCMenuPlacesPlayground = "PLAYGROUND"
+SCMenuPlacesPlayground = "PLAYGROUND"
SCMenuPlacesEstate = "ESTATE"
SCMenuPlacesCogs = "COGS"
SCMenuPlacesWait = "WAIT"
@@ -383,118 +288,49 @@
SCMenuBattleGags = "GAGS"
SCMenuBattleTaunts = "TAUNTS"
SCMenuBattleStrategy = "STRATEGY"
-SCMenuBoardingGroup = "BOARDING"
-SCMenuParties = "PARTIES"
-SCMenuAprilToons = "APRIL TOONS'"
-SCMenuSingingGroup = "SINGING"
-SCMenuSillyHoliday = "SILLY METER"
-SCMenuVictoryParties = "VICTORY PARTIES"
# FriendSecret.py
FriendSecretNeedsPasswordWarningTitle = "Parental Controls"
-FriendSecretNeedsParentLoginWarning = """To get or enter a True Friend Code, log in with the Parent Account. You can disable this prompt by changing your True Friend options."""
-FriendSecretNeedsPasswordWarning = """To get or enter a True Friend Code, you must enter the Parent Account Password. You can disable this prompt by changing your True Friends options."""
+FriendSecretNeedsPasswordWarning = """To get or enter a Secret, you must enter the Parent Password. You can disable this prompt by changing your Secrets options."""
FriendSecretNeedsPasswordWarningOK = lOK
FriendSecretNeedsPasswordWarningCancel = lCancel
-FriendSecretNeedsPasswordWarningWrongUsername = """That's not the correct username. Please enter the username of the parental account. This is not the same username used to play the game."""
FriendSecretNeedsPasswordWarningWrongPassword = """That's not the correct password. Please enter the password of the parental account. This is not the same password used to play the game."""
-FriendSecretIntro = "If you are playing Disney's Toontown Online with someone you know in the real world, you can become True Friends. You can chat using the keyboard with your True Friends. Other Toons won't understand what you're saying.\n\nYou do this by getting a True Friend Code. Tell the True Friend Code to your friend, but not to anyone else. When your friend types in your True Friend Code on his or her screen, you'll be True Friends in Toontown!"
-FriendSecretGetSecret = "Get a True Friend Code"
-FriendSecretEnterSecret = "If you have a True Friend Code from someone you know, type it here."
+FriendSecretIntro = "If you are playing Disney's Toontown Online with someone you know in the real world, you can become Secrets. You can chat using the keyboard with your Secrets. Other Toons won't understand what you're saying.\n\nYou do this by getting a Secret. Tell the Secret to your friend, but not to anyone else. When your friend types in your Secret on his or her screen, you'll be Secrets Friends in Toontown!"
+FriendSecretGetSecret = "Get a Secret"
+FriendSecretEnterSecret = "If you have a Secret from someone you know, type it here."
FriendSecretOK = lOK
-FriendSecretEnter = "Enter True Friend Code"
+FriendSecretEnter = "Enter Secret"
FriendSecretCancel = lCancel
-FriendSecretGettingSecret = "Getting True Friend Code. . ."
-FriendSecretGotSecret = "Here is your new True Friend Code. Be sure to write it down!\n\nYou may give this True Friend Code to one person only. Once someone types in your True Friend Code, it will not work for anyone else. If you want to give a True Friend Code to more than one person, get another True Friend Code.\n\nThe True Friend Code will only work for the next two days. Your friend will have to type it in before it goes away, or it won't work.\n\nYour True Friend Code is:"
-FriendSecretTooMany = "Sorry, you can't have any more True Friend Codes today. You've already had more than your fair share!\n\nTry again tomorrow."
-FriendSecretTryingSecret = "Trying True Friend Code. . ."
-FriendSecretEnteredSecretSuccess = "You are now True Friends with %s!"
-FriendSecretTimeOut = "Sorry, secrets are not working right now."
-FriendSecretEnteredSecretUnknown = "That's not anyone's True Friend Code. Are you sure you spelled it correctly?\n\nIf you did type it correctly, it may have expired. Ask your friend to get a new True Friend Code for you (or get a new one yourself and give it to your friend)."
+FriendSecretGettingSecret = "Getting Secret. . ."
+FriendSecretGotSecret = "Here is your new Secret. Be sure to write it down!\n\nYou may give this Secret to one person only. Once someone types in your Secret, it will not work for anyone else. If you want to give a Secret to more than one person, get another Secret.\n\nThe Secret will only work for the next two days. Your friend will have to type it in before it goes away, or it won't work.\n\nYour Secret is:"
+FriendSecretTooMany = "Sorry, you can't have any more Secrets today. You've already had more than your fair share!\n\nTry again tomorrow."
+FriendSecretTryingSecret = "Trying Secret. . ."
+FriendSecretEnteredSecretSuccess = "You are now Secrets Friends with %s!"
+FriendSecretEnteredSecretUnknown = "That's not anyone's Secret. Are you sure you spelled it correctly?\n\nIf you did type it correctly, it may have expired. Ask your friend to get a new Secret for you (or get a new one yourself and give it to your friend)."
FriendSecretEnteredSecretFull = "You can't be friends with %s because one of you has too many friends on your friends list."
FriendSecretEnteredSecretFullNoName = "You can't be friends because one of you has too many friends on your friends list."
-FriendSecretEnteredSecretSelf = "You just typed in your own True Friend Code! Now no one else can use that True Friend Code."
-FriendSecretEnteredSecretWrongProduct = "You have entered the wrong type of True Friend Code.\nThis game uses codes that begin with '%s'."
-FriendSecretNowFriends = "You are now True Friends with %s!"
-FriendSecretNowFriendsNoName = "You are now True Friends!"
-FriendSecretDetermineSecret = "What type of True Friend would you like to make?"
-FriendSecretDetermineSecretAvatar = "Avatar"
-FriendSecretDetermineSecretAvatarRollover = "A friend only in this game"
-FriendSecretDetermineSecretAccount = "Account"
-FriendSecretDetermineSecretAccountRollover = "A friend across the Disney.com network"
-
-# GuildMember.py
-GuildMemberTitle = "Member Options"
-GuildMemberPromote = "Make Officer"
-GuildMemberGM = "Make Guildmaster"
-GuildMemberDemote = "Demote"
-GuildMemberKick = "Remove Member"
-GuildMemberCancel = lCancel
-GuildMemberOnline = "has come online."
-GuildMemberOffline = "has gone offline."
-GuildPrefix = "(G):"
-GuildNewMember = "New Guild Member"
-
-# GuildInvitee.py
-GuildInviteeOK = lOK
-GuildInviteeNo = lNo
-GuildInviteeInvitation = "%s is inviting you to join %s."
-
-GuildRedeemErrorInvalidToken = "Sorry, that code is invalid. Please try again."
-GuildRedeemErrorGuildFull = "Sorry, this guild has too many members already."
+FriendSecretEnteredSecretSelf = "You just typed in your own Secret! Now no one else can use that Secret."
+FriendSecretNowFriends = "You are now Secrets Friends with %s!"
+FriendSecretNowFriendsNoName = "You are now Secrets Friends!"
# FriendInvitee.py
FriendInviteeTooManyFriends = "%s would like to be your friend, but you already have too many friends on your list!"
FriendInviteeInvitation = "%s would like to be your friend."
-FriendInviteeInvitationPlayer = "%s\'s player would like to be your friend."
-FriendNotifictation = "%s is now your friend."
FriendInviteeOK = lOK
FriendInviteeNo = lNo
-GuildInviterWentAway = "%s is no longer present."
-GuildInviterAlready = "%s is already in a guild."
-GuildInviterBusy = "%s is busy right now."
-GuildInviterNotYet = "Invite %s to join your guild?"
-GuildInviterCheckAvailability = "Inviting %s to join your guild."
-GuildInviterOK = lOK
-GuildInviterNo = lNo
-GuildInviterCancel = lCancel
-GuildInviterYes = lYes
-GuildInviterTooFull = "Guild has reached maximum size."
-GuildInviterNo = lNo
-GuildInviterClickToon = "Click on the pirate you would like to invite."
-GuildInviterTooMany = "This is a bug"
-GuildInviterNotAvailable = "%s is busy right now; try again later."
-GuildInviterGuildSaidNo = "%s has declined your guild invitation."
-GuildInviterAlreadyInvited = "%s has already been invited."
-GuildInviterEndGuildship = "Remove %s from the guild?"
-GuildInviterFriendsNoMore = "%s has left the guild."
-GuildInviterSelf = "You are already in the guild!"
-GuildInviterIgnored = "%s is ignoring you."
-GuildInviterAsking = "Asking %s to join the guild."
-GuildInviterGuildSaidYes = "%s has joined the guild!"
# FriendInviter.py
-FriendOnline = "has come online."
-FriendOffline = "has gone offline."
FriendInviterOK = lOK
FriendInviterCancel = lCancel
FriendInviterStopBeingFriends = "Stop being friends"
-FriendInviterConfirmRemove = "Remove"
FriendInviterYes = lYes
FriendInviterNo = lNo
FriendInviterClickToon = "Click on the toon you would like to make friends with."
FriendInviterTooMany = "You have too many friends on your list to add another one now. You will have to remove some friends if you want to make friends with %s."
-FriendInviterToonTooMany = "You have too many toon friends on your list to add another one now. You will have to remove some toon friends if you want to make friends with %s."
-FriendInviterPlayerTooMany = "You have too many player friends on your list to add another one now. You will have to remove some player friends if you want to make friends with %s."
FriendInviterNotYet = "Would you like to make friends with %s?"
FriendInviterCheckAvailability = "Seeing if %s is available."
-FriendInviterNotAvailable = "%s is busy right now; try again later."
-FriendInviterCantSee = "This only works if you can see %s."
-FriendInviterNotOnline = "This only works if %s is online"
-FriendInviterNotOpen = "%s does not have open chat, use secrets to make friends"
FriendInviterWentAway = "%s went away."
FriendInviterAlready = "%s is already your friend."
-FriendInviterAlreadyInvited = "%s has already been invited."
FriendInviterAskingCog = "Asking %s to be your friend."
FriendInviterAskingPet = "%s jumps around, runs in circles and licks your face."
FriendInviterAskingMyPet = "%s is already your BEST friend."
@@ -504,33 +340,12 @@
FriendInviterIgnored = "%s is ignoring you."
FriendInviterAsking = "Asking %s to be your friend."
FriendInviterFriendSaidYes = "You are now friends with %s!"
-FriendInviterPlayerFriendSaidYes = "You are now friends with %s's player, %s!"
FriendInviterFriendSaidNo = "%s said no, thank you."
FriendInviterFriendSaidNoNewFriends = "%s isn't looking for new friends right now."
-FriendInviterOtherTooMany = "%s has too many friends already!"
+FriendInviterTooMany = "%s has too many friends already!"
FriendInviterMaybe = "%s was unable to answer."
FriendInviterDown = "Cannot make friends now."
-#Talk Path Labels
-TalkGuild = "G"
-TalkParty = "P"
-TalkPVP = "PVP"
-
-#Spam Blocked Message
-AntiSpamInChat = "***Spamming***"
-
-#IgnoreConfirm.py
-IgnoreConfirmOK = lOK
-IgnoreConfirmCancel = lCancel
-IgnoreConfirmYes = lYes
-IgnoreConfirmNo = lNo
-IgnoreConfirmNotYet = "Would you like to Ignore %s?"
-IgnoreConfirmAlready = "You are already ignoring %s."
-IgnoreConfirmSelf = "You cannot ignore yourself!"
-IgnoreConfirmNewIgnore = "You are ignoring %s."
-IgnoreConfirmEndIgnore = "You are no longer ignoring %s."
-IgnoreConfirmRemoveIgnore = "Stop ignoring %s?"
-
# Emote.py
# List of emotes in the order they should appear in the SpeedChat.
# Must be in the same order as the function list (EmoteFunc) in Emote.py
@@ -555,20 +370,6 @@
lYes,
lNo,
lOK,
- "Surprise",
- "Cry",
- "Delighted",
- "Furious",
- "Laugh",
-## "Sing Note G1",
-## "Sing Note A",
-## "Sing Note B",
-## "Sing Note C",
-## "Sing Note D",
-## "Sing Note E",
-## "Sing Note F",
-## "Sing Note G2",
-## "Sing Note Rest",
]
EmoteWhispers = [
@@ -589,15 +390,9 @@
"%s slips on a banana peel.",
"%s gives the resistance salute.",
"%s laughs.",
- "%s says '"+lYes+"'.",
- "%s says '"+lNo+"'.",
- "%s says '"+lOK+"'.",
- "%s is surprised.",
- "%s is crying.",
- "%s is delighted.",
- "%s is furious.",
- "%s is laughing.",
- "is singing note G1"
+ "%s says '"Yes"'.",
+ "%s says '"No"'.",
+ "%s says '"OK"'.",
]
# Reverse lookup: get the index from the name.
@@ -622,19 +417,6 @@
lYes : 17,
lNo : 18,
lOK : 19,
- "Surprise" : 20,
- "Cry" : 21,
- "Delighted" : 22,
- "Furious" : 23,
- "Laugh" : 24,
- "Sing Note G1" : 25,
- "Sing Note A" : 26,
- "Sing Note B" : 27,
- "Sing Note C" : 28,
- "Sing Note D" : 29,
- "Sing Note E" : 30,
- "Sing Note F" : 31,
- "Sing Note G2" : 32,
}
# SuitDialog.py
@@ -1040,7 +822,6 @@
1 : lYes,
2 : lNo,
3 : lOK,
- 4 : "SPEEDCHAT PLUS",
# Hello
100 : "Hi!",
@@ -1192,25 +973,16 @@
1108 : "Let's go to %s!" % lDaisyGardens,
1109 : "Let's go to %s!" % lTheBrrrgh,
1110 : "Let's go to %s!" % lDonaldsDreamland,
- 1111 : "Let's go to %s!" % lGoofySpeedway,
- 1112 : "Let's go to my house!",
- 1113 : "Let's go to your house!",
- 1114 : "Let's go to Sellbot HQ!",
- 1115 : "Let's go fight the VP!",
- 1116 : "Let's go in the Factory!",
- 1117 : "Let's go fishing!",
- 1118 : "Let's go fishing at my house!",
- 1119 : "Let's go to Cashbot HQ!",
- 1120 : "Let's go fight the CFO!",
- 1121 : "Let's go in the Mint!",
- 1122 : "Let's go to Lawbot HQ!",
- 1123 : "Let's go fight the Chief Justice!",
- 1124 : "Let's go in the District Attorney's Office!",
- 1125 : "Let's go to %s!" % lOutdoorZone,
- 1126 : "Let's go to %s!" % lGolfZone,
- 1127 : "Let's go to Bossbot HQ!",
- 1128 : "Let's go fight the CEO!",
- 1129 : "Let's go in the Cog Golf Courses!",
+ 1111 : "Let's go to my house!",
+ 1112 : "Let's go to your house!",
+ 1113 : "Let's go to Sellbot HQ!",
+ 1114 : "Let's go fight the VP!",
+ 1115 : "Let's go in the Factory!",
+ 1116 : "Let's go fishing!",
+ 1117 : "Let's go fishing at my house!",
+ 1118 : "Let's go to Cashbot HQ!",
+ 1119 : "Let's go fight the CFO!",
+ 1120 : "Let's go in the Mint!",
# Toontasks
1200 : "What ToonTask are you working on?",
@@ -1223,13 +995,6 @@
1207 : "I need more Sellbot Suit Parts.",
1208 : "This isn't what you need.",
1209 : "I found what you need.",
- 1210 : "I need more Cogbucks.",
- 1211 : "I need more Jury Notices.",
- 1212 : "I need more Stock Options.",
- 1213 : "I need more Cashbot Suit Parts.",
- 1214 : "I need more Lawbot Suit Parts.",
- 1215 : "I need more Bossbot Suit Parts.",
-
1299 : "I need to get a ToonTask.",
# Toontasks "I think you should choose..."
@@ -1419,250 +1184,7 @@
2130 : "Please save the treasures.",
2131 : "Take the treasures.",
2132 : "I need treasures!",
- 2133 : "Look out!",
-
- # CJ battle
- 2200 : "You need to hit the scale.",
- 2201 : "I will hit the scale.",
- 2202 : "I need help with the scale!",
- 2203 : "You need to stun the Cogs.",
- 2204 : "I will stun the Cogs.",
- 2205 : "I need help with the Cogs!",
- 2206 : "I need more evidence!",
- 2207 : "I'm shooting for chairs in the top row.",
- 2208 : "I'm shooting for chairs in the bottom row.",
- 2209 : "Move out of the way! We can't hit the pan.",
- 2210 : "I'll do Toon-Ups for us.",
- 2211 : "I don't have any bonus weight.",
- 2212 : "I have a bonus weight of 1.",
- 2213 : "I have a bonus weight of 2.",
- 2214 : "I have a bonus weight of 3.",
- 2215 : "I have a bonus weight of 4.",
- 2216 : "I have a bonus weight of 5.",
- 2217 : "I have a bonus weight of 6.",
- 2218 : "I have a bonus weight of 7.",
- 2219 : "I have a bonus weight of 8.",
- 2220 : "I have a bonus weight of 9.",
- 2221 : "I have a bonus weight of 10.",
- 2222 : "I have a bonus weight of 11.",
- 2223 : "I have a bonus weight of 12.",
-
- # CEO battle
- 2300 : "You feed the Cogs on the left.",
- 2301 : "I'll feed the Cogs on the left.",
- 2302 : "You feed the Cogs on the right.",
- 2303 : "I'll feed the Cogs on the right.",
- 2304 : "You feed the Cogs in the front.",
- 2305 : "I'll feed the Cogs in the front.",
- 2306 : "You feed the Cogs in the back.",
- 2307 : "I'll feed the Cogs in the back.",
- 2308 : "You use the seltzer bottle.",
- 2309 : "I'll use the seltzer bottle.",
- 2310 : "You use the golf tee.",
- 2311 : "I'll use the golf tee.",
- 2312 : "I'll serve this table.",
- 2313 : "Can you serve this table?",
- 2314 : "Feed the same cog again.",
- 2315 : "Hurry, your cog is hungry!",
- 2316 : "Please save the snacks for sadder toons.",
- 2317 : "Take the snacks before they fall.",
-
-
- #Kart Racing Phrases
- #IMPORTANT: if you change numbers or add/subtract lines here than be
- # sure to adjust the kart racing menu guid dict below
- # Invites/Destinations
- 3010 : "Anyone want to race?",
- 3020 : "Let's race!",
- 3030 : "Want to race?",
- 3040 : "Let's show off our karts!",
- 3050 : "I don't have enough tickets.",
- 3060 : "Let's race again!",
- 3061 : "Want to race again?",
-
-
- #Places
- 3150 : "I need to go to the Kart Shop.",
- 3160 : "Let's go to the Race Tracks!",
- 3170 : "Let's go to Pit Row to show off our karts!",
- 3180 : "I'm going to Pit Row to show off my kart!",
- 3190 : "Meet me at the Race Tracks!",
- 3110 : "Meet up near the Kart Shop!",
- 3130 : "Where should we meet?",
-
- #Races
- 3200 : "Where do you want to race?",
- 3201 : "Let's pick a different race.",
- 3210 : "Let's do a practice race.",
- 3211 : "Let's do a battle race.",
- 3220 : "I like the Screwball Stadium race!",
- 3221 : "I like the Rustic Raceway race!",
- 3222 : "I like the City Circuit race!",
- 3223 : "I like the Corkscrew Coliseum race!",
- 3224 : "I like the Airborne Acres race!",
- 3225 : "I like the Blizzard Boulevard race!",
- 3230 : "Let's race in the Screwball Stadium!",
- 3231 : "Let's race on the Rustic Raceway!",
- 3232 : "Let's race on the City Circuit!",
- 3233 : "Let's race in the Corkscrew Coliseum!",
- 3234 : "Let's race on the Airborne Acres!",
- 3235 : "Let's race on the Blizzard Boulevard!",
-
- #Tracks
- 3600 : "Which track do you want to race on?",
- 3601 : "Pick a track!",
- 3602 : "Can we race on a different track?",
- 3603 : "Let's pick a different track!",
- 3640 : "I want to race on the first track!",
- 3641 : "I want to race on the second track!",
- 3642 : "I want to race on the third track!",
- 3643 : "I want to race on the fourth track!",
- 3660 : "I don't want to race on the first track!",
- 3661 : "I don't want to race on the second track!",
- 3662 : "I don't want to race on the third track!",
- 3663 : "I don't want to race on the fourth track!",
-
- #Compliments
- 3300 : "Wow! You are FAST!",
- 3301 : "You're too fast for me!",
- 3310 : "Good race!",
- 3320 : "I really like your kart!",
- 3330 : "Sweet ride!",
- 3340 : "Your kart is cool!",
- 3350 : "Your kart is awesome!",
- 3360 : "Your kart is totally sweet!",
-
- #Taunts (commented out taunts are for possible purchase lines)
- #3400 : "Eat my dust!",
- 3400 : "Too scared to race me?",
- 3410 : "See you at the finish line!",
- #3420 : "You're slow as molasses!",
- 3430 : "I'm as fast as lightning!",
- #3440 : "I'm faster than the speed of light!",
- 3450 : "You'll never catch me!",
- 3451 : "You'll never beat me!",
- 3452 : "No one can beat my time!",
- 3453 : "Hurry up slow pokes!",
- 3460 : "Give me another shot!",
- 3461 : "You got lucky!",
- 3462 : "Ooooh! That was a close one!",
- 3470 : "Wow, I thought you had me beat!",
- #3500 : "Check out my ride!",
- #3510 : "Look at my wheels!",
- #3540 : "Vroom! Vroom!",
- #3560 : "I've seen Cogs move faster!",
- #3600 : "I'm the fastest of the fast!",
-
-
- # Golf phrases
-
- # Play
- 4000 : "Let's play minigolf!",
- 4001 : "Let's play again!",
- 4002 : "Want to golf?",
-
- # Courses
- 4100 : "Let's play 'Walk In The Par.'",
- 4101 : "Let's play 'Hole Some Fun.'",
- 4102 : "Let's play 'The Hole Kit and Caboodle.'",
- 4103 : "That course is too easy.",
- 4104 : "That course is too hard.",
- 4105 : "That course is just right.",
-
- # Tips
- 4200 : "Try standing more to the left.",
- 4201 : "Try standing more to the right.",
- 4202 : "Try standing right in the middle.",
- 4203 : "Try hitting it harder.",
- 4204 : "Try hitting it softer.",
- 4205 : "Try aiming more to the left.",
- 4206 : "Try aiming more to the right.",
- 4207 : "Try aiming right down the middle.",
-
- # Comments
- 4300 : "So close!",
- 4301 : "What a great shot!",
- 4302 : "That was a lucky shot.",
- 4303 : "I'll take a mulligan...",
- 4304 : "That's a gimme.",
- 4305 : "Fore!",
- 4306 : "Shhhh!",
- 4307 : "Good game!",
-
- # Boarding Group phrases
-
- 5000 : "Let's form a Boarding Group.",
- 5001 : "Join my Boarding Group.",
- 5002 : "Can you invite me to your Boarding Group?",
- 5003 : "I'm already in a Boarding Group.",
- 5004 : "Leave your Boarding Group.",
- 5005 : "We are boarding now.",
- 5006 : "Where are we going?",
- 5007 : "Are we ready?",
- 5008 : "Let's Go!",
- 5009 : "Don't leave this area or you will leave the Boarding Group.",
-
- # Let's Go to...
- 5100 : "Let's go to the Front Three.",
- 5101 : "Let's go to the Middle Six.",
- 5102 : "Let's go to the Back Nine.",
- 5103 : "Let's go to the C.E.O. Battle.",
- 5104 : "Let's go to the Senior V.P Battle.",
- 5105 : "Let's go to the Front Entrance.",
- 5106 : "Let's go to the Side Entrance.",
- 5107 : "Let's go to the Coin Mint.",
- 5108 : "Let's go to the Dollar Mint.",
- 5109 : "Let's go to the Bullion Mint.",
- 5110 : "Let's go to the C.F.O. Battle.",
- 5111 : "Let's go to the Chief Justice Battle.",
- 5112 : "Let's go to the Lawbot A Office.",
- 5113 : "Let's go to the Lawbot B Office.",
- 5114 : "Let's go to the Lawbot C Office.",
- 5115 : "Let's go to the Lawbot D Office.",
-
- # We're going to...
- 5200 : "We're going to the Front Three.",
- 5201 : "We're going to the Middle Six.",
- 5202 : "We're going to the Back Nine.",
- 5203 : "We're going to the C.E.O. Battle.",
- 5204 : "We're going to the Senior V.P Battle.",
- 5205 : "We're going to the Front Entrance.",
- 5206 : "We're going to the Side Entrance.",
- 5207 : "We're going to the Coin Mint.",
- 5208 : "We're going to the Dollar Mint.",
- 5209 : "We're going to the Bullion Mint.",
- 5210 : "We're going to the C.F.O. Battle.",
- 5211 : "We're going to the Chief Justice Battle.",
- 5212 : "We're going to the Lawbot A Office.",
- 5213 : "We're going to the Lawbot B Office.",
- 5214 : "We're going to the Lawbot C Office.",
- 5215 : "We're going to the Lawbot D Office.",
-
- # Parties General Phrases
- 5300 : "Let's go to a party.",
- 5301 : "See you at the party!",
- 5302 : "My party has started!",
- 5303 : "Come to my party!",
- # Parties Phrases when inside a party
- 5304 : "Welcome to my party!",
- 5305 : "This party rules!",
- 5306 : "Your party is fun!",
- 5307 : "It's party time!",
- 5308 : "Time is running out!",
- 5309 : "No cogs allowed!",
- 5310 : "I like this song!",
- 5311 : "This music is great!",
- 5312 : "Cannons are a blast!",
- 5313 : "Watch me jump!",
- 5314 : "Trampolines are fun!",
- 5315 : "Let's play Catch!",
- 5316 : "Let's dance!",
- 5317 : "To the dance floor!",
- 5318 : "Let's play Tug of War!",
- 5319 : "Start the fireworks!",
- 5320 : "These fireworks are beautiful!",
- 5321 : "Nice decorations.",
- 5322 : "I wish I could eat this cake!",
+ 2133 : "Look out!",
# Promotional Considerations
10000 : "The choice is yours!",
@@ -2070,7 +1592,6 @@
21003: 'Good boy!',
21004: 'Good girl!',
21005: 'Nice Doodle.',
- 21006: 'Please don\'t bother me.',
# Pet/Doodle Tricks
21200: 'Jump!',
@@ -2084,261 +1605,32 @@
# PIRATES ROOT - TOP LEVEL
50001 : 'Aye',
50002 : 'Nay',
- 50003 : 'Yes',
- 50004 : 'No',
- 50005 : 'Ok',
+ 50003 : 'Arr!',
+ 50100 : 'Ahoy!',
+ 50101 : 'Ahoy, Matie!',
+
# EXPRESSIONS
- 50100 : "Gangway!",
- 50101 : "Blimey!",
- 50102 : "Well blow me down!",
- 50103 : "Walk the plank!",
+ 50103 : "Gangway!",
+ 50104 : "Blimey!",
+ 50105 : "Well blow me down!",
+ 50106 : "Yo-Ho-Ho",
+ 50107 : "Aye, aye Captain!",
+ 50108 : "Walk the plank!",
+ 50109 : "Come about!",
50104 : "Dead men tell no tales....",
- 50105 : "Shiver me timbers!",
- 50106 : "Salty as a Kraken's kiss.",
- 50107 : "Treasure be the measure of our pleasure!",
- 50108 : "I don't fear death - I attune it.",
-
-
- # EXPRESSIONS - GREETINGS
- 50700 : "Ahoy!",
- 50701 : "Ahoy, mate!",
- 50702 : "Yo-Ho-Ho",
- 50703 : "Avast!",
- 50704 : "Hey Bucko.",
-
- # EXPRESSIONS - GOODBYES
- 50800 : "Until next time.",
- 50801 : "May fair winds find ye.",
- 50802 : "Godspeed.",
-
-
- # EXPRESSIONS - FRIENDLY
- 50900 : "How are ye, mate?",
- 50901 : "",
-
- # EXPRESSIONS - HAPPY
- 51000 : "It's like the sky is raining gold doubloons!",
- 51001 : "May a stiff wind be at our backs, the sun on our faces and our cannons fire true!",
-
- # EXPRESSIONS - SAD
- 51100 : "I be sailing some rough waters today.",
-
- # EXPRESSIONS - SORRY
- 51200 : "Me apologies, mate.",
- 51201 : "Sorry.",
- 51202 : "Sorry, I was busy before.",
- 51203 : "Sorry, I already have plans.",
- 51204 : "Sorry, I don't need to do that.",
-
- # COMBAT
- 51300 : "Attack the weakest one!",
- 51301 : "Attack the strongest one!",
- 51302 : "Attack me target!",
- 51303 : "I be needing help!",
- 51304 : "I can't do any damage!",
- 51305 : "I think we be in trouble.",
- 51306 : "Surround the most powerful one.",
- 51307 : "We should retreat.",
- 51308 : "Run for it!",
-
- # SEA COMBAT
- 51400 : "Fire a Broadside!",
- 51401 : "Port Side! (left)",
- 51402 : "Starboard Side! (right)",
- 51403 : "Incoming!",
- 51404 : "Come about!",
- 51405 : "Broadside! Take Cover!",
- 51406 : "To the Cannons!",
- 51407 : "Open fire!",
- 51408 : "Hold yer fire!",
- 51409 : "Aim for the masts!",
- 51410 : "Aim for the hull!",
- 51411 : "Prepare to board!",
- 51412 : "She's coming about.",
- 51413 : "Ramming speed!",
- 51414 : "We've got her on the run.",
- 51415 : "We be taking on water!",
- 51416 : "We can't take anymore!",
- 51417 : "I don't have a shot!",
- 51418 : "Let's find port for repair.",
- 51419 : "Man overboard!",
- 51420 : "Enemy spotted.",
- 51421 : "Handsomely now, mates!",
-
- # PLACES
- 50400 : "Let's set sail.",
- 50401 : "Let's get out of here.",
-
-
- # PLACES - LETS SAIL...
- 51500 : "Let's sail to Port Royal.",
- 51501 : "Let's sail to Tortuga.",
- 51502 : "Let's sail to Padres Del Fuego.",
- 51503 : "Let's sail to Devil's Anvil.",
- 51504 : "Let's sail to Kingshead.",
- 51505 : "Let's sail to Isla Perdida.",
- 51506 : "Let's sail to Cuba.",
- 51507 : "Let's sail to Tormenta.",
- 51508 : "Let's sail to Outcast Isle.",
- 51509 : "Let's sail to Driftwood.",
- 51510 : "Let's sail to Cutthroat.",
- 51511 : "Let's sail to Rumrunner's Isle.",
- 51512 : "Let's sail to Isla Cangrejos.",
-
- # PLACES - LETS HEAD TO...
- 51600 : "Let's head into town.",
- 51601 : "Let's go to the docks.",
- 51602 : "Let's head to the tavern.",
-
- # PLACES - LETS HEAD TO... - PORT ROYAL
- 51800 : "Let's go to Fort Charles.",
- 51801 : "Let's go to the Governor's Mansion.",
-
- # PLACES - WHERE IS ..?
- 52500 : "Where be I, mate?",
-
- # DIRECTIONS
- 51700 : "Yer already there.",
- 51701 : "I don't know.",
- 51702 : "Yer on the wrong island.",
- 51703 : "That's in town.",
- 51704 : "Look just outside of town.",
- 51705 : "Ye will have to search through the jungle.",
- 51706 : "Deeper inland.",
- 51707 : "Oh, that be by the coast.",
# Insults
50200 : "Bilge rat!",
- 50201 : "Scurvy dog!",
+ 50201 : "Ye scurvy dog!",
50202 : "See ye in Davy Jones locker!",
50203 : "Scoundrel!",
50204 : "Landlubber!",
- 50205 : "Addle-minded fool!",
- 50206 : "You need a sharp sword and sharper wits.",
- 50207 : "Ye be one doubloon short of a full hull mate!",
- 50208 : "Watch yer tongue or I'll pickle it with sea salt!",
- 50209 : "Touch me loot and you get the boot!",
- 50210 : "The horizon be as empty as yer head.",
- 50211 : "You're a canvas shy of a full sail, aren't ye mate?",
-
- # Compliments
- 50300 : "Fine shooting mate!",
- 50301 : "A well placed blow!",
- 50302 : "Nice shot!",
- 50303 : "Well met!",
- 50304 : "We showed them!",
- 50305 : "Yer not so bad yerself!",
- 50306 : "A fine plunder haul!",
-
- # Card Games
- 52400 : "May luck be my lady.",
- 52401 : "I think these cards be marked!",
- 52402 : "Blimey cheater!",
-
- # Card Games - Poker
- 51900 : "That's a terrible flop!",
- 51901 : "Trying to buy the hand, are ye?",
- 51902 : "Ye be bluffing.",
- 51903 : "I don't think ye had it.",
- 51904 : "Saved by the river.",
-
- # Card Games - Blackjack
- 52600 : "Hit me.",
- 52601 : "Can I get another dealer?",
-
- # Minigames
- # Minigames - Fishing
- 53101 : "I caught a fish!",
- 53102 : "I saw a Legendary Fish!",
- 53103 : "What did you catch?",
- 53104 : "This will make a whale of a tale!",
- 53105 : "That was a beauty!",
- 53106 : "Arr, the sea is treacherous today.",
- 53107 : "What a bountiful haul of fish!",
- 53110 : "Do you have the Legendary Lure?",
- 53111 : "Have you ever caught a Legendary Fish?",
- 53112 : "Can you sail on a fishing boat?",
- 53113 : "Where is the Fishing Master?",
- 53114 : "Have you completed your fish collection?",
- # Minigames - Cannon Defense
- 53120 : "Fire at my target!",
- 53121 : "Fire at the ship closest to the shore!",
- 53122 : "There's a ship getting away!",
- 53123 : "Fire at the big ships!",
- 53124 : "Fire at the small ships!",
- 53125 : "More are coming!",
- 53126 : "We're not going to last much longer!",
- 53127 : "Shoot the barrels!",
- 53128 : "We've got new ammo!",
- 53129 : "Sturdy defense, mates!",
- # Minigames - Potion Brewing
- 53141 : "Look at the potion I made!",
- 53142 : "Have you completed your potion collection?",
- 53143 : "Where is the Gypsy?",
- 53144 : "What potion is that?",
- 53145 : "This potion was easy enough.",
- 53146 : "This potion was hard brewin', I tell ye!",
- # Minigames - Repair
- 53160 : "We need someone to bilge pump!",
- 53161 : "We need someone to scrub!",
- 53162 : "We need someone to saw!",
- 53163 : "We need someone to brace!",
- 53164 : "We need someone to hammer!",
- 53165 : "We need someone to patch!",
- 53166 : "I'll do it!",
- 53167 : "Keep it up, this ship won't repair itself!",
- 53168 : "Great job repairing the ship!",
-
- # Invitations
- 52100 : "Want to group up?",
- 52101 : "Join me crew?",
-
- # Invitations - Hunting
- 52200 : "Fight some skeletons?",
- 52201 : "Fight some crabs?",
-
- # Invitations - Versus
- 52300 : "How 'bout a game of Mayhem?",
- 52301 : "Join me Mayhem game.",
- 52302 : "Want to start a Mayhem game?",
- 52303 : "Want to start a team battle game?",
- 52304 : "Join me team battle game.",
-
- # Invitations - Minigames
- 52350 : "Join my Cannon Defense.",
- 52351 : "Want to start a Cannon Defense?",
- 52352 : "Can you lend me a hand with Repair?",
- 52353 : "We need to Repair the ship now!",
- 52354 : "Care to catch some fish?",
- 52355 : "Want to go fishing with me?",
- 52356 : "Join me crew for some fishin'?",
- 52357 : "Time to brew some potions!",
- 52358 : "You should try your hand at brewing potions.",
-
- # PLACES - WHERE IS..? - PORT ROYAL (LEGACY)
- 52000 : "",
-
- # PLACES - WHERE IS..? - PORT ROYAL (Legacy)
- 52000 : "",
-
- # PLACES - WHERE IS..? - TORTUGA (Legacy)
- 52700 : "",
-
- # PLACES - WHERE IS..? - PADRES DEL FUEGO (Legacy)
- 53000 : "",
-
- # PLACES - WHERE IS..? - PADRES DEL FUEGO - LOS PADRES (Legacy)
- 52800 : "",
-
- # PLACES - WHERE IS..? - PADRES DEL FUEGO - LAS PULGAS (Legacy)
- 52900 : "",
-
- # Adventures (LEGACY)
- 50500 : "",
-
- # Ships (LEGACY)
- 50600 : "",
+ 50205 : "Whar are ye?",
+ 50301 : "Let's head into town.",
+ 50302 : "Let's go to the docks.",
+ 50303 : "Let's set sail.",
+ 50304 : "Let's go to the bar.",
# Greetings
60100 : "Hi!",
@@ -2381,189 +1673,8 @@
60502 : "Let's go to the Disco Hall.",
60503 : "Let's go to Toontown.",
60504 : "Let's go to Pirates of the Carribean.",
-
- # Animated Emotes
- 60505 : "Flip coin",
- 60506 : "Dance",
- 60507 : "Chant 1",
- 60508 : "Chant 2",
- 60509 : "Dance a jig",
- 60510 : "Sleep",
- 60511 : "Flex",
- 60512 : "Play Lute",
- 60513 : "Play Flute",
- 60514 : "Frustrated",
- 60515 : "Searching",
- 60516 : "Yawn",
- 60517 : "Kneel",
- 60518 : "Sweep",
- 60519 : "Primp",
- 60520 : "Yawn",
- 60521 : "Dance",
- 60522 : "No",
- 60523 : "Yes",
- 60524 : "Laugh",
- 60525 : "Clap",
- 60526 : "Smile",
- 60527 : "Anger",
- 60528 : "Fear",
- 60529 : "Sad",
- 60530 : "Celebrate",
- 60668 : "Celebrate",
- 60669 : "Sleep",
- 60602 : "Angry",
- 60614 : "Clap",
- 60622 : "Scared",
- 60640 : "Laugh",
- 60652 : "Sad",
- 60657 : "Smile",
- 60664 : "Wave",
- 60665 : "Wink",
- 60666 : "Yawn",
- 60669 : "Sleep",
- 60670 : "Dance",
- 60676 : "Flirt",
- 60677 : "Zombie dance",
- 60678 : "Noisemaker",
-
- # Valentines day emote string options
- 60671 : "Hello, I'm a Pirate, and I'm here to steal your heart.",
- 60672 : "I just found the treasure I've been searching for.",
- 60673 : "If you were a booger, I'd pick you first.",
- 60674 : "Come to Tortuga often?",
- 60675 : "Do you have a map? I just keep getting lost in your eyes.",
-
- 65000 : "Yes",
- 65001 : "No",
-
- # Phrases for April Toon's week
- 60100 : "Happy April Toons' Week!",
- 60101 : "Welcome to my April Toons' Week party!",
- 60110 : "Mickey is in Daisy Gardens.",
- 60111 : "Daisy is in Toontown Central.",
- 60112 : "Minnie is in The Brrrgh.",
- 60113 : "Pluto is in Melodyland.",
- 60114 : "Donald is sleepwalking at the Speedway.",
- 60115 : "Goofy is in Dreamland.",
- 60120 : "Mickey is acting like Daisy!",
- 60121 : "Daisy is acting like Mickey!",
- 60122 : "Minnie is acting like Pluto!",
- 60123 : "Pluto is acting like Minnie!",
- 60124 : "Pluto is talking!",
- 60125 : "Goofy is acting like Donald!",
- 60126 : "Donald is dreaming he is Goofy!",
- 60130 : "Watch how far I can jump.",
- 60131 : "Wow, you jumped really far!",
- 60132 : "Hey, Doodles can talk!",
- 60133 : "Did your Doodle just talk?",
- 60140 : "Things sure are silly around here!",
- 60141 : "How sillier could things get?",
-
- # Phrases for caroling
- 60200 : "Deck the halls... ",
- 60201 : "Load some pies...",
- 60202 : "Joyful toons...",
- 60203 : "Snowman heads...",
- 60204 : "Toontown's merry...",
- 60205 : "Lure good cheer...",
-
- 60220 : "Deck the halls with seltzer spray!\nHappy Winter Holiday!",
- 60221 : "Load some pies into your sleigh!\nHappy Winter Holiday!",
- 60222 : "Joyful toons bring Cogs dismay!\nHappy Winter Holiday!",
- 60223 : "Snowman heads are hot today!\nHappy Winter Holiday!",
- 60224 : "Toontown's merry, come what may!\nHappy Winter Holiday!",
- 60225 : "Lure good cheer the Toontown way!\nHappy Winter Holiday!",
-
- # Phrases for Silly Story
- 60301 : "Have you seen the Silly Meter?",
- 60302 : "The Silly Meter is in Toon Hall.",
- 60303 : "Things sure are getting silly around here!",
- 60304 : "I saw a fire hydrant moving!",
- 60305 : "Toontown is coming to life!",
- 60306 : "Have you been to Flippy's new office?",
- 60307 : "I caused a Silly Surge in battle!",
- 60308 : "Let's defeat some Cogs to make Toontown sillier!",
-
- 60309 : "The Silly Meter is bigger and crazier than ever!",
- 60310 : "Lots of hydrants have come alive!",
- 60311 : "I saw a mail box moving!",
- 60312 : "I watched a trash can wake up!",
- 60313 : "How silly can it get?",
- 60314 : "What\'s going to happen next?",
- 60315 : "Something silly, I bet!",
- 60316 : "Have you caused a Silly Surge yet?",
- 60317 : "Let's defeat some Cogs to make Toontown sillier!",
-
- 60318 : "Cog Invasion!",
- 60319 : "Incoming!",
- 60320 : "Let\'s stop those Cogs!",
- 60321 : "I miss the Silly Surges!",
- 60322 : "Let\'s go stop an Invasion!",
- 60323 : "Toontown is sillier than ever now!",
- 60324 : "Have you seen something come alive?",
- 60325 : "My favorites are the fire hydrants!",
- 60326 : "My favorites are the mailboxes!",
- 60327 : "My favorites are the trash cans!",
-
- 60328 : "Hooray! We stopped the Cog invasions!",
- 60329 : "A hydrant helped me in battle!",
- 60330 : "A hydrant boosted my Squirt Gags!",
- 60331 : "A trash can boosted my Toon-Up Gags!",
- 60332 : "A mailbox helped my Throw Gags!",
-
- # Phrases for Victory Parties (warning 60400 is in use)
- 60350 : "Welcome to my Victory Party!",
- 60351 : "This is a great Victory Party!",
- 60352 : "We showed those Cogs who's boss!",
- 60353 : "Good job helping end the Cog invasions!",
- 60354 : "I bet this is driving the Cogs crazy!",
-
- 60355 : "Let's play Cog-O-War!",
- 60356 : "My team won at Cog-O-War!",
- 60357 : "It's nice to have fire hydrants, trash cans, and mailboxes here!",
- 60358 : "I like the balloon of the Doodle biting the Cog!",
- 60359 : "I like the balloon of the Cog covered in ice cream!",
- 60360 : "I like the wavy Cog that flaps his arms!",
- 60361 : "I jumped on a Cog's face!",
-
- # Phrases for Singing
-## 9000 : 'Middle ' + 'G1',
-## 9001 : 'Middle ' + 'A',
-## 9002 : 'Middle ' + 'B',
-## 9003 : 'Middle ' + 'C',
-## 9004 : 'Middle ' + 'D',
-## 9005 : 'Middle ' + 'E',
-## 9006 : 'Middle ' + 'F',
-## 9007 : 'Middle ' + 'G2'
+
}
-
-# Emote IDs - These are used in SC to determine if a msg is a animated emote
-Emotes_Root = "EMOTES"
-Emotes_Dances = "Dances"
-Emotes_General = "General"
-Emotes_Music = "Music"
-Emotes_Expressions = "Emotions"
-Emote_ShipDenied = "Cannot emote while sailing."
-Emote_MoveDenied = "Cannot emote while moving."
-Emote_CombatDenied = "Cannot emote while in combat."
-Emote_CannonDenied = "Cannot emote while using a cannon."
-Emote_SwimDenied = "Cannot emote while swimming."
-Emote_ParlorGameDenied = "Cannot emote while playing a parlor game."
-Emotes = (60505, 60506, 60509, 60510, 60511, 60516, 60519, 60520, 60521, 60522, 60523, 60524, 60525, 60526, 60527, 60528, 60529, 60530, 60602, 60607, 60611, 60614, 60615, 60622, 60627, 60629, 60632, 60636, 60638, 60640, 60644, 60652, 60654, 60657, 60658, 60663, 60664, 60665, 60666, 60668, 60669, 60612, 60661, 60645, 60629, 60641, 60654, 60630, 60670, 60633,
- # Valentines Day Emote
- 60676,
- # Halloween Emote
- 60677,
- # Yes/No
- 65000, 65001,
- # Kneel
- 60517,
- # New Years Emote
- 60678,
- )
-
-# These indexes, defined above, will construct a submenu in the FACTORY menu
-# to allow the user to describe all the places he might want to meet
SCFactoryMeetMenuIndexes = (1903, 1904, 1906, 1907, 1908, 1910, 1913,
1915, 1916, 1917, 1919, 1922, 1923,
1924, 1932, 1940, 1941)
@@ -2967,7 +2078,6 @@
11017 : "Snow doubt about it!",
11018 : "Snow far, snow good!",
11019 : "Yule be sorry!",
- 11020 : "Have a Wonderful Winter!",
# Valentines
12000 : "Be mine!",
@@ -3003,28 +2113,10 @@
13006 : "You're my four leaf clover!",
13007 : "You're my lucky charm!",
- # Summer Estate Party phrases (seasonal catalog)
- 14000 : "Let's have a summer Estate party!",
- 14001 : "It's party time!",
- 14002 : "Last one in the pond is a rotten Cog!",
- 14003 : "Group Doodle training time!",
- 14004 : "Doodle training time!",
- 14005 : "Your Doodle is cool!",
- 14006 : "What tricks can your Doodle do?",
- 14007 : "Time for Cannon Pinball!",
- 14008 : "Cannon Pinball rocks!",
- 14009 : "Your Estate rocks!",
- 14010 : "Your Garden is cool!",
- 14011 : "Your Estate is cool!",
-
-
-
-
#Potential racing phrases for purchase
}
-
# indices into cog phrase arrays
SCMenuCommonCogIndices = (20000, 20004)
SCMenuCustomCogIndices = {
@@ -3065,47 +2157,8 @@
# Pirates Speedchat
PSCMenuExpressions = "EXPRESSIONS"
-PSCMenuGreetings = "GREETINGS"
-PSCMenuGoodbyes = "GOODBYES"
-PSCMenuFriendly = "FRIENDLY"
-PSCMenuHappy = "HAPPY"
-PSCMenuSad = "SAD"
-PSCMenuSorry = "SORRY"
-PSCMenuCombat = "COMBAT"
-PSCMenuSeaCombat = "SEA COMBAT"
-PSCMenuPlaces = "PLACES"
-PSCMenuLetsSail = "LET\'S SAIL..."
-PSCMenuLetsHeadTo = "LET\'S HEAD TO..."
-PSCMenuHeadToPortRoyal = "PORT ROYAL"
-PSCMenuWhereIs = "WHERE IS ..?"
-PSCMenuWhereIsPortRoyal = "PORT ROYAL"
-PSCMenuWhereIsTortuga = "TORTUGA"
-PSCMenuWhereIsPadresDelFuego = "PADRES DEL FUEGO"
-PSCMenuWhereIsLasPulgas = "LAS PULGAS"
-PSCMenuWhereIsLosPadres = "LOS PADRES"
-PSCMenuDirections = "DIRECTIONS"
PSCMenuInsults = "INSULTS"
-PSCMenuCompliments = "COMPLIMENTS"
-PSCMenuCardGames = "CARD GAMES"
-PSCMenuPoker = "POKER"
-PSCMenuBlackjack = "BLACKJACK"
-PSCMenuMinigames = "MINIGAMES"
-PSCMenuFishing = "FISHING"
-PSCMenuCannonDefense = "CANNON DEFENSE"
-PSCMenuPotions = "POTION BREWING"
-PSCMenuRepair = "REPAIR"
-PSCMenuInvitations = "INVITATIONS"
-PSCMenuVersusPlayer = "VERSUS"
-PSCMenuHunting = "HUNTING"
-PSCMenuQuests = "QUESTS"
-PSCMenuGM = "GM"
-
-
-
-# Grandfathered Speedchat Headers
-PSCMenuShips = "SHIPS"
-PSCMenuAdventures = "ADVENTURE"
-
+PSCMenuPlaces = "PLACES"
# Gateway Speedchat
GWSCMenuHello = "GREETINGS"
@@ -3189,7 +2242,7 @@
# AvatarPanel.py
AvatarPanelFriends = "Friends"
AvatarPanelWhisper = "Whisper"
-AvatarPanelSecrets = "True Friends"
+AvatarPanelSecrets = "Secrets"
AvatarPanelGoTo = "Go To"
AvatarPanelIgnore = "Ignore"
AvatarPanelStopIgnore = "Stop Ignoring"
@@ -3213,89 +2266,3 @@
TeleportPanelUnavailableHood = "%s is not available right now; try again later."
TeleportPanelDenySelf = "You can't go to yourself!"
TeleportPanelOtherShard = "%(avName)s is in district %(shardName)s, and you're in district %(myShardName)s. Do you want to switch to %(shardName)s?"
-
-KartRacingMenuSections = [
- -1,
- "PLACES",
- "RACES",
- "TRACKS",
- "COMPLIMENTS",
- "TAUNTS"
-]
-
-AprilToonsMenuSections = [
- -1,
- "GREETINGS",
- "PLAYGROUNDS",
- "CHARACTERS",
- "ESTATES"
-]
-
-SillyHolidayMenuSections = [
--1,
-"WORLD",
-"BATTLE",
-]
-
-CarolMenuSections = [
--1,
-]
-
-VictoryPartiesMenuSections = [
- -1,
- "PARTY",
- "ITEMS",
-]
-
-GolfMenuSections = [
- -1,
- "COURSES",
- "TIPS",
- "COMMENTS",
-]
-
-BoardingMenuSections = [
-"GROUP",
-"Let's go to...",
-"We're going to...",
--1,
-]
-
-SingingMenuSections = [
--1
-]
-
-WhiteListMenu = [
--1,
-"WHITELIST"
-]
-
-# TTAccount.py
-# Fill in %s with phone number from account server
-TTAccountCallCustomerService = "Please call Customer Service at %s."
-# Fill in %s with phone number from account server
-TTAccountCustomerServiceHelp = "\nIf you need help, please call Customer Service at %s."
-TTAccountIntractibleError = "An error occurred."
-
-
-def timeElapsedString(timeDelta):
- timeDelta = abs(timeDelta)
- if timeDelta.days > 0:
- if timeDelta.days == 1:
- return "1 day ago"
- else:
- return "%s days ago" % timeDelta.days
-
- elif timeDelta.seconds / 3600 > 0:
- if timeDelta.seconds / 3600 == 1:
- return "1 hour ago"
- else:
- return "%s hours ago" % (timeDelta.seconds / 3600)
-
- else:
- if timeDelta.seconds / 60 < 2:
- return "1 minute ago"
- else:
- return "%s minutes ago" % (timeDelta.seconds / 60)
-
-
diff --git a/otp/src/otpbase/SuperSecretStringDecoder.py b/otp/src/otpbase/SuperSecretStringDecoder.py
index b7bba1f4..aa17465b 100644
--- a/otp/src/otpbase/SuperSecretStringDecoder.py
+++ b/otp/src/otpbase/SuperSecretStringDecoder.py
@@ -9,4 +9,4 @@ def decode(s):
if __name__ == '__main__':
data = sys.stdin.readline()
- print decode(data)
+ print(decode(data))
diff --git a/otp/src/otpbase/extractSpeedChatStrings.py b/otp/src/otpbase/extractSpeedChatStrings.py
index 6be75161..ea60367e 100644
--- a/otp/src/otpbase/extractSpeedChatStrings.py
+++ b/otp/src/otpbase/extractSpeedChatStrings.py
@@ -4,12 +4,12 @@
msgs = set()
-msgs.update(SpeedChatStaticText.values())
-msgs.update(CustomSCStrings.values())
+msgs.update(list(SpeedChatStaticText.values()))
+msgs.update(list(CustomSCStrings.values()))
-print '=== START SC STRINGS ==='
+print('=== START SC STRINGS ===')
for msg in msgs:
if len(msg):
- print msg
+ print(msg)
diff --git a/otp/src/otpbase/fpsAnalyzer.py b/otp/src/otpbase/fpsAnalyzer.py
index bfc002fe..25b42fe9 100644
--- a/otp/src/otpbase/fpsAnalyzer.py
+++ b/otp/src/otpbase/fpsAnalyzer.py
@@ -4,7 +4,7 @@
importing into Excel. """
import time
-import cPickle
+import pickle
class Sample:
def __init__(self, line, columns):
@@ -18,7 +18,7 @@ def __init__(self, line, columns):
# Store the cpuSpeed as an integer value in MHz, so it
# will be more concrete.
- self.cpuSpeed = map(lambda s: int(float(s) * 1000 + 0.5), cs)
+ self.cpuSpeed = [int(float(s) * 1000 + 0.5) for s in cs]
else:
self.osInfo = ('?', 0, 0, 0, 0)
self.cpuSpeed = (0, 0)
@@ -63,7 +63,7 @@ def write(self, file):
self.processMemory or 0, self.pageFileUsage or 0,
self.physicalMemory or 0, self.pageFaultCount or 0,
'%s.%d.%d.%d' % self.osInfo,
- '%0.03f,%0.03f' % map(lambda s: s / 1000.0, self.cpuSpeed))
+ '%0.03f,%0.03f' % [s / 1000.0 for s in self.cpuSpeed])
file.write('%s|client-fps|AIServer:%s|%s|%s\n' % (
date, self.serverId, self.avId, info))
@@ -180,18 +180,18 @@ def quickAnalyzeCards(self, filename):
file = open('card_performance.csv', 'w')
- deviceList = quickCards.keys()
+ deviceList = list(quickCards.keys())
deviceList.sort()
for deviceTuple in deviceList:
options = quickCards[deviceTuple]
- codes = options.keys()
+ codes = list(options.keys())
codes.sort()
for gameOptionsCode in codes:
totFps, count = options[gameOptionsCode]
avgFps = totFps / count
- print >> file, '%s, %s, %s, %s' % (
+ print('%s, %s, %s, %s' % (
self.__formatDevice(deviceTuple),
- gameOptionsCode, avgFps, count)
+ gameOptionsCode, avgFps, count), file=file)
def readText(self, filename, firstLine = 0, lastLine = None):
""" Reads the client-fps lines from the indicated logfile into
@@ -251,12 +251,12 @@ def writePickle(self, filename):
assert filename.endswith('.pkl')
file = open(filename, 'wb')
- cPickle.dump(self, file, cPickle.HIGHEST_PROTOCOL)
+ pickle.dump(self, file, pickle.HIGHEST_PROTOCOL)
def readPickle(self, filename):
assert filename.endswith('.pkl')
file = open(filename, 'rb')
- obj = cPickle.load(file)
+ obj = pickle.load(file)
assert obj.__class__ == self.__class__
self.__dict__ = obj.__dict__
@@ -310,7 +310,7 @@ def collectPlayers(self):
self.hardware.setdefault((player, session.getHardware()), []).append(session)
- self.players = playerDict.values()
+ self.players = list(playerDict.values())
for player in self.players:
player.calcFrameRate()
@@ -367,7 +367,7 @@ def __analyze(self):
cpuSpeedTrue = {}
cpuSpeedEffective = {}
cpuPowersave = {}
- for tuple, sessions in self.hardware.items():
+ for tuple, sessions in list(self.hardware.items()):
player = tuple[0]
session = sessions[0]
if session.vendorId != None:
@@ -421,11 +421,11 @@ def __addSample(self, dict, key, sample):
def reportData(self, filename, dict, formatKey, calcValue):
file = open(filename, 'w')
- items = dict.items()
+ items = list(dict.items())
items.sort()
for key, samples in items:
- print >> file, '%s, %s' % (
- formatKey(key), calcValue(samples))
+ print('%s, %s' % (
+ formatKey(key), calcValue(samples)), file=file)
def __formatDevice(self, tuple):
vendorId, deviceId = tuple
@@ -511,7 +511,7 @@ def enquote(self, s):
def __averageFps(self, samples):
return '%s, %s' % (
- sum(map(lambda s: s.fps, samples)) / len(samples), len(samples))
+ sum([s.fps for s in samples]) / len(samples), len(samples))
def __countPlayers(self, players):
""" Returns total number of players whose avg fps is less than
@@ -519,8 +519,8 @@ def __countPlayers(self, players):
25, and total number of players whose avg fps is more than
25. """
- numLow = sum(map(lambda p: p.lowFps, players))
- numHigh = sum(map(lambda p: p.highFps, players))
+ numLow = sum([p.lowFps for p in players])
+ numHigh = sum([p.highFps for p in players])
numMed = len(players) - numLow - numHigh
return '%s, %s, %s' % (numLow, numMed, numHigh)
diff --git a/otp/src/publish/FreezeTool.py b/otp/src/publish/FreezeTool.py
index e7968ba5..435d1143 100644
--- a/otp/src/publish/FreezeTool.py
+++ b/otp/src/publish/FreezeTool.py
@@ -12,7 +12,7 @@
ctprojs = os.getenv("CTPROJS")
if not ctprojs:
- print "CTPROJS is not defined."
+ print("CTPROJS is not defined.")
sys.exit(1)
# These are modules that Python always tries to import up-front. They
@@ -153,7 +153,7 @@ def setupPackages():
for moduleName in packages:
str = 'import %s' % (moduleName)
- exec str
+ exec(str)
module = sys.modules[moduleName]
modulefinder.AddPackagePath(moduleName, module.__path__[0])
@@ -275,7 +275,7 @@ def done(self):
excludes = []
includes = []
autoIncludes = []
- for moduleName, token in self.modules.items():
+ for moduleName, token in list(self.modules.items()):
if token == self.MTInclude:
includes.append(moduleName)
elif token == self.MTAuto:
@@ -298,7 +298,7 @@ def done(self):
pass
# Now, any new modules we found get added to the export list.
- for moduleName in self.mf.modules.keys():
+ for moduleName in list(self.mf.modules.keys()):
if moduleName not in self.modules:
self.modules[moduleName] = self.MTAuto
@@ -327,8 +327,8 @@ def done(self):
if missing:
error = "There are some missing modules: %r" % missing
- print error
- raise StandardError, error
+ print(error)
+ raise Exception(error)
def mangleName(self, moduleName):
return 'M_' + moduleName.replace('.', '__')
@@ -339,7 +339,7 @@ def generateCode(self, basename):
# referencing.
moduleNames = []
- for moduleName, token in self.modules.items():
+ for moduleName, token in list(self.modules.items()):
prevToken = self.previousModules.get(moduleName, None)
if token == self.MTInclude or token == self.MTAuto:
# Include this module (even if a previous pass
@@ -358,7 +358,7 @@ def generateCode(self, basename):
# actual filename we put in there is meaningful only for stack
# traces, so we'll just use the module name.
replace_paths = []
- for moduleName, module in self.mf.modules.items():
+ for moduleName, module in list(self.mf.modules.items()):
if module.__code__:
origPathname = module.__code__.co_filename
replace_paths.append((origPathname, moduleName))
@@ -366,7 +366,7 @@ def generateCode(self, basename):
# Now that we have built up the replacement mapping, go back
# through and actually replace the paths.
- for moduleName, module in self.mf.modules.items():
+ for moduleName, module in list(self.mf.modules.items()):
if module.__code__:
co = self.mf.replace_paths_in_code(module.__code__)
module.__code__ = co;
@@ -579,13 +579,13 @@ def compileExe(self, basename, sourceList):
for compile in compileList:
- print compile
+ print(compile)
if os.system(compile) != 0:
- raise StandardError
+ raise Exception
- print link
+ print(link)
if os.system(link) != 0:
- raise StandardError
+ raise Exception
def compileDll(self, basename, sourceList):
if sys.platform == 'win32':
@@ -647,13 +647,13 @@ def compileDll(self, basename, sourceList):
for compile in compileList:
- print compile
+ print(compile)
if os.system(compile) != 0:
- raise StandardError
+ raise Exception
- print link
+ print(link)
if os.system(link) != 0:
- raise StandardError
+ raise Exception
def makeModuleDef(self, mangledName, code, isStatic):
result = ''
diff --git a/otp/src/snapshot/BatchRequests.py b/otp/src/snapshot/BatchRequests.py
index f006b1d0..7045bdb0 100644
--- a/otp/src/snapshot/BatchRequests.py
+++ b/otp/src/snapshot/BatchRequests.py
@@ -1,10 +1,10 @@
import sys
import time
-import urllib
+import urllib.request, urllib.parse, urllib.error
import string
if len(sys.argv) < 3 or len(sys.argv) > 3:
- print "usage: cat avIDs.txt | BatchRequests.py HOSTNAME PORTNUMBER"
+ print("usage: cat avIDs.txt | BatchRequests.py HOSTNAME PORTNUMBER")
sys.exit(1)
assert len(sys.argv) == 3
@@ -13,12 +13,12 @@
ids = sys.stdin.readlines()
-ids = map(string.strip,ids)
+ids = list(map(string.strip,ids))
-opener = urllib.FancyURLopener({})
+opener = urllib.request.FancyURLopener({})
for avId in ids:
- print ("%s..." % avId),
+ print(("%s..." % avId), end=' ')
f = opener.open("http://%s:%s/queueSnapshot?avatarId=%s" % (hostname,portnum,avId))
#f.read() # Do this if we want to check the result...which we don't if we want to be fast
- print "done"
+ print("done")
diff --git a/otp/src/snapshot/SnapshotDispatcherUD.py b/otp/src/snapshot/SnapshotDispatcherUD.py
index a468387a..4c0b0163 100644
--- a/otp/src/snapshot/SnapshotDispatcherUD.py
+++ b/otp/src/snapshot/SnapshotDispatcherUD.py
@@ -6,7 +6,7 @@
from direct.http.WebRequest import WebRequestDispatcher
from direct.task import Task
-import Queue
+import queue
import socket
#--------------------------------------------------
@@ -48,7 +48,7 @@ def __init__(self, air):
self.numServedAtLastLog = 0
# Unassigned work
- self.jobQueue = Queue.Queue()
+ self.jobQueue = queue.Queue()
# If the queue gets longer than this, log warnings
self.maxSafeJobQueueLength = 1000
@@ -238,7 +238,7 @@ def requestNewWork(self,rendererLoc):
return
try:
job = self.jobQueue.get_nowait()
- except Queue.Empty:
+ except queue.Empty:
# No work to give! Do nothing.
return
diff --git a/otp/src/snapshot/SnapshotRendererUD.py b/otp/src/snapshot/SnapshotRendererUD.py
index 5eece008..f64ff886 100644
--- a/otp/src/snapshot/SnapshotRendererUD.py
+++ b/otp/src/snapshot/SnapshotRendererUD.py
@@ -6,7 +6,7 @@
from direct.directnotify.DirectNotifyGlobal import directNotify
from direct.task import Task
-import Queue
+import queue
from direct.distributed.AsyncRequest import AsyncRequest
from pandac.PandaModules import Thread
@@ -84,7 +84,7 @@ def delete(self):
# -- Internal methods --
def renderSnapshot(self,jobId,avatarId,avatarDNA,writeToFile):
- print "OTP-level renderSnapshot method called! You should override this!"
+ print("OTP-level renderSnapshot method called! You should override this!")
def errorFetchingAvatar(self,jobId,avatarId):
"""
diff --git a/otp/src/snapshot/SnapshotWebServer.py b/otp/src/snapshot/SnapshotWebServer.py
index 677a3c77..fd05bb10 100644
--- a/otp/src/snapshot/SnapshotWebServer.py
+++ b/otp/src/snapshot/SnapshotWebServer.py
@@ -29,7 +29,7 @@ def getSnapshot(self,avatarId):
except:
return "Error parsing argument avatarId. Gimme an integer!"
- print "getSnapshot %s" % avatarId
+ print("getSnapshot %s" % avatarId)
self.requestQueue.put_nowait(avatarId)
diff --git a/otp/src/speedchat/ColorSpace.py b/otp/src/speedchat/ColorSpace.py
index b2c6bb44..c19f40d6 100644
--- a/otp/src/speedchat/ColorSpace.py
+++ b/otp/src/speedchat/ColorSpace.py
@@ -72,10 +72,10 @@ def rgb2yuv(r,g,b):
y = .299*r + .587*g + .114*b
u = -.169*r - .331*g + .500*b + .5
v = .500*r - .419*g - .081*b + .5
- return tuple(map(lambda x: min(max(x,0),1), (y,u,v)))
+ return tuple([min(max(x,0),1) for x in (y,u,v)])
def yuv2rgb(y,u,v):
r = y - 0.0009267*(u-.5) + 1.4016868*(v-.5)
g = y - 0.3436954*(u-.5) - 0.7141690*(v-.5)
b = y + 1.7721604*(u-.5) + 0.0009902*(v-.5)
- return tuple(map(lambda x: min(max(x,0),1), (r,g,b)))
+ return tuple([min(max(x,0),1) for x in (r,g,b)])
diff --git a/otp/src/speedchat/SCColorPanel.py b/otp/src/speedchat/SCColorPanel.py
index a1355286..f8c6b66d 100644
--- a/otp/src/speedchat/SCColorPanel.py
+++ b/otp/src/speedchat/SCColorPanel.py
@@ -1,4 +1,4 @@
-from SCColorScheme import SCColorScheme
+from .SCColorScheme import SCColorScheme
from direct.tkwidgets.Valuator import *
colors = {}
@@ -6,7 +6,7 @@
def scRgbPanel(callback, title, initColor):
def getScaledColor(color, s):
- return tuple(map(lambda x: x*s, color))
+ return tuple([x*s for x in color])
sInitColor = getScaledColor(initColor, 255.)
vgp = ValuatorGroupPanel(title=title,
dim=3,
@@ -55,7 +55,7 @@ def updateAllPanels():
colors['frameColor'] = cs.getFrameColor()
# update the panels
- for panelName in colors.keys():
+ for panelName in list(colors.keys()):
p = panels[panelName].component('valuatorGroup')
c = colors[panelName]
p.component('valuator0').set(math.floor(c[0]*255))
@@ -84,7 +84,7 @@ def adjustSCColors():
'rolloverColor': cs.getRolloverColor(),
'frameColor': cs.getFrameColor(),
}
- for colorName in colors.keys():
+ for colorName in list(colors.keys()):
def handleCallback(color, colorName=colorName):
global colors
colors[colorName] = tuple(color)
diff --git a/otp/src/speedchat/SCColorScheme.py b/otp/src/speedchat/SCColorScheme.py
index 91b5d37e..75af9e29 100644
--- a/otp/src/speedchat/SCColorScheme.py
+++ b/otp/src/speedchat/SCColorScheme.py
@@ -1,6 +1,6 @@
"""SCColorScheme.py: contains the SCColorScheme class"""
-from ColorSpace import *
+from .ColorSpace import *
class SCColorScheme:
""" SCColorScheme is a class that holds all the information
diff --git a/otp/src/speedchat/SCCustomMenu.py b/otp/src/speedchat/SCCustomMenu.py
index 8cbd191a..f8ebb72b 100644
--- a/otp/src/speedchat/SCCustomMenu.py
+++ b/otp/src/speedchat/SCCustomMenu.py
@@ -1,7 +1,7 @@
"""SCCustomMenu.py: contains the SCCustomMenu class"""
-from SCMenu import SCMenu
-from SCCustomTerminal import SCCustomTerminal
+from .SCMenu import SCMenu
+from .SCCustomTerminal import SCCustomTerminal
from otp.otpbase.OTPLocalizer import CustomSCStrings
class SCCustomMenu(SCMenu):
@@ -26,5 +26,5 @@ def __customMessagesChanged(self):
return
for msgIndex in lt.customMessages:
- if CustomSCStrings.has_key(msgIndex):
+ if msgIndex in CustomSCStrings:
self.append(SCCustomTerminal(msgIndex))
diff --git a/otp/src/speedchat/SCCustomTerminal.py b/otp/src/speedchat/SCCustomTerminal.py
index db24fde5..e64f2bdb 100644
--- a/otp/src/speedchat/SCCustomTerminal.py
+++ b/otp/src/speedchat/SCCustomTerminal.py
@@ -1,6 +1,6 @@
"""SCCustomTerminal.py: contains the SCCustomTerminal class"""
-from SCTerminal import SCTerminal
+from .SCTerminal import SCTerminal
from otp.otpbase.OTPLocalizer import CustomSCStrings
# args: textId
diff --git a/otp/src/speedchat/SCDecoders.py b/otp/src/speedchat/SCDecoders.py
index 5be94e5a..ce1d24ed 100644
--- a/otp/src/speedchat/SCDecoders.py
+++ b/otp/src/speedchat/SCDecoders.py
@@ -5,6 +5,6 @@
string that corresponds to the encoded message. If there is a problem,
None is returned.
"""
-from SCStaticTextTerminal import decodeSCStaticTextMsg
-from SCCustomTerminal import decodeSCCustomMsg
-from SCEmoteTerminal import decodeSCEmoteWhisperMsg
+from .SCStaticTextTerminal import decodeSCStaticTextMsg
+from .SCCustomTerminal import decodeSCCustomMsg
+from .SCEmoteTerminal import decodeSCEmoteWhisperMsg
diff --git a/otp/src/speedchat/SCElement.py b/otp/src/speedchat/SCElement.py
index 1ec3bcea..c4cbea94 100644
--- a/otp/src/speedchat/SCElement.py
+++ b/otp/src/speedchat/SCElement.py
@@ -3,8 +3,8 @@
from pandac.PandaModules import *
from direct.gui.DirectGui import *
from direct.task import Task
-from SCConstants import *
-from SCObject import SCObject
+from .SCConstants import *
+from .SCObject import SCObject
from direct.showbase.PythonUtil import boolEqual
from otp.otpbase import OTPGlobals
@@ -198,7 +198,7 @@ def finalize(self, dbArgs={}):
# if we're given a 'center' value for the text alignment,
# calculate the appropriate text X position
textX = 0
- if dbArgs.has_key('text_align'):
+ if 'text_align' in dbArgs:
if dbArgs['text_align'] == TextNode.ACenter:
textX = self.width/2.
diff --git a/otp/src/speedchat/SCEmoteMenu.py b/otp/src/speedchat/SCEmoteMenu.py
index a510669b..3af0cd15 100644
--- a/otp/src/speedchat/SCEmoteMenu.py
+++ b/otp/src/speedchat/SCEmoteMenu.py
@@ -1,7 +1,7 @@
"""SCEmoteMenu.py: contains the SCEmoteMenu class"""
-from SCMenu import SCMenu
-from SCEmoteTerminal import SCEmoteTerminal
+from .SCMenu import SCMenu
+from .SCEmoteTerminal import SCEmoteTerminal
class SCEmoteMenu(SCMenu):
""" SCEmoteMenu represents a menu of SCEmoteTerminals. """
diff --git a/otp/src/speedchat/SCEmoteTerminal.py b/otp/src/speedchat/SCEmoteTerminal.py
index 2fdeb851..212fcb78 100644
--- a/otp/src/speedchat/SCEmoteTerminal.py
+++ b/otp/src/speedchat/SCEmoteTerminal.py
@@ -1,7 +1,7 @@
"""SCEmoteTerminal.py: contains the SCEmoteTerminal class"""
from direct.gui.DirectGui import *
-from SCTerminal import SCTerminal
+from .SCTerminal import SCTerminal
from otp.otpbase.OTPLocalizer import EmoteList, EmoteWhispers
from otp.avatar import Emote
diff --git a/otp/src/speedchat/SCGMTextTerminal.py b/otp/src/speedchat/SCGMTextTerminal.py
index e112e336..6e3ff26d 100644
--- a/otp/src/speedchat/SCGMTextTerminal.py
+++ b/otp/src/speedchat/SCGMTextTerminal.py
@@ -1,6 +1,6 @@
"""SCGMTextTerminal.py: contains the SCGMTextTerminal class"""
-from SCTerminal import SCTerminal
+from .SCTerminal import SCTerminal
from otp.speedchat import SpeedChatGMHandler
# args: textId
diff --git a/otp/src/speedchat/SCMenu.py b/otp/src/speedchat/SCMenu.py
index f56d9d0f..df6738e3 100644
--- a/otp/src/speedchat/SCMenu.py
+++ b/otp/src/speedchat/SCMenu.py
@@ -3,9 +3,9 @@
from pandac.PandaModules import *
from direct.gui.DirectGui import *
from direct.task import Task
-from SCConstants import *
+from .SCConstants import *
from direct.interval.IntervalGlobal import *
-from SCObject import SCObject
+from .SCObject import SCObject
from direct.showbase.PythonUtil import makeTuple
import types
@@ -106,7 +106,7 @@ def destroy(self):
del self.bgBottomRight
self.bg.removeNode()
del self.bg
-
+
self.holder = None
for member in self.__members:
member.destroy()
@@ -131,7 +131,7 @@ def rebuildFromStructure(self, structure, title=None):
""" This will destroy the current content of this menu and replace
it with the tree described by 'structure'."""
self.clearMenu()
-
+
if title:
holder = self.getHolder()
if holder:
@@ -160,9 +160,9 @@ def appendFromStructure(self, structure):
Emotes are attached to terminal elements using dictionaries:
{terminal:emoteId}
"""
- from SpeedChatTypes import SCMenuHolder, SCStaticTextTerminal, SCGMTextTerminal
+ from .SpeedChatTypes import SCMenuHolder, SCStaticTextTerminal, SCGMTextTerminal
from otp.otpbase import OTPLocalizer
-
+
def addChildren(menu, childList):
""" this recursive function adds children to an SCMenu
according to the specification in 'childList'. See above
@@ -172,8 +172,8 @@ def addChildren(menu, childList):
# if it's a dictionary, there's an emote attached
emote = None
if type(child) == type({}):
- assert len(child.keys()) == 1
- item = child.keys()[0]
+ assert len(list(child.keys())) == 1
+ item = list(child.keys())[0]
emote = child[item]
child = item
@@ -205,8 +205,8 @@ def addChildren(menu, childList):
subMenu = menuType()
subMenuChildren = child[2:]
if emote:
- print ('warning: tried to link emote %s '
- 'to a menu holder' % emote)
+ print(('warning: tried to link emote %s '
+ 'to a menu holder' % emote))
holder = SCMenuHolder(holderTitle, menu=subMenu)
menu.append(holder)
addChildren(subMenu, subMenuChildren)
@@ -215,7 +215,7 @@ def addChildren(menu, childList):
menu.append(terminal)
else:
raise ('error parsing speedchat structure. '
- 'invalid child: %s' % child)
+ 'invalid child: %s')
addChildren(self, structure)
# clean up memory leak
@@ -347,7 +347,7 @@ def memberGainedInputFocus(self, member):
# otherwise, don't switch the active member right away.
# if this element maintains the input focus for N seconds,
# make it active
-
+
def doActiveMemberSwitch(task, self=self, member=member):
self.activeCandidate = None
self.__setActiveMember(member)
@@ -506,7 +506,7 @@ def finalize(self):
# put the members in the right place, and tell them what size
# they should be
- for i in xrange(len(visibleMembers)):
+ for i in range(len(visibleMembers)):
member = visibleMembers[i]
member.setPos(0,0,-i * maxHeight)
member.setDimensions(memberWidth, memberHeight)
@@ -528,7 +528,7 @@ def finalize(self):
# keep the menu from going off the top of the screen
if self.getZ(aspect2d) > 1.:
self.setZ(aspect2d, 1.)
-
+
# set up the background frame
sX = memberWidth
sZ = memberHeight * len(visibleMembers)
@@ -583,7 +583,7 @@ def finalize(self):
# above.
def append(self, element):
# Appends a single element to the list so far.
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
self.__members.append(element)
self.privMemberListChanged(added=[element])
@@ -603,40 +603,40 @@ def __getitem__(self, index):
return self.__members[index]
def __setitem__(self, index, value):
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
removedMember = self.__members[index]
self.__members[index] = value
self.privMemberListChanged(added=[value], removed=[removedMember])
def __delitem__(self, index):
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
removedMember = self.__members[index]
del self.__members[index]
self.privMemberListChanged(removed=[removedMember])
def __getslice__(self, i, j):
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
return self.__members[i:j]
def __setslice__(self, i, j, s):
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
removedMembers = self.__members[i:j]
self.__members[i:j] = list(s)
self.privMemberListChanged(added=list(s), removed=removedMembers)
def __delslice__(self, i, j):
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
removedMembers = self.__members[i:j]
del self.__members[i:j]
self.privMemberListChanged(removed=removedMembers)
def __iadd__(self, other):
- if isinstance(self.__members, types.TupleType):
+ if isinstance(self.__members, tuple):
self.__members = list(self.__members)
if isinstance(other, SCMenu):
otherMenu = other
@@ -648,7 +648,7 @@ def __iadd__(self, other):
def privMemberListChanged(self, added=None, removed=None):
assert added or removed
-
+
if removed is not None:
for element in removed:
# if this element is our active member, we no longer have an
diff --git a/otp/src/speedchat/SCMenuHolder.py b/otp/src/speedchat/SCMenuHolder.py
index 3b937d95..d82c442d 100644
--- a/otp/src/speedchat/SCMenuHolder.py
+++ b/otp/src/speedchat/SCMenuHolder.py
@@ -2,9 +2,9 @@
from pandac.PandaModules import *
from direct.gui.DirectGui import *
-from SCObject import SCObject
-from SCElement import SCElement
-from SCMenu import SCMenu
+from .SCObject import SCObject
+from .SCElement import SCElement
+from .SCMenu import SCMenu
import types
class SCMenuHolder(SCElement):
diff --git a/otp/src/speedchat/SCSettings.py b/otp/src/speedchat/SCSettings.py
index b1abdcaa..b9d7f338 100644
--- a/otp/src/speedchat/SCSettings.py
+++ b/otp/src/speedchat/SCSettings.py
@@ -1,6 +1,6 @@
"""SCSettings.py: contains the SCSettings class"""
-from SCColorScheme import SCColorScheme
+from .SCColorScheme import SCColorScheme
from otp.otpbase import OTPLocalizer
class SCSettings:
diff --git a/otp/src/speedchat/SCStaticTextTerminal.py b/otp/src/speedchat/SCStaticTextTerminal.py
index 71c33190..bac38392 100644
--- a/otp/src/speedchat/SCStaticTextTerminal.py
+++ b/otp/src/speedchat/SCStaticTextTerminal.py
@@ -1,6 +1,6 @@
"""SCStaticTextTerminal.py: contains the SCStaticTextTerminal class"""
-from SCTerminal import SCTerminal
+from .SCTerminal import SCTerminal
from otp.otpbase.OTPLocalizer import SpeedChatStaticText
# args: textId
diff --git a/otp/src/speedchat/SCTerminal.py b/otp/src/speedchat/SCTerminal.py
index cb213e62..f91cbbcf 100644
--- a/otp/src/speedchat/SCTerminal.py
+++ b/otp/src/speedchat/SCTerminal.py
@@ -1,8 +1,8 @@
"""SCTerminal.py: contains the SCTerminal class"""
-from SCElement import SCElement
-from SCObject import SCObject
-from SCMenu import SCMenu
+from .SCElement import SCElement
+from .SCObject import SCObject
+from .SCMenu import SCMenu
from direct.fsm.StatePush import StateVar, FunctionCall
from direct.showbase.DirectObject import DirectObject
from otp.avatar import Emote
@@ -106,12 +106,12 @@ def linkedEmoteEnabled(self):
def getCharges(self):
return self.__numCharges
-
+
def setCharges(self, nCharges):
self.__numCharges = nCharges
- if (nCharges is 0):
+ if (nCharges == 0):
self.setDisabled(True)
-
+
# support for disabled terminals
def isDisabled(self):
return self.__disabled or (self.isWhispering() and not self.isWhisperable())
@@ -217,7 +217,7 @@ def exitVisible(self):
self.ignore(Emote.globalEmote.EmoteEnableStateChanged)
def getDisplayText(self):
- if self.getCharges() is not -1:
+ if self.getCharges() != -1:
return self.text + " (%s)" % self.getCharges()
else:
return self.text
diff --git a/otp/src/speedchat/SpeedChat.py b/otp/src/speedchat/SpeedChat.py
index 96f2f3f4..8e3f80b5 100644
--- a/otp/src/speedchat/SpeedChat.py
+++ b/otp/src/speedchat/SpeedChat.py
@@ -1,9 +1,9 @@
"""SpeedChat.py: contains the SpeedChat class"""
from direct.showbase.PythonUtil import boolEqual
-from SpeedChatTypes import *
-from SCSettings import SCSettings
-from SCTerminal import SCWhisperModeChangeEvent
+from .SpeedChatTypes import *
+from .SCSettings import SCSettings
+from .SCTerminal import SCWhisperModeChangeEvent
from otp.otpbase import OTPLocalizer
# for speedchat tech details, see the bottom of this file.
diff --git a/otp/src/speedchat/SpeedChatGlobals.py b/otp/src/speedchat/SpeedChatGlobals.py
index 027cab14..5b90065f 100644
--- a/otp/src/speedchat/SpeedChatGlobals.py
+++ b/otp/src/speedchat/SpeedChatGlobals.py
@@ -9,12 +9,12 @@
# speedChat.getEventName(eventBaseName)
# where 'speedChat' is your SpeedChat object, and 'eventBaseName' is
# one of the following:
-from SCTerminal import SCTerminalSelectedEvent
-from SCTerminal import SCTerminalLinkedEmoteEvent
-from SCStaticTextTerminal import SCStaticTextMsgEvent
-from SCGMTextTerminal import SCGMTextMsgEvent
-from SCCustomTerminal import SCCustomMsgEvent
-from SCEmoteTerminal import SCEmoteMsgEvent, SCEmoteNoAccessEvent
+from .SCTerminal import SCTerminalSelectedEvent
+from .SCTerminal import SCTerminalLinkedEmoteEvent
+from .SCStaticTextTerminal import SCStaticTextMsgEvent
+from .SCGMTextTerminal import SCGMTextMsgEvent
+from .SCCustomTerminal import SCCustomMsgEvent
+from .SCEmoteTerminal import SCEmoteMsgEvent, SCEmoteNoAccessEvent
# SCColorSchemeChangeMsgEvent
diff --git a/otp/src/speedchat/SpeedChatTypes.py b/otp/src/speedchat/SpeedChatTypes.py
index 8282f1c8..2607145a 100644
--- a/otp/src/speedchat/SpeedChatTypes.py
+++ b/otp/src/speedchat/SpeedChatTypes.py
@@ -1,19 +1,19 @@
"""SpeedChatTypes.py: SpeedChat types """
-from SCObject import SCObject
+from .SCObject import SCObject
-from SCMenu import SCMenu
+from .SCMenu import SCMenu
-from SCElement import SCElement
-from SCMenuHolder import SCMenuHolder
-from SCTerminal import SCTerminal
+from .SCElement import SCElement
+from .SCMenuHolder import SCMenuHolder
+from .SCTerminal import SCTerminal
-from SCCustomMenu import SCCustomMenu
-from SCEmoteMenu import SCEmoteMenu
+from .SCCustomMenu import SCCustomMenu
+from .SCEmoteMenu import SCEmoteMenu
-from SCStaticTextTerminal import SCStaticTextTerminal
-from SCGMTextTerminal import SCGMTextTerminal
-from SCCustomTerminal import SCCustomTerminal
-from SCEmoteTerminal import SCEmoteTerminal
+from .SCStaticTextTerminal import SCStaticTextTerminal
+from .SCGMTextTerminal import SCGMTextTerminal
+from .SCCustomTerminal import SCCustomTerminal
+from .SCEmoteTerminal import SCEmoteTerminal
-from SCColorScheme import SCColorScheme
+from .SCColorScheme import SCColorScheme
diff --git a/otp/src/status/StatusDatabaseUD.py b/otp/src/status/StatusDatabaseUD.py
index 6d285454..6873f117 100644
--- a/otp/src/status/StatusDatabaseUD.py
+++ b/otp/src/status/StatusDatabaseUD.py
@@ -42,7 +42,7 @@ def __init__(self, air):
try:
cursor.execute("CREATE DATABASE `%s`"%self.DBname)
self.notify.info("Database '%s' did not exist, created a new one!"%self.DBname)
- except _mysql_exceptions.ProgrammingError,e:
+ except _mysql_exceptions.ProgrammingError as e:
pass
cursor.execute("USE `%s`"%self.DBname)
@@ -57,7 +57,7 @@ def __init__(self, air):
) ENGINE=InnoDB
""")
self.notify.info("Table offlineAvatarStatus did not exist, created a new one!")
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
pass
if __dev__:
diff --git a/otp/src/switchboard/FriendManagerService_services.py b/otp/src/switchboard/FriendManagerService_services.py
index ef701e2e..45e34016 100644
--- a/otp/src/switchboard/FriendManagerService_services.py
+++ b/otp/src/switchboard/FriendManagerService_services.py
@@ -4,8 +4,8 @@
##################################################
-from FriendManagerService_services_types import *
-import urlparse, types
+from .FriendManagerService_services_types import *
+import urllib.parse, types
from ZSI.TCcompound import ComplexType, Struct
from ZSI import client
import ZSI
@@ -39,7 +39,7 @@ def generateToken(self, user_id):
# no output wsaction
response = self.binding.Receive(generateTokenResponse.typecode)
if isinstance(response, generateTokenResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
generateTokenReturn = response._generateTokenReturn
return generateTokenReturn
@@ -60,7 +60,7 @@ def generateTokenParentAuth(self, user_id,username,password,affiliate,browserAge
# no output wsaction
response = self.binding.Receive(generateTokenParentAuthResponse.typecode)
if isinstance(response, generateTokenParentAuthResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
generateTokenParentAuthReturn = response._generateTokenParentAuthReturn
return generateTokenParentAuthReturn
@@ -77,7 +77,7 @@ def redeemToken(self, user_id,token):
# no output wsaction
response = self.binding.Receive(redeemTokenResponse.typecode)
if isinstance(response, redeemTokenResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
redeemTokenReturn = response._redeemTokenReturn
return redeemTokenReturn
@@ -99,7 +99,7 @@ def redeemTokenParentAuth(self, user_id,token,username,password,affiliate,browse
# no output wsaction
response = self.binding.Receive(redeemTokenParentAuthResponse.typecode)
if isinstance(response, redeemTokenParentAuthResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
redeemTokenParentAuthReturn = response._redeemTokenParentAuthReturn
return redeemTokenParentAuthReturn
@@ -116,7 +116,7 @@ def makeCasualFriends(self, user_id1,user_id2):
# no output wsaction
response = self.binding.Receive(makeCasualFriendsResponse.typecode)
if isinstance(response, makeCasualFriendsResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
return
# op:
@@ -133,7 +133,7 @@ def makeFriends(self, user_id1,user_id2,is_secret):
# no output wsaction
response = self.binding.Receive(makeFriendsResponse.typecode)
if isinstance(response, makeFriendsResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
return
# op:
@@ -148,7 +148,7 @@ def getFriends(self, user_id):
# no output wsaction
response = self.binding.Receive(getFriendsResponse.typecode)
if isinstance(response, getFriendsResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
getFriendsReturn = response._getFriendsReturn
return getFriendsReturn
@@ -164,7 +164,7 @@ def getNamedFriends(self, user_id):
# no output wsaction
response = self.binding.Receive(getNamedFriendsResponse.typecode)
if isinstance(response, getNamedFriendsResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
getNamedFriendsReturn = response._getNamedFriendsReturn
return getNamedFriendsReturn
@@ -180,7 +180,7 @@ def getTokens(self, user_id):
# no output wsaction
response = self.binding.Receive(getTokensResponse.typecode)
if isinstance(response, getTokensResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
getTokensReturn = response._getTokensReturn
return getTokensReturn
@@ -197,7 +197,7 @@ def deleteFriend(self, friend1,friend2):
# no output wsaction
response = self.binding.Receive(deleteFriendResponse.typecode)
if isinstance(response, deleteFriendResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
return
# op:
@@ -211,7 +211,7 @@ def generateRandomToken(self):
# no output wsaction
response = self.binding.Receive(generateRandomTokenResponse.typecode)
if isinstance(response, generateRandomTokenResponse.typecode.pyclass) is False:
- raise TypeError, "%s incorrect response type" % (response.__class__)
+ raise TypeError("%s incorrect response type" % (response.__class__))
generateRandomTokenReturn = response._generateRandomTokenReturn
return generateRandomTokenReturn
diff --git a/otp/src/switchboard/LastSeenDB.py b/otp/src/switchboard/LastSeenDB.py
index e90515b5..3fad94dc 100644
--- a/otp/src/switchboard/LastSeenDB.py
+++ b/otp/src/switchboard/LastSeenDB.py
@@ -28,7 +28,7 @@ def __init__(self,log,host,port,user,passwd,dbname):
port=port,
user=user,
passwd=passwd)
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.log.warning("Failed to connect to MySQL at %s:%d. LastSeenDB is disabled."%(host,port))
self.sqlAvailable = 0
return
@@ -82,7 +82,7 @@ def getInfo(self,playerId,isRetry=False):
sublocation = info['sublocation'],
timestamp = info['lastupdate'])
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry == True:
self.log.error("Error on getInfo retry, giving up:\n%s" % str(e))
return FriendInfo(playerName="NotFound")
@@ -93,7 +93,7 @@ def getInfo(self,playerId,isRetry=False):
self.log.error("Unknown error on getInfo, retrying:\n%s" % str(e))
self.reconnect()
return self.getInfo(playerId,True)
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error on getInfo, giving up:\n%s" % str(e))
return FriendInfo(playerName="NotFound")
@@ -115,7 +115,7 @@ def setInfo(self,playerId,info,isRetry=False):
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry == True:
self.log.error("Error on setInfo retry, giving up:\n" % str(e))
return
@@ -128,7 +128,7 @@ def setInfo(self,playerId,info,isRetry=False):
self.reconnect()
self.setInfo(playerId,info,True)
return
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error on setInfo, giving up:\n%s" % str(e))
return
@@ -143,7 +143,7 @@ def getTableStatus(self,isRetry=False):
cursor.execute("USE `%s`"%self.dbname)
cursor.execute("show table status")
return cursor.fetchallDict()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry == True:
self.log.error("Error on getTableStatus retry, giving up:\n" % str(e))
return None
@@ -154,6 +154,6 @@ def getTableStatus(self,isRetry=False):
self.log.error("Unknown error on getTableStatus, retrying:\n%s" % str(e))
self.reconnect()
return self.getTableStatus(True)
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error on getTableStatus, giving up:\n%s" % str(e))
return None
diff --git a/otp/src/switchboard/PlayerFriendsDB.py b/otp/src/switchboard/PlayerFriendsDB.py
index 68cd1c8e..04d37293 100644
--- a/otp/src/switchboard/PlayerFriendsDB.py
+++ b/otp/src/switchboard/PlayerFriendsDB.py
@@ -3,7 +3,7 @@
import datetime
#from otp.distributed import OtpDoGlobals
#from direct.directnotify.DirectNotifyGlobal import directNotify
-import FriendManagerService_services
+from . import FriendManagerService_services
class PlayerFriendsDB:
@@ -23,7 +23,7 @@ def __init__(self,log,url):
def getFriends(self,playerId):
friends = self.soapProxy.getFriends(playerId)
- return map(lambda x:[x._friendId,x._secret],friends)
+ return [[x._friendId,x._secret] for x in friends]
def addFriendship(self,playerId1,playerId2,secretYesNo=1):
self.soapProxy.makeFriends(playerId1,playerId2,secretYesNo)
diff --git a/otp/src/switchboard/bench.py b/otp/src/switchboard/bench.py
index 0591e7ff..9a882789 100644
--- a/otp/src/switchboard/bench.py
+++ b/otp/src/switchboard/bench.py
@@ -24,7 +24,7 @@
time.sleep(5)
-print '-------- BENCHMARK REMOTE OBJECT ---------'
+print('-------- BENCHMARK REMOTE OBJECT ---------')
begin = time.time()
#for f in funcs:
voor = time.time()
@@ -41,11 +41,11 @@
try:
duration = time.time()-begin
- print 'total time %.4f seconds' % duration
- print 'total method calls',iters
+ print('total time %.4f seconds' % duration)
+ print('total method calls',iters)
avg_pyro_msec = 1000.0*duration/(iters)
- print 'avg. time per method call: %.4f' % avg_pyro_msec ,"msec"
- print 'msg/sec: %.4f' % (iters/duration)
+ print('avg. time per method call: %.4f' % avg_pyro_msec ,"msec")
+ print('msg/sec: %.4f' % (iters/duration))
except:
pass
sys.stdout.flush()
diff --git a/otp/src/switchboard/dummyWedge.py b/otp/src/switchboard/dummyWedge.py
index e56f8c29..e7236a2c 100644
--- a/otp/src/switchboard/dummyWedge.py
+++ b/otp/src/switchboard/dummyWedge.py
@@ -5,7 +5,7 @@
import sys
import socket
-from sbWedge import sbWedge
+from .sbWedge import sbWedge
class dummySocketWedge(sbWedge):
def __init__(self):
@@ -19,7 +19,7 @@ def run(self):
while True:
try:
- print "Starting"
+ print("Starting")
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('',8989))
sock.listen(5)
@@ -34,7 +34,7 @@ def run(self):
data = clisock.recv(1)
s = s + data
if data == "\n":
- print s,
+ print(s, end=' ')
sys.stdout.flush()
clisock.sendall(s)
s = ""
@@ -43,5 +43,5 @@ def run(self):
clisock.close()
sock.close()
- except Exception,e:
- print e
+ except Exception as e:
+ print(e)
diff --git a/otp/src/switchboard/sbLog.py b/otp/src/switchboard/sbLog.py
index 189bec0a..9521d765 100644
--- a/otp/src/switchboard/sbLog.py
+++ b/otp/src/switchboard/sbLog.py
@@ -1,8 +1,8 @@
import sys
import time
import socket
-import Queue
-import sbConfig
+import queue
+from . import sbConfig
class sbLog:
def __init__(self,name,clHost=None,clPort=6060):
@@ -10,7 +10,7 @@ def __init__(self,name,clHost=None,clPort=6060):
self.clHost = clHost
self.clPort = clPort
- self.inMemLog = Queue.Queue()
+ self.inMemLog = queue.Queue()
if clHost:
# init UDP stuff
@@ -22,13 +22,13 @@ def timeString(self):
def output(self,level,msg):
str = "%s %s(%s): %s"%(self.timeString(),self.name,level,msg)
- print str
+ print(str)
self.memLog(str)
sys.stdout.flush()
def chatoutput(self,msg):
str = "%s %s(chat): %s"%(self.timeString(),self.name,msg)
- print str
+ print(str)
self.memLog(str)
sys.stdout.flush()
@@ -39,7 +39,7 @@ def memLog(self,str):
def getMemLog(self):
res = ""
- for i in xrange(self.inMemLog.qsize()):
+ for i in range(self.inMemLog.qsize()):
s = self.inMemLog.get()
res += s + "\n"
self.inMemLog.put(s)
diff --git a/otp/src/switchboard/sbMaildb.py b/otp/src/switchboard/sbMaildb.py
index 938a43ca..5ea37d90 100644
--- a/otp/src/switchboard/sbMaildb.py
+++ b/otp/src/switchboard/sbMaildb.py
@@ -29,7 +29,7 @@ def __init__(self,log,host,port,user,passwd,db):
user=user,
passwd=passwd,
db=db)
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
self.log.warning("Failed to connect to MySQL at %s:%d. sbMaildb is disabled."%(host,port))
self.log.warning("Error detail: %s"%str(e))
self.sqlAvailable = False
@@ -76,7 +76,7 @@ def getMail(self,recipientId,isRetry=False):
#self.log.debug("Select was successful in sbMaildb, returning %s" % str(res))
return res
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry == True:
self.log.error("Error on getMail retry, giving up:\n%s" % str(e))
return ()
@@ -87,7 +87,7 @@ def getMail(self,recipientId,isRetry=False):
self.log.error("Unknown error in getMail, retrying:\n%s" % str(e))
self.reconnect()
return self.getMail(recipientId,True)
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error in getMail, giving up:\n%s" % str(e))
return ()
@@ -111,7 +111,7 @@ def putMail(self,recipientId,senderId,message,isRetry=False):
(recipientId,senderId,message))
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry == True:
self.log.error("Error on putMail retry, giving up:\n%s" % str(e))
return
@@ -122,7 +122,7 @@ def putMail(self,recipientId,senderId,message,isRetry=False):
self.log.error("Unknown error in putMail, retrying:\n%s" % str(e))
self.reconnect()
self.putMail(recipientId,senderId,message,True)
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error in putMail, giving up:\n%s" % str(e))
return
@@ -142,7 +142,7 @@ def deleteMail(self,accountId,messageId,isRetry=False):
self.db.commit()
- except _mysql_exceptions.OperationalError,e:
+ except _mysql_exceptions.OperationalError as e:
if isRetry == True:
self.log.error("Error in deleteMail retry, giving up:\n%s" % str(e))
return
@@ -153,7 +153,7 @@ def deleteMail(self,accountId,messageId,isRetry=False):
self.log.error("Unnown error in deleteMail, retrying:\n%s" % str(e))
self.reconnect()
self.deleteMail(accountId,messageId,True)
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error in deleteMail, giving up:\n%s" % str(e))
return
diff --git a/otp/src/switchboard/sbMonitor.py b/otp/src/switchboard/sbMonitor.py
index aee0e0cb..053e94e0 100644
--- a/otp/src/switchboard/sbMonitor.py
+++ b/otp/src/switchboard/sbMonitor.py
@@ -5,11 +5,11 @@
import getopt
import cherrypy
-import sbConfig
-from sbLog import sbLog
+from . import sbConfig
+from .sbLog import sbLog
-from LastSeenDB import LastSeenDB
-from sbMaildb import sbMaildb
+from .LastSeenDB import LastSeenDB
+from .sbMaildb import sbMaildb
class sbMonitor(object):
def __init__(self):
@@ -314,7 +314,7 @@ def header(self,current):
'''
linkNum = 0
- for link in self.menu.keys():
+ for link in list(self.menu.keys()):
if linkNum == 0:
if link == current:
pageText += "%s\n" % \
diff --git a/otp/src/switchboard/sbNode.py b/otp/src/switchboard/sbNode.py
index f5c8b5af..08955575 100644
--- a/otp/src/switchboard/sbNode.py
+++ b/otp/src/switchboard/sbNode.py
@@ -4,8 +4,8 @@
import sys
import time
-from sbLog import sbLog
-import sbConfig
+from .sbLog import sbLog
+from . import sbConfig
from Pyro.errors import ConnectionClosedError
from Pyro.errors import ProtocolError
@@ -53,7 +53,7 @@ def __init__(self,
self.log.info("Starting.")
# DISL SOAP init (temporary)
- from PlayerFriendsDB import PlayerFriendsDB
+ from .PlayerFriendsDB import PlayerFriendsDB
self.friendsDB = PlayerFriendsDB(self.log,dislURL)
# DISL MD init
@@ -62,7 +62,7 @@ def __init__(self,
# db init
- from LastSeenDB import LastSeenDB
+ from .LastSeenDB import LastSeenDB
self.lastSeenDB = LastSeenDB(log=self.log,
host=sbConfig.lastSeenDBhost,
port=sbConfig.lastSeenDBport,
@@ -70,7 +70,7 @@ def __init__(self,
passwd=sbConfig.lastSeenDBpasswd,
dbname=sbConfig.lastSeenDBdb)
- from sbMaildb import sbMaildb
+ from .sbMaildb import sbMaildb
self.mailDB = sbMaildb(log=self.log,
host=sbConfig.mailDBhost,
port=sbConfig.mailDBport,
@@ -204,17 +204,17 @@ def handleDISLSendFriendsList(self,message):
friends = []
- for i in xrange(1,len(tempVals)-1,2):
+ for i in range(1,len(tempVals)-1,2):
friends.append([int(tempVals[i]),int(tempVals[i+1])])
#self.log.debug(str(friends))
- except Exception,e:
+ except Exception as e:
self.parsingError(message)
self.log.error(str(e))
return
#self.log.debug("localPlayers: %s"%self.localPlayers)
- if self.localPlayers.has_key(friendOne):
+ if friendOne in self.localPlayers:
# add the new friendships
for friend in friends:
friendTwo = friend[0]
@@ -247,10 +247,10 @@ def handleDISLSendNewFriendship(self,message):
friends = []
- for i in xrange(1,len(tempVals)-1,2):
+ for i in range(1,len(tempVals)-1,2):
friends.append([int(tempVals[i]),int(tempVals[i+1])])
#self.log.debug(str(friends))
- except Exception,e:
+ except Exception as e:
self.parsingError(message)
self.log.error(str(e))
return
@@ -265,11 +265,11 @@ def handleDISLSendNewFriendship(self,message):
else:
secret = False
- if self.id2Friends.has_key(friendOne):
+ if friendOne in self.id2Friends:
self.id2Friends[friendOne][friendTwo] = secret
self.sendLocalFriendsUpdate(friendOne,[[friendTwo,secret],])
- if self.id2Friends.has_key(friendTwo):
+ if friendTwo in self.id2Friends:
self.id2Friends[friendTwo][friendOne] = secret
self.sendLocalFriendsUpdate(friendTwo,[[friendOne,secret],])
@@ -294,16 +294,16 @@ def handleDISLSendFriendRemove(self,message):
#self.log.debug("Friends before removal: %s" % str(self.id2Friends))
# update my in-memory lists
- if self.id2Friends.has_key(friendOne):
+ if friendOne in self.id2Friends:
self.id2Friends[friendOne].pop(friendTwo,None)
- if self.id2Friends.has_key(friendTwo):
+ if friendTwo in self.id2Friends:
self.id2Friends[friendTwo].pop(friendOne,None)
#self.log.debug("Friends after removal: %s" % str(self.id2Friends))
# notify both friends
- if self.localPlayers.has_key(friendOne) or self.localPlayers.has_key(friendTwo):
+ if friendOne in self.localPlayers or friendTwo in self.localPlayers:
self.sendLocalFriendshipRemoved(friendOne,friendTwo)
@@ -340,7 +340,7 @@ def sendEnterNode(self):
self.log.debug("poking wedge")
try:
self.wedge.recvEnterNode(self.nodeName)
- except Exception,e:
+ except Exception as e:
self.log.info("Couldn't contact sb.wedge.%s, wedge is None." % self.nodeName)
self.wedge = None
@@ -349,7 +349,7 @@ def sendEnterNode(self):
try:
proxy = self.nodeProxy[node]
proxy.recvEnterNode(self.nodeName)
- except Exception,e:
+ except Exception as e:
self.log.info("Couldn't contact sb.node.%s, removing from nodelist." % node)
self.nodeList.remove(node)
del self.nodeProxy[node]
@@ -439,7 +439,7 @@ def updateNodes(self):
#wedge->node
def recvEnterLocalPlayer(self,playerId,playerInfo):
- if self.localPlayers.has_key(playerId):
+ if playerId in self.localPlayers:
self.log.warning("Warning: enterPlayer(%d) called, but I already have this player."%(playerId))
self.log.debug("Player %d entered." % (playerId))
@@ -461,7 +461,7 @@ def recvEnterLocalPlayer(self,playerId,playerInfo):
sbConfig.DISL2SBChannel+self.nodeName,
sbConfig.FC_DISLGetFriends,
"%d"%playerId))
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending friends request to DISL:")
self.log.error(''.join(Pyro.util.getPyroTraceback(e)))
@@ -471,7 +471,7 @@ def recvEnterLocalPlayer(self,playerId,playerInfo):
#wedge->node
def recvExitLocalPlayer(self,playerId,playerInfo=None):
- if not self.localPlayers.has_key(playerId):
+ if playerId not in self.localPlayers:
self.log.warning("Warning: exitPlayer(%d) called, but I don't have this one."%playerId)
self.log.debug("Player %d exited." % playerId)
@@ -491,13 +491,13 @@ def sendEnterRemotePlayer(self,playerId,playerInfo,friendsList):
try:
for node in self.nodeList:
self.nodeProxy[node].recvEnterRemotePlayer(playerId,self.nodeName,playerInfo,friendsList)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendEnterRemotePlayer. Refreshing all nodes.")
self.updateNodes()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendEnterRemotePlayer. Refreshing all nodes."%str(e))
self.updateNodes()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending enterRemotePlayer to sb.node.%s: %s" % (node,''.join(Pyro.util.getPyroTraceback(e))))
@@ -506,19 +506,19 @@ def sendExitRemotePlayer(self,playerId,friendsList):
try:
for node in self.nodeList:
self.nodeProxy[node].recvExitRemotePlayer(playerId,self.nodeName,friendsList)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendExitRemotePlayer. Refreshing all nodes.")
self.updateNodes()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendExitRemotePlayer. Refreshing all nodes."%str(e))
self.updateNodes()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending exitRemotePlayer to sb.node.%s: %s" % (node,''.join(Pyro.util.getPyroTraceback(e))))
#node->node
def recvEnterRemotePlayer(self,playerId,nodeName,playerInfo,friendsList):
- if self.remotePlayerLoc.has_key(playerId):
+ if playerId in self.remotePlayerLoc:
self.log.warning("Warning: enterRemotePlayer(%d) called, but I already see this player."%(playerId))
self.log.debug("Saw player %d enter at :sb.node.%s."%(playerId,nodeName))
@@ -531,13 +531,13 @@ def recvEnterRemotePlayer(self,playerId,nodeName,playerInfo,friendsList):
if self.wedge is not None:
try:
self.wedge.recvEnterRemotePlayer(playerId,playerInfo,friendsList)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvEnterRemotePlayer. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvEnterRemotePlayer. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send player enter notice to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %s, %s, %s"%(str(playerId),str(playerInfo),str(friendsList)))
else:
@@ -545,7 +545,7 @@ def recvEnterRemotePlayer(self,playerId,nodeName,playerInfo,friendsList):
#node->node
def recvExitRemotePlayer(self,playerId,nodeName,friendsList):
- if not self.remotePlayerLoc.has_key(playerId):
+ if playerId not in self.remotePlayerLoc:
self.log.warning("Warning: exitRemotePlayer(%d) called, but I don't see this player. Ignoring."%(playerId))
return
@@ -559,13 +559,13 @@ def recvExitRemotePlayer(self,playerId,nodeName,friendsList):
if self.wedge is not None:
try:
self.wedge.recvExitRemotePlayer(playerId,friendsList)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvExitRemotePlayer. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvExitRemotePlayer. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send player exit notice to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
else:
self.log.warning("ExitRemotePlayer: No wedge connected!")
@@ -579,23 +579,23 @@ def addFriendship(self,playerId1,playerId2):
err = None
try:
self.friendsDB.addFriendship(playerId1,playerId2)
- except Exception,e:
+ except Exception as e:
try:
for d in e.fault.detail:
if d.nodeName.find("errcode") != -1:
err = d.childNodes[0].get_data()
- except Exception,ex:
+ except Exception as ex:
self.log.error("Unknown exception in removeFriendship: %s" % str(e))
if err is not None:
try:
self.wedge.recvAddFriendshipError(playerId,err)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvSecretRequestError. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvSecretRequestError. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send recvAddFriendshipError to my wedge")
@@ -603,12 +603,12 @@ def removeFriendship(self,playerId1,playerId2):
self.log.debug("Got removeFriendship request")
try:
self.friendsDB.removeFriendship(playerId1,playerId2)
- except Exception,e:
+ except Exception as e:
try:
for d in e.fault.detail:
if d.nodeName.find("errcode") != -1:
err = d.childNodes[0].get_data()
- except Exception,ex:
+ except Exception as ex:
self.log.error("Unknown exception in removeFriendship: %s" % str(e))
@@ -618,35 +618,35 @@ def recvSecretRequest(self,playerId,parentUsername,parentPassword):
err = None
try:
secret = self.friendsDB.getToken(playerId)
- except Exception,e:
+ except Exception as e:
try:
for d in e.fault.detail:
if d.nodeName.find("errcode") != -1:
err = d.childNodes[0].get_data()
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown exception in generateToken: %s" % str(e))
if err is None:
try:
self.wedge.recvSecretGenerated(playerId,secret)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvSecretGenerated. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvSecretGenerated. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send recvSecretGenerated to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
else:
try:
self.wedge.recvSecretRequestError(playerId,err)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvSecretRequestError. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvSecretRequestError. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send recvSecretRequestError to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
def recvSecretRedeem(self,playerId,secret,parentUsername,parentPassword):
@@ -654,37 +654,37 @@ def recvSecretRedeem(self,playerId,secret,parentUsername,parentPassword):
err = None
try:
res = self.friendsDB.redeemToken(playerId,secret)
- except Exception,e:
+ except Exception as e:
try:
for d in e.fault.detail:
if d.nodeName.find("errcode") != -1:
err = d.childNodes[0]._get_data()
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown exception in redeemToken: %s" % str(e))
if err is not None:
try:
self.wedge.recvSecretRedeemError(playerId,err)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvSecretRedeemError. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvSecretRedeemError. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send recvSecretRedeemError to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
def _getFriendInfo(self,playerId):
- if self.localPlayers.has_key(playerId):
+ if playerId in self.localPlayers:
return self.localPlayers[playerId]
- elif self.remotePlayerInfo.has_key(playerId):
+ elif playerId in self.remotePlayerInfo:
return self.remotePlayerInfo[playerId]
else:
return self.lastSeenDB.getInfo(playerId)
def _getFriendView(self,viewerId,friendId):
info = self._getFriendInfo(friendId)
- assert self.id2Friends.has_key(viewerId)
+ assert viewerId in self.id2Friends
if self.id2Friends[viewerId][friendId] is True:
info.openChatFriendshipYesNo = 1
else:
@@ -702,13 +702,13 @@ def sendLocalFriendsUpdate(self,friendOne,friends):
friend[1] = self._getFriendView(friendOne,friend[0])
try:
self.wedge.recvFriendsUpdate(friendOne,friends)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendLocalFriendsUpdate. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendLocalFriendsUpdate. Reconnecting to wedge."%str(e))
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't sendLocalFriendsUpdate to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %d, %s"%(friendOne,friends))
else:
@@ -719,13 +719,13 @@ def sendLocalFriendshipRemoved(self,friendOne,friendTwo):
if self.wedge is not None:
try:
self.wedge.recvFriendshipRemoved(friendOne,friendTwo)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendFriendshipRemoved. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in sendLocalFriendshipRemoved. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't sendFriendshipRemoved to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %d, %d"%(friendOne,friendTwo))
else:
@@ -744,7 +744,7 @@ def sendWhisper(self,recipientId,senderId,msgText):
#if self.localPlayers.has_key(recipientId):
# self.log("Warning: I own %d. Ignoring whisper." % (recipientId))
# self.wedge.recvWhisperFailed(recipientId,senderId,msgText)
- if not self.remotePlayerLoc.has_key(recipientId):
+ if recipientId not in self.remotePlayerLoc:
self.log.warning("I don't see %d anywhere! Whisper not delivered."%recipientId)
return
#CHECK FRIENDSHIP, permissions, ignore list, etc?
@@ -755,13 +755,13 @@ def sendWhisper(self,recipientId,senderId,msgText):
try:
self.servedChat = self.servedChat + 1
self.nodeProxy[loc].recvWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendWhisper. Reconnecting to nodes.")
self.updateNodes()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in sendWhisper. Reconnecting to nodes.")
self.updateNodes()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send whisper to sb.node.%s, had an error: %s"%(loc,''.join(Pyro.util.getPyroTraceback(e))))
def recvWhisper(self,recipientId,senderId,msgText):
@@ -771,13 +771,13 @@ def recvWhisper(self,recipientId,senderId,msgText):
if self.wedge is not None:
try:
self.wedge.recvWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvWhisper. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvWhisper. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send whisper to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %d, %d, %s"%(recipientId,senderId,msgText))
else:
@@ -789,7 +789,7 @@ def sendSCWhisper(self,recipientId,senderId,msgText):
#if self.localPlayers.has_key(recipientId):
# self.log("Warning: I own %d. Ignoring whisper." % (recipientId))
# self.wedge.recvWhisperFailed(recipientId,senderId,msgText)
- if not self.remotePlayerLoc.has_key(recipientId):
+ if recipientId not in self.remotePlayerLoc:
self.log.warning("I don't see %d anywhere! Whisper not delivered."%recipientId)
#self.wedge.recvSCWhisperFailed(recipientId,senderId,msgText)
return
@@ -801,13 +801,13 @@ def sendSCWhisper(self,recipientId,senderId,msgText):
try:
self.servedSC = self.servedSC + 1
self.nodeProxy[loc].recvSCWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendSCWhisper. Reconnecting to nodes.")
self.updateNodes()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in sendSCWhisper. Reconnecting to nodes.")
self.updateNodes()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send SCwhisper to sb.node.%s, had an error: %s"%(loc,''.join(Pyro.util.getPyroTraceback(e))))
def recvSCWhisper(self,recipientId,senderId,msgText):
@@ -815,13 +815,13 @@ def recvSCWhisper(self,recipientId,senderId,msgText):
if self.wedge is not None:
try:
self.wedge.recvWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvSCWhisper. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvSCWhisper. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send whisper to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %d, %d, %s"%(recipientId,senderId,msgText))
else:
@@ -850,13 +850,13 @@ def recvMailUpdate(self,recipientId,senderId,msgText):
if self.wedge is not None:
try:
self.wedge.recvMailUpdate(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvMailUpdate. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvMailUpdate. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send mail update to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %d, %d, %s"%(recipientId,senderId,msgText))
else:
@@ -873,13 +873,13 @@ def getMail(self,recipientId):
try:
self.wedge.recvMail(recipientId,mail)
self.log.debug("Sent mail to %d: %s" % (recipientId,mail))
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in recvMail. Reconnecting to wedge.")
self.updateWedge()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError in recvMail. Reconnecting to wedge.")
self.updateWedge()
- except Exception,e:
+ except Exception as e:
self.log.error("Couldn't send mail to my wedge, had an error: %s"%''.join(Pyro.util.getPyroTraceback(e)))
self.log.error("I sent: %d, %s"%(recipientId,mail))
else:
diff --git a/otp/src/switchboard/sbWedge.py b/otp/src/switchboard/sbWedge.py
index 52e71e22..4c1fa6de 100644
--- a/otp/src/switchboard/sbWedge.py
+++ b/otp/src/switchboard/sbWedge.py
@@ -7,9 +7,9 @@
from Pyro.errors import ConnectionClosedError
from Pyro.errors import ProtocolError
-from sbNode import sbNode
-from sbLog import sbLog
-import sbConfig
+from .sbNode import sbNode
+from .sbLog import sbLog
+from . import sbConfig
try:
import badwordpy
@@ -71,7 +71,7 @@ def __init__(self,wedgeName,
self.sendEnterWedge()
self.log.debug("Exit sendEnterWedge")
self.sbConnected = True
- except Exception,e:
+ except Exception as e:
self.log.warning("Failed to connect to Switchboard. Player friends are being faked.")
self.onlinePlayers = 0
@@ -154,7 +154,7 @@ def sendEnterWedge(self):
if self.node:
try:
self.node.recvEnterWedge(self.wedgeName)
- except Exception,e:
+ except Exception as e:
self.log.warning("Error contacting my node (%s), node is None."%str(e))
self.node = None
@@ -205,7 +205,7 @@ def updateNode(self):
"recvDeclineInvite"])
self.log.info("-- Connected to sb.node.%s. --" % self.nodeName)
self.sbConnected = True
- except Exception,e:
+ except Exception as e:
self.node = None
self.sbConnected = False
self.log.debug("Failed to locate sb.node.%s, node is None." % self.nodeName)
@@ -223,13 +223,13 @@ def enterPlayer(self,playerId,playerInfo):
if self.node:
try:
self.node.recvEnterLocalPlayer(playerId,playerInfo)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in enterPlayer. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in enterPlayer. Refreshing node."%str(e))
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Unknown error sending enterLocalPlayer to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#app->wedge
@@ -238,13 +238,13 @@ def exitPlayer(self,playerId):
if self.node:
try:
self.node.recvExitLocalPlayer(playerId)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in exitPlayer. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in exitPlayer. Refreshing node."%str(e))
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending exitLocalPlayer to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#app->wedge
@@ -253,13 +253,13 @@ def exitAvatar(self,avatarId):
if self.node:
try:
self.node.recvExitLocalAvatar(avatarId)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in exitAvatar. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in exitAvatar. Refreshing node."%str(e))
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending exitLocalAvatar to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
@@ -299,26 +299,26 @@ def sendSecretRequest(self,playerId,parentUsername=None,parentPassword=None):
if self.node:
try:
self.node.recvSecretRequest(playerId,parentUsername,parentPassword)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendSecretRequest. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendSecretRequest. Refreshing node.")
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending secretRequest to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
def sendSecretRedeem(self,playerId,secret,parentUsername=None,parentPassword=None):
if self.node:
try:
self.node.recvSecretRedeem(playerId,secret,parentUsername,parentPassword)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendSecretRedeem. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendSecretRedeem. Refreshing node.")
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending secretRedeem to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#wedge->app, override
@@ -371,13 +371,13 @@ def sendWhisper(self,recipientId,senderId,msgText):
if self.node:
try:
self.node.sendWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendWhisper. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendWhisper. Refreshing node."%str(e))
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending whisper to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#app->wedge
@@ -389,13 +389,13 @@ def sendWLWhisper(self,recipientId,senderId,msgText):
if self.node:
try:
self.node.sendWLWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendWLWhisper. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendWLWhisper. Refreshing node."%str(e))
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending WLwhisper to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#app->wedge
@@ -407,13 +407,13 @@ def sendSCWhisper(self,recipientId,senderId,msgText):
if self.node:
try:
self.node.sendSCWhisper(recipientId,senderId,msgText)
- except ConnectionClosedError,e:
+ except ConnectionClosedError as e:
self.log.error("ConnectionClosedError in sendSCWhisper. Refreshing node.")
self.updateNode()
- except ProtocolError,e:
+ except ProtocolError as e:
self.log.error("ProtocolError (%s) in sendSCWhisper. Refreshing node."%str(e))
self.updateNode()
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending SCwhisper to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#wedge->app, override
@@ -459,7 +459,7 @@ def sendMail(self,recipientId,senderId,msgText):
try:
self.servedMail += 1
self.node.sendMail(recipientId,senderId,msgText)
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending mail to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
def sendWLMail(self,recipientId,senderId,msgText):
@@ -469,7 +469,7 @@ def sendWLMail(self,recipientId,senderId,msgText):
try:
self.servedMail += 1
self.node.sendSCMail(recipientId,senderId,msgText)
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending mail to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
def sendSCMail(self,recipientId,senderId,msgText):
@@ -479,7 +479,7 @@ def sendSCMail(self,recipientId,senderId,msgText):
try:
self.servedMailSC += 1
self.node.sendSCMail(recipientId,senderId,msgText)
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending mail to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
#wedge->app, override
@@ -500,7 +500,7 @@ def deleteMail(self,accountId,messageId):
try:
self.node.deleteMail(accountId,messageId)
- except Exception,e:
+ except Exception as e:
self.log.error("Error sending mail to my node: %s" % ''.join(Pyro.util.getPyroTraceback(e)))
diff --git a/otp/src/switchboard/sbdebug.py b/otp/src/switchboard/sbdebug.py
index bcf57e49..76e1f64a 100644
--- a/otp/src/switchboard/sbdebug.py
+++ b/otp/src/switchboard/sbdebug.py
@@ -10,17 +10,17 @@
try:
opts,args = getopt.getopt(sys.argv[1:], "h:n:p:u:exw:m:sci")
except getopt.GetoptError:
- print "Switchboard Debugger Options:"
- print "-h hostname - Specify NS hostname"
- print "-p port - specify NS port"
- print "-n wedgename - Connect to wedge, required to issue any command"
- print "-u usernumber - Specify user to perform action"
- print "-e - Enter Player"
- print "-x - Exit Player"
- print "-w recipient -m message - Whisper to recipient with message"
- print "-c checkSocket"
- print "-i interactive"
- print "-s - Shutdown this node"
+ print("Switchboard Debugger Options:")
+ print("-h hostname - Specify NS hostname")
+ print("-p port - specify NS port")
+ print("-n wedgename - Connect to wedge, required to issue any command")
+ print("-u usernumber - Specify user to perform action")
+ print("-e - Enter Player")
+ print("-x - Exit Player")
+ print("-w recipient -m message - Whisper to recipient with message")
+ print("-c checkSocket")
+ print("-i interactive")
+ print("-s - Shutdown this node")
sys.exit(2)
NShost = "localhost"
@@ -62,10 +62,10 @@
if wedgename == "":
- print "Please pass a node name with -n."
+ print("Please pass a node name with -n.")
sys.exit(2)
if action == "":
- print "No action specified! Doing nothing."
+ print("No action specified! Doing nothing.")
sys.exit(0)
@@ -88,7 +88,7 @@
elif action == "interactive":
wedge = Pyro.core.getProxyForURI(ns.resolve(":sb.wedge.%s"%wedgename))
- print wedge
+ print(wedge)
import pdb
pdb.set_trace()
@@ -105,6 +105,6 @@
elif action == "checkSocket":
wedge = Pyro.core.getProxyForURI(ns.resolve(":sb.wedge.%s"%wedgename))
wedge.checkSocket()
-except Exception, x:
- print ''.join(Pyro.util.getPyroTraceback(x))
+except Exception as x:
+ print(''.join(Pyro.util.getPyroTraceback(x)))
sys.stdout.flush()
diff --git a/otp/src/switchboard/startDummy.py b/otp/src/switchboard/startDummy.py
index 0a24ea35..3a7e71c7 100644
--- a/otp/src/switchboard/startDummy.py
+++ b/otp/src/switchboard/startDummy.py
@@ -1,13 +1,13 @@
# dummy SB
-from sbNode import sbNode
-from sbWedge import sbWedge
-import Queue
+from .sbNode import sbNode
+from .sbWedge import sbWedge
+import queue
import sys
import socket
import select
-q = Queue.Queue()
+q = queue.Queue()
class dumWedge(sbWedge):
def __init__(self,wedgeName,qq):
@@ -27,7 +27,7 @@ def shutdown(self):
#myWedge.node.enterPlayer(1234)
def log(message):
- print message
+ print(message)
sys.stdout.flush()
@@ -63,7 +63,7 @@ def log(message):
sendstr = "%d %d SEND %s\n" % (recipient,sender,msg)
log(sendstr)
clisock.sendall(sendstr)
- except Queue.Empty: pass
+ except queue.Empty: pass
if listensock in ins:
if clisock is not None:
@@ -89,7 +89,7 @@ def log(message):
else:
log("Invalid message: %s" % s)
clisock.sendall("Blargh invalid message\n")
- except Exception,e:
+ except Exception as e:
log(e)
log("Problematic message: %s" % s)
clisock.sendall("Blargh invalid message\n")
@@ -98,7 +98,7 @@ def log(message):
s = s + data
- except Queue.Empty,e:
+ except queue.Empty as e:
log("Caught error:")
log(e)
try:
diff --git a/otp/src/switchboard/startDummyHold.py b/otp/src/switchboard/startDummyHold.py
index edc9f13e..72d5953e 100644
--- a/otp/src/switchboard/startDummyHold.py
+++ b/otp/src/switchboard/startDummyHold.py
@@ -1,5 +1,5 @@
-from sbNode import sbNode
-from sbWedge import sbWedge
+from .sbNode import sbNode
+from .sbWedge import sbWedge
import sys
import socket
import select
@@ -11,7 +11,7 @@
#myWedge.node.enterPlayer(1234)
def log(message):
- print message
+ print(message)
sys.stdout.flush()
@@ -66,7 +66,7 @@ def log(message):
s = s + data
- except Exception,e:
+ except Exception as e:
log("Caught error:")
log(e)
try:
diff --git a/otp/src/switchboard/startNode.py b/otp/src/switchboard/startNode.py
index e90c171e..a6e39c06 100644
--- a/otp/src/switchboard/startNode.py
+++ b/otp/src/switchboard/startNode.py
@@ -16,7 +16,7 @@
'dislurl='
])
except getopt.GetoptError:
- print "Please pass a node name with --name=."
+ print("Please pass a node name with --name=.")
sys.exit(1)
#defaults
@@ -50,11 +50,11 @@
elif o == "--dislurl":
dislurl = a
else:
- print "Error: Illegal option: " + o
+ print("Error: Illegal option: " + o)
sys.exit(1)
if nodename == "":
- print "Please pass a node name with --name=."
+ print("Please pass a node name with --name=.")
sys.exit(2)
cm = ChannelManager()
diff --git a/otp/src/switchboard/startWedge.py b/otp/src/switchboard/startWedge.py
index 00f37a92..d2cee939 100644
--- a/otp/src/switchboard/startWedge.py
+++ b/otp/src/switchboard/startWedge.py
@@ -1,4 +1,4 @@
-from sbWedge import sbWedge
+from .sbWedge import sbWedge
import sys
import getopt
@@ -13,7 +13,7 @@
'bwdictpath='
])
except getopt.GetoptError:
- print "Please pass a wedge name with --name=."
+ print("Please pass a wedge name with --name=.")
sys.exit(1)
#defaults
@@ -41,11 +41,11 @@
elif o == "--bwdictpath":
bwdictpath = a
else:
- print "Error: Illegal option: " + o
+ print("Error: Illegal option: " + o)
sys.exit(1)
if wedgename == "":
- print "Please pass a wedge name with --name=."
+ print("Please pass a wedge name with --name=.")
sys.exit(2)
diff --git a/otp/src/tutorial/DTutorialObject.py b/otp/src/tutorial/DTutorialObject.py
index 3f22cb98..3c1eb3c7 100644
--- a/otp/src/tutorial/DTutorialObject.py
+++ b/otp/src/tutorial/DTutorialObject.py
@@ -13,8 +13,8 @@ def __init__(self, cr):
# we place this object in __builtin__ for convenience.
# Do not do this in production!
- import __builtin__
- __builtin__.tutObj = self
+ import builtins
+ builtins.tutObj = self
@report(types = ['module', 'args', 'deltaStamp'], dConfigParam = ['dtutorial'])
@@ -81,8 +81,8 @@ def setHeight(self, h):
class DTutorial(FSM):
def __init__(self):
FSM.__init__(self, 'DTutorial')
- import __builtin__
- __builtin__.tut = self
+ import builtins
+ builtins.tut = self
self.ih = None
@@ -105,7 +105,7 @@ def enterPhase6(self):
tutObj.b_requestMeal(2)
def enterPhase7(self):
- print tutObj.getTimeSinceLastMeal()
+ print(tutObj.getTimeSinceLastMeal())
def enterOff(self):
if self.ih:
diff --git a/otp/src/tutorial/DTutorialObjectAI.py b/otp/src/tutorial/DTutorialObjectAI.py
index 84a4c799..7d8c3ed2 100644
--- a/otp/src/tutorial/DTutorialObjectAI.py
+++ b/otp/src/tutorial/DTutorialObjectAI.py
@@ -69,8 +69,8 @@ def d_setHeight(self, h):
class DTutorialAI(FSM):
def __init__(self):
FSM.__init__(self, 'DTutorialAI')
- import __builtin__
- __builtin__.tut = self
+ import builtins
+ builtins.tut = self
self.tutObj = None
diff --git a/otp/src/uberdog/AccountDetailRecord.py b/otp/src/uberdog/AccountDetailRecord.py
index f4a3aa0e..d82de224 100644
--- a/otp/src/uberdog/AccountDetailRecord.py
+++ b/otp/src/uberdog/AccountDetailRecord.py
@@ -71,7 +71,7 @@ def __str__(self):
s += "NumFamilyMembers: %d\n" % self.numFamilyMembers
s += "FamilyMembers: %s\n" % self.familyMembers
s += "NumSubs: %s\n" % self.numSubs
- for subDetails in self.subDetails.values():
+ for subDetails in list(self.subDetails.values()):
s += str(subDetails)
s += '================================\n'
return s
diff --git a/otp/src/uberdog/DistributedChatManager.py b/otp/src/uberdog/DistributedChatManager.py
index 06a306f1..4a36e05b 100644
--- a/otp/src/uberdog/DistributedChatManager.py
+++ b/otp/src/uberdog/DistributedChatManager.py
@@ -106,7 +106,7 @@ def whisperFrom(self, fromId, message):
assert self.notify.debugCall()
#messenger.send("chat", [fromId, message, chatFlags])
if base.cr.wantSwitchboardHacks:
- print "received whisper on avatar: %s" % message
+ print("received whisper on avatar: %s" % message)
whisper = WhisperPopup(message,OTPGlobals.getInterfaceFont(),WhisperPopup.WTNormal)
whisper.manage(base.marginManager)
diff --git a/otp/src/uberdog/DistributedChatManagerUD.py b/otp/src/uberdog/DistributedChatManagerUD.py
index 2c60f1cd..5db4d78e 100644
--- a/otp/src/uberdog/DistributedChatManagerUD.py
+++ b/otp/src/uberdog/DistributedChatManagerUD.py
@@ -73,7 +73,7 @@ def announceGenerate(self):
def delete(self):
assert self.notify.debugCall()
self.ignoreAll()
- for i in self.asyncRequests.values():
+ for i in list(self.asyncRequests.values()):
i.delete()
self.asyncRequests={}
DistributedObjectGlobalUD.delete(self)
@@ -84,10 +84,10 @@ def accountOnline(self, accountId):
assert self.notify.debugCall()
assert accountId
self.air.writeServerEvent('accountOnline', accountId, '')
- if self.isAccountOnline.has_key(accountId):
+ if accountId in self.isAccountOnline:
assert self.notify.debug(
"\n\nWe got a duplicate account online notice %s"%(accountId,))
- if accountId and not self.isAccountOnline.has_key(accountId):
+ if accountId and accountId not in self.isAccountOnline:
self.isAccountOnline[accountId]=None
## self.asyncRequests[accountId]=self.accountOnlineAsyncRequest(accountId)
@@ -108,7 +108,7 @@ def checkAvatarId(self, avatarId):
## self.notify.warning(
## "Got a request from an avatar (%s) that is not online"%
## accountId)
- elif self.asyncRequests.has_key(avatarId):
+ elif avatarId in self.asyncRequests:
# The timeout on the client might be too low or we may be being
# attacked.
self.notify.warning(
@@ -148,7 +148,7 @@ def chatTo(self, message, chatFlags):
if not accountId:
assert self.notify.debugCall("accountId:%s (zero!)"%(accountId,))
return
- if not self.isAccountOnline.has_key(accountId):
+ if accountId not in self.isAccountOnline:
assert self.notify.debugCall("accountId:%s (not online!)"%(accountId,))
return
assert self.notify.debugCall("accountId:%s"%(accountId,))
@@ -161,7 +161,7 @@ def chatTo(self, message, chatFlags):
# assert self.notify.debug("Unknown location for %s"%(accountId,))
if uber.wantSwitchboardHacks:
- print "DistributedChatManagerUD->Switchboard: %s" % message
+ print("DistributedChatManagerUD->Switchboard: %s" % message)
self.sb.sendWhisper(1,2,message)
## chatPermissions=self.isAvatarOnline.get(accountId)
@@ -209,7 +209,7 @@ def whisperTo(self, toId, message):
accountId = self.air.getAccountIdFromSender()
assert self.notify.debugCall("accountId:%s"%(accountId,))
if self.checkAvatarId(avatarId):
- chatPermissions=self.isAccountOnline.has_key(accountId)
+ chatPermissions=accountId in self.isAccountOnline
if chatPermissions is not None:
self.sendWhisperFrom(accountId, toId, message)
else:
@@ -218,7 +218,7 @@ def whisperTo(self, toId, message):
def sendWhisperFrom(self, fromId, toId, message):
assert self.notify.debugCall()
if uber.wantSwitchboardHacks:
- print "Sending whisper to %d: %s" % (toId,message)
+ print("Sending whisper to %d: %s" % (toId,message))
self.sendUpdateToAvatarId(toId, "whisperFrom", [fromId, message])
else:
self.sendUpdateToChannel(toId, "whisperFrom", [fromId, msgIndex])
@@ -228,7 +228,7 @@ def whisperSCTo(self, toId, msgIndex):
accountId = self.air.getAccountIdFromSender()
assert self.notify.debugCall("accountId:%s"%(accountId,))
if self.checkAvatarId(avatarId):
- chatPermissions=self.isAccountOnline.has_key(accountId)
+ chatPermissions=accountId in self.isAccountOnline
if chatPermissions is not None:
self.sendWhisperSCFrom(accountId, toId, message)
else:
@@ -243,11 +243,11 @@ def whisperSCCustomTo(self, toId, msgIndex):
if not accountId:
assert self.notify.debugCall("accountId:%s (zero!)"%(accountId,))
return
- if not self.isAccountOnline.has_key(accountId):
+ if accountId not in self.isAccountOnline:
assert self.notify.debugCall("accountId:%s (not online!)"%(accountId,))
return
assert self.notify.debugCall("accountId:%s"%(accountId,))
- chatPermissions=self.isAccountOnline.has_key(accountId)
+ chatPermissions=accountId in self.isAccountOnline
if chatPermissions is not None:
self.sendWhisperSCCustomFrom(accountId, toId, message)
else:
@@ -262,11 +262,11 @@ def whisperSCEmoteTo(self, toId, emoteId):
if not accountId:
assert self.notify.debugCall("accountId:%s (zero!)"%(accountId,))
return
- if not self.isAccountOnline.has_key(accountId):
+ if accountId not in self.isAccountOnline:
assert self.notify.debugCall("accountId:%s (not online!)"%(accountId,))
return
assert self.notify.debugCall("accountId:%s"%(accountId,))
- chatPermissions=self.isAccountOnline.has_key(accountId)
+ chatPermissions=accountId in self.isAccountOnline
if chatPermissions is not None:
self.sendWhisperSCEmoteFrom(accountId, toId, message)
else:
@@ -286,7 +286,7 @@ def crewChatTo(self, message):
if not accountId:
assert self.notify.debugCall("accountId:%s (zero!)"%(accountId,))
return
- if not self.isAccountOnline.has_key(accountId):
+ if accountId not in self.isAccountOnline:
assert self.notify.debugCall("accountId:%s (not online!)"%(accountId,))
return
assert self.notify.debugCall("accountId:%s"%(accountId,))
@@ -307,7 +307,7 @@ def guildChatTo(self, message):
if not accountId:
assert self.notify.debugCall("accountId:%s (zero!)"%(accountId,))
return
- if not self.isAccountOnline.has_key(accountId):
+ if accountId not in self.isAccountOnline:
assert self.notify.debugCall("accountId:%s (not online!)"%(accountId,))
return
assert self.notify.debugCall("accountId:%s"%(accountId,))
diff --git a/otp/src/uberdog/MySQLAccountAvatarsDB.py b/otp/src/uberdog/MySQLAccountAvatarsDB.py
index c0bc9f08..e2fc0ba1 100644
--- a/otp/src/uberdog/MySQLAccountAvatarsDB.py
+++ b/otp/src/uberdog/MySQLAccountAvatarsDB.py
@@ -33,7 +33,7 @@ def __init__(self, host, port, user, passwd, dbname):
if __debug__:
self.notify.info("MySQL database '%s' did not exist, "
"created a new one." % self.dbname)
- except _mysql_exceptions.ProgrammingError, e:
+ except _mysql_exceptions.ProgrammingError as e:
pass
cursor.execute("USE %s" % self.dbname)
@@ -58,7 +58,7 @@ def __init__(self, host, port, user, passwd, dbname):
if __debug__:
self.notify.info("Table 'account_to_avatars' did not exist, "
"created a new one.")
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
pass
def connect(self):
@@ -150,7 +150,7 @@ def setSharedFlag(self, avatar, subscription, shared):
try:
cursor = MySQLdb.cursors.DictCursor(self.db)
cursor.execute(command)
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
if (e[0] == MySQLdb.constants.CR.SERVER_GONE_ERROR) or \
(e[0] == MySQLdb.constants.CR.SERVER_LOST):
self.reconnect()
@@ -168,7 +168,7 @@ def addAvatarToSubscription(self, avatar, creator, subscription, shared):
try:
cursor = MySQLdb.cursors.DictCursor(self.db)
cursor.execute(command)
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
if (e[0] == MySQLdb.constants.CR.SERVER_GONE_ERROR) or \
(e[0] == MySQLdb.constants.CR.SERVER_LOST):
self.reconnect()
@@ -186,7 +186,7 @@ def removeAvatarFromSubscription(self, avatar, subscription):
try:
cursor = MySQLdb.cursors.DictCursor(self.db)
cursor.execute(command)
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
if (e[0] == MySQLdb.constants.CR.SERVER_GONE_ERROR) or \
(e[0] == MySQLdb.constants.CR.SERVER_LOST):
self.reconnect()
@@ -205,7 +205,7 @@ def deleteIncompleteAvatarFromDB(self, avatar):
try:
cursor = MySQLdb.cursors.DictCursor(self.db)
cursor.execute(command)
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
if (e[0] == MySQLdb.constants.CR.SERVER_GONE_ERROR) or \
(e[0] == MySQLdb.constants.CR.SERVER_LOST):
self.reconnect()
@@ -225,7 +225,7 @@ def getAvatarIdsForSubscription(self, subscription):
cursor = MySQLdb.cursors.Cursor(self.db)
cursor.execute(command)
return cursor.fetchall()
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
if (e[0] == MySQLdb.constants.CR.SERVER_GONE_ERROR) or \
(e[0] == MySQLdb.constants.CR.SERVER_LOST):
self.reconnect()
@@ -244,7 +244,7 @@ def lastPlayed(self, avatar, subscription):
try:
cursor = MySQLdb.cursors.Cursor(self.db)
cursor.execute(command)
- except _mysql_exceptions.OperationalError, e:
+ except _mysql_exceptions.OperationalError as e:
if (e[0] == MySQLdb.constants.CR.SERVER_GONE_ERROR) or \
(e[0] == MySQLdb.constants.CR.SERVER_LOST):
self.reconnect()
diff --git a/otp/src/uberdog/OtpAvatarManager.py b/otp/src/uberdog/OtpAvatarManager.py
index 8f4a88ff..7f9b975e 100644
--- a/otp/src/uberdog/OtpAvatarManager.py
+++ b/otp/src/uberdog/OtpAvatarManager.py
@@ -2,7 +2,7 @@
The Avatar Manager handles all the avatar (avatar groups) accross all districts.
"""
-from cPickle import loads, dumps
+from pickle import loads, dumps
from direct.distributed import DistributedObject
from direct.directnotify import DirectNotifyGlobal
diff --git a/otp/src/uberdog/OtpAvatarManagerUD.py b/otp/src/uberdog/OtpAvatarManagerUD.py
index ff638643..394bfd81 100644
--- a/otp/src/uberdog/OtpAvatarManagerUD.py
+++ b/otp/src/uberdog/OtpAvatarManagerUD.py
@@ -162,7 +162,7 @@ def announceGenerate(self):
def delete(self):
self.ignoreAll()
- for i in self.asyncRequests.values():
+ for i in list(self.asyncRequests.values()):
i.delete()
self.asyncRequests={}
DistributedObjectGlobalUD.delete(self)
@@ -287,7 +287,7 @@ def requestAvatarList(self, senderId):
# token through the login message.
avatarIds = []
avatarRecords = {}
- for subId in accountDetails.subDetails.keys():
+ for subId in list(accountDetails.subDetails.keys()):
avatarData = self.db.getAvatarIdsForSubscription(subId)
avatarRecords[subId] = avatarData
avatarIds.extend([record[0] for record in avatarData])
@@ -312,7 +312,7 @@ def sendAvIdList(self, accountId):
self.notify.warning('tried to send avId list for account %s that has since logged out' % (accountId))
return
- for subId in accountDetails.subDetails.keys():
+ for subId in list(accountDetails.subDetails.keys()):
avatarData = self.db.getAvatarIdsForSubscription(subId)
avatarIds.extend([record[0] for record in avatarData])
# The game server sniffs this message to enfore security
diff --git a/otp/src/uberdog/UberDog.py b/otp/src/uberdog/UberDog.py
index 8c7da04a..ce198463 100644
--- a/otp/src/uberdog/UberDog.py
+++ b/otp/src/uberdog/UberDog.py
@@ -82,7 +82,7 @@ def dispatchUpdateToDoId(self, dclassName, fieldName, doId, args, channelId=None
if obj is not None:
assert obj.__class__.__name__ == (dclassName + self.dcSuffix)
method = getattr(obj, fieldName)
- apply(method, args)
+ method(*args)
else:
self.sendUpdateToDoId(dclassName, fieldName, doId, args, channelId)
@@ -93,7 +93,7 @@ def dispatchUpdateToGlobalDoId(self, dclassName, fieldName, doId, args):
if obj is not None:
assert obj.__class__.__name__ == dclassName
method = getattr(obj, fieldName)
- apply(method, args)
+ method(*args)
else:
self.sendUpdateToGlobalDoId(dclassName, fieldName, doId, args)
@@ -321,8 +321,8 @@ def _addObject(self, context, distributedObject):
"""
assert False, 'JCW: Testing for obsolete functions. If this crashes, let Josh know'
doId=distributedObject.getDoId()
- assert not self.doId2doCache.has_key(doId)
- if not self.doId2doCache.has_key(doId):
+ assert doId not in self.doId2doCache
+ if doId not in self.doId2doCache:
self.doId2doCache[doId]=distributedObject
self.handleGotDo(distributedObject)
@@ -335,12 +335,12 @@ def handleGotDo(self, distributedObject):
will also remove the handled calls from the pending set.
"""
assert False, 'JCW: Testing for obsolete functions. If this crashes, let Josh know'
- assert self.doId2doCache.has_key(doId)
+ assert doId in self.doId2doCache
pending=self.pending.get(doId)
if pending is not None:
del self.pending[doId]
for i in pending:
- apply(i[0], i[2])
+ i[0](*i[2])
def deleteObject(self, doId):
"""
diff --git a/otp/src/uberdog/WipeDBs.py b/otp/src/uberdog/WipeDBs.py
index 784e27d4..8e528c23 100644
--- a/otp/src/uberdog/WipeDBs.py
+++ b/otp/src/uberdog/WipeDBs.py
@@ -12,7 +12,7 @@
pass
if username == "" or password == "":
- print "Username or password not found, check your config.prc!"
+ print("Username or password not found, check your config.prc!")
sys.exit(2)
@@ -21,17 +21,17 @@
user=username,
passwd=password)
-print "Connected to MySQL at localhost."
+print("Connected to MySQL at localhost.")
cursor = db.cursor()
def dropdb(dbname):
try:
- print "Dropping database %s:" % dbname
+ print("Dropping database %s:" % dbname)
cursor.execute("DROP DATABASE %s"%dbname)
- print " Success!"
- except Exception,e:
- print " Failed: %s" % e
+ print(" Success!")
+ except Exception as e:
+ print(" Failed: %s" % e)
dropdb("%savatar_accessories" % (dbSalt,))
dropdb("%savatar_friends" % (dbSalt,)) #
diff --git a/modules/pytz/zoneinfo/America/Argentina/__init__.py b/otp/src/util/__init__.py
similarity index 100%
rename from modules/pytz/zoneinfo/America/Argentina/__init__.py
rename to otp/src/util/__init__.py
diff --git a/otp/src/util/whrandom.py b/otp/src/util/whrandom.py
new file mode 100644
index 00000000..84c8d462
--- /dev/null
+++ b/otp/src/util/whrandom.py
@@ -0,0 +1,141 @@
+"""Wichman-Hill random number generator.
+
+Wichmann, B. A. & Hill, I. D. (1982)
+Algorithm AS 183:
+An efficient and portable pseudo-random number generator
+Applied Statistics 31 (1982) 188-190
+
+see also:
+ Correction to Algorithm AS 183
+ Applied Statistics 33 (1984) 123
+
+ McLeod, A. I. (1985)
+ A remark on Algorithm AS 183
+ Applied Statistics 34 (1985),198-200
+
+
+USE:
+whrandom.random() yields double precision random numbers
+ uniformly distributed between 0 and 1.
+
+whrandom.seed(x, y, z) must be called before whrandom.random()
+ to seed the generator
+
+There is also an interface to create multiple independent
+random generators, and to choose from other ranges.
+
+
+
+Multi-threading note: the random number generator used here is not
+thread-safe; it is possible that nearly simultaneous calls in
+different theads return the same random value. To avoid this, you
+have to use a lock around all calls. (I didn't want to slow this
+down in the serial case by using a lock here.)
+"""
+
+
+# Translated by Guido van Rossum from C source provided by
+# Adrian Baddeley.
+
+
+class whrandom:
+ def __init__(self, x=0, y=0, z=0):
+ """Initialize an instance.
+ Without arguments, initialize from current time.
+ With arguments (x, y, z), initialize from them."""
+ self.seed(x, y, z)
+
+ def seed(self, x=0, y=0, z=0):
+ """Set the seed from (x, y, z).
+ These must be integers in the range [0, 256)."""
+ if not type(x) == type(y) == type(z) == type(0):
+ raise TypeError('seeds must be integers')
+ if not (0 <= x < 256 and 0 <= y < 256 and 0 <= z < 256):
+ raise ValueError('seeds must be in range(0, 256)')
+ if 0 == x == y == z:
+ # Initialize from current time
+ import time
+ t = int(time.time() * 256)
+ t = int((t & 0xffffff) ^ (t >> 24))
+ t, x = divmod(t, 256)
+ t, y = divmod(t, 256)
+ t, z = divmod(t, 256)
+ # Zero is a poor seed, so substitute 1
+ self._seed = (x or 1, y or 1, z or 1)
+
+ def random(self):
+ """Get the next random number in the range [0.0, 1.0)."""
+ # This part is thread-unsafe:
+ # BEGIN CRITICAL SECTION
+ x, y, z = self._seed
+ #
+ x = (171 * x) % 30269
+ y = (172 * y) % 30307
+ z = (170 * z) % 30323
+ #
+ self._seed = x, y, z
+ # END CRITICAL SECTION
+ #
+ return (x / 30269.0 + y / 30307.0 + z / 30323.0) % 1.0
+
+ def uniform(self, a, b):
+ """Get a random number in the range [a, b)."""
+ return a + (b - a) * self.random()
+
+ def randint(self, a, b):
+ """Get a random integer in the range [a, b] including
+ both end points.
+
+ (Deprecated; use randrange below.)"""
+ return self.randrange(a, b + 1)
+
+ def choice(self, seq):
+ """Choose a random element from a non-empty sequence."""
+ return seq[int(self.random() * len(seq))]
+
+ def randrange(self, start, stop=None, step=1, int=int, default=None):
+ """Choose a random item from range(start, stop[, step]).
+
+ This fixes the problem with randint() which includes the
+ endpoint; in Python this is usually not what you want.
+ Do not supply the 'int' and 'default' arguments."""
+ # This code is a bit messy to make it fast for the
+ # common case while still doing adequate error checking
+ istart = int(start)
+ if istart != start:
+ raise ValueError("non-integer arg 1 for randrange()")
+ if stop is default:
+ if istart > 0:
+ return int(self.random() * istart)
+ raise ValueError("empty range for randrange()")
+ istop = int(stop)
+ if istop != stop:
+ raise ValueError("non-integer stop for randrange()")
+ if step == 1:
+ if istart < istop:
+ return istart + int(self.random() *
+ (istop - istart))
+ raise ValueError("empty range for randrange()")
+ istep = int(step)
+ if istep != step:
+ raise ValueError("non-integer step for randrange()")
+ if istep > 0:
+ n = (istop - istart + istep - 1) / istep
+ elif istep < 0:
+ n = (istop - istart + istep + 1) / istep
+ else:
+ raise ValueError("zero step for randrange()")
+
+ if n <= 0:
+ raise ValueError("empty range for randrange()")
+ return istart + istep * int(self.random() * n)
+
+
+# Initialize from the current time
+_inst = whrandom()
+seed = _inst.seed
+random = _inst.random
+uniform = _inst.uniform
+randint = _inst.randint
+choice = _inst.choice
+randrange = _inst.randrange
\ No newline at end of file
diff --git a/otp/src/web/SettingsMgrBase.py b/otp/src/web/SettingsMgrBase.py
index f2d3406e..c80bfa8a 100644
--- a/otp/src/web/SettingsMgrBase.py
+++ b/otp/src/web/SettingsMgrBase.py
@@ -16,7 +16,7 @@ def _initSettings(self):
pass
def _iterSettingNames(self):
- for name in self._settings.iterkeys():
+ for name in self._settings.keys():
yield name
def _addSettings(self, *settings):
diff --git a/otp/src/web/SettingsMgrUD.py b/otp/src/web/SettingsMgrUD.py
index b2967211..84653a2a 100644
--- a/otp/src/web/SettingsMgrUD.py
+++ b/otp/src/web/SettingsMgrUD.py
@@ -55,7 +55,7 @@ def getPageTitle(self):
def _newSessionId(self):
# unique URL-safe string
self._sessionId = ''
- for i in xrange(32):
+ for i in range(32):
self._sessionId += random.choice(SettingsMgrUD.SessionIdAlphabet)
def handleHTTPSettings(self, **kw):
@@ -67,7 +67,7 @@ def handleHTTPSettings(self, **kw):
staleSession = (sessionId is not None) and (sessionId != self._sessionId)
if not staleSession:
self._newSessionId()
- for settingName, valueStr in kw.iteritems():
+ for settingName, valueStr in kw.items():
try:
setting = self._getSetting(settingName)
except:
@@ -122,7 +122,7 @@ def handleHTTPSettings(self, **kw):