# 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 .. import build from .. import coredata from ..mesonlib import MachineChoice, File, FileMode, FileOrString from .interpreterobjects import EnvironmentVariablesObject 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, build.Target]] should_fail: bool timeout: int workdir: T.Optional[str] depends: T.List[T.Union[build.CustomTarget, build.BuildTarget]] priority: int env: T.Union[EnvironmentVariablesObject, 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, coredata.UserFeatureOption] 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[build.BuildTarget, build.CustomTarget]] class GeneratorProcess(TypedDict): """Keyword Arguments for generator.process.""" preserve_path_from: T.Optional[str] extra_args: T.List[str] class DependencyMethodPartialDependency(TypedDict): """ Keyword Arguments for the dep.partial_dependency methods """ compile_args: bool link_args: bool links: bool includes: bool sources: bool class BuildTargeMethodExtractAllObjects(TypedDict): recursive: bool class FuncInstallSubdir(TypedDict): install_dir: str strip_directory: bool exclude_files: T.List[str] exclude_directories: T.List[str] install_mode: FileMode class FuncInstallData(TypedDict): install_dir: str sources: T.List[FileOrString] rename: T.List[str] install_mode: FileMode class FuncInstallHeaders(TypedDict): install_dir: T.Optional[str] install_mode: FileMode subdir: T.Optional[str] class FuncInstallMan(TypedDict): install_dir: T.Optional[str] install_mode: FileMode locale: T.Optional[str] class FuncImportModule(ExtractRequired): disabler: bool class FuncIncludeDirectories(TypedDict): is_system: bool