qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] python: remove more instances of sys.version_info


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH] python: remove more instances of sys.version_info
Date: Thu, 14 May 2020 07:56:11 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

On 5/14/20 5:52 AM, John Snow wrote:
We guarantee 3.5+ everywhere; remove more dead checks. In general, try
to avoid using version checks and instead prefer to attempt behavior
when possible.

Signed-off-by: John Snow <address@hidden>
---
  scripts/analyze-migration.py             |  5 -----
  scripts/decodetree.py                    | 25 +++++++++---------------
  scripts/qmp/qmp-shell                    |  3 ---
  tests/docker/docker.py                   |  5 +++--
  tests/qemu-iotests/nbd-fault-injector.py |  5 +----
  5 files changed, 13 insertions(+), 30 deletions(-)

diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
index 96a31d3974..95838cbff3 100755
--- a/scripts/analyze-migration.py
+++ b/scripts/analyze-migration.py
@@ -25,11 +25,6 @@
  import sys
-MIN_PYTHON = (3, 2)
-if sys.version_info < MIN_PYTHON:
-    sys.exit("Python %s.%s or later is required.\n" % MIN_PYTHON)
-
-
  def mkdir_p(path):
      try:
          os.makedirs(path)
diff --git a/scripts/decodetree.py b/scripts/decodetree.py
index 46ab917807..f9d204aa36 100755
--- a/scripts/decodetree.py
+++ b/scripts/decodetree.py
@@ -75,13 +75,6 @@ def output(*args):
          output_fd.write(a)
-if sys.version_info >= (3, 4):
-    re_fullmatch = re.fullmatch
-else:
-    def re_fullmatch(pat, str):
-        return re.match('^' + pat + '$', str)
-
-
  def output_autogen():
      output('/* This file is autogenerated by scripts/decodetree.py.  */\n\n')
@@ -428,18 +421,18 @@ def parse_field(lineno, name, toks):
      width = 0
      func = None
      for t in toks:
-        if re_fullmatch('!function=' + re_ident, t):
+        if re.fullmatch('!function=' + re_ident, t):
              if func:
                  error(lineno, 'duplicate function')
              func = t.split('=')
              func = func[1]
              continue
- if re_fullmatch('[0-9]+:s[0-9]+', t):
+        if re.fullmatch('[0-9]+:s[0-9]+', t):
              # Signed field extract
              subtoks = t.split(':s')
              sign = True
-        elif re_fullmatch('[0-9]+:[0-9]+', t):
+        elif re.fullmatch('[0-9]+:[0-9]+', t):
              # Unsigned field extract
              subtoks = t.split(':')
              sign = False
@@ -488,11 +481,11 @@ def parse_arguments(lineno, name, toks):
      flds = []
      extern = False
      for t in toks:
-        if re_fullmatch('!extern', t):
+        if re.fullmatch('!extern', t):
              extern = True
              anyextern = True
              continue
-        if not re_fullmatch(re_ident, t):
+        if not re.fullmatch(re_ident, t):
              error(lineno, 'invalid argument set token "{0}"'.format(t))
          if t in flds:
              error(lineno, 'duplicate argument "{0}"'.format(t))
@@ -621,13 +614,13 @@ def parse_generic(lineno, is_format, name, toks):
              continue
# 'Foo=%Bar' imports a field with a different name.
-        if re_fullmatch(re_ident + '=%' + re_ident, t):
+        if re.fullmatch(re_ident + '=%' + re_ident, t):
              (fname, iname) = t.split('=%')
              flds = add_field_byname(lineno, flds, fname, iname)
              continue
# 'Foo=number' sets an argument field to a constant value
-        if re_fullmatch(re_ident + '=[+-]?[0-9]+', t):
+        if re.fullmatch(re_ident + '=[+-]?[0-9]+', t):
              (fname, value) = t.split('=')
              value = int(value)
              flds = add_field(lineno, flds, fname, ConstField(value))
@@ -635,7 +628,7 @@ def parse_generic(lineno, is_format, name, toks):
# Pattern of 0s, 1s, dots and dashes indicate required zeros,
          # required ones, or dont-cares.
-        if re_fullmatch('[01.-]+', t):
+        if re.fullmatch('[01.-]+', t):
              shift = len(t)
              fms = t.replace('0', '1')
              fms = fms.replace('.', '0')
@@ -652,7 +645,7 @@ def parse_generic(lineno, is_format, name, toks):
              fixedmask = (fixedmask << shift) | fms
              undefmask = (undefmask << shift) | ubm
          # Otherwise, fieldname:fieldwidth
-        elif re_fullmatch(re_ident + ':s?[0-9]+', t):
+        elif re.fullmatch(re_ident + ':s?[0-9]+', t):
              (fname, flen) = t.split(':')
              sign = False
              if flen[0] == 's':
diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index a01d31de1e..c5eef06f3f 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -77,9 +77,6 @@ import re
  sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
  from qemu import qmp
-if sys.version_info[0] == 2:

:)

Reviewed-by: Philippe Mathieu-Daudé <address@hidden>

-    input = raw_input
-
  class QMPCompleter(list):
      def complete(self, text, state):
          for cmd in self:
diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index d8268c1111..5a9735db78 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -258,12 +258,13 @@ def _kill_instances(self, *args, **kwargs):
          return self._do_kill_instances(True)
def _output(self, cmd, **kwargs):
-        if sys.version_info[1] >= 6:
+        try:
              return subprocess.check_output(self._command + cmd,
                                             stderr=subprocess.STDOUT,
                                             encoding='utf-8',
                                             **kwargs)
-        else:
+        except TypeError:
+            # 'encoding' argument was added in 3.6+
              return subprocess.check_output(self._command + cmd,
                                             stderr=subprocess.STDOUT,
                                             **kwargs).decode('utf-8')
diff --git a/tests/qemu-iotests/nbd-fault-injector.py 
b/tests/qemu-iotests/nbd-fault-injector.py
index 588d62aebf..78f42c4214 100755
--- a/tests/qemu-iotests/nbd-fault-injector.py
+++ b/tests/qemu-iotests/nbd-fault-injector.py
@@ -47,10 +47,7 @@
  import socket
  import struct
  import collections
-if sys.version_info.major >= 3:
-    import configparser
-else:
-    import ConfigParser as configparser
+import configparser
FAKE_DISK_SIZE = 8 * 1024 * 1024 * 1024 # 8 GB




reply via email to

[Prev in Thread] Current Thread [Next in Thread]