|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Copyright © 2021 The Meson Developers
|
|
|
|
# Copyright © 2021 Intel Corporation
|
|
|
|
|
|
|
|
"""Keyword Argument type annotations."""
|
|
|
|
|
|
|
|
import typing as T
|
|
|
|
|
|
|
|
from typing_extensions import TypedDict, Literal
|
|
|
|
|
|
|
|
from ..mesonlib import MachineChoice, File
|
|
|
|
from .interpreterobjects import (
|
|
|
|
BuildTargetHolder, CustomTargetHolder, EnvironmentVariablesHolder,
|
|
|
|
FeatureOptionHolder, TargetHolder
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class FuncAddProjectArgs(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword Arguments for the add_*_arguments family of arguments.
|
|
|
|
|
|
|
|
including `add_global_arguments`, `add_project_arguments`, and their
|
|
|
|
link variants
|
|
|
|
|
|
|
|
Because of the use of a convertor function, we get the native keyword as
|
|
|
|
a MachineChoice instance already.
|
|
|
|
"""
|
|
|
|
|
|
|
|
native: MachineChoice
|
|
|
|
language: T.List[str]
|
|
|
|
|
|
|
|
|
|
|
|
class BaseTest(TypedDict):
|
|
|
|
|
|
|
|
"""Shared base for the Rust module."""
|
|
|
|
|
|
|
|
args: T.List[T.Union[str, File, TargetHolder]]
|
|
|
|
should_fail: bool
|
|
|
|
timeout: int
|
|
|
|
workdir: T.Optional[str]
|
|
|
|
depends: T.List[T.Union[CustomTargetHolder, BuildTargetHolder]]
|
|
|
|
priority: int
|
|
|
|
env: T.Union[EnvironmentVariablesHolder, T.List[str], T.Dict[str, str], str]
|
|
|
|
suite: T.List[str]
|
|
|
|
|
|
|
|
|
|
|
|
class FuncBenchmark(BaseTest):
|
|
|
|
|
|
|
|
"""Keyword Arguments shared between `test` and `benchmark`."""
|
|
|
|
|
|
|
|
protocol: Literal['exitcode', 'tap', 'gtest', 'rust']
|
|
|
|
|
|
|
|
|
|
|
|
class FuncTest(FuncBenchmark):
|
|
|
|
|
|
|
|
"""Keyword Arguments for `test`
|
|
|
|
|
|
|
|
`test` only adds the `is_prallel` argument over benchmark, so inherintance
|
|
|
|
is helpful here.
|
|
|
|
"""
|
|
|
|
|
|
|
|
is_parallel: bool
|
|
|
|
|
|
|
|
|
|
|
|
class ExtractRequired(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword Arguments consumed by the `extract_required_kwargs` function.
|
|
|
|
|
|
|
|
Any function that uses the `required` keyword argument which accepts either
|
|
|
|
a boolean or a feature option should inherit it's arguments from this class.
|
|
|
|
"""
|
|
|
|
|
|
|
|
required: T.Union[bool, 'FeatureOptionHolder']
|