Skip to content

Pin one Python version for dev, CI, and release - #77

Merged
JoshCLWren merged 1 commit into
mainfrom
chore/dev-python-parity
Oct 18, 2026
Merged

JoshCLWren merged 1 commit into
mainfrom
chore/dev-python-parity

Conversation

@JoshCLWren

Copy link
Copy Markdown
Owner

Problem

Local development ran a different Tk than the shipped app, which hid a Tk-9-only bug (covered by #76):

Python Tk
dev venv (system python3.13) 3.13 8.6
CI / release / installed app 3.14.x 9.0

Worse, even pinning the minor version wasn't enough: uv-managed 3.14.2 ships Tk 8.6 while 3.14.7 ships Tk 9.0, and uv python install 3.14 silently linked the already-present 3.14.2 on the dev machine. So "same minor version" can still mean a different Tk.

Fix

  • .python-version now pins the exact patch (3.14.7), which is what ships and what CI installs.
  • CI (setup action, release workflow) and the Linux build install the interpreter from .python-version via bare uv python install, so there is one source of truth for dev, CI, and release.
  • AGENTS.md gains a Development Environment Parity section: use the uv-managed interpreter, and check tkinter.TkVersion reports 9.0 before debugging input issues.

Testing

  • Recreated the dev venv on the pinned interpreter: python 3.14.7 | Tk 9.0.
  • Full suite on that venv: 562 passed, coverage 96.44%.
  • Follow-up: the real-Tk wheel regression tests in Fix mouse-wheel scroll-up on Tk 9 #76 now run against Tk 9 in CI, so this class of event-decoding bug is caught automatically.

The patch version decides the bundled Tk: uv-managed 3.14.2 ships Tk 8.6 while 3.14.7 ships Tk 9.0 (what the packaged app uses). Because uv python install 3.14 happily linked an already-present 3.14.2, local dev ran Tk 8.6 and hid a Tk-9-only wheel bug. Pin .python-version to the exact patch and make CI and the release build install the interpreter from it via bare 'uv python install', so all three environments share one Python and one Tk. Document the parity requirement in AGENTS.md.
@coderabbitai

coderabbitai Bot commented Oct 18, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 24ca5e91-619e-4276-922c-8ac251cc28a1
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Oct 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@JoshCLWren
JoshCLWren merged commit f2880de into main Oct 18, 2026
10 checks passed
@JoshCLWren
JoshCLWren deleted the chore/dev-python-parity branch October 18, 2026 03:57
@JoshCLWren JoshCLWren mentioned this pull request Oct 18, 2026
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.

1 participant