@@ -1080,15 +1080,7 @@ def subparsers(self):
10801080 parsers .update (x ._name_parser_map )
10811081 return ImmutableDict (parsers )
10821082
1083- def parse_known_args (self , args , namespace ):
1084- """Add support for running registered pre-parse functions."""
1085- if args is None :
1086- # args default to the system args
1087- args = sys .argv [1 :]
1088- else :
1089- # make sure that args are mutable
1090- args = list (args )
1091-
1083+ def pre_parse (self , namespace = None ):
10921084 # default Namespace built from parser defaults
10931085 if namespace is None :
10941086 namespace = Namespace ()
@@ -1104,6 +1096,24 @@ def parse_known_args(self, args, namespace):
11041096 # wipe pre-parse functions so they only run once
11051097 del self .__pre_parse [:]
11061098
1099+ return namespace
1100+
1101+ def parse_known_args (self , args , namespace ):
1102+ """Add support for running registered pre-parse functions."""
1103+ if args is None :
1104+ # args default to the system args
1105+ args = sys .argv [1 :]
1106+ else :
1107+ # make sure that args are mutable
1108+ args = list (args )
1109+
1110+ # default Namespace built from parser defaults
1111+ if namespace is None :
1112+ namespace = Namespace ()
1113+
1114+ # run registered pre-parse functions
1115+ namespace = self .pre_parse (namespace )
1116+
11071117 # add any action defaults that aren't present
11081118 for action in self ._actions :
11091119 if action .dest is not SUPPRESS :
0 commit comments