Skip to main content

A small collections of modular components useful in other projects.

Project description

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'

Project details


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)

Uploaded Source

Built Distribution

projectutils-1-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

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

Hashes for projectutils-1.tar.gz
Algorithm Hash digest
SHA256 625d7e56104b5f65ae41f21e97ee139081158a4b09bb0cd06dc949d27ba28a70
MD5 ed98768dc0bc2bcce8beeebb1c197205
BLAKE2b-256 0e004da4748c58bc675b4cd92bcadbb625ba54bca37e8a3fdb6f49c45114d0bf

See more details on using hashes here.

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

Hashes for projectutils-1-py3-none-any.whl
Algorithm Hash digest
SHA256 4f96d7a0910977c12ea469b1bd4f349ba7caa301568051960b376ef34896ac6c
MD5 50596caa4d62593c0d7f618521c16e41
BLAKE2b-256 d4bc8a94e0e5ddf1305af48d54389db06fac25298aa7d0362a4cb992bad3c33d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page