Commit Graph

1751 Commits

Author SHA1 Message Date
Charlie Marsh a4f125ca34 Avoid waiting for metadata for --no-deps editables (#3188)
## Summary

We don't emit a request for this, so we shouldn't wait for it either --
we already have the metadata!

Closes https://github.com/astral-sh/uv/issues/3184.
2024-04-22 16:29:19 +00:00
konsti 725004dcf1 Rename the second direct url to parsed url (#3187)
Previously, we got `pypi_types::DirectUrl` (the pypa spec
direct_url.json format) and `distribution_types::DirectUrl` (an enum of
all the url types we support). This lead me to confusion, so i'm
renaming the latter one to the more appropriate `ParsedUrl`.
2024-04-22 14:38:27 +00:00
konsti 82c4772e89 Move unnamed requirements to their own pep508_rs module and requirements-txt (#3186)
Another refactoring in preparation of using a richer requirements type.
No functional changes, only moves code around
2024-04-22 14:02:39 +00:00
konsti f29c991e21 Dedicated error type for direct url parsing (#3181)
Add a dedicated error type for direct url parsing. This change is broken
out from the new uv requirement type, which uses direct url parsing
internally.
2024-04-22 11:57:36 +00:00
Grzegorz Bokota 0e54cfb019 fix typo in readme (#3179)
## Summary

When creating #3162 I used a single quote `'` instead of grave accent ``
` ``
2024-04-22 08:32:05 +01:00
renovate[bot] 5f5e7b574e Update Rust crate hyper to v1.3.1 (#3168) 2024-04-21 22:53:55 -05:00
renovate[bot] e6a790b3d5 Update Rust crate axoupdater to v0.5.1 (#3167) 2024-04-21 22:53:42 -05:00
renovate[bot] f0d1eea6cd Update pre-commit dependencies (#3174) 2024-04-21 21:32:00 -05:00
renovate[bot] b15fe1836e Update Rust crate thiserror to v1.0.59 (#3172) 2024-04-21 21:30:16 -05:00
renovate[bot] 80f4f36a4f Update Rust crate serde_json to v1.0.116 (#3171) 2024-04-21 21:30:06 -05:00
renovate[bot] 0e7000e894 Update Rust crate serde to v1.0.198 (#3170) 2024-04-21 21:29:56 -05:00
renovate[bot] 79540003fc Update Rust crate reflink-copy to v0.1.17 (#3169) 2024-04-21 21:29:47 -05:00
Zanie Blue 496303a6a6 Update Rooster config to bump minor on breaking label (#3166)
Following https://github.com/astral-sh/uv/pull/3151
2024-04-21 16:01:08 -05:00
Charlie Marsh 1bf9d879ab Re-add Docker image to release pipeline (#3155)
## Summary

I already re-created and pushed the image, and set its visibility to
public (it defaults to private) -- see:
https://github.com/astral-sh/uv/pkgs/container/uv.

Closes https://github.com/astral-sh/uv/issues/2774.
2024-04-21 12:02:48 -04:00
Charlie Marsh 6c12e59d13 Add a versioning policy to the README (#3151)
## Summary

Roughly mirrors https://docs.astral.sh/ruff/versioning/, but slimmed
down for now.
2024-04-21 12:02:41 -04:00
Grzegorz Bokota 7efd13ca33 Add UV_CONSTRAINT environment variable to provide value for --constraint (#3162)
## Summary

This PR is adding `UV_CONSTRAINT` environment variable as analogous to
`PIP_CONSTRAINT` to allow providing constraint file via environment
variable. Implementing this will simplify adoption of uv in testing
procedure in projects that I'm involved (testing using tox).

This was my motivation for opening #1841 that is closed in favor of
#1789 which was closed without implementing this feature.

In this implementation, I have used space as a separator as analogous to
`pip`. This introduces an obvious problem if the path contains space.
Another option could be to use standard separator (`:` - UNIX like, `;`
- Windows). Which one did you prefer?

## Test Plan

It is my first contribution and first rust coding experience. It will be
nice if one could point how I should implement testing this.
2024-04-20 17:32:28 -04:00
Charlie Marsh bf1036832f Fix venvlauncher.exe reference in venv creation (#3160)
I can't get this to reproduce on GitHub Actions -- maybe the builds
there differ, or maybe the builds changed since we added this fix? I'll
check locally, but regardless, this is a typo.

Closes #3158.
2024-04-20 14:16:47 +00:00
Charlie Marsh b4ee7d7359 Bump version to v0.1.35 (#3153) 2024-04-19 19:58:15 -04:00
Charlie Marsh 4a98839c1d Move argument normalization into settings construction (#3103)
## Summary

No behavior changes, but the idea here is that we move the argument
normalization code (e.g., create an `Upgrade` struct from `--upgrade`
and `--upgrade-package`) into the `settings.rs` file, where we build the
common settings structs.

This reduces a lot of the logic and duplication across commands in
`main.rs`.
2024-04-19 23:45:08 +00:00
Charlie Marsh ac9c4e1f38 Move README sections around (#3152)
## Summary

"Custom CA certificates" is in the wrong place.
2024-04-19 23:36:04 +00:00
Charlie Marsh fda378fd29 Avoid preferring constrained over unconstrained packages (#3148)
## Summary

pip prefers somewhat-constrained over unconstrained packages... but only
if they're at equal depths in the tree. We don't have a way to track the
latter property yet (I've added a TODO), so for now, we should remove
this constraint -- it seems to be counter-productive.

I've filed https://github.com/astral-sh/uv/issues/3149 as a follow-up.

Closes https://github.com/astral-sh/uv/issues/3143

## Test Plan

- `git clone https://github.com/drivendataorg/zamba.git`
- `cat "-e .[tests]" > req.in`
- `cargo run venv && cargo run pip compile req.in --refresh -n
--python-platform linux --python-version 3.8`
2024-04-19 23:30:08 +00:00
Charlie Marsh 70b6bde254 Add --python-platform to configuration (#3147)
## Summary

Just for consistency with `--python-version`.
2024-04-19 23:08:03 +00:00
Charlie Marsh 5e4e2fa0bf Rename --platform to --python-platform (#3146)
## Summary

`--platform` is a flag that exists in `pip` and it has a different
meaning. (Not breaking as this hasn't been released yet anyway.)
2024-04-19 22:24:23 +00:00
Zanie Blue 4046b2bcfa Allow uv run to execute Python scripts directly (#3110)
e.g. `uv run foo.py` implies `python foo.py`

Future work includes #3096
2024-04-19 21:29:57 +00:00
Zanie Blue 91e32fec6f Bump astral-test commit snapshots (#3145)
I added distributions to these projects so the commit changed.

We could pin but we want to test for resolution... so we don't. These
are pretty static so this should be rare.
2024-04-19 21:20:34 +00:00
Charlie Marsh 9f2bc19eaf Enforce HTTP timeouts on a per-read (rather than per-request) basis (#3144)
## Summary

This leverages the new `read_timeout` property, which ensures that (like
pip) our timeout is not applied to the _entire_ request, but rather, to
each individual read operation.

Closes: #1921.

See: #1912.
2024-04-19 16:49:53 -04:00
Zanie Blue 31765c05bd Default to python when uv run does not recieve a command (#3109)
This means that a bare `uv run` invocation drops you into a REPL.

This behavior is internally controversial, and may best be served by a
dedicated `uv repl` command. I would imagine it's important to fail if
no command is given in _some_ circumstances, but those may be resolved
by _not_ doing this if we do not detect a TTY.

Regardless, I'm interested in giving this a try for a bit during this
experimental phase.
2024-04-19 15:15:38 +00:00
Zanie Blue 9bcc1943cc Allow workspace requirements to be ignored during uv run (#3108) 2024-04-19 14:52:04 +00:00
Zanie Blue 01a7b7a088 Read base requirements from pyproject.toml in uv run (#3101)
In addition to the requested requirements, we include requirements from
a `pyproject.toml` file if it exists and install the current directory.

Closes https://github.com/astral-sh/uv/issues/3104
2024-04-19 14:36:03 +00:00
Zanie Blue becb12642a Add uv run --with <pkg> to run a command with ephemeral requirements (#3077)
Holy cow does installation / resolution take a ton of options. We
side-step most of them here.

If the current environment satisfies the requirements, it is used.
Otherwise, we create a new environment with the requested dependencies.
2024-04-19 09:23:26 -05:00
Jack Cherng 7a163ba9f1 Fix uv pip compile with UV_SYSTEM_PYTHON=1 (#3136)
## Summary

Following up 

- https://github.com/astral-sh/uv/pull/3113
- https://github.com/astral-sh/uv/pull/3115

It looks like `uv pip compile` command with `UV_SYSTEM_PYTHON` is missed
because these two PRs are close in time. And thus resulting in


```bash
$ uv --version
uv 0.1.34 (9259eceeb 2024-04-19)
$ UV_SYSTEM_PYTHON=1 uv pip compile --upgrade requirements.in -o requirements.txt
error: invalid value '1' for '--system'
  [possible values: true, false]

For more information, try '--help'.
```

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
2024-04-19 08:48:55 -04:00
Charlie Marsh 93559d5c2a Add a --platform argument to enable resolving against a target platform (#3111)
## Summary

I've wanted to try this for a long time, so decided to give it a shot.
The basic idea is that you can provide a target triple (e.g.,
`--platform x86_64-pc-windows-msvc`) and resolve against that platform,
rather than the currently-running platform. It's functionally similar to
`--python-version`, though a bit simpler since there's no need to engage
with `Requires-Python`.

Our infrastructure is well-setup for this and so, in the end, it's
actually pretty straightforward: for each triple, we just need to
override the markers and platform tags.
2024-04-18 22:57:41 -04:00
Charlie Marsh 9259eceebc Bump version to v0.1.34 (#3134) 2024-04-19 02:15:04 +00:00
Charlie Marsh a241bc79b1 Add priorities for editables (#3133)
## Summary

We weren't setting a priority for editables, so they were being visited
last.

I think there's still a problem whereby we're not aggressive enough in
visiting recursive extras (and, in fact, that's making it really hard to
write a test -- I wrote a test, but the most-reduced case still fails,
and I'd need to add a layer of indirection to make it
fail-on-main-but-pass-on-this-branch), but that problem likely already
existed on main prior to #3087, so I just want to get this quick fix out
now.

Closes https://github.com/astral-sh/uv/issues/3127.

## Test Plan

- `git clone https://github.com/cda-tum/mqt-core.git`
- `cargo run venv`
- `cargo run pip install 'scikit-build-core[pyproject]>=0.8.1'
'setuptools_scm>=7' 'pybind11>=2.12' --resolution=lowest-direct`
- `cargo run pip install --no-build-isolation
'-ve.[test,qiskit,evaluation,coverage]' --resolution=lowest-direct`
2024-04-19 02:04:58 +00:00
Charlie Marsh 2e88bb6f1b Add a proxy layer for extras (#3100)
Given requirements like:

```
black==23.1.0
black[colorama]
```

The resolver will (on `main`) add a dependency on Black, and then try to
use the most recent version of Black to satisfy `black[colorama]`. For
sake of example, assume `black==24.0.0` is the most recent version. Once
the selects this most recent version, it'll fetch the metadata, then
return the dependencies for `black==24.0.0` with the `colorama` extra
enabled. Finally, it will tack on `black==24.0.0` (a dependency on the
base package). The resolver will then detect a conflict between
`black==23.1.0` and `black==24.0.0`, and throw out
`black[colorama]==24.0.0`, trying to next most-recent version.

This is both wasteful and can cause problems, since we're fetching
metadata for versions that will _never_ satisfy the resolver. In the
`apache-airflow[all]` case, I also ran into an issue whereby we were
attempting to build very old versions of `apache-airflow` due to
`apache-airflow[pandas]`, which in turn led to resolution failures.

The solution proposed here is that we create a new proxy package with
exactly two dependencies: one on `black` and one of `black[colorama]`.
Both of these packages must be at the same version as the proxy package,
so the resolver knows much _earlier_ that (in the above example) the
extra variant _must_ match `23.1.0`.
2024-04-19 01:04:59 +00:00
Zanie Blue 822ae19879 Restore seeding of authentication cache from index URLs (#3124)
Roughly reverts
https://github.com/astral-sh/uv/pull/2976/commits/f7820ceaa7a24613ce89da77c48a0454c1e94616
to reduce possible race conditions for pre-authenticated index URLs

Part of:

- https://github.com/astral-sh/uv/issues/3123
- https://github.com/astral-sh/uv/issues/3122
2024-04-18 19:48:21 -05:00
Charlie Marsh 5ca5d7da67 Add test for avoiding irrelevant extras (#3107)
## Summary

This PR adds a test that currently leads to an error, but should
successfully resolve as of https://github.com/astral-sh/uv/pull/3100.

The core idea is that if we have a pinned package, we shouldn't try to
build other versions of that package if we have an unconstrained variant
with an extra.
2024-04-19 00:47:27 +00:00
Charlie Marsh 3c9d925531 Avoid treating localhost URLs as local file paths (#3132)
## Summary

Closes https://github.com/astral-sh/uv/issues/3128.

## Test Plan

- `python -m http.server`
- `cargo run pip install
"http://localhost:8000/werkzeug-3.0.2-py3-none-any.whl"`
- `cargo run pip install
"http://localhost:8000/werkzeug-3.0.2-py3-none-any.whl"`
2024-04-19 00:37:33 +00:00
Charlie Marsh 0ce039d1f9 Remove Option<bool> for --no-cache (#3129)
## Summary

This was unintended. We ended up reverting `Option<bool>` everywhere,
but I missed this once since it's in a separate file.

(If you use `Option<bool>`, Clap requires a value, like `--no-cache
true`.)

## Test Plan

`cargo run pip install flask --no-cache`
2024-04-18 22:56:46 +00:00
Charlie Marsh 25deddd3bf Update list of shell environment variables (#3126) 2024-04-18 21:08:52 +00:00
Charlie Marsh 822e3dc0c5 Add UV_REQUIRE_HASHES environment variable (#3125)
Closes https://github.com/astral-sh/uv/issues/3117.
2024-04-18 21:07:08 +00:00
konsti c9eefc0833 Reset default -v level to debug (#3120)
Fixup from
https://github.com/astral-sh/uv/pull/2815/files#diff-9b6f8f13cfc3c9d7ef554182fa52c7466fa6037da54a97c03855b6068b481848L127-R127
2024-04-18 13:34:04 +00:00
Charlie Marsh 7688f464c8 Allow --python and --system on pip compile (#3115)
## Summary

I think these are useful to have for consistency, though the `--system`
variant requires some new threading.

Closes: https://github.com/astral-sh/uv/issues/2242.
2024-04-18 04:55:49 +00:00
Charlie Marsh 37aefbd199 Use BoolishValueParser for boolean environment variables (#3113)
## Summary

Right now, we only accept _exactly `UV_NATIVE_TLS=true` and
`UV_NATIVE_TLS=false`. `BoolishValueParser` accepts a wider range of
values:

```rust
/// True values are `y`, `yes`, `t`, `true`, `on`, and `1`.
pub(crate) const TRUE_LITERALS: [&str; 6] = ["y", "yes", "t", "true", "on", "1"];

/// False values are `n`, `no`, `f`, `false`, `off`, and `0`.
pub(crate) const FALSE_LITERALS: [&str; 6] = ["n", "no", "f", "false", "off", "0"];
```

I tend to use `0` and `1` personally so this surprised me.
2024-04-18 00:37:38 -04:00
Chan Kang 8c7d0a31e6 Hide password in the index printed via --emit-index-annotation (#3112)
## Summary

resolves https://github.com/astral-sh/uv/issues/3106

## Test Plan

added a simple test where the password provided in `UV_INDEX_URL` is
hidden in the output as expected.
2024-04-18 03:59:44 +00:00
Zanie Blue 01532d98c4 Add integration test coverage for netrc authentication (#3068)
Closes https://github.com/astral-sh/uv/issues/2465
2024-04-17 14:05:24 -05:00
Charlie Marsh aea8b0ae6c Rename --compile to --compile-bytecode (#3102)
## Summary

With an alias for backwards compatibility. It's clearer and matches the
setting in the TOML configuration (where `compile` was deemed too
vague).
2024-04-17 15:05:10 -04:00
Charlie Marsh 67d879dcad Add integration tests for configuration discovery (#3082) 2024-04-17 18:21:44 +00:00
Charlie Marsh f846fdc2b9 Add negation flags to the CLI (#3050)
## Summary

Now that we can pick up configuration values from persistent files, we
need to enable users to _disable_ those values from the CLI. For
example, if a user has `emit_index_url = true` in the configuration
file, they should be able to do `--no-emit-index-url` on the
command-line. This PR adds support for such negations, following the
same patterns we use in Ruff.
2024-04-17 14:16:09 -04:00
Charlie Marsh dfccdb0e39 Enable global configuration files (#3049)
## Summary

Enables `uv` to read configuration from (e.g.)
`/Users/crmarsh/.config/uv/uv.toml` on macOS and Linux, and
`C:\Users\Charlie\AppData\Roaming\uv\uv.toml` on Windows.

This differs slightly from Ruff, which uses the `Application Support`
directory on macOS. But I've deviated here. based on the preferences
expressed in https://github.com/astral-sh/ruff/issues/10739.
2024-04-17 13:59:50 -04:00