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.1.tar.gz (35.2 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.1-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

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

Hashes for protomorph-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e7b6a6cc44bd8e7afa61d6b89506582c315bba9f2ddd5dfcb403170dbdc8b0a0
MD5 8b3f51826cc7fd06421b10fa456f3b81
BLAKE2b-256 64571b2139ee44528df8fa1bbc8a991d3cf1914809d27dd184a475af1e3a7418

See more details on using hashes here.

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

Hashes for protomorph-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe67eb3ef362e572408c9ee981b39cdf5d9adfffe6aaaa48e0f4d4f382b67fd2
MD5 a6a9295f99081dc7c9b652ad03866830
BLAKE2b-256 a50b4e496f15a736bfe58991496d98cedb2fcb84b1a2cd2852c9681a0ded57f5

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