Patchwork Some Python 3 fixes

login
register
mail settings
Submitter Simon Marchi
Date April 7, 2015, 5:13 p.m.
Message ID <1428426786-7704-1-git-send-email-simon.marchi@ericsson.com>
Download mbox | patch
Permalink /patch/6075/
State New
Headers show

Comments

Simon Marchi - April 7, 2015, 5:13 p.m.
Some missing parentheses and one itertools.imap (Py2) vs map (Py3) issue.

gdb/ChangeLog:

	* python/lib/gdb/command/unwinders.py: Add parentheses.

gdb/testsuite/ChangeLog:

	* gdb.python/py-framefilter.py (ErrorFilter.filter): Use map function
	if itertools.imap is not present.
	* gdb.python/py-objfile.exp: Add parentheses.
	* gdb.python/py-type.exp: Same.
	* gdb.python/py-unwind-maint.py: Same.
---
 gdb/python/lib/gdb/command/unwinders.py     | 2 +-
 gdb/testsuite/gdb.python/py-framefilter.py  | 7 ++++++-
 gdb/testsuite/gdb.python/py-objfile.exp     | 4 ++--
 gdb/testsuite/gdb.python/py-type.exp        | 4 ++--
 gdb/testsuite/gdb.python/py-unwind-maint.py | 8 ++++----
 5 files changed, 15 insertions(+), 10 deletions(-)
