-
Notifications
You must be signed in to change notification settings - Fork 52
consolidate venv Python path settings #245
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis update refactors Python virtual environment setup and path configuration in Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant MainScript
participant OS_Env
participant VirtualEnv
participant Pip
participant Esptool
User->>MainScript: Run builder/main.py
MainScript->>VirtualEnv: setup_pipenv_in_package()
VirtualEnv-->>MainScript: Create or activate venv
MainScript->>OS_Env: Remove PYTHONHOME
MainScript->>MainScript: setup_python_paths()
MainScript->>OS_Env: Update PATH, PYTHONPATH, sys.path
MainScript->>Pip: install_python_deps()
Pip-->>MainScript: Install dependencies
MainScript->>Esptool: install_esptool()
Esptool-->>MainScript: Install or exit on failure
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
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.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
builder/main.py (1)
385-419
: Important behavior change: Function now exits on failureThe
install_esptool()
function now raisesSystemExit
on failure instead of returning a fallback string. This is a good change that ensures build failures are caught early, but it's a breaking change from the previous behavior.The error handling improvements are appropriate - these are indeed errors that should halt the build process.
🧹 Nitpick comments (1)
builder/main.py (1)
132-168
: Well-structured Python paths setup!The function properly handles:
- OS-specific Scripts/bin directory addition to PATH
- Site-packages discovery for both Windows and Unix systems
One minor suggestion: Consider adding error handling if no
python*
directory is found in the Unix site-packages search (lines 161-164).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
builder/main.py
(6 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: in the esp32 platform builder, the subprocess call to get site-packages directory in setup_python_pa...
Learnt from: Jason2866
PR: pioarduino/platform-espressif32#225
File: builder/main.py:99-108
Timestamp: 2025-07-13T20:03:29.695Z
Learning: In the ESP32 platform builder, the subprocess call to get site-packages directory in setup_python_paths() function is intentionally left without error handling because if this basic Python operation fails, it indicates a fundamental system issue that would cause the entire build process to fail anyway.
Applied to files:
builder/main.py
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
- GitHub Check: build (macos-15, examples/espidf-ulp-riscv)
- GitHub Check: build (windows-latest, examples/espidf-peripherals-uart)
- GitHub Check: build (windows-latest, examples/arduino-zigbee-light)
- GitHub Check: build (windows-latest, examples/espidf-exceptions)
- GitHub Check: build (windows-latest, examples/tasmota)
- GitHub Check: build (ubuntu-latest, examples/espidf-ulp)
- GitHub Check: build (windows-latest, examples/arduino-rmt-blink)
- GitHub Check: build (windows-latest, examples/arduino-matter-light)
- GitHub Check: build (windows-latest, examples/arduino-blink)
- GitHub Check: build (ubuntu-latest, examples/espidf-http-request)
- GitHub Check: build (windows-latest, examples/arduino-wifiscan)
- GitHub Check: build (ubuntu-latest, examples/espidf-peripherals-uart)
- GitHub Check: build (ubuntu-latest, examples/espidf-blink)
- GitHub Check: build (ubuntu-latest, examples/arduino-wifiscan)
- GitHub Check: build (ubuntu-latest, examples/espidf-arduino-matter-light)
- GitHub Check: build (ubuntu-latest, examples/espidf-exceptions)
- GitHub Check: build (ubuntu-latest, examples/espidf-arduino-blink)
- GitHub Check: build (ubuntu-latest, examples/espidf-hello-world)
- GitHub Check: build (ubuntu-latest, examples/tasmota)
- GitHub Check: build (ubuntu-latest, examples/arduino-blink)
🔇 Additional comments (5)
builder/main.py (5)
86-86
: LGTM! The more descriptive message clarifies that this is specifically a pioarduino virtual environment.
96-104
: Good improvements to Python environment setup!The changes properly sequence the virtual environment setup:
- Sets up the virtual environment
- Updates
PYTHON_EXE
to point to the venv Python- Removes
PYTHONHOME
to prevent conflicts- Validates the Python executable exists
These changes make the environment setup more robust and less prone to configuration issues.
115-130
: Excellent path normalization implementation!The addition of path normalization ensures cross-platform compatibility and prevents duplicate entries with different path separators. This is particularly important for Windows/Unix compatibility.
287-287
: Good consolidation! The Scripts directory PATH addition is now properly handled insetup_python_paths()
, eliminating redundancy.
325-325
: Good clarification! The error message now correctly identifies that it'suv pip list
that failed, not regular pip.
Description:
Related issue (if applicable): fixes #
Checklist:
Summary by CodeRabbit