Skip to content

fix: use system Python and pin requires-python to pod range#386

Merged
ng merged 2 commits intodevfrom
fix/380-pin-system-python
Apr 6, 2026
Merged

fix: use system Python and pin requires-python to pod range#386
ng merged 2 commits intodevfrom
fix/380-pin-system-python

Conversation

@ng
Copy link
Copy Markdown
Contributor

@ng ng commented Apr 6, 2026

Summary

  • Revert Renovate bot's requires-python bump from >=3.14,<3.15 back to >=3.9,<3.11 (PR chore(deps): Update python Python to >=3.14,<3.15 #385 broke all pods)
  • Add --python python3 to uv sync in install and sp-update — forces uv to use the system Python instead of downloading one
  • Add Renovate rule to cap requires-python at <3.11 (Pod 3 is 3.9, Pod 4/5 is 3.10)

Root cause

Renovate auto-merged #385 which bumped requires-python to >=3.14,<3.15. This caused uv sync to download CPython 3.14.3, which has no pre-built wheels for numpy/scipy/contourpy on aarch64. It then tried to compile from source, which failed because Yocto has no C++ compiler.

Test plan

  • sp-update dev on Pod 4 (@punkmaniac) — should use system Python 3.10, not download 3.14
  • Pod 5 — previously verified with >=3.9,<3.11 + system Python 3.10.4

Summary by CodeRabbit

  • Chores
    • Expanded Python version compatibility across all modules to support Python 3.9-3.10
    • Updated dependency management configuration with explicit Python version constraints
    • Enhanced environment setup scripts with explicit Python interpreter specification

ng added 2 commits April 5, 2026 20:47
Renovate bot (#385) bumped requires-python to >=3.14, causing uv to
download CPython 3.14 instead of using the system 3.10. Packages then
failed to build (no C compiler on Yocto).

- Revert the requires-python bump back to >=3.9,<3.11
- Add --python python3 to uv sync so it always uses system Python
- Pin Renovate's python version to <3.11 (Pod 3 is 3.9, Pod 4/5 is 3.10)
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 6, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

The PR updates Python version constraints across four biometrics modules from >=3.14,<3.15 to >=3.9,<3.11, adds a Renovate configuration rule to cap Python version updates at <3.11, and explicitly specifies the Python interpreter (python3) when syncing module environments via uv.

Changes

Cohort / File(s) Summary
Module Python Version Constraints
modules/calibrator/pyproject.toml, modules/environment-monitor/pyproject.toml, modules/piezo-processor/pyproject.toml, modules/sleep-detector/pyproject.toml
Updated requires-python constraint from >=3.14,<3.15 to >=3.9,<3.11 in each module's project metadata.
Renovate Configuration
renovate.json
Added new packageRules entry targeting python package via pep621 manager with allowedVersions: "<3.11" to constrain Python version updates.
Module Environment Sync Scripts
scripts/bin/sp-update, scripts/install
Added explicit --python python3 flag to uv sync --frozen invocations to specify the Python interpreter during module environment synchronization.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 Hop, hop—constraints refined with care,
From future bounds to versions fair,
Python three-point-nine takes the stage,
While Renovate guards each version's age,
Scripts sing in harmony, explicit and true!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main changes: reverting Python version requirements back to the pod range and configuring uv to use system Python.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/380-pin-system-python

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 and usage tips.

@ng ng merged commit 9f6cb24 into dev Apr 6, 2026
5 of 6 checks passed
@ng ng deleted the fix/380-pin-system-python branch April 6, 2026 03:53
@ng ng mentioned this pull request Apr 13, 2026
4 tasks
ng added a commit that referenced this pull request Apr 13, 2026
## Summary

Promotes everything on \`dev\` since the last main release (82 commits,
143 files, +9239/-2699).

### Headlining features
- **Schedule redesign (#303)** — read-only schedule view with explicit
curve management, full-screen \`CurveEditor\` (day picker + bedtime/wake
+ temp range + presets), \`Left | Right | Both\` side selector,
active-curve highlight, atomic \`batchUpdate\` writes, day-conflict
resolution, sparkline cards.
- **Mini feature flag (#420)** — \`ENABLE_MINI\` env var; PubNub moved
to \`optionalDependencies\`; conditional Mini router import.
- **Auto-off on no presence (#301)** — schedule respects bed presence.
- **Auto-unblock internet during update check (#308)**.
- **Schedule batchUpdate cap raised to 1000 (#424)** — fixes AI-curve
apply-to-all-days rejection.

### Operational fixes
- Pod 3 install path (#383, #384, #386, #392)
- Yocto image Python venv (#336)
- DAC socket / Avahi on device startup (#331)
- Free-sleep/sleepypod switch persistence (#337)
- Cross-machine standalone deploys (#308)
- Temperature unit conversion (#333)

### Dependency updates
~20 renovate PRs across React 19.2.5, Next 16.2.3, vitest 4.1.4,
tanstack/react-query 5.97.0, tRPC 11.16, lucide-react 1.x, etc.

### Misc
- ADR 0017 (uv) compiled into deployment wiki
- Snoo pentest methodology + recon plan
- Git hooks + ESLint cleanup (#313)
- CI hardening (#388)

## Test plan
- [x] All unit tests pass on dev (606+ tests)
- [x] Typecheck clean
- [x] Build succeeds (standalone output)
- [x] Deployed to Pod 4 at \`192.168.1.88\` and smoke-tested:
  - schedule on/off
  - create curve from preset
  - edit curve, change days, save
  - day-conflict reassign dialog
  - delete curve
  - side selector left/right/both
  - active-curve highlighting + next set point
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 1.6.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant