Skip to main content

validate configs using json schema

Project description

schematized config

Install

pip install python_schematized_config

usage

python

from schematized_config.core import ConfigValidator
import os
import os.path as _p

if _p.exists('.env') and 'CONFIG_VALIDATOR_JSON_SCHEMA' in os.environ:
    ConfigValidator.load_dotenv()  # use defaults of .env and CONFIG_VALIDATOR_JSON_SCHEMA

CLI

generate skeleton code for working with a validated .env

this will generate stub files in these conventional locations if they do not yet exist:

  • Makefile
  • generators/env.schema.jsonnet
  • src/schemas/autogen/EnvSchema.py
  • python stub code for loading the validated EnvSchema class against .env, as a variable called Env (this is output to stdout)
schematized-config --codegen all > src/env.py
  • edit generators/env.schema.jsonnet to add environment variable names and validation
  • make schemas/env.schema.json
  • make src/schemas/autogen/EnvSchema.py
  • optionally update the make rule
  • use the src/env.py (or whereever you put it)

development

entering the development environment

assuming you have nix installed and ready, make sure nix-command and flake are enabled (oneliner: run export NIX_CONFIG="experimental-features = nix-command flakes" in the terminal), then enter the dev shell using nix develop

start the jupyter notebook using the provided alias or just jupyter notebook, and hack away

nbdev

this package is developed using nbdev, so we use an nbdev-centric development flow. For a quick guide, we recommend checking out the end-to-end walkthrough. But in short: edit notebooks, then run the nbdev_* management commands. The most essential flow is as follows:

  1. edit the notebook files (core fore core, and cli for the command line interface)
  2. python setup.py install # note we don’t use nbdev_install because we manage quarto using nix
  3. nbdev_prepare
  4. run code using the package
  5. nbdev_release
  6. nbdev_pypi

running tests

if you share variables between cells in your test blocks, this causes trouble during nbdev_prepare as it tries to run cells in isolation, leading to e.g.

NameError: name 'example_properties_schema' is not defined

to deal with this, you can merge cells that use a common variable

updating package dependencies

note that package dependencies are specified in settings.ini; you shouldn’t be editing setup.py by hand. To add a requirement, add it to the requuirements entry in settings.ini, then run python setup.py install

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

python_schematized_config-0.1.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_schematized_config-0.1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file python_schematized_config-0.1.0.tar.gz.

File metadata

File hashes

Hashes for python_schematized_config-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2caf4db5f58908b6e3481885ff32855042e7fa44d8266f483c9bf58cd8e9dabe
MD5 d8cd0897c096aedf947e68a2a54f1c29
BLAKE2b-256 f13682e0a0312db5a5ce33d7ac455f62b0b3c0787b43c5bdd3aea225bc4b8245

See more details on using hashes here.

File details

Details for the file python_schematized_config-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_schematized_config-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23c3e667e390c9ef0606c3cf260cee1b756e77bd6ea18dbb81077d28e53a34af
MD5 a111b983a67e2d46ff7a91acf03d0b86
BLAKE2b-256 7127046aec62e6e49e3972d54c4428ce0b34387929002096c8dd7fcec9e61932

See more details on using hashes here.

Supported by

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