Skip to main content

Lightweight self-healing config manager

Project description

ConfigLite

A lightweight self-healing config handler.

Quickstart

Subclass from the base BaseConfig object and add your variables and defaults.

You can then set import this from wherever is needed and access properties.

Installation

git clone this repository, then use pip install . to install it in your current environment.

Usage

Creating a Config

Create a subclass of the base BaseConfig object, adding your parameters and their defaults.

For example:

from configlite import BaseConfig


class MyConfig(BaseConfig):
    value: int = 10
    name: str = "test"
    pi: float = 3.14

Access

To use your created config, there are two methods:

  • "globally", where a single instance created.
  • "locally", initialising the class where needed.

Global

To create a global config, set up the config as a parameter in the toplevel __init__.py:

CONFIG = MyConfig("./path/to/config.yaml")

Then in the rest of your code you may import this object:

from my_package import CONFIG

value = CONFIG.value

This is most useful if your code requires a single config file for everything.

Local

Or a local config, where you create an instance of your subclass wherever it is needed:

from my_package import MyConfig

config = MyConfig("./path/to/config.yaml")

value = config.value

This can be useful if you are juggling multiple different config files dynamically.

Paths

The BaseConfig object can take either a single path, or a list of paths.

If a list is passed, the config will search each one in order, using the last one in the list if none are found.

Path Lists

Lets say you create a config this way:

class Config(BaseConfig):
    ...

CONFIG = Config(
    paths=[
        "config.yaml",
        "~/.config/app/config.yaml",
    ]
)

In this case, Config will take these steps:

  1. Search for config.yaml in the current working directory.
  2. If not found, search for ~/.config/app/config.yaml.
  3. If still no file exists, create a default config at ~/.config/app/config.yaml

If we get to step 3, but then create a new config at ./config.yaml, this will take priority over the one found at ~/.config/app/config.yaml.

Example

See usage.py for an example.

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

configlite-0.1.4.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

configlite-0.1.4-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file configlite-0.1.4.tar.gz.

File metadata

  • Download URL: configlite-0.1.4.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for configlite-0.1.4.tar.gz
Algorithm Hash digest
SHA256 76b4dd634b8dbc19b563c305ef5fb7ee6bf26da8f3b1fb78b94650b4da50ed56
MD5 b26cbbb500c85dcfa19148cc8672dbdc
BLAKE2b-256 f9535b1ff7258d0c91b275e18d6f1c03853dea9abbf51e6d4412651b17723741

See more details on using hashes here.

Provenance

The following attestation bundles were made for configlite-0.1.4.tar.gz:

Publisher: push-to-pypi.yml on ljbeal/ConfigLite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file configlite-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: configlite-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for configlite-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a3b2ccd39f37a8e06742d7d8e0032b4a5a622f88c877561523cd29069b8baf18
MD5 ebe713dd6a776d10c5964b084c4b6af4
BLAKE2b-256 f74564dea1f6d9b369b4649c1f6d53144632a1ecfdcac64c5d36a99cc8e1bbfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for configlite-0.1.4-py3-none-any.whl:

Publisher: push-to-pypi.yml on ljbeal/ConfigLite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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