GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add Python 3.15 to supported versions and update pins by rytilahti · Pull Request #1793 · python-kasa/python-kasa

Conversation

@rytilahti

@rytilahti rytilahti commented Oct 11, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Python 3.15 was just released a couple of days ago (https://www.python.org/downloads/release/python-3150/), this PR adds it to the CI.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@rytilahti
Add Python 3.15 to supported versions
519dc6e
@rytilahti rytilahti added the maintenance Project improvements and maintenance label Oct 11, 2026
@codecov

codecov Bot commented Oct 11, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.44%. Comparing base (38a3184) to head (5235d44).
⚠️ Report is 10 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1793      +/-   ##
==========================================
+ Coverage   93.41%   93.44%   +0.02%     
==========================================
  Files         159      160       +1     
  Lines       10113    10113              
  Branches     1043     1045       +2     
==========================================
+ Hits         9447     9450       +3     
+ Misses        472      471       -1     
+ Partials      194      192       -2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@rytilahti
rytilahti requested a review from ZeliardM October 11, 2026 22:48
@rytilahti rytilahti added this to the 0.12 milestone Oct 24, 2026
@rytilahti
rytilahti enabled auto-merge (squash) October 24, 2026 14:36
@rytilahti
rytilahti disabled auto-merge October 24, 2026 14:36
@ZeliardM

ZeliardM commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Looks good. One thing to fix before merging, plus a pile of updates I ran through while I was at it.

The fix: the 3.15 jobs are actually running 3.15.0rc3 (Using CPython 3.15.0rc3 in the logs). setup-uv gets uv from uv.lock, which has 0.12.23, and that version doesn't know 3.15 final yet. uv lock --upgrade-package uv --upgrade-package aiohttp, plus the uv-pre-commit rev set to 0.13.5, gets you 3.15.1. aiohttp 3.14.5 is the first release with cp315 wheels; CI is compiling 3.14.3 right now. The push also reruns CI against current master, since these checks predate #1798/#1808.

Worth doing soon: gh-action-pypi-publish v1.14.2 has a critical advisory (GHSA-5xjx-3w67-w9x9, a bad root CA in the trust store Trusted Publishing uses). v1.14.3 fixes it, so it's worth bumping before the next release.

Everything else, all tested together on this PR plus master on Linux. Tests pass on 3.11 through 3.15.1 with the same warnings as now, all pre-commit hooks pass on 3.15.1, and the build and docs are fine.

  • mypy 1.20.2 → 2.4.0 (mypy~=1.0 → ~=2.4). 1.x isn't compiled for 3.15, so the hook takes 24 s instead of 4 s. 2.x raises two errors, and they have to land together with the bump since tests need lint:
    • kasa/json.py:30: strict-bytes is on by default now. Declare loads: Callable[[str | bytes | bytearray], Any] before the try.
    • kasa/discover.py:572: newer typeshed types getaddrinfo addresses as str | int. ip = str(adrrinfo[0][4][0]) fixes it.
    • Optionally set python_version = "3.11" in [tool.mypy]. Lint now type-checks against 3.15, so a 3.12+-only stdlib API would slip through. The code passes with it today.
  • Workflows:
    • publish.yml: 3.13 → 3.15. Same wheel; the sdist only differs because 3.15's gzip compresses differently.
    • release-draft.yml: has no python-version, so it runs on the runner's 3.12. Add "3.15".
  • Lock (uv lock --upgrade). Runtime deps are already at their latest versions apart from aiohttp. The rest:
    • orjson 3.13.0, multidict 7.2.1, python-dateutil 3.0.0, coverage 7.17.0, pytest-mock 3.17.0, pre-commit 4.7.0
    • ruff 0.17.2: no new findings, no formatting changes
    • docs: Sphinx 9.x, myst-parser 5.1.0, docutils 0.22.4. This needs sphinx_rtd_theme~=2.0 → ~=3.1, since 2.0 caps Sphinx below 8.
  • Hooks: ruff-pre-commit v0.16.10 → v0.17.2. Optionally rename the hook id ruff → ruff-check, since ruff is now a legacy alias.
  • Actions: none of the breaking changes affect us.
    • checkout v7.0.1, setup-uv v10.3.2 (publish.yml stops caching on release events), cache v6.1.0
    • codecov v7.1.1 (new signing-key account), codeql v4.39.1, stale v11.0.0
    • packaging 26.3 in build-packages
    • Read the Docs can go to ubuntu-24.04; it has no 3.15 yet, so keep python: "3".

Per version:

  • 3.11/3.12: Sphinx resolves to 9.0.4/9.1.1. Two docs warnings come from Python's own int.from_bytes docstring; they're there today too, and RTD builds on 3.14 anyway.
  • 3.13: required checks are the 3.13 jobs, so nothing changes there.
  • 3.14: RTD stays here.
  • 3.15:
    • kasa-crypt has no cp315 wheels. Without a compiler, speedups quietly falls back to pure Python.
    • orjson's cp315 Linux wheels need glibc 2.39+.

FYI, not from this PR:

  • 3.14 on Windows hangs until the 6 h timeout now and then: 12 of 177 runs, always in test_features_all. It just happened again on master. 3.15 Windows may do the same, and a timeout-minutes would at least fail it fast.
  • lazygroup.py:67 uses the deprecated click.BaseCommand. That's where all the test_cli warnings come from, and it breaks in Click 9; click.Command works.

Not tested: macOS and Windows, and the action bumps beyond reading their release notes.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

rytilahti added 3 commits October 25, 2026 18:33
@rytilahti
Update pre-cmmmit hooks & uv.lock
a7b07ee
@rytilahti
Update GHA version pins
709e906
@rytilahti
Update GHA version pins, retry
5235d44
ZeliardM
ZeliardM approved these changes Oct 25, 2026
View reviewed changes

@ZeliardM ZeliardM left a comment

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@rytilahti rytilahti changed the title Add Python 3.15 to supported versions Add Python 3.15 to supported versions and update pins Oct 25, 2026
@rytilahti
rytilahti merged commit 6b9d028 into python-kasa:master Oct 25, 2026
26 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@rytilahti
rytilahti deleted the janitor/python315 branch October 25, 2026 17:58
@rytilahti rytilahti mentioned this pull request Oct 25, 2026
Prepare 0.12.0 #1811
Merged
rytilahti added a commit that referenced this pull request Oct 25, 2026
@rytilahti
Prepare 0.12.0 (#1811)
a178fba
## [0.12.0](https://github.com/python-kasa/python-kasa/tree/0.12.0)
(2026-10-25)

This release include several compatibility fixes (updated accepted SSL
ciphers, removal of Homekit from the default update cycle).
The new API `Device.supports_module()` provide a way to find out if the
device supports some specific module, e.g., HomeKit, without including
it in the default update cycle.

[Full
Changelog](0.11.0.1...0.12.0)

**Fixed bugs:**

- Keep hub children when the child component list is missing
[\#1797](#1797)
(@Richardtristan)
- Strip multi-word rich tags when rich is not installed
[\#1807](#1807)
(@wolfgang-aura)
- Add Device.supports_module() and stop querying HomeKit for iot devices
[\#1808](#1808)
(@rytilahti)
- Keep multi requests for smartcam devices after a timeout
[\#1802](#1802)
(@hugaraujo)
- Consolidate SSL ciphers and use them in SslTransport
[\#1798](#1798)
(@rytilahti)
- Raise UnsupportedDeviceError instead of crashing on unknown device
types [\#1781](#1781)
(@GhostCoder6969)

**Added support for devices:**

- Add TD21(EU) device fixture
[\#1786](#1786)
(@Smugaski)
- Add P116M(IN) fixture
[\#1795](#1795)
(@Partha-dev01)

**Project maintenance:**

- Add Python 3.15 to supported versions and update pins
[\#1793](#1793)
(@rytilahti)
- Generate the changelog with git-cliff and draft releases in CI
[\#1809](#1809)
(@rytilahti)
- Build and check packages in CI and publish workflows
[\#1782](#1782)
(@rytilahti)

**Other changes:**

- Use the real discovery reply in the TD21 fixture
[\#1800](#1800)
(@Smugaski)
pillarsdotnet pushed a commit to pillarsdotnet/python-kasa that referenced this pull request Oct 30, 2026
@rytilahti
Add Python 3.15 to supported versions and update pins (python-kasa#1793)
b72302c
pillarsdotnet pushed a commit to pillarsdotnet/python-kasa that referenced this pull request Oct 30, 2026
@rytilahti
Prepare 0.12.0 (python-kasa#1811)
7ddf1ef
## [0.12.0](https://github.com/python-kasa/python-kasa/tree/0.12.0)
(2026-10-25)

This release include several compatibility fixes (updated accepted SSL
ciphers, removal of Homekit from the default update cycle).
The new API `Device.supports_module()` provide a way to find out if the
device supports some specific module, e.g., HomeKit, without including
it in the default update cycle.

[Full
Changelog](python-kasa/python-kasa@0.11.0.1...0.12.0)

**Fixed bugs:**

- Keep hub children when the child component list is missing
[\python-kasa#1797](python-kasa#1797)
(@Richardtristan)
- Strip multi-word rich tags when rich is not installed
[\python-kasa#1807](python-kasa#1807)
(@wolfgang-aura)
- Add Device.supports_module() and stop querying HomeKit for iot devices
[\python-kasa#1808](python-kasa#1808)
(@rytilahti)
- Keep multi requests for smartcam devices after a timeout
[\python-kasa#1802](python-kasa#1802)
(@hugaraujo)
- Consolidate SSL ciphers and use them in SslTransport
[\python-kasa#1798](python-kasa#1798)
(@rytilahti)
- Raise UnsupportedDeviceError instead of crashing on unknown device
types [\python-kasa#1781](python-kasa#1781)
(@GhostCoder6969)

**Added support for devices:**

- Add TD21(EU) device fixture
[\python-kasa#1786](python-kasa#1786)
(@Smugaski)
- Add P116M(IN) fixture
[\python-kasa#1795](python-kasa#1795)
(@Partha-dev01)

**Project maintenance:**

- Add Python 3.15 to supported versions and update pins
[\python-kasa#1793](python-kasa#1793)
(@rytilahti)
- Generate the changelog with git-cliff and draft releases in CI
[\python-kasa#1809](python-kasa#1809)
(@rytilahti)
- Build and check packages in CI and publish workflows
[\python-kasa#1782](python-kasa#1782)
(@rytilahti)

**Other changes:**

- Use the real discovery reply in the TD21 fixture
[\python-kasa#1800](python-kasa#1800)
(@Smugaski)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ZeliardM ZeliardM ZeliardM approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

maintenance Project improvements and maintenance

Projects

None yet

Milestone

0.12

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@rytilahti @ZeliardM
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.