aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/base.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-06-13 21:25:29 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-06-14 09:09:32 -0700
commit0412bdd7535ec8d8d314f5ecf6120472534764ba (patch)
tree0fe86e702eff81f39b1cd80a4744c0f251e2104a /mesonbuild/dependencies/base.py
parent203a548d60343a97e436b59aa026ce17597f1cd1 (diff)
downloadmeson-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.py13
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