# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2017-01-15 07:47:05 # Node ID 6a70cf94d1b5f77a2747e3fcaff11be873e79ac4 # Parent 897726622877df430f6c9e8399e9a37bb8d55ce4 py3: replace pycompat.getenv with encoding.environ.get pycompat.getenv returns os.getenvb on py3 which is not available on Windows. This patch replaces them with encoding.environ.get and checks to ensure no new instances of os.getenv or os.setenv are introduced. diff --git a/contrib/check-code.py b/contrib/check-code.py --- a/contrib/check-code.py +++ b/contrib/check-code.py @@ -465,9 +465,10 @@ py3pats = [ (r'os\.sep', "use pycompat.ossep instead (py3)"), (r'os\.pathsep', "use pycompat.ospathsep instead (py3)"), (r'os\.altsep', "use pycompat.osaltsep instead (py3)"), - (r'os\.getenv', "use pycompat.osgetenv instead (py3)"), (r'sys\.platform', "use pycompat.sysplatform instead (py3)"), (r'getopt\.getopt', "use pycompat.getoptb instead (py3)"), + (r'os\.getenv', "use encoding.environ.get instead"), + (r'os\.setenv', "modifying the environ dict is not preferred"), ], # warnings [], diff --git a/hgext/largefiles/lfutil.py b/hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py +++ b/hgext/largefiles/lfutil.py @@ -19,6 +19,7 @@ from mercurial.i18n import _ from mercurial import ( dirstate, + encoding, error, httpconnection, match as matchmod, @@ -74,19 +75,19 @@ def _usercachedir(ui): if path: return path if pycompat.osname == 'nt': - appdata = pycompat.osgetenv('LOCALAPPDATA',\ - pycompat.osgetenv('APPDATA')) + appdata = encoding.environ.get('LOCALAPPDATA',\ + encoding.environ.get('APPDATA')) if appdata: return os.path.join(appdata, longname) elif platform.system() == 'Darwin': - home = pycompat.osgetenv('HOME') + home = encoding.environ.get('HOME') if home: return os.path.join(home, 'Library', 'Caches', longname) elif pycompat.osname == 'posix': - path = pycompat.osgetenv('XDG_CACHE_HOME') + path = encoding.environ.get('XDG_CACHE_HOME') if path: return os.path.join(path, longname) - home = pycompat.osgetenv('HOME') + home = encoding.environ.get('HOME') if home: return os.path.join(home, '.cache', longname) else: diff --git a/mercurial/profiling.py b/mercurial/profiling.py --- a/mercurial/profiling.py +++ b/mercurial/profiling.py @@ -12,8 +12,8 @@ import time from .i18n import _ from . import ( + encoding, error, - pycompat, util, ) @@ -120,7 +120,7 @@ def profile(ui): Profiling is active when the context manager is active. When the context manager exits, profiling results will be written to the configured output. """ - profiler = pycompat.osgetenv('HGPROF') + profiler = encoding.environ.get('HGPROF') if profiler is None: profiler = ui.config('profiling', 'type', default='stat') if profiler not in ('ls', 'stat', 'flame'): diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -46,7 +46,6 @@ if ispy3: ospathsep = os.pathsep.encode('ascii') ossep = os.sep.encode('ascii') osaltsep = os.altsep - osgetenv = os.getenvb if osaltsep: osaltsep = osaltsep.encode('ascii') # os.getcwd() on Python 3 returns string, but it has os.getcwdb() which @@ -169,7 +168,6 @@ else: sysargv = sys.argv sysplatform = sys.platform getcwd = os.getcwd - osgetenv = os.getenv sysexecutable = sys.executable shlexsplit = shlex.split diff --git a/mercurial/url.py b/mercurial/url.py --- a/mercurial/url.py +++ b/mercurial/url.py @@ -15,10 +15,10 @@ import socket from .i18n import _ from . import ( + encoding, error, httpconnection as httpconnectionmod, keepalive, - pycompat, sslutil, util, ) @@ -81,7 +81,7 @@ class passwordmgr(object): class proxyhandler(urlreq.proxyhandler): def __init__(self, ui): proxyurl = (ui.config("http_proxy", "host") or - pycompat.osgetenv('http_proxy')) + encoding.environ.get('http_proxy')) # XXX proxyauthinfo = None if proxyurl: @@ -99,7 +99,7 @@ class proxyhandler(urlreq.proxyhandler): no_list.extend([p.lower() for p in ui.configlist("http_proxy", "no")]) no_list.extend([p.strip().lower() for - p in pycompat.osgetenv("no_proxy", '').split(',') + p in encoding.environ.get("no_proxy", '').split(',') if p.strip()]) # "http_proxy.always" config is for running tests on localhost if ui.configbool("http_proxy", "always"):