Metadata-Version: 2.3
Name: nshconfig
Version: 0.54.1
Summary: Fully typed configuration management, powered by Pydantic
Author: Nima Shoghi
Author-email: Nima Shoghi <nimashoghi@gmail.com>
Requires-Dist: pydantic>=2
Requires-Dist: typing-extensions
Requires-Dist: eval-type-backport ; python_full_version < '3.10'
Requires-Dist: treescope ; python_full_version >= '3.10' and extra == 'all'
Requires-Dist: pydantic-yaml ; extra == 'all'
Requires-Dist: tomli ; extra == 'all'
Requires-Dist: tomli-w ; extra == 'all'
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: myst-parser ; extra == 'docs'
Requires-Dist: sphinx-copybutton ; extra == 'docs'
Requires-Dist: treescope ; python_full_version >= '3.10' and extra == 'extra'
Requires-Dist: pydantic-yaml ; extra == 'extra'
Requires-Dist: tomli ; extra == 'extra'
Requires-Dist: tomli-w ; extra == 'extra'
Requires-Dist: tomli ; extra == 'toml'
Requires-Dist: tomli-w ; extra == 'toml'
Requires-Dist: pydantic-yaml ; extra == 'yaml'
Requires-Python: >=3.9, <4.0
Project-URL: homepage, https://github.com/nimashoghi/nshconfig
Provides-Extra: all
Provides-Extra: docs
Provides-Extra: extra
Provides-Extra: toml
Provides-Extra: yaml
Description-Content-Type: text/markdown

# nshconfig

Fully typed configuration management, powered by [Pydantic](https://github.com/pydantic/pydantic/).

**[📚 Documentation](https://nima.sh/nshconfig/) | [🔧 Installation Guide](https://nima.sh/nshconfig/installation.html)**

## Overview

`nshconfig` is a Python library that enhances Pydantic with additional features for configuration management, particularly useful for machine learning experiments and other applications requiring strongly typed configurations.

## Installation

```bash
pip install nshconfig
```

To install all optional dependencies, use:

```bash
pip install nshconfig[extra]
```

Please see the [Installation Guide](https://nima.sh/nshconfig/installation.html) for more details.

## Quick Start

```python
import nshconfig as C

class MyConfig(C.Config):
    field1: int
    field2: str
    field3: C.AllowMissing[float] = C.MISSING

config = MyConfig.draft()
config.field1 = 42
config.field2 = "hello"
final_config = config.finalize()
```

## Key Features

- **Draft configs** for intuitive configuration creation
- **Singleton pattern** support (both descriptor and global styles)
- **Multiple configuration formats** (Python, JSON, YAML)
- **Dynamic type registry** for plugin systems
- **Configuration code generation** tools
- **Built-in PyTorch Lightning integration**
- **MISSING constant** for optional fields

For detailed examples and API reference, please visit the [documentation](https://nima.sh/nshconfig/).

## Contributing

Contributions are welcome! Please see our [Contributing Guide](https://nima.sh/nshconfig/contributing.html) for details.

## Credit

Built on top of the excellent [pydantic](https://github.com/pydantic/pydantic/) library.

## License

MIT License
