Skip to main content

Config starter for my local projects

Project description

yi-config-starter

A lightweight YAML configuration loader with automatic config discovery, placeholder substitution, and a thread-safe singleton interface.

This library is intended to centralize configuration loading logic while keeping application code clean and portable across environments.


Installation

pip install yi-config-starter

Quick Start

from yi_config_starter import ApplicationConfiguration

cfg = ApplicationConfiguration.get_instance()
config = cfg.get_config()

db_host = cfg.get_config_value("db.datasource.config.host")
print(db_host)

You may also initialize it explicitly (still resolves to a singleton internally):

from yi_config_starter import ApplicationConfiguration
cfg = ApplicationConfiguration(
    filename="config.yml",
    env_var="MY_APP_CONFIG",
    app_name="my-app",
    # path="/absolute/or/~/path/to/config.yml",
    # extra_placeholders={"PROJECT_ROOT": "/some/path"},
)

Configuration File Discovery

By default, the loader searches for config.yml in the following order:

  1. Explicit path passed to the constructor (path=...)

  2. Path provided via environment variable

  3. Current working directory, then parent directories (walking upward)

  4. User configuration directory

    • Windows: %APPDATA%\<app_name>\config.yml
    • Linux/macOS: ~/.config/<app_name>/config.yml
  5. Entries on sys.path (recursive search)

If no configuration file is found, a FileNotFoundError is raised.


Placeholder Substitution

Before parsing YAML, placeholders in the configuration file are substituted.

Built-in Placeholders

Placeholder Description
{{HOME}} User home directory
{{separator}} OS path separator (/ or \)
{{APPDATA}} Windows %APPDATA% or fallback to ~/.config
{{XDG_CONFIG}} $XDG_CONFIG_HOME or ~/.config
{{ENV:VAR_NAME}} Value of environment variable VAR_NAME

Custom placeholders may be supplied via extra_placeholders.

Example

paths:
  data_dir: "{{HOME}}{{separator}}data"
  cache_dir: "{{XDG_CONFIG}}{{separator}}my-app{{separator}}cache"
  api_key: "{{ENV:MY_API_KEY}}"

API Reference

ApplicationConfiguration.get_instance(...)

Returns the singleton configuration instance (thread-safe).


cfg.get_config() -> dict

Returns the entire configuration as a dictionary.


cfg.get_config_value("a.b.c")

Returns a nested configuration value using dot-separated keys.


ApplicationConfiguration.get_value_from_config(config: dict, key: str)

Static helper for retrieving nested values from an arbitrary dictionary.


Versioning

The package version is resolved dynamically from:

import yi_config_starter
yi_config_starter.__version__

Defined in:

/yi_config_starter/__init__.py

License

MIT License — see the LICENSE 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

yi_config_starter-0.1.3.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

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

yi_config_starter-0.1.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file yi_config_starter-0.1.3.tar.gz.

File metadata

  • Download URL: yi_config_starter-0.1.3.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yi_config_starter-0.1.3.tar.gz
Algorithm Hash digest
SHA256 fc828b7037c0c03e5c140377544c2ec97e394828a091f8a33208d1b4d3acec23
MD5 19241fcee99794fd8052c21b0740e5f5
BLAKE2b-256 c9bf949e720ba64dadc5f71d42c9eb733bab5c3a3d60c74a298cfd3a15b75237

See more details on using hashes here.

File details

Details for the file yi_config_starter-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for yi_config_starter-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 77cc61de785bd70e2577bb35e7182e0dc53992ed5a0cc1d7612b9232c5a44266
MD5 88bb01725f5970465be932121f86c1a9
BLAKE2b-256 e3cb694c5e25e237826db5e6344d97a1fd93a097c2b4d6af5adf65c0f3cb2bc5

See more details on using hashes here.

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