[PATCH py3] ui: construct _keepalnum list in a python3-friendly way

Yuya Nishihara yuya at tcha.org
Sun Feb 19 09:29:01 EST 2017


On Sat, 18 Feb 2017 22:58:10 +0000, Martijn Pieters wrote:
> On 16 Feb 2017, at 16:35, Augie Fackler <raf at durin42.com <mailto:raf at durin42.com>> wrote:
> > +if pycompat.ispy3:
> > +    _unicodes = [bytes([c]).decode('latin1') for c in range(256)]
> > +    _notalnum = [s.encode('latin1') for s in _unicodes if not s.isalnum()]
> 
> ...
> > +_keepalnum = ''.join(_notalnum)
> 
> This could be more cheaply calculated as
> 
>     _keepalnum = bytes(c for c in range(256) if not chr(c).isalnum())
> 
> This takes a third of the time.

Good catch, but I found both of them are incorrect since str.isalnum() is
unicode aware on Python3. We'll need to use bytes.isalnum() or string.*
constants.


More information about the Mercurial-devel mailing list