Skip to main content

Configuration file support for click applications.

Project description

Easily add configuration file support to your Click applications by adding a single no-arguments decorator.

Basic usage

click-config-file is designed to be a usable by simply adding the appropriate decorator to your command without having to supply any mandatory arguments. It comes with a set of sensible defaults that should just work for most cases.

Given this application:

@click.command()
@click.option('--name', default='World', help='Who to greet.')
@click_config_file.configuration_option()
def hello(name):
    click.echo('Hello {}!'.format(name))

Running hello --help will give you this:

Usage: hello [OPTIONS]

Options:
  --name TEXT    Who to greet.
  --config PATH  Read configuration from PATH.
  --help         Show this message and exit.

If the configuration file does not exist, running hello will do what you expect:

Hello World!

With this configuration file:

name="Universe"

Calling hello will also do what you expect:

Hello Universe!

Calling hello --name Multiverse will override the configuration file setting, as it should:

Hello Multiverse!

The default name for the configuration file option is --config. If no --config option is provided either via CLI or an environment variable, the module will search for a file named config in the appropriate directory for your OS.

Command line and environment options will override the configuration file options. Configuration file options override default options. So the resolution order for a given option is: CLI > Environment > Configuration file > Default.

Supported file formats

By default click-config-file supports files formatted according to Configobj’s unrepr mode.

You can add support for additional configuration providers by setting the x`provider keyword argument. This argument expects a callable that will take the configuration file path and command name as arguments and returns a dictionary with the provided configuration options.

The command name is passed in order to allow for a shared configuration file divided by sections for each command.

For example, this will read the configuration options from a shared JSON file:

def myprovider(file_path, cmd_name):
    with open(file_path) as config_data:
        return json.load(config_data)[cmd_name]

@click.command()
@click.option('--name', default='World')
@click_config_file.configuration_option(provider=myprovider)
def hello(name):
    click.echo('Hello {}!'.format(name))

Installation

pip install click-config-file

Why?

There are several existing implementations of config file support for Click, however they seem to lack one or more of the following features:

  • Sensible defaults

  • Proper handling of resolution order

  • Support for multi value options, multiple options or a combination of both

In contrast this module may lack some more sophisticated features of the other implementations. This is a deliberate choice as this module is intended to be a simple option that Just Works with sensible defaults.

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

click_config_file-0.4.3.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

click_config_file-0.4.3-py2.py3-none-any.whl (7.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file click_config_file-0.4.3.tar.gz.

File metadata

File hashes

Hashes for click_config_file-0.4.3.tar.gz
Algorithm Hash digest
SHA256 b467bb4a7e3227ce349bd776062466c89ea6bdab39f4e54a179b52a0cc9c2a08
MD5 537660465d3bd26037904d8335d2ec8b
BLAKE2b-256 7d0d0be444a028f9d617a697ad8ca45639f12294c9550982c7ea15bf2217a6f8

See more details on using hashes here.

File details

Details for the file click_config_file-0.4.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for click_config_file-0.4.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0c6c7598a9f7121394f2e3896ee8c6f4c9c2d3e7c19ee619652897885e1a9e3a
MD5 244d048f0935cb23175efac912bdffe1
BLAKE2b-256 2a3f91946b67f239c389a71ebcdce58a23e6afa8cdbd4dbe525cb81a8c8f1a7d

See more details on using hashes here.

Supported by

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