Simon Marchi - April 15, 2015, 3:26 p.m.
On 15-04-07 01:13 PM, Simon Marchi wrote:
> Some missing parentheses and one itertools.imap (Py2) vs map (Py3) issue.
> 
> gdb/ChangeLog:
> 
> 	* python/lib/gdb/command/unwinders.py: Add parentheses.
> 
> gdb/testsuite/ChangeLog:
> 
> 	* gdb.python/py-framefilter.py (ErrorFilter.filter): Use map function
> 	if itertools.imap is not present.
> 	* gdb.python/py-objfile.exp: Add parentheses.
> 	* gdb.python/py-type.exp: Same.
> 	* gdb.python/py-unwind-maint.py: Same.
> ---
>  gdb/python/lib/gdb/command/unwinders.py     | 2 +-
>  gdb/testsuite/gdb.python/py-framefilter.py  | 7 ++++++-
>  gdb/testsuite/gdb.python/py-objfile.exp     | 4 ++--
>  gdb/testsuite/gdb.python/py-type.exp        | 4 ++--
>  gdb/testsuite/gdb.python/py-unwind-maint.py | 8 ++++----
>  5 files changed, 15 insertions(+), 10 deletions(-)
> 
> diff --git a/gdb/python/lib/gdb/command/unwinders.py b/gdb/python/lib/gdb/command/unwinders.py
> index 8530b35..1a5aed9 100644
> --- a/gdb/python/lib/gdb/command/unwinders.py
> +++ b/gdb/python/lib/gdb/command/unwinders.py
> @@ -83,7 +83,7 @@ class InfoUnwinder(gdb.Command):
>          """
>          if not unwinders:
>              return
> -        print title
> +        print(title)
>          for unwinder in unwinders:
>              if name_re.match(unwinder.name):
>                  print("  %s%s" % (unwinder.name,
> diff --git a/gdb/testsuite/gdb.python/py-framefilter.py b/gdb/testsuite/gdb.python/py-framefilter.py
> index 0de026c..1e5b2b3 100644
> --- a/gdb/testsuite/gdb.python/py-framefilter.py
> +++ b/gdb/testsuite/gdb.python/py-framefilter.py
> @@ -145,7 +145,12 @@ class ErrorFilter():
>          gdb.frame_filters [self.name] = self
>  
>      def filter(self, frame_iter):
> -        return itertools.imap(ErrorInName, frame_iter)
> +        # Python 3.x moved the itertools.imap functionality to map(),
> +        # so check if it is available.
> +        if hasattr(itertools, "imap"):
> +            return itertools.imap (ErrorInName, frame_iter)
> +        else:
> +            return map(ErrorInName, frame_iter)
>  
>  FrameFilter()
>  FrameElider()
> diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.python/py-objfile.exp
> index b53f5e3..4de20c5 100644
> --- a/gdb/testsuite/gdb.python/py-objfile.exp
> +++ b/gdb/testsuite/gdb.python/py-objfile.exp
> @@ -88,9 +88,9 @@ if { [gdb_unload] < 0 } {
>      return -1
>  }
>  
> -gdb_test "python print objfile.filename" "None" \
> +gdb_test "python print(objfile.filename)" "None" \
>      "objfile.filename after objfile is unloaded"
> -gdb_test "python print objfile.username" "None" \
> +gdb_test "python print(objfile.username)" "None" \
>      "objfile.username after objfile is unloaded"
>  
>  # Now build another copy of the testcase, this time without debug info.
> diff --git a/gdb/testsuite/gdb.python/py-type.exp b/gdb/testsuite/gdb.python/py-type.exp
> index c4c8d9f..9e522f2 100644
> --- a/gdb/testsuite/gdb.python/py-type.exp
> +++ b/gdb/testsuite/gdb.python/py-type.exp
> @@ -247,10 +247,10 @@ restart_gdb "${binfile}"
>  # Skip all tests if Python scripting is not enabled.
>  if { [skip_python_tests] } { continue }
>  
> -gdb_test "python print gdb.lookup_type('char').array(1, 0)" \
> +gdb_test "python print(gdb.lookup_type('char').array(1, 0))" \
>      "char \\\[0\\\]"
>  
> -gdb_test "python print gdb.lookup_type('char').array(1, -1)" \
> +gdb_test "python print(gdb.lookup_type('char').array(1, -1))" \
>      "Array length must not be negative.*"
>  
>  with_test_prefix "lang_c" {
> diff --git a/gdb/testsuite/gdb.python/py-unwind-maint.py b/gdb/testsuite/gdb.python/py-unwind-maint.py
> index f8c6277..288fe07 100644
> --- a/gdb/testsuite/gdb.python/py-unwind-maint.py
> +++ b/gdb/testsuite/gdb.python/py-unwind-maint.py
> @@ -24,7 +24,7 @@ class TestGlobalUnwinder(Unwinder):
>          super(TestGlobalUnwinder, self).__init__("global_unwinder")
>  
>      def __call__(self, unwinder_info):
> -        print "%s called" % self.name
> +        print("%s called" % self.name)
>          return None
>  
>  class TestProgspaceUnwinder(Unwinder):
> @@ -32,7 +32,7 @@ class TestProgspaceUnwinder(Unwinder):
>          super(TestProgspaceUnwinder, self).__init__("%s_ps_unwinder" % name)
>  
>      def __call__(self, unwinder_info):
> -        print "%s called" % self.name
> +        print("%s called" % self.name)
>          return None
>  
>  class TestObjfileUnwinder(Unwinder):
> @@ -40,7 +40,7 @@ class TestObjfileUnwinder(Unwinder):
>          super(TestObjfileUnwinder, self).__init__("%s_obj_unwinder" % name)
>  
>      def __call__(self, unwinder_info):
> -        print "%s called" % self.name
> +        print("%s called" % self.name)
>          return None
>  
>  
> @@ -56,4 +56,4 @@ if not saw_runtime_error:
>  gdb.unwinder.register_unwinder(None, TestGlobalUnwinder(), replace=True)
>  gdb.unwinder.register_unwinder(gdb.current_progspace(),
>                                 TestProgspaceUnwinder("py_unwind_maint"))
> -print "Python script imported"
> +print("Python script imported")
> 

Ping!
Joel Brobecker - April 15, 2015, 3:40 p.m.
> > gdb/ChangeLog:
> > 
> > 	* python/lib/gdb/command/unwinders.py: Add parentheses.
> > 
> > gdb/testsuite/ChangeLog:
> > 
> > 	* gdb.python/py-framefilter.py (ErrorFilter.filter): Use map function
> > 	if itertools.imap is not present.
> > 	* gdb.python/py-objfile.exp: Add parentheses.
> > 	* gdb.python/py-type.exp: Same.
> > 	* gdb.python/py-unwind-maint.py: Same.

Sorry for the delay, Simon. Most of those are on the obvious side
(print being a function, now, and thus requiring the use of
parentheses), so they'd be OK to push without approval. The one
change that is less obvious is the adjustment after itertools.imap
got replaced by "map"; but the change looks good to me.

So go ahead and push.
Simon Marchi - April 15, 2015, 3:56 p.m.
> Sorry for the delay, Simon.

No worries.

> Most of those are on the obvious side
> (print being a function, now, and thus requiring the use of
> parentheses), so they'd be OK to push without approval. The one
> change that is less obvious is the adjustment after itertools.imap
> got replaced by "map"; but the change looks good to me.
> 
> So go ahead and push.

Pushed. Thanks a lot!

Patch

diff --git a/gdb/python/lib/gdb/command/unwinders.py b/gdb/python/lib/gdb/command/unwinders.py
index 8530b35..1a5aed9 100644
--- a/gdb/python/lib/gdb/command/unwinders.py
+++ b/gdb/python/lib/gdb/command/unwinders.py
@@ -83,7 +83,7 @@  class InfoUnwinder(gdb.Command):
         """
         if not unwinders:
             return
