New submission from Martijn Pieters <m...@python.org>:

Currently, the sorting HOWTO at 
https://docs.python.org/3/howto/sorting.html#odd-and-ends contains the text:

> The sort routines are guaranteed to use __lt__() when making comparisons 
> between two objects. So, it is easy to add a standard sort order to a class 
> by defining an __lt__() method

Nowhere else in the Python documentation is this guarantee made, however. That 
sort currently uses __lt__ only is, in my opinion, an implementation detail.

The above advice also goes against the advice PEP 8 gives:

> When implementing ordering operations with rich comparisons, it is best to 
> implement all six operations (__eq__, __ne__, __lt__, __le__, __gt__, __ge__) 
> rather than relying on other code to only exercise a particular comparison.
>
> To minimize the effort involved, the functools.total_ordering() decorator 
> provides a tool to generate missing comparison methods.

The 'guarantee' seems to have been copied verbatim from the Wiki version of the 
HOWTO in 
https://github.com/python/cpython/commit/0fe095e87f727f4a19b6cbfd718d51935a888740,
 where that part of the Wiki page was added by an anonymous user in revision 44 
to the page: 
https://wiki.python.org/moin/HowTo/Sorting?action=diff&rev1=43&rev2=44

Can this be removed from the HOWTO?

----------
assignee: docs@python
components: Documentation
messages: 332949
nosy: docs@python, mjpieters, rhettinger
priority: normal
severity: normal
status: open
title: Remove 'guarantee' that sorting only relies on __lt__ from sorting howto
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35654>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to