[1/8] decodetree: Remove python 3.4 check

Message ID 20200518164052.18689-2-richard.henderson@linaro.org
State New
Headers show
Series
  • decodetree: Add non-overlapping groups
Related show

Commit Message

Richard Henderson May 18, 2020, 4:40 p.m.
We are now guaranteed python 3.5 or later.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 scripts/decodetree.py | 25 +++++++++----------------
 1 file changed, 9 insertions(+), 16 deletions(-)

-- 
2.20.1

Comments

Philippe Mathieu-Daudé May 18, 2020, 4:46 p.m. | #1
On 5/18/20 6:40 PM, Richard Henderson wrote:
> We are now guaranteed python 3.5 or later.

> 

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>   scripts/decodetree.py | 25 +++++++++----------------

>   1 file changed, 9 insertions(+), 16 deletions(-)

> 

> 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':

> 


Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Philippe Mathieu-Daudé May 29, 2020, 9:35 a.m. | #2
On 5/18/20 6:40 PM, Richard Henderson wrote:
> We are now guaranteed python 3.5 or later.


FYI this has been addressed by John Snow:
https://www.mail-archive.com/qemu-block@nongnu.org/msg66830.html

> 

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>  scripts/decodetree.py | 25 +++++++++----------------

>  1 file changed, 9 insertions(+), 16 deletions(-)

> 

> 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':

>

Patch

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':