Skip to main content

Easy dict-based script configuration with CLI support

Project description

GitlabCIPipeline GitlabCICoverage Appveyor Pypi Downloads

Write simple configs and update from CLI, kwargs, and/or json.

The scriptconfig provides a simple way to make configurable scripts using a combination of config files, command line arguments, and simple Python keyword arguments. A script config object is defined by creating a subclass of Config with a default dict class attribute. An instance of a custom Config object will behave similar a dictionary, but with a few conveniences.

To get started lets consider some example usage:

>>> import scriptconfig as scfg
>>> # In its simplest incarnation, the config class specifies default values.
>>> # For each configuration parameter.
>>> class ExampleConfig(scfg.Config):
>>>     default = {
>>>         'num': 1,
>>>         'mode': 'bar',
>>>         'ignore': ['baz', 'biz'],
>>>     }
>>> # Creating an instance, starts using the defaults
>>> config = ExampleConfig()
>>> # Typically you will want to update default from a dict or file.  By
>>> # specifying cmdline=True you denote that it is ok for the contents of
>>> # `sys.argv` to override config values. Here we pass a dict to `load`.
>>> kwargs = {'num': 2}
>>> config.load(kwargs, cmdline=False)
>>> assert config['num'] == 2
>>> # The `load` method can also be passed a json/yaml file/path.
>>> config_fpath = '/tmp/foo'
>>> open(config_fpath, 'w').write('{"num": 3}')
>>> config.load(config_fpath, cmdline=False)
>>> assert config['num'] == 3
>>> # It is possbile to load only from CLI by setting cmdline=True
>>> # or by setting it to a custom sys.argv
>>> config.load(cmdline=['--num=4'])
>>> assert config['num'] == 4
>>> # Note that using `config.load(cmdline=True)` will just use the
>>> # contents of sys.argv

Features

  • Serializes to json

  • Dict-like interface. By default a Config object operates independent of config files or the command line.

  • Can create command line interfaces

    • Can directly create an independent argparse object

    • Can use special command line loading using self.load(cmdline=True). This extends the basic argparse interface with:

      • Can specify options as either --option value or --option=value

      • Default config options allow for “smartcasting” values like lists and paths

      • Automatically add --config, --dumps, and --dump CLI options when reading cmdline via load.

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

scriptconfig-0.5.5.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

scriptconfig-0.5.5-py2.py3-none-any.whl (14.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file scriptconfig-0.5.5.tar.gz.

File metadata

  • Download URL: scriptconfig-0.5.5.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for scriptconfig-0.5.5.tar.gz
Algorithm Hash digest
SHA256 988378a7c22cfe9d887cd2d8809a3755f8bb80baaa24a1de137edd503b6ec408
MD5 0f9bbb910d0f662e2248d3112e9ca67b
BLAKE2b-256 de3e3bedd794964a6d140d2e849ad54efc9e24b3458530ab719d72d3e44d01f9

See more details on using hashes here.

File details

Details for the file scriptconfig-0.5.5-py2.py3-none-any.whl.

File metadata

  • Download URL: scriptconfig-0.5.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for scriptconfig-0.5.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6272603c1f6c7bf9a87b0786de0a99788b0757ad81b83e6ef1bfc5e98f7ff00a
MD5 07ae27d9427f184178a1d476a59010cc
BLAKE2b-256 1a2f35cef08aa43817138bb26d8973a4aae534c8e57463ae3a24be8e7c684cc5

See more details on using hashes here.

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