Repository navigation
Drop Python 3.10 and update dependencies, Pillow 13 among them - #119
Merged
Merged
Conversation
Pillow 12.1.1, which the ~= pin held every consumer to, has five Critical CVEs fixed in 13.0.0 (heap overflows in the TIFF, FPX and JPEG codecs, Ghostscript argument injection, stale multi-frame storage). Pillow 13 requires Python 3.11, so 3.10 goes from python_requires, the classifiers, tox and both CI matrices; the publish job builds on 3.13. Runtime requirements become ranges up to the next major instead of ~= pins, so a consumer's lockfile can take fixes without waiting for an SDK release: - pillow >=13.0,<14 - protobuf >=5.29.6,<8 (the generated module loads on 7 unchanged) - rdp2 >=1.1.2,<2 - opencv-python-headless (video extra) up to <6 - pyaml replaced by PyYAML >=6.0,<7: the SDK only ever imported yaml, which pyaml merely pulled in - OpenTelemetry 1.45 / exporter 0.66b2 (telemetry extra) Dev tools move to their current releases (black 26.10, pytest 9, coverage 7.17, flake8 7.5, tox 4.67, twine 7, setuptools 84). tox gets an explicit [gh-actions] mapping and py311..py313 env names. Tests: flake8, black --check and the 184 unit tests pass on 3.11, 3.12 and 3.13 with the newest versions, and on 3.11 with the floors (protobuf 5.29.6, opencv 4.9, rdp2 1.1.2, pydantic 2.6.4, requests 2.31). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
leandropineda
approved these changes
Nov 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Your checklist for this pull request
🚨Please review the guidelines for contributing to this repository.
Description
Drops Python 3.10 and updates the dependencies, to be released as 3.5.0 in a follow-up
Bump version: 3.4.0 → 3.5.0PR.Why.
pillow~=12.1.1held every consumer on Pillow 12.1.x, which has five Critical CVEs fixed in 13.0.0 (Dependabot alert #64). Consumers cannot take the fix today without overriding the SDK's pin. Pillow 13 requires Python 3.11, hence dropping 3.10.Runtime requirements become ranges up to the next major, instead of
~=pins, so a consumer's lockfile can take patch and minor fixes without waiting for an SDK release.~=12.1.1>=13.0,<14~=5.29.6>=5.29.6,<8inorbit_pb2.pyloads on 7 unchanged, no warnings~=1.1.2>=1.1.2,<2>=23.12,<24PyYAML>=6.0,<7yaml; pyaml just pulled PyYAML in>=4.9,<5>=4.9,<6resize,imencodeandVideoCaptureunchanged in 5~=1.41.0~=1.45.2~=0.62b0~=0.66b2requests, paho-mqtt, pydantic, pysocks, certifi and prometheus-client keep their ranges, which already allow the current releases.
Dev tools: black 26.10, pytest 9.2, pytest-mock 3.17, coverage 7.17, flake8 7.5, tox 4.67, twine 7.0, setuptools 84.2, pip 26.3, wheel 0.48. black 26.10 reformats nothing.
Python 3.10 removed from:
python_requires(now>=3.11, <3.14), the classifiers, tox's envlist (nowpy311, py312, py313, with an explicit[gh-actions]mapping), both CI matrices, and the README. The publish job builds on 3.13 instead of 3.10.Testing
In
python:3.x-slimcontainers, the tox commands (flake8,black --check, pytest):Plus a smoke script on both ends (protobuf 7 + opencv 5, and protobuf 5.29.6 + opencv 4.9), with all warnings shown. It round-trips a
LocationAndPoseMessage, reads a frame from a generated MJPG file withcv2.VideoCapture, and encodes it withconvert_frame. No warnings appeared on either end.RobotMap, the SDK's Pillow user, also loads and re-encodes a real 1523×705 map PNG on Pillow 13.Note for consumers
Python 3.10 users stay on 3.4.x. Requiring protobuf 7 is not forced: the range keeps 5.29.6 and up, so connectors pinned to protobuf 5 or 6 for ROS or gRPC keep resolving.
🤖 Generated with Claude Code