Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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.

Installation

pip install traitscli

Dependencies

  • traits

  • 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'

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.beta0.tar.gz (10.8 kB view details)

Uploaded Source

File details

Details for the file traitscli-0.1.beta0.tar.gz.

File metadata

  • Download URL: traitscli-0.1.beta0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for traitscli-0.1.beta0.tar.gz
Algorithm Hash digest
SHA256 c07033ea9e27440e014eba917617f695cf1b1d1b17560f44132fe41215b7de8f
MD5 52c523e1e032d06f5ca9f60b4708e8f0
BLAKE2b-256 e1911dffa948449677858aa4e4bb6b644a78c782bf54e9a7b638e566b0b70839

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.0

1 file

This release

0.1.beta0 This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page