-
Notifications
You must be signed in to change notification settings - Fork 8k
feat(tools): allow to specify python binary by ESP_PYTHON environment… (IDFGH-16803) #17880
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
base: master
Are you sure you want to change the base?
Conversation
👋 Hello garywill, we appreciate your contribution to this project! 📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more. 🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project. Click to see more instructions ...
Review and merge process you can expect ...
|
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.
This PR is being reviewed by Cursor Bugbot
Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| $p_cmd -c "import sys; exit(1) if sys.version_info.major < int(\"$OLDEST_PYTHON_SUPPORTED_MAJOR\") else exit(0);" || continue | ||
| $p_cmd -c "import sys; exit(1) if sys.version_info.minor < int(\"$OLDEST_PYTHON_SUPPORTED_MINOR\") else exit(0);" || continue | ||
| "$p_cmd" -c "import sys; exit(1) if sys.version_info.major < int(\"$OLDEST_PYTHON_SUPPORTED_MAJOR\") else exit(0);" || continue | ||
| "$p_cmd" -c "import sys; exit(1) if sys.version_info.minor < int(\"$OLDEST_PYTHON_SUPPORTED_MINOR\") else exit(0);" || continue |
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.
Bug: Inconsistent Python Version Validation Logic
The version validation checks major and minor versions independently, creating inconsistent behavior for future Python versions. Python 4.0-4.9 would be rejected (minor < 10) while Python 4.10+ would be accepted, even though Python 4.x may have breaking changes. The logic should either accept all Python 4+ versions or only Python 3.10+, not create an arbitrary cutoff at 4.10.
| $ESP_PYTHON --version 2>/dev/null || { | ||
| echo "Python ${OLDEST_PYTHON_SUPPORTED_MAJOR}.${OLDEST_PYTHON_SUPPORTED_MINOR}+ is not installed! Please see the documentation for how to install it." | ||
| [[ -n "$ESP_PYTHON" ]] && "$ESP_PYTHON" --version 2>/dev/null || { | ||
| echo "Python ${OLDEST_PYTHON_SUPPORTED_MAJOR}.${OLDEST_PYTHON_SUPPORTED_MINOR}+ is not installed! Please see the documentation for how to install it." >&2 |
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.
Bug: Misleading Python Version Error Message
When a user specifies ESP_PYTHON pointing to a Python binary that doesn't meet version requirements, the error message "Python 3.10+ is not installed!" is misleading. Python 3.10+ might be installed on the system, but the user-specified binary doesn't meet requirements. The error should distinguish between these cases to avoid confusion.
| $p_cmd -c "import sys; exit(1) if sys.version_info.minor < int(\"$OLDEST_PYTHON_SUPPORTED_MINOR\") else exit(0);"; or continue | ||
|
|
||
| set ESP_PYTHON $p_cmd | ||
| set -x ESP_PYTHON $p_cmd |
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.
Bug: Inconsistent Validation for Future Python Versions
The version validation checks major and minor versions independently, creating inconsistent behavior for future Python versions. Python 4.0-4.9 would be rejected (minor < 10) while Python 4.10+ would be accepted, even though Python 4.x may have breaking changes. The logic should either accept all Python 4+ versions or only Python 3.10+, not create an arbitrary cutoff at 4.10.
| set -e PYTHON_CANDIDATES | ||
|
|
||
| test -n "$ESP_PYTHON"; or echo "Python $OLDEST_PYTHON_SUPPORTED_MAJOR.$OLDEST_PYTHON_SUPPORTED_MINOR+ is not installed! Please see the documentation for how to install it." | ||
| test -n "$ESP_PYTHON"; or echo "Python $OLDEST_PYTHON_SUPPORTED_MAJOR.$OLDEST_PYTHON_SUPPORTED_MINOR+ is not installed! Please see the documentation for how to install it." >&2 |
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.
Bug: Misleading Python Version Error Message
When a user specifies ESP_PYTHON pointing to a Python binary that doesn't meet version requirements, the error message "Python 3.10+ is not installed!" is misleading. Python 3.10+ might be installed on the system, but the user-specified binary doesn't meet requirements. The error should distinguish between these cases to avoid confusion.
Description
If environment variable
ESP_PYTHONalready set,detect_python.shuses that python binary, otherwise, looks for python version same or greater than minimal required version on path.That allow user to choose a particular python version or python binary
Notice:
Related
Testing
I did some simple test with bash
Checklist
Before submitting a Pull Request, please ensure the following:
Note
Detection scripts now honor ESP_PYTHON to choose the Python binary (with improved handling) and docs explain how to set it.
tools/detect_python.shandtools/detect_python.fishto honorESP_PYTHONif set; otherwise fall back to versioned candidates.ESP_PYTHONonly after validation; unset candidate vars; print selected Python; send missing-Python errors to stderr.docs/*/api-guides/tools/idf-tools.rstanddocs/*/get-started/linux-macos-setup.rston specifying Python viaESP_PYTHONbefore installation and use, with example (export ESP_PYTHON=/opt/bin/python3.13).Written by Cursor Bugbot for commit c2a568f. This will update automatically on new commits. Configure here.