diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2022-03-01 23:55:42 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2022-03-07 19:09:50 -0500 |
commit | c231c4bd2ad1a9b0ddb00a838c89566bc88d2a8e (patch) | |
tree | e2e782b9d7883b96a1bcecc13ddc51d6656bdf20 | |
parent | a009eacc65ddb447edcfc9fd317ad828d9b3353a (diff) | |
download | meson-c231c4bd2ad1a9b0ddb00a838c89566bc88d2a8e.zip meson-c231c4bd2ad1a9b0ddb00a838c89566bc88d2a8e.tar.gz meson-c231c4bd2ad1a9b0ddb00a838c89566bc88d2a8e.tar.bz2 |
move a bunch of imports into TYPE_CHECKING blocks
These are only used for type checking, so don't bother importing them at
runtime.
Generally add future annotations at the same time, to make sure that
existing uses of these imports don't need to be quoted.
-rw-r--r-- | mesonbuild/dependencies/pkgconfig.py | 4 | ||||
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 5 | ||||
-rw-r--r-- | mesonbuild/interpreter/primitives/array.py | 3 | ||||
-rw-r--r-- | mesonbuild/interpreter/primitives/dict.py | 3 | ||||
-rw-r--r-- | mesonbuild/interpreter/primitives/integer.py | 5 | ||||
-rw-r--r-- | mesonbuild/interpreter/primitives/string.py | 5 | ||||
-rw-r--r-- | mesonbuild/interpreter/type_checking.py | 3 | ||||
-rw-r--r-- | mesonbuild/interpreterbase/decorators.py | 6 | ||||
-rw-r--r-- | mesonbuild/interpreterbase/disabler.py | 7 | ||||
-rw-r--r-- | mesonbuild/interpreterbase/interpreterbase.py | 5 | ||||
-rw-r--r-- | mesonbuild/linkers/detect.py | 8 |
11 files changed, 32 insertions, 22 deletions
diff --git a/mesonbuild/dependencies/pkgconfig.py b/mesonbuild/dependencies/pkgconfig.py index 73f2e60..55a364c 100644 --- a/mesonbuild/dependencies/pkgconfig.py +++ b/mesonbuild/dependencies/pkgconfig.py @@ -11,9 +11,10 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations from .base import ExternalDependency, DependencyException, sort_libpaths, DependencyTypeName -from ..mesonlib import MachineChoice, OptionKey, OrderedSet, PerMachine, Popen_safe +from ..mesonlib import OptionKey, OrderedSet, PerMachine, Popen_safe from ..programs import find_external_program, ExternalProgram from .. import mlog from pathlib import PurePath @@ -24,6 +25,7 @@ import typing as T if T.TYPE_CHECKING: from ..environment import Environment + from ..mesonlib import MachineChoice from .._typing import ImmutableListProtocol class PkgConfigDependency(ExternalDependency): diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 8eca0b3..bc238c7 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -33,10 +33,9 @@ from ..interpreterbase import InterpreterException, InvalidArguments, InvalidCod from ..interpreterbase import Disabler, disablerIfNotFound from ..interpreterbase import FeatureNew, FeatureDeprecated, FeatureNewKwargs, FeatureDeprecatedKwargs from ..interpreterbase import ObjectHolder -from ..interpreterbase.baseobjects import InterpreterObject, TYPE_var, TYPE_kwargs from ..modules import ExtensionModule, ModuleObject, MutableModuleObject, NewExtensionModule, NotFoundExtensionModule from ..cmake import CMakeInterpreter -from ..backend.backends import Backend, ExecutableSerialisation +from ..backend.backends import ExecutableSerialisation from . import interpreterobjects as OBJ from . import compiler as compilerOBJ @@ -96,6 +95,8 @@ if T.TYPE_CHECKING: from typing_extensions import Literal from . import kwargs + from ..backend.backends import Backend + from ..interpreterbase.baseobjects import InterpreterObject, TYPE_var, TYPE_kwargs from ..programs import OverrideProgram # Input source types passed to Targets diff --git a/mesonbuild/interpreter/primitives/array.py b/mesonbuild/interpreter/primitives/array.py index e48e1c2..eeea112 100644 --- a/mesonbuild/interpreter/primitives/array.py +++ b/mesonbuild/interpreter/primitives/array.py @@ -1,5 +1,6 @@ # Copyright 2021 The Meson development team # SPDX-license-identifier: Apache-2.0 +from __future__ import annotations import typing as T @@ -15,7 +16,6 @@ from ...interpreterbase import ( FeatureNew, TYPE_var, - TYPE_kwargs, InvalidArguments, ) @@ -24,6 +24,7 @@ from ...mparser import PlusAssignmentNode if T.TYPE_CHECKING: # Object holders need the actual interpreter from ...interpreter import Interpreter + from ...interpreterbase import TYPE_kwargs class ArrayHolder(ObjectHolder[T.List[TYPE_var]], IterableObject): def __init__(self, obj: T.List[TYPE_var], interpreter: 'Interpreter') -> None: diff --git a/mesonbuild/interpreter/primitives/dict.py b/mesonbuild/interpreter/primitives/dict.py index 24f4d21..ac7c99b 100644 --- a/mesonbuild/interpreter/primitives/dict.py +++ b/mesonbuild/interpreter/primitives/dict.py @@ -1,5 +1,6 @@ # Copyright 2021 The Meson development team # SPDX-license-identifier: Apache-2.0 +from __future__ import annotations import typing as T @@ -14,7 +15,6 @@ from ...interpreterbase import ( typed_pos_args, TYPE_var, - TYPE_kwargs, InvalidArguments, ) @@ -22,6 +22,7 @@ from ...interpreterbase import ( if T.TYPE_CHECKING: # Object holders need the actual interpreter from ...interpreter import Interpreter + from ...interpreterbase import TYPE_kwargs class DictHolder(ObjectHolder[T.Dict[str, TYPE_var]], IterableObject): def __init__(self, obj: T.Dict[str, TYPE_var], interpreter: 'Interpreter') -> None: diff --git a/mesonbuild/interpreter/primitives/integer.py b/mesonbuild/interpreter/primitives/integer.py index 6563ee9..f433f57 100644 --- a/mesonbuild/interpreter/primitives/integer.py +++ b/mesonbuild/interpreter/primitives/integer.py @@ -1,5 +1,6 @@ # Copyright 2021 The Meson development team # SPDX-license-identifier: Apache-2.0 +from __future__ import annotations from ...interpreterbase import ( ObjectHolder, @@ -8,9 +9,6 @@ from ...interpreterbase import ( noKwargs, noPosargs, - TYPE_var, - TYPE_kwargs, - InvalidArguments ) @@ -19,6 +17,7 @@ import typing as T if T.TYPE_CHECKING: # Object holders need the actual interpreter from ...interpreter import Interpreter + from ...interpreterbase import TYPE_var, TYPE_kwargs class IntegerHolder(ObjectHolder[int]): def __init__(self, obj: int, interpreter: 'Interpreter') -> None: diff --git a/mesonbuild/interpreter/primitives/string.py b/mesonbuild/interpreter/primitives/string.py index 9cd51b4..9129303 100644 --- a/mesonbuild/interpreter/primitives/string.py +++ b/mesonbuild/interpreter/primitives/string.py @@ -1,5 +1,6 @@ # Copyright 2021 The Meson development team # SPDX-license-identifier: Apache-2.0 +from __future__ import annotations import re import os @@ -17,9 +18,6 @@ from ...interpreterbase import ( noPosargs, typed_pos_args, - TYPE_var, - TYPE_kwargs, - InvalidArguments, ) @@ -27,6 +25,7 @@ from ...interpreterbase import ( if T.TYPE_CHECKING: # Object holders need the actual interpreter from ...interpreter import Interpreter + from ...interpreterbase import TYPE_var, TYPE_kwargs class StringHolder(ObjectHolder[str]): def __init__(self, obj: str, interpreter: 'Interpreter') -> None: diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index cce0024..37ab192 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -11,7 +11,6 @@ from .. import compilers from ..build import (EnvironmentVariables, EnvInitValueType, CustomTarget, BuildTarget, CustomTargetIndex, ExtractedObjects, GeneratedList, IncludeDirs) from ..coredata import UserFeatureOption -from ..interpreterbase import TYPE_var from ..interpreterbase.decorators import KwargInfo, ContainerTypeInfo from ..mesonlib import File, FileMode, MachineChoice, listify, has_path_sep, OptionKey from ..programs import ExternalProgram @@ -22,6 +21,8 @@ NoneType: T.Type[None] = type(None) if T.TYPE_CHECKING: from typing_extensions import Literal + from ..interpreterbase import TYPE_var + def in_set_validator(choices: T.Set[str]) -> T.Callable[[str], T.Optional[str]]: """Check that the choice given was one of the given set.""" diff --git a/mesonbuild/interpreterbase/decorators.py b/mesonbuild/interpreterbase/decorators.py index 672ef5b..e678fd9 100644 --- a/mesonbuild/interpreterbase/decorators.py +++ b/mesonbuild/interpreterbase/decorators.py @@ -11,12 +11,11 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations from .. import mesonlib, mlog -from .baseobjects import TV_func, TYPE_var, TYPE_kwargs from .disabler import Disabler from .exceptions import InterpreterException, InvalidArguments -from .operator import MesonOperator from ._unholder import _unholder from dataclasses import dataclass @@ -30,8 +29,9 @@ if T.TYPE_CHECKING: from typing_extensions import Protocol from .. import mparser - from .baseobjects import InterpreterObject + from .baseobjects import InterpreterObject, TV_func, TYPE_var, TYPE_kwargs from .interpreterbase import SubProject + from .operator import MesonOperator _TV_IntegerObject = T.TypeVar('_TV_IntegerObject', bound=InterpreterObject, contravariant=True) _TV_ARG1 = T.TypeVar('_TV_ARG1', bound=TYPE_var, contravariant=True) diff --git a/mesonbuild/interpreterbase/disabler.py b/mesonbuild/interpreterbase/disabler.py index 63b914e..182bb62 100644 --- a/mesonbuild/interpreterbase/disabler.py +++ b/mesonbuild/interpreterbase/disabler.py @@ -11,10 +11,15 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations -from .baseobjects import MesonInterpreterObject, TYPE_var, TYPE_kwargs import typing as T +from .baseobjects import MesonInterpreterObject + +if T.TYPE_CHECKING: + from .baseobjects import TYPE_var, TYPE_kwargs + class Disabler(MesonInterpreterObject): def method_call(self, method_name: str, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> TYPE_var: if method_name == 'found': diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py index 28211b0..85aabd1 100644 --- a/mesonbuild/interpreterbase/interpreterbase.py +++ b/mesonbuild/interpreterbase/interpreterbase.py @@ -14,6 +14,7 @@ # This class contains the basic functionality needed to run any interpreter # or an interpreter-based tool. +from __future__ import annotations from .. import mparser, mesonlib from .. import environment @@ -26,10 +27,7 @@ from .baseobjects import ( ObjectHolder, IterableObject, - SubProject, - TYPE_var, - TYPE_kwargs, HoldableTypes, ) @@ -54,6 +52,7 @@ import typing as T import textwrap if T.TYPE_CHECKING: + from .baseobjects import SubProject, TYPE_kwargs from ..interpreter import Interpreter HolderMapType = T.Dict[ diff --git a/mesonbuild/linkers/detect.py b/mesonbuild/linkers/detect.py index 0bfd708..80e0948 100644 --- a/mesonbuild/linkers/detect.py +++ b/mesonbuild/linkers/detect.py @@ -12,14 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations + from ..mesonlib import ( - EnvironmentException, MachineChoice, OptionKey, + EnvironmentException, OptionKey, Popen_safe, search_version ) from .linkers import ( - DynamicLinker, AppleDynamicLinker, - GnuDynamicLinker, GnuGoldDynamicLinker, GnuBFDDynamicLinker, LLVMDynamicLinker, @@ -36,8 +36,10 @@ import shlex import typing as T if T.TYPE_CHECKING: + from .linkers import DynamicLinker, GnuDynamicLinker from ..environment import Environment from ..compilers import Compiler + from ..mesonlib import MachineChoice defaults: T.Dict[str, T.List[str]] = {} defaults['static_linker'] = ['ar', 'gar'] |