Message ID | 20210609212546.60034-1-roriorde@redhat.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [ovs-dev,v2,1/2] Remove Python 2 leftovers. | expand |
On Wed, 9 Jun 2021 17:25:45 -0400 Rosemarie O'Riorden <roriorde@redhat.com> wrote: > Fixes: 1ca0323e7c29 ("Require Python 3 and remove support for Python 2.") > Reported at: https://bugzilla.redhat.com/show_bug.cgi?id=1949875 > Signed-off-by: Rosemarie O'Riorden <roriorde@redhat.com> > --- > Fix import errors in v1. > Remove lines that indicate compatibility with python 2. > > ofproto/ipfix-gen-entities | 2 -- > ovsdb/ovsdb-idlc.in | 1 - > .../ovs/compat/sortedcontainers/sortedlist.py | 2 -- > python/ovstest/tests.py | 2 -- > python/ovstest/util.py | 2 +- > python/setup.py | 4 --- > tests/test-jsonrpc.py | 2 -- > utilities/checkpatch.py | 1 - > utilities/gdb/ovs_gdb.py | 1 - > utilities/ovs-l3ping.in | 14 +++++----- > utilities/ovs-parse-backtrace.in | 12 ++++---- > utilities/ovs-pcap.in | 4 +-- > utilities/ovs-vlan-test.in | 28 +++++++++---------- > 13 files changed, 29 insertions(+), 46 deletions(-) Hi, thank you for your work. It looks almost good and it passes "make flake8-check". I only added a small suggestion (see inline), but LTGM. > diff --git a/ofproto/ipfix-gen-entities b/ofproto/ipfix-gen-entities > index d5abe9c2e..dcecdab21 100755 > --- a/ofproto/ipfix-gen-entities > +++ b/ofproto/ipfix-gen-entities > @@ -7,8 +7,6 @@ > # notice and this notice are preserved. This file is offered as-is, > # without warranty of any kind. > > -from __future__ import print_function > - > import getopt > import re > import sys > diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in > index 5914e0878..61cded16d 100755 > --- a/ovsdb/ovsdb-idlc.in > +++ b/ovsdb/ovsdb-idlc.in > @@ -1,6 +1,5 @@ > #! @PYTHON3@ > > -from __future__ import print_function > import getopt > import os > import re > diff --git a/python/ovs/compat/sortedcontainers/sortedlist.py b/python/ovs/compat/sortedcontainers/sortedlist.py > index 8aec6bbac..ba5556692 100644 > --- a/python/ovs/compat/sortedcontainers/sortedlist.py > +++ b/python/ovs/compat/sortedcontainers/sortedlist.py > @@ -3,8 +3,6 @@ > """ > # pylint: disable=redefined-builtin, ungrouped-imports > > -from __future__ import print_function > - > from bisect import bisect_left, bisect_right, insort > from collections import Sequence, MutableSequence > from functools import wraps > diff --git a/python/ovstest/tests.py b/python/ovstest/tests.py > index 6de3cc3af..f959f945e 100644 > --- a/python/ovstest/tests.py > +++ b/python/ovstest/tests.py > @@ -10,8 +10,6 @@ > # See the License for the specific language governing permissions and > # limitations under the License. > > -from __future__ import print_function > - > import math > import time > > diff --git a/python/ovstest/util.py b/python/ovstest/util.py > index 72457158f..4caf6c352 100644 > --- a/python/ovstest/util.py > +++ b/python/ovstest/util.py > @@ -26,7 +26,7 @@ import socket > import struct > import subprocess > > -import exceptions > +import builtins as exceptions Nit: to avoid possibile misunderstanding since calling builtins "exceptions" is semantically wrong. Since exceptions is only used for a single except I guest we could just change the line that uses exceptions to do directly "except OSError:" > import xmlrpc.client > > diff --git a/python/setup.py b/python/setup.py > index d385d8372..cfe01763f 100644 > --- a/python/setup.py > +++ b/python/setup.py > @@ -10,8 +10,6 @@ > # See the License for the specific language governing permissions and > # limitations under the License. > > -from __future__ import print_function > - > import sys > > from distutils.command.build_ext import build_ext > @@ -82,8 +80,6 @@ setup_args = dict( > 'Topic :: Software Development :: Libraries :: Python Modules', > 'Topic :: System :: Networking', > 'License :: OSI Approved :: Apache Software License', > - 'Programming Language :: Python :: 2', > - 'Programming Language :: Python :: 2.7', > 'Programming Language :: Python :: 3', > 'Programming Language :: Python :: 3.4', > 'Programming Language :: Python :: 3.5', > diff --git a/tests/test-jsonrpc.py b/tests/test-jsonrpc.py > index 3eabcd78d..1df5afa22 100644 > --- a/tests/test-jsonrpc.py > +++ b/tests/test-jsonrpc.py > @@ -12,8 +12,6 @@ > # See the License for the specific language governing permissions and > # limitations under the License. > > -from __future__ import print_function > - > import argparse > import errno > import os > diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py > index bc6bfae15..ac14da29b 100755 > --- a/utilities/checkpatch.py > +++ b/utilities/checkpatch.py > @@ -13,7 +13,6 @@ > # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > # See the License for the specific language governing permissions and > # limitations under the License. > -from __future__ import print_function > > import email > import getopt > diff --git a/utilities/gdb/ovs_gdb.py b/utilities/gdb/ovs_gdb.py > index 1111f3100..0b2ecb81b 100644 > --- a/utilities/gdb/ovs_gdb.py > +++ b/utilities/gdb/ovs_gdb.py > @@ -55,7 +55,6 @@ > # ... > # ... > # > -from __future__ import print_function > import gdb > import sys > import uuid > diff --git a/utilities/ovs-l3ping.in b/utilities/ovs-l3ping.in > index 92d32acb3..1ece06457 100644 > --- a/utilities/ovs-l3ping.in > +++ b/utilities/ovs-l3ping.in > @@ -19,7 +19,7 @@ achieved by tunneling the control connection inside the tunnel itself. > """ > > import socket > -import xmlrpclib > +import xmlrpc.client > > import ovstest.args as args > import ovstest.tests as tests > @@ -64,13 +64,13 @@ if __name__ == '__main__': > ps = get_packet_sizes(me, he, args.client[0]) > tests.do_direct_tests(me, he, bandwidth, interval, ps) > except KeyboardInterrupt: > - print "Terminating" > - except xmlrpclib.Fault: > - print "Couldn't contact peer" > + print("Terminating") > + except xmlrpc.client.Fault: > + print("Couldn't contact peer") > except socket.error: > - print "Couldn't contact peer" > - except xmlrpclib.ProtocolError: > - print "XMLRPC control channel was abruptly terminated" > + print("Couldn't contact peer") > + except xmlrpc.client.ProtocolError: > + print("XMLRPC control channel was abruptly terminated") > finally: > if local_server is not None: > local_server.terminate() > diff --git a/utilities/ovs-parse-backtrace.in b/utilities/ovs-parse-backtrace.in > index d5506769a..f44f05cd1 100755 > --- a/utilities/ovs-parse-backtrace.in > +++ b/utilities/ovs-parse-backtrace.in > @@ -70,7 +70,7 @@ result. Expected usage is for ovs-appctl backtrace to be piped in.""") > if os.path.exists(debug): > binary = debug > > - print "Binary: %s\n" % binary > + print("Binary: %s\n" % binary) > > stdin = sys.stdin.read() > > @@ -88,15 +88,15 @@ result. Expected usage is for ovs-appctl backtrace to be piped in.""") > for lines, count in traces: > longest = max(len(l) for l in lines) > > - print "Backtrace Count: %d" % count > + print("Backtrace Count: %d" % count) > for line in lines: > match = re.search(r'\[(0x.*)]', line) > if match: > - print "%s %s" % (line.ljust(longest), > - addr2line(binary, match.group(1))) > + print("%s %s" % (line.ljust(longest), > + addr2line(binary, match.group(1)))) > else: > - print line > - print > + print(line) > + print() > > > if __name__ == "__main__": > diff --git a/utilities/ovs-pcap.in b/utilities/ovs-pcap.in > index dddbee4df..6b5f63399 100755 > --- a/utilities/ovs-pcap.in > +++ b/utilities/ovs-pcap.in > @@ -14,8 +14,6 @@ > # See the License for the specific language governing permissions and > # limitations under the License. > > -from __future__ import print_function > - > import binascii > import getopt > import struct > @@ -79,7 +77,7 @@ if __name__ == "__main__": > try: > options, args = getopt.gnu_getopt(sys.argv[1:], 'hV', > ['help', 'version']) > - except getopt.GetoptException as geo: > + except getopt.GetoptError as geo: > sys.stderr.write("%s: %s\n" % (argv0, geo.msg)) > sys.exit(1) > > diff --git a/utilities/ovs-vlan-test.in b/utilities/ovs-vlan-test.in > index 154573a9b..de3ae1686 100755 > --- a/utilities/ovs-vlan-test.in > +++ b/utilities/ovs-vlan-test.in > @@ -14,9 +14,9 @@ > # See the License for the specific language governing permissions and > # limitations under the License. > > -import BaseHTTPServer > import getopt > -import httplib > +import http.client > +import http.server > import os > import threading > import time > @@ -84,7 +84,7 @@ class UDPReceiver: > > try: > sock.bind((self.vlan_ip, self.vlan_port)) > - except socket.error, e: > + except socket.error as e: > print_safe('Failed to bind to %s:%d with error: %s' > % (self.vlan_ip, self.vlan_port, e)) > os._exit(1) #sys.exit only exits the current thread. > @@ -95,7 +95,7 @@ class UDPReceiver: > data, _ = sock.recvfrom(4096) > except socket.timeout: > continue > - except socket.error, e: > + except socket.error as e: > print_safe('Failed to receive from %s:%d with error: %s' > % (self.vlan_ip, self.vlan_port, e)) > os._exit(1) > @@ -180,7 +180,7 @@ class VlanServer: > for _ in range(send_time * 2): > try: > send_packet(test_id, size, ip, port) > - except socket.error, e: > + except socket.error as e: > self.set_result(test_id, 'Failure: ' + str(e)) > return > time.sleep(.5) > @@ -194,15 +194,15 @@ class VlanServer: > def run(self): > self.udp_recv.start() > try: > - BaseHTTPServer.HTTPServer((self.server_ip, self.server_port), > + http.server.HTTPServer((self.server_ip, self.server_port), > VlanServerHandler).serve_forever() > - except socket.error, e: > + except socket.error as e: > print_safe('Failed to start control server: %s' % e) > self.udp_recv.stop() > > return 1 > > -class VlanServerHandler(BaseHTTPServer.BaseHTTPRequestHandler): > +class VlanServerHandler(http.server.BaseHTTPRequestHandler): > def do_GET(self): > > #Guarantee three arguments. > @@ -244,7 +244,7 @@ class VlanClient: > self.udp_recv = UDPReceiver(vlan_ip, vlan_port) > > def request(self, resource): > - conn = httplib.HTTPConnection(self.server_ip_port) > + conn = http.client.HTTPConnection(self.server_ip_port) > conn.request('GET', resource) > return conn > > @@ -256,7 +256,7 @@ class VlanClient: > try: > conn = self.request('/start/recv') > data = conn.getresponse().read() > - except (socket.error, httplib.HTTPException), e: > + except (socket.error, http.client.HTTPException) as e: > error_msg(e) > return False > > @@ -277,7 +277,7 @@ class VlanClient: > send_packet(test_id, size, ip, port) > resp = self.request('/result/%d' % test_id).getresponse() > data = resp.read() > - except (socket.error, httplib.HTTPException), e: > + except (socket.error, http.client.HTTPException) as e: > error_msg(e) > return False > > @@ -302,7 +302,7 @@ class VlanClient: > try: > conn = self.request(resource) > test_id = conn.getresponse().read() > - except (socket.error, httplib.HTTPException), e: > + except (socket.error, http.client.HTTPException) as e: > error_msg(e) > return False > > @@ -335,7 +335,7 @@ class VlanClient: > try: > resp = self.request('/ping').getresponse() > data = resp.read() > - except (socket.error, httplib.HTTPException), e: > + except (socket.error, http.client.HTTPException) as e: > error_msg(e) > return False > > @@ -383,7 +383,7 @@ def main(): > try: > options, args = getopt.gnu_getopt(sys.argv[1:], 'hVs', > ['help', 'version', 'server']) > - except getopt.GetoptError, geo: > + except getopt.GetoptError as geo: > print_safe('%s: %s\n' % (sys.argv[0], geo.msg)) > return 1 >
On 6/9/21 11:25 PM, Rosemarie O'Riorden wrote: > Fixes: 1ca0323e7c29 ("Require Python 3 and remove support for Python 2.") > Reported at: https://bugzilla.redhat.com/show_bug.cgi?id=1949875 > Signed-off-by: Rosemarie O'Riorden <roriorde@redhat.com> > --- > Fix import errors in v1. > Remove lines that indicate compatibility with python 2. > > ofproto/ipfix-gen-entities | 2 -- > ovsdb/ovsdb-idlc.in | 1 - > .../ovs/compat/sortedcontainers/sortedlist.py | 2 -- > python/ovstest/tests.py | 2 -- > python/ovstest/util.py | 2 +- > python/setup.py | 4 --- > tests/test-jsonrpc.py | 2 -- > utilities/checkpatch.py | 1 - > utilities/gdb/ovs_gdb.py | 1 - > utilities/ovs-l3ping.in | 14 +++++----- > utilities/ovs-parse-backtrace.in | 12 ++++---- > utilities/ovs-pcap.in | 4 +-- > utilities/ovs-vlan-test.in | 28 +++++++++---------- > 13 files changed, 29 insertions(+), 46 deletions(-) Hi, Rosemarie. Thanks for v2! I see at least few more files not covered by this patch: 1. python/ovstest/rpcserver.py It has some problems with imports. At least it imports wrong 'util' module. All local imports in this file should be converted to relative imports, e.g. with 'from . import something', otherwise python3 will use absolute import and will get something unexpected. This should be fixed for 'util', 'tcp', 'udp' and 'vswitch' imports. And there is also issue with exceptions similar to what Timothy reported for the other file. (For some reason importing of twisted + pylint doesn't work for me inside the virtual environment, but that is not the issue of OVS) 2. python/ovstest/vswitch.py It has same issue with import of 'util'. Import should be relative. There are might be some other places there similar issues should be fixed. 3. python/ovstest/tcp.py This one is tricky as the issue cannot be caught by static analysis. If you'll try to run it, it will throw exception like this: Traceback (most recent call last): File "ovs-python-env/lib64/python3.8/site-packages/zope/interface/declarations.py", line 778, in implements raise TypeError(_ADVICE_ERROR % 'implementer') TypeError: Class advice impossible in Python3. Use the @implementer class decorator instead. So, the implements() stuff in this file should be turned into a decorator. Something like this: from zope.interface.declarations import implementer @implementer(interfaces.IPushProducer) class Producer(object): ... Best regards, Ilya Maximets.
diff --git a/ofproto/ipfix-gen-entities b/ofproto/ipfix-gen-entities index d5abe9c2e..dcecdab21 100755 --- a/ofproto/ipfix-gen-entities +++ b/ofproto/ipfix-gen-entities @@ -7,8 +7,6 @@ # notice and this notice are preserved. This file is offered as-is, # without warranty of any kind. -from __future__ import print_function - import getopt import re import sys diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in index 5914e0878..61cded16d 100755 --- a/ovsdb/ovsdb-idlc.in +++ b/ovsdb/ovsdb-idlc.in @@ -1,6 +1,5 @@ #! @PYTHON3@ -from __future__ import print_function import getopt import os import re diff --git a/python/ovs/compat/sortedcontainers/sortedlist.py b/python/ovs/compat/sortedcontainers/sortedlist.py index 8aec6bbac..ba5556692 100644 --- a/python/ovs/compat/sortedcontainers/sortedlist.py +++ b/python/ovs/compat/sortedcontainers/sortedlist.py @@ -3,8 +3,6 @@ """ # pylint: disable=redefined-builtin, ungrouped-imports -from __future__ import print_function - from bisect import bisect_left, bisect_right, insort from collections import Sequence, MutableSequence from functools import wraps diff --git a/python/ovstest/tests.py b/python/ovstest/tests.py index 6de3cc3af..f959f945e 100644 --- a/python/ovstest/tests.py +++ b/python/ovstest/tests.py @@ -10,8 +10,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import print_function - import math import time diff --git a/python/ovstest/util.py b/python/ovstest/util.py index 72457158f..4caf6c352 100644 --- a/python/ovstest/util.py +++ b/python/ovstest/util.py @@ -26,7 +26,7 @@ import socket import struct import subprocess -import exceptions +import builtins as exceptions import xmlrpc.client diff --git a/python/setup.py b/python/setup.py index d385d8372..cfe01763f 100644 --- a/python/setup.py +++ b/python/setup.py @@ -10,8 +10,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import print_function - import sys from distutils.command.build_ext import build_ext @@ -82,8 +80,6 @@ setup_args = dict( 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: System :: Networking', 'License :: OSI Approved :: Apache Software License', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', diff --git a/tests/test-jsonrpc.py b/tests/test-jsonrpc.py index 3eabcd78d..1df5afa22 100644 --- a/tests/test-jsonrpc.py +++ b/tests/test-jsonrpc.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import print_function - import argparse import errno import os diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py index bc6bfae15..ac14da29b 100755 --- a/utilities/checkpatch.py +++ b/utilities/checkpatch.py @@ -13,7 +13,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import print_function import email import getopt diff --git a/utilities/gdb/ovs_gdb.py b/utilities/gdb/ovs_gdb.py index 1111f3100..0b2ecb81b 100644 --- a/utilities/gdb/ovs_gdb.py +++ b/utilities/gdb/ovs_gdb.py @@ -55,7 +55,6 @@ # ... # ... # -from __future__ import print_function import gdb import sys import uuid diff --git a/utilities/ovs-l3ping.in b/utilities/ovs-l3ping.in index 92d32acb3..1ece06457 100644 --- a/utilities/ovs-l3ping.in +++ b/utilities/ovs-l3ping.in @@ -19,7 +19,7 @@ achieved by tunneling the control connection inside the tunnel itself. """ import socket -import xmlrpclib +import xmlrpc.client import ovstest.args as args import ovstest.tests as tests @@ -64,13 +64,13 @@ if __name__ == '__main__': ps = get_packet_sizes(me, he, args.client[0]) tests.do_direct_tests(me, he, bandwidth, interval, ps) except KeyboardInterrupt: - print "Terminating" - except xmlrpclib.Fault: - print "Couldn't contact peer" + print("Terminating") + except xmlrpc.client.Fault: + print("Couldn't contact peer") except socket.error: - print "Couldn't contact peer" - except xmlrpclib.ProtocolError: - print "XMLRPC control channel was abruptly terminated" + print("Couldn't contact peer") + except xmlrpc.client.ProtocolError: + print("XMLRPC control channel was abruptly terminated") finally: if local_server is not None: local_server.terminate() diff --git a/utilities/ovs-parse-backtrace.in b/utilities/ovs-parse-backtrace.in index d5506769a..f44f05cd1 100755 --- a/utilities/ovs-parse-backtrace.in +++ b/utilities/ovs-parse-backtrace.in @@ -70,7 +70,7 @@ result. Expected usage is for ovs-appctl backtrace to be piped in.""") if os.path.exists(debug): binary = debug - print "Binary: %s\n" % binary + print("Binary: %s\n" % binary) stdin = sys.stdin.read() @@ -88,15 +88,15 @@ result. Expected usage is for ovs-appctl backtrace to be piped in.""") for lines, count in traces: longest = max(len(l) for l in lines) - print "Backtrace Count: %d" % count + print("Backtrace Count: %d" % count) for line in lines: match = re.search(r'\[(0x.*)]', line) if match: - print "%s %s" % (line.ljust(longest), - addr2line(binary, match.group(1))) + print("%s %s" % (line.ljust(longest), + addr2line(binary, match.group(1)))) else: - print line - print + print(line) + print() if __name__ == "__main__": diff --git a/utilities/ovs-pcap.in b/utilities/ovs-pcap.in index dddbee4df..6b5f63399 100755 --- a/utilities/ovs-pcap.in +++ b/utilities/ovs-pcap.in @@ -14,8 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import print_function - import binascii import getopt import struct @@ -79,7 +77,7 @@ if __name__ == "__main__": try: options, args = getopt.gnu_getopt(sys.argv[1:], 'hV', ['help', 'version']) - except getopt.GetoptException as geo: + except getopt.GetoptError as geo: sys.stderr.write("%s: %s\n" % (argv0, geo.msg)) sys.exit(1) diff --git a/utilities/ovs-vlan-test.in b/utilities/ovs-vlan-test.in index 154573a9b..de3ae1686 100755 --- a/utilities/ovs-vlan-test.in +++ b/utilities/ovs-vlan-test.in @@ -14,9 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -import BaseHTTPServer import getopt -import httplib +import http.client +import http.server import os import threading import time @@ -84,7 +84,7 @@ class UDPReceiver: try: sock.bind((self.vlan_ip, self.vlan_port)) - except socket.error, e: + except socket.error as e: print_safe('Failed to bind to %s:%d with error: %s' % (self.vlan_ip, self.vlan_port, e)) os._exit(1) #sys.exit only exits the current thread. @@ -95,7 +95,7 @@ class UDPReceiver: data, _ = sock.recvfrom(4096) except socket.timeout: continue - except socket.error, e: + except socket.error as e: print_safe('Failed to receive from %s:%d with error: %s' % (self.vlan_ip, self.vlan_port, e)) os._exit(1) @@ -180,7 +180,7 @@ class VlanServer: for _ in range(send_time * 2): try: send_packet(test_id, size, ip, port) - except socket.error, e: + except socket.error as e: self.set_result(test_id, 'Failure: ' + str(e)) return time.sleep(.5) @@ -194,15 +194,15 @@ class VlanServer: def run(self): self.udp_recv.start() try: - BaseHTTPServer.HTTPServer((self.server_ip, self.server_port), + http.server.HTTPServer((self.server_ip, self.server_port), VlanServerHandler).serve_forever() - except socket.error, e: + except socket.error as e: print_safe('Failed to start control server: %s' % e) self.udp_recv.stop() return 1 -class VlanServerHandler(BaseHTTPServer.BaseHTTPRequestHandler): +class VlanServerHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): #Guarantee three arguments. @@ -244,7 +244,7 @@ class VlanClient: self.udp_recv = UDPReceiver(vlan_ip, vlan_port) def request(self, resource): - conn = httplib.HTTPConnection(self.server_ip_port) + conn = http.client.HTTPConnection(self.server_ip_port) conn.request('GET', resource) return conn @@ -256,7 +256,7 @@ class VlanClient: try: conn = self.request('/start/recv') data = conn.getresponse().read() - except (socket.error, httplib.HTTPException), e: + except (socket.error, http.client.HTTPException) as e: error_msg(e) return False @@ -277,7 +277,7 @@ class VlanClient: send_packet(test_id, size, ip, port) resp = self.request('/result/%d' % test_id).getresponse() data = resp.read() - except (socket.error, httplib.HTTPException), e: + except (socket.error, http.client.HTTPException) as e: error_msg(e) return False @@ -302,7 +302,7 @@ class VlanClient: try: conn = self.request(resource) test_id = conn.getresponse().read() - except (socket.error, httplib.HTTPException), e: + except (socket.error, http.client.HTTPException) as e: error_msg(e) return False @@ -335,7 +335,7 @@ class VlanClient: try: resp = self.request('/ping').getresponse() data = resp.read() - except (socket.error, httplib.HTTPException), e: + except (socket.error, http.client.HTTPException) as e: error_msg(e) return False @@ -383,7 +383,7 @@ def main(): try: options, args = getopt.gnu_getopt(sys.argv[1:], 'hVs', ['help', 'version', 'server']) - except getopt.GetoptError, geo: + except getopt.GetoptError as geo: print_safe('%s: %s\n' % (sys.argv[0], geo.msg)) return 1
Fixes: 1ca0323e7c29 ("Require Python 3 and remove support for Python 2.") Reported at: https://bugzilla.redhat.com/show_bug.cgi?id=1949875 Signed-off-by: Rosemarie O'Riorden <roriorde@redhat.com> --- Fix import errors in v1. Remove lines that indicate compatibility with python 2. ofproto/ipfix-gen-entities | 2 -- ovsdb/ovsdb-idlc.in | 1 - .../ovs/compat/sortedcontainers/sortedlist.py | 2 -- python/ovstest/tests.py | 2 -- python/ovstest/util.py | 2 +- python/setup.py | 4 --- tests/test-jsonrpc.py | 2 -- utilities/checkpatch.py | 1 - utilities/gdb/ovs_gdb.py | 1 - utilities/ovs-l3ping.in | 14 +++++----- utilities/ovs-parse-backtrace.in | 12 ++++---- utilities/ovs-pcap.in | 4 +-- utilities/ovs-vlan-test.in | 28 +++++++++---------- 13 files changed, 29 insertions(+), 46 deletions(-)