diff --git a/mesonbuild/_typing.py b/mesonbuild/_typing.py index a01be33de..31a6e18b6 100644 --- a/mesonbuild/_typing.py +++ b/mesonbuild/_typing.py @@ -36,6 +36,9 @@ T = typing.TypeVar('T') class StringProtocol(Protocol): def __str__(self) -> str: ... +class SizedStringProtocol(Protocol, StringProtocol, typing.Sized): + pass + class ImmutableListProtocol(Protocol[T]): """A protocol used in cases where a list is returned, but should not be diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 819e47661..1882246bf 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -104,7 +104,7 @@ class Dependency(HoldableObject): return mlog.red('NO') if not self.version: return mlog.green('YES') - return mlog.AnsiText([mlog.green('YES'), ' ', mlog.cyan(self.version)]) + return mlog.AnsiText(mlog.green('YES'), ' ', mlog.cyan(self.version)) def get_compile_args(self) -> T.List[str]: if self.include_type == 'system': diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py index 314e1b7d9..06d8a0b49 100644 --- a/mesonbuild/mlog.py +++ b/mesonbuild/mlog.py @@ -22,7 +22,7 @@ from contextlib import contextmanager from pathlib import Path if T.TYPE_CHECKING: - from ._typing import StringProtocol + from ._typing import StringProtocol, SizedStringProtocol """This is (mostly) a standalone module used to write logging information about Meson runs. Some output goes to screen, @@ -143,7 +143,7 @@ TV_Loggable = T.Union[str, AnsiDecorator, 'StringProtocol'] TV_LoggableList = T.List[TV_Loggable] class AnsiText: - def __init__(self, *args: TV_LoggableList): + def __init__(self, *args: 'SizedStringProtocol'): self.args = args def __len__(self) -> int: