Skip to main content

Read key-value pairs from a settings.json file and set them as environment variables, dictionary or Pydantic models

Project description

python-dotjson

Installation

Sample usage:

pip install dotjson

Introduction

If you want your application to derive configuration using a json file, To help you with that, you can add python-dotjson to your application to make it load the configuration from a settings.json file when it is present (e.g. in development) while remaining configurable via the environment variables.

Sample usage:

from dotjson import load_dotjson()

load_dotjson()

Features

  • Sets config vars to env vars
  • Support for multiple settings.json files
  • Lets you deserialize settings.json file to a Pydantic Model or Dictionary
  • Auto picks the settings.json file from root directory
  • Ability to load settings from stream

load_dotjson

This method lets you flatten and load the settings.json file to env vars.

Load Env Vars from default settings.json

load_dotjson()

Load Env Vars using json path override

load_dotjson(json_path="settings/settings.dev.json")

Load Env Vars using stream

settings_content = '{"apple":1,"mango":5,"fruit":{"units":["kg","pound"]}}'
load_dotjson(stream=StringIO(settings_content))

Load Env Vars using multiple json paths

settings_paths = ["settings.json", "settings.dev.json"]
load_dotjson(json_paths_list=settings_paths)

dict_dotjson

This method lets you load a dictionary using the settings.json file.

Load dictionary from default settings.json

dict_output = dict_dotjson()

Load dictionary using json path override

dict_output = dict_dotjson(json_path="settings/settings.dev.json")

Load dictionary using stream

settings_content = '{"apple":1,"mango":5,"fruit":{"units":["kg","pound"]}}'
dict_output = dict_dotjson(stream=StringIO(settings_content))

Load dictionary using multiple json paths

settings_paths = ["settings.json", "settings.dev.json"]
dict_output = dict_dotjson(json_paths_list=settings_paths)

model_dotjson

This method lets you load a pydantic model using the settings.json file.

Load dictionary from default settings.json

class fruit_model(BaseModel):
    units: List[str]

class settings_model(BaseModel):
    apple: int
    mango: int
    fruit: fruit_model

model_output = model_dotjson(settings_model)

Load dictionary using json path override

class fruit_model(BaseModel):
    units: List[str]

class settings_model(BaseModel):
    apple: int
    mango: int
    fruit: fruit_model

model_output = model_dotjson(settings_model, json_path="settings/settings.dev.json")

Load dictionary using stream

class fruit_model(BaseModel):
    units: List[str]

class settings_model(BaseModel):
    apple: int
    mango: int
    fruit: fruit_model

settings_content = '{"apple":1,"mango":5,"fruit":{"units":["kg","pound"]}}'
model_output = model_dotjson(settings_model, stream=StringIO(settings_content))

Load dictionary using multiple json paths

class fruit_model(BaseModel):
    units: List[str]

class settings_model(BaseModel):
    apple: int
    mango: int
    fruit: fruit_model

settings_paths = ["settings.json", "settings.dev.json"]
model_output = model_dotjson(settings_model, json_paths_list=settings_paths)

Inspired by

References

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

dotjson-0.1.2.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

dotjson-0.1.2-py3-none-any.whl (3.2 kB view details)

Uploaded Python 3

File details

Details for the file dotjson-0.1.2.tar.gz.

File metadata

  • Download URL: dotjson-0.1.2.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.13 Linux/5.13.0-1025-azure

File hashes

Hashes for dotjson-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6afb853208c988c37f03175951c4ef954f961863085cdb88a0cb8c57491c9fc3
MD5 29a59f0d4038c00837c4b4e837de4d4d
BLAKE2b-256 3629490d68d3b96df73fbf4110be4a456fc0a91ae483c84e0a3a70922e1bf691

See more details on using hashes here.

File details

Details for the file dotjson-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: dotjson-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 3.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.13 Linux/5.13.0-1025-azure

File hashes

Hashes for dotjson-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6680fed6922a83128e668a1f4bf34b3aed2545c11eab3d4c939456c427cadb82
MD5 9742758bc63527afa43721c36553a754
BLAKE2b-256 aa471f1b230833283d0ea71ea6df0aa1b228d0edd911dd25f42c45fe102c57a2

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