aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreterobjects.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-06-01 21:39:42 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-06-15 12:48:53 -0700
commitc42262131706143e1a213d0bac659085822a0759 (patch)
tree7cbe172945fc63a05f4935209fc4bf72aca370e1 /mesonbuild/interpreter/interpreterobjects.py
parent5952dc9818051de01aea79616b08426eecf4df97 (diff)
downloadmeson-c42262131706143e1a213d0bac659085822a0759.zip
meson-c42262131706143e1a213d0bac659085822a0759.tar.gz
meson-c42262131706143e1a213d0bac659085822a0759.tar.bz2
interpreterobjects|build: use typed_kwargs for generator.process
Diffstat (limited to 'mesonbuild/interpreter/interpreterobjects.py')
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py41
1 files changed, 25 insertions, 16 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index a080c05..42d983f 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -13,11 +13,14 @@ from .. import mlog
from ..modules import ModuleReturnValue, ModuleObject, ModuleState, ExtensionModule
from ..backend.backends import TestProtocol
-from ..interpreterbase import (InterpreterObject, ObjectHolder, MutableInterpreterObject,
- FeatureNewKwargs, FeatureNew, FeatureDeprecated, typed_kwargs,
- typed_pos_args, stringArgs, permittedKwargs,
- noArgsFlattening, noPosargs, TYPE_var, TYPE_nkwargs,
- flatten, InterpreterException, InvalidArguments, InvalidCode)
+from ..interpreterbase import (ContainerTypeInfo, InterpreterObject, KwargInfo,
+ ObjectHolder, MutableInterpreterObject,
+ FeatureNewKwargs, FeatureNew, FeatureDeprecated,
+ typed_kwargs, typed_pos_args, stringArgs,
+ permittedKwargs, noArgsFlattening, noPosargs,
+ TYPE_var, TYPE_nkwargs, flatten,
+ InterpreterException, InvalidArguments,
+ InvalidCode)
from ..interpreterbase.decorators import FeatureCheckBase
from ..dependencies import Dependency, ExternalLibrary, InternalDependency
from ..programs import ExternalProgram
@@ -1029,21 +1032,27 @@ class GeneratorHolder(InterpreterObject, ObjectHolder[build.Generator]):
self.interpreter = interpreter
self.methods.update({'process': self.process_method})
- @FeatureNewKwargs('generator.process', '0.45.0', ['preserve_path_from'])
- @permittedKwargs({'extra_args', 'preserve_path_from'})
@typed_pos_args('generator.process', min_varargs=1, varargs=(str, mesonlib.File, CustomTargetHolder, CustomTargetIndexHolder, GeneratedListHolder))
- def process_method(self, args: T.Tuple[T.List[T.Union[str, mesonlib.File, CustomTargetHolder, CustomTargetIndexHolder, GeneratedListHolder]]], kwargs):
- extras = mesonlib.stringlistify(kwargs.get('extra_args', []))
- if 'preserve_path_from' in kwargs:
- preserve_path_from = kwargs['preserve_path_from']
- if not isinstance(preserve_path_from, str):
- raise InvalidArguments('Preserve_path_from must be a string.')
+ @typed_kwargs(
+ 'generator.process',
+ KwargInfo('preserve_path_from', str, since='0.45.0'),
+ KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True, default=[]),
+ )
+ def process_method(self, args: T.Tuple[T.List[T.Union[str, mesonlib.File, CustomTargetHolder, CustomTargetIndexHolder, GeneratedListHolder]]],
+ kwargs: 'kwargs.GeneratorProcess') -> GeneratedListHolder:
+ preserve_path_from = kwargs['preserve_path_from']
+ if preserve_path_from is not None:
preserve_path_from = os.path.normpath(preserve_path_from)
if not os.path.isabs(preserve_path_from):
# This is a bit of a hack. Fix properly before merging.
raise InvalidArguments('Preserve_path_from must be an absolute path for now. Sorry.')
- else:
- preserve_path_from = None
+
+ if any(isinstance(a, (CustomTargetHolder, CustomTargetIndexHolder, GeneratedListHolder)) for a in args[0]):
+ FeatureNew.single_use(
+ f'Calling generator.process with CustomTaget or Index of CustomTarget.',
+ '0.57.0', self.interpreter.subproject)
+
gl = self.held_object.process_files(mesonlib.unholder(args[0]), self.interpreter,
- preserve_path_from, extra_args=extras)
+ preserve_path_from, extra_args=kwargs['extra_args'])
+
return GeneratedListHolder(gl)