plexus-python 0.9.0__tar.gz → 0.9.1__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.
Files changed (49) hide show
  1. {plexus_python-0.9.0 → plexus_python-0.9.1}/.github/workflows/publish.yml +17 -3
  2. {plexus_python-0.9.0 → plexus_python-0.9.1}/CHANGELOG.md +11 -0
  3. {plexus_python-0.9.0 → plexus_python-0.9.1}/PKG-INFO +1 -1
  4. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/__init__.py +1 -1
  5. {plexus_python-0.9.0 → plexus_python-0.9.1}/pyproject.toml +1 -1
  6. {plexus_python-0.9.0 → plexus_python-0.9.1}/scripts/release.sh +13 -0
  7. {plexus_python-0.9.0 → plexus_python-0.9.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  8. {plexus_python-0.9.0 → plexus_python-0.9.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  9. {plexus_python-0.9.0 → plexus_python-0.9.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  10. {plexus_python-0.9.0 → plexus_python-0.9.1}/.github/workflows/ci.yml +0 -0
  11. {plexus_python-0.9.0 → plexus_python-0.9.1}/.gitignore +0 -0
  12. {plexus_python-0.9.0 → plexus_python-0.9.1}/AGENTS.md +0 -0
  13. {plexus_python-0.9.0 → plexus_python-0.9.1}/API.md +0 -0
  14. {plexus_python-0.9.0 → plexus_python-0.9.1}/CODE_OF_CONDUCT.md +0 -0
  15. {plexus_python-0.9.0 → plexus_python-0.9.1}/CONTRIBUTING.md +0 -0
  16. {plexus_python-0.9.0 → plexus_python-0.9.1}/LICENSE +0 -0
  17. {plexus_python-0.9.0 → plexus_python-0.9.1}/README.md +0 -0
  18. {plexus_python-0.9.0 → plexus_python-0.9.1}/SECURITY.md +0 -0
  19. {plexus_python-0.9.0 → plexus_python-0.9.1}/TODO.md +0 -0
  20. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/.python-version +0 -0
  21. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/README.md +0 -0
  22. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/basic.py +0 -0
  23. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/can.py +0 -0
  24. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/i2c_bme280.py +0 -0
  25. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/mac_metrics.py +0 -0
  26. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/mavlink.py +0 -0
  27. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/mqtt.py +0 -0
  28. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/pyproject.toml +0 -0
  29. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/thermal_camera.py +0 -0
  30. {plexus_python-0.9.0 → plexus_python-0.9.1}/examples/uv.lock +0 -0
  31. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/_log.py +0 -0
  32. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/buffer.py +0 -0
  33. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/cameras/__init__.py +0 -0
  34. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/cameras/thermal.py +0 -0
  35. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/cli.py +0 -0
  36. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/client.py +0 -0
  37. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/config.py +0 -0
  38. {plexus_python-0.9.0 → plexus_python-0.9.1}/plexus/ws.py +0 -0
  39. {plexus_python-0.9.0 → plexus_python-0.9.1}/scripts/plexus.service +0 -0
  40. {plexus_python-0.9.0 → plexus_python-0.9.1}/scripts/scan_buses.py +0 -0
  41. {plexus_python-0.9.0 → plexus_python-0.9.1}/scripts/setup.sh +0 -0
  42. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_basic.py +0 -0
  43. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_buffer.py +0 -0
  44. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_config.py +0 -0
  45. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_retry.py +0 -0
  46. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_thermal.py +0 -0
  47. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_video.py +0 -0
  48. {plexus_python-0.9.0 → plexus_python-0.9.1}/tests/test_ws.py +0 -0
  49. {plexus_python-0.9.0 → plexus_python-0.9.1}/uv.lock +0 -0
@@ -30,10 +30,24 @@ jobs:
30
30
  match = re.search(r'^version\s*=\s*\"(.+?)\"', f.read(), re.MULTILINE)
31
31
  print(match.group(1))
32
32
  ")
33
- echo "Git tag version: $TAG"
34
- echo "Code version: $CODE_VERSION"
33
+ INIT_VERSION=$(python -c "
34
+ import re
35
+ with open('plexus/__init__.py') as f:
36
+ match = re.search(r'^__version__\s*=\s*\"(.+?)\"', f.read(), re.MULTILINE)
37
+ print(match.group(1))
38
+ ")
39
+ echo "Git tag version: $TAG"
40
+ echo "pyproject.toml: $CODE_VERSION"
41
+ echo "plexus/__init__.py: $INIT_VERSION"
35
42
  if [ "$TAG" != "$CODE_VERSION" ]; then
36
- echo "::error::Tag v$TAG does not match code version $CODE_VERSION"
43
+ echo "::error::Tag v$TAG does not match pyproject.toml version $CODE_VERSION"
44
+ exit 1
45
+ fi
46
+ # 0.9.0 shipped to PyPI with __version__ still reading 0.8.0: the CI
47
+ # job that checks this does not gate publish, and this job only read
48
+ # pyproject.toml. Check it here, where it can actually stop an upload.
49
+ if [ "$TAG" != "$INIT_VERSION" ]; then
50
+ echo "::error::Tag v$TAG does not match plexus/__init__.py version $INIT_VERSION"
37
51
  exit 1
38
52
  fi
39
53
 
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.1] - 2026-08-27 - Version sync
6
+
7
+ ### Fixed
8
+
9
+ - `plexus.__version__` reported `0.8.0` in the 0.9.0 release. The release script
10
+ and the publish workflow both validated `pyproject.toml` only; the CI job that
11
+ compares the two version sites does not gate publishing, so it failed after the
12
+ upload had already gone out. Both gates now check `plexus/__init__.py` too.
13
+ 0.9.0 is functionally identical to this release — only the reported version
14
+ string was wrong.
15
+
5
16
  ## [0.9.0] - 2026-08-27 - Flexible values and the real slug rule
6
17
 
7
18
  Two fixes for data that looked like it was sent but never arrived, plus the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: plexus-python
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Summary: Thin Python SDK for Plexus — send telemetry in one line
5
5
  Project-URL: Homepage, https://plexus.company
6
6
  Project-URL: Documentation, https://docs.plexus.company
@@ -10,5 +10,5 @@ Plexus — thin Python SDK for sending telemetry to the Plexus gateway.
10
10
  from plexus.client import AuthenticationError, Plexus, PlexusError, read_mjpeg_frames
11
11
  from plexus.config import RetryConfig
12
12
 
13
- __version__ = "0.8.0"
13
+ __version__ = "0.9.1"
14
14
  __all__ = ["AuthenticationError", "Plexus", "PlexusError", "RetryConfig", "read_mjpeg_frames"]
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "plexus-python"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "Thin Python SDK for Plexus — send telemetry in one line"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -31,6 +31,19 @@ if [[ "$CODE_VERSION" != "$VERSION" ]]; then
31
31
  exit 1
32
32
  fi
33
33
 
34
+ # plexus/__init__.py carries its own __version__, and it is what users read
35
+ # back when you ask them what they are running. Keep it in lockstep.
36
+ INIT_VERSION=$(python3 -c "
37
+ import re
38
+ with open('plexus/__init__.py') as f:
39
+ m = re.search(r'^__version__\s*=\s*\"(.+?)\"', f.read(), re.MULTILINE)
40
+ print(m.group(1))
41
+ ")
42
+ if [[ "$INIT_VERSION" != "$VERSION" ]]; then
43
+ echo "Error: plexus/__init__.py has version $INIT_VERSION, expected $VERSION" >&2
44
+ exit 1
45
+ fi
46
+
34
47
  # Extract release title suffix (the part after the date, e.g. "Video input broadening and wire safety")
35
48
  TITLE_SUFFIX=$(grep "## \[$VERSION\]" CHANGELOG.md | sed 's/.*[0-9] - //')
36
49
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes