Metadata-Version: 2.1
Name: argparse_helper
Version: 0.9.0
Summary: Yet another argparse helper: complex subcommand trees made simple
Home-page: https://github.com/jan-g/argparse-helper
Author: jang
Author-email: argparse_helper@ioctl.org
License: Apache License 2.0
Description: # A wrapper around argparse
        
        Writing complex subcommand parsers using `argparse` is certainly possible, but it involves a lot
        of laborious repetition.
        
        This library provides a small wrapper around `argparse` that adds a convenience method. That
        lets you specify a sequence of words that form a command, together with flags - and the
        definitions of those flags are passed at the same time.
        
            parser = ArgumentParser()
            parser.add_command("foo bar baz --json",
                               func=lambda *args: print("foo-bar-baz"),
                               json=dict(default=False, action="store_true"),
                               )
            parser.add_command("foo bar quux",
                               func=lambda *args: print("foo-bar-quux"),
                               )
        
        The `func` parameter will be set on the resulting namespace. Note, there is no particular requirement
        for the arguments that must be passed to `func` - this is down to the library user to define.
        
        Additionally, a new `argparse.Action` subclass is provided, `OptionalOverride`. This supports
        having the *same* flag appear in a global position and be repeated by a subcommand. It works
        well - in as much as defaults set by the global position won't be re-set in the subordinate
        position.
        
            parser.add_command("--flag", flag=dict(default="foo"))
            parser.add_command("xyzzy --flag", flag=dict(action=OptionalOverride))
        
        Where a flag is repeated in an `add_command` call, the second and subsequent values receive an
        `OptionalOveride` setting automatically.
        
            parser.add_command("--glob xyzzy --glob", glob=dict(action=OptionalOverride))
        
        Finally, `AtMostOnce` is supplied as an action type; this causes an explicit error (rather than
        just overriding the previous value) if a flag is specified more than once.
        
Platform: UNKNOWN
Description-Content-Type: text/markdown
