Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
bpo-30969: Fix docs about the comparison in absence of __contains__#2761
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Both the `__iter__` and the index-iteration method test the `is` first. While the document says that `x is x` means that `x == x` should be true, it is not true for example in the case of `nan`. ```>>> x = float('nan') >>> x == xFalse>>> x is xTrue>>> class Foo:... def __iter__(self):... return iter([x])... >>> x in Foo()True>>> any(x == i for i in Foo())False>>> class Bar:... def __getitem__(self):... return [x].__getitem__(self)... >>> class Bar:... def __getitem__(self, i):... return [x].__getitem__(i)... >>> x in BarTraceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: argument of type 'type' is not iterable>>> x in Bar()True>>> any(x == i for i in Bar())False```mention-bot commentedJul 19, 2017
@ztane, thanks for your PR! By analyzing the history of the files in this pull request, we identified@birkenfeld,@vadmium and@benjaminp to be potential reviewers. |
Doc/reference/expressions.rst Outdated
| :meth:`__iter__`, ``x in y`` is ``True`` if some value ``z`` with ``x == z`` is | ||
| produced while iterating over ``y``. If an exception is raised during the | ||
| iteration, it is as if:keyword:`in` raised that exception. | ||
| :meth:`__iter__`, ``x in y`` is ``True`` if some value ``z``, for which the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@ztane trailing space in the three lines are causing CI failure. Removing them will fix the issue. Thanks for the patch.
Doc git:(pr_2761) python3 tools/rstlint.py -i tools -i ./venv -i README.rst[1] reference/expressions.rst:1446: trailing whitespace[1] reference/expressions.rst:1447: trailing whitespace[1] reference/expressions.rst:1448: trailing whitespace3 problems with severity 1 found.@ztane, please apply the suggestions from@tirkarthi to fix the CI failures. Thanks! |
…ythonGH-2761)(cherry picked from commit2f5b9dc)Co-authored-by: Antti Haapala <antti@haapala.name>
bedevere-bot commentedMay 30, 2019
GH-13684 is a backport of this pull request to the3.7 branch. |
Uh oh!
There was an error while loading.Please reload this page.
The documentation doesn't match the implementation, which clearly does
x is y or x == yto check ifxis the elementyfrom a container. Both the__iter__and the index-iteration method test the elements usingisfirst. While the document says thatx is xmeans thatx == xshould be true, it is not true for example in the case ofnan: