plexus-python 0.6.1__tar.gz → 0.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plexus_python-0.6.1 → plexus_python-0.6.2}/CHANGELOG.md +11 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/PKG-INFO +4 -5
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/__init__.py +1 -1
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/client.py +5 -5
- {plexus_python-0.6.1 → plexus_python-0.6.2}/pyproject.toml +7 -8
- {plexus_python-0.6.1 → plexus_python-0.6.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/.github/workflows/ci.yml +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/.github/workflows/publish.yml +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/.gitignore +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/AGENTS.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/API.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/CODE_OF_CONDUCT.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/CONTRIBUTING.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/LICENSE +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/README.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/SECURITY.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/.python-version +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/README.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/basic.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/can.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/i2c_bme280.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/mac_metrics.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/mavlink.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/mqtt.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/pyproject.toml +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/thermal_camera.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/examples/uv.lock +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/_log.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/buffer.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/cameras/__init__.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/cameras/thermal.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/cli.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/config.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/plexus/ws.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/scripts/plexus.service +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/scripts/release.sh +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/scripts/scan_buses.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/scripts/setup.sh +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/skills/plexus/SKILL.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/skills/plexus/references/api.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/skills/plexus/references/sdk.md +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_basic.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_buffer.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_config.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_retry.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_thermal.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_video.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/tests/test_ws.py +0 -0
- {plexus_python-0.6.1 → plexus_python-0.6.2}/uv.lock +0 -0
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.2] - 2026-05-28 - Dependency fix
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Replaced `opencv-python` with `opencv-python-headless` in the `[video]` extra —
|
|
8
|
+
headless is the correct choice for embedded/server use and avoids pulling in Qt/GUI
|
|
9
|
+
dependencies that don't belong on Raspberry Pi or headless Linux.
|
|
10
|
+
- Merged the `[thermal]` extra into `[video]`. OpenCV is needed for all video frame
|
|
11
|
+
encoding, not just thermal cameras. Install with `pip install plexus-python[video]`.
|
|
12
|
+
- Synced `plexus.__version__` with `pyproject.toml` (both now `0.6.2`).
|
|
13
|
+
|
|
3
14
|
## [0.6.1] - 2026-05-28 - Thermal camera streaming
|
|
4
15
|
|
|
5
16
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plexus-python
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Thin Python SDK for Plexus — send telemetry in one line
|
|
5
5
|
Project-URL: Homepage, https://plexus.dev
|
|
6
6
|
Project-URL: Documentation, https://docs.plexus.dev
|
|
@@ -24,15 +24,14 @@ Requires-Python: >=3.10
|
|
|
24
24
|
Requires-Dist: websocket-client>=1.7
|
|
25
25
|
Provides-Extra: dev
|
|
26
26
|
Requires-Dist: numpy>=1.24; extra == 'dev'
|
|
27
|
-
Requires-Dist: opencv-python>=4.8; extra == 'dev'
|
|
27
|
+
Requires-Dist: opencv-python-headless>=4.8; extra == 'dev'
|
|
28
28
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
29
29
|
Requires-Dist: pytest>=9.0.3; extra == 'dev'
|
|
30
30
|
Requires-Dist: ruff; extra == 'dev'
|
|
31
31
|
Requires-Dist: websockets>=12; extra == 'dev'
|
|
32
|
-
Provides-Extra: thermal
|
|
33
|
-
Requires-Dist: numpy>=1.24; extra == 'thermal'
|
|
34
|
-
Requires-Dist: opencv-python>=4.8; extra == 'thermal'
|
|
35
32
|
Provides-Extra: video
|
|
33
|
+
Requires-Dist: numpy>=1.24; extra == 'video'
|
|
34
|
+
Requires-Dist: opencv-python-headless>=4.8; extra == 'video'
|
|
36
35
|
Requires-Dist: pillow>=12.2.0; extra == 'video'
|
|
37
36
|
Description-Content-Type: text/markdown
|
|
38
37
|
|
|
@@ -10,5 +10,5 @@ Plexus — thin Python SDK for sending telemetry to the Plexus gateway.
|
|
|
10
10
|
from plexus.client import Plexus, read_mjpeg_frames
|
|
11
11
|
from plexus.ws import WebSocketTransport
|
|
12
12
|
|
|
13
|
-
__version__ = "0.
|
|
13
|
+
__version__ = "0.6.2"
|
|
14
14
|
__all__ = ["Plexus", "WebSocketTransport", "read_mjpeg_frames"]
|
|
@@ -483,8 +483,8 @@ class Plexus:
|
|
|
483
483
|
except ImportError as e:
|
|
484
484
|
if required:
|
|
485
485
|
raise ImportError(
|
|
486
|
-
"This frame type requires opencv-python. "
|
|
487
|
-
"Install with: pip install
|
|
486
|
+
"This frame type requires opencv-python-headless. "
|
|
487
|
+
"Install with: pip install plexus-python[video]"
|
|
488
488
|
) from e
|
|
489
489
|
return self._cv2
|
|
490
490
|
|
|
@@ -611,7 +611,7 @@ class Plexus:
|
|
|
611
611
|
|
|
612
612
|
Raises:
|
|
613
613
|
PlexusError: If transport is not 'ws'.
|
|
614
|
-
ImportError: If opencv-python is not installed.
|
|
614
|
+
ImportError: If opencv-python-headless is not installed.
|
|
615
615
|
"""
|
|
616
616
|
if self.transport != "ws":
|
|
617
617
|
raise PlexusError("send_thermal_frame requires transport='ws'")
|
|
@@ -620,8 +620,8 @@ class Plexus:
|
|
|
620
620
|
from plexus.cameras.thermal import build_thermal_frame
|
|
621
621
|
except ImportError as e:
|
|
622
622
|
raise ImportError(
|
|
623
|
-
"send_thermal_frame requires opencv-python. "
|
|
624
|
-
"Install with: pip install
|
|
623
|
+
"send_thermal_frame requires opencv-python-headless. "
|
|
624
|
+
"Install with: pip install plexus-python[video]"
|
|
625
625
|
) from e
|
|
626
626
|
|
|
627
627
|
frame = build_thermal_frame(temps, timestamp_ms=self._normalize_ts_ms(timestamp))
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "plexus-python"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.2"
|
|
8
8
|
description = "Thin Python SDK for Plexus — send telemetry in one line"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -30,13 +30,12 @@ dependencies = [
|
|
|
30
30
|
]
|
|
31
31
|
|
|
32
32
|
[project.optional-dependencies]
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
dev = ["pytest>=9.0.3", "pytest-cov", "ruff", "websockets>=12", "opencv-python>=4.8", "numpy>=1.24"]
|
|
33
|
+
# Video/camera support: frame encoding, thermal cameras, etc.
|
|
34
|
+
# I2C thermal sensors additionally need a board-specific driver installed
|
|
35
|
+
# separately on the device (e.g. adafruit-circuitpython-mlx90640 — requires
|
|
36
|
+
# Raspberry Pi hardware libs and doesn't install on other platforms).
|
|
37
|
+
video = ["Pillow>=12.2.0", "opencv-python-headless>=4.8", "numpy>=1.24"]
|
|
38
|
+
dev = ["pytest>=9.0.3", "pytest-cov", "ruff", "websockets>=12", "opencv-python-headless>=4.8", "numpy>=1.24"]
|
|
40
39
|
|
|
41
40
|
[project.scripts]
|
|
42
41
|
plexus = "plexus.cli:main"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|