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

[2020-resolver] No longer can get list of available versions. #9139

Closed
vityas opened this issue Nov 16, 2020 · 28 comments · Fixed by #9405
Closed

[2020-resolver] No longer can get list of available versions. #9139

vityas opened this issue Nov 16, 2020 · 28 comments · Fixed by #9405
Labels
state: needs discussion This needs some more discussion UX: functionality research epic Temporary label to link tickets to #8516

Comments

@vityas
Copy link

vityas commented Nov 16, 2020

What did you want to do?

I would like to list all the available versions of a package. In the past we would use this:

pip install pip==asdf  # any gibberish here :)

Output

ERROR: Could not find a version that satisfies the requirement pip==asdf
ERROR: No matching distribution found for pip==asdf

expected output (pip==20.2.4)

ERROR: Could not find a version that satisfies the requirement pip==asdf (from versions: 0.2, 0.2.1, 0.3, 0.3.1, 0.4, 
0.5, 0.5.1, 0.6, 0.6.1, 0.6.2, 0.6.3, 0.7, 0.7.1, 0.7.2, 0.8, 0.8.1, 0.8.2, 0.8.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.2, 
1.2.1, 1.3, 1.3.1, 1.4, 1.4.1, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 6.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4, 
6.0.5, 6.0.6, 6.0.7, 6.0.8, 6.1.0, 6.1.1, 7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.1.0, 7.1.1, 7.1.2, 8.0.0, 8.0.1, 8.0.2, 
8.0.3, 8.1.0, 8.1.1, 8.1.2, 9.0.0, 9.0.1, 9.0.2, 9.0.3, 10.0.0b1, 10.0.0b2, 10.0.0, 10.0.1, 18.0, 18.1, 19.0, 
19.0.1, 19.0.2, 19.0.3, 19.1, 19.1.1, 19.2, 19.2.1, 19.2.2, 19.2.3, 19.3, 19.3.1, 20.0, 20.0.1, 20.0.2, 20.1b1, 
20.1, 20.1.1, 20.2b1, 20.2, 20.2.1, 20.2.2, 20.2.3, 20.2.4, 20.3b1)

Additional information

  • Using verbose flag: pip install -v pip==asdf we can sorta see that versions. (300 line output, too long to post here)
    Seems like no extra requests needed. I wasn't 100% sure if it was the case.
  • This is useful when debugging failed installation of a requirement.txt, pipenv or other 3rd party package managers
@brainwane brainwane added C: new resolver state: needs discussion This needs some more discussion UX: functionality research epic Temporary label to link tickets to #8516 labels Nov 18, 2020
@pradyunsg pradyunsg added this to Needs triage in New Resolver Implementation Nov 29, 2020
@brainwane brainwane moved this from Needs triage to Post-release work in New Resolver Implementation Nov 29, 2020
@brainwane
Copy link
Contributor

@vityas thank you for this bug report, which I've just discussed with pip maintainer @pradyunsg.

I understand what you're concerned about. It used to be the case that if you ran that particular command, pip would tell you about all the versions of that package available in the index you were hitting (such as PyPI). Now pip doesn't print that info about versions by default, with the new resolver.

This was not a useful error message for people who UNINTENTIONALLY got it, but it was the only way to get (on the command line) a list of all the available versions of a package on PyPI or on another index.

If you're hitting PyPI, you can go the release history page for a project, such as https://pypi.org/project/pip/#history , but with the new resolver behavior, currently, there's no easy way to get this info in the CLI directly and in a concise format. pip hits an index and gets the list, but now doesn't present it by default. And if you turn up verbosity, you get the info but in a hard-to-use format, as you said.

Right now, in order to expedite the release of pip 20.3 this week. I'm marking it as post-release work.

For now, we advise you to (per the deprecation timeline) opt-out and choose the old resolver behavior for now, using the flag --use-deprecated=legacy-resolver.

