msg115397 - (view) |
Author: Daniel Stutzbach (stutzbach)  |
Date: 2010-09-02 19:19 |
In the list of operations supported by all sequence types, the .index and .count methods should be included. They are defined by the collections.Sequence ABC that all sequences support. (except for range objects, but that will be fixed in Issue9213) |
|
|
msg116117 - (view) |
Author: Éric Araujo (eric.araujo) *  |
Date: 2010-09-11 19:14 |
For the person wanting to make a patch: Beware that the abstract collections.Sequence.index method does not support the start and stop arguments, even though concrete methods may (list.index, tuple.index and str.index for example). |
|
|
msg121788 - (view) |
Author: Iuri Diniz (iuridiniz) |
Date: 2010-11-20 21:45 |
Is this bug valid? I have checked that only bytearray, bytes, list, range, str and tuple are valid sequence types [using issubclass(type, collections.Sequence)] and all of them has index and count methods... I'm working on a script to discovery what types that are not collections.Sequence ABC yet, but must be. Merwork said the docs are the authoritative reference to define what classes are sequences and one way to discovery it is by comparing the set of methods of each concrete class with the methods of collections.Sequence |
|
|
msg121795 - (view) |
Author: SilentGhost (SilentGhost) *  |
Date: 2010-11-20 22:15 |
Here is the patch for the table in Doc/library/stdtypes.rst .count on range by some reason returns a boolean. Should it not be an int? |
|
|
msg121796 - (view) |
Author: Éric Araujo (eric.araujo) *  |
Date: 2010-11-20 22:16 |
Doc patch looks good. |
|
|
msg121801 - (view) |
Author: Iuri Diniz (iuridiniz) |
Date: 2010-11-20 22:31 |
Well, I think that script not more necessary count problem: Issue10474 |
|
|
msg121814 - (view) |
Author: Raymond Hettinger (rhettinger) *  |
Date: 2010-11-20 23:31 |
Patch is fine. Go ahead and apply. |
|
|
msg121821 - (view) |
Author: Éric Araujo (eric.araujo) *  |
Date: 2010-11-21 00:46 |
Patch committed in r86625 (py3k), r86627 (3.1) and r86627 (2.7). Regarding API conformance, I ran this simple test, courtesy of Daniel in : >>> for cls in str, bytes, bytearray, list, tuple, range: ... print(cls, [method for method in set(dir(collections.Sequence)) - set(dir(cls)) if not method.startswith('_')]) ... <class 'str'> [] <class 'bytes'> [] <class 'bytearray'> [] <class 'list'> [] <class 'tuple'> [] <class 'range'> [] Which means we can close this. Thanks everyone! |
|
|