A library that offers a simple method of loading and accessing environmental variables and `.env` file values.
Project description
secretbox
A library that offers a simple method of loading and accessing environmental variables, .env
file values, and other sources of secrets. The class stores values to state when load methods are called.
Loaded values are also injected into the local environ. This is to assist with adjacent libraries that reference os.environ
values by default. Required values can be kept in a .env
file instead of managing a script to load them into the environment.
Requirements
- Python >= 3.6 <= 3.9
Optional Dependencies
- boto3
- boto3-stubs[secretsmanager]
Install
$ pip install secretbox
Optional AWS Secret Manager support
$ pip install secretbox[aws]
Example use
from secretbox.loadenv import LoadEnv
secrets = LoadEnv()
def main() -> int:
"""Main function"""
secrets.load()
my_sevice_password = secrets.get("SERVICE_PW")
# More code
return 0
if __name__ == "__main__":
exit(main())
LoadEnv arguments:
Default: (shown above)
- On initialization the
LoadEnv()
class does nothing. By calling.load()
we cause the class to load all the currently available environ variables. It also looks for and loads, if found, a.env
file in the working directory. From there we can access those values with.get("KEY_NAME")
.
auto_load
- Alternatively, you can initialize with
LoadEnv(auto_load=True)
and theload()
method will be executed on creation of the class instance.
filename
- You can specify a
.env
formatted file and location, overriding the default behavior to load the.env
from the working directory.
aws_sstore_name
- When provided, an attempt to load values from named AWS secrets manager will be made. Requires
aws_region
to be provided. Requiresboto3
andboto3-stubs[secretsmanager]
to be installed.
aws_region
- When provided, an attempt to load values from the given AWS secrets manager found in this region will be made. Requires
aws_sstore_name
to be provided. Requiresboto3
and `boto3-stubs[secretsmanager] to be installed.
LoadEnv methods:
.get("[Key Name]")
- Returns the string value of the loaded value by key name. If the key does not exist, an empty string will be returned
""
.
.load()
- Runs all importer methods. If optional dependencies are not installed, e.g. boto3, the importer is skipped.
.load_env_vars()
- Loads all existing
os.environ
values into state.
.load_env_file()
- Loads
.env
file or any file provided with thefilename
argument on initialization.
.load_aws_store()
- Loads secrets from AWS secret manager. Requires
aws_sstore_name
andaws_region
to have been provided. Will raiseNotImplementedError
if library requirements are missing.
Local developer installation
It is highly recommended to use a venv
for installation. Leveraging a venv
will ensure the installed dependency files will not impact other python projects.
The instruction below make use of a bash shell and a Makefile. All commands should be able to be run individually of your shell does not support make
Clone this repo and enter root directory of repo:
$ git clone https://github.com/Preocts/secretbox
$ cd secretbox
Create and activate venv
:
$ python3 -m venv venv
$ . venv/bin/activate
Your command prompt should now have a (venv)
prefix on it.
Install editable library and development requirements:
(venv) $ pip install -r requirements-dev.txt
(venv) $ pip install --editable .[aws,tests]
Run tests
(venv) $ tox
To exit the venv
:
(venv) $ deactivate
Makefile
This repo has a Makefile with some quality of life scripts if your system supports make
.
update
: Clean all artifacts, update pip, update requirements, install everythingclean-pyc
: Deletes python/mypy artifactsclean-tests
: Deletes tox, coverage, and pytest artifacts
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
File details
Details for the file secretbox-1.0.2.tar.gz
.
File metadata
- Download URL: secretbox-1.0.2.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 614d4f9f2bbbee1c07d186686257610c9d14e195297448156513e3ecf4c9bbe6 |
|
MD5 | eb602ba3ca8cc0a326fdc44191d4a7db |
|
BLAKE2b-256 | 929843b08aef1b282d04db4afc504f0fd51964964dcc3b7e8fa92711125f50f8 |
File details
Details for the file secretbox-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: secretbox-1.0.2-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cf268827f5f215a9c46e6c16576291ed85f4400bf28ff058a7c47803c85dfbd |
|
MD5 | 74133d48f2737291ae40b9728ab78bf9 |
|
BLAKE2b-256 | dba34d01c8ef515cb3bac2c880920a2f76b71cc6c06133b545b3b5a8c3fb5f8d |