A Python client library for PlotJuggling JSON UDP API
Project description
PyPlotJuggling
PyPlotJuggling is a Python library for sending data over UDP, with a focus on providing analytics about the data transmission. It's designed to be used in applications where you need to stream data to a remote endpoint and monitor the performance of the data transfer.
Installation
You can install PyPlotJuggling using pip:
pip install pyplotjuggling
Usage
The main component of PyPlotJuggling is the PortJugglerClient, which is used to send data to a specified IP address and port. It also provides analytics about the data being sent.
Basic Usage
Here's a simple example of how to use PortJugglerClient:
from PyPlotJuggling import PortJugglerClient, PJData
import time
# Create a client
client = PortJugglerClient("127.0.0.1", 12345)
# Send some data
for i in range(10):
data = PJData(values={"value": i})
client.send(data)
time.sleep(0.1)
# Close the client
client.close()
Analytics
PortJugglerClient can provide analytics about the data being sent. There are four analytics modes, which can be set using the analytics parameter in the constructor:
AnalyticsMode.OFF: No analytics are collected. This is the default.AnalyticsMode.BASIC: Basic analytics are collected, but not sent with the data. You can get the analytics by calling theget_analytics()method.AnalyticsMode.IN_JUGGLER: The analytics data is included in the data sent to the remote endpoint. The analytics data is added to thevaluesdictionary of thePJDataobject, under the key "analytics".AnalyticsMode.PERIODIC: Analytics are logged periodically to the console. The interval can be set with theperiodic_intervalparameter.
Here's an example of how to use the IN_JUGGLER analytics mode:
from PyPlotJuggling import PortJugglerClient, PJData, AnalyticsMode
import time
# Create a client with IN_JUGGLER analytics mode
client = PortJugglerClient("127.0.0.1", 12345, analytics=AnalyticsMode.IN_JUGGLER)
# Send some data
for i in range(10):
data = PJData(values={"value": i})
client.send(data)
time.sleep(0.1)
# Close the client
client.close()
Analytics Data
The analytics data is provided as an AnalyticsModel object, which has the following fields:
num_values: The number of values in the last sentPJDataobject.frequency: The momentary frequency of messages sent, in Hz.duration: The total duration of the client's life, in seconds.rate: The momentary rate of data sent, in bytes per second.ow_warning: A boolean that is set toTrueif theanalyticskey is already present in thePJDataobject'svaluesdictionary when usingIN_JUGGLERmode.window_size: The size of the analytics window in seconds.
Periodic Analytics with Callback
When using AnalyticsMode.PERIODIC, you can also provide a callback function to process the analytics data.
from PyPlotJuggling import PortJugglerClient, PJData, AnalyticsMode, AnalyticsModel
import time
def my_analytics_callback(analytics: AnalyticsModel):
print(f"Custom callback: {analytics.frequency:.2f} Hz")
# Create a client with a callback
client = PortJugglerClient(
"127.0.0.1",
12345,
analytics=AnalyticsMode.PERIODIC,
periodic_interval=1.0,
analytics_callback=my_analytics_callback
)
# Send data for a few seconds
for i in range(50):
data = PJData(values={"value": i})
client.send(data)
time.sleep(0.1)
client.close()
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
License
This project is licensed under the terms of the LICENSE file.
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
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 pyplotjuggling-1.0.0.tar.gz.
File metadata
- Download URL: pyplotjuggling-1.0.0.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6600d2077ae2deaa8e284fab584cbc5b8f24d8e5b96c52e80d1a50b5c43d785f
|
|
| MD5 |
fadac7c5031afceb5610db86da1a51d5
|
|
| BLAKE2b-256 |
b367f133b0a8ba622a92ab6228e0b28ec45140268dae3740e1241fc31cfd7224
|
File details
Details for the file pyplotjuggling-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pyplotjuggling-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03dd04b52f4e5ce7afc317cabd02918c762ca0169d757c24caca52d61b6500ac
|
|
| MD5 |
1e49c7fdb9993e0dec0cd488ce0e4292
|
|
| BLAKE2b-256 |
77d173a8b078a1229ee5ca1ff86b0fa4c9a75ed9f6de01cfd98997ea515b5631
|