Skip to main content

prophy: fast serialization protocol

Project description

Pypi Package Version Supported Python Versions Documentation Status Coverage Status https://github.com/aurzenligl/prophy/workflows/test/badge.svg

Prophy is a statically typed, binary, tag-free, unpacked serialization protocol.

You can define message schema:

struct MyMsg
{
    u16 x<>;
};

generate codecs for chosen languages:

prophyc --python_out . --cpp_full_out . --cpp_out . test.prophy

and serialize data in Python:

>>> import test
>>> msg = test.MyMsg()
>>> msg.x[:] = [1, 2, 3]
>>> msg.encode('<')
'\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00'
>>> print msg
x: 1
x: 2
x: 3

in C++:

#include <iostream>
#include <iterator>
#include "test.ppf.hpp"

int main()
{
    prophy::generated::MyMsg msg{{1, 2, 3}};
    std::vector<uint8_t> data = msg.encode();
    std::copy(data.begin(), data.end(), std::ostream_iterator<unsigned>(std::cout, " "));
    std::cout << '\n' << msg.print();
    return 0;
}
3 0 0 0 1 0 2 0 3 0 0 0
x: 1
x: 2
x: 3

again in C++ (half hand-rolled, compiler-dependent, but fastest option):

#include <iostream>
#include <iterator>
#include <cstdlib>
#include "test.pp.hpp"

int main()
{
    MyMsg* msg = static_cast<MyMsg*>(std::malloc(12));
    msg->num_of_x = 3;
    msg->x[0] = 1;
    msg->x[1] = 2;
    msg->x[2] = 3;
    std::copy((uint8_t*)msg, ((uint8_t*)msg) + 12, std::ostream_iterator<unsigned>(std::cout, " "));
    std::cout << '\n';
    return 0;
}
3 0 0 0 1 0 2 0 3 0 0 0

Documentation: http://prophy.readthedocs.org

Issues: https://github.com/aurzenligl/prophy/issues

Download files

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

Source Distribution

prophy-1.2.5.tar.gz (178.5 kB view details)

Uploaded Source

Built Distribution

prophy-1.2.5-py2.py3-none-any.whl (78.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file prophy-1.2.5.tar.gz.

File metadata

  • Download URL: prophy-1.2.5.tar.gz
  • Upload date:
  • Size: 178.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for prophy-1.2.5.tar.gz
Algorithm Hash digest
SHA256 89a72102998eade68903270b0077167644861823ace8f03dc3204abb52b53474
MD5 7e5a59efd6c5a43816bbef0bf4c58a45
BLAKE2b-256 f10d28bdef9e28f4df58b2f45c15d45db88900bdd740f88c5bead7453764ca3b

See more details on using hashes here.

File details

Details for the file prophy-1.2.5-py2.py3-none-any.whl.

File metadata

  • Download URL: prophy-1.2.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 78.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for prophy-1.2.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 40d93f1a7e249a8ffec2a5cba948d8d858e0532e65b5e4b78bdc5764485f1176
MD5 e2eee220a5a8eb12ff1ac3facc8b19c6
BLAKE2b-256 5485b816fd36b4e7ce07cc30055bbc28ca8447b4af3dc7927eaf33c781d74fd8

See more details on using hashes here.

Supported by

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