[Commented On] D10770: docket: make compatible with py3.6, where Struct.format is bytes
durin42 (Augie Fackler)
phabricator at mercurial-scm.org
Tue Jun 1 14:01:42 UTC 2021
durin42 added a comment.
In D10770#164629 <https://phab.mercurial-scm.org/D10770#164629>, @marmoute wrote:
> In D10770#164628 <https://phab.mercurial-scm.org/D10770#164628>, @martinvonz wrote:
>
>> In D10770#164626 <https://phab.mercurial-scm.org/D10770#164626>, @marmoute wrote:
>>
>>> Looks like this is happening because of an inconsistency betwen the fact we passe a binary 'struct' for INDEX_HEADER and a sysstr for the extra once. I would rather fix this by making them consistent.
>>
>> I'm not sure I understand. Can you show me how?
>>
>> $ python3.6 -c 'import struct; print(type(struct.Struct(b"I").format))'
>> <class 'bytes'>
>> $ python3.6 -c 'import struct; print(type(struct.Struct("I").format))'
>> <class 'bytes'>
>> $ python3.7 -c 'import struct; print(type(struct.Struct(b"I").format))'
>> <class 'str'>
>> $ python3.7 -c 'import struct; print(type(struct.Struct("I").format))'
>> <class 'str'>
>
> Okay, so my assertion is correct and Python behavior is⦠creative. Maybe we should build a pycompat wrapper for struct.format access ?
AFAICT your assertion was wrong: the `struct` module just isn't preserving the input type at all, and always emits `str` on 3.7+, but does `bytes` on 3.6. So we're not mixing bytes/str input types to struct, but instead struct on 3.6 is ninja-converting back to bytes "for" us.
A pycompat wrapper would make sense for this if we see more than one case of this. Is that likely?
> I see you are abandoning this revision, can you share details about your new plan ?
I believe he found the interaction too frustrating and is dealing with other things.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D10770/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D10770
To: martinvonz, #hg-reviewers, marmoute
Cc: durin42, marmoute, mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20210601/eb791c4d/attachment.html>
More information about the Mercurial-patches
mailing list