Skip to content
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

Improve handling of invalid virtual environments during interpreter discovery #8086

Merged
merged 4 commits into from
Dec 10, 2024

Conversation

potoo0
Copy link
Contributor

@potoo0 potoo0 commented Oct 10, 2024

Summary

Fix #8075.

Invalid discovered environments in the working directory should be filtered out.

Test Plan

  • Test python_find

@potoo0
Copy link
Contributor Author

potoo0 commented Oct 12, 2024

This commit will also affect pip subcommand.

$ RUST_LOG=debug /tmp/uv pip install idna
DEBUG uv 0.4.20
DEBUG Searching for default Python interpreter in system path
DEBUG Found `cpython-3.12.6-linux-x86_64-gnu` at `/usr/bin/python` (search path)
DEBUG Ignoring Python interpreter at `/usr/bin/python`: system interpreter not explicitly requested
DEBUG Found `cpython-3.12.6-linux-x86_64-gnu` at `/usr/bin/python3` (search path)
DEBUG Ignoring Python interpreter at `/usr/bin/python3`: system interpreter not explicitly requested
DEBUG Found `cpython-3.12.6-linux-x86_64-gnu` at `/usr/bin/python3.12` (search path)
DEBUG Ignoring Python interpreter at `/usr/bin/python3.12`: system interpreter not explicitly requested
error: No virtual environment found; run `uv venv` to create an environment, or pass `--system` to install into a non-virtual environment

$ RUST_LOG=debug uv pip install idna
DEBUG uv 0.4.20
DEBUG Searching for default Python interpreter in system path
error: Broken virtualenv `/home/code/.venv`: `pyvenv.cfg` is missing
$ RUST_LOG=debug uv pip list
DEBUG uv 0.4.20
DEBUG Searching for default Python interpreter in system path
error: Broken virtualenv `/home/code/.venv`: `pyvenv.cfg` is missing

$ RUST_LOG=debug /tmp/uv pip list
DEBUG uv 0.4.20
DEBUG Searching for default Python interpreter in system path
DEBUG Found `cpython-3.12.6-linux-x86_64-gnu` at `/usr/bin/python` (search path)
Using Python 3.12.6 environment at /usr
Package            Version
------------------ ---------
autocommand        2.2.2
fail2ban           1.1.0

@charliermarsh charliermarsh requested a review from zanieb October 12, 2024 21:12
@charliermarsh charliermarsh added the bug Something isn't working label Oct 12, 2024
@zanieb
Copy link
Member

zanieb commented Oct 14, 2024

Ah we can't just filter there — that will change behavior too much.

Perhaps at

