build: use a TypedDict for d_features
This allows for better type checking.
This commit is contained in:
parent
7c101413d0
commit
b2f681c92a
|
@ -44,7 +44,7 @@ from .compilers import (
|
|||
from .interpreterbase import FeatureNew, FeatureDeprecated
|
||||
|
||||
if T.TYPE_CHECKING:
|
||||
from typing_extensions import Literal
|
||||
from typing_extensions import Literal, TypedDict
|
||||
|
||||
from . import environment
|
||||
from ._typing import ImmutableListProtocol
|
||||
|
@ -64,6 +64,13 @@ if T.TYPE_CHECKING:
|
|||
BuildTargetTypes = T.Union['BuildTarget', 'CustomTarget', 'CustomTargetIndex']
|
||||
ObjectTypes = T.Union[str, 'File', 'ExtractedObjects', 'GeneratedTypes']
|
||||
|
||||
class DFeatures(TypedDict):
|
||||
|
||||
unittest: bool
|
||||
debug: T.List[T.Union[str, int]]
|
||||
import_dirs: T.List[IncludeDirs]
|
||||
versions: T.List[T.Union[str, int]]
|
||||
|
||||
pch_kwargs = {'c_pch', 'cpp_pch'}
|
||||
|
||||
lang_arg_kwargs = {f'{lang}_args' for lang in all_languages}
|
||||
|
@ -751,7 +758,12 @@ class BuildTarget(Target):
|
|||
self.sources: T.List[File] = []
|
||||
self.generated: T.List['GeneratedTypes'] = []
|
||||
self.extra_files: T.List[File] = []
|
||||
self.d_features = defaultdict(list)
|
||||
self.d_features: DFeatures = {
|
||||
'debug': kwargs.get('d_debug', []),
|
||||
'import_dirs': kwargs.get('d_import_dirs', []),
|
||||
'versions': kwargs.get('d_module_versions', []),
|
||||
'unittest': kwargs.get('d_unittest', False),
|
||||
}
|
||||
self.pic = False
|
||||
self.pie = False
|
||||
# Track build_rpath entries so we can remove them at install time
|
||||
|
@ -1114,21 +1126,6 @@ class BuildTarget(Target):
|
|||
self.vala_vapi = kwargs.get('vala_vapi', self.name + '.vapi')
|
||||
self.vala_gir = kwargs.get('vala_gir', None)
|
||||
|
||||
dfeatures = defaultdict(list)
|
||||
dfeature_unittest = kwargs.get('d_unittest', False)
|
||||
if dfeature_unittest:
|
||||
dfeatures['unittest'] = dfeature_unittest
|
||||
dfeature_versions = kwargs.get('d_module_versions', [])
|
||||
if dfeature_versions:
|
||||
dfeatures['versions'] = dfeature_versions
|
||||
dfeature_debug = kwargs.get('d_debug', [])
|
||||
if dfeature_debug:
|
||||
dfeatures['debug'] = dfeature_debug
|
||||
if kwargs.get('d_import_dirs') is not None:
|
||||
dfeatures['import_dirs'] = kwargs['d_import_dirs']
|
||||
if dfeatures:
|
||||
self.d_features = dfeatures
|
||||
|
||||
self.link_args = extract_as_list(kwargs, 'link_args')
|
||||
for i in self.link_args:
|
||||
if not isinstance(i, str):
|
||||
|
|
Loading…
Reference in New Issue