[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Changes by Serhiy Storchaka :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:


New changeset 079f21f873b99f9564a41c5b7f3e0d7035847ae5 by Serhiy Storchaka in 
branch '2.7':
bpo-29935: Fixed error messages in the index() method of tuple and list (#887) 
(#907) (#910)
https://github.com/python/cpython/commit/079f21f873b99f9564a41c5b7f3e0d7035847ae5


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:


New changeset 8b8bde44f3912d8b2df5591ffc31d2d8c6dcca6c by Serhiy Storchaka in 
branch '3.5':
bpo-29935: Fixed error messages in the index() method of tuple, list and deque 
(#887) (#907) (#909)
https://github.com/python/cpython/commit/8b8bde44f3912d8b2df5591ffc31d2d8c6dcca6c


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Changes by Serhiy Storchaka :


--
pull_requests: +810

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Changes by Serhiy Storchaka :


--
pull_requests: +809

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:


New changeset bf4bb2e43030661e568d5d4b046e8b9351cc164c by Serhiy Storchaka in 
branch '3.6':
bpo-29935: Fixed error messages in the index() method of tuple, list and deque 
(#887) (#907)
https://github.com/python/cpython/commit/bf4bb2e43030661e568d5d4b046e8b9351cc164c


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Changes by Serhiy Storchaka :


--
pull_requests: +807

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:


New changeset d4edfc9abffca965e76ebc5957a92031a4d6c4d4 by Serhiy Storchaka in 
branch 'master':
bpo-29935: Fixed error messages in the index() method of tuple, list and deque 
(#887)
https://github.com/python/cpython/commit/d4edfc9abffca965e76ebc5957a92031a4d6c4d4


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:

Thank you Raymond for your review.

In any case we should first fix error messages in maintain releases. Changing 
signatures of methods of basic type should be discussed on the mailing lists. I 
don't think this needs a PEP, unless this change will be extended to many other 
methods and types.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Raymond Hettinger

Raymond Hettinger added the comment:

Sorry, modifying these mature APIs is a really bad idea.  They are worked well 
as-is of over a decade.  Seeing people use None for these arguments makes the 
code less readable. 

Python has a number of APIs where the number of arguments controls the 
behavior.  For example, type() with one argument does something very different 
that type() with three arguments.  Likewise, iter() behaves differently with 
two arguments than three.  The pattern used by index() shows-up in a number of 
places where we have optional start and end arguments.  These APIs are a long 
standing Python norm, both for the core and for third-party modules.  Type 
checking will have to adapt to norms rather than having all of Python change 
for the convenience of typing.

Serhiy, please go ahead with the doc fix.

If the OP really wants to insist on changing old and stable APIs through out 
the language in a way that I consider harmful to readability, we can battle it 
out in a PEP and on mailing lists.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-30 Thread Jelle Zijlstra

Jelle Zijlstra added the comment:

I agree with George that supporting None here is the better option.

This problem also applies to collections.deque. tuple, list, and deque all have 
very similar index implementations, and it would be nice to merge their 
argument parsing boilerplate.

--
nosy: +Jelle Zijlstra

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-29 Thread George King

George King added the comment:

I think it is a mistake not to support None values. Please consider:

The existing message clearly suggests that the intent is to support the same 
set of values as the start/stop parameters of the slice type. str, bytes, and 
bytearray all support None for `index`, as well as `count`, `find`, `rfind`, 
and `rindex`.

Not supporting None makes the type signature of list.index and tuple.index 
subtly different from those of str, bytes, and bytearray, when they could 
otherwise be interchangeable. It makes the type signature of index inconsistent 
across the types.

Furthermore, it makes converting slice start/stop to these arguments a pain. 
Compare the following:

seq.index(start=slice.start, end=slice.stop) # accepting None

seq.index(start=(0 if slice.start is None else slice.start), end=(len(seq) 
if slice.stop is None else slice.stop)) # current behavior.

I do not buy the argument that the latter communicates intent better, and it is 
adds bug-prone baggage to every call site.


Similarly, being able to pass None for end/stop parameters is very convenient 
in the case of optional passthrough arguments, saving the programmer from this:
def f(seq, end=None):
  i = seq.index(start=0, end=(len(seq) if end is None else end)) # current 
behavior.
  ...

Note that for the programmer writing `f`, None (or some other distinct sentinel 
value) is a *requirement* for correctness, because end=len(seq) is incorrect.

I would understand opposition to this on the basis of not changing existing 
behavior in any way, but "communicating intent" seems like a thin argument in 
comparison to the above.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-29 Thread Serhiy Storchaka

Changes by Serhiy Storchaka :


--
pull_requests: +789

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-29 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:

I concur with Raymond. Proposed patch fixes error messages and doesn't change 
the public API.

--
stage:  -> patch review
type: enhancement -> behavior
versions: +Python 2.7, Python 3.5, Python 3.6

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-29 Thread Raymond Hettinger

Raymond Hettinger added the comment:

The error message should be fixed and the API should be left alone.  A *None* 
value doesn't do a good jog of communicating intent.

--
nosy: +rhettinger

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-28 Thread Serhiy Storchaka

Changes by Serhiy Storchaka :


--
assignee:  -> serhiy.storchaka
nosy: +serhiy.storchaka

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-28 Thread George King

Changes by George King :


--
type:  -> enhancement

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-28 Thread Jim Fasarakis-Hilliard

Changes by Jim Fasarakis-Hilliard :


--
components: +Interpreter Core
versions: +Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29935] list and tuple index methods should accept None parameters

2017-03-28 Thread George King

New submission from George King:

As of python3.6, passing None to the start/end parameters of `list.index` and 
`tuple.index` raises the following exception:
"slice indices must be integers or None or have an __index__ method"

This suggests that the intent is to support None as a valid input. This would 
be quite useful for the end parameter, where the sensible default is len(self) 
rather than a constant. Note also that str, bytes, and bytearray all support 
None.

I suggest that CPython be patched to support None for start/end. Otherwise, at 
the very least the exception message should be changed.

Accepting None will make the optional start/end parameters for this method more 
consistent across the types, which is especially helpful when using type 
annotations / checking.

--
messages: 290737
nosy: gwk
priority: normal
severity: normal
status: open
title: list and tuple index methods should accept None parameters

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com