[PATCH 3/3] pwclient: basic python3 support
Finucane, Stephen
stephen.finucane at intel.com
Sat Oct 17 09:13:36 AEDT 2015
> From: Mike Frysinger <vapier at chromium.org>
>
> This fixes a few random issues to make the script work at least somewhat
> under python 3:
> - set the default encoding to utf-8
> - handle xmlrpclib/xmlrpc.client module renames
> - handle ConfigParser/configparser module renames
> - add a unicode() stub for python 3
> - fix old style class definition w/Filter
> - use list comprehension instead of map()
> - drop the unused version= keyword w/argparse
>
> The code still runs under python 2 the same as before, and now works for
> the most part under python 3 -- the handling of encoded content still needs
> some work, but that'll require more surgery, and is best left to another
> commit after this.
You're right - it needs a little more work but it's most of the way there. Do you plan to do this? I was looking at making use of Django's provided 'six' library to solve this issue for the server - we could use it here also. Regardless, for this patch
Reviewed-by: Stephen Finucane <stephen.finucane at intel.com>
> Signed-off-by: Mike Frysinger <vapier at chromium.org>
> ---
> patchwork/bin/pwclient | 31 +++++++++++++++++++++++--------
> 1 file changed, 23 insertions(+), 8 deletions(-)
>
> diff --git a/patchwork/bin/pwclient b/patchwork/bin/pwclient
> index d096f83..d2b95e5 100755
> --- a/patchwork/bin/pwclient
> +++ b/patchwork/bin/pwclient
> @@ -1,4 +1,5 @@
> #!/usr/bin/env python
> +# -*- coding: utf-8 -*-
> #
> # Patchwork command line client
> # Copyright (C) 2008 Nate Case <ncase at xes-inc.com>
> @@ -23,16 +24,31 @@ from __future__ import print_function
>
> import os
> import sys
> -import xmlrpclib
> +try:
> + import xmlrpclib
> +except ImportError:
> + # Python 3 has merged/renamed things.
> + import xmlrpc.client as xmlrpclib
> import argparse
> import string
> import tempfile
> import subprocess
> import base64
> -import ConfigParser
> +try:
> + import ConfigParser
> +except ImportError:
> + # Python 3 has renamed things.
> + import configparser as ConfigParser
> import shutil
> import re
>
> +# Add a shim for Python 2's unicode() helper.
> +try:
> + unicode
> +except NameError:
> + # Python 3 does everything by unicode now.
> + unicode = str
> +
> # Default Patchwork remote XML-RPC server URL
> # This script will check the PW_XMLRPC_URL environment variable
> # for the URL to access. If that is unspecified, it will fallback to
> @@ -40,7 +56,7 @@ import re
> DEFAULT_URL = "http://patchwork/xmlrpc/"
> CONFIG_FILE = os.path.expanduser('~/.pwclientrc')
>
> -class Filter:
> +class Filter(object):
> """Filter for selecting patches."""
> def __init__(self):
> # These fields refer to specific objects, so they are special
> @@ -135,7 +151,7 @@ def person_ids_by_name(rpc, name):
> if len(name) == 0:
> return []
> people = rpc.person_list(name, 0)
> - return map(lambda x: x['id'], people)
> + return [x['id'] for x in people]
>
> def list_patches(patches, format_str=None):
> """Dump a list of patches to stdout."""
> @@ -356,7 +372,7 @@ class _RecursiveHelpAction(argparse._HelpAction):
> parser.exit()
>
> def main():
> - hash_parser = argparse.ArgumentParser(add_help=False, version=False)
> + hash_parser = argparse.ArgumentParser(add_help=False)
> hash_parser.add_argument(
> '-h', metavar='HASH', dest='hash', action='store',
> help='''Lookup by patch hash'''
> @@ -370,7 +386,7 @@ def main():
> help='''Lookup patch in project'''
> )
>
> - filter_parser = argparse.ArgumentParser(add_help=False, version=False)
> + filter_parser = argparse.ArgumentParser(add_help=False)
> filter_parser.add_argument(
> '-s', metavar='STATE',
> help='''Filter by patch state (e.g., 'New', 'Accepted', etc.)'''
> @@ -409,7 +425,7 @@ def main():
> 'patch_name', metavar='STR', nargs='?',
> help='substring to search for patches by name',
> )
> - help_parser = argparse.ArgumentParser(add_help=False, version=False)
> + help_parser = argparse.ArgumentParser(add_help=False)
> help_parser.add_argument(
> '--help', action='help', help=argparse.SUPPRESS,
> #help='''show this help message and exit'''
> @@ -418,7 +434,6 @@ def main():
> action_parser = argparse.ArgumentParser(
> prog='pwclient',
> add_help=False,
> - version=False,
> formatter_class=argparse.RawDescriptionHelpFormatter,
> epilog='''(apply | get | info | view | update) (-h HASH | ID [ID
> ...])''',
> )
> --
> 2.5.2
>
> _______________________________________________
> Patchwork mailing list
> Patchwork at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork
More information about the Patchwork
mailing list