[Python-Dev] Documenting sorted/min/max prerequisites

2019-12-14 Thread Steven D'Aprano
The list.sort method is documented to only use less than:

https://docs.python.org/3/library/stdtypes.html#list.sort

but I don't think that is correct, it seems to use greater than if it 
exists and less than doesn't. My understanding is that items need to 
define one of l.t. or g.t. to make it sortable, not the full complement 
of six rich comparison methods.

The same seems to be the case for sorted, min and max, but none of them 
have documented that fact:

https://docs.python.org/3/library/functions.html#max
https://docs.python.org/3/library/functions.html#min
https://docs.python.org/3/library/functions.html#sorted

Should we document that all four functions will use l.t. if it exists, 
otherwise g.t. if it exists, but don't need both?


-- 
Steven
___
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/5AQMG6ADD6RGPLI3VTILB2MKXMBFTIGU/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Documenting sorted/min/max prerequisites

2019-12-14 Thread Serhiy Storchaka

14.12.19 12:45, Steven D'Aprano пише:

The list.sort method is documented to only use less than:

https://docs.python.org/3/library/stdtypes.html#list.sort

but I don't think that is correct, it seems to use greater than if it
exists and less than doesn't. My understanding is that items need to
define one of l.t. or g.t. to make it sortable, not the full complement
of six rich comparison methods.


What evidence do you have that it is not correct?
___
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/ZRWAQLPB4SIT7BWLOOKK2DGEK7KJZ635/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Documenting sorted/min/max prerequisites

2019-12-14 Thread Steven D'Aprano
On Sat, Dec 14, 2019 at 02:40:04PM +0200, Serhiy Storchaka wrote:
> 14.12.19 12:45, Steven D'Aprano пише:
> >The list.sort method is documented to only use less than:
> >
> >https://docs.python.org/3/library/stdtypes.html#list.sort
> >
> >but I don't think that is correct, it seems to use greater than if it
> >exists and less than doesn't. My understanding is that items need to
> >define one of l.t. or g.t. to make it sortable, not the full complement
> >of six rich comparison methods.
> 
> What evidence do you have that it is not correct?


I might be misinterpreting the evidence, but sorting works on objects 
that define `__gt__` without `__lt__`.

py> class A:
... def __init__(self, x): self.x = x
... def __gt__(self, other): return self.x > other.x
...
py> L = [A(9), A(1), A(8)]
py> L.sort()
py> [obj.x for obj in L]
[1, 8, 9]


But the main part of my question is whether we should make the same 
guarantee for sorted, min and max as we already make for list.sort.



-- 
Steven
___
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/K7BSMHSC5SWDS3222SI3M4UJ4FHCQRFX/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Documenting sorted/min/max prerequisites

2019-12-14 Thread Serhiy Storchaka

14.12.19 15:29, Steven D'Aprano пише:

I might be misinterpreting the evidence, but sorting works on objects
that define `__gt__` without `__lt__`.

py> class A:
... def __init__(self, x): self.x = x
... def __gt__(self, other): return self.x > other.x
...
py> L = [A(9), A(1), A(8)]
py> L.sort()
py> [obj.x for obj in L]
[1, 8, 9]


This class supports '<':

>>> A(1) < A(2)
True

The `<` operator try to use `__lt__`, but if it is not defined falls 
back to `__gt__`.

___
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/DJ7L3REYQ23HLXRY425Y4J725WJSTHON/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Documenting sorted/min/max prerequisites

2019-12-14 Thread Christian Heimes
On 14/12/2019 15.20, Serhiy Storchaka wrote:
> 14.12.19 15:29, Steven D'Aprano пише:
>> I might be misinterpreting the evidence, but sorting works on objects
>> that define `__gt__` without `__lt__`.
>>
>> py> class A:
>> ... def __init__(self, x): self.x = x
>> ... def __gt__(self, other): return self.x > other.x
>> ...
>> py> L = [A(9), A(1), A(8)]
>> py> L.sort()
>> py> [obj.x for obj in L]
>> [1, 8, 9]
> 
> This class supports '<':
> 
 A(1) < A(2)
> True
> 
> The `<` operator try to use `__lt__`, but if it is not defined falls
> back to `__gt__`.

The operation "a < b" also fallback back to B.__gt__, when A.__lt__
returns NotImplemented for instances of B.

Christian
___
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/PAMPK6TS7TVBDAB54OEJEBJCNT75VW3X/
Code of Conduct: http://python.org/psf/codeofconduct/