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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
All sequence types support .index and .count #53955
Comments
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 bpo-9213) |
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). |
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 |
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? |
Doc patch looks good. |
Well, I think that script not more necessary count problem: bpo-10474 |
Patch is fine. Go ahead and apply. |
Patch committed in r86625 (py3k), r86627 (3.1) and r86627 (2.7). Regarding API conformance, I ran this simple test, courtesy of Daniel in msg109784: >>> 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! |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: