-
-
Notifications
You must be signed in to change notification settings - Fork 33.2k
Closed
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement
Description
Feature or enhancement
Proposal:
bytes.fromhex() should accept a bytes:
>>> bytes.fromhex(b'8a3218def90a84cb4373beed87d9ba1ccc7d90d1')
b'\x8a2\x18\xde\xf9\n\x84\xcbCs\xbe\xed\x87\xd9\xba\x1c\xcc}\x90\xd1'Background:
bytes.fromhex() accepts a str:
>>> bytes.fromhex('8a3218def90a84cb4373beed87d9ba1ccc7d90d1')
b'\x8a2\x18\xde\xf9\n\x84\xcbCs\xbe\xed\x87\xd9\xba\x1c\xcc}\x90\xd1'However, it refuses to parse a byte string:
>>> bytes.fromhex(b'8a3218def90a84cb4373beed87d9ba1ccc7d90d1')
Traceback (most recent call last):
File "<python-input-0>", line 1, in <module>
bytes.fromhex(b'8a3218def90a84cb4373beed87d9ba1ccc7d90d1')
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: fromhex() argument must be str, not bytesThis requires an extra .decode(), which is rather wasteful given that the str is not of any real use.
This came up for me in parsing the output of git cat-file --batch, which must be a binary stream because it contains bytes, but includes header lines like
8a3218def90a84cb4373beed87d9ba1ccc7d90d1 100644 1394
The integers are parseable directly from bytes:
>>> int(b'100644', 8)
33188so it seems like an omission that the SHAs are not.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
geofft
Metadata
Metadata
Assignees
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement