From 7b40cc49c98c6668966135253346dd4ddde00b25 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 19 Sep 2021 20:36:42 -0400 Subject: [PATCH 1/3] Apply lib2to3 to the python code --- IBM_DB/ibm_db/ibm_db_dbi.py | 66 +++++++++++++++++----------------- IBM_DB/ibm_db/setup.py | 2 +- IBM_DB/ibm_db/testfunctions.py | 2 +- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/IBM_DB/ibm_db/ibm_db_dbi.py b/IBM_DB/ibm_db/ibm_db_dbi.py index aeff00fe..58f80b8a 100644 --- a/IBM_DB/ibm_db/ibm_db_dbi.py +++ b/IBM_DB/ibm_db/ibm_db_dbi.py @@ -28,15 +28,15 @@ buffer = memoryview if sys.version_info < (3, ): import exceptions - exception = exceptions.StandardError + exception = exceptions.Exception else: exception = Exception try: - basestring # Python 2 - long + str # Python 2 + int except NameError: - basestring = str # Python 3 + str = str # Python 3 long = int import ibm_db @@ -453,10 +453,10 @@ def _server_connect(dsn, user='', password='', host=''): if dsn is None: raise InterfaceError("dsn value should not be None") - if (not isinstance(dsn, basestring)) | \ - (not isinstance(user, basestring)) | \ - (not isinstance(password, basestring)) | \ - (not isinstance(host, basestring)): + if (not isinstance(dsn, str)) | \ + (not isinstance(user, str)) | \ + (not isinstance(password, str)) | \ + (not isinstance(host, str)): raise InterfaceError("Arguments should be of type string or unicode") # If the dsn does not contain port and protocal adding database @@ -491,9 +491,9 @@ def createdb(database, dsn, user='', password='', host='', codeset='', mode=''): if database is None: raise InterfaceError("createdb expects a not None database name value") - if (not isinstance(database, basestring)) | \ - (not isinstance(codeset, basestring)) | \ - (not isinstance(mode, basestring)): + if (not isinstance(database, str)) | \ + (not isinstance(codeset, str)) | \ + (not isinstance(mode, str)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -515,7 +515,7 @@ def dropdb(database, dsn, user='', password='', host=''): if database is None: raise InterfaceError("dropdb expects a not None database name value") - if (not isinstance(database, basestring)): + if (not isinstance(database, str)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -537,9 +537,9 @@ def recreatedb(database, dsn, user='', password='', host='', codeset='', mode='' if database is None: raise InterfaceError("recreatedb expects a not None database name value") - if (not isinstance(database, basestring)) | \ - (not isinstance(codeset, basestring)) | \ - (not isinstance(mode, basestring)): + if (not isinstance(database, str)) | \ + (not isinstance(codeset, str)) | \ + (not isinstance(mode, str)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -561,9 +561,9 @@ def createdbNX(database, dsn, user='', password='', host='', codeset='', mode='' if database is None: raise InterfaceError("createdbNX expects a not None database name value") - if (not isinstance(database, basestring)) | \ - (not isinstance(codeset, basestring)) | \ - (not isinstance(mode, basestring)): + if (not isinstance(database, str)) | \ + (not isinstance(codeset, str)) | \ + (not isinstance(mode, str)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -587,11 +587,11 @@ def connect(dsn, user='', password='', host='', database='', conn_options=None): if dsn is None: raise InterfaceError("connect expects a not None dsn value") - if (not isinstance(dsn, basestring)) | \ - (not isinstance(user, basestring)) | \ - (not isinstance(password, basestring)) | \ - (not isinstance(host, basestring)) | \ - (not isinstance(database, basestring)): + if (not isinstance(dsn, str)) | \ + (not isinstance(user, str)) | \ + (not isinstance(password, str)) | \ + (not isinstance(host, str)) | \ + (not isinstance(database, str)): raise InterfaceError("connect expects the first five arguments to" " be of type string or unicode") if conn_options is not None: @@ -638,11 +638,11 @@ def pconnect(dsn, user='', password='', host='', database='', conn_options=None) if dsn is None: raise InterfaceError("connect expects a not None dsn value") - if (not isinstance(dsn, basestring)) | \ - (not isinstance(user, basestring)) | \ - (not isinstance(password, basestring)) | \ - (not isinstance(host, basestring)) | \ - (not isinstance(database, basestring)): + if (not isinstance(dsn, str)) | \ + (not isinstance(user, str)) | \ + (not isinstance(password, str)) | \ + (not isinstance(host, str)) | \ + (not isinstance(database, str)): raise InterfaceError("connect expects the first five arguments to" " be of type string or unicode") if conn_options is not None: @@ -1137,7 +1137,7 @@ def __get_rowcount( self ): def __iter__( self ): return self - def next( self ): + def __next__( self ): row = self.fetchone() if row == None: raise StopIteration @@ -1238,7 +1238,7 @@ def callproc(self, procname, parameters=None): """ self.messages = [] - if not isinstance(procname, basestring): + if not isinstance(procname, str): self.messages.append(InterfaceError("callproc expects the first argument to be of type String or Unicode.")) raise self.messages[len(self.messages) - 1] if parameters is not None: @@ -1390,7 +1390,7 @@ def execute(self, operation, parameters=None): the SQL statement as arguments. """ self.messages = [] - if not isinstance(operation, basestring): + if not isinstance(operation, str): self.messages.append(InterfaceError("execute expects the first argument [%s] to be of type String or Unicode." % operation )) raise self.messages[len(self.messages) - 1] if parameters is not None: @@ -1412,7 +1412,7 @@ def executemany(self, operation, seq_parameters): parameter markers in the SQL statement as its argument. """ self.messages = [] - if not isinstance(operation, basestring): + if not isinstance(operation, str): self.messages.append(InterfaceError("executemany expects the first argument to be of type String or Unicode.")) raise self.messages[len(self.messages) - 1] if seq_parameters is None: @@ -1517,7 +1517,7 @@ def fetchmany(self, size=0): It takes the number of rows to fetch as an argument. If this is not provided it fetches self.arraysize number of rows. """ - if not isinstance(size, (int, long)): + if not isinstance(size, int): self.messages.append(InterfaceError( "fetchmany expects argument type int or long.")) raise self.messages[len(self.messages) - 1] if size == 0: diff --git a/IBM_DB/ibm_db/setup.py b/IBM_DB/ibm_db/setup.py index 2ead1367..d67ef0ef 100644 --- a/IBM_DB/ibm_db/setup.py +++ b/IBM_DB/ibm_db/setup.py @@ -16,7 +16,7 @@ from io import BytesIO else: import urllib2 as request - from cStringIO import StringIO as BytesIO + from io import StringIO as BytesIO from setuptools import setup, find_packages, Extension from distutils.sysconfig import get_python_lib diff --git a/IBM_DB/ibm_db/testfunctions.py b/IBM_DB/ibm_db/testfunctions.py index 413d4c89..f59c6695 100644 --- a/IBM_DB/ibm_db/testfunctions.py +++ b/IBM_DB/ibm_db/testfunctions.py @@ -11,7 +11,7 @@ if sys.version_info >=(3,3 ): from io import StringIO else: - from StringIO import StringIO + from io import StringIO class IbmDbTestFunctions(unittest.TestCase): prepconn = ibm_db.connect(config.database, config.user, config.password) From 671ef6f5b4d968aa361aa612b1663efa9adfa339 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 19 Sep 2021 21:05:51 -0400 Subject: [PATCH 2/3] Restore Python 2 compatibility. --- IBM_DB/ibm_db/ibm_db_dbi.py | 78 ++++++++++++++++++---------------- IBM_DB/ibm_db/testfunctions.py | 5 +-- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/IBM_DB/ibm_db/ibm_db_dbi.py b/IBM_DB/ibm_db/ibm_db_dbi.py index 58f80b8a..c2879da1 100644 --- a/IBM_DB/ibm_db/ibm_db_dbi.py +++ b/IBM_DB/ibm_db/ibm_db_dbi.py @@ -24,20 +24,23 @@ import types, string, time, datetime, decimal, sys import weakref -if sys.version_info >= (3, ): +PY2 = sys.version_info < (3, ) + +if not PY2: buffer = memoryview -if sys.version_info < (3, ): +if PY2: import exceptions exception = exceptions.Exception else: exception = Exception -try: - str # Python 2 - int -except NameError: - str = str # Python 3 - long = int +if PY2: + import __builtin__ + string_types = __builtin__.unicode, bytes + int_types = __builtin__.long, int +else: + string_types = str + int_types = int import ibm_db __version__ = ibm_db.__version__ @@ -453,10 +456,10 @@ def _server_connect(dsn, user='', password='', host=''): if dsn is None: raise InterfaceError("dsn value should not be None") - if (not isinstance(dsn, str)) | \ - (not isinstance(user, str)) | \ - (not isinstance(password, str)) | \ - (not isinstance(host, str)): + if (not isinstance(dsn, string_types)) | \ + (not isinstance(user, string_types)) | \ + (not isinstance(password, string_types)) | \ + (not isinstance(host, string_types)): raise InterfaceError("Arguments should be of type string or unicode") # If the dsn does not contain port and protocal adding database @@ -491,9 +494,9 @@ def createdb(database, dsn, user='', password='', host='', codeset='', mode=''): if database is None: raise InterfaceError("createdb expects a not None database name value") - if (not isinstance(database, str)) | \ - (not isinstance(codeset, str)) | \ - (not isinstance(mode, str)): + if (not isinstance(database, string_types)) | \ + (not isinstance(codeset, string_types)) | \ + (not isinstance(mode, string_types)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -515,7 +518,7 @@ def dropdb(database, dsn, user='', password='', host=''): if database is None: raise InterfaceError("dropdb expects a not None database name value") - if (not isinstance(database, str)): + if (not isinstance(database, string_types)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -537,9 +540,9 @@ def recreatedb(database, dsn, user='', password='', host='', codeset='', mode='' if database is None: raise InterfaceError("recreatedb expects a not None database name value") - if (not isinstance(database, str)) | \ - (not isinstance(codeset, str)) | \ - (not isinstance(mode, str)): + if (not isinstance(database, string_types)) | \ + (not isinstance(codeset, string_types)) | \ + (not isinstance(mode, string_types)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -561,9 +564,9 @@ def createdbNX(database, dsn, user='', password='', host='', codeset='', mode='' if database is None: raise InterfaceError("createdbNX expects a not None database name value") - if (not isinstance(database, str)) | \ - (not isinstance(codeset, str)) | \ - (not isinstance(mode, str)): + if (not isinstance(database, string_types)) | \ + (not isinstance(codeset, string_types)) | \ + (not isinstance(mode, string_types)): raise InterfaceError("Arguments sould be string or unicode") conn = _server_connect(dsn, user=user, password=password, host=host) @@ -587,11 +590,11 @@ def connect(dsn, user='', password='', host='', database='', conn_options=None): if dsn is None: raise InterfaceError("connect expects a not None dsn value") - if (not isinstance(dsn, str)) | \ - (not isinstance(user, str)) | \ - (not isinstance(password, str)) | \ - (not isinstance(host, str)) | \ - (not isinstance(database, str)): + if (not isinstance(dsn, string_types)) | \ + (not isinstance(user, string_types)) | \ + (not isinstance(password, string_types)) | \ + (not isinstance(host, string_types)) | \ + (not isinstance(database, string_types)): raise InterfaceError("connect expects the first five arguments to" " be of type string or unicode") if conn_options is not None: @@ -638,11 +641,11 @@ def pconnect(dsn, user='', password='', host='', database='', conn_options=None) if dsn is None: raise InterfaceError("connect expects a not None dsn value") - if (not isinstance(dsn, str)) | \ - (not isinstance(user, str)) | \ - (not isinstance(password, str)) | \ - (not isinstance(host, str)) | \ - (not isinstance(database, str)): + if (not isinstance(dsn, string_types)) | \ + (not isinstance(user, string_types)) | \ + (not isinstance(password, string_types)) | \ + (not isinstance(host, string_types)) | \ + (not isinstance(database, string_types)): raise InterfaceError("connect expects the first five arguments to" " be of type string or unicode") if conn_options is not None: @@ -1143,6 +1146,9 @@ def __next__( self ): raise StopIteration return row + if PY2: + next = __next__ + # This attribute specifies the number of rows the last executeXXX() # produced or affected. It is a read only attribute. rowcount = property(__get_rowcount, None, None, "") @@ -1238,7 +1244,7 @@ def callproc(self, procname, parameters=None): """ self.messages = [] - if not isinstance(procname, str): + if not isinstance(procname, string_types): self.messages.append(InterfaceError("callproc expects the first argument to be of type String or Unicode.")) raise self.messages[len(self.messages) - 1] if parameters is not None: @@ -1390,7 +1396,7 @@ def execute(self, operation, parameters=None): the SQL statement as arguments. """ self.messages = [] - if not isinstance(operation, str): + if not isinstance(operation, string_types): self.messages.append(InterfaceError("execute expects the first argument [%s] to be of type String or Unicode." % operation )) raise self.messages[len(self.messages) - 1] if parameters is not None: @@ -1412,7 +1418,7 @@ def executemany(self, operation, seq_parameters): parameter markers in the SQL statement as its argument. """ self.messages = [] - if not isinstance(operation, str): + if not isinstance(operation, string_types): self.messages.append(InterfaceError("executemany expects the first argument to be of type String or Unicode.")) raise self.messages[len(self.messages) - 1] if seq_parameters is None: @@ -1517,7 +1523,7 @@ def fetchmany(self, size=0): It takes the number of rows to fetch as an argument. If this is not provided it fetches self.arraysize number of rows. """ - if not isinstance(size, int): + if not isinstance(size, int_types): self.messages.append(InterfaceError( "fetchmany expects argument type int or long.")) raise self.messages[len(self.messages) - 1] if size == 0: diff --git a/IBM_DB/ibm_db/testfunctions.py b/IBM_DB/ibm_db/testfunctions.py index f59c6695..cf57cacf 100644 --- a/IBM_DB/ibm_db/testfunctions.py +++ b/IBM_DB/ibm_db/testfunctions.py @@ -8,10 +8,7 @@ import ibm_db import config -if sys.version_info >=(3,3 ): - from io import StringIO -else: - from io import StringIO +from io import StringIO class IbmDbTestFunctions(unittest.TestCase): prepconn = ibm_db.connect(config.database, config.user, config.password) From 60d0b035abbcde2d2796cd8bacad7fc3c74971fe Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 19 Sep 2021 21:07:13 -0400 Subject: [PATCH 3/3] Remove dependency on 2to3 and unpin Setuptools. --- IBM_DB/ibm_db/pyproject.toml | 3 +-- IBM_DB/ibm_db/setup.py | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/IBM_DB/ibm_db/pyproject.toml b/IBM_DB/ibm_db/pyproject.toml index 617dd1cb..fed528d4 100644 --- a/IBM_DB/ibm_db/pyproject.toml +++ b/IBM_DB/ibm_db/pyproject.toml @@ -1,4 +1,3 @@ [build-system] -# pin to Setuptools prior to 58 for use_2to3 support -requires = ["setuptools<58"] +requires = ["setuptools"] build-backend = "setuptools.build_meta" diff --git a/IBM_DB/ibm_db/setup.py b/IBM_DB/ibm_db/setup.py index d67ef0ef..3cdc25d1 100644 --- a/IBM_DB/ibm_db/setup.py +++ b/IBM_DB/ibm_db/setup.py @@ -365,10 +365,6 @@ def _setDllPath(): else: ext_modules = _ext_modules(ibm_db_include, library, ibm_db_lib) -extra = {} -if sys.version_info >= (3, ): - extra['use_2to3'] = True - setup( name = PACKAGE, version = VERSION, license = LICENSE, @@ -405,7 +401,6 @@ def _setDllPath(): data_files = data_files, include_package_data = True, cmdclass = cmd_class, - **extra ) if license_agreement: