Metadata-Version: 2.1
Name: conflow
Version: 0.0.2
Summary: Python configuration manager.
Home-page: https://github.com/singulared/conflow
License: MIT
Keywords: development,configuration,management
Author: Belousow Makc
Author-email: lib.bmw@gmail.com
Requires-Python: >=3.6,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: PyYAML (>=5.1,<6.0)
Requires-Dist: typing_extensions (>=3.7,<4.0)
Project-URL: Repository, https://github.com/singulared/conflow
Description-Content-Type: text/x-rst

=======
Conflow
=======

.. image:: https://travis-ci.org/singulared/conflow.svg?branch=master
    :target: https://travis-ci.org/singulared/conflow
.. image:: https://codecov.io/gh/singulared/conflow/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/singulared/conflow

Project in early beta. Work in progress!

Conflow organizes layered configurations for Python applications.
Conflow allows you to use default settings and extend or override it
via merging settings from different sources:
- Python dictionaries
- Files: yaml, json, ini
- Environment variables

Quickstart
==========

.. code-block:: bash

  pip install conflow

Usage
=====

.. code-block:: python

  import os
  from conflow import Config, from_env

  DEFAULT_SETTINGS = {
      'db': {
          'master': {
              'host': 'localhost',
              'port': 5432,
          },
          'slave': {
              'host': 'localhost',
              'port': 5433,
          }
      }
  }

  config = Config().merge(DEFAULT_SETTINGS)
  assert config.db.master.host() == 'localhost'

  os.environ['APP_DB__MASTER__HOST'] = 'remote_host'
  env_settings = from_env('APP')

  config = Config().merge(DEFAULT_SETTINGS).merge(env_settings)
  assert config.db.master.host() == 'remote_host'

Motivation
==========
If you are tired of making local, test, stage and production profiles in each project, then Conflow is for you.
Conflow allows you to fetch and merge configs from different places - yaml files, environment variables etc.

