Skip to main content

projectutils

Documentation Status Unit Tests codecov

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'

Release files for projectutils 1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for projectutils 1
File Size Uploaded
projectutils-1.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for projectutils 1
File Interpreter ABI Platform
projectutils-1-py3-none-any.whl Python 3 none any Details

Total release size: 36.7 kB

Release files / projectutils-1.tar.gz

Download URL projectutils-1.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
625d7e56104b5f65ae41f21e97ee139081158a4b09bb0cd06dc949d27ba28a70
BLAKE2b-256 checksum
How to use checksums
0e004da4748c58bc675b4cd92bcadbb625ba54bca37e8a3fdb6f49c45114d0bf
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / projectutils-1-py3-none-any.whl

Download URL projectutils-1-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f96d7a0910977c12ea469b1bd4f349ba7caa301568051960b376ef34896ac6c
BLAKE2b-256 checksum
How to use checksums
d4bc8a94e0e5ddf1305af48d54389db06fac25298aa7d0362a4cb992bad3c33d
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

1.2

2 release files

1.1

2 release files

This release

1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page