Metadata-Version: 2.1
Name: envbox
Version: 1.3.0
Summary: Detect environment type and work within.
Home-page: https://github.com/idlesign/envbox
Author: Igor `idle sign` Starikov
Author-email: idlesign@yandex.ru
License: BSD 3-Clause License
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: BSD License
Provides-Extra: cli
Requires-Dist: click (>=2.0) ; extra == 'cli'

envbox
======
https://github.com/idlesign/envbox

|release| |lic| |coverage|

.. |release| image:: https://img.shields.io/pypi/v/envbox.svg
    :target: https://pypi.python.org/pypi/envbox

.. |lic| image:: https://img.shields.io/pypi/l/envbox.svg
    :target: https://pypi.python.org/pypi/envbox

.. |coverage| image:: https://img.shields.io/coveralls/idlesign/envbox/master.svg
    :target: https://coveralls.io/r/idlesign/envbox


Description
-----------

*Detect environment type and work within.*


Features
~~~~~~~~

* Environment type detection (extendable system);
* Support for ``.env`` files;
* Convenient ``os.environ`` proxying (with optional values casting into Python natives);
* Automatic submodule-for-environment import tool;
* Cosy per-thread settings container with environment var support;
* CLI for environment probing.


Code sample
~~~~~~~~~~~

.. code-block:: python

    from envbox import get_environment

    # Detect current environment type
    # and get its object.
    #
    # Default detection sources:
    # 1. ``PYTHON_ENV`` env variable
    # 2. ``environment`` file contents
    #
    # By default this function will also try to read env variables from .env files.
    env = get_environment()

    env.name
    # >> development

    env.is_production
    # >> False

    env.get('HOME')
    # The same as env['HOME'] and env.HOME
    # >> /home/idle/

    env.getmany('PYTHON')
    # {'UNBUFFERED': '1', 'IOENCODING': 'UTF-8', 'PATH': ...}

Now you may want to put your environment vars into ``.env`` files
(e.g.: ``.env``, ``.env.development`` ``.env.production``)
to be read by ``envbox``:

.. code-block::

    MY_VAR_1 = value1
    HOME = /home/other/

    # comments are ignored, just as lines without definitions

    # mathing quotes (" and ') are stripped
    MY_QUOTED = "some quoted "

    # ${VARNAME} will be replaced by value from env (if available)
    MY_VAR_2 = ${MY_QUOTED}

    # multiline with dangling quotes
    MULTI_1 = "
    line1
    line2
    "

    # multiline classic
    MULTI_2 = "line1
    line2
    line3"

    # multiline as one line
    MULTI_3 = "one\ntwo"

Read the docs for more examples.


CLI
~~~

.. code-block:: bash

    $ envbox probe
    # >> Detected environment type: development (Development)

    $ envbox show
    # >> [...]
    # >> SHELL = /bin/bash
    # >> [...]


**Note:** ``envbox`` CLI requires ``click`` package available.


Documentation
-------------

http://envbox.readthedocs.org/


