A lightweight way to find the project root and load config
Project description
fastconfig
A lightweight way to find the project root and load config in python3.
current support is [3.9
, 3.10
, 3.11
].
This library provides two functionalities:
- A function to search for files while traversing up to the project root.
fastconfig.find_project_root
fastconfig.is_project_root
fastconfig.search
- A function to directly build a class from a configuration file.
fastconfig.config.FastConfig
build
to_dict
Install
pip install fastconfig
Usage
example.json
{
"setting_path": "setting_path",
"section": {
"numeric": 42
}
}
other.toml
setting_path = "setting_path"
[section]
numeric = 24
# main.py
import fastconfig
from fastconfig.config import FastConfig, fc_field
from fastconfig.exception import FastConfigError
from dataclasses import field, dataclass
@dataclass
class Config(FastConfig):
result: int = fc_field(key="section.numeric", default=-1)
# If metadata does not exist, it is searched by variable name
setting_path: str = fc_field(default="default")
# Type checking is done based on the type of dataclass. Type checking is recursive.
dic: dict[str, int] = fc_field(key="section", default_factory=dict)
if path := fastconfig.search("example.json"):
try:
# build instance
config = Config.build(path)
assert config == Config(
result=42, setting_path="setting_path", dic={"numeric": 42}
)
except FastConfigError:
raise RuntimeError
else:
config = Config()
if other_path := fastconfig.search("other.toml"):
# can update config
config = Config.build(other_path, config)
assert config == Config(result=24, setting_path="setting_path", dic={"numeric": 24})
Motivation
In many projects, it is common to write configuration files, read them in code, and build Config classes. I created this library to enable these functions to be implemented by simply defining a class and specifying a file name (such as pyproject.toml).
Contribution
If you have suggestions for features or improvements to the code, please feel free to create an issue first.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fastconfig-0.2.0.tar.gz
.
File metadata
- Download URL: fastconfig-0.2.0.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.10 Darwin/22.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2ac6c982fa3b1a554208b711d59d22da35e605d0de689d9857ced8ee3cbd6f4 |
|
MD5 | 121f1d98d7328727f65d8f5ed1e33dea |
|
BLAKE2b-256 | 2f92b7658069b89524d74df3832b798e67ba27261026de63c67c74cffe310f04 |
File details
Details for the file fastconfig-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: fastconfig-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.10 Darwin/22.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f37515044a6dcb14a6033d1bcc75d90678dbe879ecb0220c20d32593229f6643 |
|
MD5 | 20958c1f292fab80195b53494323d8fe |
|
BLAKE2b-256 | 54888b07cdb2ef8f99c60944b3d9dbe7f6a8d224af2089a3ec81ae94c469c9ac |