comparison mercurial/policy.py @ 43506:9f70512ae2cf

cleanup: remove pointless r-prefixes on single-quoted strings This is the promised second step on single-quoted strings. These had existed because our source transformer didn't turn r'' into b'', so we had tagged some strings as r-strings to get "native" strings on both Pythons. Now that the transformer is gone, we can dispense with this nonsense. Methodology: I ran hg locate 'set:added() or modified() or clean()' | egrep '.*\.py$' | xargs egrep --color=never -n -- \[\^b\]\[\^a-z\]r\'\[\^\'\\\\\]\*\'\[\^\'\ in an emacs grep-mode buffer, and then used a keyboard macro to iterate over the results and remove the r prefix as needed. # skip-blame removing unneeded r prefixes left over from Python 3 migration. Differential Revision: https://phab.mercurial-scm.org/D7306
author Augie Fackler <augie@google.com>
date Fri, 08 Nov 2019 11:19:20 -0800
parents 313e3a279828
children 0c659fc20207
comparison
equal deleted inserted replaced
43505:47fac1692ede 43506:9f70512ae2cf
27 # run without recompiling the C extensions. This will be overridden by 27 # run without recompiling the C extensions. This will be overridden by
28 # __modulepolicy__ generated by setup.py. 28 # __modulepolicy__ generated by setup.py.
29 policy = b'allow' 29 policy = b'allow'
30 _packageprefs = { 30 _packageprefs = {
31 # policy: (versioned package, pure package) 31 # policy: (versioned package, pure package)
32 b'c': (r'cext', None), 32 b'c': ('cext', None),
33 b'allow': (r'cext', r'pure'), 33 b'allow': ('cext', 'pure'),
34 b'cffi': (r'cffi', None), 34 b'cffi': ('cffi', None),
35 b'cffi-allow': (r'cffi', r'pure'), 35 b'cffi-allow': ('cffi', 'pure'),
36 b'py': (None, r'pure'), 36 b'py': (None, 'pure'),
37 # For now, rust policies impact importrust only 37 # For now, rust policies impact importrust only
38 b'rust+c': (r'cext', None), 38 b'rust+c': ('cext', None),
39 b'rust+c-allow': (r'cext', r'pure'), 39 b'rust+c-allow': ('cext', 'pure'),
40 } 40 }
41 41
42 try: 42 try:
43 from . import __modulepolicy__ 43 from . import __modulepolicy__
44 44
48 48
49 # PyPy doesn't load C extensions. 49 # PyPy doesn't load C extensions.
50 # 50 #
51 # The canonical way to do this is to test platform.python_implementation(). 51 # The canonical way to do this is to test platform.python_implementation().
52 # But we don't import platform and don't bloat for it here. 52 # But we don't import platform and don't bloat for it here.
53 if r'__pypy__' in sys.builtin_module_names: 53 if '__pypy__' in sys.builtin_module_names:
54 policy = b'cffi' 54 policy = b'cffi'
55 55
56 # Environment variable can always force settings. 56 # Environment variable can always force settings.
57 if sys.version_info[0] >= 3: 57 if sys.version_info[0] >= 3:
58 if r'HGMODULEPOLICY' in os.environ: 58 if 'HGMODULEPOLICY' in os.environ:
59 policy = os.environ[r'HGMODULEPOLICY'].encode(r'utf-8') 59 policy = os.environ['HGMODULEPOLICY'].encode('utf-8')
60 else: 60 else:
61 policy = os.environ.get(r'HGMODULEPOLICY', policy) 61 policy = os.environ.get('HGMODULEPOLICY', policy)
62 62
63 63
64 def _importfrom(pkgname, modname): 64 def _importfrom(pkgname, modname):
65 # from .<pkgname> import <modname> (where . is looked through this module) 65 # from .<pkgname> import <modname> (where . is looked through this module)
66 fakelocals = {} 66 fakelocals = {}
67 pkg = __import__(pkgname, globals(), fakelocals, [modname], level=1) 67 pkg = __import__(pkgname, globals(), fakelocals, [modname], level=1)
68 try: 68 try:
69 fakelocals[modname] = mod = getattr(pkg, modname) 69 fakelocals[modname] = mod = getattr(pkg, modname)
70 except AttributeError: 70 except AttributeError:
71 raise ImportError(r'cannot import name %s' % modname) 71 raise ImportError('cannot import name %s' % modname)
72 # force import; fakelocals[modname] may be replaced with the real module 72 # force import; fakelocals[modname] may be replaced with the real module
73 getattr(mod, '__doc__', None) 73 getattr(mod, '__doc__', None)
74 return fakelocals[modname] 74 return fakelocals[modname]
75 75
76 76
77 # keep in sync with "version" in C modules 77 # keep in sync with "version" in C modules
78 _cextversions = { 78 _cextversions = {
79 (r'cext', r'base85'): 1, 79 ('cext', 'base85'): 1,
80 (r'cext', r'bdiff'): 3, 80 ('cext', 'bdiff'): 3,
81 (r'cext', r'mpatch'): 1, 81 ('cext', 'mpatch'): 1,
82 (r'cext', r'osutil'): 4, 82 ('cext', 'osutil'): 4,
83 (r'cext', r'parsers'): 13, 83 ('cext', 'parsers'): 13,
84 } 84 }
85 85
86 # map import request to other package or module 86 # map import request to other package or module
87 _modredirects = { 87 _modredirects = {
88 (r'cext', r'charencode'): (r'cext', r'parsers'), 88 ('cext', 'charencode'): ('cext', 'parsers'),
89 (r'cffi', r'base85'): (r'pure', r'base85'), 89 ('cffi', 'base85'): ('pure', 'base85'),
90 (r'cffi', r'charencode'): (r'pure', r'charencode'), 90 ('cffi', 'charencode'): ('pure', 'charencode'),
91 (r'cffi', r'parsers'): (r'pure', r'parsers'), 91 ('cffi', 'parsers'): ('pure', 'parsers'),
92 } 92 }
93 93
94 94
95 def _checkmod(pkgname, modname, mod): 95 def _checkmod(pkgname, modname, mod):
96 expected = _cextversions.get((pkgname, modname)) 96 expected = _cextversions.get((pkgname, modname))
97 actual = getattr(mod, 'version', None) 97 actual = getattr(mod, 'version', None)
98 if actual != expected: 98 if actual != expected:
99 raise ImportError( 99 raise ImportError(
100 r'cannot import module %s.%s ' 100 'cannot import module %s.%s '
101 r'(expected version: %d, actual: %r)' 101 '(expected version: %d, actual: %r)'
102 % (pkgname, modname, expected, actual) 102 % (pkgname, modname, expected, actual)
103 ) 103 )
104 104
105 105
106 def importmod(modname): 106 def importmod(modname):
107 """Import module according to policy and check API version""" 107 """Import module according to policy and check API version"""
108 try: 108 try:
109 verpkg, purepkg = _packageprefs[policy] 109 verpkg, purepkg = _packageprefs[policy]
110 except KeyError: 110 except KeyError:
111 raise ImportError(r'invalid HGMODULEPOLICY %r' % policy) 111 raise ImportError('invalid HGMODULEPOLICY %r' % policy)
112 assert verpkg or purepkg 112 assert verpkg or purepkg
113 if verpkg: 113 if verpkg:
114 pn, mn = _modredirects.get((verpkg, modname), (verpkg, modname)) 114 pn, mn = _modredirects.get((verpkg, modname), (verpkg, modname))
115 try: 115 try:
116 mod = _importfrom(pn, mn) 116 mod = _importfrom(pn, mn)
139 """ 139 """
140 if not policy.startswith(b'rust'): 140 if not policy.startswith(b'rust'):
141 return default 141 return default
142 142
143 try: 143 try:
144 mod = _importfrom(r'rustext', modname) 144 mod = _importfrom('rustext', modname)
145 except ImportError: 145 except ImportError:
146 if _isrustpermissive(): 146 if _isrustpermissive():
147 return default 147 return default
148 raise 148 raise
149 if member is None: 149 if member is None: