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
|