Closed
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 bytes
This 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)
33188
so 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