Skip to content

Support Python 3.15 - #7105

Merged
snejus merged 1 commit into
beetbox:masterfrom
daeho-ro:python-3.15
Oct 25, 2026
Merged

snejus merged 1 commit into
beetbox:masterfrom
daeho-ro:python-3.15

Conversation

@daeho-ro

@daeho-ro daeho-ro commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds Python 3.15 to the supported range: raises the requires-python upper bound to <3.16, adds the classifier and CI matrix entry, and refreshes uv.lock. A few locked packages move to the next release that ships Python 3.15 wheels, because the previous ones fail to build there: jellyfish 1.3.0 and libcst 1.9.0 (PyO3 0.26), numba 0.68.0 / llvmlite 0.50.0 (numba 0.66 rejects 3.15), scikit-learn 1.9.1 (1.9.0 has no 3.15 wheel and its build needs a source-built SciPy), scipy 1.18.1 and lxml 6.1.3.

With the same groups and extras as the CI test job (--group test --extra autobpm --extra discogs --extra lyrics --extra replaygain --extra reflink --extra fetchart --extra chroma --extra sonosupdate), pytest -p no:cov passes on Python 3.15.0 locally (2780 passed).

The Windows jobs fail earlier while installing mp3gain from Chocolatey; that also happens on the 3.13 job and is unrelated to this change.

AI-assisted contribution by Claude Code (Claude Opus 5.5). Reviewed manually.

To Do

  • Documentation.
  • Changelog.
  • Tests.

@daeho-ro
daeho-ro requested a review from a team as a code owner October 18, 2026 10:22
@snejus

snejus commented Oct 20, 2026

Copy link
Copy Markdown
Member

See failing tests.

@snejus

snejus commented Oct 20, 2026

Copy link
Copy Markdown
Member

Seems we have too many runs in parallel. Maybe we should merge #7093 first, then!

@daeho-ro

Copy link
Copy Markdown
Contributor Author

Then I will rebase. :)

@snejus

snejus commented Oct 23, 2026

Copy link
Copy Markdown
Member

Try rebasing now? It's been merged!

@daeho-ro
daeho-ro force-pushed the python-3.15 branch 2 times, most recently from b948fa0 to 16d097b Compare October 24, 2026 09:21
@daeho-ro

Copy link
Copy Markdown
Contributor Author

It seems that gstreamer-python is added recently but it doesn't support python 3.15 yet..

@snejus

snejus commented Oct 24, 2026

Copy link
Copy Markdown
Member

Ahh what a shame. Seems like we'll have to wait until they do.

@gbcox

gbcox commented Oct 24, 2026

Copy link
Copy Markdown

I’ve been building and running beets on Fedora with the Python upper bound patched to allow 3.15, and haven’t encountered problems in my usage. I can keep that workaround in place for now.

My concern is that Fedora 45 uses Python 3.15, while support here appears to be waiting on a Windows dependency for optional GStreamer functionality. Could Python 3.15 support proceed with a documented limitation for those Windows features, advising affected users to remain on Python 3.14?

Python’s release schedule is predictable, so it would be helpful to have an approach that accommodates distributions moving to a new version without requiring every optional dependency on every platform to be ready simultaneously.

@snejus

snejus commented Oct 24, 2026

Copy link
Copy Markdown
Member

@gbcox this makes sense. @daeho-ro would you mind wrapping failing tests with @pytest.mark.xfail(..., strict=True) where expected failure only happens under Python 3.15? We will drop this decorator at some point later when we update dependencies where gstreamer-python supports Python 3.15.

@codecov

codecov Bot commented Oct 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.54%. Comparing base (d739756) to head (a1ddcec).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7105      +/-   ##
==========================================
- Coverage   80.58%   80.54%   -0.04%     
==========================================
  Files         149      149              
  Lines       21241    21241              
  Branches     3281     3281              
==========================================
- Hits        17116    17109       -7     
- Misses       3295     3301       +6     
- Partials      830      831       +1     

see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@snejus snejus left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you!

@snejus
snejus added this pull request to the merge queue Oct 25, 2026
Merged via the queue into beetbox:master with commit 5592207 Oct 25, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants