-
Notifications
You must be signed in to change notification settings - Fork 11
Add support for pip install from GitHub URLs #174
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: main
Are you sure you want to change the base?
Conversation
- Remove 'git+' from parser limits to allow GitHub URLs - Implement GitHub URL parsing to extract owner, repo, and ref - Add GitHub API integration to fetch package metadata from setup.py, setup.cfg, or pyproject.toml - Update parsePyPiRequirement to detect and handle GitHub URLs - Implement processRequirement logic for GitHub packages with dependency resolution - Add cross-platform base64 decoding for Node.js and browser environments - Include validation to prevent GitHub installs on emscripten-wasm32 - Create tests for GitHub URL support and error handling Co-authored-by: martinRenou <[email protected]>
529b453 to
697f4e9
Compare
|
@copilot I rebased the PR, I added some tests, made sure you don't skip any test for any reason (do not skip any test without me asking). I also added the ability to resolve the default branch ref when doing Fix it! |
- Updated parseSetupPy to handle both list format and inline single dependency format - Added support for parsing 'install_requires = package >= version' format - Fixed naming convention for IParsedGitHubUrl interface - Added fetchWithRetry helper with exponential backoff for GitHub API rate limiting Co-authored-by: martinRenou <[email protected]>
Fixed the parser in commit ff2d709. The The test is still failing due to GitHub API rate limiting (403 errors) when multiple tests run in parallel. Added retry logic with exponential backoff (5 retries, 2s initial delay) to help mitigate this, but it can't completely prevent rate limiting without a GitHub token in the environment. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
@copilot this is because you have internet connection issues. Discard running tests for now, I will test it. Revert your changes on retry. Also fix the parsing of |
- Reverted fetchWithRetry function and all its usage - Kept ParsedGitHubUrl interface name (added eslint-disable comment) - Kept parseSetupPy inline format fix for 'install_requires = package >= version' - parseSetupCfg already handles inline format correctly Co-authored-by: martinRenou <[email protected]>
Reverted retry logic in commit 9663bf4. Kept the parseSetupPy inline format fix for |
Implementation: Add support for pip install from GitHub URL
This PR successfully implements support for installing pip packages directly from GitHub URLs in the format
git+https://github.com/{owner}/{repo}@{commit_hash_or_tag}.✅ Completed Tasks
git+from the parser limits to allow GitHub URLs in pip install commandsparsePyPiRequirementto detect and process GitHub URLsprocessRequirementin solverpip.ts to handle GitHub packagesinstall_requires = six >= 1.5)Parser Improvements
install_requires = [...]and inline single dependency formatinstall_requires = package >= versioninstall_requires = six >= 1.5Both parsers now properly extract dependencies from packages like python-dateutil that use inline dependency specifications.
GitHub URL Support
git+https://github.com/owner/repo@commit_hashgit+https://github.com/owner/repo(fetches default branch automatically)<issue_title>Add support for pip install from Github URL</issue_title>
><issue_description>While this is unlikely to be implemented in the case of
emscripten-wasm32platform (cannot install from a source distribution in a straightforward way in JS), there is no reason to not support to resolve packages for other platforms (Linux, OSX, Windows).>
> e.g. having
git+https://github.com/dateutil/dateutil@9eaa5de584f9f374c6e4943069925cc53522ad61in theenvironment.ymlin the pip packages list should be possible.>
> The implementation should hit the Github APIs to resolve following information:
> - package name
> - package version
> - dependencies</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
>
>
>
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.