MCPcopy Index your code
hub / github.com/python/cpython / _get_parser

Method _get_parser

Lib/test/test_argparse.py:2520–2577  ·  view source on GitHub ↗
(self, subparser_help=False, prefix_chars=None,
                    aliases=False, usage=None)

Source from the content-addressed store, hash-verified

2518 self.assertRaises(ArgumentParserError, *args, **kwargs)
2519
2520 def _get_parser(self, subparser_help=False, prefix_chars=None,
2521 aliases=False, usage=None):
2522 # create a parser with a subparsers argument
2523 if prefix_chars:
2524 parser = ErrorRaisingArgumentParser(
2525 prog='PROG', description='main description', usage=usage,
2526 prefix_chars=prefix_chars)
2527 parser.add_argument(
2528 prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help')
2529 else:
2530 parser = ErrorRaisingArgumentParser(
2531 prog='PROG', description='main description', usage=usage)
2532 parser.add_argument(
2533 '--foo', action='store_true', help='foo help')
2534 parser.add_argument(
2535 'bar', type=float, help='bar help')
2536
2537 # check that only one subparsers argument can be added
2538 subparsers_kwargs = {'required': False}
2539 if aliases:
2540 subparsers_kwargs['metavar'] = 'COMMAND'
2541 subparsers_kwargs['title'] = 'commands'
2542 else:
2543 subparsers_kwargs['help'] = 'command help'
2544 subparsers = parser.add_subparsers(**subparsers_kwargs)
2545 self.assertRaisesRegex(ValueError,
2546 'cannot have multiple subparser arguments',
2547 parser.add_subparsers)
2548
2549 # add first sub-parser
2550 parser1_kwargs = dict(description='1 description')
2551 if subparser_help:
2552 parser1_kwargs['help'] = '1 help'
2553 if aliases:
2554 parser1_kwargs['aliases'] = ['1alias1', '1alias2']
2555 parser1 = subparsers.add_parser('1', **parser1_kwargs)
2556 parser1.add_argument('-w', type=int, help='w help')
2557 parser1.add_argument('x', choices=['a', 'b', 'c'], help='x help')
2558
2559 # add second sub-parser
2560 parser2_kwargs = dict(description='2 description')
2561 if subparser_help:
2562 parser2_kwargs['help'] = '2 help'
2563 parser2 = subparsers.add_parser('2', **parser2_kwargs)
2564 parser2.add_argument('-y', choices=['1', '2', '3'], help='y help')
2565 parser2.add_argument('z', type=complex, nargs='*', help='z help')
2566
2567 # add third sub-parser
2568 parser3_kwargs = dict(description='3 description',
2569 usage='PROG --foo bar 3 t ...')
2570 if subparser_help:
2571 parser3_kwargs['help'] = '3 help'
2572 parser3 = subparsers.add_parser('3', **parser3_kwargs)
2573 parser3.add_argument('t', type=int, help='t help')
2574 parser3.add_argument('u', nargs='...', help='u help')
2575
2576 # return the main parser
2577 return parser

Calls 5

add_subparsersMethod · 0.80
assertRaisesRegexMethod · 0.80
add_parserMethod · 0.80
add_argumentMethod · 0.45

Tested by

no test coverage detected