Metadata-Version: 2.4
Name: schemavault
Version: 4.1.1
Summary: Hierarchical schema validation with asset management and configuration defaults
Home-page: https://github.com/afedorov-dev/schemavault
Author: Artem Fedorov
Author-email: afedorov-dev@proton.me
License: MIT
Keywords: schema validation config endpoint mapping defaults assets
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
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: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: bytekit
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# schemavault

Hierarchical schema validation with asset management and configuration defaults for Python services.

## Installation

```bash
pip install schemavault
```

## Usage

```python
import schemavault

# Validate endpoint configurations
err = schemavault.validate('endpoint', {'url': '/api/v1/users', 'method': 'GET'})
if err:
    raise ValueError(err)

# Build URLs with query parameters
url = schemavault.build_url('https://api.example.com', 'users', {'page': '2'})

# Merge header dictionaries
headers = schemavault.merge_headers(
    {'Accept': 'application/json'},
    {'Authorization': 'Bearer token123'}
)

# Get registry defaults
defaults = schemavault.get_defaults()
print(defaults['timeout'])  # 60000
print(defaults['retries'])  # 5

# Normalize endpoint configuration
normalized = schemavault.normalize_endpoint({
    'url': '  /api/users  ',
    'method': 'get',
    'timeout': '5000'
})
```

## Features

- Schema validation for REST endpoint configurations
- URL building with path and query parameter support
- Header merging and normalization
- Asset management with embedded metadata support
- Configuration defaults with transport presets
- Schema diffing and flattening utilities

## API

- `validate(schema_name, obj)` â€” validate against named schema
- `validate_url(url)` / `validate_method(method)` / `validate_headers(headers)`
- `build_url(base, path, query)` â€” construct URL
- `merge_headers(base, extra)` â€” merge header dicts
- `normalize_endpoint(config)` â€” normalize endpoint config
- `schema_diff(old, new)` / `flatten(obj)` / `unflatten(flat)`
- `get_defaults()` / `get_registry(key)`

## License

MIT
