A small collections of modular components useful in other projects.
Project description
projectutils
A small collections of modular components useful in other projects.
projectutils.init
The init
module is helpful when you need to create a complex directory structure.
You can create objects that represent Directories and Files to create a tree.
projectutils.config
The config
module allows you to define a configuration schema and dinamically load configurations
from multiple sources.
schema.json
:
{
"string": {"doc": "String config", "format": "string", "default": "DEFAULT"},
"integer": {"doc": "Integer config", "format": "int", "default": 1},
"float": {"doc": "Float config", "format": "float", "default": 1.1},
"list": {"doc": "List config", "format": "list", "default": ["a", "b", "c"]},
"bool": {"doc": "Bool config", "format": "bool", "default": true},
"nested.string": {"doc": "String config", "format": "string", "default": "DEFAULT"},
}
/etc/myapp/config.json
:
{
"float": 2.2,
"string": "loaded from json",
"nested": {
"string": "loaded from json"
}
}
/etc/myapp/.env
:
MYAPP_CONF_LIST="e,n,v"
MYAPP_CONF_BOOL="False"
MYAPP_CONF_NESTED_STRING="loaded from env"
app.py
:
import json
from pathlib import Path
from projectutils.config import Config, ENVSource, JSONSource
# Setup includes loading the schema
# and defining some params used in sources.
with open("schema.json", "r") as fp:
schema = json.load(fp)
envs_prefix = "MYAPP_CONF_"
configs_root = Path("/etc/myapp")
# Source definition dictates precedence.
# In this case ENV values will override JSON values.
sources = [
JSONSource(configs_root / "config.json"),
ENVSource(envs_prefix, configs_root),
]
# Load config
config = Config(schema, sources)
config.get("integer")
# 1
config.get("float")
# 2.2
config.get("bool")
# False
config.get("list")
# ['e', 'n', 'v']
config.get("nested.string")
# 'loaded from env'
config.get("string")
# 'loaded from json'
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
projectutils-1.tar.gz
(18.1 kB
view details)
Built Distribution
projectutils-1-py3-none-any.whl
(18.6 kB
view details)
File details
Details for the file projectutils-1.tar.gz
.
File metadata
- Download URL: projectutils-1.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 625d7e56104b5f65ae41f21e97ee139081158a4b09bb0cd06dc949d27ba28a70 |
|
MD5 | ed98768dc0bc2bcce8beeebb1c197205 |
|
BLAKE2b-256 | 0e004da4748c58bc675b4cd92bcadbb625ba54bca37e8a3fdb6f49c45114d0bf |
File details
Details for the file projectutils-1-py3-none-any.whl
.
File metadata
- Download URL: projectutils-1-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f96d7a0910977c12ea469b1bd4f349ba7caa301568051960b376ef34896ac6c |
|
MD5 | 50596caa4d62593c0d7f618521c16e41 |
|
BLAKE2b-256 | d4bc8a94e0e5ddf1305af48d54389db06fac25298aa7d0362a4cb992bad3c33d |