Обновить README.md

This commit is contained in:
2025-07-12 01:03:01 +03:00
parent b63eee8740
commit aac0a97101

View File

@@ -1,2 +1,40 @@
# megasniff
### Автоматическая валидация данных по схеме и сборка объекта в одном флаконе
Как применять:
```python
# 1. Объявляем схемы
from __future__ import annotations
import dataclasses
import typing
@dataclasses.dataclass
class SomeSchema1:
a: int
b: float | str
c: SomeSchema2 | str | None
class SomeSchema2(typing.TypedDict):
field1: dict
field2: float
field3: typing.Optional[SomeSchema1]
# 2. Генерируем метод для валидации и сборки
import megasniff
infl = megasniff.SchemaInflatorGenerator()
fn = infl.schema_to_generator(SomeSchema1)
# 3. Проверяем что всё работает
fn({'a': 1, 'b': 2, 'c': {'field1': {}, 'field2': '1.1'}})
# SomeSchema1(a=1, b=2.0, c={'field1': {}, 'field2': 1.1, 'field3': None})
```
Особенности работы:
- поддерживает циклические зависимости
- проверяем `Union`-типы через ретрай на выбросе исключения
- по умолчанию использует готовый щаблон для кодогенерации и исполняет его по запросу, требуется особое внимание к сохранности данного шаблона
- не проверяет типы списков, словарей, кортежей (реализация ожидается)
- пользовательские проверки типов должны быть реализованы через наследование и проверки в конструкторе