Metadata-Version: 2.4
Name: bl-seth
Version: 0.3.0
Summary: Setting management library
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Author: Tanguy Le Carrour
Author-email: tanguy@bioneland.org
Requires-Python: <4.0,>=3.10
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: all
Requires-Dist: jedi (>=0.20.0,<0.21.0) ; extra == "all"
Description-Content-Type: text/markdown

# Seth

A setting management library. By grouping all your application settings in one class,
it's easier to document.

First, define a class for your settings. It must be a `dataclass` (or even better,
a frozen `dataclass`) and inherit from `seth.Settings`.

```python
from dataclasses import dataclass
from typing import Optional

from bl_seth import Settings

@dataclass
class MySettings(Settings):
    MANDATORY: str
    "A mandatory string."
    
    DEFAULT: str = "default"
    """A string that defaults to '"default"'."""

    INTEGER: int = 1
    "An integer that defaults to '1'."

    OPTIONAL: Optional[str] = None
    "An optional value."
```

Then instantiate it using its `from_dict` class method. Most probably, the dictionary
is built from the environment.

```python
import os

settings = MySettings.from_dict(os.environ)
```

You can now directly access its attributes.

```python
settings.DEFAULT == "default"
settings.OPTIONAL is None
```

You can display the documentation for a setting class from the command line:

```sh
seth bl_seth.utils:DemoSettings
```

`jedi` needs to be available for variable documentation to be displayed. This can be done by installing `seth[all]` or `jedi` separately.

