Skip to main content

Argument parser based on docopt

install

pip install arguments

usage

Docopt is used for parsing the docstring (doc), arguments bundles the schema parser and returns a OptionParser like object with normalized attributes

For example

# coding=utf-8
"""
arguments test

Usage:
  tests.py [options] <posarg1> <posarg2>

Options:
  -h --help                     Show this screen.
  -o --option=<option1>         An option.
  --opt2=<option2>              An option [default: hello].
  -p --parameter=<parameter>    Folder to check the git repos out [default: 77].
  -v --verbose                  Folder from where to run the command [default: .].
"""

from arguments import Arguments

def main():
    """
    main
    """
    arg = Arguments()
    print(arg)


if __name__ == "__main__":
    main()

gives

$ python main.py pval1 pval2
<arguments.Arguments object at 0x1022e0eb8>
options :
    opt2 : hello
    option : None
    parameter : 77
    help : False
    verbose : False
positional :
    posarg1 : pval1
    posarg2 : pval2

usage with classes

(examples/classbased.py)

A nested docker style commandline program (python3)

class BaseArguments(arguments.Arguments):
    def __init__(self, doc):
        ...

class MainArguments(BaseArguments):
    def __init__(self):
        doc = """
            Some tools.
            Usage:
                classbased.py [options] [--] <tool> [<args>...]

            Options:
                -h --help       Show this screen..
                -v --verbose    Verbose mode.

            Commands:
                tool1   Tool1 description here
                tool2   Tool2 ...
        """
        super().__init__(doc)


class Tool1Arguments(BaseArguments):
    def __init__(self):
        doc = """
            Tool 1
            Usage:
                classbased.py tool1 [options] [--] <command> [<args>...]

            Options:
                -h --help       Show this screen..
                -v --verbose    Verbose mode.

            Commands:
                run     Run the tool
                build   Build the tool
        """
        super().__init__(doc)


class Tool2Arguments(BaseArguments):
    def __init__(self):
        doc = """
            Tool 2
            Usage:
                classbased.py tool2 [options] [--] <command> [<args>...]

            Options:
                -h --help       Show this screen..
                -v --verbose    Verbose mode.

            Commands:
                upload  Upload something
                delete  Delete something
        """
        super().__init__(doc)
$ python classbased.py
Usage:
    classbased.py [options] [--] <tool> [<args>...]
$ python classbased.py -h
Some tools.
Usage:
    classbased.py [options] [--] <tool> [<args>...]

Options:
    -h --help       Show this screen..
    -v --verbose    Verbose mode.

Commands:
    tool1   Tool1 description here
    tool2   Tool2 ...
$ python classbased.py tool1 run
<__main__.Tool1Arguments object at 0x10d45cac8>
options:
    help: False
    verbose: False
positional:
    args: []
    command: run

Using schema

Assume you are using docopt with the following usage-pattern:

my_program.py [--count=N] <path> <files>

and you would like to validate that <files> are readable, and that <path> exists, and that --count is either integer from 0 to 5, or None.

this is how you validate it using schema:

>>> from arguments import *

>>> s = Schema({'<files>': [Use(open)],
...             '<path>': os.path.exists,
...             '--count': Or(None, And(Use(int), lambda n: 0 < n < 5))})

>>> args = Arguments(validateschema=s)

>>> args.files
[<open file 'LICENSE-MIT', mode 'r' at 0x...>, <open file 'setup.py', mode 'r' at 0x...>]

>>> args.path
'../'

>>> args.count
3

As you can see, it validated data successfully, opened files and converted '3' to int.

Metadata

Release files for arguments 26

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arguments 26
File Size Uploaded
arguments-26.tar.gz 14.8 kB Details

Release files / arguments-26.tar.gz

Download URL arguments-26.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1e61eb2f11ddd5d1f49139e1c043762d351f6a1a3731d2465a87d72bfa467b00
BLAKE2b-256 checksum
How to use checksums
8f5c7b4b8943cc4f22db5a9cc1a9a02ba3cd9349b9b414c99a5bdb4c705c2f71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

76

1 release file

73

1 release file

72

1 release file

71

1 release file

70

1 release file

68

1 release file

67

1 release file

59

1 release file

58

1 release file

56

1 release file

55

1 release file

54

1 release file

53

1 release file

51

1 release file

49

1 release file

48

1 release file

47

1 release file

46

1 release file

45

1 release file

44

1 release file

43

1 release file

42

1 release file

41

1 release file

40

1 release file

39

1 release file

38

1 release file

37

1 release file

36

1 release file

35

1 release file

33

1 release file

32

1 release file

31

1 release file

30

1 release file

29

1 release file

28

1 release file

27

1 release file

This release

26 This release

1 release file

25

1 release file

24

1 release file

23

1 release file

22

1 release file

20

1 release file

19

1 release file

18

1 release file

16

1 release file

15

1 release file

12

1 release file

11

1 release file

10

1 release file

9

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page