-        print title
+        print(title)
         for unwinder in unwinders:
             if name_re.match(unwinder.name):
                 print("  %s%s" % (unwinder.name,
diff --git a/gdb/testsuite/gdb.python/py-framefilter.py b/gdb/testsuite/gdb.python/py-framefilter.py
index 0de026c..1e5b2b3 100644
--- a/gdb/testsuite/gdb.python/py-framefilter.py
+++ b/gdb/testsuite/gdb.python/py-framefilter.py
@@ -145,7 +145,12 @@  class ErrorFilter():
         gdb.frame_filters [self.name] = self
 
     def filter(self, frame_iter):
-        return itertools.imap(ErrorInName, frame_iter)
+        # Python 3.x moved the itertools.imap functionality to map(),
+        # so check if it is available.
+        if hasattr(itertools, "imap"):
+            return itertools.imap (ErrorInName, frame_iter)
+        else:
+            return map(ErrorInName, frame_iter)
 
 FrameFilter()
 FrameElider()
diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.python/py-objfile.exp
index b53f5e3..4de20c5 100644
--- a/gdb/testsuite/gdb.python/py-objfile.exp
+++ b/gdb/testsuite/gdb.python/py-objfile.exp
@@ -88,9 +88,9 @@  if { [gdb_unload] < 0 } {
     return -1
 }
 
-gdb_test "python print objfile.filename" "None" \
+gdb_test "python print(objfile.filename)" "None" \
     "objfile.filename after objfile is unloaded"
-gdb_test "python print objfile.username" "None" \
+gdb_test "python print(objfile.username)" "None" \
     "objfile.username after objfile is unloaded"
 
 # Now build another copy of the testcase, this time without debug info.
diff --git a/gdb/testsuite/gdb.python/py-type.exp b/gdb/testsuite/gdb.python/py-type.exp
index c4c8d9f..9e522f2 100644
--- a/gdb/testsuite/gdb.python/py-type.exp
+++ b/gdb/testsuite/gdb.python/py-type.exp
@@ -247,10 +247,10 @@  restart_gdb "${binfile}"
 # Skip all tests if Python scripting is not enabled.
 if { [skip_python_tests] } { continue }
 
-gdb_test "python print gdb.lookup_type('char').array(1, 0)" \
+gdb_test "python print(gdb.lookup_type('char').array(1, 0))" \
     "char \\\[0\\\]"
 
-gdb_test "python print gdb.lookup_type('char').array(1, -1)" \
+gdb_test "python print(gdb.lookup_type('char').array(1, -1))" \
     "Array length must not be negative.*"
 
 with_test_prefix "lang_c" {
diff --git a/gdb/testsuite/gdb.python/py-unwind-maint.py b/gdb/testsuite/gdb.python/py-unwind-maint.py
index f8c6277..288fe07 100644
--- a/gdb/testsuite/gdb.python/py-unwind-maint.py
+++ b/gdb/testsuite/gdb.python/py-unwind-maint.py
@@ -24,7 +24,7 @@  class TestGlobalUnwinder(Unwinder):
         super(TestGlobalUnwinder, self).__init__("global_unwinder")
 
     def __call__(self, unwinder_info):
-        print "%s called" % self.name
+        print("%s called" % self.name)
         return None
 
 class TestProgspaceUnwinder(Unwinder):
@@ -32,7 +32,7 @@  class TestProgspaceUnwinder(Unwinder):
         super(TestProgspaceUnwinder, self).__init__("%s_ps_unwinder" % name)
 
     def __call__(self, unwinder_info):
-        print "%s called" % self.name
+        print("%s called" % self.name)
         return None
 
 class TestObjfileUnwinder(Unwinder):
@@ -40,7 +40,7 @@  class TestObjfileUnwinder(Unwinder):
         super(TestObjfileUnwinder, self).__init__("%s_obj_unwinder" % name)
 
     def __call__(self, unwinder_info):
-        print "%s called" % self.name
+        print("%s called" % self.name)
         return None
 
 
@@ -56,4 +56,4 @@  if not saw_runtime_error:
 gdb.unwinder.register_unwinder(None, TestGlobalUnwinder(), replace=True)
 gdb.unwinder.register_unwinder(gdb.current_progspace(),
                                TestProgspaceUnwinder("py_unwind_maint"))
-print "Python script imported"
+print("Python script imported")