Petri Lehtinen <pe...@digip.org> added the comment: Attached a patch with the following changes:
Allow an integer argument in range(0, 256) for the following bytes and bytearray methods: count, find, index, rfind, rindex. Initially, only count and index were targeted, but as index is implemented in a helper function that is also used to implement find, rfind and rindex, these functions were affected too. The bytes methods were changed to use the new buffer protocol instead of the deprecated PyObject_AsCharBuffer, for consistency with the bytearray code. Tests for all the modified functions were expanded to cover the new functionality. While at it, the tests for count, index and rindex were also further expanded (to test for slices, for example), as they were initially quite minimal. A paragraph describing the additional semantics of the five methods was added to the documentation. The error messages of index and rindex were left untouched ("substring not found" and "subsection not found"). In a case where the first argument is an integer, the error messages could talk about a byte instead of substring/subsection. This would have been a bit non-straightforward to implement, so I didn't. The docstrings were also left unchanged, as I couldn't find a good wording for them. The problem is not that the first argument may now be an integer, but as it can now be more than a substring or subsection, we might have to specify what a substring or subsection really means. And that explanation would be lengthy (because of the buffer protocol, that's not a concept that a regular Python programmer is, or even needs to be, familiar with)... And finally, there's one thing that I'm unsure of: When an integer out of range(0, 256) is passed as the first argument, should we raise a ValueError or a TypeError? Currently, a ValueError is raised, but this may be bad for index and rindex, as they raise a ValueError when the substring or byte is not found. I made the decision to raise a ValueError decision because __contains__ of both bytes and bytearray raise a ValueError when passed an integer not in range(0, 256). ---------- keywords: +needs review, patch stage: test needed -> patch review Added file: http://bugs.python.org/file22733/issue12170.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue12170> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com