pub fn is_critical(&self) -> bool {
instead? I don't think this change is valid for other operations though.

@zanieb
Copy link
Member

zanieb commented Oct 14, 2024

Can you add a python_find test case covering this?

@potoo0 potoo0 force-pushed the fix-py-find branch 2 times, most recently from 4672efd to 7ba9f2b Compare October 15, 2024 06:55
@potoo0
Copy link
Contributor Author

potoo0 commented Oct 15, 2024

@zanieb

Maybe I'm using it incorrectly, I previously created virtual nesting under the .venv folder.

uv venv .venv/jupyter

tree -L 1 .venv
# .venv
# ├── huggingface
# ├── jupyter
# └── nogil

@zanieb zanieb enabled auto-merge (squash) December 10, 2024 18:47
@zanieb zanieb disabled auto-merge December 10, 2024 18:47
@zanieb zanieb changed the title fix: drop invalid discovered environment(#8075) Improve handling of invalid virtual environments during interpreter discovery Dec 10, 2024
@zanieb zanieb enabled auto-merge (squash) December 10, 2024 18:47
@zanieb zanieb merged commit 459269f into astral-sh:main Dec 10, 2024
64 checks passed
@potoo0 potoo0 deleted the fix-py-find branch December 11, 2024 02:50
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Dec 12, 2024
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.5.7` -> `0.5.8` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>astral-sh/uv (astral-sh/uv)</summary>

### [`v0.5.8`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#058)

[Compare Source](astral-sh/uv@0.5.7...0.5.8)

**This release does not include the `powerpc64le-unknown-linux-musl` target due to a build issue. See [#&#8203;9793](astral-sh/uv#9793) for details. If this change affects you, please file an issue with your use-case.**

##### Enhancements

-   Omit empty resolution markers in lockfile  ([#&#8203;9738](astral-sh/uv#9738))
-   Add `--install-dir` to to `uv python install` and `uninstall` commands ([#&#8203;7920](astral-sh/uv#7920))
-   Add `--show-urls` and `--only-downloads` to `uv python list` ([#&#8203;8062](astral-sh/uv#8062))
-   Add `uv python list --all-arches` ([#&#8203;9782](astral-sh/uv#9782))
-   Add `uv run --gui-script` flag for running Python scripts with `pythonw.exe` ([#&#8203;9152](astral-sh/uv#9152))
-   Allow `--gui-script` on Unix ([#&#8203;9787](astral-sh/uv#9787))
-   Allow download of Python distribution variants optimized for newer x86\_64 microarchitectures ([#&#8203;9781](astral-sh/uv#9781))
-   Allow execution of `pyw` files on Unix ([#&#8203;9759](astral-sh/uv#9759))
-   Allow users to specify URLs in `project.dependencies` and `tool.uv.sources` ([#&#8203;9718](astral-sh/uv#9718))
-   Encode mutually-incompatible pairs of markers ([#&#8203;9444](astral-sh/uv#9444))
-   Improve the error message when a Python install request is not valid ([#&#8203;9783](astral-sh/uv#9783))
-   Preserve directory-level standalone build symlinks ([#&#8203;9723](astral-sh/uv#9723))
-   Add support for `uv publish --index <name>` ([#&#8203;9694](astral-sh/uv#9694))
-   Reframe `--locked` and `--frozen` as `--check` operations for `uv lock` ([#&#8203;9662](astral-sh/uv#9662))
-   Rename Python install scratch directory from `.cache` -> `.temp` ([#&#8203;9756](astral-sh/uv#9756))
-   Enable `uv tool uninstall uv` on Windows ([#&#8203;8963](astral-sh/uv#8963))
-   Improve self-dependency hint to make shadowing clear ([#&#8203;9716](astral-sh/uv#9716))
-   Refactor unavailable metadata to shrink the resolver ([#&#8203;9769](astral-sh/uv#9769))
-   Show 'depends on itself' for proxy packages ([#&#8203;9717](astral-sh/uv#9717))
-   Show a dedicated error for missing subdirectories ([#&#8203;9761](astral-sh/uv#9761))
-   Show a dedicated hint for missing `git+` prefixes ([#&#8203;9789](astral-sh/uv#9789))

##### Performance

-   Eagerly error when parsing `pyproject.toml` requirements ([#&#8203;9704](astral-sh/uv#9704))
-   Use copy-on-write when normalizing paths ([#&#8203;9710](astral-sh/uv#9710))

##### Bug fixes

-   Avoid enforcing non-conflicts in `uv export` ([#&#8203;9751](astral-sh/uv#9751))
-   Don't drop comments between items in TOML tables ([#&#8203;9784](astral-sh/uv#9784))
-   Don't fail with `--no-build` when static metadata is available ([#&#8203;9785](astral-sh/uv#9785))
-   Don't filter non-patch registry version ([#&#8203;9736](astral-sh/uv#9736))
-   Don't read metadata from stale `.egg-info` files ([#&#8203;9760](astral-sh/uv#9760))
-   Enforce correctness of self-dependencies ([#&#8203;9705](astral-sh/uv#9705))
-   Fix projects's typo in resolver error messages ([#&#8203;9708](astral-sh/uv#9708))
-   Ignore `.` prefixed directories during managed Python installation discovery ([#&#8203;9786](astral-sh/uv#9786))
-   Improve handling of invalid virtual environments during interpreter discovery ([#&#8203;8086](astral-sh/uv#8086))
-   Normalize relative paths when `--project` is specified ([#&#8203;9709](astral-sh/uv#9709))
-   Respect self-constraints on recursive extras ([#&#8203;9714](astral-sh/uv#9714))
-   Respect user settings for tracing coloring ([#&#8203;9733](astral-sh/uv#9733))
-   Retry on tar extraction errors ([#&#8203;9753](astral-sh/uv#9753))
-   Add conflict markers to the lock file ([#&#8203;9370](astral-sh/uv#9370))
-   De-duplicate resolution markers ([#&#8203;9780](astral-sh/uv#9780))
-   Avoid 403 error hint for PyTorch URLs ([#&#8203;9750](astral-sh/uv#9750))
-   Avoid treating non-existent `--find-links` as relative URLs ([#&#8203;9720](astral-sh/uv#9720))
-   Omit Windows Store `python3.13.exe` et al ([#&#8203;9679](astral-sh/uv#9679))
-   Replace executables with broken symlinks during `uv python install` ([#&#8203;9706](astral-sh/uv#9706))

##### Documentation

-   Fix build failure links ([#&#8203;9740](astral-sh/uv#9740))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Inconsistent uv python find error message
4 participants