(
abstract_options: ParserSpec,
parser_type: ParserType = HTTPieArgumentParser,
)
| 191 | |
| 192 | |
| 193 | def to_argparse( |
| 194 | abstract_options: ParserSpec, |
| 195 | parser_type: ParserType = HTTPieArgumentParser, |
| 196 | ) -> ParserType: |
| 197 | concrete_parser = parser_type( |
| 198 | prog=abstract_options.program, |
| 199 | description=abstract_options.description, |
| 200 | epilog=abstract_options.epilog, |
| 201 | ) |
| 202 | concrete_parser.spec = abstract_options |
| 203 | concrete_parser.register('action', 'lazy_choices', LazyChoices) |
| 204 | concrete_parser.register('action', 'manual', Manual) |
| 205 | |
| 206 | for abstract_group in abstract_options.groups: |
| 207 | concrete_group = concrete_parser.add_argument_group( |
| 208 | title=abstract_group.name, description=abstract_group.description |
| 209 | ) |
| 210 | if abstract_group.is_mutually_exclusive: |
| 211 | concrete_group = concrete_group.add_mutually_exclusive_group(required=False) |
| 212 | |
| 213 | for abstract_argument in abstract_group.arguments: |
| 214 | concrete_group.add_argument( |
| 215 | *abstract_argument.aliases, |
| 216 | **drop_keys(map_qualifiers( |
| 217 | abstract_argument.configuration, ARGPARSE_QUALIFIER_MAP |
| 218 | ), ARGPARSE_IGNORE_KEYS) |
| 219 | ) |
| 220 | |
| 221 | return concrete_parser |
| 222 | |
| 223 | |
| 224 | JSON_DIRECT_MIRROR_OPTIONS = ( |
no test coverage detected