diff options
-rw-r--r-- | mesonbuild/ast/visitor.py | 2 | ||||
-rw-r--r-- | mesonbuild/backend/backends.py | 4 | ||||
-rw-r--r-- | mesonbuild/coredata.py | 2 | ||||
-rw-r--r-- | mesonbuild/dependencies/base.py | 6 | ||||
-rw-r--r-- | mesonbuild/interpreterbase.py | 2 | ||||
-rw-r--r-- | mesonbuild/mintro.py | 2 | ||||
-rw-r--r-- | mesonbuild/mlog.py | 43 | ||||
-rw-r--r-- | mesonbuild/mparser.py | 2 | ||||
-rw-r--r-- | sideci.yml | 1 |
9 files changed, 35 insertions, 29 deletions
diff --git a/mesonbuild/ast/visitor.py b/mesonbuild/ast/visitor.py index c8769d4..fab4ed2 100644 --- a/mesonbuild/ast/visitor.py +++ b/mesonbuild/ast/visitor.py @@ -134,7 +134,5 @@ class AstVisitor: self.visit_default_func(node) for i in node.arguments: i.accept(self) - for i in node.commas: - pass for val in node.kwargs.values(): val.accept(self) diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 4a4f7f4..5ff9b55 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -320,12 +320,14 @@ class Backend: raise MesonException('Unknown data type in object list.') return obj_list - def serialize_executable(self, tname, exe, cmd_args, workdir, env={}, + def serialize_executable(self, tname, exe, cmd_args, workdir, env=None, extra_paths=None, capture=None): ''' Serialize an executable for running with a generator or a custom target ''' import hashlib + if env is None: + env = {} if extra_paths is None: # The callee didn't check if we needed extra paths, so check it here if mesonlib.is_windows() or mesonlib.is_cygwin(): diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 9281019..b836086 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -20,7 +20,7 @@ from pathlib import PurePath from collections import OrderedDict from .mesonlib import ( MesonException, MachineChoice, PerMachine, - default_libdir, default_libexecdir, default_prefix, stringlistify + default_libdir, default_libexecdir, default_prefix ) from .wrap import WrapMode import ast diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 313f2a0..c34b102 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -924,9 +924,11 @@ class CMakeTraceLine: return s.format(self.file, self.line, self.func, self.args) class CMakeTarget: - def __init__(self, name, type, properies = {}): + def __init__(self, name, target_type, properies = None): + if properies is None: + properies = {} self.name = name - self.type = type + self.type = target_type self.properies = properies def __repr__(self): diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index c148cbd..8a67f25 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -144,7 +144,7 @@ def stringArgs(f): return wrapped def noArgsFlattening(f): - setattr(f, 'no-args-flattening', True) + setattr(f, 'no-args-flattening', True) # noqa: B010 return f def disablerIfNotFound(f): diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py index a4a6978..c47fffd 100644 --- a/mesonbuild/mintro.py +++ b/mesonbuild/mintro.py @@ -27,7 +27,7 @@ from . import mlog from .backend import backends from .mparser import FunctionNode, ArrayNode, ArgumentNode, StringNode from typing import List, Optional -import sys, os +import os import pathlib def get_meson_info_file(info_dir: str): diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py index 2121282..79dee47 100644 --- a/mesonbuild/mlog.py +++ b/mesonbuild/mlog.py @@ -19,6 +19,7 @@ import time import platform from contextlib import contextmanager import typing +from typing import Any, Generator, List, Optional, Sequence, TextIO, Union """This is (mostly) a standalone module used to write logging information about Meson runs. Some output goes to screen, @@ -43,11 +44,11 @@ if platform.system().lower() == 'windows': colorize_console = os.isatty(sys.stdout.fileno()) and _windows_ansi() # type: bool else: colorize_console = os.isatty(sys.stdout.fileno()) and os.environ.get('TERM') != 'dumb' -log_dir = None # type: typing.Optional[str] -log_file = None # type: typing.Optional[typing.TextIO] +log_dir = None # type: Optional[str] +log_file = None # type: Optional[TextIO] log_fname = 'meson-log.txt' # type: str log_depth = 0 # type: int -log_timestamp_start = None # type: typing.Optional[float] +log_timestamp_start = None # type: Optional[float] log_fatal_warnings = False # type: bool log_disable_stdout = False # type: bool log_errors_only = False # type: bool @@ -78,7 +79,7 @@ def set_timestamp_start(start: float) -> None: global log_timestamp_start log_timestamp_start = start -def shutdown() -> typing.Optional[str]: +def shutdown() -> Optional[str]: global log_file if log_file is not None: path = log_file.name @@ -124,8 +125,8 @@ def cyan(text: str) -> AnsiDecorator: # This really should be AnsiDecorator or anything that implements # __str__(), but that requires protocols from typing_extensions -def process_markup(args: typing.Sequence[typing.Union[AnsiDecorator, str]], keep: bool) -> typing.List[str]: - arr = [] # type: typing.List[str] +def process_markup(args: Sequence[Union[AnsiDecorator, str]], keep: bool) -> List[str]: + arr = [] # type: List[str] if log_timestamp_start is not None: arr = ['[{:.3f}]'.format(time.monotonic() - log_timestamp_start)] for arg in args: @@ -139,7 +140,7 @@ def process_markup(args: typing.Sequence[typing.Union[AnsiDecorator, str]], keep arr.append(str(arg)) return arr -def force_print(*args: str, **kwargs: typing.Any) -> None: +def force_print(*args: str, **kwargs: Any) -> None: global log_disable_stdout if log_disable_stdout: return @@ -160,14 +161,14 @@ def force_print(*args: str, **kwargs: typing.Any) -> None: print(cleaned, end='') # We really want a heterogenous dict for this, but that's in typing_extensions -def debug(*args: typing.Union[str, AnsiDecorator], **kwargs: typing.Any) -> None: +def debug(*args: Union[str, AnsiDecorator], **kwargs: Any) -> None: arr = process_markup(args, False) if log_file is not None: print(*arr, file=log_file, **kwargs) log_file.flush() -def log(*args: typing.Union[str, AnsiDecorator], is_error: bool = False, - **kwargs: typing.Any) -> None: +def log(*args: Union[str, AnsiDecorator], is_error: bool = False, + **kwargs: Any) -> None: global log_errors_only arr = process_markup(args, False) if log_file is not None: @@ -178,7 +179,7 @@ def log(*args: typing.Union[str, AnsiDecorator], is_error: bool = False, if not log_errors_only or is_error: force_print(*arr, **kwargs) -def _log_error(severity: str, *rargs: typing.Union[str, AnsiDecorator], **kwargs: typing.Any) -> None: +def _log_error(severity: str, *rargs: Union[str, AnsiDecorator], **kwargs: Any) -> None: from .mesonlib import get_error_location_string from .environment import build_filename from .mesonlib import MesonException @@ -186,7 +187,7 @@ def _log_error(severity: str, *rargs: typing.Union[str, AnsiDecorator], **kwargs # The tping requirements here are non-obvious. Lists are invariant, # therefore List[A] and List[Union[A, B]] are not able to be joined if severity == 'warning': - label = [yellow('WARNING:')] # type: typing.List[typing.Union[str, AnsiDecorator]] + label = [yellow('WARNING:')] # type: List[Union[str, AnsiDecorator]] elif severity == 'error': label = [red('ERROR:')] elif severity == 'deprecation': @@ -202,7 +203,7 @@ def _log_error(severity: str, *rargs: typing.Union[str, AnsiDecorator], **kwargs location_str = get_error_location_string(location_file, location.lineno) # Unions are frankly awful, and we have to cast here to get mypy # to understand that the list concatenation is safe - location_list = typing.cast(typing.List[typing.Union[str, AnsiDecorator]], [location_str]) + location_list = typing.cast(List[Union[str, AnsiDecorator]], [location_str]) args = location_list + args log(*args, **kwargs) @@ -211,18 +212,20 @@ def _log_error(severity: str, *rargs: typing.Union[str, AnsiDecorator], **kwargs if log_fatal_warnings: raise MesonException("Fatal warnings enabled, aborting") -def error(*args: typing.Union[str, AnsiDecorator], **kwargs: typing.Any) -> None: +def error(*args: Union[str, AnsiDecorator], **kwargs: Any) -> None: return _log_error('error', *args, **kwargs, is_error=True) -def warning(*args: typing.Union[str, AnsiDecorator], **kwargs: typing.Any) -> None: +def warning(*args: Union[str, AnsiDecorator], **kwargs: Any) -> None: return _log_error('warning', *args, **kwargs, is_error=True) -def deprecation(*args: typing.Union[str, AnsiDecorator], **kwargs: typing.Any) -> None: +def deprecation(*args: Union[str, AnsiDecorator], **kwargs: Any) -> None: return _log_error('deprecation', *args, **kwargs, is_error=True) -def exception(e: Exception, prefix: AnsiDecorator = red('ERROR:')) -> None: +def exception(e: Exception, prefix: Optional[AnsiDecorator] = None) -> None: + if prefix is None: + prefix = red('ERROR:') log() - args = [] # type: typing.List[typing.Union[AnsiDecorator, str]] + args = [] # type: List[Union[AnsiDecorator, str]] if hasattr(e, 'file') and hasattr(e, 'lineno') and hasattr(e, 'colno'): # Mypy can't figure this out, and it's pretty easy to vidual inspect # that this is correct, so we'll just ignore it. @@ -234,7 +237,7 @@ def exception(e: Exception, prefix: AnsiDecorator = red('ERROR:')) -> None: # Format a list for logging purposes as a string. It separates # all but the last item with commas, and the last with 'and'. -def format_list(input_list: typing.List[str]) -> str: +def format_list(input_list: List[str]) -> str: l = len(input_list) if l > 2: return ' and '.join([', '.join(input_list[:-1]), input_list[-1]]) @@ -246,7 +249,7 @@ def format_list(input_list: typing.List[str]) -> str: return '' @contextmanager -def nested() -> typing.Generator[None, None, None]: +def nested() -> Generator[None, None, None]: global log_depth log_depth += 1 try: diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py index 4305a7c..b4fb032 100644 --- a/mesonbuild/mparser.py +++ b/mesonbuild/mparser.py @@ -217,7 +217,7 @@ class BaseNode: fname = 'visit_{}'.format(type(self).__name__) if hasattr(visitor, fname): func = getattr(visitor, fname) - if hasattr(func, '__call__'): + if callable(func): func(self) class ElementaryNode(BaseNode): @@ -4,3 +4,4 @@ linter: plugins: - flake8-blind-except - flake8-builtins + - flake8-bugbear |