Библиотека для работы с протоколом Protomorph от компании Galileosky
Project description
Protomorph Python Library
Библиотека для работы с протоколом Protomorph на Python.
Описание
Protomorph - это библиотека для сериализации/десериализации данных, работы с сетевыми пакетами и высокоуровневыми моделями данных в рамках протокола Protomorph.
Установка
pip install protomorph
Для разработки:
pip install protomorph[dev]
Для веб-интерфейса:
pip install protomorph[web]
Структура библиотеки
protomorph/
├── core/ # Базовые компоненты
│ ├── protocol/ # Константы и типы протокола
│ ├── serialization/ # Сериализация/десериализация
│ └── utils/ # Утилиты (CRC, хеши)
├── packets/ # Сетевые пакеты
│ ├── base/ # Базовые классы пакетов
│ └── messages/ # Конкретные типы пакетов
├── models/ # Высокоуровневые модели
│ ├── config/ # Модели конфигураций
│ └── converters/ # Конвертеры форматов
└── transport/ # Транспортный уровень
└── nats/ # NATS клиент
Быстрый старт
Работа с метаданными
from protomorph import Meta, Serializer
# Создание метаданных
meta = Meta("MyConfig")
meta.add_field("name", FieldType.STRING)
meta.add_field("value", FieldType.INT32)
# Данные
data = {"name": "test", "value": 42}
# Сериализация
binary_data = Serializer.serialize(meta, data)
# Десериализация
deserialized_data = Serializer.deserialize(meta, binary_data)
Работа с конфигурационными пакетами
from protomorph import ConfigPacket, ConfigType, AckStatus
# Создание пакета запроса
request = ConfigPacket(
type_val=ConfigType.GetConfig,
request_type=ConfigType.GetConfig,
uuid=b'\x00' * 16,
instance=0
)
# Упаковка пакета
packet_bytes = request.pack()
# Распаковка ответа
response = ConfigPacket.unpack(response_bytes)
Основные компоненты
Core
- Meta: Класс для работы с метаданными
- Serializer: Сериализация/десериализация данных
- FieldType: Типы полей данных
- CRC16/CRC32: Вычисление контрольных сумм
Packets
- ConfigPacket: Пакеты конфигураций
- AuthMessage: Пакеты аутентификации
- CommandPacket: Командные пакеты
Models
- Config: Высокоуровневая модель конфигурации
- meta_to_json/data_to_json: Конвертеры в JSON
Примеры использования
Device-Comm сервис
import asyncio
from protomorph import ConfigPacket, ConfigType, Meta, Serializer
async def handle_config_request(msg):
# Парсим запрос
request = ConfigPacket.unpack(msg.data)
if request.type == ConfigType.GetConfig:
# Получаем конфигурацию
config_data = await fetch_config_from_api(request.uuid)
# Создаем ответ
meta = Meta.unpack(config_data)
data = Serializer.deserialize(meta, config_data[len(meta.pack()):])
# Отправляем ответ
response = ConfigPacket(
type_val=ConfigType.ConfigAck,
request_type=ConfigType.GetConfig,
uuid=request.uuid,
instance=request.instance,
status=AckStatus.Success,
payload=config_data
)
await msg.respond(response.pack())
API сервис
from protomorph import Config, Meta
# Создание конфигурации из JSON
config = Config.from_dict(json_data)
# Вычисление хеша
config_hash = config.calculate_hash()
# Сериализация в бинарный формат
binary_data = config.serialize()
# Сохранение в объектное хранилище
await object_storage.save(config_hash, binary_data)
Разработка
Установка для разработки
git clone https://github.com/protomorph/protomorph-python.git
cd protomorph-python
pip install -e .[dev]
Запуск тестов
pytest
Форматирование кода
black .
flake8 .
mypy .
Лицензия
MIT License
Поддержка
- Документация: https://protomorph.readthedocs.io/
- Issues: https://github.com/protomorph/protomorph-python/issues
- Discussions: https://github.com/protomorph/protomorph-python/discussions
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file protomorph-0.1.1.tar.gz.
File metadata
- Download URL: protomorph-0.1.1.tar.gz
- Upload date:
- Size: 35.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7b6a6cc44bd8e7afa61d6b89506582c315bba9f2ddd5dfcb403170dbdc8b0a0
|
|
| MD5 |
8b3f51826cc7fd06421b10fa456f3b81
|
|
| BLAKE2b-256 |
64571b2139ee44528df8fa1bbc8a991d3cf1914809d27dd184a475af1e3a7418
|
File details
Details for the file protomorph-0.1.1-py3-none-any.whl.
File metadata
- Download URL: protomorph-0.1.1-py3-none-any.whl
- Upload date:
- Size: 41.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe67eb3ef362e572408c9ee981b39cdf5d9adfffe6aaaa48e0f4d4f382b67fd2
|
|
| MD5 |
a6a9295f99081dc7c9b652ad03866830
|
|
| BLAKE2b-256 |
a50b4e496f15a736bfe58991496d98cedb2fcb84b1a2cd2852c9681a0ded57f5
|