aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/python.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-04-22 18:55:30 +0300
committerGitHub <noreply@github.com>2018-04-22 18:55:30 +0300
commit04952fe220c260399d420334ccc4f64189d72609 (patch)
tree2771c12d03ce0e9243b977005a6d06f0e3cdd88f /mesonbuild/modules/python.py
parenta5b99dce5dbe5d9e681fef59c4efebe2c80c5ce5 (diff)
parent709e2bd70dbf9557fc6c408f36aa43029cf99e54 (diff)
downloadmeson-04952fe220c260399d420334ccc4f64189d72609.zip
meson-04952fe220c260399d420334ccc4f64189d72609.tar.gz
meson-04952fe220c260399d420334ccc4f64189d72609.tar.bz2
Merge pull request #3446 from MathieuDuponchelle/python_module_with_doc
modules/python: add some more options around path and config_vars
Diffstat (limited to 'mesonbuild/modules/python.py')
-rw-r--r--mesonbuild/modules/python.py52
1 files changed, 39 insertions, 13 deletions
diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
index 16bdfd6..afcae8f 100644
--- a/mesonbuild/modules/python.py
+++ b/mesonbuild/modules/python.py
@@ -313,32 +313,58 @@ class PythonInstallation(ExternalProgramHolder, InterpreterObject):
return ModuleReturnValue(True, [])
@noKwargs
- def get_path(self, node, args, kwargs):
+ def has_path(self, node, args, kwargs):
if len(args) != 1:
- raise InvalidArguments('get_path takes exactly one positional argument.')
+ raise InvalidArguments('has_path takes exactly one positional argument.')
path_name = args[0]
if not isinstance(path_name, str):
- raise InvalidArguments('get_path argument must be a string.')
+ raise InvalidArguments('has_path argument must be a string.')
+
+ return ModuleReturnValue(path_name in self.paths, [])
- path = self.paths.get(path_name)
+ @noKwargs
+ def get_path(self, node, args, kwargs):
+ if len(args) not in (1, 2):
+ raise InvalidArguments('get_path must have one or two arguments.')
+ path_name = args[0]
+ if not isinstance(path_name, str):
+ raise InvalidArguments('get_path argument must be a string.')
- if path is None:
- raise InvalidArguments('{} is not a valid path name'.format(path_name))
+ try:
+ path = self.paths[path_name]
+ except KeyError:
+ if len(args) == 2:
+ path = args[1]
+ else:
+ raise InvalidArguments('{} is not a valid path name'.format(path_name))
return ModuleReturnValue(path, [])
@noKwargs
- def get_variable(self, node, args, kwargs):
+ def has_variable(self, node, args, kwargs):
if len(args) != 1:
- raise InvalidArguments('get_variable takes exactly one positional argument.')
+ raise InvalidArguments('has_variable takes exactly one positional argument.')
var_name = args[0]
if not isinstance(var_name, str):
- raise InvalidArguments('get_variable argument must be a string.')
+ raise InvalidArguments('has_variable argument must be a string.')
+
+ return ModuleReturnValue(var_name in self.variables, [])
- var = self.variables.get(var_name)
+ @noKwargs
+ def get_variable(self, node, args, kwargs):
+ if len(args) not in (1, 2):
+ raise InvalidArguments('get_variable must have one or two arguments.')
+ var_name = args[0]
+ if not isinstance(var_name, str):
+ raise InvalidArguments('get_variable argument must be a string.')
- if var is None:
- raise InvalidArguments('{} is not a valid path name'.format(var_name))
+ try:
+ var = self.variables[var_name]
+ except KeyError:
+ if len(args) == 2:
+ var = args[1]
+ else:
+ raise InvalidArguments('{} is not a valid variable name'.format(var_name))
return ModuleReturnValue(var, [])
@@ -351,7 +377,7 @@ class PythonInstallation(ExternalProgramHolder, InterpreterObject):
if method_name in ['extension_module', 'dependency', 'install_sources']:
value = fn(self.interpreter, None, args, kwargs)
return self.interpreter.holderify(value)
- elif method_name in ['get_variable', 'get_path', 'found', 'language_version', 'get_install_dir']:
+ elif method_name in ['has_variable', 'get_variable', 'has_path', 'get_path', 'found', 'language_version', 'get_install_dir']:
value = fn(None, args, kwargs)
return self.interpreter.module_method_callback(value)
else: