Mercurial > public > mercurial-scm > hg
comparison mercurial/demandimport.py @ 25936:f90bb2002bcf
demandimport: support keyword arguments on _hgextimport
__import__ supports keyword arguments since Python 2.5. This
proxy should too.
An upcoming patch will use this feature.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 08 Aug 2015 17:07:34 -0700 |
parents | 49dd4fd3f283 |
children | 4f1144c3c72b |
comparison
equal
deleted
inserted
replaced
25935:49dd4fd3f283 | 25936:f90bb2002bcf |
---|---|
41 level = -1 | 41 level = -1 |
42 if sys.version_info[0] >= 3: | 42 if sys.version_info[0] >= 3: |
43 level = 0 | 43 level = 0 |
44 _import = _origimport | 44 _import = _origimport |
45 | 45 |
46 def _hgextimport(importfunc, name, globals, *args): | 46 def _hgextimport(importfunc, name, globals, *args, **kwargs): |
47 try: | 47 try: |
48 return importfunc(name, globals, *args) | 48 return importfunc(name, globals, *args, **kwargs) |
49 except ImportError: | 49 except ImportError: |
50 if not globals: | 50 if not globals: |
51 raise | 51 raise |
52 # extensions are loaded with "hgext_" prefix | 52 # extensions are loaded with "hgext_" prefix |
53 hgextname = 'hgext_%s' % name | 53 hgextname = 'hgext_%s' % name |
54 nameroot = hgextname.split('.', 1)[0] | 54 nameroot = hgextname.split('.', 1)[0] |
55 contextroot = globals.get('__name__', '').split('.', 1)[0] | 55 contextroot = globals.get('__name__', '').split('.', 1)[0] |
56 if nameroot != contextroot: | 56 if nameroot != contextroot: |
57 raise | 57 raise |
58 # retry to import with "hgext_" prefix | 58 # retry to import with "hgext_" prefix |
59 return importfunc(hgextname, globals, *args) | 59 return importfunc(hgextname, globals, *args, **kwargs) |
60 | 60 |
61 class _demandmod(object): | 61 class _demandmod(object): |
62 """module demand-loader and proxy""" | 62 """module demand-loader and proxy""" |
63 def __init__(self, name, globals, locals, level=level): | 63 def __init__(self, name, globals, locals, level=level): |
64 if '.' in name: | 64 if '.' in name: |