aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/optinterpreter.py
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2022-02-10 21:39:50 -0500
committerEli Schwartz <eschwartz@archlinux.org>2022-02-14 20:40:41 -0500
commitc0b8e02d9fb1b58551b18e68ae188263dd90eb4c (patch)
treeac67d9907a21c04308b33f9a6889b88dad735de7 /mesonbuild/optinterpreter.py
parentbab651a7a03b48ff909a49eabe2dbcef0e821496 (diff)
downloadmeson-c0b8e02d9fb1b58551b18e68ae188263dd90eb4c.zip
meson-c0b8e02d9fb1b58551b18e68ae188263dd90eb4c.tar.gz
meson-c0b8e02d9fb1b58551b18e68ae188263dd90eb4c.tar.bz2
FeatureNew: add mypy type annotations for subproject arg
Use a derived type when passing `subproject` around, so that mypy knows it's actually a SubProject, not a str. This means that passing anything other than a handle to the interpreter state's subproject attribute becomes a type violation, specifically when the order of the *four* different str arguments is typoed.
Diffstat (limited to 'mesonbuild/optinterpreter.py')
-rw-r--r--mesonbuild/optinterpreter.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py
index 6155c2f..46a4445 100644
--- a/mesonbuild/optinterpreter.py
+++ b/mesonbuild/optinterpreter.py
@@ -22,6 +22,7 @@ from . import mlog
from .interpreterbase import FeatureNew, typed_pos_args, typed_kwargs, ContainerTypeInfo, KwargInfo, permittedKwargs
if T.TYPE_CHECKING:
from .interpreterbase import TYPE_var, TYPE_kwargs
+ from .interpreterbase import SubProject
from typing_extensions import TypedDict
FuncOptionArgs = TypedDict('FuncOptionArgs', {
'type': str,
@@ -50,7 +51,7 @@ optname_regex = re.compile('[^a-zA-Z0-9_-]')
class OptionInterpreter:
- def __init__(self, subproject: str) -> None:
+ def __init__(self, subproject: 'SubProject') -> None:
self.options: 'coredata.KeyedOptionDictType' = {}
self.subproject = subproject
self.option_types = {'string': self.string_parser,