A python library to decrypt config-yourself files
Project description
config-yourself-python
config-yourself is a python 2.7+ package to help your application read go-config-yourself files.
Installation
# choose if you'd like to use `kms`, `gpg` or the `password` provider
pip install 'config_yourself[kms]'
# or go crazy with all of them
pip install 'config_yourself[all]'
# with pipenv
pipenv install 'config_yourself[kms]'
# with poetry
poetry add config_yourself --extras kms
Usage
Here's how to work with config_yourself in python:
Basic usage
import config_yourself as cy
# Load one config file
encrypted_config = cy.load.file("config/test.yml")
config = cy.Config(encrypted_config)
# now use it like a dict, all secrets have been decrypted
print(config["database"])
Complete usage
# Let's get a little more creative
# `config_yourself` can take a number of config files, merge, and decrypt them
# we start with a defaults file, that defines the valid keys for all subsequent files
# then, we take a file path provided from the environment
files = ['config/defaults.yml', os.environ['CONFIG_FILE']]
# During development, we might choose to have a SCM-ignored personal file, to apply overrides to our personal taste
if os.path.exists(personal_config_path):
files.append('config/personal.yml')
# we take every file, deserialize it from YAML
configs = [cy.load.file(path) for path in files]
# we can also append regular dicts to this list
configs.append({
'MODE': os.environ.get('BACKEND_MODE', 'tripolar')
})
# we can also decide to override values straight from the environment...
if os.environ['SHOOT_MYSELF_IN_THE_FOOT']:
# config_yourself will parse env values as JSON, so this will turn to False
os.environ['CONFIG.someService.enabled'] = 'false'
configs.append(cy.load.env('CONFIG'))
# Take our list of configs, and pass secrets to the decryption provider
config = cy.Config(*configs, secrets={'password': os.environ['SUPER_SECRET_PASSWORD']})
# The resulting merged config is finally decrypted
print(config['someService']['endpoint']) # => "https://super-secure-service.example.com"
print(config['someService']['enabled']) # => False
From a Django or Flask application
When using in Flask or Django and you'd like to follow the same pattern above, use the :py:meth:~config_yourself.AppConfig method instead:
import config_yourself as cy
# Use AppConfig
config = cy.AppConfig()
# functionally equal to:
# Remember to set CONFIG_FILE=./config/production.yml
cy.Config(**[
"./config/defaults.yml",
"./config/production.yml",
])
# assuming CONFIG_FILE="" and an existing "personal.yml" file
cy.Config(**[
"./config/defaults.yml",
"./config/local.yml",
"./config/personal.yml",
])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file config-yourself-1.0.2.tar.gz.
File metadata
- Download URL: config-yourself-1.0.2.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.6.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9de174052a7ea66e9e43f8fafec0485e5f3cb5b065bed4628df8e603b6efbeff
|
|
| MD5 |
1ca257c525c21d64ee96351f94bf38b9
|
|
| BLAKE2b-256 |
e5ebfcca514b15da459b632c4fef1f40e746703ba2a88c256aa08a56212680f4
|
File details
Details for the file config_yourself-1.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: config_yourself-1.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.6.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3427dfa6d1969b1fd625c9b2b4252545af462dd9d60d0b9d530f8eee37845ca9
|
|
| MD5 |
41c0adca9db5f7eae32f52753601509c
|
|
| BLAKE2b-256 |
7421ed9707fbbf454c86f6bf53b4c466ae9989cb9f42b469eef17bfe26dbe4ef
|