pyplexo
pyplexo is the Python implementation of plexo. It aims to be an opinionated, reactive, schema-driven, distributed, and strongly-typed message passing framework with messages as types. Any type of data interchange format is supported and can be transmitted both to in-process and inter-process listeners.
plexo
plexo is an architecture in which data is transmitted across the network in a way where the receiver is able to understand the correct type to decode the data into. It does so by assigning type names to a predefined namespace to create a topic for receivers to subscribe to.
While plexo is relatively stable and in production use between Python and Rust ( see podping.cloud and podping-hivewriter), the paradigm remains experimental. Contributions and suggestions are encouraged.
Why does this exist?
The goal of the project is to allow data structures to be shared across the network by their type instead of server endpoints. plexo implementations receive data structures and sends them to any interested parties subscribed to the data structure's type.
It was originally created and developed for a tiny sake brewing operation. The development of this project enabled us to plug in new hardware sensors and data logging devices without the need to reconfigure multiple projects across a variety of hardware.
This was born out of a frustration of spending too much time writing data transformation and validation layers with unstructured and/or weakly typed data (JSON without schemas) across multiple languages. plexo tries to solve this problem without controlling the entire stack while avoiding protocol implementation details such as HTTP "REST" APIs.
Examples
Check the examples for how to use the library -- particularly axon/inprocess for multiple examples of codec options and axon/tcp_pair for an example of how to send a python class between two networked python processes with pickle or JSON. Note that, while supplying the pickle codec is required, the plexus is smart enough to avoid the expensive process of encoding/decoding for in-process receivers; codecs are only used for external transmission where serialization is required.
ganglion/plexo_multicast provides a basic example of sending a python class
across the network over multicast. Each type in is assigned a dedicated multicast address within the 239.255.0.0/16
CIDR block as a means to provide generalized, zero configuration network communication without saturating a single
socket with unnecessary traffic. An adaptation of the Paxos consensus algorithm is used for the network to agree on
which type is assign to which multicast group.
Metadata
Release files for plexo 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| plexo-1.0.0.tar.gz | 24.9 kB | Without provenance | Details for plexo-1.0.0.tar.gz |
Built distributions (wheels)
Total release size: 10.2 MB
Release files / plexo-1.0.0.tar.gz
| Download URL | plexo-1.0.0.tar.gz |
|---|---|
| Size | 24.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d44d7079cf1fd67fe3f94c53afa8eb7c48b6edc518f5754687d3a7e5c55cc2fa
|
|
BLAKE2b-256 checksum How to use checksums |
8ed21c8ae838232da6cc20b40796f0e247efa3bb6893a2d44f46e4d27d074add
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-py3-none-any.whl
| Download URL | plexo-1.0.0-py3-none-any.whl |
|---|---|
| Size | 81.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b3b53cc23acba3fa400e9b510c11545c76e16032fc9aa0852dd7ca50ab9c9d27
|
|
BLAKE2b-256 checksum How to use checksums |
2452713f0d57c5e255329263f1f9f261fb36def5ec8798c4c09c76af4bf51cad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl
| Download URL | plexo-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
38b66e4141e9640c6d9d775c90673dc9866748704fc698be1264650b8efe7bd7
|
|
BLAKE2b-256 checksum How to use checksums |
33b61faf8ac62d5bf9bab0da6f08f37f70e544ca2801cf25656f8ed65896d5b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | plexo-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
a73ed4c99cc8d29f30599cd4ab44a12c9ad3edeac84ddc6d36c1c8ec5163eb42
|
|
BLAKE2b-256 checksum How to use checksums |
836758ced0cb1ebce32985d6cf1082467297dd9d625e427a04464e22fa0a1876
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl
| Download URL | plexo-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
0defff9c6a6fe0771ad73b99541927b420a5e84da1e4c073fc899ac5c4e91e79
|
|
BLAKE2b-256 checksum How to use checksums |
4ab5e382e9bc92c628c006401f098567a526a55c376cd2812ba75bae82c26877
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | plexo-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
88ab3823e471356ad4dcee955a70fe14147d5c0efa03521f78d2868429bb6455
|
|
BLAKE2b-256 checksum How to use checksums |
d55a2dbb5a171c2acc1fd5e59661222019ed37e443c5e415d90080836a8f261a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl
| Download URL | plexo-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
71a06af92a7fa148967f71fcc3306c1d7f230808d1ab299ee9660104dc391fec
|
|
BLAKE2b-256 checksum How to use checksums |
859064a1cbc65fd3b06b5581abefa3800d89c0aeab5cbead1ed91813d29408f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / plexo-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | plexo-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
ca1b2324a8e8de2279ba3c52b615a93fd940605e33a5b126c497d55ec73ec11b
|
|
BLAKE2b-256 checksum How to use checksums |
1943b2899f9560e8daf85b77d20f053859d2fcfb406a059493ad31d1a9af4148
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Security for plexo 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.