diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-06-13 21:25:29 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-06-14 09:09:32 -0700 |
commit | 0412bdd7535ec8d8d314f5ecf6120472534764ba (patch) | |
tree | 0fe86e702eff81f39b1cd80a4744c0f251e2104a /mesonbuild/dependencies/base.py | |
parent | 203a548d60343a97e436b59aa026ce17597f1cd1 (diff) | |
download | meson-0412bdd7535ec8d8d314f5ecf6120472534764ba.zip meson-0412bdd7535ec8d8d314f5ecf6120472534764ba.tar.gz meson-0412bdd7535ec8d8d314f5ecf6120472534764ba.tar.bz2 |
dependencies: Use a typing.NewType for Dependency.type_name
This allow mypy to catch cases where we accidently assign the dependency
name to the type_name, as it sees them as having different types (though
at runtime they're all strings).
Diffstat (limited to 'mesonbuild/dependencies/base.py')
-rw-r--r-- | mesonbuild/dependencies/base.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 2c5e24d..da8fc54 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -60,6 +60,9 @@ class DependencyMethods(Enum): DUB = 'dub' +DependencyTypeName = T.NewType('DependencyTypeName', str) + + class Dependency: @classmethod @@ -72,7 +75,7 @@ class Dependency: raise DependencyException("include_type may only be one of ['preserve', 'system', 'non-system']") return kwargs['include_type'] - def __init__(self, type_name: str, kwargs: T.Dict[str, T.Any]) -> None: + def __init__(self, type_name: DependencyTypeName, kwargs: T.Dict[str, T.Any]) -> None: self.name = "null" self.version: T.Optional[str] = None self.language: T.Optional[str] = None # None means C-like @@ -220,7 +223,7 @@ class InternalDependency(Dependency): link_args: T.List[str], libraries: T.List['BuildTarget'], whole_libraries: T.List['BuildTarget'], sources: T.List['FileOrString'], ext_deps: T.List[Dependency], variables: T.Dict[str, T.Any]): - super().__init__('internal', {}) + super().__init__(DependencyTypeName('internal'), {}) self.version = version self.is_found = True self.include_directories = incdirs @@ -307,7 +310,7 @@ class HasNativeKwarg: return MachineChoice.BUILD if kwargs.get('native', False) else MachineChoice.HOST class ExternalDependency(Dependency, HasNativeKwarg): - def __init__(self, type_name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any], language: T.Optional[str] = None): + def __init__(self, type_name: DependencyTypeName, environment: 'Environment', kwargs: T.Dict[str, T.Any], language: T.Optional[str] = None): Dependency.__init__(self, type_name, kwargs) self.env = environment self.name = type_name # default @@ -392,7 +395,7 @@ class ExternalDependency(Dependency, HasNativeKwarg): class NotFoundDependency(Dependency): def __init__(self, environment: 'Environment') -> None: - super().__init__('not-found', {}) + super().__init__(DependencyTypeName('not-found'), {}) self.env = environment self.name = 'not-found' self.is_found = False @@ -406,7 +409,7 @@ class NotFoundDependency(Dependency): class ExternalLibrary(ExternalDependency): def __init__(self, name: str, link_args: T.List[str], environment: 'Environment', language: str, silent: bool = False) -> None: - super().__init__('library', environment, {}, language=language) + super().__init__(DependencyTypeName('library'), environment, {}, language=language) self.name = name self.language = language self.is_found = False |