astral-uv:zb/no-more-flake-plz

Last commit made on 2024-01-19
Get this branch:
git clone -b zb/no-more-flake-plz https://git.launchpad.net/astral-uv

Branch merges

Branch information

Name:
zb/no-more-flake-plz
Repository:
lp:astral-uv

Recent commits

6e38f50... by Zanie <email address hidden>

DEMO: Changing Python constraints changes deriviation tree ordering

459c2ab... by Charlie Marsh <email address hidden>

Avoid canonicalizing paths in `requirements-txt` (#1019)

## Summary

When you specify an editable that doesn't exist, it should error, but
not in the parser -- the error should be downstream.

d55e34c... by Charlie Marsh <email address hidden>

Make editable URL parsing more robust (#1018)

This just generalizes the parsing to handle arbitrary schemes instead of
encoding a fixed list.

7292493... by Charlie Marsh <email address hidden>

Upgrade cargo-dist (#1016)

c663959... by Charlie Marsh <email address hidden>

Rename `pep440-rs` to `Readme.md` (#1014)

This is due to a bug in Maturin
(https://github.com/PyO3/maturin/pull/1915), so I'll just fix our setup
to work with existing versions.

Closes https://github.com/astral-sh/puffin/issues/991.

7b36519... by Charlie Marsh <email address hidden>

Add support for ARM Linux builds in release (#1012)

Closes #992.

33b35f7... by Zanie Blue <email address hidden>

Add support for disabling installation from pre-built wheels (#956)

Adds support for disabling installation from pre-built wheels i.e. the
package must be built from source locally.
We will still always use pre-built wheels for metadata during
resolution.

Available via `--no-binary` and `--no-binary-package <name>` flags in
`pip install` and `pip sync`. There is no flag for `pip compile` since
no installation happens there.

```
--no-binary

    Don't install pre-built wheels.

    When enabled, all installed packages will be installed from a source distribution.
    The resolver will still use pre-built wheels for metadata.

--no-binary-package <NO_BINARY_PACKAGE>

    Don't install pre-built wheels for a specific package.

    When enabled, the specified packages will be installed from a source distribution.
    The resolver will still use pre-built wheels for metadata.
```

When packages are already installed, the `--no-binary` flag will have no
affect without the `--reinstall` flag. In the future, I'd like to change
this by tracking if a local distribution is from a pre-built wheel or a
locally-built wheel. However, this is significantly more complex and
different than `pip`'s behavior so deferring for now.

For reference, `pip`'s flag works as follows:

```
--no-binary <format_control>

    Do not use binary packages. Can be supplied multiple times, and each time adds to the
    existing value. Accepts either ":all:" to disable all binary packages, ":none:" to empty the
    set (notice the colons), or one or more package names with commas between them (no colons).
    Note that some packages are tricky to compile and may fail to install when this option is
    used on them.
```

Note we are not matching the exact `pip` interface here because it seems
complicated to use. I think we may want to consider adjusting our
interface for this behavior since we're not entirely compatible anyway
e.g. I think `--force-build` and `--force-build-package` are clearer
names. We could also consider matching the `pip` interface or only
allowing `--no-binary <package>` for compatibility. We can of course do
whatever we want in our _own_ install interfaces later.

Additionally, we may want to further consider the semantics of
`--no-binary`. For example, if I run `pip install pydantic --no-binary`
I expect _just_ Pydantic to be installed without binaries but by default
we will build all of Pydantic's dependencies too.

This work was prompted by #895, as it is much easier to measure
performance gains from building source distributions if we have a flag
to ensure we actually build source distributions. Additionally, this is
a flag I have used frequently in production to debug packages that ship
Cythonized wheels.

8b49d90... by Zanie Blue <email address hidden>

Refer to the user instead of "root" when mentioning direct dependencies (#982)

Closes https://github.com/astral-sh/puffin/issues/857

ae7a2cd... by Zanie Blue <email address hidden>

Avoid showing negations of ranges in error messages (#981)

Closes https://github.com/astral-sh/puffin/issues/980

02ed195... by Zanie Blue <email address hidden>

Improve simple no version messages using complement of range (#979)

Improves some of the "no versions of <package> are available" messages
by showing the complement or inversion of the package.

Does not address cases like

```
Because there are no versions of crow that satisfy any of:
    crow>1.0.0,<2.0.0a5
    crow>2.0.0a7,<2.0.0b1
    crow>2.0.0b1,<2.0.0b5
...
```

which are a bit more complicated; I'll focus on those cases in a
follow-up.