traitscli - CLI generator based on class traits
Project description
Traits CLI is based on Enthought’s Traits library.
Some benefits:
Automatically set type (int/float/…) of command line argument.
Help string generation.
“Deep value”” configuration: e.g., --dict['a']['b']['c']=1 is equivalent to obj.dict['a']['b']['c'] = 1 in Python code.
Nested class configuration: e.g., --sub.attr=val is equivalent to obj.sub.attr = val in Python code.
Parameter file support (ini/conf, json, yaml, etc.). Load parameter from file then set attribute.
Links
Installation
pip install traitscli
Dependencies
argparse (for Python < 2.7)
Sample
Source code:
from traitscli import TraitsCLIBase from traits.api import Bool, Float, Int, Str, Enum class SampleCLI(TraitsCLIBase): ''' Sample CLI using `traitscli`. Example:: %(prog)s --yes # => obj.yes = True %(prog)s --string something # => obj.string = 'string' %(prog)s --choice x # => raise error (x is not in {a, b, c}) ''' # These variables are configurable by command line option yes = Bool(desc='yes flag for sample CLI', config=True) no = Bool(True, config=True) fnum = Float(config=True) inum = Int(config=True) string = Str(config=True) choice = Enum(['a', 'b', 'c'], config=True) # You can have "internal" attributes which cannot be set via CLI. not_configurable_from_cli = Bool() def do_run(self): names = self.class_trait_names(config=True) width = max(map(len, names)) for na in names: print "{0:{1}} : {2!r}".format(na, width, getattr(self, na)) if __name__ == '__main__': # Run command line interface SampleCLI.cli()
Example run:
$ python sample.py --help usage: sample.py [-h] [--choice {a,b,c}] [--fnum FNUM] [--inum INUM] [--no] [--string STRING] [--yes] Sample CLI using `traitscli`. Example:: sample.py --yes # => obj.yes = True sample.py --string something # => obj.string = 'string' sample.py --choice x # => raise error (x is not in {a, b, c}) optional arguments: -h, --help show this help message and exit --choice {a,b,c} (default: a) --fnum FNUM (default: 0.0) --inum INUM (default: 0) --no (default: True) --string STRING (default: ) --yes yes flag for sample CLI (default: False) $ python sample.py --yes --choice a string : '' no : True fnum : 0.0 choice : 'a' inum : 0 yes : True $ python sample.py --inum invalid_argument usage: sample.py [-h] [--choice {a,b,c}] [--fnum FNUM] [--inum INUM] [--no] [--string STRING] [--yes] sample.py: error: argument --inum: invalid int value: 'invalid_argument'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
traitscli-0.1.0.tar.gz
(10.9 kB
view details)
File details
Details for the file traitscli-0.1.0.tar.gz
.
File metadata
- Download URL: traitscli-0.1.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd6a2f803653c31f49753b33b80aa51485664e44916c3e134fdd85325fa7aac1 |
|
MD5 | eebf8c3b9ae7b5818faea93006d169e5 |
|
BLAKE2b-256 | 60bb4cc306529d2232b7f19361ef0eb98e80323b4db8b1f63878a92ac64a71d3 |