[PATCH 5 of 5] check-code: handle py3 open divergence

timeless timeless at gmail.com
Mon May 16 14:18:02 EDT 2016


So, on the py2 side of things, io.open seems to like to return
<unicode>, whereas our stuff expects <str>.

On the py3 side of things. If I can avoid having to talk about unicode, I will.

On Mon, May 16, 2016 at 9:22 AM, Martijn Pieters <mj at zopatista.com> wrote:
> Rather than make Python 3 behave as Python 2, why not use `io.open()`
> in Python 2? The *exact same behaviour* is available in Python 2, with
> the only difference really being that `io.open()` is the built-in
> `open()` in Python 3.
>
> On 11 May 2016 at 05:12, timeless <timeless at fmr.im> wrote:
>> # HG changeset patch
>> # User timeless <timeless at mozdev.org>
>> # Date 1462931171 0
>> #      Wed May 11 01:46:11 2016 +0000
>> # Node ID c5dfd864d81f5d1f435ff376ea44b3ea82b12575
>> # Parent  ed2dbfec165a0de79c93d7fa1ea9cb5f36b10c29
>> # EXP-Topic runtests
>> # Available At bb://timeless/mercurial-crew
>> #              hg pull bb://timeless/mercurial-crew -r c5dfd864d81f
>> check-code: handle py3 open divergence
>>
>> open() really wants an encoding attribute
>>
>> diff -r ed2dbfec165a -r c5dfd864d81f contrib/check-code.py
>> --- a/contrib/check-code.py     Wed May 11 01:44:39 2016 +0000
>> +++ b/contrib/check-code.py     Wed May 11 01:46:11 2016 +0000
>> @@ -26,6 +26,11 @@
>>  import os
>>  import re
>>  import sys
>> +if sys.version_info[0] < 3:
>> +    opentext = open
>> +else:
>> +    def opentext(f):
>> +        return open(f, encoding='ascii')
>>  try:
>>      xrange
>>  except NameError:
>> @@ -493,8 +498,12 @@
>>      result = True
>>
>>      try:
>> -        with open(f) as fp:
>> -            pre = post = fp.read()
>> +        with opentext(f) as fp:
>> +            try:
>> +                pre = post = fp.read()
>> +            except UnicodeDecodeError as e:
>> +                print("%s while reading %s" % (e, f))
>> +                return result
>>      except IOError as e:
>>          print("Skipping %s, %s" % (f, str(e).split(':', 1)[0]))
>>          return result
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel at mercurial-scm.org
>> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
>
>
> --
> Martijn Pieters


More information about the Mercurial-devel mailing list