-
Notifications
You must be signed in to change notification settings - Fork 3k
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
AttributeError: 'NoneType' object has no attribute 'excluded_of' on pip 20.3 #9180
Comments
Thanks for the report! I am able to reproduce without kombu (i.e. |
(For maintainers) So the issue is in the new backtracking code: incompatibilities_from_broken = [
(k, v.incompatibilities)
for k, v in broken_state.criteria.items()
]
# Snipped.
for k, incompatibilities in incompatibilities_from_broken:
try:
crit = self.state.criteria[k]
except KeyError:
continue
self.state.criteria[k] = crit.excluded_of(incompatibilities)
|
If I use the commit before the resolvelib update:
IIUC, the criterion being empty is what we should expect in this case? And I think we should be backtracking in that case? |
I was not expecting it to happen because at this point we are re-applying the incompatibilities from the broken state, but not the final incompatibility that broke the broken state. Those incompatibilities should therefore not break the new state either, since the broken state should not reach the point it is in in the first place if that’s the case. The newly-added incompatibility (which will be added later) should be the only one that may break the new state, if my reasoning is correct. Assuming my reasoning in wrong, yes, we should bactrack in this case. |
Maybe? I'm gonna step through a debugger for this. |
@rcjsuen I just want to say: Hello and thank you for your bug report! I'm sorry you're having trouble right now. Thank you for sharing your report with us. I'll mention here one useful troubleshooting and workaround tip from the documentation: If you need a temporary workaround, you can choose the old resolver behavior using the flag (If you don't mind, please also tell us what could have happened differently so you could have tested and caught and reported this during the pip resolver beta period.) |
@brainwane No worries, happy to help.
We worked around the issue by pinning our dependencies so that they do not cause a conflict. Thank you for suggesting this workaround though as I'm sure others reading this issue may get some use out of it.
Honestly, I don't think there was any way I could have caught this earlier. Our builds just run |
I'm also running into this issue. I don't think pip should be crashing for any set of dependencies right? It should just error out. I expect many people will soon run into this issue as more base docker images including the new version of pip are pushed out. I will follow this issue to see what happens, but for now we are reverting to the old resolver as recommended here. |
Sorry this hasn't gotten fixed yet; we have it on the roadmap to fix in the bugfix release 20.3.3.
In pip 20.2, a beta of the new resolver was available, opt-in, using the flag |
@brainwane No, it would not have helped me because I have no interest in enabling a flag for a beta feature in our build pipeline.
I think you certainly should offer such a flag so people can test new and upcoming features. You should be aware that it does not mean people will test said new features though. Everyone has their own priorities and I have to admit that testing beta features for pip is not high on my list. |
Did a fix for this make it into 20.3.3? I see that was released a few days ago. |
No, there was a critical bug in 20.3.2, and 20.3.3 was assigned as an emergency release to fix that instead. This will likely be in 20.3.4. |
OK, thanks for the update. |
215: Update pip to 21.0.1 r=duckinator a=pyup-bot This PR updates [pip](https://pypi.org/project/pip) from **20.3.3** to **21.0.1**. <details> <summary>Changelog</summary> ### 21.0.1 ``` =================== Bug Fixes --------- - commands: debug: Use packaging.version.parse to compare between versions. (`9461 <https://github.com/pypa/pip/issues/9461>`_) - New resolver: Download and prepare a distribution only at the last possible moment to avoid unnecessary network access when the same version is already installed locally. (`9516 <https://github.com/pypa/pip/issues/9516>`_) Vendored Libraries ------------------ - Upgrade packaging to 20.9 ``` ### 21.0 ``` ================= Deprecations and Removals ------------------------- - Drop support for Python 2. (`6148 <https://github.com/pypa/pip/issues/6148>`_) - Remove support for legacy wheel cache entries that were created with pip versions older than 20.0. (`7502 <https://github.com/pypa/pip/issues/7502>`_) - Remove support for VCS pseudo URLs editable requirements. It was emitting deprecation warning since version 20.0. (`7554 <https://github.com/pypa/pip/issues/7554>`_) - Modernise the codebase after Python 2. (`8802 <https://github.com/pypa/pip/issues/8802>`_) - Drop support for Python 3.5. (`9189 <https://github.com/pypa/pip/issues/9189>`_) - Remove the VCS export feature that was used only with editable VCS requirements and had correctness issues. (`9338 <https://github.com/pypa/pip/issues/9338>`_) Features -------- - Add ``--ignore-requires-python`` support to pip download. (`1884 <https://github.com/pypa/pip/issues/1884>`_) - New resolver: Error message shown when a wheel contains inconsistent metadata is made more helpful by including both values from the file name and internal metadata. (`9186 <https://github.com/pypa/pip/issues/9186>`_) Bug Fixes --------- - Fix a regression that made ``pip wheel`` do a VCS export instead of a VCS clone for editable requirements. This broke VCS requirements that need the VCS information to build correctly. (`9273 <https://github.com/pypa/pip/issues/9273>`_) - Fix ``pip download`` of editable VCS requirements that need VCS information to build correctly. (`9337 <https://github.com/pypa/pip/issues/9337>`_) Vendored Libraries ------------------ - Upgrade msgpack to 1.0.2. - Upgrade requests to 2.25.1. Improved Documentation ---------------------- - Render the unreleased pip version change notes on the news page in docs. (`9172 <https://github.com/pypa/pip/issues/9172>`_) - Fix broken email link in docs feedback banners. (`9343 <https://github.com/pypa/pip/issues/9343>`_) .. note You should *NOT* be adding new change log entries to this file, this file is managed by towncrier. You *may* edit previous change logs to fix problems like typo corrections or such. To add a new change log entry, please see https://pip.pypa.io/en/latest/development/contributing/#news-entries .. towncrier release notes start ``` ### 20.3.4 ``` =================== Features -------- - ``pip wheel`` now verifies the built wheel contains valid metadata, and can be installed by a subsequent ``pip install``. This can be disabled with ``--no-verify``. (`9206 <https://github.com/pypa/pip/issues/9206>`_) - Improve presentation of XMLRPC errors in pip search. (`9315 <https://github.com/pypa/pip/issues/9315>`_) Bug Fixes --------- - Fixed hanging VCS subprocess calls when the VCS outputs a large amount of data on stderr. Restored logging of VCS errors that was inadvertently removed in pip 20.2. (`8876 <https://github.com/pypa/pip/issues/8876>`_) - Fix error when an existing incompatibility is unable to be applied to a backtracked state. (`9180 <https://github.com/pypa/pip/issues/9180>`_) - New resolver: Discard a faulty distribution, instead of quitting outright. This implementation is taken from 20.2.2, with a fix that always makes the resolver iterate through candidates from indexes lazily, to avoid downloading candidates we do not need. (`9203 <https://github.com/pypa/pip/issues/9203>`_) - New resolver: Discard a source distribution if it fails to generate metadata, instead of quitting outright. This implementation is taken from 20.2.2, with a fix that always makes the resolver iterate through candidates from indexes lazily, to avoid downloading candidates we do not need. (`9246 <https://github.com/pypa/pip/issues/9246>`_) Vendored Libraries ------------------ - Upgrade resolvelib to 0.5.4. ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/pip - Changelog: https://pyup.io/changelogs/pip/ - Homepage: https://pip.pypa.io/ </details> Co-authored-by: pyup-bot <github-bot@pyup.io>
Environment
This error has happened locally on my computer, in CircleCI, and in Docker.
Description
Some combination of dependencies seems to cause an
AttributeError
to be thrown.Expected behavior
I would expect pip to complete (noting the dependency issue between
redis-log-handler
andredis
) but at least not dying due to an exçeption.How to Reproduce
docker build .
pip install celery==5.0.2 kombu==5.0.2 "billiard<4.0,>=3.6.0" redis==3.5.3 redis-log-handler==0.0.1.dev32
in your virtual environment and you should be able to reproduce the error.Output
The text was updated successfully, but these errors were encountered: