diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-06-01 21:39:42 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-06-15 12:48:53 -0700 |
commit | c42262131706143e1a213d0bac659085822a0759 (patch) | |
tree | 7cbe172945fc63a05f4935209fc4bf72aca370e1 /mesonbuild/interpreter/interpreterobjects.py | |
parent | 5952dc9818051de01aea79616b08426eecf4df97 (diff) | |
download | meson-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.py | 41 |
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) |