Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34k
Closed
Description
Feature or enhancement
Proposal:
bytes.fromhex() should accept abytes:
>>>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 astr:
>>>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 (mostrecentcalllast):File"<python-input-0>",line1,in<module>bytes.fromhex(b'8a3218def90a84cb4373beed87d9ba1ccc7d90d1')~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError:fromhex()argumentmustbestr,notbytes
This requires an extra.decode(), which is rather wasteful given that thestr is not of any real use.
This came up for me in parsing the output ofgit cat-file --batch, which must be a binary stream because it contains bytes, but includes header lines like
8a3218def90a84cb4373beed87d9ba1ccc7d90d1 100644 1394The 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