![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
python-configuration-management
Advanced tools
A merge conflict-less solution to committing an encrypted configuration to the repo with secrets and non-secrets side-by-side.
This package features an opinionated, python configuration management system, focused on combining both secret and non-secret keys in the same configuration file. The values for secret keys are encrypted and can be committed to the repo, but since each key is separated on a line-by-line basis, merge conflicts shouldn't cause much trouble.
pip install python-configuration-management
In a terminal, enter:
pycm generate-key
Follow the instructions printed to the console. For example, if you're setting up a production configuration,
make a file called .env-production
in the root of your project. Inside of it, save the key generated
above to a variable called ENC_KEY
.
To insert or update a secret, enter:
pycm upsert --environment <your environment>
And follow the prompts.
Simply open the .yml file for the generated stage (the naming scheme is config-<environment>.yaml
),
and insert a row. It should look like this:
USERNAME: whatsup1994 # non-secret
PASSWORD:
secret: true
value: gAAAAABf2_kxEgWXQzJ0SlRmDy6lbXe-d3dWD68W4aM26yiA0EO2_4pA5FhV96uMWCLwpt7N6Y32zXQq-gTJ3sREbh1GOvNh5Q==
You can change the values of non-secrets by hand, as well as the keynames, but clearly you must not change the value of secrets by hand, as they're encrypted. Changing the order of any of the keys is perfectly fine.
To show the decrypted values of all the secrets in the console, enter:
pycm reveal --environment <your-environment>
To re-encrypt all secret values for a given environment's config file, pass
pycm reencrypt --environment <your-environment> --new-key <your-new-key>
If you do not provide a key, a new one will be generated for you.
In the root of your project, you can create a file called config-required.json
.
The JSON object can be a list or a dictionary. This is useful for validating the presence of your keys on start-up.
There are two ways to use this library. You can either have a dotenv file with your ENC_KEY
,
or you can place the ENC_KEY
in your environment variables. If you use a dotenv, make sure
the file follows this naming scheme: .env-[environment]
.
As for accessing the config, if you don't mind a little magic, you can use inject_config
.
# settings.py
from pycm import inject_config
# development is the environment name
inject_config("development", sys.modules[__name__])
If you want more verbosity, you can import the following function which will return the config as a normalized dictionary that's flat and has all secrets decrypted.
# settings.py
from pycm import get_config
# config = {"USERNAME": "helloworld", "PASSWORD": "im decrypted"}
config = get_config("development")
USERNAME = config["USERNAME"]
# ...
All file paths within the libary are relative to root by default. To change this
behaviour, set an environment variable called PYCM_ROOT
which stores the relative
path to the root of your project (where your .env-[environment]
and config-[environment].yml
files are stored).
You'll need the following encryption key to run tests
rj10mXFq-JTDlsSa-5GxYzcx4KAF6TQpXWcl1LLbUTU=
This belongs either in your environment variables under ENC_KEY
or in .env-test
.
This project uses poetry for dependency management and packaging.
FAQs
A merge conflict-less solution to committing an encrypted configuration to the repo with secrets and non-secrets side-by-side.
We found that python-configuration-management demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.