Skip to main content

Python package to assist configuration

Project description

yaconfig

Github release PyPI

license MIT

Build Status

Python package to assist configuration of Python software.

Installation

To install the latest release:

pip3 install yaconfig

Usage

This package is intended to be used by other package to assist their configuration. The recommended workflow follows:

  • Add a config module. Its purpose should be to define the configuration variables (the metaconfig) and to provide a single instance of the actual configuration (the values) for your application. If you want to implement a more complex logic to handle multiple configuration, you can do it here. Simple example:
"""File config.py"""
import yaconfig

metaconfig = yaconfig.MetaConfig(
    yaconfig.Variable("text", type=str, default="Hello world", help="Text to output")
)


# Get a default configuration, which should be overridden when the execution starts
config = yaconfig.Config(metaconfig)
  • In the entry point of your program, load the previous module and initialize the config using the desired method. The variables can be accessed from now on. Example:
"""File main.py"""
from config import config  # Just need the config object of the previous module
# Use a relative import instead if intended to run as a package
# from .config import config

try:
    config.load_json("config.json")
except FileNotFoundError:
    print("config.json file not found. Using the default configuration instead.")

print(config["text"])

Note that if that file can be loaded as a module, you should avoid initializing the config. You can use __main__ or build a launching script to prevent this.

  • To document the configuration, you can use the methods of the metaconfig variable you have defined. This can be done manually from the interpreter or automated by writing a script. Some examples follow:
from config import metaconfig # Or wherever the config was placed

metaconfig.generate_json_example()  # Generate a config.example.json file
metaconfig.generate_environment_example()  # Generate a environment.example.sh file
metaconfig.interactive_json()  # Prompt the user to generate a config.json file
metaconfig.interactive_environment()  # Prompt the user to generate a environment.sh file

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

yaconfig-0.4.1.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

yaconfig-0.4.1-py2.py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 2 Python 3

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