Metadata-Version: 2.4
Name: simpleworkernet
Version: 0.0.1b11
Summary: SDK-компонент для трансформации и типизации API-ответов сервера WorkerNet
Author-email: BusyBeaver <busybeaver.bb@gmail.com>
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0
Requires-Dist: typing-extensions>=4.5.0

## simpleworkernet
Высокопроизводительный Python клиент для REST API системы WorkerNet с интеллектуальной системой трансформации и типизации сложных JSON структур.

## 🌟 Особенности

### 🚀 SmartData Framework
SmartData — это специализированный SDK-компонент для обработки API-ответов сервера WorkerNet. Он превращает сырые, динамически типизированные JSON-данные сервера в строго типизированные объекты Python с поддержкой глубокого поиска и автоматической трансформации коллекций.

- Автоматическое приведение типов согласно аннотациям Python
- Сохранение метаданных о пути извлечения данных
- Глубокий поиск по любым уровням вложенности
- Fluent-интерфейс для фильтрации, сортировки и агрегации
- Поддержка экспорта/импорта (JSON, Pickle, Gzip)

### 🔧 BaseModel Engine
**BaseModel** - мощная система рекурсивного кастинга типов:
- Автоматическое преобразование данных в типизированные объекты
- Поддержка Union, Optional, List, вложенных моделей
- Постобработка и схлопывание избыточных структур
- Сериализация/десериализация с сохранением типов

## 📦 Установка
```bash
pip install simpleworkernet

```

## 🎨 Пример

```python
from simpleworkernet import WorkerNetClient, Where, Operator

wn = WorkerNetClient(host='my_wokernet_host', apikey='my_secret_apikey')

# Получаем каталог кабелей
catalog_cables = wn.Fiber.catalog_cables_get()
# Для получения оригинального ответа от сервера: категория - lower
# catalog_cables = wn.fiber.catalog_cables_get()

# Составление условий запроса:
cond = Where('cable_line_type_id',5), Where('fiber_count',[4,16],Operator.BETWEEN), Where('model','ОКА',Operator.LIKE)

# Cписок объектов Fiber.Catalog_cables_get по запросу
filtered_cables = catalog_cables.find_query(*cond)

```

## ✒️ Автор
 - [Андрей Литвинов](https://t.me/busy4beaver)
