[Mesa-dev] [PATCH 02/27] glapi: gl_table.py: replace getopt with argparse.
Jose Fonseca
jfonseca at vmware.com
Tue May 26 02:59:17 PDT 2015
On 21/05/15 02:02, Dylan Baker wrote:
> From: Dylan Baker <dylanx.c.baker at intel.com>
>
> This results in slightly less code, but code that is much more readable.
> It has the advantage of putting everything together in one place, all of
> the code is self documenting, help messages are auto-generated, choices
> are automatically enforced, and the syntax is much less C like, taking
> advantage of python features and idioms.
>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
> src/mapi/glapi/gen/gl_table.py | 70 ++++++++++++++++++++----------------------
> 1 file changed, 33 insertions(+), 37 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/gl_table.py b/src/mapi/glapi/gen/gl_table.py
> index 3245625..30903fd 100644
> --- a/src/mapi/glapi/gen/gl_table.py
> +++ b/src/mapi/glapi/gen/gl_table.py
> @@ -26,8 +26,7 @@
> # Authors:
> # Ian Romanick <idr at us.ibm.com>
>
> -import sys
> -import getopt
> +import argparse
>
> import gl_XML
> import license
> @@ -203,45 +202,42 @@ class PrintRemapTable(gl_XML.gl_print_base):
> return
>
>
> -def show_usage():
> - print "Usage: %s [-f input_file_name] [-m mode] [-c ver]" % sys.argv[0]
> - print " -m mode Mode can be 'table' or 'remap_table'."
> - print " -c ver Version can be 'es1' or 'es2'."
> - sys.exit(1)
> +def _parser():
> + """Parse arguments and return a namespace."""
> + parser = argparse.ArgumentParser()
> + parser.add_argument('-f', '--filename',
> + type=gl_XML.parse_GL_API,
> + default='gl_API.xml',
This patch is causing problems on one of my Windows build machines.
It looks like argparse will call gl_XML.parse_GL_API() with the default
'gl_API.xml' value, _even_ when one specifies -f argument in the command
line.
I think the problem might be with particular version of argparse
implementations, not the Windows OS. This was with Python 2.7.3 BTW.
I could upgrade python, but using argparse' type arguments like this
seems a bad idea regardless. Not only argparse implementation can't be
trusted, but also gl_XML.parse_GL_API takes multiple arguments, so it's
not a straightforward constructor.
For example, src/mapi/glapi/gen/gl_procs.py has this
api_type = lambda x: gl_XML.parse_GL_API(x, glX_XML.glx_item_factory())
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--filename',
type=api_type,
[...]
Which looks quite hard to read IMO over simply doing
api = gl_XML.parse_GL_API(args.file_name, glX_XML.glx_item_factory()
I'm going to undo these hunks, and I'm going to take the liberty of
pushing this as I got no good build over the extended weekend, so we've
been totally blind to regressions on this platform over this period.
Jose
More information about the mesa-dev
mailing list