Skip to main content

A helper for type-checked command-line argument store

Project description

test workflow

init_attrs_with_kwargs

A helper for type-checked command-line argument store.

init_args_with_kwargs enables to store the command line arguments (positioned arguments and options) parsed with docopt in an object of a typed class.

Sample

from init_attrs_with_kwargs import InitAttrsWKwArgs

class MyArgs(InitAttrsWKwArgs):
    count: int
    name: str
    max_length: int

# Initialize from docopt's return value, with casting str to int
args: MyArgs = MyArgs(_cast_str_values=True, **{'<count>': '1', '--name': "Joe", '--max-length': '100'})

print("args.count=%s" % repr(args.count))
print("args.name=%s" % repr(args.name))
print("args.max_length=%s" % repr(args.max_length))

Another samples:

  • sample1.py. Describes data type conversion and error handling.
  • sample2.py. Storing docopt-parsed command line arguments in a type-hinted class's object.

Motivation

I like to use docopt to design command lines. With docopt, I can design a command line in a vague state at first, and then I can make it more and more concrete and detailed.

As a recent trend in Python coding, you can also use type hints for code completion in text editors such as VSCode. Here's the problem: since the result of docopt parsing is a dict, you will be accessing, for example, args["name"], and the editor's completion will not work. Similarly, you cannot benefit from static type checking with type hints.

This issue can be solved by converting a docopt dict into an object of a typed class. init_attrs_with_kwargs is a helper just for this purpose.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

init_attrs_with_kwargs-0.1.7.tar.gz (4.1 kB view hashes)

Uploaded Source

Built Distribution

init_attrs_with_kwargs-0.1.7-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page