MCPcopy
hub / github.com/flet-dev/flet / set_default_subparser

Function set_default_subparser

sdk/python/packages/flet-cli/src/flet_cli/cli.py:18–62  ·  view source on GitHub ↗

Set a default subparser when no subparser is provided. This should be called after setting up the argument parser but before `parse_args()`. Args: name: The name of the default subparser to use. args: A list of arguments passed to `parse_args()`. index: Posi

(
    parser: argparse.ArgumentParser, name: str, args: list = None, index: int = 0
)

Source from the content-addressed store, hash-verified

16
17# Source https://stackoverflow.com/a/26379693
18def set_default_subparser(
19 parser: argparse.ArgumentParser, name: str, args: list = None, index: int = 0
20):
21 """
22 Set a default subparser when no subparser is provided.
23 This should be called after setting up the argument parser but before
24 `parse_args()`.
25
26 Args:
27 name: The name of the default subparser to use.
28 args: A list of arguments passed to `parse_args()`.
29 index: Position in `sys.argv` where the default subparser should be
30 inserted.
31 """
32
33 # exit if help or version flags are present
34 if any(flag in sys.argv[1:] for flag in {"-h", "--help", "-V", "--version"}):
35 return
36
37 # all subparser actions
38 subparser_actions = [
39 action
40 for action in parser._subparsers._actions
41 if isinstance(action, argparse._SubParsersAction)
42 ]
43
44 # all subparser names
45 subparser_names = [
46 sp_name for action in subparser_actions for sp_name in action._name_parser_map
47 ]
48
49 # if an existing subparser is provided, skip setting a default
50 if any(arg in subparser_names for arg in sys.argv[1:]):
51 return
52
53 # if the default subparser doesn't exist, register it in the first subparser action
54 if (name not in subparser_names) and subparser_actions:
55 subparser_actions[0].add_parser(name)
56
57 # insert the default subparser into the appropriate argument list
58 if args is None:
59 if len(sys.argv) > 1:
60 sys.argv.insert(index, name)
61 else:
62 args.insert(index, name)
63
64
65def get_parser() -> argparse.ArgumentParser:

Callers 1

get_parserFunction · 0.85

Calls 1

insertMethod · 0.45

Tested by

no test coverage detected