Skip to main content

Static Config Class

Configuration manager for medium-sized projects. Maintains a configuration inside a static class. Intended for personal use so breaking changes might be introduced at any point.

installation

The package can simply be installed with pip

pip install static-config

usage

To use the configuration manager you have to set it up first by giving it your configuration.

Your configuration has to be provided via a path to a JSON file

{
  "key": "value",
  "bool_key": true,
  "int_key": 1,
  "float_key": 3.14159,
  "list_key": ["one", "two", "three"],
  "dict_key": {
    "key": "value"
  }
}

data/tests/config.json

The setup function then is called like this

from static_config_class import Config
from pathlib import Path

config_json = Path.cwd() / 'data/tests/config.json'
Config.setup(config_json)

If configuration access is attempted before setup, a SetupFirstError is raised.

reading/writing the configuration

Ater setup you can use the Methods Config.get() and Config.set() to gain read and write access on the configuration.

...
# read the value of configuration key 'key'
some_config_data = Config.get('key')

# write 'value' to configuration key 'key'
Config.set('key', 'value')

using a json schema

Optionally, you can provide a JSON schema to validate the configuration during setup and value changes.

The schema is provided as path to a JSON schema

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Test Config",
  "description": "An example config to test this package",
  "type": "object",

  "properties": {
    "key": {
      "type": "string"
    },
    "bool_key": {
      "type": "boolean"
    },
    "int_key": {
      "type": "integer"
    },
    "float_key": {
      "type": "number"
    },
    "list_key": {
      "type": "array"
    },
    "dict_key": {
      "type": "object"
    }
  },

  "additionalProperties": false,
  "required": ["key", "bool_key"]
}

data/tests/schema.json

Setup with schema is straight forward. The schema is used to initially validate the config during setup and consecutively each time the config is changed. Raises a ConfigValidationError if the config is not conforming to the schema.

from static_config_class import Config
from pathlib import Path

config_json = Path.cwd() / 'data/tests/config.json'
schema_json = Path.cwd() / 'data/tests/schema.json'
Config.setup(config_json)

Using a schema allows to allow/prohibit the later extensions of known configuration keys and specification of keys that require a value during setup. Furthermore, the type keyword can be used to enforce runtime typechecking.

immutable values

During setup, you can pass a Collection containing all the configuration keys whose values are not allowed to be changed.

from static_config_class import Config
from pathlib import Path

config_json = Path.cwd() / 'data/tests/config.json'
Config.setup(config_json, immutable=['key', 'bool_key'])

If the Config.set() method is used to update these, an ImmutableError is raised.

persisting the configuration

If you changed your configuration during runtime and want to persist it as json file you can use the Config.write() function.

Config.write('out/updated_configuration.json')

identifying the configuration

If you need to have a short reference of the current configuration state, you can calculate the configurations MD5-hash with the Config.identifier() function.

Release files for static-config-class 0.0.3

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

Source distribution (sdist)

Source distribution for static-config-class 0.0.3
File Size Uploaded
static_config_class-0.0.3.tar.gz 9.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for static-config-class 0.0.3
File Interpreter ABI Platform
static_config_class-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 16.3 kB

Release files / static_config_class-0.0.3.tar.gz

Download URL static_config_class-0.0.3.tar.gz
Size 9.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cb01673f4f7473064305f390ab00e87924ecf188ccd21ed925453a37149cb3b1
BLAKE2b-256 checksum
How to use checksums
bfc378048d5896d198bce6b8821902dd503bba7d67fb008be4160ad927fbd15c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.0

Release files / static_config_class-0.0.3-py3-none-any.whl

Download URL static_config_class-0.0.3-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
514a7c6614759e6de49b143a06b3cbee79dd2c739007d9d559292d6231575812
BLAKE2b-256 checksum
How to use checksums
e82a89b570cc25227fd053384638aad66860fbe8a840a5f4a6c06dbb10810793
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.0

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

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