8e7fbea...
by
Charlie Marsh <email address hidden>
Split version map out from resolver index
0f592b6...
by
Charlie Marsh <email address hidden>
Remove clone from `RegistryWheelIndex` (#937)
Doesn't need to own the package names.
2a69b27...
by
Charlie Marsh <email address hidden>
Use a standalone error type for `--find-links` registry (#936)
e71e3e8...
by
Charlie Marsh <email address hidden>
Refresh `BuildDispatch` when running pip install with `--reinstall` (#933)
## Summary
This fixes an extremely subtle bug in `pip install --reinstall`, whereby
if you depend on `setuptools` at the top level, we end up uninstalling
it after resolving, which breaks some cached state. If we have
`--reinstall`, we need to reset that cached state between resolving and
installing.
116da6b...
by
Charlie Marsh <email address hidden>
Share in-flight map across resolutions (#932)
## Summary
This PR fixes a subtle bug in `pip install` when using `--reinstall`. If
a package depends on a build system directly (e.g., `waitress` depends
on `setuptools`), and then you have other packages that also need the
build system to build a source distribution, right now, we don't share
the `OnceMap` between those cases.
This lifts the `InFlight` tracking up a level, so that it's initialized
once per command, then shared everywhere.
## Test Plan
I'm having trouble coming up with an identical test-case and hesitant to
add this slow test to the suite... But if you run `pip install
--reinstall` with:
249ca10...
by
Charlie Marsh <email address hidden>
Move Puffin subcommands to a pip namespace (#921)
## Summary
This makes the separation clearer between the legacy `pip` API and the
API we'll add in the future for the package manager itself. It also
enables seamless `puffin pip` aliasing for those that want it.
Closes #918.
e54fdea...
by
Charlie Marsh <email address hidden>
Continue to respect `--find-links` with `--no-index` (#931)
Like `pip`, we should allow `--find-links` with `--no-index`.
42888a9...
by
Charlie Marsh <email address hidden>
Share flat index across resolutions (#930)
## Summary
This PR restructures the flat index fetching in a few ways:
1. It now lives in its own `FlatIndexClient`, since it felt a bit
awkward (in my opinion) for it to live in `RegistryClient`.
2. We now fetch the `FlatIndex` outside of the resolver. This has a few
benefits: (1) the resolver construct is no longer `async` and no longer
returns `Result`, which feels better for a resolver; and (2) we can
share the `FlatIndex` across resolutions rather than re-fetching it for
every source distribution build.
e6d7124...
by
Charlie Marsh <email address hidden>
Add an extra struct around the package-to-flat index map (#923)
## Summary
`FlatIndex` is now the thing that's keyed on `PackageName`, while
`FlatDistributions` is what used to be called `FlatIndex` (a map from
version to `PrioritizedDistribution`, for a single package). I find this
a bit clearer, since we can also remove the `from_files` that doesn't
return `Self`, which I had trouble following.
9a3f3d3...
by
Charlie Marsh <email address hidden>
Remove `PubGrubVersion` (#924)
## Summary
I'm running into some annoyances converting `&Version` to
`&PubGrubVersion` (which is just a wrapper type around `Version`), and I
realized... We don't even need `PubGrubVersion`?
The reason we "need" it today is due to the orphan trait rule: `Version`
is defined in `pep440_rs`, but we want to `impl
pubgrub::version::Version for Version` in the resolver crate.
Instead of introducing a new type here, which leads to a lot of
awkwardness around conversion and API isolation, what if we instead just
implement `pubgrub::version::Version` in `pep440_rs` via a feature? That
way, we can just use `Version` everywhere without any confusion and
conversion for the wrapper type.