# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1470783944 -19800 # Node ID 3df9f780c90ec179a2f87802f352a0273da9a364 # Parent e584c623550076d0443c397ff815cb7bb5dbe821 py3: conditionalize _winreg import _winreg module is renamed to winreg in python 3. Added the conditionalize statements in the respective file because adding this in pycompat will result in pycompat throwing error as this is a windows registry module and we have buildbots and most of the contributors on linux. diff -r e584c6235500 -r 3df9f780c90e mercurial/scmwindows.py --- a/mercurial/scmwindows.py Mon Aug 08 23:51:11 2016 +0530 +++ b/mercurial/scmwindows.py Wed Aug 10 04:35:44 2016 +0530 @@ -1,6 +1,5 @@ from __future__ import absolute_import -import _winreg import os from . import ( @@ -8,6 +7,12 @@ util, ) +try: + import _winreg as winreg + winreg.CloseKey +except ImportError: + import winreg + def systemrcpath(): '''return default os-specific hgrc search path''' rcpath = [] @@ -23,7 +28,7 @@ rcpath.append(os.path.join(progrcd, f)) # else look for a system rcpath in the registry value = util.lookupreg('SOFTWARE\\Mercurial', None, - _winreg.HKEY_LOCAL_MACHINE) + winreg.HKEY_LOCAL_MACHINE) if not isinstance(value, str) or not value: return rcpath value = util.localpath(value) diff -r e584c6235500 -r 3df9f780c90e mercurial/windows.py --- a/mercurial/windows.py Mon Aug 08 23:51:11 2016 +0530 +++ b/mercurial/windows.py Wed Aug 10 04:35:44 2016 +0530 @@ -7,7 +7,6 @@ from __future__ import absolute_import -import _winreg import errno import msvcrt import os @@ -22,6 +21,12 @@ win32, ) +try: + import _winreg as winreg + winreg.CloseKey +except ImportError: + import winreg + executablepath = win32.executablepath getuser = win32.getuser hidewindow = win32.hidewindow @@ -432,12 +437,12 @@ LOCAL_MACHINE). ''' if scope is None: - scope = (_winreg.HKEY_CURRENT_USER, _winreg.HKEY_LOCAL_MACHINE) + scope = (winreg.HKEY_CURRENT_USER, winreg.HKEY_LOCAL_MACHINE) elif not isinstance(scope, (list, tuple)): scope = (scope,) for s in scope: try: - val = _winreg.QueryValueEx(_winreg.OpenKey(s, key), valname)[0] + val = winreg.QueryValueEx(winreg.OpenKey(s, key), valname)[0] # never let a Unicode string escape into the wild return encoding.tolocal(val.encode('UTF-8')) except EnvironmentError: diff -r e584c6235500 -r 3df9f780c90e tests/test-check-py3-compat.t --- a/tests/test-check-py3-compat.t Mon Aug 08 23:51:11 2016 +0530 +++ b/tests/test-check-py3-compat.t Wed Aug 10 04:35:44 2016 +0530 @@ -146,7 +146,7 @@ mercurial/revlog.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) mercurial/revset.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) mercurial/scmutil.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) - mercurial/scmwindows.py: error importing module: No module named '_winreg' (line *) (glob) + mercurial/scmwindows.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) mercurial/similar.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) mercurial/simplemerge.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) mercurial/sshpeer.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) @@ -167,7 +167,7 @@ mercurial/url.py: error importing: getattr(): attribute name must be string (error at util.py:*) (glob) mercurial/verify.py: error importing: attribute name must be string, not 'bytes' (error at mdiff.py:*) (glob) mercurial/win32.py: error importing module: No module named 'msvcrt' (line *) (glob) - mercurial/windows.py: error importing module: No module named '_winreg' (line *) (glob) + mercurial/windows.py: error importing module: No module named 'msvcrt' (line *) (glob) mercurial/wireproto.py: error importing module: a bytes-like object is required, not 'str' (line *) (glob) #endif