[3/4] tracetool: avoid str.rpartition() Python 2.5 function

Submitted by Stefan Hajnoczi on April 27, 2012, 2:23 p.m.

Details

Message ID 1335536625-4621-4-git-send-email-stefanha@linux.vnet.ibm.com
State New
Headers show

Commit Message

Stefan Hajnoczi April 27, 2012, 2:23 p.m.
The str.rpartition() function is related to str.split() and is used for
splitting strings.  It was introduced in Python 2.5 and therefore cannot
be used in tracetool as Python 2.4 compatibility is required.

Replace the code using str.rsplit().

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
---
 scripts/tracetool/__init__.py |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Comments

Lluís Vilanova April 27, 2012, 5:47 p.m.
Stefan Hajnoczi writes:

> The str.rpartition() function is related to str.split() and is used for
> splitting strings.  It was introduced in Python 2.5 and therefore cannot
> be used in tracetool as Python 2.4 compatibility is required.

> Replace the code using str.rsplit().

> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>


> ---
>  scripts/tracetool/__init__.py |   17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)

> diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
> index 49858c9..175df08 100644
> --- a/scripts/tracetool/__init__.py
> +++ b/scripts/tracetool/__init__.py
> @@ -64,14 +64,17 @@ class Arguments:
>          res = []
>          for arg in arg_str.split(","):
>              arg = arg.strip()
> -            parts = arg.split()
> -            head, sep, tail = parts[-1].rpartition("*")
> -            parts = parts[:-1]
> -            if tail == "void":
> -                assert len(parts) == 0 and sep == ""
> +            if arg == 'void':
>                  continue
> -            arg_type = " ".join(parts + [ " ".join([head, sep]).strip() ]).strip()
> -            res.append((arg_type, tail))
> +
> +            if '*' in arg:
> +                arg_type, identifier = arg.rsplit('*', 1)
> +                arg_type += '*'
> +                identifier = identifier.strip()
> +            else:
> +                arg_type, identifier = arg.rsplit(None, 1)
> +
> +            res.append((arg_type, identifier))
>          return Arguments(res)
 
>      def __iter__(self):
> -- 
> 1.7.10

Patch hide | download patch | download mbox

diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 49858c9..175df08 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -64,14 +64,17 @@  class Arguments:
         res = []
         for arg in arg_str.split(","):
             arg = arg.strip()
-            parts = arg.split()
-            head, sep, tail = parts[-1].rpartition("*")
-            parts = parts[:-1]
-            if tail == "void":
-                assert len(parts) == 0 and sep == ""
+            if arg == 'void':
                 continue
-            arg_type = " ".join(parts + [ " ".join([head, sep]).strip() ]).strip()
-            res.append((arg_type, tail))
+
+            if '*' in arg:
+                arg_type, identifier = arg.rsplit('*', 1)
+                arg_type += '*'
+                identifier = identifier.strip()
+            else:
+                arg_type, identifier = arg.rsplit(None, 1)
+
+            res.append((arg_type, identifier))
         return Arguments(res)
 
     def __iter__(self):