#!/usr/bin/env python import argparse def test(parser, args): namespace = parser.parse_args(args) print('%r => %r' % (args, namespace)) print('\n# using non-distinctive args') parser = argparse.ArgumentParser() parser.add_argument('--verbose', action='store_true') subparsers = parser.add_subparsers(help='command', dest='command') cmd1_parser = subparsers.add_parser('command') cmd1_parser.add_argument('--verbose', action='store_true') test(parser, ['--verbose', 'command']) test(parser, ['command', '--verbose']) test(parser, ['--verbose', 'command', '--verbose']) print('\n# using distinctive args') parser = argparse.ArgumentParser() parser.add_argument('--verbose(main)', '--verbose', action='store_true') subparsers = parser.add_subparsers(help='command', dest='command') cmd1_parser = subparsers.add_parser('command') cmd1_parser.add_argument('--verbose(subcommand)', '--verbose', action='store_true') test(parser, ['--verbose', 'command']) test(parser, ['command', '--verbose']) test(parser, ['--verbose', 'command', '--verbose'])