diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-06-01 20:59:38 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-06-15 12:48:53 -0700 |
commit | 491c756dc99fa4b126ddcbbee7de149d47c9199f (patch) | |
tree | 18938a892427c52393169c464b4033c0e76f4610 /mesonbuild | |
parent | d2c1ab40a0c94209d8e13886f3c7d697d30f2507 (diff) | |
download | meson-491c756dc99fa4b126ddcbbee7de149d47c9199f.zip meson-491c756dc99fa4b126ddcbbee7de149d47c9199f.tar.gz meson-491c756dc99fa4b126ddcbbee7de149d47c9199f.tar.bz2 |
interpreter: use typed_kwargs for func_generator
Do the type checking in a nice tidy way
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 13 | ||||
-rw-r--r-- | mesonbuild/interpreter/interpreterobjects.py | 1 | ||||
-rw-r--r-- | mesonbuild/interpreter/kwargs.py | 11 |
3 files changed, 22 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 3c69edf..f2b1bd9 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1955,8 +1955,17 @@ This will become a hard error in the future.''' % kwargs['input'], location=self @permittedKwargs({'arguments', 'output', 'depends', 'depfile', 'capture', 'preserve_path_from'}) @typed_pos_args('generator', (ExecutableHolder, ExternalProgramHolder)) - def func_generator(self, node: mparser.FunctionNode, args: T.Tuple[T.Union[ExecutableHolder, ExternalProgramHolder]], - kwargs) -> GeneratorHolder: + @typed_kwargs( + 'generator', + KwargInfo('arguments', ContainerTypeInfo(list, str, allow_empty=False), required=True, listify=True), + KwargInfo('output', ContainerTypeInfo(list, str, allow_empty=False), required=True, listify=True), + KwargInfo('depfile', str), + KwargInfo('capture', bool, default=False, since='0.43.0'), + KwargInfo('depends', ContainerTypeInfo(list, (BuildTargetHolder, CustomTargetHolder)), default=[], listify=True), + ) + def func_generator(self, node: mparser.FunctionNode, + args: T.Tuple[T.Union[ExecutableHolder, ExternalProgramHolder]], + kwargs: 'kwargs.FuncGenerator') -> GeneratorHolder: gen = build.Generator(args[0].held_object, kwargs) holder = GeneratorHolder(self, gen, self) self.generators.append(holder) diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py index 8913b21..8bc171c 100644 --- a/mesonbuild/interpreter/interpreterobjects.py +++ b/mesonbuild/interpreter/interpreterobjects.py @@ -622,7 +622,6 @@ class ExternalLibraryHolder(InterpreterObject, ObjectHolder[ExternalLibrary]): class GeneratorHolder(InterpreterObject, ObjectHolder[build.Generator]): - @FeatureNewKwargs('generator', '0.43.0', ['capture']) def __init__(self, gen: 'build.Generator', interpreter: 'Interpreter'): InterpreterObject.__init__(self) ObjectHolder.__init__(self, gen, interpreter.subproject) diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index feba62e..b856e68 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -71,3 +71,14 @@ class ExtractRequired(TypedDict): """ required: T.Union[bool, 'FeatureOptionHolder'] + + +class FuncGenerator(TypedDict): + + """Keyword rguments for the generator function.""" + + arguments: T.List[str] + output: T.List[str] + depfile: bool + capture: bool + depends: T.List[T.Union['BuildTargetHolder', 'CustomTargetHolder']] |