But also: you're bringing further attention to two problems with pip's functionality more generally. pip has a few functions, such as pip search, which offer a little bit of discoverability to help users see what is available in package indexes. Pradyun wants to consolidate functionality and design for these features. And we know that pip's output, especially its --verbose output, needs work. So I hope you will please talk to our UX people, @nlhkabu @ei8fdb and @georgiamoon, by signing up for the user experience studies, to help them work on the larger project of making our verbose output and our package discoverability functionality better.

Thank you!

@RafalSkolasinski
Copy link

RafalSkolasinski commented Dec 1, 2020

I would really love to see this back - it seemed like the most streamlined way to find out what versions one can install. See this highly voted stack answer here.

@pfmoore
Copy link
Member

pfmoore commented Dec 1, 2020

It's definitely not (and never was) a supported way of getting that information. But I can imagine the possibility that we might implement a supported way of getting the same data. Although to be honest, as long as you just want to get the information from PyPI (and don't need to support extra indexes, or local package repositories) it's not that hard to write something yourself that gets the same information, using the PyPI JSON interface, plus packaging.tags for doing the wheel compatibility checks.

Maybe someone could publish a "PyPI query" package that did things like this? It might be an interesting project for someone who wants to get into working with the packaging ecosystem.

@RafalSkolasinski
Copy link

RafalSkolasinski commented Dec 1, 2020

I believe that at this point this is just a behaviour that many people may have relied on for years. Sometimes things that were not meant to be present but were just become part of what is expected.

@brainwane
Copy link
Contributor

@RafalSkolasinski Thanks for sharing your experience! Indeed, we're getting a lot of demonstrations of Hyrum's Law as we engage in this work this year. :-)

As you saw in a comment above, when prioritizing what to address and what to leave for later, I decided to leave this particular issue for later. We've had to be incredibly limited in what we build and fix with the funding we got to work on pip this year. It runs out at the end of December. One of the things we did with that funding was set up a more systematic way to hear from our users about how you use pip, what features you use, and so on, to help us make better decisions -- user experience research and testing. I hope you will sign up for the user experience surveys and share your opinion in more depth that way. (For example, you could share whether you always use PyPI or whether this functionality is important to you when installing from other sources as well.)

