Change the following to replace Python 2 code with Python 3:

1) Replace the deprecated unit test method.
2) Wraps filter usage in a list call.
3) Converts the old metaclass syntax to new.
4) Use range instead of xrange method.
5) Change Unicode to str.
6) Several other transformations.
7) Fixed change password test cases.
8) Use simplejson instead of plain JSON.
This commit is contained in:
Cyril Jouve
2020-08-31 16:45:31 +05:30
committed by Akshay Joshi
parent 11d5613866
commit 5a253f9053
385 changed files with 938 additions and 944 deletions

View File

@@ -235,7 +235,7 @@ else:
return _path
def document_dir():
return os.path.realpath(os.path.expanduser(u'~/'))
return os.path.realpath(os.path.expanduser('~/'))
def get_complete_file_path(file):
@@ -257,7 +257,7 @@ def get_complete_file_path(file):
if storage_dir:
file = os.path.join(
storage_dir,
file.lstrip(u'/').lstrip(u'\\')
file.lstrip('/').lstrip('\\')
)
if IS_WIN:
file = file.replace('\\', '/')
@@ -273,8 +273,8 @@ def does_utility_exist(file):
"""
error_msg = None
if not os.path.exists(file):
error_msg = gettext(u"'%s' file not found. Please correct the Binary"
u" Path in the Preferences dialog" % file)
error_msg = gettext("'%s' file not found. Please correct the Binary"
" Path in the Preferences dialog" % file)
return error_msg

View File

@@ -35,7 +35,7 @@ class ColParamsJSONDecoder(json.JSONDecoder):
retval = obj
try:
retval = json.JSONDecoder.decode(self, obj)
if type(retval) == str:
if isinstance(retval, str):
retval = obj
except (ValueError, TypeError, KeyError):
retval = obj

View File

@@ -555,7 +555,7 @@ class Dialect(object):
def validate_text(dialect, attr):
val = getattr(dialect, attr)
if not isinstance(val, str):
if type(val) == bytes:
if isinstance(val, bytes):
raise Error('"{0}" must be string, not bytes'.format(attr))
raise Error('"{0}" must be string, not {1}'.format(
attr, type(val).__name__))

View File

@@ -306,20 +306,20 @@ class Driver(BaseDriver):
return True
# certain types should not be quoted even though it contains a space.
# Evilness.
elif for_types and value[-2:] == u"[]":
elif for_types and value[-2:] == "[]":
val_noarray = value[:-2]
if for_types and val_noarray.lower() in [
u'bit varying',
u'"char"',
u'character varying',
u'double precision',
u'timestamp without time zone',
u'timestamp with time zone',
u'time without time zone',
u'time with time zone',
u'"trigger"',
u'"unknown"'
'bit varying',
'"char"',
'character varying',
'double precision',
'timestamp without time zone',
'timestamp with time zone',
'time without time zone',
'time with time zone',
'"trigger"',
'"unknown"'
]:
return False
@@ -328,12 +328,12 @@ class Driver(BaseDriver):
(val_noarray.startswith('"') or val_noarray.endswith('"')):
return False
if u'0' <= val_noarray[0] <= u'9':
if '0' <= val_noarray[0] <= '9':
return True
for c in val_noarray:
if (not (u'a' <= c <= u'z') and c != u'_' and
not (u'0' <= c <= u'9')):
if (not ('a' <= c <= 'z') and c != '_' and
not ('0' <= c <= '9')):
return True
# check string is keywaord or not
@@ -385,7 +385,7 @@ class Driver(BaseDriver):
value = None
for val in args:
if type(val) == list:
if isinstance(val, list):
return map(lambda w: Driver.qtIdent(conn, w), val)
# DataType doesn't have len function then convert it to string

View File

@@ -312,9 +312,9 @@ class Connection(BaseConnection):
else:
msg = str(e)
current_app.logger.info(
u"Failed to connect to the database server(#{server_id}) for "
u"connection ({conn_id}) with error message as below"
u":{msg}".format(
"Failed to connect to the database server(#{server_id}) for "
"connection ({conn_id}) with error message as below"
":{msg}".format(
server_id=self.manager.sid,
conn_id=conn_id,
msg=msg
@@ -407,7 +407,7 @@ class Connection(BaseConnection):
return False, status
if manager.role:
status = _execute(cur, u"SET ROLE TO %s", [manager.role])
status = _execute(cur, "SET ROLE TO %s", [manager.role])
if status is not None:
self.conn.close()
@@ -519,7 +519,7 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
cur = getattr(g, "{0}#{1}".format(
self.manager.sid,
@@ -547,7 +547,7 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
try:
@@ -588,7 +588,7 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:'
None if self.conn_id[0:3] == 'DB:'
else self.conn_id[5:]
)
@@ -608,7 +608,7 @@ WHERE
if self.conn and \
self.conn.encoding in ('SQL_ASCII', 'SQLASCII',
'MULE_INTERNAL', 'MULEINTERNAL')\
and params is not None and type(params) == dict:
and params is not None and isinstance(params, dict):
for key, val in params.items():
modified_val = val
# "unicode_escape" will convert single backslash to double
@@ -667,8 +667,8 @@ WHERE
current_app.logger.log(
25,
u"Execute (with server cursor) for server #{server_id} - "
u"{conn_id} (Query-id: {query_id}):\n{query}".format(
"Execute (with server cursor) for server #{server_id} - "
"{conn_id} (Query-id: {query_id}):\n{query}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
query=query,
@@ -683,10 +683,10 @@ WHERE
cur.close()
errmsg = self._formatted_exception_msg(pe, formatted_exception_msg)
current_app.logger.error(
u"failed to execute query ((with server cursor) "
u"for the server #{server_id} - {conn_id} "
u"(query-id: {query_id}):\n"
u"error message:{errmsg}".format(
"failed to execute query ((with server cursor) "
"for the server #{server_id} - {conn_id} "
"(query-id: {query_id}):\n"
"error message:{errmsg}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
errmsg=errmsg,
@@ -805,8 +805,8 @@ WHERE
current_app.logger.log(
25,
u"Execute (scalar) for server #{server_id} - {conn_id} (Query-id: "
u"{query_id}):\n{query}".format(
"Execute (scalar) for server #{server_id} - {conn_id} (Query-id: "
"{query_id}):\n{query}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
query=query,
@@ -826,13 +826,13 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
errmsg = self._formatted_exception_msg(pe, formatted_exception_msg)
current_app.logger.error(
u"Failed to execute query (execute_scalar) for the server "
u"#{server_id} - {conn_id} (Query-id: {query_id}):\n"
u"Error Message:{errmsg}".format(
"Failed to execute query (execute_scalar) for the server "
"#{server_id} - {conn_id} (Query-id: {query_id}):\n"
"Error Message:{errmsg}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
errmsg=errmsg,
@@ -878,9 +878,9 @@ WHERE
dsn = self.conn.get_dsn_parameters()
current_app.logger.log(
25,
u"Execute (async) by {pga_user} on {db_user}@{db_host}/{db_name} "
u"#{server_id} - {conn_id} (Query-id: "
u"{query_id}):\n{query}".format(
"Execute (async) by {pga_user} on {db_user}@{db_host}/{db_name} "
"#{server_id} - {conn_id} (Query-id: "
"{query_id}):\n{query}".format(
pga_user=current_user.username,
db_user=dsn['user'],
db_host=dsn['host'],
@@ -901,9 +901,9 @@ WHERE
except psycopg2.Error as pe:
errmsg = self._formatted_exception_msg(pe, formatted_exception_msg)
current_app.logger.error(
u"Failed to execute query (execute_async) for the server "
u"#{server_id} - {conn_id}(Query-id: {query_id}):\n"
u"Error Message:{errmsg}".format(
"Failed to execute query (execute_async) for the server "
"#{server_id} - {conn_id}(Query-id: {query_id}):\n"
"Error Message:{errmsg}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
errmsg=errmsg,
@@ -918,7 +918,7 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
return False, errmsg
@@ -946,8 +946,8 @@ WHERE
current_app.logger.log(
25,
u"Execute (void) for server #{server_id} - {conn_id} (Query-id: "
u"{query_id}):\n{query}".format(
"Execute (void) for server #{server_id} - {conn_id} (Query-id: "
"{query_id}):\n{query}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
query=query,
@@ -968,13 +968,13 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
errmsg = self._formatted_exception_msg(pe, formatted_exception_msg)
current_app.logger.error(
u"Failed to execute query (execute_void) for the server "
u"#{server_id} - {conn_id}(Query-id: {query_id}):\n"
u"Error Message:{errmsg}".format(
"Failed to execute query (execute_void) for the server "
"#{server_id} - {conn_id}(Query-id: {query_id}):\n"
"Error Message:{errmsg}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
errmsg=errmsg,
@@ -1015,7 +1015,7 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
def execute_2darray(self, query, params=None,
@@ -1029,8 +1029,8 @@ WHERE
query_id = random.randint(1, 9999999)
current_app.logger.log(
25,
u"Execute (2darray) for server #{server_id} - {conn_id} "
u"(Query-id: {query_id}):\n{query}".format(
"Execute (2darray) for server #{server_id} - {conn_id} "
"(Query-id: {query_id}):\n{query}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
query=query,
@@ -1049,9 +1049,9 @@ WHERE
)
errmsg = self._formatted_exception_msg(pe, formatted_exception_msg)
current_app.logger.error(
u"Failed to execute query (execute_2darray) for the server "
u"#{server_id} - {conn_id} (Query-id: {query_id}):\n"
u"Error Message:{errmsg}".format(
"Failed to execute query (execute_2darray) for the server "
"#{server_id} - {conn_id} (Query-id: {query_id}):\n"
"Error Message:{errmsg}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
errmsg=errmsg,
@@ -1082,8 +1082,8 @@ WHERE
query_id = random.randint(1, 9999999)
current_app.logger.log(
25,
u"Execute (dict) for server #{server_id} - {conn_id} (Query-id: "
u"{query_id}):\n{query}".format(
"Execute (dict) for server #{server_id} - {conn_id} (Query-id: "
"{query_id}):\n{query}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
query=query,
@@ -1103,13 +1103,13 @@ WHERE
raise ConnectionLost(
self.manager.sid,
self.db,
None if self.conn_id[0:3] == u'DB:' else self.conn_id[5:]
None if self.conn_id[0:3] == 'DB:' else self.conn_id[5:]
)
errmsg = self._formatted_exception_msg(pe, formatted_exception_msg)
current_app.logger.error(
u"Failed to execute query (execute_dict) for the server "
u"#{server_id}- {conn_id} (Query-id: {query_id}):\n"
u"Error Message:{errmsg}".format(
"Failed to execute query (execute_dict) for the server "
"#{server_id}- {conn_id} (Query-id: {query_id}):\n"
"Error Message:{errmsg}".format(
server_id=self.manager.sid,
conn_id=self.conn_id,
query_id=query_id,
@@ -1283,7 +1283,7 @@ Failed to reset the connection to the server due to following error:
conn: connection object
"""
while 1:
while True:
state = conn.poll()
if state == psycopg2.extensions.POLL_OK:
break
@@ -1309,7 +1309,7 @@ Failed to reset the connection to the server due to following error:
time: wait time
"""
while 1:
while True:
state = conn.poll()
if state == psycopg2.extensions.POLL_OK:
@@ -1626,12 +1626,12 @@ Failed to reset the connection to the server due to following error:
# Do not append if error starts with `ERROR:` as most pg related
# error starts with `ERROR:`
if not errmsg.startswith(u'ERROR:'):
errmsg = gettext(u'ERROR: ') + errmsg + u'\n\n'
if not errmsg.startswith('ERROR:'):
errmsg = gettext('ERROR: ') + errmsg + '\n\n'
if exception_obj.diag.severity is not None \
and exception_obj.diag.message_primary is not None:
ex_diag_message = u"{0}: {1}".format(
ex_diag_message = "{0}: {1}".format(
exception_obj.diag.severity,
exception_obj.diag.message_primary
)
@@ -1796,16 +1796,16 @@ Failed to reset the connection to the server due to following error:
)
elif psycopg2.__libpq_version__ < 100000:
current_app.logger.warning(
u"To encrypt passwords the required libpq version is "
u"greater than or equal to 100000. Current libpq version "
u"is {curr_ver}".format(
"To encrypt passwords the required libpq version is "
"greater than or equal to 100000. Current libpq version "
"is {curr_ver}".format(
curr_ver=psycopg2.__libpq_version__
)
)
elif not hasattr(psycopg2.extensions, 'encrypt_password'):
current_app.logger.warning(
u"The psycopg2.extensions module does not have the"
u"'encrypt_password' method."
"The psycopg2.extensions module does not have the"
"'encrypt_password' method."
)
return enc_password

View File

@@ -232,7 +232,7 @@ class DictCursor(_cursor):
it = _cursor.__iter__(self)
try:
yield self._dict_tuple(next(it))
while 1:
while True:
yield self._dict_tuple(next(it))
except StopIteration:
pass

View File

@@ -41,8 +41,8 @@ if __name__ == '__main__':
pattern = re.compile(r'"([^"]+)",\s*[^,]*\s*,\s*(.*)$')
keyword_types = [
u'UNRESERVED_KEYWORD', u'COL_NAME_KEYWORD',
u'TYPE_FUNC_NAME_KEYWORD', u'RESERVED_KEYWORD'
'UNRESERVED_KEYWORD', 'COL_NAME_KEYWORD',
'TYPE_FUNC_NAME_KEYWORD', 'RESERVED_KEYWORD'
]
for line in ins:
@@ -54,7 +54,7 @@ if __name__ == '__main__':
else:
keywords_file.write(" ")
keywords_file.write(
'"' + match.group(1) + u'": ' +
'"' + match.group(1) + '": ' +
str(keyword_types.index(match.group(2)))
)
idx += 1

View File

@@ -185,7 +185,7 @@ class ServerManager(object):
elif did in self.db_info:
database = self.db_info[did]['datname']
else:
maintenance_db_id = u'DB:{0}'.format(self.db)
maintenance_db_id = 'DB:{0}'.format(self.db)
if maintenance_db_id in self.connections:
conn = self.connections[maintenance_db_id]
# try to connect maintenance db if not connected
@@ -193,7 +193,7 @@ class ServerManager(object):
conn.connect()
if conn.connected():
status, res = conn.execute_dict(u"""
status, res = conn.execute_dict("""
SELECT
db.oid as did, db.datname, db.datallowconn,
pg_encoding_to_char(db.encoding) AS serverencoding,
@@ -223,8 +223,8 @@ WHERE db.oid = {0}""".format(did))
else:
raise ConnectionLost(self.sid, None, None)
my_id = (u'CONN:{0}'.format(conn_id)) if conn_id is not None else \
(u'DB:{0}'.format(database))
my_id = ('CONN:{0}'.format(conn_id)) if conn_id is not None else \
('DB:{0}'.format(database))
self.pinged = datetime.datetime.now()
@@ -373,9 +373,9 @@ WHERE db.oid = {0}""".format(did))
my_id = None
if conn_id is not None:
my_id = u'CONN:{0}'.format(conn_id)
my_id = 'CONN:{0}'.format(conn_id)
elif database is not None:
my_id = u'DB:{0}'.format(database)
my_id = 'DB:{0}'.format(database)
if my_id is not None:
if my_id in self.connections:

View File

@@ -54,7 +54,7 @@ class JavascriptBundlerTestCase(BaseTestGenerator):
self.mockSubprocessCall.return_value = 0
self.mockOs.listdir.return_value = [
u'history.js', u'reactComponents.js']
'history.js', 'reactComponents.js']
javascript_bundler.bundle()
self.mockSubprocessCall.assert_called_once_with(
@@ -100,7 +100,7 @@ class JavascriptBundlerTestCase(BaseTestGenerator):
"mock exception behavior")
self.mockOs.path.exists.return_value = True
self.mockOs.listdir.return_value = [
u'history.js', u'reactComponents.js']
'history.js', 'reactComponents.js']
javascript_bundler.bundle()
self.mockSubprocessCall.assert_called_once_with(

View File

@@ -163,7 +163,7 @@ class _Preference(object):
try:
if self._type in ('boolean', 'switch', 'node'):
assert type(value) == bool
assert isinstance(value, bool)
elif self._type == 'options':
has_value = next((True for opt in self.options
if 'value' in opt and opt['value'] == value),
@@ -175,11 +175,12 @@ class _Preference(object):
value = parser_map.get(self._type, lambda v: v)(value)
if self._type == 'integer':
value = self.normalize_range(value)
assert type(value) == int
assert isinstance(value, int)
if self._type == 'numeric':
value = self.normalize_range(value)
assert (type(value) == int or type(value) == float or
type(value) == decimal.Decimal)
assert (
isinstance(value, int) or isinstance(value, float) or
isinstance(value, decimal.Decimal))
except Exception as e:
current_app.logger.exception(e)
return False, gettext(
@@ -190,7 +191,7 @@ class _Preference(object):
pid=self.pid
).filter_by(uid=current_user.id).first()
value = u"{}".format(value)
value = "{}".format(value)
if pref is None:
pref = UserPrefTable(
uid=current_user.id, pid=self.pid, value=value

View File

@@ -466,7 +466,7 @@ class SQLAutoComplete(object):
if sort_key:
if display_meta and len(display_meta) > 50:
# Truncate meta-text to 50 characters, if necessary
display_meta = display_meta[:47] + u'...'
display_meta = display_meta[:47] + '...'
# Lexical order of items in the collection, used for
# tiebreaking items with the same match group length and start
@@ -572,7 +572,7 @@ class SQLAutoComplete(object):
lastword = last_word(word_before_cursor, include='most_punctuations')
if lastword == '*':
if suggestion.context == 'insert':
def filter(col):
def is_scoped(col):
if not col.has_default:
return True
return not any(
@@ -580,7 +580,7 @@ class SQLAutoComplete(object):
for p in self.insert_col_skip_patterns
)
scoped_cols = \
dict((t, [col for col in cols if filter(col)])
dict((t, [col for col in cols if is_scoped(col)])
for t, cols in scoped_cols.items())
if self.asterisk_column_order == 'alphabetic':
for cols in scoped_cols.values():

View File

@@ -87,7 +87,7 @@ def extract_ctes(sql):
idx = p.token_index(tok) + 1
# Collapse everything after the ctes into a remainder query
remainder = u''.join(str(tok) for tok in p.tokens[idx:])
remainder = ''.join(str(tok) for tok in p.tokens[idx:])
return ctes, remainder

View File

@@ -36,4 +36,4 @@ class TestCompileTemplateName(BaseTestGenerator):
result = compile_template_name(
'some/prefix', 'some_file.sql', self.server_type, self.version
)
self.assertEquals(result, self.expected_return_value)
self.assertEqual(result, self.expected_return_value)

View File

@@ -224,4 +224,4 @@ class TestEncoding(BaseTestGenerator):
def runTest(self):
result = get_encoding(self.db_encoding)
self.assertEquals(result, self.expected_return_value)
self.assertEqual(result, self.expected_return_value)