On 3/6/19 6:52 PM, Wei Liu wrote:
> Go through the transformations suggested by 2to3 and pick the
> necessary ones.
> 
> Use sys.stderr.write to avoid importing from __future__.
> 
> Signed-off-by: Wei Liu <wei.l...@citrix.com>
> ---
>  tools/libxl/gentest.py  |  2 +-
>  tools/libxl/gentypes.py | 10 +++++-----
>  tools/libxl/idl.py      | 13 ++++++-------
>  3 files changed, 12 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/libxl/gentest.py b/tools/libxl/gentest.py
> index 989959fc68..81e13b437c 100644
> --- a/tools/libxl/gentest.py
> +++ b/tools/libxl/gentest.py
> @@ -86,7 +86,7 @@ def gen_rand_init(ty, v, indent = "    ", parent = None):
>  
>  if __name__ == '__main__':
>      if len(sys.argv) < 3:
> -        print >>sys.stderr, "Usage: gentest.py <idl> <implementation>"
> +        sys.stderr.write("Usage: gentest.py <idl> <implementation>\n")
>          sys.exit(1)
>  
>      random.seed(os.getenv('LIBXL_TESTIDL_SEED'))
> diff --git a/tools/libxl/gentypes.py b/tools/libxl/gentypes.py
> index 88e5c5f30e..656c157c01 100644
> --- a/tools/libxl/gentypes.py
> +++ b/tools/libxl/gentypes.py
> @@ -576,14 +576,14 @@ def libxl_C_enum_from_string(ty, str, e, indent = "    
> "):
>  
>  if __name__ == '__main__':
>      if len(sys.argv) != 6:
> -        print >>sys.stderr, "Usage: gentypes.py <idl> <header> 
> <header-private> <header-json> <implementation>"
> +        sys.stderr.write("Usage: gentypes.py <idl> <header> <header-private> 
> <header-json> <implementation>\n")
>          sys.exit(1)
>  
>      (_, idlname, header, header_private, header_json, impl) = sys.argv
>  
>      (builtins,types) = idl.parse(idlname)
>  
> -    print "outputting libxl type definitions to %s" % header
> +    print("outputting libxl type definitions to %s" % header)

Note that print is *not* a function in python 2, unless you..

  from __future__ import print_function

...which should not be avoided.

It looks like print() just works as a function, but it's not, and I
would recommend against introducing this kind of misleading code.

In print("hallo"), the parentheses are part of an expression, like in
  ((1+ 1) * 2)

Other syntax with parentheses creates tuples.

Python 2.7.13 (>>> replaced with ===)

=== type(())
<type 'tuple'>
=== type((1+1))
<type 'int'>
=== type((1, 2))
<type 'tuple'>

=== print () <- tuple
()
=== print (1+1) <- expression
2
=== print (1, 2) <- tuple
(1, 2)

=== from __future__ import print_function
=== print()

=== print(1+1)
2
=== print(1, 2)
1 2

>      f = open(header, "w")
>  
> @@ -633,7 +633,7 @@ if __name__ == '__main__':
>      f.write("""#endif /* %s */\n""" % (header_define))
>      f.close()
>  
> -    print "outputting libxl JSON definitions to %s" % header_json
> +    print("outputting libxl JSON definitions to %s" % header_json)
>  
>      f = open(header_json, "w")
>  
> @@ -657,7 +657,7 @@ if __name__ == '__main__':
>      f.write("""#endif /* %s */\n""" % header_json_define)
>      f.close()
>  
> -    print "outputting libxl type internal definitions to %s" % header_private
> +    print("outputting libxl type internal definitions to %s" % 
> header_private)
>  
>      f = open(header_private, "w")
>  
> @@ -683,7 +683,7 @@ if __name__ == '__main__':
>      f.write("""#endif /* %s */\n""" % header_json_define)
>      f.close()
>  
> -    print "outputting libxl type implementations to %s" % impl
> +    print("outputting libxl type implementations to %s" % impl)
>  
>      f = open(impl, "w")
>      f.write("""
> diff --git a/tools/libxl/idl.py b/tools/libxl/idl.py
> index 2a7f3c44fe..b5bfc66b50 100644
> --- a/tools/libxl/idl.py
> +++ b/tools/libxl/idl.py
> @@ -11,7 +11,7 @@ DIR_BOTH = 3
>  _default_namespace = ""
>  def namespace(s):
>      if type(s) != str:
> -        raise TypeError, "Require a string for the default namespace."
> +        raise TypeError("Require a string for the default namespace.")
>      global _default_namespace
>      _default_namespace = s
>  
> @@ -346,7 +346,7 @@ class OrderedDict(dict):
>          return [(x,self[x]) for x in self.__ordered]
>  
>  def parse(f):
> -    print >>sys.stderr, "Parsing %s" % f
> +    sys.stderr.write("Parsing %s\n" % f)

And if you have it from future anyway...

print("Parsing", f, file=sys.stderr)

>      globs = {}
>      locs = OrderedDict()
> @@ -362,11 +362,10 @@ def parse(f):
>              globs[n] = t
>  
>      try:
> -        execfile(f, globs, locs)
> -    except SyntaxError,e:
> -        raise SyntaxError, \
> -              "Errors were found at line %d while processing %s:\n\t%s"\
> -              %(e.lineno,f,e.text)
> +        exec(compile(open(f).read(), f, 'exec'), globs, locs)
> +    except SyntaxError as e:
> +        raise SyntaxError("Errors were found at line %d while processing 
> %s:\n\t%s"\
> +              %(e.lineno,f,e.text))
>  
>      types = [t for t in locs.ordered_values() if isinstance(t,Type)]
>  
> 

Hans

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to