[PATCH 7 of 7] py3: use encoding.environ in ui.py
Pulkit Goyal
7895pulkit at gmail.com
Fri Nov 4 20:32:52 EDT 2016
On Thu, Nov 3, 2016 at 3:45 AM, Pulkit Goyal <7895pulkit at gmail.com> wrote:
> # HG changeset patch
> # User Pulkit Goyal <7895pulkit at gmail.com>
> # Date 1478122977 -19800
> # Thu Nov 03 03:12:57 2016 +0530
> # Node ID 9bdf6ee77b17dc2a1ce29fb347e90bd8dd17eaed
> # Parent 8cd0e855ebb448a4ec1e835b346a920a1cb835cb
> py3: use encoding.environ in ui.py
>
> Using source transformer we add b'' everywhere. So there are no chances
> that those bytes string will work with os.environ on Py3 as that returns a
> dict of unicodes. We are relying on the errors, even though no error is raised
> even in future, these pieces of codes will tend to do wrong things.
> if statements can result in wrong boolean and certain errors can be raised
> while using this piece of code. Let's not wait for them to happen, fix what is
> wrong. If this patch goes in, I will try to do it for all the cases.
Yuya any comments on this. I remember asking this from you in the
sprint and your answer was no. But I think we have to change all
occurences.
> Leaving it as it is buggy.
>
> diff -r 8cd0e855ebb4 -r 9bdf6ee77b17 mercurial/ui.py
> --- a/mercurial/ui.py Thu Nov 03 02:53:45 2016 +0530
> +++ b/mercurial/ui.py Thu Nov 03 03:12:57 2016 +0530
> @@ -22,6 +22,7 @@
>
> from . import (
> config,
> + encoding,
> error,
> formatter,
> progress,
> @@ -574,9 +575,11 @@
> - False if HGPLAIN is not set, or feature is in HGPLAINEXCEPT
> - True otherwise
> '''
> - if 'HGPLAIN' not in os.environ and 'HGPLAINEXCEPT' not in os.environ:
> + if ('HGPLAIN' not in encoding.environ and
> + 'HGPLAINEXCEPT' not in encoding.environ):
> return False
> - exceptions = os.environ.get('HGPLAINEXCEPT', '').strip().split(',')
> + exceptions = encoding.environ.get('HGPLAINEXCEPT',
> + '').strip().split(',')
> if feature and exceptions:
> return feature not in exceptions
> return True
> @@ -589,13 +592,13 @@
> If not found and ui.askusername is True, ask the user, else use
> ($LOGNAME or $USER or $LNAME or $USERNAME) + "@full.hostname".
> """
> - user = os.environ.get("HGUSER")
> + user = encoding.environ.get("HGUSER")
> if user is None:
> user = self.config("ui", ["username", "user"])
> if user is not None:
> user = os.path.expandvars(user)
> if user is None:
> - user = os.environ.get("EMAIL")
> + user = encoding.environ.get("EMAIL")
> if user is None and self.configbool("ui", "askusername"):
> user = self.prompt(_("enter a commit username:"), default=None)
> if user is None and not self.interactive():
> @@ -819,9 +822,9 @@
> def termwidth(self):
> '''how wide is the terminal in columns?
> '''
> - if 'COLUMNS' in os.environ:
> + if 'COLUMNS' in encoding.environ:
> try:
> - return int(os.environ['COLUMNS'])
> + return int(encoding.environ['COLUMNS'])
> except ValueError:
> pass
> return util.termwidth()
> @@ -1080,10 +1083,10 @@
> editor = 'E'
> else:
> editor = 'vi'
> - return (os.environ.get("HGEDITOR") or
> + return (encoding.environ.get("HGEDITOR") or
> self.config("ui", "editor") or
> - os.environ.get("VISUAL") or
> - os.environ.get("EDITOR", editor))
> + encoding.environ.get("VISUAL") or
> + encoding.environ.get("EDITOR", editor))
>
> @util.propertycache
> def _progbar(self):
More information about the Mercurial-devel
mailing list