diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-06-30 12:46:33 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-06-30 12:46:33 -0700 |
commit | 351a1e9ec93fecee8923356c5647fa526524c54d (patch) | |
tree | 6bc6885a554631bcf9d5a331a34dbac5253766ce /mesonbuild/interpreter/interpreter.py | |
parent | 6337e40115278fffd8b331d5a32324167e196c1b (diff) | |
download | meson-351a1e9ec93fecee8923356c5647fa526524c54d.zip meson-351a1e9ec93fecee8923356c5647fa526524c54d.tar.gz meson-351a1e9ec93fecee8923356c5647fa526524c54d.tar.bz2 |
interpreter: use typed_pos_args for func_import
and make the helper method private
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 693924f..dc2fd1a 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -601,35 +601,33 @@ class Interpreter(InterpreterBase, HoldableObject): dep = df.lookup(kwargs, force_fallback=True) self.build.stdlibs[for_machine][l] = dep - def import_module(self, modname): - if modname in self.modules: - return - try: - module = importlib.import_module('mesonbuild.modules.' + modname) - except ImportError: - raise InvalidArguments(f'Module "{modname}" does not exist') - ext_module = module.initialize(self) - assert isinstance(ext_module, ModuleObject) - self.modules[modname] = ext_module - - @stringArgs + @typed_pos_args('import', str) @noKwargs - def func_import(self, node, args, kwargs): - if len(args) != 1: - raise InvalidCode('Import takes one argument.') + def func_import(self, node: mparser.BaseNode, args: T.Tuple[str], kwargs) -> ModuleObject: modname = args[0] if modname.startswith('unstable-'): plainname = modname.split('-', 1)[1] try: # check if stable module exists - self.import_module(plainname) + self._import_module(plainname) mlog.warning(f'Module {modname} is now stable, please use the {plainname} module instead.') modname = plainname except InvalidArguments: mlog.warning('Module %s has no backwards or forwards compatibility and might not exist in future releases.' % modname, location=node) modname = 'unstable_' + plainname - self.import_module(modname) - return self.modules[modname] + + if modname in self.modules: + return self.modules[modname] + + try: + module = importlib.import_module('mesonbuild.modules.' + modname) + except ImportError: + raise InvalidArguments(f'Module "{modname}" does not exist') + ext_module = module.initialize(self) + assert isinstance(ext_module, ModuleObject) + self.modules[modname] = ext_module + + return ext_module @stringArgs @noKwargs |