Skip to main content

Библиотека для работы с протоколом 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

Поддержка

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

protomorph-0.1.2.tar.gz (35.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

protomorph-0.1.2-py3-none-any.whl (41.6 kB view details)

Uploaded Python 3

File details

Details for the file protomorph-0.1.2.tar.gz.

File metadata

  • Download URL: protomorph-0.1.2.tar.gz
  • Upload date:
  • Size: 35.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for protomorph-0.1.2.tar.gz
Algorithm Hash digest
SHA256 665f6589d53dc16601b96a09c8e1e1db1e601863cde426265e16253b63bd9616
MD5 c69eb85aa560246b828f8d55be518aad
BLAKE2b-256 3a62d4c4b3344862c2ae35b18c4454c57782aa743f9ccc8e794ad3aab0904676

See more details on using hashes here.

File details

Details for the file protomorph-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: protomorph-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 41.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for protomorph-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5ff9cd026183986b71a0585f9c2b32ad99b7788e1e24a97462f91f295f4eea8f
MD5 704f6410d02c6f68433fd2dd30f59666
BLAKE2b-256 31e899a096fbdcb2930db4dad24a54c0948c032ed4ebf0080c596b07aa1a4fb8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page