[ovs-dev] [PATCH v2 1/2] Remove Python 2 leftovers.

Timothy Redaelli tredaelli at redhat.com
Thu Jun 10 17:48:42 UTC 2021


On Wed,  9 Jun 2021 17:25:45 -0400
Rosemarie O'Riorden <roriorde at 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 at 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
>  



More information about the dev mailing list