A Sans-I/O Python client library for Brultech Devices
Project description
What is siobrultech-protocols?
This library is a collection of protcols that decode various packet formats from Brultech Research.
What is Sans-I/O?
Sans-I/O is a philosophy for developing protocol processing libraries in which the library does not do any I/O. Instead, a user of the library is responsible for transferring blocks of bytes between the socket or pipe and the protocol library, and for receiving application-level protocol items from and sending them to the library. This obviously makes a sans-I/O library a little more difficult to use, but comes with the advantage that the same library can be used with any I/O and concurrency mechanism: the same library should be usable in a single-request-at-a-time server, a process-per-request or thread-per-request blocking server, a server using select/poll and continuations, or a server using asyncio, Twisted, or any other asynchronous framework.
See SansIO for more information.
Installation
pip install siobrultech-protocols
Usage
import functools
from siobrultech_protocols.gem.protocols import PacketProtocol
# Queue to get recieved packets from.
queue = asyncio.Queue()
# Pass this Protocol to whatever recieves data from the device.
protocol_factory = functools.partial(PacketProtocol, queue=queue)
Take a look at some usage examples from libraries that use this.
Development
Setup
python3.9 -m venv .venv
source .venv/bin/activate
# Install Requirements
pip install -r requirements.txt
# Install Dev Requirements
pip install -r requirements-dev.txt
# One-Time Install of Commit Hooks
pre-commit install
Testing
Tests are run with pytest
.
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
Hashes for siobrultech-protocols-0.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f39c5d47ed7bba25cd5da7f27315513e71134213c0b9962c978e80f8bb5f7c6 |
|
MD5 | 21c84b4c855f702514a733606b7ca7e4 |
|
BLAKE2b-256 | ff9548ccb0fca650f5e3d64b0165fa3e8ab039efec88b7d98c393c90b7cd53ba |
Hashes for siobrultech_protocols-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b122ea19dad3d25aa57cf1f7ca5e019755eab456cc012a42bcb47e6d49d6817 |
|
MD5 | 7b3247d12f116cd9bf922c020e6e7685 |
|
BLAKE2b-256 | 6eef671603cc7e1c901c9e7679535e72e3c7d0ea398621783a188ec2244176da |