From d636b92c1adc1588ff11b6ee4972c4bdd686f433 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Mon, 14 Jun 2021 15:36:17 -0700 Subject: [PATCH] install_*: FileMode doesn't need to be None There's no reason to allow None into the backend, it already has code to check that all of the values of the FileMode object are None, so let's use that, which is much simpler all the way down. --- mesonbuild/backend/backends.py | 3 --- mesonbuild/build.py | 12 ++++++------ mesonbuild/interpreter/interpreter.py | 4 +--- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 4e1ac1e15..8df9705c9 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -42,9 +42,6 @@ if T.TYPE_CHECKING: from ..interpreter import Interpreter, Test from ..mesonlib import FileMode - InstallType = T.List[T.Tuple[str, str, T.Optional['FileMode']]] - InstallSubdirsType = T.List[T.Tuple[str, str, T.Optional['FileMode'], T.Tuple[T.Set[str], T.Set[str]]]] - # Languages that can mix with C or C++ but don't support unity builds yet # because the syntax we use for unity builds is specific to C/++/ObjC/++. # Assembly files cannot be unitified and neither can LLVM IR files diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 83dd3f0cf..ee3b9c9ea 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -135,7 +135,7 @@ class DependencyOverride(HoldableObject): class Headers(HoldableObject): def __init__(self, sources: T.List[File], install_subdir: T.Optional[str], - install_dir: T.Optional[str], install_mode: T.Optional['FileMode'], + install_dir: T.Optional[str], install_mode: 'FileMode', subproject: str): self.sources = sources self.install_subdir = install_subdir @@ -158,14 +158,14 @@ class Headers(HoldableObject): def get_custom_install_dir(self) -> T.Optional[str]: return self.custom_install_dir - def get_custom_install_mode(self) -> T.Optional['FileMode']: + def get_custom_install_mode(self) -> 'FileMode': return self.custom_install_mode class Man(HoldableObject): def __init__(self, sources: T.List[File], install_dir: T.Optional[str], - install_mode: T.Optional['FileMode'], subproject: str, + install_mode: 'FileMode', subproject: str, locale: T.Optional[str]): self.sources = sources self.custom_install_dir = install_dir @@ -176,7 +176,7 @@ class Man(HoldableObject): def get_custom_install_dir(self) -> T.Optional[str]: return self.custom_install_dir - def get_custom_install_mode(self) -> T.Optional['FileMode']: + def get_custom_install_mode(self) -> 'FileMode': return self.custom_install_mode def get_sources(self) -> T.List['File']: @@ -186,7 +186,7 @@ class Man(HoldableObject): class InstallDir(HoldableObject): def __init__(self, src_subdir: str, inst_subdir: str, install_dir: str, - install_mode: T.Optional['FileMode'], + install_mode: 'FileMode', exclude: T.Tuple[T.Set[str], T.Set[str]], strip_directory: bool, subproject: str, from_source_dir: bool = True): @@ -2611,7 +2611,7 @@ class ConfigurationData(HoldableObject): # during install. class Data(HoldableObject): def __init__(self, sources: T.List[File], install_dir: str, - install_mode: T.Optional['FileMode'], subproject: str, + install_mode: 'FileMode', subproject: str, rename: T.List[str] = None): self.sources = sources self.install_dir = install_dir diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index d522d2528..8d1b693b8 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -128,7 +128,7 @@ def _install_mode_validator(mode: T.List[T.Union[str, bool, int]]) -> T.Optional return None -def _install_mode_convertor(mode: T.Optional[T.List[T.Union[str, bool, int]]]) -> T.Optional[FileMode]: +def _install_mode_convertor(mode: T.Optional[T.List[T.Union[str, bool, int]]]) -> FileMode: """Convert the DSL form of the `install_mode` keyword arugment to `FileMode` This is not required, and if not required returns None @@ -136,8 +136,6 @@ def _install_mode_convertor(mode: T.Optional[T.List[T.Union[str, bool, int]]]) - TODO: It's not clear to me why this needs to be None and not just return an emtpy FileMode. """ - if mode is None: - return None # this has already been validated by the validator return FileMode(*[m if isinstance(m, str) else None for m in mode])