A high-performance Python client for real-time management of XTables network tables, designed for robotics and complex data-driven systems.
Project description
# XTablesClient
`XTablesClient` is a Python client library for connecting to an XTABLES server, supporting both direct socket and ZeroMQ-based communication. This client provides methods for data operations on network tables and offers convenient functionality for interacting with robotic applications or distributed systems.
## Features
- **Flexible Initialization**: Connects to a server directly or discovers it via mDNS.
- **Data Operations**: Supports multiple data types (`Boolean`, `String`, `Integer`, `Float`, `Array`, `Class`, `Bytes`) for seamless data transmission.
- **ZeroMQ Support**: Configurable ZeroMQ PUSH/PULL and PUB/SUB communication for real-time message streaming.
- **Robust Connection Management**: Includes automatic reconnection and resubscription after disconnection.
- **Subscription**: Allows for subscriptions to data updates for specific keys, invoking consumer functions on updates.
## Installation
Install `xtables-client` from PyPI:
```bash
pip install xtables-client
Usage
Import and Initialization
from xtables_client import XTablesClient
# Initialize the client
client = XTablesClient(server_ip="192.168.1.10", server_port=1735, useZeroMQ=True)
Data Operations
-
Setting Values
- Boolean:
client.executePutBoolean("key", True) - String:
client.executePutString("key", "value") - Integer:
client.executePutInteger("key", 42) - Float:
client.executePutFloat("key", 3.14)
- Boolean:
-
Retrieving Values
- Get Integer:
value = client.getInteger("key") - Get String:
value = client.getString("key") - Get Float:
value = client.getFloat("key")
- Get Integer:
-
Subscriptions
- Subscribe to updates for a key and handle updates with a custom function:
def my_consumer(key, value): print(f"Update for {key}: {value}") client.subscribeForUpdates("key", my_consumer)
- Subscribe to updates for a key and handle updates with a custom function:
-
ZeroMQ Operations
- Push Data:
client.push_frame("identifier", "message") - Receive Next:
key, value = client.recv_next()
- Push Data:
Connection Management
- Reconnect: Automatic reconnection and re-subscription to previously subscribed keys.
- Shutdown: Gracefully shuts down the client connection.
client.shutdown()
Example
from xtables_client import XTablesClient
client = XTablesClient(useZeroMQ=True, server_port=1735)
client.subscribe("image")
while True:
key, value = client.recv_next()
if key is not None:
print(f"Received data for {key}: {value}")
License
This project is licensed under the MIT License.
This README provides a clear overview of the client’s capabilities, installation instructions, and usage examples to facilitate integration with any XTABLES server.
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
xtablesclient-1.5.tar.gz
(3.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xtablesclient-1.5.tar.gz.
File metadata
- Download URL: xtablesclient-1.5.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
760399c6ad3e52181dbde72cff4d2048c2d51235893ea1fae07a78131adc38bb
|
|
| MD5 |
ef774abebaa148150baf6d4cfacd06aa
|
|
| BLAKE2b-256 |
c83a05b5f91d49d46c2b45e03244a0268e79b025bb2fd121d299a29be9195013
|
File details
Details for the file XTablesClient-1.5-py3-none-any.whl.
File metadata
- Download URL: XTablesClient-1.5-py3-none-any.whl
- Upload date:
- Size: 2.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5eb7534501b5e23a943b233dcd71b09c7d714bf9bae38ca2e8954eb995518d38
|
|
| MD5 |
b49ccbd479f2fa0e9cb0dbd99d2fd773
|
|
| BLAKE2b-256 |
906828ad49cf7843cf7e98e24b7d5d594b8b758cc06eb2bb15bc5e5b1c0de67e
|