[PATCH 6 of 6] pycompat: use unicode literals to appease Python 3
Gregory Szorc
gregory.szorc at gmail.com
Sat Jun 25 11:16:37 EDT 2016
On Thu, Jun 9, 2016 at 7:53 AM, Yuya Nishihara <yuya at tcha.org> wrote:
> On Tue, 31 May 2016 22:53:03 -0700, Gregory Szorc wrote:
> > # HG changeset patch
> > # User Gregory Szorc <gregory.szorc at gmail.com>
> > # Date 1464759504 25200
> > # Tue May 31 22:38:24 2016 -0700
> > # Node ID dc6956f6ec9efe421e7d023db24687b127291318
> > # Parent 856a1794f165a93ec8eb6fe1963b0ca1a68c647b
> > pycompat: use unicode literals to appease Python 3
> >
> > More of the same.
> >
> > diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py
> > --- a/mercurial/pycompat.py
> > +++ b/mercurial/pycompat.py
> > @@ -29,17 +29,17 @@ class _pycompatstub(object):
> > pass
> >
> > def _alias(alias, origin, items):
> > """ populate a _pycompatstub
> >
> > copies items from origin to alias
> > """
> > def hgcase(item):
> > - return item.replace('_', '').lower()
> > + return item.replace(u'_', u'').lower()
> > for item in items:
> > try:
> > setattr(alias, hgcase(item), getattr(origin, item))
>
> Can we have bytes setattr() and getattr() and rewrite them by importer?
>
In theory, yes.
We could also likely scan for string literals passed to inline getattr()
and setattr() and transform to u'' by the importer. That would remove the
run-time penalty of calling an extra function. Although it wouldn't find
the more complicated callers of getattr() and setattr() such as in this
file.
> getattr() is frequently used. Converting all arguments to unicode would be
> a pain and likely to cause unicode bugs.
>
I'm not sure what unicode bugs this would hit as hitting a unicode bug
would require a non-ascii attribute name and I don't think we have any of
those.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160625/2fcacfae/attachment.html>
More information about the Mercurial-devel
mailing list