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.1.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

bestconfig-1.1.0-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bestconfig-1.1.0.tar.gz
  • Upload date:
  • Size: 11.2 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.1.0.tar.gz
Algorithm Hash digest
SHA256 1d8a694ac2a11dbce50bd96c9c5af2c909b2028e603b43196d2a2ad3ca043eb6
MD5 ec8df5bda4dcc9d0017e5d6cdd533554
BLAKE2b-256 86a6edabe34d7bd3869141f0edb38ac960500fa9c53f27ca7bbbfcf5064adee5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bestconfig-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.2 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ccb33ffb50d7ea61dca9a79781faff05af4594ddea0cd2073a00028a5915a7eb
MD5 931a53dcbdf809bc971d9236a65055b8
BLAKE2b-256 99f10f166a301d25ed6bf7952d73e8a1c58513aae9ee731d62c3926428736fa7

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