From 9448d85a0134f3d9eed7659f0dfd39e2b835a1c5 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 11:22:53 -0500 Subject: [PATCH 1/7] Remove redundant overload decorator --- loopy/target/python.py | 1 - 1 file changed, 1 deletion(-) diff --git a/loopy/target/python.py b/loopy/target/python.py index f4b8d3a3f..439e7c260 100644 --- a/loopy/target/python.py +++ b/loopy/target/python.py @@ -246,7 +246,6 @@ def get_temporary_decls(self, return result - @override @override def get_expression_to_code_mapper(self, codegen_state: CodeGenerationState): return ExpressionToPythonMapper(codegen_state) From 72cfb92689f936c4884305657c75ea4f12949320 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 11:23:39 -0500 Subject: [PATCH 2/7] Type make_kernel/make_function --- doc/ref_internals.rst | 14 ++ loopy/__init__.py | 17 +- loopy/kernel/__init__.py | 15 +- loopy/kernel/creation.py | 403 +++++++++++++++++---------------------- loopy/types.py | 7 +- loopy/typing.py | 27 ++- test/test_callables.py | 4 +- test/test_loopy.py | 7 - 8 files changed, 232 insertions(+), 262 deletions(-) diff --git a/doc/ref_internals.rst b/doc/ref_internals.rst index 6dd8a0d79..84fb22067 100644 --- a/doc/ref_internals.rst +++ b/doc/ref_internals.rst @@ -66,6 +66,15 @@ References Mostly things that Sphinx (our documentation tool) should resolve but won't. +.. class:: EllipsisType + + See :data:`types.EllipsisType`. + +.. class:: ToTagSetConvertible + + An iterable of :class:`~pytools.tag.Tag` instances, a single :class:`~pytools.tag.Tag`, + or *None*. + .. class:: ASTType A type variable, representing an AST node. For now, either :class:`cgen.Generable` @@ -102,3 +111,8 @@ Mostly things that Sphinx (our documentation tool) should resolve but won't. .. class:: PwAff See :class:`islpy.PwAff`. + +.. class:: BasicSet + + See :class:`islpy.BasicSet`. + diff --git a/loopy/__init__.py b/loopy/__init__.py index 8060ee0bc..799253956 100644 --- a/loopy/__init__.py +++ b/loopy/__init__.py @@ -23,6 +23,10 @@ THE SOFTWARE. """ +import os +from typing import TYPE_CHECKING + +from pytools import strtobool from loopy.auto_test import auto_test_vs_ref from loopy.codegen import PreambleInfo, generate_body, generate_code, generate_code_v2 @@ -213,6 +217,10 @@ from loopy.version import MOST_RECENT_LANGUAGE_VERSION, VERSION +if TYPE_CHECKING: + from collections.abc import Callable + + __all__ = [ "MOST_RECENT_LANGUAGE_VERSION", "VERSION", @@ -495,11 +503,6 @@ def register_symbol_manglers(kernel, manglers): # {{{ cache control -import os - -from pytools import strtobool - - # Caching is enabled by default, but can be disabled by setting # the environment variables LOOPY_NO_CACHE or CG_NO_CACHE to a # 'true' value. @@ -674,10 +677,10 @@ def make_einsum(spec, arg_names, **knl_creation_kwargs): # {{{ default target -_DEFAULT_TARGET = None +_DEFAULT_TARGET: Callable[[], TargetBase] | None = None -def set_default_target(target): +def set_default_target(target: Callable[[], TargetBase] | None): # deliberately undocumented for now global _DEFAULT_TARGET _DEFAULT_TARGET = target diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py index 96627a969..16a5f3538 100644 --- a/loopy/kernel/__init__.py +++ b/loopy/kernel/__init__.py @@ -59,7 +59,6 @@ ) from pytools.tag import Tag, Taggable, TagT -import loopy.codegen import loopy.kernel.data # to help out Sphinx from loopy.diagnostic import CannotBranchDomainTree, LoopyError, StaticValueFindingError from loopy.kernel.data import ( @@ -73,7 +72,7 @@ ) from loopy.tools import update_persistent_hash from loopy.types import LoopyType, NumpyType -from loopy.typing import fset_union, not_none +from loopy.typing import PreambleGenerator, SymbolMangler, fset_union, not_none if TYPE_CHECKING: @@ -81,7 +80,6 @@ Callable, Collection, Hashable, - Iterator, Mapping, Sequence, Set, @@ -187,13 +185,8 @@ class LoopKernel(Taggable): name: str = "loopy_kernel" preambles: Sequence[tuple[str, str]] = () - preamble_generators: Sequence[ - Callable[ - [loopy.codegen.PreambleInfo], - Iterator[tuple[str, str]]] - ] = () - symbol_manglers: Sequence[ - Callable[[LoopKernel, str], tuple[LoopyType, str] | None]] = () + preamble_generators: Sequence[PreambleGenerator] = () + symbol_manglers: Sequence[SymbolMangler] = () linearization: Sequence[ScheduleItem] | None = None iname_slab_increments: constantdict[InameStr, tuple[int, int]] = field( default_factory=constantdict) @@ -212,7 +205,7 @@ class LoopKernel(Taggable): with non-parallel implementation tags. """ - applied_iname_rewrites: tuple[dict[InameStr, Expression], ...] = () + applied_iname_rewrites: Sequence[Mapping[InameStr, Expression]] = () """ A list of past substitution dictionaries that were applied to the kernel. These are stored so that they may be repeated diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py index fd74bf3d5..7dab5a401 100644 --- a/loopy/kernel/creation.py +++ b/loopy/kernel/creation.py @@ -1,8 +1,5 @@ -# pyright: reportAny=false - """UI for kernel creation.""" - from __future__ import annotations @@ -30,11 +27,14 @@ import logging import re +from collections.abc import Mapping from dataclasses import dataclass from sys import intern -from typing import TYPE_CHECKING, Any, cast +from types import EllipsisType +from typing import TYPE_CHECKING, Any, Literal, cast import numpy as np +from constantdict import constantdict import islpy as isl from islpy import dim_type @@ -46,17 +46,36 @@ from loopy.kernel.array import FixedStrideArrayDimTag from loopy.kernel.data import ( AddressSpace, + ArrayArg, + SubstitutionRule, + TemporaryVariable, + ValueArg, +) +from loopy.kernel.instruction import ( Assignment, InstructionBase, MultiAssignmentBase, - SubstitutionRule, - ValueArg, - auto, ) +from loopy.options import Options from loopy.symbolic import IdentityMapper, SubArrayRef, WalkMapper +from loopy.target import TargetBase from loopy.tools import Optional, intern_frozenset_of_ids from loopy.translation_unit import TranslationUnit, for_each_kernel -from loopy.typing import not_none +from loopy.types import NumpyType +from loopy.typing import InameStr, PreambleGenerator, SymbolMangler, auto, not_none + + +if TYPE_CHECKING: + from collections.abc import Mapping, Sequence + from types import EllipsisType + + from numpy.typing import DTypeLike + + from pymbolic import Expression + from pytools.tag import ToTagSetConvertible + + from loopy.options import Options + from loopy.target import TargetBase logger = logging.getLogger(__name__) @@ -120,90 +139,6 @@ def _normalize_tags(tags): # }}} -# {{{ expand defines - -WORD_RE = re.compile(r"\b([a-zA-Z0-9_]+)\b") -BRACE_RE = re.compile(r"\$\{([a-zA-Z0-9_]+)\}") - - -def expand_defines(insn, defines, single_valued=True): - replacements = [()] - - processed_defines = set() - - for find_regexp, replace_pattern in [ - (BRACE_RE, r"\$\{%s\}"), - (WORD_RE, r"\b%s\b"), - ]: - - for match in find_regexp.finditer(insn): - define_name = match.group(1) - - # {{{ don't process the same define multiple times - - if define_name in processed_defines: - # already dealt with - continue - - processed_defines.add(define_name) - - # }}} - - try: - value = defines[define_name] - except KeyError: - continue - - if isinstance(value, list): - if single_valued: - raise ValueError("multi-valued macro expansion " - "not allowed " - "in this context (when expanding '%s')" % define_name) - - replacements = [ - (*rep, (replace_pattern % define_name, subval)) - for rep in replacements - for subval in value - ] - else: - replacements = [ - (*rep, (replace_pattern % define_name, value)) - for rep in replacements] - - for rep in replacements: - rep_value = insn - for pattern, val in rep: - rep_value = re.sub(pattern, str(val), rep_value) - - yield rep_value - - -def expand_defines_in_expr(expr, defines): - if not defines: - return expr - - from pymbolic.primitives import Variable - - from loopy.symbolic import parse - - def subst_func(var): - if isinstance(var, Variable): - try: - var_value = defines[var.name] - except KeyError: - return None - else: - return parse(str(var_value)) - else: - return None - - from loopy.symbolic import PartialEvaluationMapper, SubstitutionMapper - return PartialEvaluationMapper()( - SubstitutionMapper(subst_func)(expr)) - -# }}} - - # {{{ instruction options def get_default_insn_options_dict(): @@ -227,10 +162,6 @@ def get_default_insn_options_dict(): from collections import namedtuple -if TYPE_CHECKING: - from collections.abc import Sequence - - _NosyncParseResult = namedtuple("_NosyncParseResult", "expr, scope") @@ -703,7 +634,14 @@ def _count_open_paren_symbols(s): return result -def parse_instructions(instructions, defines): +def parse_instructions( + instructions: Sequence[ + InstructionBase | SubstitutionRule | str + ] | str, + ) -> tuple[ + Sequence[InstructionBase], + Sequence[InameStr], + Mapping[str, SubstitutionRule]]: if isinstance(instructions, str): instructions = [instructions] @@ -803,21 +741,7 @@ def intern_if_str(s): # }}} instructions = new_instructions - new_instructions = [] - - # {{{ pass 3: defines - - for insn in instructions: - if isinstance(insn, InstructionBase): - new_instructions.append(insn) - else: - for sub_insn in expand_defines(insn, defines, single_valued=False): - new_instructions.append(sub_insn) - - # }}} - - instructions = new_instructions - new_instructions = [] + del new_instructions inames_to_dup = [] # one for each parsed_instruction @@ -828,6 +752,7 @@ def intern_if_str(s): {"predicates": frozenset(), "insn_predicates": frozenset()}] + new_instructions = [] for insn in instructions: if isinstance(insn, InstructionBase): local_w_inames = insn_options_stack[-1]["within_inames"] @@ -1075,7 +1000,7 @@ def _find_existentially_quantified_inames(dom_str): return {ex_quant.group(1) for ex_quant in EX_QUANT_RE.finditer(dom_str)} -def parse_domains(domains, defines): +def parse_domains(domains): if isinstance(domains, (isl.BasicSet, str)): domains = [domains] @@ -1084,10 +1009,7 @@ def parse_domains(domains, defines): for dom in domains: if isinstance(dom, str): - dom, = expand_defines(dom, defines) - - # pylint warning is spurious - if not dom.lstrip().startswith("["): # pylint: disable=no-member + if not dom.lstrip().startswith("["): # i.e. if no parameters are already given parameters = (_gather_isl_identifiers(dom) - _find_inames_in_set(dom) @@ -1686,37 +1608,6 @@ def feed_assignee_of_instruction(receiver): # }}} -# {{{ expand defines in shapes - -def expand_defines_in_shapes(kernel, defines): - if not defines: - return kernel - - from loopy.kernel.array import ArrayBase - from loopy.kernel.creation import expand_defines_in_expr - - def expr_map(expr): - return expand_defines_in_expr(expr, defines) - - processed_args = [] - for arg in kernel.args: - if isinstance(arg, ArrayBase): - arg = arg.map_exprs(expr_map) - - processed_args.append(arg) - - processed_temp_vars = {} - for tv in kernel.temporary_variables.values(): - processed_temp_vars[tv.name] = tv.map_exprs(expr_map) - - return kernel.copy( - args=processed_args, - temporary_variables=processed_temp_vars, - ) - -# }}} - - # {{{ guess argument shapes def guess_arg_shape_if_requested(kernel, default_order): @@ -2194,7 +2085,36 @@ def realize_slices_array_inputs_as_sub_array_refs(kernel): # {{{ make_function -def make_function(domains, instructions, kernel_data=None, **kwargs): +def make_function( + domains: str | Sequence[str | isl.BasicSet], + instructions: Sequence[ + InstructionBase | SubstitutionRule | str + ] | str, + kernel_data: Sequence[ + ValueArg | ArrayArg | TemporaryVariable | EllipsisType | str + ] | str = (...,), + *, + temporary_variables: Mapping[str, TemporaryVariable] | None = None, + substitutions: Mapping[str, SubstitutionRule] | None = None, + preambles: Sequence[tuple[str, str]] = (), + preamble_generators: Sequence[PreambleGenerator] = (), + default_order: Literal["C"] | Literal["F"] | type[auto] = "C", + default_offset: Literal[0] | type[auto] | None = None, + symbol_manglers: Sequence[SymbolMangler] = (), + assumptions: isl.BasicSet | str = "", + silenced_warnings: str | Sequence[str] = (), + options: str | Options = "", + target: TargetBase | None = None, + seq_dependencies: bool = False, + fixed_parameters: Mapping[str, int | float] | None = None, + lang_version: tuple[str | int, ...] | None = None, + index_dtype: DTypeLike | None = None, + tags: ToTagSetConvertible = None, + name: str | None = None, + loop_priority: frozenset[tuple[InameStr, ...]] | None = None, + iname_slab_increments: Mapping[InameStr, tuple[int, int]] | None = None, + applied_iname_rewrites: Sequence[Mapping[InameStr, Expression]] = (), + ) -> TranslationUnit: """User-facing kernel creation entrypoint. :arg domains: @@ -2222,15 +2142,12 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): May also contain :class:`TemporaryVariable` instances(which do not give rise to kernel-level arguments). - The string ``"..."`` may be passed as one of the entries + The ellipsis ``...`` may be passed as one of the entries of the list, in which case loopy will infer names, shapes, and types of arguments from the kernel code. It is - possible to just pass the list ``["..."]``, in which case + possible to just pass the list ``[...]`` (the default), in which case all arguments are inferred. - In Python 3, the string ``"..."`` may be spelled somewhat more sensibly - as just ``...`` (the ellipsis), for the same meaning. - As an additional option, each argument may be specified as just a name (a string). This is useful to specify argument ordering. All other characteristics of the named arguments are inferred. @@ -2258,9 +2175,6 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): on loop domain parameters. (an isl.Set or a string in :ref:`isl-syntax`. If given as a string, only the CONDITIONS part of the set notation should be given.) - :arg local_sizes: A dictionary from integers to integers, mapping - workgroup axes to their sizes, e.g. *{0: 16}* forces axis 0 to be - length 16. :arg silenced_warnings: a list (or semicolon-separated string) or warnings to silence :arg options: an instance of :class:`loopy.Options` or an equivalent @@ -2308,40 +2222,31 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): """ creation_plog = ProcessLogger( - logger, - "%s: instantiate" % kwargs.get("name", "(unnamed)")) - - if kernel_data is None: - kernel_data = [...] - defines = kwargs.pop("defines", {}) - default_order = kwargs.pop("default_order", "C") - default_offset = kwargs.pop("default_offset", 0) - silenced_warnings = cast("Sequence[str]", kwargs.pop("silenced_warnings", [])) - options = kwargs.pop("options", None) - flags = kwargs.pop("flags", None) - target = kwargs.pop("target", None) - seq_dependencies = kwargs.pop("seq_dependencies", False) - fixed_parameters = kwargs.pop("fixed_parameters", {}) - assumptions = kwargs.pop("assumptions", None) - - if defines: - from warnings import warn - warn("'defines' argument to make_kernel is deprecated. " - "Use lp.fix_parameters instead", - DeprecationWarning, stacklevel=2) + logger, f"{name if name else '(unnamed)'}%s: instantiate") if target is None: from loopy import _DEFAULT_TARGET + assert _DEFAULT_TARGET is not None target = _DEFAULT_TARGET() - if flags is not None: - if options is not None: - raise TypeError("may not pass both 'options' and 'flags'") + if temporary_variables is None: + temporary_variables = {} + if fixed_parameters is None: + fixed_parameters = {} + if loop_priority is None: + loop_priority = frozenset() + if substitutions is None: + substitutions = {} + if default_offset is None: + default_offset = 0 + if iname_slab_increments is None: + iname_slab_increments = constantdict() + if preambles is None: + preambles = () - from warnings import warn - warn("'flags' is deprecated. Use 'options' instead", - DeprecationWarning, stacklevel=2) - options = flags + if name is None: + from loopy.kernel import LoopKernel + name = LoopKernel.name from loopy.options import make_options options = make_options(options) @@ -2354,7 +2259,6 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): getattr(v, lvs): lvs for lvs in LANGUAGE_VERSION_SYMBOLS} - lang_version = kwargs.pop("lang_version", None) if lang_version is None: # {{{ peek into caller's module to look for LOOPY_KERNEL_LANGUAGE_VERSION @@ -2407,27 +2311,16 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): # {{{ separate temporary variables and arguments, take care of names with commas - from loopy.kernel.data import ArrayBase, TemporaryVariable - if isinstance(kernel_data, str): kernel_data = kernel_data.split(",") kernel_args = [] - temporary_variables = kwargs.pop("temporary_variables", {}).copy() + temporary_variables = dict(temporary_variables) for dat in kernel_data: if dat is Ellipsis or isinstance(dat, str): kernel_args.append(dat) continue - if isinstance(dat, ArrayBase) and isinstance(dat.shape, tuple): # pylint: disable=no-member - new_shape = [] - for shape_axis in dat.shape: # pylint:disable=no-member - if shape_axis is not None: - new_shape.append(expand_defines_in_expr(shape_axis, defines)) - else: - new_shape.append(shape_axis) - dat = dat.copy(shape=tuple(new_shape)) # pylint:disable=no-member - for arg_name in dat.name.split(","): arg_name = arg_name.strip() if not arg_name: @@ -2443,8 +2336,7 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): # }}} - instructions, inames_to_dup, substitutions = \ - parse_instructions(instructions, defines) + instructions, inames_to_dup, inline_substitutions = parse_instructions(instructions) # {{{ find/create isl_context @@ -2460,7 +2352,7 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): temporary_variables[tv.name] = tv del cse_temp_vars - domains = parse_domains(domains, defines) + domains = parse_domains(domains) # {{{ process assumptions @@ -2492,6 +2384,14 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): inames = {name: Iname(name, frozenset()) for name in _get_inames_from_domains(domains)} + substitutions = constantdict(substitutions) + for sname, rule in inline_substitutions.items(): + if sname in substitutions: + raise LoopyError(f"substitution rule '{sname}' declared both in-line " + "and via substitutions argument") + + substitutions = substitutions.set(sname, rule) + arg_guesser = ArgumentGuesser(domains, instructions, temporary_variables, substitutions, default_offset) @@ -2499,50 +2399,38 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): kernel_args = arg_guesser.convert_names_to_full_args(kernel_args) kernel_args = arg_guesser.guess_kernel_args_if_requested(kernel_args) - for name, rule in kwargs.pop("substitutions", {}).items(): - if name in substitutions: - raise LoopyError(f"substitution rule '{name}' declared both in-line " - "and via substitutions argument") - - substitutions[name] = rule - - kwargs["substitutions"] = substitutions - from pytools.tag import check_tag_uniqueness, normalize_tags - tags = check_tag_uniqueness(normalize_tags(kwargs.pop("tags", frozenset()))) - - index_dtype = kwargs.pop("index_dtype", None) - if index_dtype is None: - index_dtype = np.int32 + tags = check_tag_uniqueness(normalize_tags(tags)) from loopy.types import to_loopy_type - index_dtype = to_loopy_type(index_dtype) + norm_index_dtype = to_loopy_type( + np.int32 if index_dtype is None else index_dtype) + assert isinstance(norm_index_dtype, NumpyType) - preambles = kwargs.pop("preambles", None) - if preambles is None: - preambles = () - elif not isinstance(preambles, tuple): + if not isinstance(preambles, tuple): preambles = tuple(preambles) - preamble_generators = kwargs.pop("preamble_generators", None) - if preamble_generators is None: - preamble_generators = () - elif not isinstance(preamble_generators, tuple): + if not isinstance(preamble_generators, tuple): preamble_generators = tuple(preamble_generators) from loopy.kernel import LoopKernel knl = LoopKernel(domains, instructions, kernel_args, temporary_variables=temporary_variables, + substitutions=substitutions, silenced_warnings=frozenset(silenced_warnings), options=options, target=target, tags=tags, inames=inames, assumptions=assumptions, - index_dtype=index_dtype, + index_dtype=norm_index_dtype, preambles=preambles, preamble_generators=preamble_generators, - **kwargs) + symbol_manglers=symbol_manglers, + name=name, + iname_slab_increments=constantdict(iname_slab_increments), + applied_iname_rewrites=applied_iname_rewrites, + ) from loopy.transform.instruction import uniquify_instruction_ids knl = uniquify_instruction_ids(knl) @@ -2602,7 +2490,6 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): # ------------------------------------------------------------------------- knl = determine_shapes_of_temporaries(knl) - knl = expand_defines_in_shapes(knl, defines) knl = guess_arg_shape_if_requested(knl, default_order) knl = apply_default_order_to_args(knl, default_order) knl = resolve_dependencies(knl) @@ -2632,10 +2519,64 @@ def make_function(domains, instructions, kernel_data=None, **kwargs): # {{{ make_kernel -def make_kernel(*args: Any, **kwargs: Any) -> TranslationUnit: - tunit = make_function(*args, **kwargs) - name, = tunit.callables_table - return tunit.with_entrypoints(name) +def make_kernel( + domains: str | Sequence[str | isl.BasicSet], + instructions: Sequence[ + InstructionBase | SubstitutionRule | str + ] | str, + kernel_data: Sequence[ + ValueArg | ArrayArg | TemporaryVariable | EllipsisType | str + ] = (...,), + *, + temporary_variables: Mapping[str, TemporaryVariable] | None = None, + substitutions: Mapping[str, SubstitutionRule] | None = None, + preambles: Sequence[tuple[str, str]] = (), + preamble_generators: Sequence[PreambleGenerator] = (), + default_order: Literal["C"] | Literal["F"] | type[auto] = "C", + default_offset: Literal[0] | type[auto] | None = None, + symbol_manglers: Sequence[SymbolMangler] = (), + assumptions: isl.BasicSet | str = "", + silenced_warnings: str | Sequence[str] = (), + options: str | Options = "", + target: TargetBase | None = None, + seq_dependencies: bool = False, + fixed_parameters: Mapping[str, int | float] | None = None, + lang_version: tuple[str | int, ...] | None = None, + name: str | None = None, + tags: ToTagSetConvertible = None, + index_dtype: DTypeLike | None = None, + loop_priority: frozenset[tuple[InameStr, ...]] | None = None, + iname_slab_increments: Mapping[InameStr, tuple[int, int]] | None = None, + applied_iname_rewrites: Sequence[Mapping[InameStr, Expression]] = (), + ) -> TranslationUnit: + tunit = make_function( + domains, + instructions, + kernel_data, + + temporary_variables=temporary_variables, + substitutions=substitutions, + preambles=preambles, + preamble_generators=preamble_generators, + default_order=default_order, + default_offset=default_offset, + symbol_manglers=symbol_manglers, + assumptions=assumptions, + silenced_warnings=silenced_warnings, + options=options, + target=target, + seq_dependencies=seq_dependencies, + fixed_parameters=fixed_parameters, + lang_version=lang_version, + name=name, + tags=tags, + index_dtype=index_dtype, + loop_priority=loop_priority, + iname_slab_increments=iname_slab_increments, + applied_iname_rewrites=applied_iname_rewrites, + ) + cname, = tunit.callables_table + return tunit.with_entrypoints(cast("str", cname)) make_kernel.__doc__ = make_function.__doc__ diff --git a/loopy/types.py b/loopy/types.py index a9ae2a912..a23a72bea 100644 --- a/loopy/types.py +++ b/loopy/types.py @@ -243,13 +243,12 @@ def __eq__(self, other: object) -> bool: # }}} -ToLoopyTypeConvertible: TypeAlias = ( +ToLoopyTypeConvertible: TypeAlias = """( type[auto] - | type[np.generic] - | np.dtype[Any] + | DTypeLike | LoopyType | str - | None) + | None)""" def to_loopy_type(dtype: ToLoopyTypeConvertible, diff --git a/loopy/typing.py b/loopy/typing.py index 53f756640..88ec7692e 100644 --- a/loopy/typing.py +++ b/loopy/typing.py @@ -4,6 +4,20 @@ .. autodata:: InameStr .. autodata:: InameStrSet +.. autodata:: SymbolMangler + :noindex: + +.. class:: SymbolMangler + + See above. + +.. autodata:: PreambleGenerator + :noindex: + +.. class:: PreambleGenerator + + See above. + .. currentmodule:: loopy .. autoclass:: auto @@ -46,7 +60,11 @@ if TYPE_CHECKING: - from collections.abc import Iterable + from collections.abc import Callable, Iterable, Iterator + + from loopy.codegen import PreambleInfo + from loopy.kernel import LoopKernel + from loopy.types import LoopyType # The Fortran parser may insert dimensions of 'None', but I'd like to phase @@ -59,6 +77,13 @@ InsnId: TypeAlias = str +PreambleGenerator: TypeAlias = """Callable[ + [PreambleInfo], + Iterator[tuple[str, str]]]""" + +SymbolMangler: TypeAlias = "Callable[[LoopKernel, str], tuple[LoopyType, str] | None]" + + class auto: # noqa """A generic placeholder object for something that should be automatically diff --git a/test/test_callables.py b/test/test_callables.py index ca0ef201e..8c043693a 100644 --- a/test/test_callables.py +++ b/test/test_callables.py @@ -1206,7 +1206,9 @@ def test_inlining_does_not_require_barrier(inline: bool): name="y", dtype=None, shape=lp.auto), ], - iname_slab_increments={"j_outer": (0, 0)}) + ) + loopy_kernel_knl = loopy_kernel_knl.with_kernel( + loopy_kernel_knl.default_entrypoint.copy(iname_slab_increments={"j_outer": (0, 0)})) # }}} diff --git a/test/test_loopy.py b/test/test_loopy.py index 788bce95a..2f66bf377 100644 --- a/test/test_loopy.py +++ b/test/test_loopy.py @@ -3457,13 +3457,6 @@ def test_creation_kwargs(): substitutions={"foo": lp.SubstitutionRule("foo", (), 3.14)}, ) - with pytest.raises(TypeError): - knl = lp.make_kernel( - "{[i]: 0<=i<10}", - "a[i] = foo() * i", - # not a known kwarg - ksdfjlasdf=None) - def test_global_temps_with_multiple_base_storages(ctx_factory: cl.CtxFactory): # See https://github.com/inducer/loopy/issues/737 From 6ac4e59bb21f00657e1dc12bd347302b0ce3659f Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 12:04:28 -0500 Subject: [PATCH 3/7] Sharpen types of to_loopy_type based on allow_ parameters --- loopy/types.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/loopy/types.py b/loopy/types.py index a23a72bea..7ce73b6d7 100644 --- a/loopy/types.py +++ b/loopy/types.py @@ -24,7 +24,7 @@ """ from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, Any, TypeAlias +from typing import TYPE_CHECKING, Any, Literal, TypeAlias, overload import numpy as np from typing_extensions import override @@ -251,10 +251,31 @@ def __eq__(self, other: object) -> bool: | None)""" +@overload def to_loopy_type(dtype: ToLoopyTypeConvertible, - allow_auto: bool = False, allow_none: bool = False, - for_atomic: bool = False - ) -> type[auto] | LoopyType | None: + *, allow_auto: bool = False, + allow_none: Literal[False] = False, + for_atomic: Literal[False] = False, + ) -> LoopyType: ... + +@overload +def to_loopy_type(dtype: ToLoopyTypeConvertible, + *, allow_auto: bool = False, + allow_none: bool = False, + for_atomic: Literal[False] = False, + ) -> LoopyType | None: ... + +@overload +def to_loopy_type(dtype: ToLoopyTypeConvertible, + *, allow_auto: Literal[True], allow_none: bool = False, + for_atomic: bool = False + ) -> type[auto] | LoopyType | None: ... + + +def to_loopy_type(dtype: ToLoopyTypeConvertible, + allow_auto: bool = False, allow_none: bool = False, + for_atomic: bool = False + ) -> type[auto] | LoopyType | None: if dtype is None: if allow_none: return None From 4c4c334482fddcdf3a82d977507b58febe0ea01f Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 12:04:47 -0500 Subject: [PATCH 4/7] Type argument to Optional is covariant --- loopy/tools.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/loopy/tools.py b/loopy/tools.py index ab9371b6f..463fc2cbb 100644 --- a/loopy/tools.py +++ b/loopy/tools.py @@ -55,6 +55,13 @@ logger = logging.getLogger(__name__) +K = TypeVar("K") +V = TypeVar("V") + + +T_co = TypeVar("T_co", covariant=True) + + def update_persistent_hash(obj, key_hash, key_builder): """ Custom hash computation function for use with @@ -381,10 +388,6 @@ def __getstate__(self): # {{{ lazily unpickling dictionary -K = TypeVar("K") -V = TypeVar("V") - - class LazilyUnpicklingDict(abc.MutableMapping[K, V]): """A dictionary-like object which lazily unpickles its values. """ @@ -548,7 +551,7 @@ class _no_value: # noqa pass -class Optional(Generic[V]): +class Optional(Generic[T_co]): """A wrapper for an optionally present object. .. attribute:: has_value @@ -561,14 +564,14 @@ class Optional(Generic[V]): """ has_value: bool - _value: V + _value: T_co __slots__: ClassVar[tuple[str, ...]] = ("_value", "has_value") - def __init__(self, value: V | type[_no_value] = _no_value): + def __init__(self, value: T_co | type[_no_value] = _no_value): self.has_value = value is not _no_value if self.has_value: - self._value = cast("V", value) + self._value = cast("T_co", value) @override def __str__(self) -> str: From 042d6aa8de7b63f45122bc91b1981e2da6d0d5fd Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 12:10:38 -0500 Subject: [PATCH 5/7] Try to make sense of the temp_var_types madness --- loopy/kernel/instruction.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/loopy/kernel/instruction.py b/loopy/kernel/instruction.py index f537b246c..14d9ddaff 100644 --- a/loopy/kernel/instruction.py +++ b/loopy/kernel/instruction.py @@ -52,7 +52,7 @@ from loopy.diagnostic import LoopyError from loopy.symbolic import LinearSubscript, SubArrayRef from loopy.tools import Optional as LoopyOptional -from loopy.types import LoopyType +from loopy.types import LoopyType, ToLoopyTypeConvertible, to_loopy_type if TYPE_CHECKING: @@ -962,7 +962,8 @@ def __init__(self, predicates: frozenset[str] | None = None, tags: frozenset[Tag] | None = None, temp_var_type: - type[_not_provided] | LoopyOptional[LoopyType] | LoopyType | None + type[_not_provided] + | LoopyOptional[ToLoopyTypeConvertible | None] = _not_provided, atomicity: tuple[VarAtomicity, ...] = (), *, @@ -1337,14 +1338,16 @@ def modify_assignee_for_array_call( def make_assignment(assignees: tuple[Assignable, ...], expression: Expression, temp_var_types: ( - Sequence[LoopyType | None] | None) = None, + Sequence[ToLoopyTypeConvertible | None] | None) = None, **kwargs: Any) -> Assignment | CallInstruction: - if temp_var_types is not None: - tv_types: Sequence[ - LoopyType | LoopyOptional[LoopyType | None] | None] = temp_var_types - else: + tv_types: Sequence[LoopyOptional[ToLoopyTypeConvertible] | None] + if temp_var_types is None: tv_types = (LoopyOptional(),) * len(assignees) + else: + tv_types = [ + t if isinstance(t, LoopyOptional) else LoopyOptional(t) + for t in temp_var_types] if len(assignees) != 1 or is_array_call(assignees, expression): atomicity = kwargs.pop("atomicity", ()) @@ -1364,7 +1367,7 @@ def make_assignment(assignees: tuple[Assignable, ...], return CallInstruction( assignees=assignees, expression=expression, - temp_var_types=temp_var_types, + temp_var_types=tv_types, **kwargs) else: # In the case of an array call, it is important to have each @@ -1750,7 +1753,11 @@ def _get_insn_hash_key(insn): # {{{ _check_and_fix_temp_var_type def _check_and_fix_temp_var_type( - temp_var_type: Any, # pyright: ignore[reportAny] + temp_var_type: + type[_not_provided] + | ToLoopyTypeConvertible + | LoopyOptional[None] + | LoopyOptional[ToLoopyTypeConvertible], stacklevel: int = 2 ) -> LoopyOptional[LoopyType | None]: """Check temp_var_type for deprecated usage, and convert to the right value. @@ -1758,6 +1765,8 @@ def _check_and_fix_temp_var_type( import loopy as lp + assert temp_var_type is not _not_provided + if temp_var_type is None: warn("temp_var_type should be Optional() if no temporary, not None. " "This usage will be disallowed soon.", @@ -1774,9 +1783,12 @@ def _check_and_fix_temp_var_type( warn("temp_var_type should be an instance of Optional. " "Other values for temp_var_type will be disallowed soon.", DeprecationWarning, stacklevel=1 + stacklevel) - return lp.Optional(temp_var_type) # pyright: ignore[reportAny] + return lp.Optional(to_loopy_type(temp_var_type)) - return temp_var_type + if not temp_var_type.has_value: + return LoopyOptional() + else: + return LoopyOptional(to_loopy_type(temp_var_type.value, allow_none=True)) # }}} From 0ade1f5dcb596031c8ca0a9bd3ea58b1bd606583 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 13:17:53 -0500 Subject: [PATCH 6/7] Fix an import --- loopy/target/c/c_execution.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/loopy/target/c/c_execution.py b/loopy/target/c/c_execution.py index ca00c35ef..935f5816e 100644 --- a/loopy/target/c/c_execution.py +++ b/loopy/target/c/c_execution.py @@ -52,12 +52,13 @@ from constantdict import constantdict + from pymbolic import Expression + from loopy.codegen.result import GeneratedProgram from loopy.kernel import LoopKernel from loopy.kernel.data import ArrayArg from loopy.schedule.tools import KernelArgInfo from loopy.translation_unit import TranslationUnit - from loopy.typing import Expression logger = logging.getLogger(__name__) From 0c5bd6f7756cbddf221d079d1384325d30684df6 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 Jun 2025 13:21:50 -0500 Subject: [PATCH 7/7] Update baseline --- .basedpyright/baseline.json | 1762 +++++++---------------------------- 1 file changed, 325 insertions(+), 1437 deletions(-) diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index a23f973dd..4e056eefd 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -2725,6 +2725,22 @@ "lineCount": 1 } }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 20, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 21, + "endColumn": 44, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -3606,18 +3622,170 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 29, + "startColumn": 25, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 29, + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 44, "lineCount": 1 } }, @@ -7587,14 +7755,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 4, - "endColumn": 25, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -24797,38 +24957,6 @@ } ], "./loopy/kernel/creation.py": [ - { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 4, - "endColumn": 14, - "lineCount": 1 - } - }, - { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 4, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 4, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 4, - "endColumn": 8, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -24869,6 +24997,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 12, + "endColumn": 19, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -24921,175 +25057,47 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 4, - "endColumn": 18, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 19, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 19, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 25, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 25, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 34, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 42, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 44, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 4, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 27, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 27, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 33, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 33, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 19, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 19, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportUntypedNamedTuple", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 21, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 41, + "startColumn": 54, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 43, - "endColumn": 47, + "startColumn": 35, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 4, - "endColumn": 33, + "startColumn": 35, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUntypedNamedTuple", + "code": "reportAny", "range": { - "startColumn": 21, - "endColumn": 68, + "startColumn": 37, + "endColumn": 65, "lineCount": 1 } }, @@ -25149,6 +25157,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 37, + "endColumn": 65, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -25549,6 +25565,30 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 4, + "endColumn": 11, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 4, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 18, + "endColumn": 30, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -25694,82 +25734,66 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 40, - "endColumn": 57, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 75, + "startColumn": 4, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 30, - "endColumn": 31, + "startColumn": 4, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 30, - "endColumn": 31, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 32, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 22, + "startColumn": 12, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 35, + "startColumn": 30, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 37, - "endColumn": 44, + "startColumn": 30, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, - "endColumn": 44, + "startColumn": 31, + "endColumn": 32, "lineCount": 1 } }, @@ -25845,14 +25869,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 31, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -25925,38 +25941,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 43, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 49, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 39, - "lineCount": 1 - } - }, { "code": "reportOperatorIssue", "range": { @@ -26301,6 +26285,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 18, + "endColumn": 36, + "lineCount": 1 + } + }, { "code": "reportUnknownMemberType", "range": { @@ -26317,6 +26309,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 33, + "endColumn": 51, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -26333,6 +26333,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 18, + "endColumn": 36, + "lineCount": 1 + } + }, { "code": "reportUnknownMemberType", "range": { @@ -26349,6 +26357,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 33, + "endColumn": 51, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -26357,6 +26373,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 18, + "endColumn": 36, + "lineCount": 1 + } + }, { "code": "reportUnknownMemberType", "range": { @@ -26373,6 +26397,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 33, + "endColumn": 51, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -26477,30 +26509,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 27, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 27, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 39, - "endColumn": 46, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -29261,150 +29269,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 4, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 29, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 29, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 37, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 37, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 16, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 17, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 17, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 38, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 44, - "endColumn": 51, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 32, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 28, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 39, - "endColumn": 51, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 22, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -31429,190 +31293,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 4, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 18, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 18, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 27, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 27, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 41, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 41, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 61, - "endColumn": 67, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 61, - "endColumn": 67, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 32, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 46, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 23, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 23, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 18, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportOptionalMemberAccess", "range": { @@ -31670,26 +31350,10 @@ } }, { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 34, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 26, - "endColumn": 68, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, @@ -31701,54 +31365,6 @@ "lineCount": 1 } }, - { - "code": "reportUnnecessaryComparison", - "range": { - "startColumn": 19, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 72, - "endColumn": 79, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 18, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 39, - "endColumn": 48, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -31813,22 +31429,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 45, - "endColumn": 52, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -31837,22 +31437,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 37, - "endColumn": 44, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -31861,30 +31445,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 33, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 26, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -31901,86 +31461,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 47, - "endColumn": 57, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 47, - "endColumn": 78, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 18, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 32, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 26, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 36, - "endColumn": 55, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -31997,118 +31477,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 32, - "endColumn": 51, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 24, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 22, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 32, - "endColumn": 51, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 20, - "lineCount": 1 - } - }, { "code": "reportArgumentType", "range": { @@ -32125,14 +31493,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 34, - "endColumn": 47, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -32157,22 +31517,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 35, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 40, - "endColumn": 47, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -32181,14 +31525,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 44, - "endColumn": 57, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -32197,14 +31533,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 43, - "endColumn": 56, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -32268,22 +31596,6 @@ "endColumn": 27, "lineCount": 1 } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 33, - "lineCount": 1 - } } ], "./loopy/kernel/data.py": [ @@ -37203,6 +36515,14 @@ "lineCount": 1 } }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 49, + "endColumn": 52, + "lineCount": 1 + } + }, { "code": "reportImplicitOverride", "range": { @@ -74285,14 +73605,6 @@ } ], "./loopy/target/c/c_execution.py": [ - { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 29, - "endColumn": 39, - "lineCount": 1 - } - }, { "code": "reportIncompatibleMethodOverride", "range": { @@ -77375,14 +76687,6 @@ "lineCount": 1 } }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 25, - "endColumn": 48, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -131763,22 +131067,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -131795,14 +131083,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -131851,14 +131131,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 17, - "endColumn": 33, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -131947,30 +131219,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132035,14 +131283,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 36, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132139,22 +131379,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132243,14 +131467,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132271,22 +131487,6 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, "endColumn": 28, "lineCount": 1 } @@ -132307,14 +131507,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132347,14 +131539,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132387,14 +131571,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132403,14 +131579,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132427,54 +131595,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 18, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 28, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 27, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132502,16 +131622,24 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 37, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 30, + "startColumn": 11, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 28, + "endColumn": 35, "lineCount": 1 } }, @@ -132526,16 +131654,16 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 36, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 28, + "startColumn": 11, + "endColumn": 36, "lineCount": 1 } }, @@ -132571,14 +131699,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 31, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132587,14 +131707,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132659,14 +131771,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 31, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132691,14 +131795,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132731,14 +131827,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132763,14 +131851,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132795,14 +131875,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132835,14 +131907,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132859,14 +131923,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132883,14 +131939,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132899,14 +131947,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 30, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132923,14 +131963,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132947,14 +131979,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -132987,14 +132011,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -133011,14 +132027,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 10, - "endColumn": 26, - "lineCount": 1 - } - }, { "code": "reportArgumentType", "range": { @@ -133051,14 +132059,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -133071,34 +132071,10 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, "endColumn": 28, "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -133115,14 +132091,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 32, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -138225,14 +137193,6 @@ "lineCount": 1 } }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 37, - "endColumn": 40, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -138561,14 +137521,6 @@ "lineCount": 1 } }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 32, - "endColumn": 37, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -138641,14 +137593,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -138769,14 +137713,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 31, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -140475,14 +139411,6 @@ "lineCount": 1 } }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 35, - "endColumn": 38, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -140499,14 +139427,6 @@ "lineCount": 1 } }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 35, - "endColumn": 38, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -142681,14 +141601,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -142729,14 +141641,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -142777,14 +141681,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -145109,14 +144005,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": {