Skip to main content

Setup your project config easily

Project description

bestconfig

Python модуль для работы с файлами конфигурации проекта

Installation

pip install bestconfig

A Simple Example

Предположим у вас такая структура проекта

root/
    main.py
    config.yaml
    .env

/main.py

from bestconfig import Config

config = Config("myconfig.json")
print(dict(config))
# Примеры использования класса
logger = config.logger
logger = config['logger']
mode = config.logger.mode
mode = config.get('logger.mode', 'DEBUG')
mode = config['__unknown__'] # raise KeyError
mode = config.get('__unknown__') # return None

Содержимое файлов:

.env

DATABASE_PASSWOD=postgres

/config.yaml

HOST: http://localhost
PORT: 5050
logger:
  mode: WARNING

myconfig.json

{
    "VERSION": "1.23.4",
    "BUILD": 5563
}

Вывод будет следующим

{
    "logger": {
        "mode": "DEBUG"       
     }
    "PORT": 5050,
    "HOST": "http://localhost",
    "DATABASE_PASSWOD": "postgres"
}

Что произошло?

  1. Класс Config просканировал текущую дирикторию, вплоть до корня проекта
  2. Нашел все указанные в аргументах файлы и те, что в списке по умолчанию (например .env, env_file, config.yaml, configuration.ini и тд)

Какие источники конфигов поддерживаются?

  • Файлы следующих типов:
    • .json
    • .yaml
    • .ini
    • .py (если в нем нет инициализации Config() во избежании рекурсии)
    • .cfg
  • Файлы в формате CONFIG_NAME=CONFIG_VALUE
  • Уже существующие и новые переменные окружения
  • Обычные python словари

Файлы для поиска по умолчанию

  • Все комбинации имени

    config configuration settings conf

    и расширений

    .json .yaml .ini .env .cfg

  • Выеденные, часто используемые названия

    • env_file
    • .env
    • config.py

Доступ к данным

  1. Через точку config.name
  2. Нотация python dict config['name'] Бросает исключение при отсутствии
  3. config.get('name', 'default_value', raise_absent=False)

Если после документации остались вопросы, код подробно документирован, можно смело смотреть в исходники

Запланированные обновления

  • Поддержка загрузки из базы данных
  • Поддержка загрузки с config сервера

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

bestconfig-1.0.3.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

bestconfig-1.0.3-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file bestconfig-1.0.3.tar.gz.

File metadata

  • Download URL: bestconfig-1.0.3.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for bestconfig-1.0.3.tar.gz
Algorithm Hash digest
SHA256 703fb83e5506ec13a58e32dd885859cce2657d7580ee848fbec7e3ec82adcb37
MD5 bb20b3d7b9fb11a1abd24d864cf1e764
BLAKE2b-256 dbd4d8c074fb8fa22a5c7ed48080be59f2cee6cb57b2ae6b0e847af2e5195be6

See more details on using hashes here.

File details

Details for the file bestconfig-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: bestconfig-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for bestconfig-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3d8b1ba6793f84c9dd224ad52579a1e4647bebb7e9472ff0ad46319e78fb8568
MD5 55a454303fade391e4c70052df064ba1
BLAKE2b-256 8844afe5cb715e3f62ceaeca4c46c9b0bcba2bed37ec72c8d2343c4db910317e

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