
This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.
Created on2013-12-21 19:52 byBreamoreBoy, last changed2022-04-11 14:57 byadmin. This issue is nowclosed.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 4158 | merged | serhiy.storchaka,2017-10-28 16:26 | |
| PR 4162 | merged | serhiy.storchaka,2017-10-29 08:47 | |
| PR 4163 | merged | serhiy.storchaka,2017-10-29 08:47 | |
| PR 9268 | merged | ZackerySpytz,2018-09-13 17:57 | |
| Messages (10) | |||
|---|---|---|---|
| msg206773 -(view) | Author: Mark Lawrence (BreamoreBoy)* | Date: 2013-12-21 19:52 | |
If partition is called with a single byte it works correctly but if called with the equivalent integer it returns the same bytearray with two empty arrays as follows.py> ba = bytearray(range(8))py> babytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07')py> 3 in baTruepy> ba.find(3) == ba.index(3) == ba.find(b'\x03')Truepy> ba.partition(b'\x03')(bytearray(b'\x00\x01\x02'), bytearray(b'\x03'), bytearray(b'\x04\x05\x06\x07'))py> ba.partition(3)(bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07'), bytearray(b''), bytearray(b''))More background on the thread starting herehttps://mail.python.org/pipermail/python-list/2013-December/663111.html which refers toIssue 12170. | |||
| msg206774 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-12-21 20:00 | |
Similar bug was in 3.2:>>> ba = bytearray(range(8))>>> ba[2:6]bytearray(b'\x02\x03\x04\x05')>>> ba[2:6] = 2>>> babytearray(b'\x00\x01\x00\x00\x06\x07')Now it is fixed. | |||
| msg206775 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2013-12-21 20:12 | |
Bytearray slice assignment bug was fixed inissue8401. | |||
| msg206792 -(view) | Author: Terry J. Reedy (terry.reedy)*![]() | Date: 2013-12-21 22:22 | |
Whatever the change, bytes and bytearray should act the same.>>> b = bytes(range(8))>>> bb'\x00\x01\x02\x03\x04\x05\x06\x07'>>> b.partition(3)Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> b.partition(3)TypeError: expected bytes, bytearray or buffer compatible objectAs noted in the thread, ba.partition(a) apparently is executed as ba.partition(bytearray(a)) if a is not a bytearray (or maybe not a buffer object). bytearray(3) == bytearray((0,0,0)) and the latter is not in ba and hence the output given is 'correct'. | |||
| msg206793 -(view) | Author: Mark Lawrence (BreamoreBoy)* | Date: 2013-12-21 22:38 | |
I believe that all methods should act the same, but they don't as a result of the work done inissue12170. E.g. find will accept integer input but split will not. Given this comment at the top of test_bytes.py "XXX This is a mess. Common tests should be moved to buffer_tests.py, which itself ought to be unified with string_tests.py (and the latter should be modernized).", it looks like a thorough review of the code and tests is in order. | |||
| msg305167 -(view) | Author: Terry J. Reedy (terry.reedy)*![]() | Date: 2017-10-28 20:35 | |
To answer Mark, even though no longer nosy: In general, sequence methods .count, .index, and .__contains__ take sequence members and only members as arguments. Unicode sequences are exceptional because codepoints are not Python objects, so string subsequences must be used instead. Byte-like sequences are also exceptional in that both members and subsequences are accepted for these methods.String-like sequence methods .split and .partition take subsequences as arguments. I think the doc should make this clearer. | |||
| msg305170 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2017-10-28 23:12 | |
New changeseta2314283ff87c65e1745a42c2f2b716b1a209128 by Serhiy Storchaka in branch 'master':bpo-20047: Make bytearray methods partition() and rpartition() rejecting (#4158)https://github.com/python/cpython/commit/a2314283ff87c65e1745a42c2f2b716b1a209128 | |||
| msg305183 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2017-10-29 10:24 | |
New changeset9ea5a3a45b35d01b602e7e4da4f72b2db407e5c6 by Serhiy Storchaka in branch '3.6':[3.6]bpo-20047: Make bytearray methods partition() and rpartition() rejecting (GH-4158) (#4162)https://github.com/python/cpython/commit/9ea5a3a45b35d01b602e7e4da4f72b2db407e5c6 | |||
| msg305184 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2017-10-29 10:25 | |
New changeset107f3cc791d223dc06b7c80f0de672e88ae6a8d1 by Serhiy Storchaka in branch '2.7':[2.7]bpo-20047: Make bytearray methods partition() and rpartition() rejecting (GH-4158) (#4163)https://github.com/python/cpython/commit/107f3cc791d223dc06b7c80f0de672e88ae6a8d1 | |||
| msg325306 -(view) | Author: Berker Peksag (berker.peksag)*![]() | Date: 2018-09-13 23:16 | |
New changeset0b9fe1734168d45861d6dc3022492387dec5a4a2 by Berker Peksag (Zackery Spytz) in branch '2.7':[2.7]bpo-20047: RemoveObjects/bytesobject.c from 2.7 (GH-9268)https://github.com/python/cpython/commit/0b9fe1734168d45861d6dc3022492387dec5a4a2 | |||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:57:55 | admin | set | github: 64246 |
| 2018-09-13 23:16:44 | berker.peksag | set | nosy: +berker.peksag messages: +msg325306 |
| 2018-09-13 17:57:12 | ZackerySpytz | set | pull_requests: +pull_request8700 |
| 2017-10-29 10:26:39 | serhiy.storchaka | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2017-10-29 10:25:40 | serhiy.storchaka | set | messages: +msg305184 |
| 2017-10-29 10:24:50 | serhiy.storchaka | set | messages: +msg305183 |
| 2017-10-29 08:47:59 | serhiy.storchaka | set | pull_requests: +pull_request4132 |
| 2017-10-29 08:47:19 | serhiy.storchaka | set | pull_requests: +pull_request4131 |
| 2017-10-28 23:12:01 | serhiy.storchaka | set | messages: +msg305170 |
| 2017-10-28 20:35:41 | terry.reedy | set | messages: +msg305167 |
| 2017-10-28 16:26:52 | serhiy.storchaka | set | keywords: +patch stage: patch review pull_requests: +pull_request4127 |
| 2017-10-28 16:00:14 | serhiy.storchaka | set | assignee:serhiy.storchaka versions: + Python 2.7, Python 3.6, Python 3.7, - Python 3.3, Python 3.4 |
| 2014-02-03 15:39:10 | BreamoreBoy | set | nosy: -BreamoreBoy |
| 2013-12-30 16:06:01 | brett.cannon | set | nosy: +brett.cannon |
| 2013-12-21 22:38:39 | BreamoreBoy | set | messages: +msg206793 |
| 2013-12-21 22:22:26 | terry.reedy | set | nosy: +terry.reedy messages: +msg206792 |
| 2013-12-21 20:12:07 | serhiy.storchaka | set | nosy: +loewis,georg.brandl,mark.dickinson,pitrou,ezio.melotti messages: +msg206775 |
| 2013-12-21 20:00:48 | serhiy.storchaka | set | nosy: +serhiy.storchaka messages: +msg206774 versions: + Python 3.4 |
| 2013-12-21 19:52:41 | BreamoreBoy | create | |