And the pip team has no reliable future funding, and can do a lot more if companies that depend on Python packaging tools chip in (here's the packaging sponsorship program).

@NoahGorny
Copy link
Contributor

Hello folks!
I had a PR #8978 which proposes a new way to look at the available versions (pip search <packages> --list-all-versions)

If you support this idea, please let folks here know so we can move forward with this offer 😄

cc @ei8fdb

@wimglenn
Copy link
Contributor

wimglenn commented Dec 5, 2020

This was not a useful error message for people who UNINTENTIONALLY got it

@brainwane I disagree with that, actually it's still useful even when UNINTENTIONALLY getting it. If I did pip install distlib==0.29.post0 and saw:

ERROR: Could not find a version that satisfies the requirement distlib==0.29.post0
(from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.2.0, 0.2.1, 
0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.9.post0, 0.3.0, 0.3.1)

That tells me I just had a silly typo and I wanted 0.2.9.post0. But if I saw

ERROR: Could not find a version that satisfies the requirement distlib==0.29.post0 (from versions: none)

It tells me something else, probably that I have misconfigured my index urls and I should check the pip config. In 20.3.x

ERROR: Could not find a version that satisfies the requirement

This is less helpful again. Is my index misconfigured? Could it find any version at all? Do I just need to wait a moment or clear pip's cache - maybe I just published this package recently?

pip search afaik is broken and slated to be removed (#5216). At least, I could not find any way to use it reliably (and couldn't get it working at all with a devpi-server index).

Thank you for mentioning the --use-deprecated=legacy-resolver option! For the purposes of keeping the project johnnydep functioning on pip 20.3.x, this helped for now. Currently it scrapes pip's CLI output in a way that needs careful tweaking and testing each time a new version of pip is released. So here's a bit of UX feedback, it would be really nice if there was a less fragile way to get:

  • download urls
  • package dependencies
  • versions available

It's definitely not (and never was) a supported way of getting that information.

@pfmoore So how do we get that information? A while ago pip moved all package finding code under _internal and made it explicit that a CLI subprocess was the only supported way to use pip from your program. This is arguably an important part of the CLI.

it's not that hard to write something yourself that gets the same information, using the PyPI JSON

I think that is oversimplifying the problem. It might be true if pip was only a PyPI client, but it's a lot more than that isn't it? Pip's the de facto tool for working with Python packages, whether from PyPI or not, since we don't really have one in the stdlib.

To repeat again the points in #1884: the PyPI JSON is not in general "the same information" because where pip looks is highly configurable, e.g. we may have another --index-url and then an --extra-index-url and maybe that index is just a simple repository which is supporting a JSON api at all. There are a lot of little details here and doing it in a way that accurately produces the same packages that pip would see would mean reproducing a significant amount of package finder code found within pip._internal.

@ddelange
Copy link
Contributor

@brainwane thanks for your explanation on why this feature (I'm gonna call it a feature as we rely on it in johnnydep, pipgrip, probably more) was deprecated in the new resolver.

Like mentioned above, it would be quite cumbersome and most likely introducing bugs to move away from using this feature in pip, so I've dropped support for pip 21 (hoping to loosen that constraint again though!), and will keep an eye out for this issue.

Thanks for all your hard work and responses throughout these exciting times! 🙏

@earonesty
Copy link

earonesty commented Dec 21, 2020

imo: removing output that helped with diagnosis (a version typo), seems to go against a basic unix philosophy "Write programs which fail in a way that is easy to diagnose".

@Mahlzeit2000
Copy link

Mahlzeit2000 commented Dec 27, 2020

imo this feature should be brought back in or at least outsourced to a new option thats bit less unwieldy than sudo pip3 --use-deprecated=legacy-resolver install xx==. The new behavoir can be misleading and less useful for the many reasons already stated.

@thephet
Copy link

thephet commented Dec 28, 2020

This feature must come back. It is terrible design to remove it. It was very useful to navigate between different package versions. Basically, when an upgrade of a package breaks something, to be able to roll back to the previous version.

@MrMino
Copy link
Contributor

MrMino commented Dec 29, 2020

This has been a canonical feature of Pip for many of its users for at least 6 years now. I've given this tip out numerous times at work, I'm probably not the only one. There's this SO answer - +950 rep on a 10 year-old, very specific question that's been viewed 280k times. Tooling that uses pip has been scraping this data for years.

If you wish to remove this output, then to appease users you'll have to add a feature that makes it possible to list it out. And one that is as succinct and streamlined as appending ==. By the looks of it, there's nothing else possible that comes close.

Listing versions by appending == is, simply put, a good feature.

We've come to enjoy it due to a happy accident related to how pip handles its arguments. But that doesn't mean it's not valuable and shouldn't be there.

If you're not going to add == usage back, then the discussion is probably a waste of time. A longer flag or a subcommand will feel like a chore to type when a version is mistyped. At that point it indeed would be a good idea to create a separate tool, if only it wasn't for the fact that it would have to clone large chunks of code from Pip in order for the outputs to be relevant for the issue at hand.

UX-wise you have to remember you are operating in a regime where each keystroke is a considerable cost. Anyone who uses == a lot is familiar with the following typing-scheme:

pip install package== →  <desired_version>

or

pip install package==<wrong_version> →  ←BP ←BP ←BP ... <desired_version>

The convenience factor of this is huge. I doubt anyone will be able to come up with anything better.

Trying to fix the lack of that by adding --list-versions as an available flag is misguided. Not to bash on @NoahGorny's idea - pip should have an explicit, user-facing feature that makes it possible to obtain the list. But #8978 should be discussed separately to this issue.

IMO pip search is, to put it lightly - irrelevant. It produces unreliable and overly verbose results, uses different index from pip install, not to mention the XMLRPC API has been temporarily disabled of PyPI and #5216.

@MrMino

This comment has been minimized.

@miraculixx
Copy link

Following the workaround noted by @brainwane I'm using this little helper

# in .bashrc
function pip-versions {
  pip install --use-deprecated=legacy-resolver $1==
}

Then e.g.

$ pip-versions six
ERROR: Could not find a version that satisfies the requirement six== (from versions: 0.9.0, 0.9.1, 0.9.2, 1.0b1, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.9.0, 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0, 1.15.0)
ERROR: No matching distribution found for six==

Not nice, good enough for now

@MrMino
Copy link
Contributor

MrMino commented Dec 31, 2020

There. It's even better than the previous thing, at least for me. WARNING is probably wrong, but the yellow text is cool™. This could still use some sorting - currently it uses set() to exclude duplicates, which means that ordering might not be correct, for I'm too lazy to do it properly. Not sure if I should use list(OrderedDict.fromkeys(...)) to simply preserve it, or distutils.LooseVersion to sort explicitly.

Some dupes still go through for some reason, but I'm too tired this year to find out why (edit: actually, I just forgot to reinstall pip after patching this, its fixed already).

This is how it looks right now. In case where the library is nowhere to be found (also, when cache is not used):
null_case

In case the version is wrong:
bad_version

When you have multiple indexes specified, the diagnostic will only mention the ones in which the package version/s were found. Having multiple indexes logged looks something like this (some info redacted because I'm NDA-scared):
multiple_indexes

See you next year.

@andreasnuesslein
Copy link

just for completeness sake, this affects saltstack as well: saltstack/salt#59100

@brainwane
Copy link
Contributor

As I mentioned in early December, in a comment above:

We've had to be incredibly limited in what we build and fix with the funding we got to work on pip this year. It runs out at the end of December.

And the pip team has no reliable future funding, and can do a lot more if companies that depend on Python packaging tools chip in (here's the packaging sponsorship program).

FYI, that funding has now run out. As far as I know, no one is currently paid to work on pip (including code review). It's all volunteers.

@MrMino
Copy link
Contributor

MrMino commented Jan 12, 2021

@brainwane As far as I can tell it's been reviewed already: #9405.

patrick-kidger added a commit to patrick-kidger/signatory that referenced this issue Jan 15, 2021
@Asday
Copy link

Asday commented Feb 13, 2021

pip has a few functions, such as pip search,

Posted Nov 2020. I wonder if that's what lead to the DDoS(?) of the XMLRPC endpoint.

@MrMino
Copy link
Contributor

MrMino commented Feb 13, 2021

@Asday has that increased usage of it started in November? I thought it was earlier?

@ddelange
Copy link
Contributor

ddelange commented Feb 19, 2021

The suggested workaround (--use-deprecated=legacy-resolver) was supposed to be deprecated in pip v21, however it wasn't.

What is the new deprecation timeline?

refs
#9139 (comment)
#9187 (comment)

@pfmoore
Copy link
Member

pfmoore commented Feb 19, 2021

@ddelange I think the honest answer is "as soon as one of the developers gets round to it"... (one of the consequences of the funded period having completed is that "tidy up" activities like this are back to being purely volunteer-based). The fact that the removal was delayed may have given users a little bit longer, but it doesn't really alter the message that people should have found alternatives to relying on the old resolver, and should no longer be using it as of the 21.0 release. Prudence suggests that you should assume it'll go without further warning in 21.1 (April).

The only reason I don't offer to just remove it now, for the sake of being definite, is that there's a lot of non-user-visible work needed to remove all of the tests that check the old resolver's behaviour, and I don't feel like spending my time on that.

@MrMino
Copy link
Contributor

MrMino commented Feb 19, 2021

work needed to remove all of the tests that check the old resolver's behaviour, and I don't feel like spending my time on that.

@pfmoore is there an issue made for that? Maybe we can help?

@pfmoore
Copy link
Member

pfmoore commented Feb 19, 2021

@MrMino A PR removing the legacy resolver would be great (or even just one that removed the option and fixed the tests, and left actual removal of the old resolver code for later).

I can't promise I'll have a lot of time to review such a PR (my review time is almost as limited as my coding time at the moment) but maybe other @pypa/pip-committers could help out there.

@Asday
Copy link

Asday commented Feb 19, 2021

A PR removing the legacy resolver would be great

Unless I'm missing something, no it wouldn't. That would remove the ability to get the list of versions entirely.

@MrMino
Copy link
Contributor

MrMino commented Feb 20, 2021

@Asday Are you sure you're not missing #9405 ? ;)

@Asday
Copy link

Asday commented Feb 20, 2021

Sure aren't - that's not merged yet. I also have a feeling that "remove deprecated thing" would be merged faster than "add new feature".

jondequinor added a commit to equinor/komodo that referenced this issue Feb 23, 2021
Uses `pip install foo==` which will output all available versions to
STDERR. The last package is then chosen.

This API is deprecated ref pypa/pip#9139 but
is seemingly kept around until a replacement is made.
jondequinor added a commit to equinor/komodo that referenced this issue Feb 23, 2021
Uses `pip install foo==` which will output all available versions to
STDERR. The last package is then chosen.

This API is deprecated ref pypa/pip#9139 but
is seemingly kept around until a replacement is made.
jondequinor added a commit to equinor/komodo that referenced this issue Feb 23, 2021
Uses `pip install foo==` which will output all available versions to
STDERR. The last package is then chosen.

This API is deprecated ref pypa/pip#9139 but
is seemingly kept around until a replacement is made.
@fenchu
Copy link

fenchu commented Feb 26, 2021

please get this meged (21.0.1 does not have it), when you work on alpha and beta modules this is a complete pain, I do not remember --use-deprecated=legacy-resolver

inmantaci added a commit to inmanta/inmanta-core that referenced this issue Apr 27, 2021
Bumps [pip](https://github.com/pypa/pip) from 21.0.1 to 21.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pypa/pip/blob/main/NEWS.rst">pip's changelog</a>.</em></p>
<blockquote>
<h1>21.1 (2021-04-24)</h1>
<h2>Process</h2>
<ul>
<li>Start installation scheme migration from <code>distutils</code> to <code>sysconfig</code>. A
warning is implemented to detect differences between the two implementations to
encourage user reports, so we can avoid breakages before they happen.</li>
</ul>
<h2>Features</h2>
<ul>
<li>Add the ability for the new resolver to process URL constraints. (<code>[#8253](pypa/pip#8253) &lt;https://github.com/pypa/pip/issues/8253&gt;</code>_)</li>
<li>Add a feature <code>--use-feature=in-tree-build</code> to build local projects in-place
when installing. This is expected to become the default behavior in pip 21.3;
see <code>Installing from local packages &lt;https://pip.pypa.io/en/stable/user_guide/#installing-from-local-packages&gt;</code>_
for more information. (<code>[#9091](pypa/pip#9091) &lt;https://github.com/pypa/pip/issues/9091&gt;</code>_)</li>
<li>Bring back the &quot;(from versions: ...)&quot; message, that was shown on resolution failures. (<code>[#9139](pypa/pip#9139) &lt;https://github.com/pypa/pip/issues/9139&gt;</code>_)</li>
<li>Add support for editable installs for project with only setup.cfg files. (<code>[#9547](pypa/pip#9547) &lt;https://github.com/pypa/pip/issues/9547&gt;</code>_)</li>
<li>Improve performance when picking the best file from indexes during <code>pip install</code>. (<code>[#9748](pypa/pip#9748) &lt;https://github.com/pypa/pip/issues/9748&gt;</code>_)</li>
<li>Warn instead of erroring out when doing a PEP 517 build in presence of
<code>--build-option</code>. Warn when doing a PEP 517 build in presence of
<code>--global-option</code>. (<code>[#9774](pypa/pip#9774) &lt;https://github.com/pypa/pip/issues/9774&gt;</code>_)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>Fixed <code>--target</code> to work with <code>--editable</code> installs. (<code>[#4390](pypa/pip#4390) &lt;https://github.com/pypa/pip/issues/4390&gt;</code>_)</li>
<li>Add a warning, discouraging the usage of pip as root, outside a virtual environment. (<code>[#6409](pypa/pip#6409) &lt;https://github.com/pypa/pip/issues/6409&gt;</code>_)</li>
<li>Ignore <code>.dist-info</code> directories if the stem is not a valid Python distribution
name, so they don't show up in e.g. <code>pip freeze</code>. (<code>[#7269](pypa/pip#7269) &lt;https://github.com/pypa/pip/issues/7269&gt;</code>_)</li>
<li>Only query the keyring for URLs that actually trigger error 401.
This prevents an unnecessary keyring unlock prompt on every pip install
invocation (even with default index URL which is not password protected). (<code>[#8090](pypa/pip#8090) &lt;https://github.com/pypa/pip/issues/8090&gt;</code>_)</li>
<li>Prevent packages already-installed alongside with pip to be injected into an
isolated build environment during build-time dependency population. (<code>[#8214](pypa/pip#8214) &lt;https://github.com/pypa/pip/issues/8214&gt;</code>_)</li>
<li>Fix <code>pip freeze</code> permission denied error in order to display an understandable error message and offer solutions. (<code>[#8418](pypa/pip#8418) &lt;https://github.com/pypa/pip/issues/8418&gt;</code>_)</li>
<li>Correctly uninstall script files (from setuptools' <code>scripts</code> argument), when installed with <code>--user</code>. (<code>[#8733](pypa/pip#8733) &lt;https://github.com/pypa/pip/issues/8733&gt;</code>_)</li>
<li>New resolver: When a requirement is requested both via a direct URL
(<code>req @ URL</code>) and via version specifier with extras (<code>req[extra]</code>), the
resolver will now be able to use the URL to correctly resolve the requirement
with extras. (<code>[#8785](pypa/pip#8785) &lt;https://github.com/pypa/pip/issues/8785&gt;</code>_)</li>
<li>New resolver: Show relevant entries from user-supplied constraint files in the
error message to improve debuggability. (<code>[#9300](pypa/pip#9300) &lt;https://github.com/pypa/pip/issues/9300&gt;</code>_)</li>
<li>Avoid parsing version to make the version check more robust against lousily
debundled downstream distributions. (<code>[#9348](pypa/pip#9348) &lt;https://github.com/pypa/pip/issues/9348&gt;</code>_)</li>
<li><code>--user</code> is no longer suggested incorrectly when pip fails with a permission
error in a virtual environment. (<code>[#9409](pypa/pip#9409) &lt;https://github.com/pypa/pip/issues/9409&gt;</code>_)</li>
<li>Fix incorrect reporting on <code>Requires-Python</code> conflicts. (<code>[#9541](pypa/pip#9541) &lt;https://github.com/pypa/pip/issues/9541&gt;</code>_)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pypa/pip/commit/2b2a268d25963727c2a1c805de8f0246b9cd63f6"><code>2b2a268</code></a> Bump for release</li>
<li><a href="https://github.com/pypa/pip/commit/ea761a6575f37b90cf89035ee8be3808cf872184"><code>ea761a6</code></a> Update AUTHORS.txt</li>
<li><a href="https://github.com/pypa/pip/commit/2edd3fdf2af2f09dce5085ef0eb54684b4f9bc04"><code>2edd3fd</code></a> Postpone a deprecation to 21.2</li>
<li><a href="https://github.com/pypa/pip/commit/3cccfbf169bd35133ee25d2543659b9c1e262f8c"><code>3cccfbf</code></a> Rename mislabeled news fragment</li>
<li><a href="https://github.com/pypa/pip/commit/21cd124b5d40b510295c201b9152a65ac3337a37"><code>21cd124</code></a> Fix NEWS.rst placeholder position</li>
<li><a href="https://github.com/pypa/pip/commit/e46bdda9711392fec0c45c1175bae6db847cb30b"><code>e46bdda</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/9827">#9827</a> from pradyunsg/fix-git-improper-tag-handling</li>
<li><a href="https://github.com/pypa/pip/commit/0e4938d269815a5bf1dd8c16e851cb1199fc5317"><code>0e4938d</code></a> 📰</li>
<li><a href="https://github.com/pypa/pip/commit/ca832b2836e0bffa7cf95589acdcd71230f5834e"><code>ca832b2</code></a> Don't split git references on unicode separators</li>
<li><a href="https://github.com/pypa/pip/commit/1320bac4ff80d76b8fba2c8b4b4614a40fb9c6c3"><code>1320bac</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/9814">#9814</a> from pradyunsg/revamp-ci-apr-2021-v2</li>
<li><a href="https://github.com/pypa/pip/commit/e9cc23ffd97cb6d66d32dc3ec27cf832524bb33d"><code>e9cc23f</code></a> Skip checks on PRs only</li>
<li>Additional commits viewable in <a href="https://github.com/pypa/pip/compare/21.0.1...21.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pip&package-manager=pip&previous-version=21.0.1&new-version=21.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually

</details>
inmantaci added a commit to inmanta/inmanta-core that referenced this issue May 18, 2021
Bumps [pip](https://github.com/pypa/pip) from 21.0.1 to 21.1.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pypa/pip/blob/main/NEWS.rst">pip's changelog</a>.</em></p>
<blockquote>
<h1>21.1.1 (2021-04-30)</h1>
<h2>Deprecations and Removals</h2>
<ul>
<li>Temporarily set the new &quot;Value for ... does not match&quot; location warnings level
to <em>DEBUG</em>, to hide them from casual users. This prepares pip 21.1 for CPython
inclusion, while pip maintainers digest the first intake of location mismatch
issues for the <code>distutils</code>-<code>sysconfig</code> transition. (<code>[#9912](pypa/pip#9912) &lt;https://github.com/pypa/pip/issues/9912&gt;</code>_)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>This change fixes a bug on Python <!-- raw HTML omitted -->`_)</li>
<li>Fix compatibility between distutils and sysconfig when the project name is unknown outside of a virtual environment. (<code>[#9838](pypa/pip#9838) &lt;https://github.com/pypa/pip/issues/9838&gt;</code>_)</li>
<li>Fix Python 3.6 compatibility when a PEP 517 build requirement itself needs to be
built in an isolated environment. (<code>[#9878](pypa/pip#9878) &lt;https://github.com/pypa/pip/issues/9878&gt;</code>_)</li>
</ul>
<h1>21.1 (2021-04-24)</h1>
<h2>Process</h2>
<ul>
<li>Start installation scheme migration from <code>distutils</code> to <code>sysconfig</code>. A
warning is implemented to detect differences between the two implementations to
encourage user reports, so we can avoid breakages before they happen.</li>
</ul>
<h2>Features</h2>
<ul>
<li>Add the ability for the new resolver to process URL constraints. (<code>[#8253](pypa/pip#8253) &lt;https://github.com/pypa/pip/issues/8253&gt;</code>_)</li>
<li>Add a feature <code>--use-feature=in-tree-build</code> to build local projects in-place
when installing. This is expected to become the default behavior in pip 21.3;
see <code>Installing from local packages &lt;https://pip.pypa.io/en/stable/user_guide/#installing-from-local-packages&gt;</code>_
for more information. (<code>[#9091](pypa/pip#9091) &lt;https://github.com/pypa/pip/issues/9091&gt;</code>_)</li>
<li>Bring back the &quot;(from versions: ...)&quot; message, that was shown on resolution failures. (<code>[#9139](pypa/pip#9139) &lt;https://github.com/pypa/pip/issues/9139&gt;</code>_)</li>
<li>Add support for editable installs for project with only setup.cfg files. (<code>[#9547](pypa/pip#9547) &lt;https://github.com/pypa/pip/issues/9547&gt;</code>_)</li>
<li>Improve performance when picking the best file from indexes during <code>pip install</code>. (<code>[#9748](pypa/pip#9748) &lt;https://github.com/pypa/pip/issues/9748&gt;</code>_)</li>
<li>Warn instead of erroring out when doing a PEP 517 build in presence of
<code>--build-option</code>. Warn when doing a PEP 517 build in presence of
<code>--global-option</code>. (<code>[#9774](pypa/pip#9774) &lt;https://github.com/pypa/pip/issues/9774&gt;</code>_)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>Fixed <code>--target</code> to work with <code>--editable</code> installs. (<code>[#4390](pypa/pip#4390) &lt;https://github.com/pypa/pip/issues/4390&gt;</code>_)</li>
<li>Add a warning, discouraging the usage of pip as root, outside a virtual environment. (<code>[#6409](pypa/pip#6409) &lt;https://github.com/pypa/pip/issues/6409&gt;</code>_)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pypa/pip/commit/c53d88c4c374523425f4db6bef949090764465c0"><code>c53d88c</code></a> Bump for release</li>
<li><a href="https://github.com/pypa/pip/commit/4417e7f4bef2b2c70767c1dbfe72f82cc6b7b83f"><code>4417e7f</code></a> Update AUTHORS.txt</li>
<li><a href="https://github.com/pypa/pip/commit/0c29bfe48e650c5a428b77eba4af7f067c019cc8"><code>0c29bfe</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/9912">#9912</a> from uranusjr/sysconfig-remove-warning-for-python-re...</li>
<li><a href="https://github.com/pypa/pip/commit/f56ec327b92ebe836e63e07cb2449a20e09dec38"><code>f56ec32</code></a> Make location mismatch messages DEBUG level</li>
<li><a href="https://github.com/pypa/pip/commit/999b121402302a00b235a0d443f5661b69d6fd60"><code>999b121</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/9883">#9883</a> from uranusjr/isolated-pip-py36-compat</li>
<li><a href="https://github.com/pypa/pip/commit/f88420319db450aefbed1500f04e31be46874aaf"><code>f884203</code></a> Fallback to self-invoke via directory on 3.6</li>
<li><a href="https://github.com/pypa/pip/commit/7a77484a492c8f1e1f5ef24eaf71a43df9ea47eb"><code>7a77484</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/9835">#9835</a> from jamescurtin/9831-bugfix</li>
<li><a href="https://github.com/pypa/pip/commit/914bcc3dba88179f4e88ce90b63660474ba795cd"><code>914bcc3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pypa/pip/issues/9838">#9838</a> from uranusjr/sysconfig-header-with-none-project</li>
<li><a href="https://github.com/pypa/pip/commit/2a009a0b8a5d8d03117897f0f11f9c1dcf2a4b5a"><code>2a009a0</code></a> Better explanatory comment</li>
<li><a href="https://github.com/pypa/pip/commit/e7b1722efeaf4ff403142847ce1b52caedd5efcd"><code>e7b1722</code></a> Set dist_name to UNKNOWN when empty outside venv</li>
<li>Additional commits viewable in <a href="https://github.com/pypa/pip/compare/21.0.1...21.1.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pip&package-manager=pip&previous-version=21.0.1&new-version=21.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually

</details>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 1, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
state: needs discussion This needs some more discussion UX: functionality research epic Temporary label to link tickets to #8516
Projects
No open projects
New Resolver Implementation
  
Post-release work
Development

Successfully merging a pull request may close this issue.