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

Coerce empty string values to None for UV_PYTHON env var #7878

Merged

Conversation

krishnan-chandra
Copy link
Contributor

@krishnan-chandra krishnan-chandra commented Oct 2, 2024

Summary

Closes #7841. If there are other env vars that would also benefit from this value parser, please let me know and I can add them to this PR.

Test Plan

When running the same example from the linked issue, it now works:

UV_PYTHON= cargo run -- init x
   Compiling ...
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.06s
     Running `target/debug/uv init x`
Initialized project `x` at `/Users/krishnanchandra/Projects/uv/x`

@charliermarsh
Copy link
Member

It looks like this will error. Do we want it to error, or is it supposed to "unset" the env var? Do you know what other tools do?

@zanieb
Copy link
Member

zanieb commented Oct 3, 2024

I think we should silently ignore the variable if it's empty, generally. I am curious what other tools do though.

@krishnan-chandra
Copy link
Contributor Author

Good question. I don't know what other tools do here but I think it feels reasonable to coerce empty strings to None rather than having them error out - I'm happy to make that change here.

@charliermarsh
Copy link
Member

We have this pattern for UV_INDEX_URL -- we wrap it in a Maybe type, where it's Maybe::None when empty. It has to be distinct from Option because Clap has special handling for Option.

@krishnan-chandra
Copy link
Contributor Author

I implemented your suggestion re: Maybe - I think I did this properly but let me know if I didn't.

@krishnan-chandra krishnan-chandra changed the title Use clap::builder::NonEmptyStringValueParser for UV_PYTHON env var Coerce empty string values to None for UV_PYTHON env var Oct 3, 2024
@charliermarsh charliermarsh merged commit d73b253 into astral-sh:main Oct 4, 2024
61 checks passed
@charliermarsh
Copy link
Member

Thanks, that's great!

@charliermarsh charliermarsh added the configuration Settings and such label Oct 4, 2024
@krishnan-chandra krishnan-chandra deleted the fix-empty-uv-python-var branch October 5, 2024 01:16
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Oct 11, 2024
This MR contains the following updates:

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

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.4.20`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0420)

[Compare Source](astral-sh/uv@0.4.19...0.4.20)

##### Enhancements

-   Add managed downloads for CPython 3.13.0 (final) ([#&#8203;8010](astral-sh/uv#8010))
-   Python 3.13 is the default version for `uv python install` ([#&#8203;8010](astral-sh/uv#8010))
-   Hint at wrong endpoint in `uv publish` failures ([#&#8203;7872](astral-sh/uv#7872))
-   List available scripts when a command is not specified for `uv run` ([#&#8203;7687](astral-sh/uv#7687))
-   Fill in `authors` field during `uv init` ([#&#8203;7756](astral-sh/uv#7756))

##### Documentation

-   Add snapshot testing to contribution guide ([#&#8203;7882](astral-sh/uv#7882))
-   Fix and improve GitLab integration docs ([#&#8203;8000](astral-sh/uv#8000))

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

[Compare Source](astral-sh/uv@0.4.18...0.4.19)

##### Enhancements

-   Add managed downloads for CPython 3.13.0rc3 and 3.12.7 ([#&#8203;7880](astral-sh/uv#7880))
-   Display the target virtual environment path if non-default ([#&#8203;7850](astral-sh/uv#7850))
-   Preserve case-insensitive sorts in `uv add` ([#&#8203;7864](astral-sh/uv#7864))
-   Respect project upper bounds when filtering wheels on `requires-python` ([#&#8203;7904](astral-sh/uv#7904))
-   Add `--script` to `uv run` to treat an input as PEP 723 regardless of extension ([#&#8203;7739](astral-sh/uv#7739))
-   Improve legibility of build failure errors ([#&#8203;7854](astral-sh/uv#7854))
-   Show interpreter source during Python discovery query errors ([#&#8203;7928](astral-sh/uv#7928))

##### Configuration

-   Add `UV_FIND_LINKS` environment variable for `--find-links` ([#&#8203;7912](astral-sh/uv#7912))
-   Ignore empty string values for `UV_PYTHON` environment variable ([#&#8203;7878](astral-sh/uv#7878))

##### Bug fixes

-   Allow `py3x-none` tags in newer than Python 3.x ([#&#8203;7867](astral-sh/uv#7867))
-   Allow self-dependencies in the `dev` section ([#&#8203;7943](astral-sh/uv#7943))
-   Always ignore `cp2` wheels in resolution ([#&#8203;7902](astral-sh/uv#7902))
-   Clear the publish progress bar on retry ([#&#8203;7921](astral-sh/uv#7921))
-   Fix parsing of `gnueabi` libc variants in Python version requests ([#&#8203;7975](astral-sh/uv#7975))
-   Simplify supported environments when comparing to lockfile ([#&#8203;7894](astral-sh/uv#7894))
-   Trim commits when reading from Git refs ([#&#8203;7922](astral-sh/uv#7922))
-   Use a higher HTTP read timeout when publishing packages ([#&#8203;7923](astral-sh/uv#7923))
-   Remove the first empty line for `uv tree --package foo` ([#&#8203;7885](astral-sh/uv#7885))

##### Documentation

-   Add 3.13 support to the platform reference ([#&#8203;7971](astral-sh/uv#7971))
-   Clarify project environment creation ([#&#8203;7941](astral-sh/uv#7941))
-   Fix code block title in Gitlab integration docs ([#&#8203;7861](astral-sh/uv#7861))
-   Fix project guide section on adding a Git dependency ([#&#8203;7916](astral-sh/uv#7916))
-   Fix uninstallation command for Windows ([#&#8203;7944](astral-sh/uv#7944))
-   Clearly specify the minimum supported Windows Server version ([#&#8203;7946](astral-sh/uv#7946))

##### Rust API

-   Remove unused `Sha256Reader` ([#&#8203;7929](astral-sh/uv#7929))
-   Remove unnecessary `Deserialize` derives on settings ([#&#8203;7856](astral-sh/uv#7856))

</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
configuration Settings and such
Projects
None yet
Development

Successfully merging this pull request may close these issues.

empty UV_PYTHON is used as if it's set
3 participants