From da87addf8612e4c590b4a6c80c2282f0b0acdcd2 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Mon, 20 Jun 2022 21:11:03 +0300 Subject: [PATCH 01/34] deprecate DeviceDataRecord --- boxtree/tools.py | 89 +++++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/boxtree/tools.py b/boxtree/tools.py index 36245517..32e54554 100644 --- a/boxtree/tools.py +++ b/boxtree/tools.py @@ -32,10 +32,8 @@ import pyopencl as cl import pyopencl.array as cl_array -import pyopencl.cltypes as cltypes -import pytools.obj_array as obj_array from pyopencl.tools import ScalarArg, VectorArg as _VectorArg, dtype_to_c_struct -from pytools import Record, memoize_method +from pytools import Record, memoize_method, obj_array # Use offsets in VectorArg by default. @@ -78,7 +76,7 @@ def realloc_array( def reverse_index_array(indices, target_size=None, result_fill_value=None, queue=None): """For an array of *indices*, return a new array *result* that satisfies - ``result[indices] == arange(len(indices)) + ``result[indices] == arange(len(indices))`` :arg target_n: The length of the result, or *None* if the result is to have the same length as *indices*. @@ -290,15 +288,14 @@ def particle_array_to_host(parray): # {{{ host/device data storage class DeviceDataRecord(Record): - """A record of array-type data. Some of this data may live in - :class:`pyopencl.array.Array` objects. :meth:`get` can then be - called to convert all these device arrays into :mod:`numpy.ndarray` - instances on the host. + """A record of array-type data. + + Some of this data may live in :class:`pyopencl.array.Array` objects. + :meth:`get` can then be called to convert all these device arrays into + :mod:`numpy.ndarray` instances on the host. """ def _transform_arrays(self, f, exclude_fields=frozenset()): - result = {} - def transform_val(val): from pyopencl.algorithm import BuiltList if isinstance(val, np.ndarray) and val.dtype == object: @@ -314,7 +311,17 @@ def transform_val(val): else: return f(val) - for field_name in self.__class__.fields: + from dataclasses import fields, is_dataclass + + if is_dataclass(self): + fields = [f.name for f in fields(self)] + elif isinstance(self, Record): + fields = self.__class__.fields + else: + raise TypeError(f"unknown record type: '{type(self).__name__}'") + + result = {} + for field_name in fields: if field_name in exclude_fields: continue @@ -328,50 +335,61 @@ def transform_val(val): return self.copy(**result) def get(self, queue, **kwargs): - """Return a copy of `self` in which all data lives on the host, i.e. - all :class:`pyopencl.array.Array` and `ImmutableHostDeviceArray` objects are - replaced by corresponding :class:`numpy.ndarray` instances on the host. """ + :returns: a copy of *self* in which all data lives on the host, i.e. + all :class:`pyopencl.array.Array` and `ImmutableHostDeviceArray` + objects are replaced by corresponding :class:`numpy.ndarray` + instances on the host. + """ + from warnings import warn + warn(f"{type(self).__name__}.get is deprecated and will be removed " + "in 2025. Switch to using arraycontext.to_numpy instead.", + DeprecationWarning, stacklevel=2) + def try_get(attr): if isinstance(attr, ImmutableHostDeviceArray): return attr.host try: - get_meth = attr.get + return attr.get(queue=queue, **kwargs) except AttributeError: return attr - return get_meth(queue=queue, **kwargs) - return self._transform_arrays(try_get) def with_queue(self, queue): - """Return a copy of `self` in - all :class:`pyopencl.array.Array` objects are assigned to - :class:`pyopencl.CommandQueue` *queue*. """ + :returns: a copy of *self* in all :class:`pyopencl.array.Array` objects + are assigned to the :class:`pyopencl.CommandQueue` *queue*. + """ + from warnings import warn + warn(f"{type(self).__name__}.with_queue is deprecated and will be removed " + "in 2025. Switch to using arraycontext.with_array_context instead.", + DeprecationWarning, stacklevel=2) def try_with_queue(attr): if isinstance(attr, cl_array.Array): attr.finish() try: - wq_meth = attr.with_queue + return attr.with_queue(queue) except AttributeError: return attr - ary = wq_meth(queue) - return ary - return self._transform_arrays(try_with_queue) def to_device(self, queue, exclude_fields=frozenset()): - """Return a copy of `self` in all :class:`numpy.ndarray` arrays are - transferred to device memory as :class:`pyopencl.array.Array` objects. + """ + :arg exclude_fields: a :class:`frozenset` containing fields excluded + from transferring to the device memory. - :arg exclude_fields: a :class:`frozenset` containing fields excluding from - transferring to the device memory. + :returns: a copy of *self* in all :class:`numpy.ndarray` arrays are + transferred to device memory as :class:`pyopencl.array.Array` objects. """ + from warnings import warn + warn(f"{type(self).__name__}.to_device is deprecated and will be removed " + "in 2025. Switch to using arraycontext.from_numpy instead.", + DeprecationWarning, stacklevel=2) def _to_device(attr): if isinstance(attr, np.ndarray): @@ -386,12 +404,18 @@ def _to_device(attr): return self._transform_arrays(_to_device, exclude_fields=exclude_fields) def to_host_device_array(self, queue, exclude_fields=frozenset()): - """Return a copy of `self` where all device and host arrays are transformed - to `ImmutableHostDeviceArray` objects. + """ + :arg exclude_fields: a :class:`frozenset` containing fields excluded + from transformed to `ImmutableHostDeviceArray`. - :arg exclude_fields: a :class:`frozenset` containing fields excluding from - transformed to `ImmutableHostDeviceArray`. + :returns: a copy of *self* where all device and host arrays are + transformed to `ImmutableHostDeviceArray` objects. """ + from warnings import warn + warn(f"{type(self).__name__}.to_host_device_array is deprecated and will " + "be removed in 2025. Switch from ImmutableHostDeviceArray.", + DeprecationWarning, stacklevel=2) + def _to_host_device_array(attr): if isinstance(attr, np.ndarray | cl_array.Array): return ImmutableHostDeviceArray(queue, attr) @@ -940,6 +964,7 @@ def device(self): def get_coord_vec_dtype( coord_dtype: np.dtype, dimensions: int) -> np.dtype: + import pyopencl.cltypes as cltypes if dimensions == 1: return coord_dtype else: From 66e5f3527a1d8813e96459f7487901842f5b204f Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Mon, 20 Jun 2022 21:42:34 +0300 Subject: [PATCH 02/34] port translation_classes to arraycontext --- boxtree/translation_classes.py | 109 ++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 48 deletions(-) diff --git a/boxtree/translation_classes.py b/boxtree/translation_classes.py index fcc517f1..583194a5 100644 --- a/boxtree/translation_classes.py +++ b/boxtree/translation_classes.py @@ -35,25 +35,28 @@ """ import logging +from dataclasses import dataclass from functools import partial +from typing import TYPE_CHECKING import numpy as np from mako.template import Template -import pyopencl as cl -import pyopencl.array as cl_array -from pyopencl.elementwise import ElementwiseTemplate -from pytools import Record, memoize_method +from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate +from pytools import memoize_method +from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container from boxtree.tools import ( - DeviceDataRecord, InlineBinarySearch, coord_vec_subscript_code, get_coord_vec_dtype, ) -from boxtree.traversal import TRAVERSAL_PREAMBLE_MAKO_DEFS +from boxtree.traversal import TRAVERSAL_PREAMBLE_MAKO_DEFS, FMMTraversalInfo +if TYPE_CHECKING: + from arraycontext import Array + logger = logging.getLogger(__name__) from pytools import log_process @@ -185,11 +188,14 @@ """) -class _KernelInfo(Record): - pass +@dataclass(frozen=True) +class _KernelInfo: + translation_class_finder: ElementwiseKernel -class TranslationClassesInfo(DeviceDataRecord): +@dataclass_array_container +@dataclass(frozen=True) +class TranslationClassesInfo: r"""Interaction lists to help with for translations that benefit from precomputing distance related values @@ -226,13 +232,10 @@ class id for that level. Translation classes are numbered contiguously traversal that these translation classes refer to. """ - def __init__(self, traversal, **kwargs): - super().__init__(**kwargs) - self.traversal = traversal - - def copy(self, **kwargs): - traversal = kwargs.pop("traversal", self.traversal) - return self.__class__(traversal=traversal, **self.get_copy_kwargs(**kwargs)) + traversal: FMMTraversalInfo + from_sep_siblings_translation_classes: Array + from_sep_siblings_translation_class_to_distance_vector: Array + from_sep_siblings_translation_classes_level_starts: Array @property def nfrom_sep_siblings_translation_classes(self): @@ -246,12 +249,21 @@ class TranslationClassesBuilder: .. automethod:: __call__ """ - def __init__(self, context: cl.Context): - self.context: cl.Context = context + def __init__(self, array_context: PyOpenCLArrayContext) -> None: + self._setup_actx = array_context + + @property + def context(self): + return self._setup_actx.queue.context @memoize_method - def get_kernel_info(self, dimensions, well_sep_is_n_away, - box_id_dtype, box_level_dtype, coord_dtype, translation_class_per_level): + def get_kernel_info(self, + dimensions: int, + well_sep_is_n_away: int, + box_id_dtype: np.dtype, + box_level_dtype: np.dtype, + coord_dtype: np.dtype, + translation_class_per_level) -> None: coord_vec_dtype = get_coord_vec_dtype(coord_dtype, dimensions) int_coord_vec_dtype = get_coord_vec_dtype(np.dtype(np.int32), dimensions) @@ -288,11 +300,13 @@ def get_kernel_info(self, dimensions, well_sep_is_n_away, return _KernelInfo(translation_class_finder=translation_class_finder) @staticmethod - def ntranslation_classes_per_level(well_sep_is_n_away, dimensions): + def ntranslation_classes_per_level( + well_sep_is_n_away: int, dimensions: int) -> int: return (4 * well_sep_is_n_away + 3) ** dimensions - def translation_class_to_normalized_vector(self, well_sep_is_n_away, - dimensions, cls): + def translation_class_to_normalized_vector( + self, well_sep_is_n_away: int, dimensions: int, cls: type + ) -> np.ndarray: # This computes the vector for the translation class, using the inverse # of the formula found in get_translation_class() defined in # TRANSLATION_CLASS_FINDER_PREAMBLE_TEMPLATE. @@ -304,13 +318,15 @@ def translation_class_to_normalized_vector(self, well_sep_is_n_away, for i in range(dimensions): result[i] = cls % base - shift cls //= base + return result - def compute_translation_classes(self, queue, trav, tree, wait_for, + def compute_translation_classes(self, + actx: PyOpenCLArrayContext, trav, tree, wait_for, is_translation_per_level): """ - Returns a tuple *evt*, *translation_class_is_used* and - *translation_classes_lists*. + :returns: a :class:`tuple` containing *evt*, *translation_class_is_used* + and *translation_classes_lists*. """ # {{{ compute translation classes for list 2 @@ -329,14 +345,11 @@ def compute_translation_classes(self, queue, trav, tree, wait_for, if is_translation_per_level: ntranslation_classes = ntranslation_classes * tree.nlevels - translation_classes_lists = cl_array.empty( - queue, len(trav.from_sep_siblings_lists), dtype=np.int32) - - translation_class_is_used = cl_array.zeros( - queue, ntranslation_classes, dtype=np.int32) - - error_flag = cl_array.zeros(queue, 1, dtype=np.int32) + translation_classes_lists = actx.np.zeros( + len(trav.from_sep_siblings_lists), dtype=np.int32) + translation_class_is_used = actx.np.zeros(ntranslation_classes, dtype=np.int32) + error_flag = actx.np.zeros(1, dtype=np.int32) evt = knl_info.translation_class_finder( trav.from_sep_siblings_lists, trav.from_sep_siblings_starts, @@ -350,9 +363,10 @@ def compute_translation_classes(self, queue, trav, tree, wait_for, translation_classes_lists, translation_class_is_used, error_flag, - queue=queue, wait_for=wait_for) + queue=actx.queue, + wait_for=wait_for) - if (error_flag.get()): + if actx.to_numpy(error_flag)[0]: raise ValueError("could not compute translation classes") return (evt, translation_class_is_used, translation_classes_lists) @@ -360,13 +374,13 @@ def compute_translation_classes(self, queue, trav, tree, wait_for, # }}} @log_process(logger, "build m2l translation classes") - def __call__(self, queue, trav, tree, wait_for=None, - is_translation_per_level=True): + def __call__(self, actx: PyOpenCLArrayContext, + trav, tree, wait_for=None, is_translation_per_level=True): """Returns a pair *info*, *evt* where info is a :class:`TranslationClassesInfo`. """ evt, translation_class_is_used, translation_classes_lists = \ - self.compute_translation_classes(queue, trav, tree, wait_for, + self.compute_translation_classes(actx, trav, tree, wait_for, is_translation_per_level) well_sep_is_n_away = trav.well_sep_is_n_away @@ -386,7 +400,7 @@ def __call__(self, queue, trav, tree, wait_for=None, prev_level = -1 from_sep_siblings_translation_classes_level_starts = \ np.empty(nlevels+1, dtype=np.int32) - for i, used in enumerate(translation_class_is_used.get()): + for i, used in enumerate(actx.to_numpy(translation_class_is_used)): cls_without_level = i % num_translation_classes level = i // num_translation_classes if (prev_level != level): @@ -404,14 +418,13 @@ def __call__(self, queue, trav, tree, wait_for=None, from_sep_siblings_translation_classes_level_starts[nlevels] = count - translation_classes_lists = ( - cl_array.take( - cl_array.to_device(queue, used_translation_classes_map), - translation_classes_lists)) + translation_classes_lists = actx.from_numpy( + used_translation_classes_map + )[translation_classes_lists] - distances = cl_array.to_device(queue, distances) - from_sep_siblings_translation_classes_level_starts = cl_array.to_device( - queue, from_sep_siblings_translation_classes_level_starts) + distances = actx.from_numpy(distances) + from_sep_siblings_translation_classes_level_starts = actx.from_numpy( + from_sep_siblings_translation_classes_level_starts) info = TranslationClassesInfo( traversal=trav, @@ -419,9 +432,9 @@ def __call__(self, queue, trav, tree, wait_for=None, from_sep_siblings_translation_class_to_distance_vector=distances, from_sep_siblings_translation_classes_level_starts=( from_sep_siblings_translation_classes_level_starts), - ).with_queue(None) + ) - return info, evt + return actx.freeze(info), evt # }}} From bfbdd0f5f1ebdb3c827fd1849098ce8d55dd137f Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Mon, 20 Jun 2022 21:42:49 +0300 Subject: [PATCH 03/34] port rotation_classes to arraycontext --- boxtree/rotation_classes.py | 60 ++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/boxtree/rotation_classes.py b/boxtree/rotation_classes.py index e1f427f0..f5790923 100644 --- a/boxtree/rotation_classes.py +++ b/boxtree/rotation_classes.py @@ -35,24 +35,28 @@ """ import logging +from dataclasses import dataclass +from typing import TYPE_CHECKING import numpy as np -import pyopencl as cl -import pyopencl.array as cl_array +from pytools import log_process -from boxtree.tools import DeviceDataRecord +from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container from boxtree.translation_classes import TranslationClassesBuilder -logger = logging.getLogger(__name__) +if TYPE_CHECKING: + from arraycontext import Array -from pytools import log_process +logger = logging.getLogger(__name__) # {{{ rotation classes builder -class RotationClassesInfo(DeviceDataRecord): +@dataclass_array_container +@dataclass(frozen=True) +class RotationClassesInfo: r"""Interaction lists to help with matrix precomputations for rotation-based translations ("point and shoot"). @@ -77,6 +81,9 @@ class RotationClassesInfo(DeviceDataRecord): """ + from_sep_siblings_rotation_classes: Array + from_sep_siblings_rotation_class_to_angle: Array + @property def nfrom_sep_siblings_rotation_classes(self): return len(self.from_sep_siblings_rotation_class_to_angle) @@ -89,25 +96,24 @@ class RotationClassesBuilder: .. automethod:: __call__ """ - def __init__(self, context): - self.context: cl.Context = context - self.tcb: TranslationClassesBuilder = TranslationClassesBuilder(context) + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx: PyOpenCLArrayContext = array_context + self.tcb = TranslationClassesBuilder(array_context) @staticmethod - def vec_gcd(vec): + def vec_gcd(vec) -> int: """Return the GCD of a list of integers.""" - def gcd(a, b): - while b: - a, b = b, a % b - return a + import math + # TODO: math.gcd supports a list of integers from >= 3.9 result = abs(vec[0]) for elem in vec[1:]: - result = gcd(result, abs(elem)) + result = math.gcd(result, abs(elem)) + return result def compute_rotation_classes(self, - well_sep_is_n_away, dimensions, used_translation_classes): + well_sep_is_n_away: int, dimensions: int, used_translation_classes): """Convert translation classes to a list of rotation classes and angles.""" angle_to_rot_class = {} angles = [] @@ -156,11 +162,11 @@ def compute_rotation_classes(self, return translation_class_to_rot_class, angles @log_process(logger, "build m2l rotation classes") - def __call__(self, queue, trav, tree, wait_for=None): + def __call__(self, actx, trav, tree, wait_for=None): """Returns a pair *info*, *evt* where info is a :class:`RotationClassesInfo`. """ evt, translation_class_is_used, translation_classes_lists = \ - self.tcb.compute_translation_classes(queue, trav, tree, wait_for, False) + self.tcb.compute_translation_classes(actx, trav, tree, wait_for, False) d = tree.dimensions n = trav.well_sep_is_n_away @@ -168,7 +174,7 @@ def __call__(self, queue, trav, tree, wait_for=None): # convert translation classes to rotation classes used_translation_classes = ( - np.flatnonzero(translation_class_is_used.get())) + np.flatnonzero(actx.to_numpy(translation_class_is_used))) translation_class_to_rotation_class, rotation_angles = ( self.compute_rotation_classes(n, d, used_translation_classes)) @@ -178,17 +184,17 @@ def __call__(self, queue, trav, tree, wait_for=None): # positions for list 2 boxes. assert len(rotation_angles) <= 2**(d-1) * (2*n+1)**d - rotation_classes_lists = ( - cl_array.take( - cl_array.to_device(queue, translation_class_to_rotation_class), - translation_classes_lists)) + rotation_classes_lists = actx.from_numpy( + translation_class_to_rotation_class + )[translation_classes_lists] + rotation_angles = actx.from_numpy(np.array(rotation_angles)) - rotation_angles = cl_array.to_device(queue, np.array(rotation_angles)) - - return RotationClassesInfo( + info = RotationClassesInfo( from_sep_siblings_rotation_classes=rotation_classes_lists, from_sep_siblings_rotation_class_to_angle=rotation_angles, - ).with_queue(None), evt + ) + + return actx.freeze(info), evt # }}} From 99c5e518e4f77565b386b926de9733a105fb2fca Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Mon, 20 Jun 2022 21:58:11 +0300 Subject: [PATCH 04/34] port area_query to arraycontext --- boxtree/area_query.py | 215 ++++++++++++++++++++++-------------------- 1 file changed, 114 insertions(+), 101 deletions(-) diff --git a/boxtree/area_query.py b/boxtree/area_query.py index 8d932369..84802dbf 100644 --- a/boxtree/area_query.py +++ b/boxtree/area_query.py @@ -27,21 +27,27 @@ import logging +from dataclasses import dataclass from functools import partial +from typing import TYPE_CHECKING import numpy as np from mako.template import Template -import pyopencl.array as cl_array +from pyopencl.elementwise import ElementwiseTemplate from pytools import ProcessLogger, memoize_method +from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container from boxtree.tools import ( - AXIS_NAMES, - DeviceDataRecord, + InlineBinarySearch, coord_vec_subscript_code, get_coord_vec_dtype, ) +from boxtree.tree import Tree # noqa: TC001 + +if TYPE_CHECKING: + from arraycontext import Array logger = logging.getLogger(__name__) @@ -83,7 +89,9 @@ # {{{ output -class PeerListLookup(DeviceDataRecord): +@dataclass_array_container +@dataclass(frozen=True) +class PeerListLookup: """ .. attribute:: tree @@ -97,13 +105,17 @@ class PeerListLookup(DeviceDataRecord): .. attribute:: peer_lists - .. automethod:: get - .. versionadded:: 2016.1 """ + tree: Tree + peer_list_starts: Array + peer_lists: Array -class AreaQueryResult(DeviceDataRecord): + +@dataclass_array_container +@dataclass(frozen=True) +class AreaQueryResult: """ .. attribute:: tree @@ -118,13 +130,17 @@ class AreaQueryResult(DeviceDataRecord): .. attribute:: leaves_near_ball_lists - .. automethod:: get - .. versionadded:: 2016.1 """ + tree: Tree + leaves_near_ball_starts: Array + leaves_near_ball_lists: Array -class LeavesToBallsLookup(DeviceDataRecord): + +@dataclass_array_container +@dataclass(frozen=True) +class LeavesToBallsLookup: """ .. attribute:: tree @@ -141,10 +157,12 @@ class LeavesToBallsLookup(DeviceDataRecord): this list is indexed by the global box index. .. attribute:: balls_near_box_lists - - .. automethod:: get """ + tree: Tree + balls_near_box_starts: Array + balls_near_box_lists: Array + # }}} @@ -455,12 +473,6 @@ class LeavesToBallsLookup(DeviceDataRecord): """ - -from pyopencl.elementwise import ElementwiseTemplate - -from boxtree.tools import InlineBinarySearch - - STARTS_EXPANDER_TEMPLATE = ElementwiseTemplate( arguments=r""" idx_t *dst, @@ -547,6 +559,7 @@ def generate(self, context, from pyopencl.tools import dtype_to_ctype from boxtree import box_flags_enum + from boxtree.tools import AXIS_NAMES from boxtree.traversal import TRAVERSAL_PREAMBLE_TYPEDEFS_AND_DEFINES from boxtree.tree_build import TreeBuilder render_vars = ( @@ -649,9 +662,13 @@ class AreaQueryBuilder: .. automethod:: __init__ .. automethod:: __call__ """ - def __init__(self, context): - self.context = context - self.peer_list_finder = PeerListFinder(self.context) + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx = array_context + self.peer_list_finder = PeerListFinder(array_context) + + @property + def context(self): + return self._setup_actx.queue.context # {{{ Kernel generation @@ -661,12 +678,12 @@ def get_area_query_kernel(self, dimensions, coord_dtype, box_id_dtype, from pyopencl.tools import dtype_to_ctype from boxtree import box_flags_enum - - logger.debug("start building area query kernel") - + from boxtree.tools import AXIS_NAMES from boxtree.traversal import TRAVERSAL_PREAMBLE_TEMPLATE from boxtree.tree_build import TreeBuilder + logger.debug("start building area query kernel") + template = Template( TRAVERSAL_PREAMBLE_TEMPLATE + AREA_QUERY_TEMPLATE, @@ -723,20 +740,14 @@ def get_area_query_kernel(self, dimensions, coord_dtype, box_id_dtype, # }}} - def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, + def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, + ball_centers, ball_radii, peer_lists=None, wait_for=None): """ - :arg queue: a :class:`pyopencl.CommandQueue` - :arg tree: a :class:`boxtree.Tree`. - :arg ball_centers: an object array of coordinate - :class:`pyopencl.array.Array` instances. - Their *dtype* must match *tree*'s - :attr:`boxtree.Tree.coord_dtype`. - :arg ball_radii: a - :class:`pyopencl.array.Array` - of positive numbers. - Its *dtype* must match *tree*'s - :attr:`boxtree.Tree.coord_dtype`. + :arg ball_centers: an object array of coordinates. Their *dtype* must + match *tree*'s :attr:`boxtree.Tree.coord_dtype`. + :arg ball_radii: an array of positive numbers. Its *dtype* must match + *tree*'s :attr:`boxtree.Tree.coord_dtype`. :arg peer_lists: may either be *None* or an instance of :class:`PeerListLookup` associated with `tree`. :arg wait_for: may either be *None* or a list of :class:`pyopencl.Event` @@ -761,7 +772,7 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, max_levels = div_ceil(tree.nlevels, 10) * 10 if peer_lists is None: - peer_lists, evt = self.peer_list_finder(queue, tree, wait_for=wait_for) + peer_lists, evt = self.peer_list_finder(actx, tree, wait_for=wait_for) wait_for = [evt] if len(peer_lists.peer_list_starts) != tree.nboxes + 1: @@ -774,7 +785,7 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, aq_plog = ProcessLogger(logger, "area query") result, evt = area_query_kernel( - queue, len(ball_radii), + actx.queue, len(ball_radii), tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, @@ -786,10 +797,12 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, aq_plog.done() - return AreaQueryResult( + result = AreaQueryResult( tree=tree, leaves_near_ball_starts=result["leaves"].starts, - leaves_near_ball_lists=result["leaves"].lists).with_queue(None), evt + leaves_near_ball_lists=result["leaves"].lists) + + return actx.freeze(result), evt # }}} @@ -804,12 +817,16 @@ class LeavesToBallsLookupBuilder: .. automethod:: __call__ """ - def __init__(self, context): - self.context = context - + def __init__(self, array_context: PyOpenCLArrayContext): from pyopencl.algorithm import KeyValueSorter - self.key_value_sorter = KeyValueSorter(context) - self.area_query_builder = AreaQueryBuilder(context) + + self._setup_actx = array_context + self.key_value_sorter = KeyValueSorter(self.context) + self.area_query_builder = AreaQueryBuilder(array_context) + + @property + def context(self): + return self._setup_actx.queue.context @memoize_method def get_starts_expander_kernel(self, idx_dtype): @@ -824,20 +841,14 @@ def get_starts_expander_kernel(self, idx_dtype): self.context, type_aliases=(("idx_t", idx_dtype),)) - def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, + def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, + ball_centers, ball_radii, peer_lists=None, wait_for=None): """ - :arg queue: a :class:`pyopencl.CommandQueue` - :arg tree: a :class:`boxtree.Tree`. - :arg ball_centers: an object array of coordinate - :class:`pyopencl.array.Array` instances. - Their *dtype* must match *tree*'s - :attr:`boxtree.Tree.coord_dtype`. - :arg ball_radii: a - :class:`pyopencl.array.Array` - of positive numbers. - Its *dtype* must match *tree*'s - :attr:`boxtree.Tree.coord_dtype`. + :arg ball_centers: an object array of coordinates. Their *dtype* must + match *tree*'s :attr:`boxtree.Tree.coord_dtype`. + :arg ball_radii: an array of positive numbers. Its *dtype* must match + *tree*'s :attr:`boxtree.Tree.coord_dtype`. :arg peer_lists: may either be *None* or an instance of :class:`PeerListLookup` associated with `tree`. :arg wait_for: may either be *None* or a list of :class:`pyopencl.Event` @@ -857,7 +868,7 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, ltb_plog = ProcessLogger(logger, "leaves-to-balls lookup: run area query") area_query, evt = self.area_query_builder( - queue, tree, ball_centers, ball_radii, peer_lists, wait_for) + actx, tree, ball_centers, ball_radii, peer_lists, wait_for) wait_for = [evt] logger.debug("leaves-to-balls lookup: expand starts") @@ -874,11 +885,11 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, # 2. Key-value sort the (ball number, box number) pairs by box number. starts_expander_knl = self.get_starts_expander_kernel(tree.box_id_dtype) - expanded_starts = cl_array.empty( - queue, len(area_query.leaves_near_ball_lists), tree.box_id_dtype) + expanded_starts = actx.np.zeros( + len(area_query.leaves_near_ball_lists), tree.box_id_dtype) evt = starts_expander_knl( expanded_starts, - area_query.leaves_near_ball_starts.with_queue(queue), + area_query.leaves_near_ball_starts, nballs_p_1) wait_for = [evt] @@ -886,20 +897,21 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, balls_near_box_starts, balls_near_box_lists, evt \ = self.key_value_sorter( - queue, + actx.queue, # keys - area_query.leaves_near_ball_lists.with_queue(queue), + area_query.leaves_near_ball_lists, # values expanded_starts, nkeys, starts_dtype=tree.box_id_dtype, wait_for=wait_for) - ltb_plog.done() - return LeavesToBallsLookup( + lookup = LeavesToBallsLookup( tree=tree, balls_near_box_starts=balls_near_box_starts, - balls_near_box_lists=balls_near_box_lists).with_queue(None), evt + balls_near_box_lists=balls_near_box_lists) + + return actx.freeze(lookup), evt # }}} @@ -928,9 +940,13 @@ class SpaceInvaderQueryBuilder: .. automethod:: __call__ """ - def __init__(self, context): - self.context = context - self.peer_list_finder = PeerListFinder(self.context) + def __init__(self, array_context: PyOpenCLArrayContext) -> None: + self._setup_actx = array_context + self.peer_list_finder = PeerListFinder(array_context) + + @property + def context(self): + return self._setup_actx.queue.context # {{{ Kernel generation @@ -947,30 +963,23 @@ def get_space_invader_query_kernel(self, dimensions, coord_dtype, # }}} - def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, + def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, + ball_centers, ball_radii, peer_lists=None, wait_for=None): """ - :arg queue: a :class:`pyopencl.CommandQueue` - :arg tree: a :class:`boxtree.Tree`. - :arg ball_centers: an object array of coordinate - :class:`pyopencl.array.Array` instances. - Their *dtype* must match *tree*'s - :attr:`boxtree.Tree.coord_dtype`. - :arg ball_radii: a - :class:`pyopencl.array.Array` - of positive numbers. - Its *dtype* must match *tree*'s - :attr:`boxtree.Tree.coord_dtype`. + :arg ball_centers: an object array of coordinates. Their *dtype* must + match *tree*'s :attr:`boxtree.Tree.coord_dtype`. + :arg ball_radii: an array of positive numbers. Its *dtype* must match + *tree*'s :attr:`boxtree.Tree.coord_dtype`. :arg peer_lists: may either be *None* or an instance of - :class:`PeerListLookup` associated with `tree`. + :class:`PeerListLookup` associated with *tree*. :arg wait_for: may either be *None* or a list of :class:`pyopencl.Event` instances for whose completion this command waits before starting execution. - :returns: a tuple *(sqi, event)*, where *sqi* is an instance of - :class:`pyopencl.array.Array`, and *event* is a :class:`pyopencl.Event` - for dependency management. The *dtype* of *sqi* is - *tree*'s :attr:`boxtree.Tree.coord_dtype` and its shape is - *(tree.nboxes,)* (see :attr:`boxtree.Tree.nboxes`). + :returns: a tuple *(sqi, event)*, where *sqi* is an array and *event* + is a :class:`pyopencl.Event` for dependency management. The *dtype* + of *sqi* is *tree*'s :attr:`boxtree.Tree.coord_dtype` and its shape + is *(tree.nboxes,)* (see :attr:`boxtree.Tree.nboxes`). The entries of *sqi* are indexed by the global box index and are as follows: @@ -991,7 +1000,7 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, max_levels = div_ceil(tree.nlevels, 10) * 10 if peer_lists is None: - peer_lists, evt = self.peer_list_finder(queue, tree, wait_for=wait_for) + peer_lists, evt = self.peer_list_finder(actx, tree, wait_for=wait_for) wait_for = [evt] if len(peer_lists.peer_list_starts) != tree.nboxes + 1: @@ -1003,7 +1012,7 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, si_plog = ProcessLogger(logger, "space invader query") - outer_space_invader_dists = cl_array.zeros(queue, tree.nboxes, np.float32) + outer_space_invader_dists = actx.np.zeros(tree.nboxes, np.float32) if not wait_for: wait_for = [] wait_for = (wait_for @@ -1018,7 +1027,7 @@ def __call__(self, queue, tree, ball_centers, ball_radii, peer_lists=None, outer_space_invader_dists, *tuple(bc for bc in ball_centers)), wait_for=wait_for, - queue=queue, + queue=actx.queue, range=slice(len(ball_radii))) if tree.coord_dtype != np.dtype(np.float32): @@ -1063,8 +1072,12 @@ class PeerListFinder: .. automethod:: __call__ """ - def __init__(self, context): - self.context = context + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx = array_context + + @property + def context(self): + return self._setup_actx.queue.context # {{{ Kernel generation @@ -1074,14 +1087,14 @@ def get_peer_list_finder_kernel(self, dimensions, coord_dtype, from pyopencl.tools import dtype_to_ctype from boxtree import box_flags_enum - - logger.debug("start building peer list finder kernel") - + from boxtree.tools import AXIS_NAMES from boxtree.traversal import ( HELPER_FUNCTION_TEMPLATE, TRAVERSAL_PREAMBLE_TEMPLATE, ) + logger.debug("start building peer list finder kernel") + template = Template( TRAVERSAL_PREAMBLE_TEMPLATE + HELPER_FUNCTION_TEMPLATE @@ -1131,10 +1144,8 @@ def get_peer_list_finder_kernel(self, dimensions, coord_dtype, # }}} - def __call__(self, queue, tree, wait_for=None): + def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, wait_for=None): """ - :arg queue: a :class:`pyopencl.CommandQueue` - :arg tree: a :class:`boxtree.Tree`. :arg wait_for: may either be *None* or a list of :class:`pyopencl.Event` instances for whose completion this command waits before starting execution. @@ -1154,7 +1165,7 @@ def __call__(self, queue, tree, wait_for=None): pl_plog = ProcessLogger(logger, "find peer lists") result, evt = peer_list_finder_kernel( - queue, tree.nboxes, + actx.queue, tree.nboxes, tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, @@ -1162,10 +1173,12 @@ def __call__(self, queue, tree, wait_for=None): pl_plog.done() - return PeerListLookup( + lookup = PeerListLookup( tree=tree, peer_list_starts=result["peers"].starts, - peer_lists=result["peers"].lists).with_queue(None), evt + peer_lists=result["peers"].lists) + + return actx.freeze(lookup), evt # }}} From 76e461a4f077afcdf1463a5aa358b7258b4f5954 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Tue, 21 Jun 2022 20:06:48 +0300 Subject: [PATCH 05/34] port bounding_box to array_context --- boxtree/bounding_box.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/boxtree/bounding_box.py b/boxtree/bounding_box.py index 449037a0..5f495287 100644 --- a/boxtree/bounding_box.py +++ b/boxtree/bounding_box.py @@ -23,16 +23,20 @@ THE SOFTWARE. """ +from typing import TYPE_CHECKING import numpy as np -import pyopencl as cl # noqa from pyopencl.reduction import ReductionTemplate from pytools import memoize, memoize_method from boxtree.tools import get_type_moniker +if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext + + @memoize def make_bounding_box_dtype(device, dimensions, coord_dtype): from boxtree.tools import AXIS_NAMES @@ -124,17 +128,22 @@ def make_bounding_box_dtype(device, dimensions, coord_dtype): class BoundingBoxFinder: - def __init__(self, context): - self.context = context + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx = array_context - for dev in context.devices: + for dev in self.context.devices: if (dev.vendor == "Intel(R) Corporation" and dev.version == "OpenCL 1.2 (Build 56860)"): raise RuntimeError("bounding box finder does not work " "properly with this CL runtime.") + @property + def context(self): + return self._setup_actx.queue.context + @memoize_method def get_kernel(self, dimensions, coord_dtype, have_radii): + # FIXME: Why does this just use `devices[0]`? bbox_dtype, _bbox_cdecl = make_bounding_box_dtype( self.context.devices[0], dimensions, coord_dtype) @@ -155,18 +164,18 @@ def get_kernel(self, dimensions, coord_dtype, have_radii): ) ) - def __call__(self, particles, radii, wait_for=None): + def __call__(self, actx, particles, radii, wait_for=None): dimensions = len(particles) from pytools import single_valued coord_dtype = single_valued(coord.dtype for coord in particles) - radii_tuple = () if radii is None else (radii,) - knl = self.get_kernel(dimensions, coord_dtype, - # have_radii: - radii is not None) - return knl(*(tuple(particles) + radii_tuple), - wait_for=wait_for, return_event=True) + + knl = self.get_kernel(dimensions, coord_dtype, have_radii=radii is not None) + return knl( + *(tuple(particles) + radii_tuple), + queue=actx.queue, + wait_for=wait_for, return_event=True) # }}} From 7ae5a1dfcffbeb42d4113f7558f22576e617f778 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Tue, 21 Jun 2022 20:13:42 +0300 Subject: [PATCH 06/34] port fmm to array_context --- boxtree/fmm.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/boxtree/fmm.py b/boxtree/fmm.py index 65dc70ae..4be5c53e 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -31,9 +31,6 @@ import logging from abc import ABC, abstractmethod - - -logger = logging.getLogger(__name__) from typing import TYPE_CHECKING from pytools import ProcessLogger @@ -43,6 +40,8 @@ from boxtree.traversal import FMMTraversalInfo from boxtree.tree import Tree +logger = logging.getLogger(__name__) + # {{{ expansion wrangler interface @@ -119,8 +118,9 @@ class ExpansionWranglerInterface(ABC): .. automethod:: finalize_potentials """ - def __init__(self, tree_indep: TreeIndependentDataForWrangler, - traversal: FMMTraversalInfo): + def __init__(self, + tree_indep: TreeIndependentDataForWrangler, + traversal: FMMTraversalInfo) -> None: self.tree_indep = tree_indep self.traversal = traversal @@ -270,7 +270,7 @@ def finalize_potentials(self, potentials, template_ary): :class:`boxtree.pyfmmlib_integration.FMMLibExpansionWrangler` uses :class:`numpy.ndarray` internally, this array can be used to help convert the output back to the user's array - type (typically :class:`pyopencl.array.Array`). + type. """ def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): @@ -374,8 +374,8 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # Interface guidelines: Attributes of the tree are assumed to be known # to the expansion wrangler and should not be passed. - fmm_proc = ProcessLogger(logger, "fmm") from boxtree.timing import TimingRecorder + fmm_proc = ProcessLogger(logger, "fmm") recorder = TimingRecorder() src_weight_vecs = [wrangler.reorder_sources(weight) for From a041964de0ad8ba132b5c45676143435c064847a Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Tue, 21 Jun 2022 20:47:47 +0300 Subject: [PATCH 07/34] port traversal to arraycontext --- boxtree/traversal.py | 297 +++++++++++++++++++++++-------------------- 1 file changed, 159 insertions(+), 138 deletions(-) diff --git a/boxtree/traversal.py b/boxtree/traversal.py index 050e0f88..569a874b 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -47,6 +47,7 @@ THE SOFTWARE. """ +import enum import logging from dataclasses import dataclass from functools import partial @@ -55,32 +56,29 @@ import numpy as np from mako.template import Template -import pyopencl as cl -import pyopencl.array as cl_array from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate -from pytools import ProcessLogger, Record, log_process, memoize_method +from pytools import ProcessLogger, log_process, memoize_method, obj_array -from boxtree.tools import ( - AXIS_NAMES, - DeviceDataRecord, - coord_vec_subscript_code, - get_coord_vec_dtype, -) +from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.tools import AXIS_NAMES, coord_vec_subscript_code, get_coord_vec_dtype - -logger = logging.getLogger(__name__) +# NOTE: Tree cannot go into the TYPE_CHECKING block because it is needed +# by `dataclass_array_container` (which evals the types) +from boxtree.tree import Tree # noqa: TC001 if TYPE_CHECKING: + from arraycontext import Array + + import pyopencl as cl from pyopencl.algorithm import ListOfListsBuilder - from boxtree.tree import Tree from boxtree.tree_build import ExtentNorm +logger = logging.getLogger(__name__) FromSepSmallerCrit: TypeAlias = Literal["static_linf", "static_l2", "precise_linf"] - # {{{ preamble # This 'walk' mechanism walks over 'child' boxes in the tree. @@ -1204,7 +1202,7 @@ name="merge_lists") -class _IndexStyle: +class _IndexStyle(enum.IntEnum): TARGET_BOXES = 0 TARGET_OR_TARGET_PARENT_BOXES = 1 @@ -1212,10 +1210,14 @@ class _IndexStyle: class _ListMerger: """Utility class for combining box lists optionally changing indexing style.""" - def __init__(self, context, box_id_dtype): - self.context = context + def __init__(self, array_context: PyOpenCLArrayContext, box_id_dtype): + self._setup_actx = array_context self.box_id_dtype = box_id_dtype + @property + def context(self): + return self._setup_actx.queue.context + @memoize_method def get_list_merger_kernel(self, nlists, write_counts): """ @@ -1235,7 +1237,7 @@ def get_list_merger_kernel(self, nlists, write_counts): ("write_counts", write_counts), )) - def __call__(self, queue, input_starts, input_lists, input_index_style, + def __call__(self, actx, input_starts, input_lists, input_index_style, output_index_style, target_boxes, target_or_target_parent_boxes, nboxes, debug=False, wait_for=None): """ @@ -1268,18 +1270,18 @@ def __call__(self, queue, input_starts, input_lists, input_index_style, and output_index_style == _IndexStyle.TARGET_BOXES): from boxtree.tools import reverse_index_array target_or_target_parent_boxes_from_all_boxes = reverse_index_array( - target_or_target_parent_boxes, target_size=nboxes, - queue=queue) - target_or_target_parent_boxes_from_target_boxes = cl_array.take( - target_or_target_parent_boxes_from_all_boxes, - target_boxes, queue=queue) + actx, target_or_target_parent_boxes, target_size=nboxes) + target_or_target_parent_boxes_from_target_boxes = ( + target_or_target_parent_boxes_from_all_boxes[target_boxes] + ) output_to_input_box = target_or_target_parent_boxes_from_target_boxes else: - output_to_input_box = cl_array.arange( - queue, noutput_boxes, dtype=self.box_id_dtype) + output_to_input_box = actx.from_numpy( + np.arange(noutput_boxes, dtype=self.box_id_dtype) + ) - new_counts = cl_array.empty(queue, noutput_boxes+1, self.box_id_dtype) + new_counts = actx.np.zeros(noutput_boxes + 1, self.box_id_dtype) assert len(input_starts) == len(input_lists) nlists = len(input_starts) @@ -1291,17 +1293,14 @@ def __call__(self, queue, input_starts, input_lists, input_index_style, # output: new_counts, range=slice(noutput_boxes), - queue=queue, + queue=actx.queue, wait_for=wait_for) + import pyopencl.array as cl_array new_starts = cl_array.cumsum(new_counts) del new_counts - new_lists = cl_array.empty( - queue, - int(new_starts[-1].get()), - self.box_id_dtype) - + new_lists = actx.np.zeros(int(actx.to_numpy(new_starts[-1])), self.box_id_dtype) new_lists.fill(999999999) evt = self.get_list_merger_kernel(nlists, False)( @@ -1313,7 +1312,7 @@ def __call__(self, queue, input_starts, input_lists, input_index_style, # output: new_lists, range=slice(noutput_boxes), - queue=queue, + queue=actx.queue, wait_for=[evt]) return {"starts": new_starts, "lists": new_lists}, evt @@ -1323,7 +1322,9 @@ def __call__(self, queue, input_starts, input_lists, input_index_style, # {{{ traversal info (output) -class FMMTraversalInfo(DeviceDataRecord): +@dataclass_array_container +@dataclass(frozen=True) +class FMMTraversalInfo: r"""Interaction lists needed for a fast-multipole-like linear-time gather of particle interactions. @@ -1334,9 +1335,6 @@ class FMMTraversalInfo(DeviceDataRecord): Scientific and Statistical Computing 9, no. 4 (July 1988): 669-686. `DOI: 10.1137/0909044 `__. - Unless otherwise indicated, all bulk data in this data structure is stored - in a :class:`pyopencl.array.Array`. See also :meth:`get`. - .. attribute:: tree An instance of :class:`boxtree.Tree`. @@ -1443,16 +1441,6 @@ class FMMTraversalInfo(DeviceDataRecord): ``box_id_t [*]`` - Following attributes are deprecated. - - .. attribute:: colleagues_starts - - ``box_id_t [nboxes+1]`` - - .. attribute:: colleagues_lists - - ``box_id_t [*]`` - .. ------------------------------------------------------------------------ .. rubric:: Neighbor Sources ("List 1") .. ------------------------------------------------------------------------ @@ -1574,15 +1562,65 @@ class FMMTraversalInfo(DeviceDataRecord): Changed index style of *from_sep_close_bigger_starts* from :attr:`target_or_target_parent_boxes` to :attr:`target_boxes`. - - .. automethod:: get - .. automethod:: merge_close_lists """ + tree: Tree + well_sep_is_n_away: int + + # basic box lists for iteration + source_boxes: Array + target_boxes: Array + level_start_source_box_nrs: Array + level_start_target_box_nrs: Array + source_parent_boxes: Array + level_start_source_parent_box_nrs: Array + target_or_target_parent_boxes: Array + level_start_target_or_target_parent_box_nrs: Array + + # same-level non-well-separated boxes + same_level_non_well_sep_boxes_starts: Array + same_level_non_well_sep_boxes_lists: Array + + # neighbor sources ("List 1") + neighbor_source_boxes_starts: Array + neighbor_source_boxes_lists: Array + + # separated siblings ("List 2") + from_sep_siblings_starts: Array + from_sep_siblings_lists: Array + + # separated smaller boxes ("List 3") + from_sep_smaller_by_level: Array + target_boxes_sep_smaller_by_source_level: Array + from_sep_close_smaller_starts: Array + from_sep_close_smaller_lists: Array + + # separated bigger boxes ("List 4") + from_sep_bigger_starts: Array + from_sep_bigger_lists: Array + from_sep_close_bigger_starts: Array + from_sep_close_bigger_lists: Array + + @property + def nboxes(self): + return self.tree.nboxes + + @property + def nlevels(self): + return self.tree.nlevels + + @property + def ntarget_boxes(self): + return len(self.target_boxes) + + @property + def ntarget_or_target_parent_boxes(self): + return len(self.target_or_target_parent_boxes) + # {{{ "close" list merging -> "unified list 1" - def merge_close_lists(self, queue, debug=False): + def merge_close_lists(self, actx, debug=False): """Return a new :class:`FMMTraversalInfo` instance with the contents of :attr:`from_sep_close_smaller_starts` and :attr:`from_sep_close_bigger_starts` merged into @@ -1590,11 +1628,11 @@ def merge_close_lists(self, queue, debug=False): *None*. """ - list_merger = _ListMerger(queue.context, self.tree.box_id_dtype) + list_merger = _ListMerger(actx, self.tree.box_id_dtype) result, evt = ( list_merger( - queue, + actx, # starts (self.neighbor_source_boxes_starts, self.from_sep_close_smaller_starts, @@ -1613,11 +1651,13 @@ def merge_close_lists(self, queue, debug=False): self.tree.nboxes, debug)) + import pyopencl as cl cl.wait_for_events([evt]) - return self.copy( - neighbor_source_boxes_starts=result["starts"].with_queue(None), - neighbor_source_boxes_lists=result["lists"].with_queue(None), + from dataclasses import replace + return replace(self, + neighbor_source_boxes_starts=actx.freeze(result["starts"]), + neighbor_source_boxes_lists=actx.freeze(result["lists"]), from_sep_close_smaller_starts=None, from_sep_close_smaller_lists=None, from_sep_close_bigger_starts=None, @@ -1628,45 +1668,26 @@ def merge_close_lists(self, queue, debug=False): # {{{ debugging aids def get_box_list(self, what, index): - starts = getattr(self, what+"_starts") - lists = getattr(self, what+"_lists") + starts = getattr(self, f"{what}_starts") + lists = getattr(self, f"{what}_lists") start, stop = starts[index:index+2] return lists[start:stop] # }}} - @property - def nboxes(self): - return self.tree.nboxes - - @property - def nlevels(self): - return self.tree.nlevels - - @property - def ntarget_boxes(self): - return len(self.target_boxes) - - @property - def ntarget_or_target_parent_boxes(self): - return len(self.target_or_target_parent_boxes) - # }}} @dataclass(frozen=True) -class _KernelInfo(Record): - # FIXME: Incomplete? +class _KernelInfo: + sources_parents_and_targets_builder: ListOfListsBuilder + level_start_box_nrs_extractor: ElementwiseKernel same_level_non_well_sep_boxes_builder: ListOfListsBuilder neighbor_source_boxes_builder: ListOfListsBuilder from_sep_siblings_builder: ListOfListsBuilder from_sep_smaller_builder: ListOfListsBuilder from_sep_bigger_builder: ListOfListsBuilder - sources_parents_and_targets_builder: ListOfListsBuilder - - level_start_box_nrs_extractor: ElementwiseKernel - class FMMTraversalBuilder: """ @@ -1678,10 +1699,9 @@ class FMMTraversalBuilder: from_sep_smaller_crit: FromSepSmallerCrit | None def __init__(self, - context: cl.Context, - well_sep_is_n_away: int = 1, - from_sep_smaller_crit: FromSepSmallerCrit | None = None - ): + array_context: PyOpenCLArrayContext, *, + well_sep_is_n_away: int = 1, + from_sep_smaller_crit: FromSepSmallerCrit | None = None): """ :arg well_sep_is_n_away: Either An integer 1 or greater. (Only 1 and 2 are tested.) @@ -1689,10 +1709,14 @@ def __init__(self, :attr:`boxtree.traversal.FMMTraversalInfo.from_sep_siblings_starts` (List 2). """ - self.context = context + self._setup_actx = array_context self.well_sep_is_n_away = well_sep_is_n_away self.from_sep_smaller_crit = from_sep_smaller_crit + @property + def context(self): + return self._setup_actx.queue.context + # {{{ kernel builder @memoize_method @@ -1774,6 +1798,7 @@ def get_kernel_info(self, *, "source_boxes_has_mask": source_boxes_has_mask, "source_parent_boxes_has_mask": source_parent_boxes_has_mask, } + from pyopencl.algorithm import ListOfListsBuilder from boxtree.tools import ScalarArg, VectorArg @@ -1910,7 +1935,7 @@ def get_kernel_info(self, *, # {{{ driver def __call__(self, - queue: cl.CommandQueue, + actx: PyOpenCLArrayContext, tree: Tree, wait_for: cl.WaitList = None, debug: bool = False, @@ -1919,8 +1944,6 @@ def __call__(self, source_parent_boxes_mask=None ): """ - :arg queue: A :class:`pyopencl.CommandQueue` instance. - :arg tree: A :class:`boxtree.Tree` instance. :arg wait_for: may either be *None* or a list of :class:`pyopencl.Event` instances for whose completion this command waits before starting execution. @@ -1929,7 +1952,7 @@ def __call__(self, :arg source_parent_boxes_mask: Only boxes passing this mask will be considered for `source_parent_boxes`. Used by the distributed implementation. - :return: A tuple *(trav, event)*, where *trav* is a new instance of + :return: A :class:`tuple` *(trav, event)*, where *trav* is a new instance of :class:`FMMTraversalInfo` and *event* is a :class:`pyopencl.Event` for dependency management. """ @@ -1949,16 +1972,17 @@ def __call__(self, "traversal generation") # FIXME: missing on TreeOfBoxes + nlevels = actx.to_numpy(tree.nlevels) sources_are_targets = getattr(tree, "sources_are_targets", True) # Generated code shouldn't depend on the *exact* number of tree levels. # So round up to the next multiple of 5. from pytools import div_ceil - max_levels = div_ceil(tree.nlevels, 5) * 5 + max_levels = div_ceil(nlevels, 5) * 5 level_start_box_nrs = ( None if tree.level_start_box_nrs is None else - cl_array.to_device(queue, tree.level_start_box_nrs)) + tree.level_start_box_nrs) knl_info = self.get_kernel_info( dimensions=tree.dimensions, @@ -1974,9 +1998,9 @@ def __call__(self, source_boxes_has_mask=source_boxes_mask is not None, source_parent_boxes_has_mask=source_parent_boxes_mask is not None) - def fin_debug(s): + def debug_with_finish(s): if debug: - queue.finish() + actx.queue.finish() logger.debug(s) @@ -1984,7 +2008,8 @@ def fin_debug(s): # {{{ source boxes, their parents, and target boxes - fin_debug("building list of source boxes, their parents, and target boxes") + debug_with_finish( + "building list of source boxes, their parents, and target boxes") extra_args = [] if source_boxes_mask is not None: @@ -1993,7 +2018,7 @@ def fin_debug(s): extra_args.append(source_parent_boxes_mask) result, evt = knl_info.sources_parents_and_targets_builder( - queue, tree.nboxes, tree.box_flags, *extra_args, wait_for=wait_for + actx.queue, tree.nboxes, tree.box_flags, *extra_args, wait_for=wait_for ) wait_for = [evt] @@ -2015,43 +2040,44 @@ def extract_level_start_box_nrs(box_list, wait_for): if level_start_box_nrs is None: return None, [] - result = cl_array.empty(queue, - tree.nlevels+1, tree.box_id_dtype) \ - .fill(len(box_list)) + result = actx.np.zeros( + nlevels + 1, tree.box_id_dtype).fill(len(box_list)) + evt = knl_info.level_start_box_nrs_extractor( level_start_box_nrs, tree.box_levels, box_list, result, range=slice(0, len(box_list)), - queue=queue, wait_for=wait_for) + queue=actx.queue, wait_for=wait_for) - result = result.get() + result = actx.to_numpy(result) # Postprocess result for unoccupied levels prev_start = len(box_list) - for ilev in range(tree.nlevels-1, -1, -1): + for ilev in range(nlevels - 1, -1, -1): result[ilev] = prev_start = \ min(result[ilev], prev_start) return result, [evt] - fin_debug("finding level starts in source boxes array") + debug_with_finish("finding level starts in source boxes array") level_start_source_box_nrs, evt_s = \ extract_level_start_box_nrs( source_boxes, wait_for=wait_for) - fin_debug("finding level starts in source parent boxes array") + debug_with_finish("finding level starts in source parent boxes array") level_start_source_parent_box_nrs, evt_sp = \ extract_level_start_box_nrs( source_parent_boxes, wait_for=wait_for) - fin_debug("finding level starts in target boxes array") + debug_with_finish("finding level starts in target boxes array") level_start_target_box_nrs, evt_t = \ extract_level_start_box_nrs( target_boxes, wait_for=wait_for) - fin_debug("finding level starts in target or target parent boxes array") + debug_with_finish( + "finding level starts in target or target parent boxes array") level_start_target_or_target_parent_box_nrs, evt_tp = \ extract_level_start_box_nrs( target_or_target_parent_boxes, wait_for=wait_for) @@ -2065,10 +2091,10 @@ def extract_level_start_box_nrs(box_list, wait_for): # If well_sep_is_n_away is 1, this agrees with the definition of # 'colleagues' from the classical FMM literature. - fin_debug("finding same-level near-field boxes") + debug_with_finish("finding same-level near-field boxes") result, evt = knl_info.same_level_non_well_sep_boxes_builder( - queue, tree.nboxes, + actx.queue, tree.nboxes, tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, wait_for=wait_for) @@ -2079,10 +2105,10 @@ def extract_level_start_box_nrs(box_list, wait_for): # {{{ neighbor source boxes ("list 1") - fin_debug("finding neighbor source boxes ('list 1')") + debug_with_finish("finding neighbor source boxes ('list 1')") result, evt = knl_info.neighbor_source_boxes_builder( - queue, len(target_boxes), + actx.queue, len(target_boxes), tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, target_boxes, wait_for=wait_for) @@ -2094,10 +2120,10 @@ def extract_level_start_box_nrs(box_list, wait_for): # {{{ well-separated siblings ("list 2") - fin_debug("finding well-separated siblings ('list 2')") + debug_with_finish("finding well-separated siblings ('list 2')") result, evt = knl_info.from_sep_siblings_builder( - queue, len(target_or_target_parent_boxes), + actx.queue, len(target_or_target_parent_boxes), tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, target_or_target_parent_boxes, tree.box_parent_ids.data, @@ -2113,10 +2139,10 @@ def extract_level_start_box_nrs(box_list, wait_for): # {{{ separated smaller ("list 3") - fin_debug("finding separated smaller ('list 3')") + debug_with_finish("finding separated smaller ('list 3')") from_sep_smaller_base_args = ( - queue, len(target_boxes), + actx.queue, len(target_boxes), # base_args tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, @@ -2135,8 +2161,8 @@ def extract_level_start_box_nrs(box_list, wait_for): from_sep_smaller_by_level = [] target_boxes_sep_smaller_by_source_level = [] - for ilevel in range(tree.nlevels): - fin_debug(f"finding separated smaller ('list 3 level {ilevel}')") + for ilevel in range(nlevels): + debug_with_finish(f"finding separated smaller ('list 3 level {ilevel}')") result, evt = knl_info.from_sep_smaller_builder( *from_sep_smaller_base_args, ilevel, @@ -2151,7 +2177,7 @@ def extract_level_start_box_nrs(box_list, wait_for): from_sep_smaller_wait_for.append(evt) if with_extent: - fin_debug("finding separated smaller close ('list 3 close')") + debug_with_finish("finding separated smaller close ('list 3 close')") result, evt = knl_info.from_sep_smaller_builder( *from_sep_smaller_base_args, -1, @@ -2172,10 +2198,10 @@ def extract_level_start_box_nrs(box_list, wait_for): # {{{ separated bigger ("list 4") - fin_debug("finding separated bigger ('list 4')") + debug_with_finish("finding separated bigger ('list 4')") result, evt = knl_info.from_sep_bigger_builder( - queue, len(target_or_target_parent_boxes), + actx.queue, len(target_or_target_parent_boxes), tree.box_centers.data, tree.root_extent, tree.box_levels, tree.aligned_nboxes, tree.box_child_ids.data, tree.box_flags, tree.stick_out_factor, target_or_target_parent_boxes, @@ -2193,9 +2219,9 @@ def extract_level_start_box_nrs(box_list, wait_for): from_sep_close_bigger_starts_raw = result["from_sep_close_bigger"].starts from_sep_close_bigger_lists_raw = result["from_sep_close_bigger"].lists - list_merger = _ListMerger(queue.context, tree.box_id_dtype) + list_merger = _ListMerger(actx, tree.box_id_dtype) result, evt = list_merger( - queue, + actx, # starts (from_sep_close_bigger_starts_raw,), # lists @@ -2224,43 +2250,35 @@ def extract_level_start_box_nrs(box_list, wait_for): # }}} - if self.well_sep_is_n_away == 1: - colleagues_starts = same_level_non_well_sep_boxes.starts - colleagues_lists = same_level_non_well_sep_boxes.lists - else: - colleagues_starts = None - colleagues_lists = None - evt, = wait_for - traversal_plog.done( "from_sep_smaller_crit: %s", self.from_sep_smaller_crit) - return FMMTraversalInfo( + info = FMMTraversalInfo( tree=tree, well_sep_is_n_away=self.well_sep_is_n_away, source_boxes=source_boxes, target_boxes=target_boxes, - level_start_source_box_nrs=level_start_source_box_nrs, - level_start_target_box_nrs=level_start_target_box_nrs, + level_start_source_box_nrs=actx.from_numpy( + level_start_source_box_nrs), + level_start_target_box_nrs=actx.from_numpy( + level_start_target_box_nrs), source_parent_boxes=source_parent_boxes, - level_start_source_parent_box_nrs=level_start_source_parent_box_nrs, + level_start_source_parent_box_nrs=actx.from_numpy( + level_start_source_parent_box_nrs), target_or_target_parent_boxes=target_or_target_parent_boxes, - level_start_target_or_target_parent_box_nrs=( + level_start_target_or_target_parent_box_nrs=actx.from_numpy( level_start_target_or_target_parent_box_nrs), same_level_non_well_sep_boxes_starts=( same_level_non_well_sep_boxes.starts), same_level_non_well_sep_boxes_lists=( same_level_non_well_sep_boxes.lists), - # Deprecated, but we'll keep these alive for the time being. - colleagues_starts=colleagues_starts, - colleagues_lists=colleagues_lists, neighbor_source_boxes_starts=neighbor_source_boxes.starts, neighbor_source_boxes_lists=neighbor_source_boxes.lists, @@ -2268,8 +2286,9 @@ def extract_level_start_box_nrs(box_list, wait_for): from_sep_siblings_starts=from_sep_siblings.starts, from_sep_siblings_lists=from_sep_siblings.lists, - from_sep_smaller_by_level=from_sep_smaller_by_level, - target_boxes_sep_smaller_by_source_level=( + from_sep_smaller_by_level=obj_array.new_1d( + from_sep_smaller_by_level), + target_boxes_sep_smaller_by_source_level=obj_array.new_1d( target_boxes_sep_smaller_by_source_level), from_sep_close_smaller_starts=from_sep_close_smaller_starts, @@ -2280,7 +2299,9 @@ def extract_level_start_box_nrs(box_list, wait_for): from_sep_close_bigger_starts=from_sep_close_bigger_starts, from_sep_close_bigger_lists=from_sep_close_bigger_lists, - ).with_queue(None), evt + ) + + return actx.freeze(info), evt # }}} From 158f71fb9e7ac7ed3ea89ebbd1bcf722c0c9e442 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Tue, 21 Jun 2022 21:13:31 +0300 Subject: [PATCH 08/34] port tree to arraycontext --- boxtree/tree.py | 330 ++++++++++++++++++------------------- test/test_tree_of_boxes.py | 5 +- 2 files changed, 166 insertions(+), 169 deletions(-) diff --git a/boxtree/tree.py b/boxtree/tree.py index 3dffa676..4a62730f 100644 --- a/boxtree/tree.py +++ b/boxtree/tree.py @@ -82,23 +82,25 @@ THE SOFTWARE. """ import logging -from dataclasses import dataclass +from dataclasses import dataclass, field from functools import cached_property from typing import TYPE_CHECKING import numpy as np from typing_extensions import override -import pyopencl.array as cl_array -import pytools.obj_array as obj_array from cgen import Enum -from pytools import memoize_method +from pytools import memoize_method, obj_array -from boxtree.tools import DeviceDataRecord +from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container + +# NOTE: ExtentNorm cannot go into the TYPE_CHECKING block because it is needed +# by `dataclass_array_container` (which evals the types) +from boxtree.tree_build import ExtentNorm # noqa: TC001 if TYPE_CHECKING: - from boxtree.tree_build import ExtentNorm + from arraycontext import Array logger = logging.getLogger(__name__) @@ -149,7 +151,8 @@ class box_flags_enum(Enum): # noqa # {{{ tree of boxes -@dataclass +@dataclass_array_container +@dataclass(frozen=True) class TreeOfBoxes: """A quad/octree tree of pure boxes, excluding their contents (e.g. particles). It is a lightweight tree handled with :mod:`numpy`, intended @@ -223,15 +226,15 @@ class TreeOfBoxes: .. automethod:: __init__ """ - root_extent: np.ndarray - box_centers: np.ndarray + root_extent: Array + box_centers: Array - box_parent_ids: np.ndarray - box_child_ids: np.ndarray - box_levels: np.ndarray + box_parent_ids: Array + box_child_ids: Array + box_levels: Array - box_flags: np.ndarray | None - level_start_box_nrs: np.ndarray | None + box_flags: Array | None + level_start_box_nrs: Array | None # FIXME: these should be properties and take values from box_parent_ids, etc box_id_dtype: np.dtype @@ -259,11 +262,7 @@ def aligned_nboxes(self): @property def nlevels(self): - # level starts from 0 - if isinstance(self.box_levels, cl_array.Array): - return int(max(self.box_levels).get()) + 1 - else: - return max(self.box_levels) + 1 + return max(self.box_levels) + 1 @property def leaf_boxes(self): @@ -296,7 +295,9 @@ def get_box_extent(self, ibox): # {{{ tree with particles -class Tree(DeviceDataRecord, TreeOfBoxes): +@dataclass_array_container +@dataclass(frozen=True) +class Tree(TreeOfBoxes): r"""A quad/octree consisting of particles sorted into a hierarchy of boxes. Optionally, particles may be designated 'sources' and 'targets'. They @@ -306,9 +307,6 @@ class Tree(DeviceDataRecord, TreeOfBoxes): Instances of this class are not constructed directly. They are returned by :meth:`TreeBuilder.__call__`. - Unless otherwise indicated, all bulk data in this data structure is stored - in a :class:`pyopencl.array.Array`. See also :meth:`get`. - Inherits from :class:`TreeOfBoxes`. .. rubric:: Flags @@ -387,13 +385,6 @@ class Tree(DeviceDataRecord, TreeOfBoxes): in each level, access the start of the next level. This array is built so that this works even for the last level. - .. attribute:: level_start_box_nrs_dev - - ``particle_id_t [nlevels+1]`` - - The same array as :attr:`level_start_box_nrs` - as a :class:`pyopencl.array.Array`. - .. ------------------------------------------------------------------------ .. rubric:: Per-particle arrays .. ------------------------------------------------------------------------ @@ -562,12 +553,43 @@ class Tree(DeviceDataRecord, TreeOfBoxes): .. attribute:: box_target_bounding_box_max ``coordt_t [dimensions, aligned_nboxes]`` - - .. rubric:: Methods - - .. automethod:: get """ + # flags + sources_are_targets: bool + + # data types + particle_id_dtype: np.dtype + + # per-particle arrays + sources: Array + source_radii: Array + targets: Array + target_radii: Array + + # FIXME: this needs to be init=True to overwrite the cached property in + # the base class. That fails because `x[:, 0] - c` tries to do arithmetic + # on a non-contiguous array and is not supported by pyopencl + bounding_box: tuple[Array, Array] = field(init=True) + + # tree / user order indices + user_source_ids: Array + sorted_target_ids: Array + + # box properties + box_source_starts: Array + box_source_counts_nonchild: Array + box_source_counts_cumul: Array + box_target_starts: Array + box_target_counts_nonchild: Array + box_target_counts_cumul: Array + + # particle-adaptive box extents + box_source_bounding_box_min: Array + box_source_bounding_box_max: Array + box_target_bounding_box_min: Array + box_target_bounding_box_max: Array + @property @override def dimensions(self): @@ -593,7 +615,7 @@ def ntargets(self): def nlevels(self): return len(self.level_start_box_nrs) - 1 - _is_pruned: bool + # {{{ dummy interface for TreePlotter def plot(self, **kwargs): from boxtree.visualization import TreePlotter @@ -608,9 +630,11 @@ def get_box_extent(self, ibox: int): extent_high = extent_low + box_size return extent_low, extent_high + # }}} + # {{{ debugging aids - # these assume numpy arrays (i.e. post-.get()), for now + # these assume numpy arrays for now def _reverse_index_lookup(self, ary, new_key_size): result = np.empty(new_key_size, ary.dtype) @@ -655,26 +679,13 @@ def find_box_nr_for_source(self, isource): # }}} - def to_device(self, queue, exclude_fields=frozenset()): - # level_start_box_nrs should remain in host memory - exclude_fields = set(exclude_fields) - exclude_fields.add("level_start_box_nrs") - - return super().to_device(queue, frozenset(exclude_fields)) - - def to_host_device_array(self, queue, exclude_fields=frozenset()): - # level_start_box_nrs should remain in host memory - exclude_fields = set(exclude_fields) - exclude_fields.add("level_start_box_nrs") - - return super().to_host_device_array( - queue, frozenset(exclude_fields)) - # }}} # {{{ tree with linked point sources +@dataclass_array_container +@dataclass(frozen=True) class TreeWithLinkedPointSources(Tree): """In this :class:`boxtree.Tree` subclass, the sources of the original tree are linked with extent are expanded into point sources which are linked to the @@ -737,20 +748,26 @@ class TreeWithLinkedPointSources(Tree): This constructor is not intended to be called by users directly. Call :func:`link_point_sources` instead. - - .. rubric:: Methods - - .. automethod:: get """ + npoint_sources: int + point_source_starts: Array + point_source_counts: Array + point_sources: Array + user_point_source_ids: Array + box_point_source_starts: Array + box_point_source_counts_nonchild: Array + box_point_source_counts_cumul: Array + -def link_point_sources(queue, tree, point_source_starts, point_sources, - debug=False): +def link_point_sources( + actx: PyOpenCLArrayContext, tree: Tree, + point_source_starts: Array, point_sources: Array, *, + debug: bool = False): r""" *Construction:* Requires that :attr:`boxtree.Tree.sources_have_extent` is *True* on *tree*. - :arg queue: a :class:`pyopencl.CommandQueue` instance :arg point_source_starts: ``point_source_starts[isrc]`` and ``point_source_starts[isrc+1]`` together indicate a ranges of point particle indices in *point_sources* which will be linked to the @@ -772,21 +789,21 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, if not tree.sources_have_extent: raise ValueError("only allowed on trees whose sources have extent") - npoint_sources_dev = cl_array.empty(queue, (), tree.particle_id_dtype) + npoint_sources_dev = actx.np.zeros((), tree.particle_id_dtype) # {{{ compute tree_order_point_source_{starts, counts} # Scan over lengths of point source lists in tree order to determine # indices of point source starts for each source. - tree_order_point_source_starts = cl_array.empty( - queue, tree.nsources, tree.particle_id_dtype) - tree_order_point_source_counts = cl_array.empty( - queue, tree.nsources, tree.particle_id_dtype) + tree_order_point_source_starts = actx.np.zeros( + tree.nsources, tree.particle_id_dtype) + tree_order_point_source_counts = actx.np.zeros( + tree.nsources, tree.particle_id_dtype) from boxtree.tree_build_kernels import POINT_SOURCE_LINKING_SOURCE_SCAN_TPL knl = POINT_SOURCE_LINKING_SOURCE_SCAN_TPL.build( - queue.context, + actx.queue.context, type_aliases=( ("scan_t", tree.particle_id_dtype), ("index_t", tree.particle_id_dtype), @@ -798,36 +815,37 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, knl(point_source_starts, tree.user_source_ids, tree_order_point_source_starts, tree_order_point_source_counts, - npoint_sources_dev, size=tree.nsources, queue=queue) + npoint_sources_dev, size=tree.nsources, queue=actx.queue) # }}} - npoint_sources = int(npoint_sources_dev.get()) + npoint_sources = int(actx.to_numpy(npoint_sources_dev)) # {{{ compute user_point_source_ids # A list of point source starts, indexed in tree order, # but giving point source indices in user order. - tree_order_index_user_point_source_starts = cl_array.take( - point_source_starts, tree.user_source_ids, - queue=queue) + tree_order_index_user_point_source_starts = ( + point_source_starts[tree.user_source_ids]) - user_point_source_ids = cl_array.empty( - queue, npoint_sources, tree.particle_id_dtype) + user_point_source_ids = actx.np.zeros(npoint_sources, tree.particle_id_dtype) user_point_source_ids.fill(1) - cl_array.multi_put([tree_order_index_user_point_source_starts], + + import pyopencl.array as cl_array + cl_array.multi_put( + [tree_order_index_user_point_source_starts], dest_indices=tree_order_point_source_starts, out=[user_point_source_ids]) if debug: - ups_host = user_point_source_ids.get() - assert (ups_host >= 0).all() - assert (ups_host < npoint_sources).all() + ups_host = actx.to_numpy(user_point_source_ids) + assert np.all(ups_host >= 0) + assert np.all(ups_host < npoint_sources) - source_boundaries = cl_array.zeros(queue, npoint_sources, np.int8) + source_boundaries = actx.np.zeros(npoint_sources, np.int8) # FIXME: Should be a scalar, in principle. - ones = cl_array.empty(queue, tree.nsources, np.int8) + ones = actx.np.zeros(tree.nsources, np.int8) ones.fill(1) cl_array.multi_put( @@ -842,7 +860,7 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, logger.debug("point source linking: point source id scan") knl = POINT_SOURCE_LINKING_USER_POINT_SOURCE_ID_SCAN_TPL.build( - queue.context, + actx.queue.context, type_aliases=( ("scan_t", tree.particle_id_dtype), ("index_t", tree.particle_id_dtype), @@ -850,18 +868,17 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, ), ) knl(source_boundaries, user_point_source_ids, - size=npoint_sources, queue=queue) + size=npoint_sources, queue=actx.queue) if debug: - ups_host = user_point_source_ids.get() - assert (ups_host >= 0).all() - assert (ups_host < npoint_sources).all() + ups_host = actx.to_numpy(user_point_source_ids) + assert np.all(ups_host >= 0) + assert np.all(ups_host < npoint_sources) # }}} tree_order_point_sources = obj_array.new_1d([ - cl_array.take(point_sources[i], user_point_source_ids, - queue=queue) + cl_array.take(point_sources[i], user_point_source_ids, queue=actx.queue) for i in range(tree.dimensions) ]) @@ -870,7 +887,7 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, from boxtree.tree_build_kernels import POINT_SOURCE_LINKING_BOX_POINT_SOURCES knl = POINT_SOURCE_LINKING_BOX_POINT_SOURCES.build( - queue.context, + actx.queue.context, type_aliases=( ("particle_id_t", tree.particle_id_dtype), ("box_id_t", tree.box_id_dtype), @@ -879,12 +896,10 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, logger.debug("point source linking: box point sources") - box_point_source_starts = cl_array.empty( - queue, tree.nboxes, tree.particle_id_dtype) - box_point_source_counts_nonchild = cl_array.empty( - queue, tree.nboxes, tree.particle_id_dtype) - box_point_source_counts_cumul = cl_array.empty( - queue, tree.nboxes, tree.particle_id_dtype) + box_point_source_starts = actx.np.zeros(tree.nboxes, tree.particle_id_dtype) + box_point_source_counts_cumul = actx.np.zeros(tree.nboxes, tree.particle_id_dtype) + box_point_source_counts_nonchild = actx.np.zeros( + tree.nboxes, tree.particle_id_dtype) knl( box_point_source_starts, box_point_source_counts_nonchild, @@ -895,20 +910,21 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, tree_order_point_source_starts, tree_order_point_source_counts, - range=slice(tree.nboxes), queue=queue) + range=slice(tree.nboxes), queue=actx.queue) # }}} logger.info("point source linking: complete") + from dataclasses import fields tree_attrs = {} - for attr_name in tree.__class__.fields: + for f in fields(tree): try: # noqa: SIM105 - tree_attrs[attr_name] = getattr(tree, attr_name) + tree_attrs[f.name] = getattr(tree, f.name) except AttributeError: pass - return TreeWithLinkedPointSources( + tree_with_point_sources = TreeWithLinkedPointSources( npoint_sources=npoint_sources, point_source_starts=tree_order_point_source_starts, point_source_counts=tree_order_point_source_counts, @@ -918,7 +934,9 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, box_point_source_counts_nonchild=box_point_source_counts_nonchild, box_point_source_counts_cumul=box_point_source_counts_cumul, - **tree_attrs).with_queue(None) + **tree_attrs) + + return actx.freeze(tree_with_point_sources) # }}} @@ -926,7 +944,9 @@ def link_point_sources(queue, tree, point_source_starts, point_sources, # {{{ particle list filter -class FilteredTargetListsInUserOrder(DeviceDataRecord): +@dataclass_array_container +@dataclass(frozen=True) +class FilteredTargetListsInUserOrder: """Use :meth:`ParticleListFilter.filter_target_lists_in_user_order` to create instances of this class. @@ -959,14 +979,16 @@ class FilteredTargetListsInUserOrder(DeviceDataRecord): child boxes). Use together with :attr:`target_starts`. Target numbers are stored in user order, as the class name suggests. - - .. rubric:: Methods - - .. automethod:: get """ + nfiltered_targets: int + target_starts: Array + target_lists: Array + -class FilteredTargetListsInTreeOrder(DeviceDataRecord): +@dataclass_array_container +@dataclass(frozen=True) +class FilteredTargetListsInTreeOrder: """Use :meth:`ParticleListFilter.filter_target_lists_in_tree_order` to create instances of this class. @@ -1011,12 +1033,14 @@ class FilteredTargetListsInTreeOrder(DeviceDataRecord): Storing *to* these indices will reorder the targets from *filtered* tree target order into 'regular' :ref:`tree target order `. - - .. rubric:: Methods - - .. automethod:: get """ + nfiltered_targets: int + box_target_starts: Array + box_target_counts_nonchild: Array + targets: Array + unfiltered_from_filtered_target_indices: Array + class ParticleListFilter: """ @@ -1024,8 +1048,12 @@ class ParticleListFilter: .. automethod:: filter_target_lists_in_user_order """ - def __init__(self, context): - self.context = context + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx = array_context + + @property + def context(self): + return self._setup_actx.queue.context @memoize_method def get_filter_target_lists_in_user_order_kernel(self, particle_id_dtype, @@ -1067,7 +1095,7 @@ def get_filter_target_lists_in_user_order_kernel(self, particle_id_dtype, return builder - def filter_target_lists_in_user_order(self, queue, tree, flags): + def filter_target_lists_in_user_order(self, actx, tree, flags): """ :arg flags: an array of length :attr:`boxtree.Tree.ntargets` of :class:`numpy.int8` objects, which indicate by being zero that the @@ -1079,25 +1107,27 @@ def filter_target_lists_in_user_order(self, queue, tree, flags): user_order_flags = flags del flags - user_target_ids = cl_array.empty(queue, tree.ntargets, - tree.sorted_target_ids.dtype) - user_target_ids[tree.sorted_target_ids] = cl_array.arange( - queue, tree.ntargets, user_target_ids.dtype) + user_target_ids = actx.np.zeros(tree.ntargets, tree.sorted_target_ids.dtype) + user_target_ids[tree.sorted_target_ids] = actx.from_numpy( + np.arange(tree.ntargets, dtype=user_target_ids.dtype) + ) kernel = self.get_filter_target_lists_in_user_order_kernel( tree.particle_id_dtype, user_order_flags.dtype) - result, _evt = kernel(queue, tree.nboxes, + result, _evt = kernel(actx.queue, tree.nboxes, user_order_flags, user_target_ids, tree.box_target_starts, tree.box_target_counts_nonchild) - return FilteredTargetListsInUserOrder( + target_lists = FilteredTargetListsInUserOrder( nfiltered_targets=result["filt_tgt_list"].count, target_starts=result["filt_tgt_list"].starts, target_lists=result["filt_tgt_list"].lists, - ).with_queue(None) + ) + + return actx.freeze(target_lists) @memoize_method def get_filter_target_lists_in_tree_order_kernels(self, particle_id_dtype): @@ -1123,7 +1153,7 @@ def get_filter_target_lists_in_tree_order_kernels(self, particle_id_dtype): return scan_knl, index_knl - def filter_target_lists_in_tree_order(self, queue, tree, flags): + def filter_target_lists_in_tree_order(self, actx, tree, flags): """ :arg flags: an array of length :attr:`boxtree.Tree.ntargets` of :class:`numpy.int8` objects, which indicate by being zero that the @@ -1132,15 +1162,15 @@ def filter_target_lists_in_tree_order(self, queue, tree, flags): :returns: A :class:`FilteredTargetListsInTreeOrder` """ - tree_order_flags = cl_array.empty(queue, tree.ntargets, np.int8) + tree_order_flags = actx.np.zeros(tree.ntargets, np.int8) tree_order_flags[tree.sorted_target_ids] = flags - filtered_from_unfiltered_target_indices = cl_array.empty( - queue, tree.ntargets, tree.particle_id_dtype) - unfiltered_from_filtered_target_indices = cl_array.empty( - queue, tree.ntargets, tree.particle_id_dtype) + filtered_from_unfiltered_target_indices = actx.np.zeros( + tree.ntargets, tree.particle_id_dtype) + unfiltered_from_filtered_target_indices = actx.np.zeros( + tree.ntargets, tree.particle_id_dtype) - nfiltered_targets = cl_array.empty(queue, 1, tree.particle_id_dtype) + nfiltered_targets = actx.np.zeros(1, tree.particle_id_dtype) scan_knl, index_knl = self.get_filter_target_lists_in_tree_order_kernels( tree.particle_id_dtype) @@ -1149,22 +1179,20 @@ def filter_target_lists_in_tree_order(self, queue, tree, flags): filtered_from_unfiltered_target_indices, unfiltered_from_filtered_target_indices, nfiltered_targets, - queue=queue) - - nfiltered_targets = int(nfiltered_targets.get().item()) + queue=actx.queue) + nfiltered_targets = int(actx.to_numpy(nfiltered_targets).item()) unfiltered_from_filtered_target_indices = \ unfiltered_from_filtered_target_indices[:nfiltered_targets] filtered_targets = obj_array.new_1d([ - targets_i.with_queue(queue)[unfiltered_from_filtered_target_indices] + actx.thaw(targets_i)[unfiltered_from_filtered_target_indices] for targets_i in tree.targets ]) - box_target_starts_filtered = \ - cl_array.empty_like(tree.box_target_starts) - box_target_counts_nonchild_filtered = \ - cl_array.empty_like(tree.box_target_counts_nonchild) + box_target_starts_filtered = actx.np.zeros_like(tree.box_target_starts) + box_target_counts_nonchild_filtered = ( + actx.np.zeros_like(tree.box_target_counts_nonchild)) index_knl( # input @@ -1178,51 +1206,19 @@ def filter_target_lists_in_tree_order(self, queue, tree, flags): box_target_starts_filtered, box_target_counts_nonchild_filtered, - queue=queue) + queue=actx.queue) - return FilteredTargetListsInTreeOrder( + target_lists = FilteredTargetListsInTreeOrder( nfiltered_targets=nfiltered_targets, box_target_starts=box_target_starts_filtered, box_target_counts_nonchild=box_target_counts_nonchild_filtered, unfiltered_from_filtered_target_indices=( unfiltered_from_filtered_target_indices), targets=filtered_targets, - ).with_queue(None) + ) -# }}} + return actx.freeze(target_lists) - -# {{{ filter_target_lists_in_*_order - -def filter_target_lists_in_user_order(queue, tree, flags): - """ - Deprecated. See :meth:`ParticleListFilter.filter_target_lists_in_user_order`. - """ - - from warnings import warn - warn( - "filter_target_lists_in_user_order() is deprecated and will go " - "away in a future release. Use " - "ParticleListFilter.filter_target_lists_in_user_order() instead.", - DeprecationWarning, stacklevel=2) - - return (ParticleListFilter(queue.context) - .filter_target_lists_in_user_order(queue, tree, flags)) - - -def filter_target_lists_in_tree_order(queue, tree, flags): - """ - Deprecated. See :meth:`ParticleListFilter.filter_target_lists_in_tree_order`. - """ - from warnings import warn - warn( - "filter_target_lists_in_tree_order() is deprecated and will go " - "away in a future release. Use " - "ParticleListFilter.filter_target_lists_in_tree_order() instead.", - DeprecationWarning, stacklevel=2) - - return (ParticleListFilter(queue.context) - .filter_target_lists_in_tree_order(queue, tree, flags)) # }}} # vim: filetype=pyopencl:fdm=marker diff --git a/test/test_tree_of_boxes.py b/test/test_tree_of_boxes.py index ca828827..4d8e137d 100644 --- a/test/test_tree_of_boxes.py +++ b/test/test_tree_of_boxes.py @@ -232,11 +232,12 @@ def test_traversal_from_tob(actx_factory): box_child_ids=actx.from_numpy(tob.box_child_ids), box_levels=actx.from_numpy(tob.box_levels), box_flags=actx.from_numpy(tob.box_flags), + level_start_box_nrs=actx.from_numpy(tob.level_start_box_nrs), ) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context) - _trav, _ = tg(actx.queue, tob) + tg = FMMTraversalBuilder(actx) + _trav, _ = tg(actx, tob) # }}} From c64292edf6dcfdd3e322b893a2be43af7e46a22e Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Wed, 22 Jun 2022 14:28:51 +0300 Subject: [PATCH 09/34] port tools to arraycontext --- boxtree/tools.py | 129 +++++++++++++++++++++++++---------------------- 1 file changed, 68 insertions(+), 61 deletions(-) diff --git a/boxtree/tools.py b/boxtree/tools.py index 32e54554..1594227d 100644 --- a/boxtree/tools.py +++ b/boxtree/tools.py @@ -25,7 +25,7 @@ import sys from functools import partial -from typing import Any +from typing import TYPE_CHECKING, Any import numpy as np from mako.template import Template @@ -36,6 +36,10 @@ from pytools import Record, memoize_method, obj_array +if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext + + # Use offsets in VectorArg by default. VectorArg = partial(_VectorArg, with_offset=True) @@ -49,32 +53,29 @@ def padded_bin(i: int, nbits: int): # NOTE: Order of positional args should match GappyCopyAndMapKernel.__call__() def realloc_array( - queue: cl.CommandQueue, - allocator: cl_array.Allocator, + actx: PyOpenCLArrayContext, new_shape: tuple[int, ...], ary: cl_array.Array, - zero_fill: bool = False, + zero_fill: bool | None = None, wait_for: cl.WaitList = None ) -> tuple[cl_array.Array, cl.Event]: if wait_for is None: wait_for = [] - if zero_fill: # noqa: SIM108 - array_maker = cl_array.zeros - else: - array_maker = cl_array.empty - - new_ary = array_maker(queue, shape=new_shape, dtype=ary.dtype, - allocator=allocator) + if zero_fill is not None: + from warnings import warn + warn("Setting 'zero_fill' has no effect and will become an error in 2025.", + DeprecationWarning, stacklevel=2) - evt = cl.enqueue_copy(queue, new_ary.data, ary.data, byte_count=ary.nbytes, - wait_for=wait_for + new_ary.events) + new_ary = actx.np.zeros(shape=new_shape, dtype=ary.dtype) + evt = cl.enqueue_copy(actx.queue, new_ary.data, ary.data, + byte_count=ary.nbytes, + wait_for=wait_for + new_ary.events) return new_ary, evt -def reverse_index_array(indices, target_size=None, result_fill_value=None, - queue=None): +def reverse_index_array(actx, indices, target_size=None, result_fill_value=None): """For an array of *indices*, return a new array *result* that satisfies ``result[indices] == arange(len(indices))`` @@ -84,38 +85,34 @@ def reverse_index_array(indices, target_size=None, result_fill_value=None, prior to storing reversed indices. """ - queue = queue or indices.queue - if target_size is None: target_size = len(indices) - result = cl_array.empty(queue, target_size, indices.dtype) + result = actx.np.zeros(target_size, indices.dtype) if result_fill_value is not None: result.fill(result_fill_value) - cl_array.multi_put( - [cl_array.arange(queue, len(indices), dtype=indices.dtype, - allocator=indices.allocator)], + cl.array.multi_put( + [actx.from_numpy(np.arange(len(indices), dtype=indices.dtype))], indices, out=[result], - queue=queue) + queue=actx.queue) return result # {{{ particle distribution generators -def make_normal_particle_array(queue, nparticles, dims, dtype, seed=15): - from pyopencl.clrandom import PhiloxGenerator - rng = PhiloxGenerator(queue.context, seed=seed) - +def make_normal_particle_array(actx, nparticles, dims, dtype, seed=15): + rng = np.random.default_rng(seed) return obj_array.new_1d([ - rng.normal(queue, nparticles, dtype=dtype) - for i in range(dims)]) + actx.from_numpy(rng.standard_normal(nparticles, dtype=dtype)) + for i in range(dims) + ]) -def make_surface_particle_array(queue, nparticles, dims, dtype, seed=15): +def make_surface_particle_array(actx, nparticles, dims, dtype, seed=15): import loopy as lp if dims == 2: @@ -139,9 +136,9 @@ def get_2d_knl(dtype): knl = lp.split_iname(knl, "i", 128, outer_tag="g.0", inner_tag="l.0") - return knl.executor(queue.context) + return knl.executor(actx.context) - _evt, result = get_2d_knl(dtype)(queue, n=nparticles) + _evt, result = get_2d_knl(dtype)(actx.queue, n=nparticles) result = [x.ravel() for x in result] @@ -173,9 +170,9 @@ def get_3d_knl(dtype): knl = lp.split_iname(knl, "i", 16, outer_tag="g.1", inner_tag="l.1") knl = lp.split_iname(knl, "j", 16, outer_tag="g.0", inner_tag="l.0") - return knl.executor(queue.context) + return knl.executor(actx.context) - _evt, result = get_3d_knl(dtype)(queue, n=n) + _evt, result = get_3d_knl(dtype)(actx.queue, n=n) result = [x.ravel() for x in result] @@ -184,7 +181,7 @@ def get_3d_knl(dtype): raise NotImplementedError -def make_uniform_particle_array(queue, nparticles, dims, dtype, seed=15): +def make_uniform_particle_array(actx, nparticles, dims, dtype, seed=15): import loopy as lp if dims == 2: @@ -216,9 +213,9 @@ def get_2d_knl(dtype): knl = lp.split_iname(knl, "i", 16, outer_tag="g.1", inner_tag="l.1") knl = lp.split_iname(knl, "j", 16, outer_tag="g.0", inner_tag="l.0") - return knl.executor(queue.context) + return knl.executor(actx.context) - _evt, result = get_2d_knl(dtype)(queue, n=n) + _evt, result = get_2d_knl(dtype)(actx.queue, n=n) result = [x.ravel() for x in result] @@ -264,9 +261,9 @@ def get_3d_knl(dtype): knl = lp.split_iname(knl, "j", 16, outer_tag="g.1", inner_tag="l.1") knl = lp.split_iname(knl, "k", 16, outer_tag="g.0", inner_tag="l.0") - return knl.executor(queue.context) + return knl.executor(actx.context) - _evt, result = get_3d_knl(dtype)(queue, n=n) + _evt, result = get_3d_knl(dtype)(actx.queue, n=n) result = [x.ravel() for x in result] @@ -275,14 +272,14 @@ def get_3d_knl(dtype): raise NotImplementedError -def make_rotated_uniform_particle_array(queue, nparticles, dims, dtype, seed=15): +def make_rotated_uniform_particle_array(actx, nparticles, dims, dtype, seed=15): raise NotImplementedError # }}} -def particle_array_to_host(parray): - return np.array([x.get() for x in parray], order="F").T +def particle_array_to_host(actx, particles): + return np.array([actx.to_numpy(x) for x in particles], order="F").T # {{{ host/device data storage @@ -466,8 +463,12 @@ def get_type_moniker(dtype: np.dtype[Any]): class GappyCopyAndMapKernel: - def __init__(self, context: cl.Context): - self.context: cl.Context = context + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx: PyOpenCLArrayContext = array_context + + @property + def context(self): + return self._setup_actx.queue.context @memoize_method def _get_kernel(self, dtype, src_index_dtype, dst_index_dtype, @@ -505,8 +506,8 @@ def _get_kernel(self, dtype, src_index_dtype, dst_index_dtype, name="gappy_copy_and_map") # NOTE: Order of positional args should match realloc_array() - def __call__(self, queue, allocator, new_shape, ary, src_indices=None, - dst_indices=None, map_values=None, zero_fill=False, + def __call__(self, actx, new_shape, ary, src_indices=None, + dst_indices=None, map_values=None, zero_fill=None, wait_for=None, range=None, debug=False): """Compresses box info arrays after empty leaf pruning and, optionally, maps old box IDs to new box IDs (if the array being operated on contains @@ -527,19 +528,18 @@ def __call__(self, queue, allocator, new_shape, ary, src_indices=None, elif have_src_indices: range = slice(src_indices.shape[0]) if debug: - assert int(cl_array.max(src_indices).get()) < len(ary) + assert int(actx.to_numpy(actx.np.amax(src_indices))) < len(ary) elif have_dst_indices: range = slice(dst_indices.shape[0]) if debug: - assert int(cl_array.max(dst_indices).get()) < new_shape - - if zero_fill: # noqa: SIM108 - array_maker = cl_array.zeros - else: - array_maker = cl_array.empty + assert int(actx.to_numpy(actx.np.amax(dst_indices))) < new_shape - result = array_maker(queue, new_shape, ary.dtype, allocator=allocator) + if zero_fill is not None: + from warnings import warn + warn("Setting 'zero_fill' has no effect and will become an error in 2025.", + DeprecationWarning, stacklevel=2) + result = actx.np.zeros(new_shape, ary.dtype) kernel = self._get_kernel(ary.dtype, src_indices.dtype if have_src_indices else None, dst_indices.dtype if have_dst_indices else None, @@ -552,7 +552,7 @@ def __call__(self, queue, allocator, new_shape, ary, src_indices=None, args += (dst_indices,) if have_dst_indices else () args += (map_values,) if have_map_values else () - evt = kernel(*args, queue=queue, range=range, wait_for=wait_for) + evt = kernel(*args, queue=actx.queue, range=range, wait_for=wait_for) return result, evt @@ -577,9 +577,12 @@ def __call__(self, queue, allocator, new_shape, ary, src_indices=None, class MapValuesKernel: + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx = array_context - def __init__(self, context): - self.context: cl.Context = context + @property + def context(self): + return self._setup_actx.queue.context @memoize_method def _get_kernel(self, dst_dtype, src_dtype): @@ -693,8 +696,12 @@ class MaskCompressorKernel: """ .. automethod:: __call__ """ - def __init__(self, context): - self.context = context + def __init__(self, array_context: PyOpenCLArrayContext): + self._setup_actx = array_context + + @property + def context(self): + return self._setup_actx.context @memoize_method def get_list_compressor_kernel(self, mask_dtype, list_dtype): @@ -725,7 +732,7 @@ def get_matrix_compressor_kernel(self, mask_dtype, list_dtype): ], name_prefix="compress_matrix") - def __call__(self, queue, mask, list_dtype=None): + def __call__(self, actx, mask, list_dtype=None): """Convert a mask to a list in :ref:`csr` format. :arg mask: Either a 1D or 2D array. @@ -747,7 +754,7 @@ def __call__(self, queue, mask, list_dtype=None): if len(mask.shape) == 1: knl = self.get_list_compressor_kernel(mask.dtype, list_dtype) - result, evt = knl(queue, mask.shape[0], mask.data) + result, evt = knl(actx.queue, mask.shape[0], mask.data) return (result["output"].lists, evt) elif len(mask.shape) == 2: # FIXME: This is efficient for small column sizes but may not be @@ -755,7 +762,7 @@ def __call__(self, queue, mask, list_dtype=None): knl = self.get_matrix_compressor_kernel(mask.dtype, list_dtype) size = mask.dtype.itemsize assert size > 0 - result, evt = knl(queue, mask.shape[0], mask.shape[1], + result, evt = knl(actx.queue, mask.shape[0], mask.shape[1], mask.strides[0] // size, mask.strides[1] // size, mask.data) return (result["output"].starts, result["output"].lists, evt) From 98cb7174e5c4a08fe21dbfa9fdcb7d99645d8b8b Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Wed, 22 Jun 2022 14:29:05 +0300 Subject: [PATCH 10/34] port tree_build to arraycontext --- boxtree/tree_build.py | 413 ++++++++++++++++++++++-------------------- 1 file changed, 218 insertions(+), 195 deletions(-) diff --git a/boxtree/tree_build.py b/boxtree/tree_build.py index 96b08bf8..0e581d3c 100644 --- a/boxtree/tree_build.py +++ b/boxtree/tree_build.py @@ -51,7 +51,6 @@ THE SOFTWARE. """ - import logging from functools import partial from itertools import pairwise @@ -59,19 +58,18 @@ import numpy as np -import pyopencl as cl -import pyopencl.array as cl_array -import pytools.obj_array as obj_array -from pytools import DebugProcessLogger, ProcessLogger, memoize_method - -from boxtree.tree import Tree +from pytools import DebugProcessLogger, ProcessLogger, memoize_method, obj_array if TYPE_CHECKING: + from arraycontext import Array from numpy.typing import NDArray - from pytools.obj_array import ObjectArray1D + import pyopencl as cl + from pyopencl.cl_array import Allocator + from pyopencl.typing import WaitList + from boxtree.array_context import PyOpenCLArrayContext logger = logging.getLogger(__name__) @@ -96,26 +94,26 @@ class TreeBuilder: .. automethod:: __call__ """ - def __init__(self, context): - """ - :arg context: A :class:`pyopencl.Context`. - """ + morton_nr_dtype = np.dtype(np.int8) + box_level_dtype = np.dtype(np.uint8) + ROOT_EXTENT_STRETCH_FACTOR = 1e-4 - self.context: cl.Context = context + def __init__(self, array_context: PyOpenCLArrayContext) -> None: + self._setup_actx: PyOpenCLArrayContext = array_context from boxtree.bounding_box import BoundingBoxFinder - self.bbox_finder = BoundingBoxFinder(self.context) + self.bbox_finder = BoundingBoxFinder(array_context) # This is used to map box IDs and compress box lists in empty leaf # pruning. from boxtree.tools import GappyCopyAndMapKernel, MapValuesKernel - self.gappy_copy_and_map = GappyCopyAndMapKernel(self.context) - self.map_values_kernel = MapValuesKernel(self.context) + self.gappy_copy_and_map = GappyCopyAndMapKernel(array_context) + self.map_values_kernel = MapValuesKernel(array_context) - morton_nr_dtype = np.dtype(np.int8) - box_level_dtype = np.dtype(np.uint8) - ROOT_EXTENT_STRETCH_FACTOR = 1e-4 + @property + def context(self): + return self._setup_actx.queue.context @memoize_method def get_kernel_info(self, dimensions, coord_dtype, @@ -133,24 +131,23 @@ def get_kernel_info(self, dimensions, coord_dtype, # {{{ run control def __call__(self, - queue: cl.CommandQueue, - particles: ObjectArray1D[cl_array.Array], + actx: PyOpenCLArrayContext, + particles: obj_array.ObjectArray1D[Array], kind: TreeKind = "adaptive", max_particles_in_box: int | None = None, - allocator: cl_array.Allocator | None = None, + allocator: Allocator | None = None, debug: bool = False, - targets: ObjectArray1D[cl_array.Array] | None = None, - source_radii: cl_array.Array | None = None, - target_radii: cl_array.Array | None = None, + targets: obj_array.ObjectArray1D[Array] | None = None, + source_radii: Array | None = None, + target_radii: Array | None = None, stick_out_factor: float | None = None, refine_weights=None, max_leaf_refine_weight=None, - wait_for: cl.WaitList = None, + wait_for: WaitList = None, extent_norm: ExtentNorm | None = None, bbox: NDArray[np.floating] | None = None, **kwargs): """ - :arg queue: a :class:`pyopencl.CommandQueue` instance :arg particles: an object array of (XYZ) point coordinate arrays. :arg kind: One of the following strings: @@ -164,15 +161,14 @@ def __call__(self, :arg targets: an object array of (XYZ) point coordinate arrays or ``None``. If ``None``, *particles* act as targets, too. Must have the same (inner) dtype as *particles*. - :arg source_radii: If not *None*, a :class:`pyopencl.array.Array` of the - same dtype as *particles*. + :arg source_radii: If not *None*, an arra of the same dtype as *particles*. If this is given, *targets* must also be given, i.e. sources and targets must be separate. See :ref:`extent`. :arg target_radii: Like *source_radii*, but for targets. :arg stick_out_factor: See :attr:`Tree.stick_out_factor` and :ref:`extent`. - :arg refine_weights: If not *None*, a :class:`pyopencl.array.Array` of the + :arg refine_weights: If not *None*, an array of the type :class:`numpy.int32`. A box will be split if it has a cumulative refine_weight greater than *max_leaf_refine_weight*. If this is given, *max_leaf_refine_weight* must also be given and *max_particles_in_box* @@ -205,6 +201,12 @@ def __call__(self, management. """ + if allocator is not None: + from warnings import warn + warn("Passing in 'allocator' is deprecated. The allocator of the " + "array context 'actx' is used throughout.", + DeprecationWarning, stacklevel=2) + # {{{ input processing if kind not in ["adaptive", "adaptive-level-restricted", "non-adaptive"]: @@ -276,19 +278,21 @@ def __call__(self, # }}} - empty = partial(cl_array.empty, queue, allocator=allocator) - def zeros(shape, dtype): - result = cl_array.zeros(queue, shape, dtype, allocator=allocator) + result = actx.np.zeros(shape, dtype) + if result.events: event, = result.events else: from numbers import Number if isinstance(shape, Number): shape = (shape,) + from pytools import product assert product(shape) == 0 - event = cl.enqueue_marker(queue) + + from pyopencl import enqueue_marker + event = enqueue_marker(actx.queue) return result, event @@ -311,7 +315,7 @@ def zeros(shape, dtype): srcntgts = particles else: srcntgts = obj_array.new_1d([ - p.with_queue(queue).copy() for p in particles + actx.np.copy(actx.thaw(p)) for p in particles ]) assert source_radii is None @@ -335,7 +339,7 @@ def zeros(shape, dtype): def combine_srcntgt_arrays(ary1, ary2=None): dtype = ary1.dtype if ary2 is None else ary2.dtype - result = empty(nsrcntgts, dtype) + result = actx.np.zeros(nsrcntgts, dtype) if (ary1 is None) or (ary2 is None): result.fill(0) @@ -362,8 +366,9 @@ def combine_srcntgt_arrays(ary1, ary2=None): del particles - user_srcntgt_ids = cl_array.arange(queue, nsrcntgts, dtype=particle_id_dtype, - allocator=allocator) + user_srcntgt_ids = actx.from_numpy( + np.arange(nsrcntgts, dtype=particle_id_dtype) + ) evt, = user_srcntgt_ids.events waitlist.append(evt) @@ -386,28 +391,31 @@ def combine_srcntgt_arrays(ary1, ary2=None): raise ValueError("must specify either max_particles_in_box or " "refine_weights/max_leaf_refine_weight") elif specified_max_particles_in_box: - refine_weights = ( - cl_array.empty( - queue, nsrcntgts, refine_weight_dtype, allocator=allocator) - .fill(1)) - event, = refine_weights.events - prep_events.append(event) + refine_weights = actx.np.zeros(nsrcntgts, refine_weight_dtype) + refine_weights.fill(1) + + prep_events.extend(refine_weights.events) max_leaf_refine_weight = max_particles_in_box elif specified_refine_weights: # noqa: SIM102 if refine_weights.dtype != refine_weight_dtype: raise TypeError( f"refine_weights must have dtype '{refine_weight_dtype}'") - if max_leaf_refine_weight < cl_array.max(refine_weights).get(): + if max_leaf_refine_weight <= 0: + raise ValueError("max_leaf_refine_weight must be positive") + + max_refine_weights = actx.to_numpy(actx.np.amax(refine_weights)) + if max_leaf_refine_weight < max_refine_weights: raise ValueError( "entries of refine_weights cannot exceed max_leaf_refine_weight") - if cl_array.min(refine_weights).get() < 0: + + min_refine_weights = actx.to_numpy(actx.np.amin(refine_weights)) + if min_refine_weights < 0: raise ValueError("all entries of refine_weights must be nonnegative") - if max_leaf_refine_weight <= 0: - raise ValueError("max_leaf_refine_weight must be positive") - total_refine_weight = cl_array.sum( - refine_weights, dtype=np.dtype(np.int64)).get() + total_refine_weight = actx.to_numpy( + actx.np.sum(refine_weights, dtype=np.dtype(np.int64)) + ) del max_particles_in_box del specified_max_particles_in_box @@ -417,10 +425,12 @@ def combine_srcntgt_arrays(ary1, ary2=None): # {{{ find and process bounding box - if bbox is None: - bbox, _ = self.bbox_finder(srcntgts, srcntgt_radii, wait_for=waitlist) - bbox = bbox.get() + bbox_auto, _ = self.bbox_finder( + actx, srcntgts, srcntgt_radii, wait_for=wait_for) + bbox_auto = actx.to_numpy(bbox_auto) + if bbox is None: + bbox = bbox_auto root_extent = max( bbox["max_"+ax] - bbox["min_"+ax] for ax in axis_names) * (1+TreeBuilder.ROOT_EXTENT_STRETCH_FACTOR) @@ -435,11 +445,6 @@ def combine_srcntgt_arrays(ary1, ary2=None): for i, ax in enumerate(axis_names): bbox["max_"+ax] = bbox_max[i] else: - # Validate that bbox is a superset of particle-derived bbox - bbox_auto, _ = self.bbox_finder( - srcntgts, srcntgt_radii, wait_for=waitlist) - bbox_auto = bbox_auto.get() - # Convert unstructured numpy array to bbox_type if isinstance(bbox, np.ndarray): if len(bbox) == dimensions: @@ -480,11 +485,12 @@ def combine_srcntgt_arrays(ary1, ary2=None): # box-local morton bin counts for each particle at the current level # only valid from scan -> split'n'sort - morton_bin_counts = empty(nsrcntgts, dtype=knl_info.morton_bin_count_dtype) + morton_bin_counts = actx.np.zeros( + nsrcntgts, dtype=knl_info.morton_bin_count_dtype) # (local) morton nrs for each particle at the current level # only valid from scan -> split'n'sort - morton_nrs = empty(nsrcntgts, dtype=self.morton_nr_dtype) + morton_nrs = actx.np.zeros(nsrcntgts, dtype=self.morton_nr_dtype) # 0/1 segment flags # invariant to sorting once set @@ -561,8 +567,7 @@ def combine_srcntgt_arrays(ary1, ary2=None): prep_events.append(evt) # Initialize box 0 to contain all particles - box_srcntgt_counts_cumul[0].fill( - nsrcntgts, queue=queue, wait_for=[evt]) + box_srcntgt_counts_cumul[0].fill(nsrcntgts, queue=actx.queue, wait_for=[evt]) # box -> whether the box has a child. FIXME: use smaller integer type box_has_children, evt = zeros(nboxes_guess, dtype=np.dtype(np.int32)) @@ -576,8 +581,10 @@ def combine_srcntgt_arrays(ary1, ary2=None): prep_events.append(evt) # set parent of root box to itself - evt = cl.enqueue_copy( - queue, box_parent_ids.data, np.zeros((), dtype=box_parent_ids.dtype)) + from pyopencl import enqueue_copy + evt = enqueue_copy( + actx.queue, box_parent_ids.data, + np.zeros((), dtype=box_parent_ids.dtype)) prep_events.append(evt) # 2*(num bits in the significand) @@ -595,9 +602,9 @@ def combine_srcntgt_arrays(ary1, ary2=None): # }}} - def fin_debug(s): + def debug_with_finish(s): if debug: - queue.finish() + actx.queue.finish() logger.debug(s) @@ -657,6 +664,7 @@ def fin_debug(s): # regarding this). This flag is set to True when that happens. final_level_restrict_iteration = False + from pyopencl import wait_for_events while level: if debug: # More invariants: @@ -684,7 +692,7 @@ def fin_debug(s): + ((srcntgt_radii,) if srcntgts_have_extent else ()) ) - fin_debug("morton count scan") + debug_with_finish("morton count scan") morton_count_args = common_args if srcntgts_have_extent: @@ -692,11 +700,11 @@ def fin_debug(s): # writes: box_morton_bin_counts evt = knl_info.morton_count_scan( - *morton_count_args, queue=queue, size=nsrcntgts, + *morton_count_args, queue=actx.queue, size=nsrcntgts, wait_for=waitlist) waitlist = [evt] - fin_debug("split box id scan") + debug_with_finish("split box id scan") # writes: box_has_children, split_box_ids evt = knl_info.split_box_id_scan( @@ -716,7 +724,7 @@ def fin_debug(s): split_box_ids, have_oversize_split_box, - queue=queue, + queue=actx.queue, size=level_start_box_nrs[level], wait_for=waitlist) waitlist = [evt] @@ -730,7 +738,7 @@ def fin_debug(s): last_box_on_prev_level = level_start_box_id - 1 new_level_used_box_counts.append( # FIXME: Get this all at once. - int(split_box_ids[last_box_on_prev_level].get()) + int(actx.to_numpy(split_box_ids[last_box_on_prev_level])) - level_start_box_id) # New leaf count = @@ -775,7 +783,7 @@ def fin_debug(s): # have_oversize_split_box = 0), then we do not need to allocate any # extra space, since no new leaves can be created at the bottom # level. - if knl_info.level_restrict and have_oversize_split_box.get(): + if knl_info.level_restrict and actx.to_numpy(have_oversize_split_box): # Currently undocumented. lr_lookbehind_levels = kwargs.get("lr_lookbehind", 1) minimal_new_level_length += sum( @@ -824,18 +832,17 @@ def fin_debug(s): old_box_count = level_start_box_nrs[-1] # Where should I put this box? - dst_box_id = cl_array.empty(queue, - shape=old_box_count, dtype=box_id_dtype) + dst_box_id = actx.np.zeros(shape=old_box_count, dtype=box_id_dtype) for level_start, new_level_start, level_len in zip( level_start_box_nrs[:-1], new_level_start_box_nrs[:-1], curr_upper_level_lengths, strict=True): - dst_box_id[level_start:level_start + level_len] = \ - cl_array.arange(queue, - new_level_start, - new_level_start + level_len, - dtype=box_id_dtype) + dst_box_id[level_start:level_start+level_len] = actx.from_numpy( + np.arange(new_level_start, + new_level_start + level_len, + dtype=box_id_dtype) + ) waitlist.extend(dst_box_id.events) @@ -875,28 +882,27 @@ def fin_debug(s): # {{{ reallocate and/or renumber boxes if necessary if level_start_box_nrs_updated or nboxes_new > nboxes_guess: - fin_debug("starting nboxes_guess increase") + debug_with_finish("starting nboxes_guess increase") while nboxes_guess < nboxes_new: nboxes_guess *= 2 def my_realloc_nocopy(ary, shape=nboxes_guess): - return cl_array.empty(queue, allocator=allocator, - shape=shape, dtype=ary.dtype) + return actx.np.zeros(shape=shape, dtype=ary.dtype) def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): - result = cl_array.zeros(queue, allocator=allocator, - shape=shape, dtype=ary.dtype) + result = actx.np.zeros(shape=shape, dtype=ary.dtype) return result, result.events[0] - my_realloc = partial(realloc_array, - queue, allocator, nboxes_guess, wait_for=waitlist) - my_realloc_zeros = partial(realloc_array, - queue, allocator, nboxes_guess, zero_fill=True, - wait_for=waitlist) - my_realloc_zeros_and_renumber = partial(realloc_and_renumber_array, - queue, allocator, nboxes_guess, zero_fill=True, - wait_for=waitlist) + my_realloc = partial( + realloc_array, + actx, nboxes_guess, wait_for=waitlist) + my_realloc_zeros = partial( + realloc_array, + actx, nboxes_guess, wait_for=waitlist) + my_realloc_zeros_and_renumber = partial( + realloc_and_renumber_array, + actx, nboxes_guess, wait_for=waitlist) resize_events = [] @@ -907,8 +913,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): # only the box morton bin counts of boxes on the level # currently being processed are written-but we need to # retain the box morton bin counts from the higher levels. - box_morton_bin_counts, evt = my_realloc_zeros( - box_morton_bin_counts) + box_morton_bin_counts, evt = my_realloc_zeros(box_morton_bin_counts) resize_events.append(evt) # force_split_box is unused unless level restriction is enabled. @@ -943,7 +948,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): resize_events.append(evt) else: box_levels, evt = my_realloc_zeros_nocopy(box_levels) - cl.wait_for_events([evt]) + wait_for_events([evt]) for box_level, (level_start, level_end) in enumerate( pairwise(level_start_box_nrs)): box_levels[level_start:level_end].fill(box_level) @@ -1009,9 +1014,11 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): if level_nboxes == 0: assert leaf_count == 0 continue - nleaves_actual = level_nboxes - int( - cl_array.sum(box_has_children[ - level_start:level_start + level_nboxes]).get()) + nleaves_actual = level_nboxes - int(actx.to_numpy( + actx.np.sum( + box_has_children[level_start:level_start + level_nboxes] + ) + )) assert leaf_count == nleaves_actual # Can't del in Py2.7 - see note below @@ -1038,7 +1045,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): waitlist = [evt] - fin_debug("box splitter") + debug_with_finish("box splitter") # Mark the levels of boxes added for padding (these were not updated # by the box splitter kernel). @@ -1049,20 +1056,20 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): if debug: box_levels.finish() - level_bl_chunk = box_levels.get()[ + level_bl_chunk = actx.to_numpy(box_levels)[ level_start_box_nrs[-2]:level_start_box_nrs[-1]] - assert (level_bl_chunk == level).all() + assert np.all(level_bl_chunk == level) del level_bl_chunk if debug: - assert (box_srcntgt_starts.get() < nsrcntgts).all() + assert np.all(actx.to_numpy(box_srcntgt_starts) < nsrcntgts) # }}} # {{{ renumber particles within split boxes - new_user_srcntgt_ids = cl_array.empty_like(user_srcntgt_ids) - new_srcntgt_box_ids = cl_array.empty_like(srcntgt_box_ids) + new_user_srcntgt_ids = actx.np.zeros_like(user_srcntgt_ids) + new_srcntgt_box_ids = actx.np.zeros_like(srcntgt_box_ids) particle_renumberer_args = ( *common_args, @@ -1076,7 +1083,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): waitlist = [evt] - fin_debug("particle renumbering") + debug_with_finish("particle renumbering") user_srcntgt_ids = new_user_srcntgt_ids del new_user_srcntgt_ids @@ -1098,7 +1105,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): # reallocation code. In order to fix this issue, the box # numbering and reallocation code needs to be accessible after # the final level restriction is done. - assert int(have_oversize_split_box.get()) == 0 + assert int(actx.to_numpy(have_oversize_split_box)) == 0 assert level_used_box_counts[-1] == 0 del level_used_box_counts[-1] del level_start_box_nrs[-1] @@ -1155,10 +1162,11 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): if debug: force_split_box.finish() - boxes_split.append(int(cl_array.sum( - force_split_box[upper_level_slice]).get())) + boxes_split.append(int(actx.to_numpy( + actx.np.sum(force_split_box[upper_level_slice]) + ))) - if int(have_upper_level_split_box.get()) == 0: + if int(actx.to_numpy(have_upper_level_split_box)) == 0: break did_upper_level_split = True @@ -1173,7 +1181,8 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): logger.debug("level %d: %d boxes split", level_, nboxes_split) del boxes_split - if int(have_oversize_split_box.get()) == 0 and did_upper_level_split: + if (int(actx.to_numpy(have_oversize_split_box)) == 0 + and did_upper_level_split): # We are in the situation where there are boxes left to # split on upper levels, and the level loop is done creating # lower levels. @@ -1186,7 +1195,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): # }}} - if not int(have_oversize_split_box.get()): + if not int(actx.to_numpy(have_oversize_split_box)): logger.debug("no boxes left to split") break @@ -1196,9 +1205,11 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): # {{{ check that nonchild part of box_morton_bin_counts is consistent if debug and 0: - h_box_morton_bin_counts = box_morton_bin_counts.get() - h_box_srcntgt_counts_cumul = box_srcntgt_counts_cumul.get() - h_box_child_ids = tuple(bci.get() for bci in box_child_ids) + h_box_morton_bin_counts = actx.to_numpy(box_morton_bin_counts) + h_box_srcntgt_counts_cumul = actx.to_numpy(box_srcntgt_counts_cumul) + h_box_child_ids = tuple( + actx.to_numpy(bci) for bci in box_child_ids + ) has_mismatch = False for ibox in range(level_start_box_nrs[-1]): @@ -1245,8 +1256,8 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): # {{{ extract number of non-child srcntgts from box morton counts if srcntgts_have_extent: - box_srcntgt_counts_nonchild = empty(nboxes, particle_id_dtype) - fin_debug("extract non-child srcntgt count") + box_srcntgt_counts_nonchild = actx.np.zeros(nboxes, particle_id_dtype) + debug_with_finish("extract non-child srcntgt count") assert len(level_start_box_nrs) >= 2 highest_possibly_split_box_nr = level_start_box_nrs[-2] @@ -1266,11 +1277,13 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): del highest_possibly_split_box_nr if debug: - h_box_srcntgt_counts_nonchild = box_srcntgt_counts_nonchild.get() - h_box_srcntgt_counts_cumul = box_srcntgt_counts_cumul.get() + h_box_srcntgt_counts_nonchild = ( + actx.to_numpy(box_srcntgt_counts_nonchild)) + h_box_srcntgt_counts_cumul = actx.to_numpy(box_srcntgt_counts_cumul) - assert (h_box_srcntgt_counts_nonchild - <= h_box_srcntgt_counts_cumul[:nboxes]).all() + assert np.all( + h_box_srcntgt_counts_nonchild + <= h_box_srcntgt_counts_cumul[:nboxes]) del h_box_srcntgt_counts_nonchild @@ -1288,7 +1301,7 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): if prune_empty_leaves: # What is the original index of this box? - src_box_id = empty(nboxes, box_id_dtype) + src_box_id = actx.np.zeros(nboxes, box_id_dtype) # Where should I put this box? # @@ -1297,37 +1310,39 @@ def my_realloc_zeros_nocopy(ary, shape=nboxes_guess): dst_box_id, evt = zeros(nboxes, box_id_dtype) waitlist.append(evt) - fin_debug("find prune indices") + debug_with_finish("find prune indices") - nboxes_post_prune_dev = empty((), dtype=box_id_dtype) + nboxes_post_prune_dev = actx.np.zeros((), dtype=box_id_dtype) evt = knl_info.find_prune_indices_kernel( box_srcntgt_counts_cumul, src_box_id, dst_box_id, nboxes_post_prune_dev, size=nboxes, wait_for=waitlist) waitlist = [evt] - nboxes_post_prune = int(nboxes_post_prune_dev.get()) + nboxes_post_prune = int(actx.to_numpy(nboxes_post_prune_dev)) logger.debug("%d boxes after pruning " - "(%d empty leaves and/or unused boxes removed)", - nboxes_post_prune, nboxes - nboxes_post_prune) + "(%d empty leaves and/or unused boxes removed)", + nboxes_post_prune, nboxes - nboxes_post_prune) should_prune = True elif knl_info.level_restrict: # Remove unused boxes from the tree. - src_box_id = empty(nboxes, box_id_dtype) - dst_box_id = empty(nboxes, box_id_dtype) + src_box_id = actx.np.zeros(nboxes, box_id_dtype) + dst_box_id = actx.np.zeros(nboxes, box_id_dtype) - new_level_start_box_nrs = np.empty_like(level_start_box_nrs) + new_level_start_box_nrs = np.zeros_like(level_start_box_nrs) new_level_start_box_nrs[0] = 0 new_level_start_box_nrs[1:] = np.cumsum(level_used_box_counts) for level_start, new_level_start, level_used_box_count in zip( level_start_box_nrs[:-1], new_level_start_box_nrs[:-1], level_used_box_counts, strict=True): + def make_slice(start, offset=level_used_box_count): return slice(start, start + offset) def make_arange(start, offset=level_used_box_count): - return cl_array.arange( - queue, start, start + offset, dtype=box_id_dtype) + return actx.from_numpy( + np.arange(start, start + offset, dtype=box_id_dtype) + ) src_box_id[make_slice(new_level_start)] = make_arange(level_start) dst_box_id[make_slice(level_start)] = make_arange(new_level_start) @@ -1345,7 +1360,7 @@ def make_arange(start, offset=level_used_box_count): prune_events = [] prune_empty = partial(self.gappy_copy_and_map, - queue, allocator, nboxes_post_prune, + actx, nboxes_post_prune, src_indices=src_box_id, range=slice(nboxes_post_prune), debug=debug) @@ -1356,7 +1371,7 @@ def make_arange(start, offset=level_used_box_count): prune_events.append(evt) if debug and prune_empty_leaves: - assert (box_srcntgt_counts_cumul.get() > 0).all() + assert np.all(actx.to_numpy(box_srcntgt_counts_cumul) > 0) srcntgt_box_ids, evt = self.map_values_kernel( dst_box_id, srcntgt_box_ids) @@ -1390,10 +1405,11 @@ def make_arange(start, offset=level_used_box_count): evt = knl_info.find_level_box_counts_kernel( box_levels, level_used_box_counts_dev) - cl.wait_for_events([evt]) + wait_for_events([evt]) nlevels = len(level_used_box_counts) - level_used_box_counts = level_used_box_counts_dev[:nlevels].get() + level_used_box_counts = ( + actx.to_numpy(level_used_box_counts_dev[:nlevels])) level_start_box_nrs = [0] level_start_box_nrs.extend(np.cumsum(level_used_box_counts)) @@ -1418,7 +1434,7 @@ def make_arange(start, offset=level_used_box_count): if targets is None: from boxtree.tools import reverse_index_array user_source_ids = user_srcntgt_ids - sorted_target_ids = reverse_index_array(user_srcntgt_ids) + sorted_target_ids = reverse_index_array(actx, user_srcntgt_ids) box_source_starts = box_target_starts = box_srcntgt_starts box_source_counts_cumul = box_target_counts_cumul = \ @@ -1427,18 +1443,18 @@ def make_arange(start, offset=level_used_box_count): box_source_counts_nonchild = box_target_counts_nonchild = \ box_srcntgt_counts_nonchild else: - source_numbers = empty(nsrcntgts, particle_id_dtype) + source_numbers = actx.np.zeros(nsrcntgts, particle_id_dtype) - fin_debug("source counter") + debug_with_finish("source counter") evt = knl_info.source_counter(user_srcntgt_ids, nsources, - source_numbers, queue=queue, allocator=allocator, + source_numbers, queue=actx.queue, allocator=actx.allocator, wait_for=waitlist) waitlist = [evt] - user_source_ids = empty(nsources, particle_id_dtype) + user_source_ids = actx.np.zeros(nsources, particle_id_dtype) # srcntgt_target_ids is temporary until particle permutation is done - srcntgt_target_ids = empty(ntargets, particle_id_dtype) - sorted_target_ids = empty(ntargets, particle_id_dtype) + srcntgt_target_ids = actx.np.zeros(ntargets, particle_id_dtype) + sorted_target_ids = actx.np.zeros(ntargets, particle_id_dtype) # need to use zeros because parent boxes won't be initialized box_source_starts, evt = zeros(nboxes_post_prune, particle_id_dtype) @@ -1461,7 +1477,7 @@ def make_arange(start, offset=level_used_box_count): nboxes_post_prune, particle_id_dtype) waitlist.append(evt) - fin_debug("source and target index finder") + debug_with_finish("source and target index finder") evt = knl_info.source_and_target_index_finder(*( # input: ( @@ -1485,31 +1501,32 @@ def make_arange(start, offset=level_used_box_count): box_target_counts_nonchild, # pylint: disable=possibly-used-before-assignment ) if srcntgts_have_extent else ()) ), - queue=queue, range=slice(nsrcntgts), + queue=actx.queue, range=slice(nsrcntgts), wait_for=waitlist) waitlist = [evt] if srcntgts_have_extent: # noqa: SIM102 if debug: - assert ( - box_srcntgt_counts_nonchild.get() - == (box_source_counts_nonchild - + box_target_counts_nonchild).get()).all() + assert np.all(actx.to_numpy( + box_srcntgt_counts_nonchild + == (box_source_counts_nonchild + box_target_counts_nonchild) + )) if debug: - usi_host = user_source_ids.get() - assert (usi_host < nsources).all() - assert (usi_host >= 0).all() + usi_host = actx.to_numpy(user_source_ids) + assert np.all(usi_host < nsources) + assert np.all(usi_host >= 0) del usi_host - sti_host = srcntgt_target_ids.get() - assert (sti_host < nsources+ntargets).all() - assert (nsources <= sti_host).all() + sti_host = actx.to_numpy(srcntgt_target_ids) + assert np.all(sti_host < nsources+ntargets) + assert np.all(nsources <= sti_host) del sti_host - assert (box_source_counts_cumul.get() - + box_target_counts_cumul.get() - == box_srcntgt_counts_cumul.get()).all() + assert np.all(actx.to_numpy( + box_source_counts_cumul + box_target_counts_cumul + == box_srcntgt_counts_cumul + )) del source_numbers @@ -1522,10 +1539,9 @@ def make_arange(start, offset=level_used_box_count): # {{{ permute and source/target-split (if necessary) particle array if targets is None: - sources = targets = obj_array.new_1d([ - cl_array.empty_like(pt) for pt in srcntgts]) + sources = targets = actx.np.zeros_like(srcntgts) - fin_debug("srcntgt permuter (particles)") + debug_with_finish("srcntgt permuter (particles)") evt = knl_info.srcntgt_permuter( user_srcntgt_ids, *(tuple(srcntgts) + tuple(sources)), @@ -1536,34 +1552,37 @@ def make_arange(start, offset=level_used_box_count): else: sources = obj_array.new_1d([ - empty(nsources, coord_dtype) for i in range(dimensions)]) - fin_debug("srcntgt permuter (sources)") + actx.np.zeros(nsources, coord_dtype) for i in range(dimensions) + ]) + debug_with_finish("srcntgt permuter (sources)") evt = knl_info.srcntgt_permuter( user_source_ids, *(tuple(srcntgts) + tuple(sources)), - queue=queue, range=slice(nsources), + queue=actx.queue, range=slice(nsources), wait_for=waitlist) waitlist = [evt] targets = obj_array.new_1d([ - empty(ntargets, coord_dtype) for i in range(dimensions)]) - fin_debug("srcntgt permuter (targets)") + actx.np.zeros(ntargets, coord_dtype) for i in range(dimensions) + ]) + debug_with_finish("srcntgt permuter (targets)") evt = knl_info.srcntgt_permuter( srcntgt_target_ids, *(tuple(srcntgts) + tuple(targets)), - queue=queue, range=slice(ntargets), + queue=actx.queue, range=slice(ntargets), wait_for=waitlist) waitlist = [evt] if srcntgt_radii is not None: - fin_debug("srcntgt permuter (source radii)") + import pyopencl.array as cl_array + debug_with_finish("srcntgt permuter (source radii)") source_radii = cl_array.take( - srcntgt_radii, user_source_ids, queue=queue, + srcntgt_radii, user_source_ids, queue=actx.queue, wait_for=waitlist) - fin_debug("srcntgt permuter (target radii)") + debug_with_finish("srcntgt permuter (target radii)") target_radii = cl_array.take( - srcntgt_radii, srcntgt_target_ids, queue=queue, + srcntgt_radii, srcntgt_target_ids, queue=actx.queue, wait_for=waitlist) waitlist = source_radii.events + target_radii.events @@ -1581,7 +1600,7 @@ def make_arange(start, offset=level_used_box_count): assert nlevels == len(level_used_box_counts) assert level + 1 == nlevels, (level+1, nlevels) if debug: - max_level = np.max(box_levels.get()) + max_level = np.max(actx.to_numpy(box_levels)) assert max_level + 1 == nlevels # {{{ gather box child ids, box centers @@ -1593,7 +1612,7 @@ def make_arange(start, offset=level_used_box_count): box_child_ids_new, evt = zeros((2**dimensions, aligned_nboxes), box_id_dtype) waitlist.append(evt) - box_centers_new = empty((dimensions, aligned_nboxes), coord_dtype) + box_centers_new = actx.np.zeros((dimensions, aligned_nboxes), coord_dtype) for mnr, child_row in enumerate(box_child_ids): box_child_ids_new[mnr, :nboxes_post_prune] = \ @@ -1604,7 +1623,7 @@ def make_arange(start, offset=level_used_box_count): box_centers_new[dim, :nboxes_post_prune] = center_row[:nboxes_post_prune] waitlist.extend(box_centers_new.events) - cl.wait_for_events(waitlist) + wait_for_events(waitlist) box_centers = box_centers_new box_child_ids = box_child_ids_new @@ -1617,7 +1636,7 @@ def make_arange(start, offset=level_used_box_count): # {{{ compute box flags from boxtree.tree import box_flags_enum - box_flags = empty(nboxes_post_prune, box_flags_enum.dtype) + box_flags = actx.np.zeros(nboxes_post_prune, box_flags_enum.dtype) if not srcntgts_have_extent: # If srcntgts_have_extent, then non-child counts have already been @@ -1656,7 +1675,7 @@ def make_arange(start, offset=level_used_box_count): nboxes_post_prune, particle_id_dtype) waitlist.append(evt) - fin_debug("compute box info") + debug_with_finish("compute box info") evt = knl_info.box_info_kernel( *( # input: @@ -1680,27 +1699,23 @@ def make_arange(start, offset=level_used_box_count): # {{{ compute box bounding box - fin_debug("finding box extents") + debug_with_finish("finding box extents") - box_source_bounding_box_min = cl_array.empty( - queue, (dimensions, aligned_nboxes), - dtype=coord_dtype) - box_source_bounding_box_max = cl_array.empty( - queue, (dimensions, aligned_nboxes), - dtype=coord_dtype) + box_source_bounding_box_min = actx.np.zeros( + (dimensions, aligned_nboxes), dtype=coord_dtype) + box_source_bounding_box_max = actx.np.zeros( + (dimensions, aligned_nboxes), dtype=coord_dtype) if sources_are_targets: box_target_bounding_box_min = box_source_bounding_box_min box_target_bounding_box_max = box_source_bounding_box_max else: - box_target_bounding_box_min = cl_array.empty( - queue, (dimensions, aligned_nboxes), - dtype=coord_dtype) - box_target_bounding_box_max = cl_array.empty( - queue, (dimensions, aligned_nboxes), - dtype=coord_dtype) + box_target_bounding_box_min = actx.np.zeros( + (dimensions, aligned_nboxes), dtype=coord_dtype) + box_target_bounding_box_max = actx.np.zeros( + (dimensions, aligned_nboxes), dtype=coord_dtype) - bogus_radii_array = cl_array.empty(queue, 1, dtype=coord_dtype) + bogus_radii_array = actx.np.zeros(1, dtype=coord_dtype) # nlevels-1 is the highest valid level index for level in range(nlevels-1, -1, -1): @@ -1752,7 +1767,7 @@ def make_arange(start, offset=level_used_box_count): *args, range=slice(start, stop), - queue=queue, wait_for=waitlist) + queue=actx.queue, wait_for=waitlist) waitlist = [evt] @@ -1766,8 +1781,13 @@ def make_arange(start, offset=level_used_box_count): if sources_have_extent: extra_tree_attrs.update(source_radii=source_radii) + else: + extra_tree_attrs.update(source_radii=None) + if targets_have_extent: extra_tree_attrs.update(target_radii=target_radii) + else: + extra_tree_attrs.update(target_radii=None) tree_build_proc.done( "%d levels, %d boxes, %d particles, box extent norm: %s, " @@ -1775,7 +1795,9 @@ def make_arange(start, offset=level_used_box_count): nlevels, len(box_parent_ids), nsrcntgts, srcntgts_extent_norm, max_leaf_refine_weight) - return Tree( + from boxtree.tree import Tree + + tree = Tree( # If you change this, also change the documentation # of what's in the tree, above. sources_are_targets=sources_are_targets, @@ -1787,13 +1809,12 @@ def make_arange(start, offset=level_used_box_count): coord_dtype=coord_dtype, box_level_dtype=self.box_level_dtype, + bounding_box=(bbox_min, bbox_max), root_extent=root_extent, stick_out_factor=stick_out_factor, extent_norm=srcntgts_extent_norm, - bounding_box=(bbox_min, bbox_max), - level_start_box_nrs=level_start_box_nrs, - level_start_box_nrs_dev=level_start_box_nrs_dev, + level_start_box_nrs=actx.from_numpy(level_start_box_nrs), sources=sources, targets=targets, @@ -1822,7 +1843,9 @@ def make_arange(start, offset=level_used_box_count): _is_pruned=prune_empty_leaves, **extra_tree_attrs - ).with_queue(None), evt + ) + + return actx.freeze(tree), evt # }}} From 5d41a92c2714c221608cc73081ba5ba8346786c0 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Wed, 22 Jun 2022 15:20:55 +0300 Subject: [PATCH 11/34] port tree_build_kernels to arraycontext --- boxtree/tree_build_kernels.py | 47 +++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/boxtree/tree_build_kernels.py b/boxtree/tree_build_kernels.py index f5e597e2..a6b27af8 100644 --- a/boxtree/tree_build_kernels.py +++ b/boxtree/tree_build_kernels.py @@ -23,20 +23,24 @@ """ import logging +from dataclasses import dataclass from functools import partial import numpy as np from mako.template import Template -from pyopencl.elementwise import ElementwiseTemplate -from pyopencl.scan import ScanTemplate -from pytools import Record, log_process, memoize +from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate +from pyopencl.scan import GenericScanKernel, ScanTemplate +from pytools import log_process, memoize from boxtree.tools import ( + ScalarArg, + VectorArg, coord_vec_subscript_code, get_coord_vec_dtype, get_type_moniker, ) +from boxtree.traversal import HELPER_FUNCTION_TEMPLATE, TRAVERSAL_PREAMBLE_MAKO_DEFS logger = logging.getLogger(__name__) @@ -123,8 +127,27 @@ # ----------------------------------------------------------------------------- -class _KernelInfo(Record): - pass +@dataclass(frozen=True) +class _KernelInfo: + particle_id_dtype: np.dtype + box_id_dtype: np.dtype + morton_bin_count_dtype: np.dtype + + morton_count_scan: GenericScanKernel + split_box_id_scan: GenericScanKernel + box_splitter_kernel: ElementwiseKernel + particle_renumberer_kernel: ElementwiseKernel + level_restrict: bool + level_restrict_kernel_builder: ElementwiseKernel | None + + extract_nonchild_srcntgt_count_kernel: ElementwiseKernel | None + find_prune_indices_kernel: GenericScanKernel + find_level_box_counts_kernel: GenericScanKernel + srcntgt_permuter: ElementwiseKernel + source_counter: GenericScanKernel + source_and_target_index_finder: ElementwiseKernel | None + box_info_kernel: ElementwiseKernel + box_extents_finder_kernel: ElementwiseKernel # {{{ data types @@ -799,9 +822,6 @@ def get_count_for_branch(known_bits): # {{{ level restrict kernel -from boxtree.traversal import TRAVERSAL_PREAMBLE_MAKO_DEFS - - LEVEL_RESTRICT_TPL = Template( TRAVERSAL_PREAMBLE_MAKO_DEFS + r"""//CL:mako// <%def name="my_load_center(name, box_id)"> @@ -935,8 +955,6 @@ def build_level_restrict_kernel(context, preamble_with_dtype_decls, from pyopencl.elementwise import ElementwiseKernel - from boxtree.traversal import HELPER_FUNCTION_TEMPLATE - return ElementwiseKernel( context, arguments=arguments, @@ -1402,7 +1420,7 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, if np.iinfo(box_id_dtype).min == 0: from warnings import warn warn("Careful with unsigned types for box_id_dtype. Some CL implementations " - "(notably Intel 2012) mis-implemnet unsigned operations, leading to " + "(notably Intel 2012) mis-implement unsigned operations, leading to " "incorrect results.", stacklevel=4) from pyopencl.tools import dtype_to_c_struct, dtype_to_ctype @@ -1473,7 +1491,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, + str(MORTON_NR_SCAN_PREAMBLE_TPL.render(**codegen_args)) ) - from boxtree.tools import ScalarArg, VectorArg common_arguments = ( [ # box-local morton bin counts for each particle at the current level @@ -1535,7 +1552,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, (ScalarArg(coord_dtype, "stick_out_factor")) ] - from pyopencl.scan import GenericScanKernel morton_count_scan = GenericScanKernel( context, morton_bin_count_dtype, arguments=morton_count_scan_arguments, @@ -1559,7 +1575,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, # {{{ split_box_id scan - from pyopencl.scan import GenericScanKernel split_box_id_scan = SPLIT_BOX_ID_SCAN_TPL.build( context, type_aliases=( @@ -1594,7 +1609,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, box_splitter_kernel_source = BOX_SPLITTER_KERNEL_TPL.render(**box_s_codegen_args) - from pyopencl.elementwise import ElementwiseKernel box_splitter_kernel = ElementwiseKernel( context, common_arguments @@ -1629,7 +1643,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, particle_renumberer_kernel_source = \ PARTICLE_RENUMBERER_KERNEL_TPL.render(**codegen_args) - from pyopencl.elementwise import ElementwiseKernel particle_renumberer_kernel = ElementwiseKernel( context, [*common_arguments, @@ -1681,7 +1694,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, # FIXME: Turn me into a scan template - from boxtree.tools import VectorArg find_prune_indices_kernel = GenericScanKernel( context, box_id_dtype, arguments=[ @@ -1755,7 +1767,6 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, # really a loss. # FIXME: make me a scan template - from pyopencl.scan import GenericScanKernel source_counter = GenericScanKernel( context, box_id_dtype, arguments=[ From 88732c815ce330298b8f822937e8e9073c6de64b Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Thu, 23 Jun 2022 17:18:30 +0300 Subject: [PATCH 12/34] port pyfmmlib_integration to arraycontext --- boxtree/pyfmmlib_integration.py | 41 ++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/boxtree/pyfmmlib_integration.py b/boxtree/pyfmmlib_integration.py index e1cd1469..c6cfaa0c 100644 --- a/boxtree/pyfmmlib_integration.py +++ b/boxtree/pyfmmlib_integration.py @@ -37,12 +37,9 @@ THE SOFTWARE. """ - -import logging - - -logger = logging.getLogger(__name__) import enum +import logging +from typing import TYPE_CHECKING import numpy as np @@ -53,6 +50,12 @@ from boxtree.timing import return_timing_data +if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext + +logger = logging.getLogger(__name__) + + # {{{ rotation data interface class FMMLibRotationDataInterface: @@ -83,8 +86,8 @@ class FMMLibRotationData(FMMLibRotationDataInterface): .. automethod:: __init__ """ - def __init__(self, queue, trav): - self.queue = queue + def __init__(self, array_context: PyOpenCLArrayContext, trav): + self._setup_actx = array_context self.trav = trav self.tree = trav.tree @@ -92,27 +95,27 @@ def __init__(self, queue, trav): @memoize_method def rotation_classes_builder(self): from boxtree.rotation_classes import RotationClassesBuilder - return RotationClassesBuilder(self.queue.context) + return RotationClassesBuilder(self._setup_actx) @memoize_method def build_rotation_classes_lists(self): - trav = self.trav.to_device(self.queue) - tree = self.tree.to_device(self.queue) - return self.rotation_classes_builder(self.queue, trav, tree)[0] + trav = self._setup_actx.from_numpy(self.trav) + tree = self._setup_actx.from_numpy(self.tree) + return self.rotation_classes_builder(self._setup_actx, trav, tree)[0] @memoize_method def m2l_rotation_lists(self): - return (self - .build_rotation_classes_lists() - .from_sep_siblings_rotation_classes - .get(self.queue)) + return self._setup_actx.to_numpy( + self.build_rotation_classes_lists() + .from_sep_siblings_rotation_classes, + ) @memoize_method def m2l_rotation_angles(self): - return (self - .build_rotation_classes_lists() - .from_sep_siblings_rotation_class_to_angle - .get(self.queue)) + return self._setup_actx.to_numpy( + self.build_rotation_classes_lists() + .from_sep_siblings_rotation_class_to_angle, + ) class FMMLibRotationDataNotSuppliedWarning(UserWarning): From 8ba132e4d16efd608aa8c787640fa50e37b699e3 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Thu, 23 Jun 2022 21:29:17 +0300 Subject: [PATCH 13/34] port cost to arraycontext --- boxtree/cost.py | 479 +++++++++++++++++++++++------------------------- 1 file changed, 231 insertions(+), 248 deletions(-) diff --git a/boxtree/cost.py b/boxtree/cost.py index f59162cc..f5a79619 100644 --- a/boxtree/cost.py +++ b/boxtree/cost.py @@ -61,28 +61,27 @@ .. autoclass:: FMMCostModel """ +from abc import ABC, abstractmethod +from collections.abc import Mapping from functools import partial from typing import TYPE_CHECKING, ClassVar import numpy as np from mako.template import Template -import pyopencl as cl -import pyopencl.array as cl_array from pymbolic import evaluate, var from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype -from pytools import memoize_method - - -Template = partial(Template, strict_undefined=True) - -from abc import ABC, abstractmethod +from pytools import keyed_memoize_method if TYPE_CHECKING: from collections.abc import Mapping + from boxtree.array_context import PyOpenCLArrayContext + +Template = partial(Template, strict_undefined=True) + # {{{ FMMTranslationCostModel @@ -224,6 +223,7 @@ class AbstractFMMCostModel(ABC): .. automethod:: get_ndirect_sources_per_target_box """ + def __init__( self, translation_cost_model_factory=make_pde_aware_translation_cost_model): @@ -235,28 +235,27 @@ def __init__( self.translation_cost_model_factory = translation_cost_model_factory @abstractmethod - def process_form_multipoles(self, queue, traversal, p2m_cost): + def process_form_multipoles(self, actx: PyOpenCLArrayContext, + traversal, p2m_cost): """Cost for forming multipole expansions of each box. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg p2m_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape (nlevels,) representing the cost of forming the multipole - expansion of one source at each level. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (nsource_boxes,), with each entry represents the cost of the box. + :arg p2m_cost: an array of shape (nlevels,) representing the cost of + forming the multipole expansion of one source at each level. + :return: an array of shape (nsource_boxes,), with each entry represents + the cost of the box. """ pass @abstractmethod - def process_coarsen_multipoles(self, queue, traversal, m2m_cost): + def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, + traversal, m2m_cost): """Cost for upward propagation. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg m2m_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape (nlevels-1,), where the ith entry represents the - multipole-to-multipole cost from source level i+1 to target level i. + :arg m2m_cost: an array of shape (nlevels-1,), where the ith entry + represents the multipole-to-multipole cost from source level i+1 + to target level i. :return: a :class:`float`, the overall cost of upward propagation. .. note:: This method returns a number instead of an array, because it is not @@ -266,118 +265,106 @@ def process_coarsen_multipoles(self, queue, traversal, m2m_cost): pass @abstractmethod - def get_ndirect_sources_per_target_box(self, queue, traversal): + def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, + traversal): """Collect the number of direct evaluation sources (list 1, list 3 close and list 4 close) for each target box. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (ntarget_boxes,), with each entry representing the number of direct - evaluation sources for that target box. + :return: an array of shape (ntarget_boxes,), with each entry representing + the number of direct evaluation sources for that target box. """ pass @abstractmethod - def process_direct(self, queue, traversal, ndirect_sources_by_itgt_box, p2p_cost, + def process_direct(self, actx: PyOpenCLArrayContext, + traversal, ndirect_sources_by_itgt_box, p2p_cost, box_target_counts_nonchild=None): """Direct evaluation cost of each target box of *traversal*. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg ndirect_sources_by_itgt_box: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (ntarget_boxes,), with each entry - representing the number of direct evaluation sources for that target box. + :arg ndirect_sources_by_itgt_box: an array of shape (ntarget_boxes,), + with each entry representing the number of direct evaluation sources + for that target box. :arg p2p_cost: a constant representing the cost of one point-to-point evaluation. - :arg box_target_counts_nonchild: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (nboxes,), the number of targets - using direct evaluation in this box. For example, this is useful in QBX - by specifying the number of non-QBX targets. If None, all targets in - boxes are considered. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (ntarget_boxes,), with each entry represents the cost of the box. + :arg box_target_counts_nonchild: an array of shape (nboxes,), the + number of targets using direct evaluation in this box. For example, + this is useful in QBX by specifying the number of non-QBX targets. + If None, all targets in boxes are considered. + :return: an array of shape (ntarget_boxes,), with each entry represents + the cost of the box. """ pass @abstractmethod - def process_list2(self, queue, traversal, m2l_cost): + def process_list2(self, actx: PyOpenCLArrayContext, traversal, m2l_cost): """ - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg m2l_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape (nlevels,) representing the translation cost of each level. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (ntarget_or_target_parent_boxes,), with each entry representing the cost - of multipole-to-local translations to this box. + :arg m2l_cost: an array of shape (nlevels,) representing the + translation cost of each level. + :return: an array of shape (ntarget_or_target_parent_boxes,), with + each entry representing the cost of multipole-to-local + translations to this box. """ pass @abstractmethod - def process_list3(self, queue, traversal, m2p_cost, + def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, box_target_counts_nonchild=None): """ - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg m2p_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape (nlevels,) where the ith entry represents the evaluation cost - from multipole expansion at level i to a point. - :arg box_target_counts_nonchild: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (nboxes,), the number of targets - using multiple-to-point translations in this box. For example, this is - useful in QBX by specifying the number of non-QBX targets. If None, all - targets in boxes are considered. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (nboxes,), with each entry representing the cost of evaluating all - targets inside this box from multipole expansions of list-3 boxes. + :arg m2p_cost: an array of shape (nlevels,) where the ith entry + represents the evaluation cost from multipole expansion at level i + to a point. + :arg box_target_counts_nonchild: an array of shape (nboxes,), the + number of targets using multiple-to-point translations in this box. + For example, this is useful in QBX by specifying the number of + non-QBX targets. If None, all targets in boxes are considered. + :return: an array of shape (nboxes,), with each entry representing the + cost of evaluating all targets inside this box from multipole + expansions of list-3 boxes. """ pass @abstractmethod - def process_list4(self, queue, traversal, p2l_cost): + def process_list4(self, actx: PyOpenCLArrayContext, traversal, p2l_cost): """ - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg p2l_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape (nlevels,) where the ith entry represents the translation cost - from a point to the local expansion at level i. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (ntarget_or_target_parent_boxes,), with each entry representing the cost - of point-to-local translations to this box. + :arg p2l_cost: an array of shape (nlevels,) where the ith entry + represents the translation cost from a point to the local expansion + at level i. + :return: an array of shape (ntarget_or_target_parent_boxes,), with + each entry representing the cost of point-to-local translations to + this box. """ pass @abstractmethod - def process_eval_locals(self, queue, traversal, l2p_cost, + def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, box_target_counts_nonchild=None): """ - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg l2p_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape (nlevels,) where the ith entry represents the cost of evaluating - the potential of a target in a box of level i using the box's local - expansion. - :arg box_target_counts_nonchild: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (nboxes,), the number of targets - which need evaluation. For example, this is useful in QBX by specifying - the number of non-QBX targets. If None, use + :arg l2p_cost: an array of shape (nlevels,) where the ith entry + represents the cost of evaluating the potential of a target in a + box of level i using the box's local expansion. + :arg box_target_counts_nonchild: an array of shape (nboxes,), the number + of targets which need evaluation. For example, this is useful in + QBX by specifying the number of non-QBX targets. If None, use traversal.tree.box_target_counts_nonchild. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (ntarget_boxes,), the cost of evaluating the potentials of all targets - inside this box from its local expansion. + :return: an array of shape (ntarget_boxes,), the cost of evaluating the + potentials of all targets inside this box from its local expansion. """ pass @abstractmethod - def process_refine_locals(self, queue, traversal, l2l_cost): + def process_refine_locals(self, actx: PyOpenCLArrayContext, traversal, l2l_cost): """Cost of downward propagation. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. - :arg l2l_cost: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` - of shape ``(nlevels-1,)``, where the :math:`i`th entry represents - the cost of translating local expansion from level :math:`i` to - level :math:`i+1`. + :arg l2l_cost: an array of shape ``(nlevels-1,)``, where the :math:`i`th + entry represents the cost of translating local expansion from level + :math:`i` to level :math:`i+1`. :return: a :class:`float`, the overall cost of downward propagation. .. note:: This method returns a number instead of an array, because it is not @@ -387,36 +374,34 @@ def process_refine_locals(self, queue, traversal, l2l_cost): pass @abstractmethod - def aggregate_over_boxes(self, per_box_result): + def aggregate_over_boxes(self, actx: PyOpenCLArrayContext, per_box_result): """Sum all entries of *per_box_result* into a number. - :arg per_box_result: an object of :class:`numpy.ndarray` or - :class:`pyopencl.array.Array`, the result to be sumed. + :arg per_box_result: an array to be sumed. :return: a :class:`float`, the result of the sum. """ pass @staticmethod - def cost_factors_to_dev(cost_factors, queue): + def cost_factors_to_dev(cost_factors, actx: PyOpenCLArrayContext | None): cost_factors_dev = {} for name in cost_factors: if not isinstance(cost_factors[name], np.ndarray): cost_factors_dev[name] = cost_factors[name] continue - cost_factors_dev[name] = cl_array.to_device( - queue, cost_factors[name] - ).with_queue(None) + + cost_factors_dev[name] = actx.freeze(actx.from_numpy(cost_factors[name])) return cost_factors_dev def fmm_cost_factors_for_kernels_from_model( - self, queue, nlevels, xlat_cost, context): + self, actx: PyOpenCLArrayContext | None, nlevels, xlat_cost, context): """Evaluate translation cost factors from symbolic model. The result of this function can be used for process_* methods in this class. - :arg queue: If not None, the cost factor arrays will be transferred to device - using this queue. + :arg actx: If not None, the cost factor arrays will be converted to + they array context's array type. :arg nlevels: the number of tree levels. :arg xlat_cost: a :class:`FMMTranslationCostModel`. :arg context: a :class:`dict` of parameters passed as context when @@ -455,29 +440,26 @@ def fmm_cost_factors_for_kernels_from_model( ], dtype=np.float64) } - if queue: - cost_factors = self.cost_factors_to_dev(cost_factors, queue) + if actx: + cost_factors = self.cost_factors_to_dev(cost_factors, actx) return cost_factors @abstractmethod - def zero_cost_per_box(self, queue, nboxes): + def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): """Helper function for returning the per-box cost filled with 0. - :arg queue: a :class:`pyopencl.CommandQueue` object. :param nboxes: the number of boxes - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (*nboxes*,), representing the zero per-box cost. + :return: an array of shape (*nboxes*,), representing the zero per-box cost. """ pass - def cost_per_box(self, queue, traversal, level_to_order, + def cost_per_box(self, actx: PyOpenCLArrayContext, traversal, level_to_order, calibration_params, ndirect_sources_per_target_box=None, box_target_counts_nonchild=None): """Predict the per-box costs of a new traversal object. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. :arg level_to_order: a :class:`numpy.ndarray` of shape (traversal.tree.nlevels,) representing the expansion orders @@ -485,24 +467,21 @@ def cost_per_box(self, queue, traversal, level_to_order, :arg calibration_params: a :class:`dict` of calibration parameters. These parameters can be obtained via :meth:`estimate_calibration_params` or :meth:`get_unit_calibration_params`. - :arg ndirect_sources_per_target_box: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (ntarget_boxes,), the number of - direct evaluation sources (list 1, list 3 close, list 4 close) for each - target box. You may find :meth:`get_ndirect_sources_per_target_box` - helpful. This argument is useful because the same result can be reused - for p2p, p2qbxl and tsqbx. - :arg box_target_counts_nonchild: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (nboxes,), the number of targets - which need evaluation. For example, this is useful in QBX by specifying - the number of non-QBX targets. If None, all targets are considered, - namely traversal.tree.box_target_counts_nonchild. - :return: a :class:`numpy.ndarray` or :class:`pyopencl.array.Array` of shape - (nboxes,), where the ith entry represents the cost of all stages for box - i. + :arg ndirect_sources_per_target_box: an array of shape (ntarget_boxes,), + the number of direct evaluation sources (list 1, list 3 close, list + 4 close) for each target box. You may find + :meth:`get_ndirect_sources_per_target_box` helpful. This argument is + useful because the same result can be reused for p2p, p2qbxl and tsqbx. + :arg box_target_counts_nonchild: an array of shape (nboxes,), the number + of targets which need evaluation. For example, this is useful in + QBX by specifying the number of non-QBX targets. If None, all + targets are considered, namely traversal.tree.box_target_counts_nonchild. + :return: an array of shape (nboxes,), where the ith entry represents + the cost of all stages for box i. """ if ndirect_sources_per_target_box is None: ndirect_sources_per_target_box = ( - self.get_ndirect_sources_per_target_box(queue, traversal) + self.get_ndirect_sources_per_target_box(actx, traversal) ) tree = traversal.tree @@ -511,7 +490,7 @@ def cost_per_box(self, queue, traversal, level_to_order, target_boxes = traversal.target_boxes target_or_target_parent_boxes = traversal.target_or_target_parent_boxes - result = self.zero_cost_per_box(queue, nboxes) + result = self.zero_cost_per_box(actx, nboxes) for ilevel in range(tree.nlevels): calibration_params[f"p_fmm_lev{ilevel}"] = level_to_order[ilevel] @@ -521,49 +500,48 @@ def cost_per_box(self, queue, traversal, level_to_order, ) translation_cost = self.fmm_cost_factors_for_kernels_from_model( - queue, tree.nlevels, xlat_cost, calibration_params + actx, tree.nlevels, xlat_cost, calibration_params ) if box_target_counts_nonchild is None: box_target_counts_nonchild = traversal.tree.box_target_counts_nonchild result[source_boxes] += self.process_form_multipoles( - queue, traversal, translation_cost["p2m_cost"] + actx, traversal, translation_cost["p2m_cost"] ) result[target_boxes] += self.process_direct( - queue, traversal, ndirect_sources_per_target_box, + actx, traversal, ndirect_sources_per_target_box, translation_cost["c_p2p"], box_target_counts_nonchild=box_target_counts_nonchild ) result[target_or_target_parent_boxes] += self.process_list2( - queue, traversal, translation_cost["m2l_cost"] + actx, traversal, translation_cost["m2l_cost"] ) result += self.process_list3( - queue, traversal, translation_cost["m2p_cost"], + actx, traversal, translation_cost["m2p_cost"], box_target_counts_nonchild=box_target_counts_nonchild ) result[target_or_target_parent_boxes] += self.process_list4( - queue, traversal, translation_cost["p2l_cost"] + actx, traversal, translation_cost["p2l_cost"] ) result[target_boxes] += self.process_eval_locals( - queue, traversal, translation_cost["l2p_cost"], + actx, traversal, translation_cost["l2p_cost"], box_target_counts_nonchild=box_target_counts_nonchild ) return result - def cost_per_stage(self, queue, traversal, level_to_order, + def cost_per_stage(self, actx: PyOpenCLArrayContext, traversal, level_to_order, calibration_params, ndirect_sources_per_target_box=None, box_target_counts_nonchild=None): """Predict the per-stage costs of a new traversal object. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. :arg level_to_order: a :class:`numpy.ndarray` of shape (traversal.tree.nlevels,) representing the expansion orders @@ -571,22 +549,21 @@ def cost_per_stage(self, queue, traversal, level_to_order, :arg calibration_params: a :class:`dict` of calibration parameters. These parameters can be obtained via :meth:`estimate_calibration_params` or :meth:`get_unit_calibration_params`. - :arg ndirect_sources_per_target_box: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (ntarget_boxes,), the number of - direct evaluation sources (list 1, list 3 close, list 4 close) for each - target box. You may find :func:`get_ndirect_sources_per_target_box` - helpful. This argument is useful because the same result can be reused - for p2p, p2qbxl and tsqbx. - :arg box_target_counts_nonchild: a :class:`numpy.ndarray` or - :class:`pyopencl.array.Array` of shape (nboxes,), the number of targets - which need evaluation. For example, this is useful in QBX by specifying - the number of non-QBX targets. If None, all targets are considered, - namely traversal.tree.box_target_counts_nonchild. + :arg ndirect_sources_per_target_box: an array of shape (ntarget_boxes,), + the number of direct evaluation sources (list 1, list 3 close, list + 4 close) for each target box. You may find + :func:`get_ndirect_sources_per_target_box` helpful. This argument + is useful because the same result can be reused for p2p, p2qbxl and + tsqbx. + :arg box_target_counts_nonchild: an array of shape (nboxes,), the + number of targets which need evaluation. For example, this is useful + in QBX by specifying the number of non-QBX targets. If None, all + targets are considered, namely traversal.tree.box_target_counts_nonchild. :return: a :class:`dict`, mapping FMM stage names to cost numbers. """ if ndirect_sources_per_target_box is None: ndirect_sources_per_target_box = ( - self.get_ndirect_sources_per_target_box(queue, traversal) + self.get_ndirect_sources_per_target_box(actx, traversal) ) tree = traversal.tree @@ -600,52 +577,58 @@ def cost_per_stage(self, queue, traversal, level_to_order, ) translation_cost = self.fmm_cost_factors_for_kernels_from_model( - queue, tree.nlevels, xlat_cost, calibration_params + actx, tree.nlevels, xlat_cost, calibration_params ) if box_target_counts_nonchild is None: box_target_counts_nonchild = traversal.tree.box_target_counts_nonchild result["form_multipoles"] = self.aggregate_over_boxes( + actx, self.process_form_multipoles( - queue, traversal, translation_cost["p2m_cost"] + actx, traversal, translation_cost["p2m_cost"] ) ) result["coarsen_multipoles"] = self.process_coarsen_multipoles( - queue, traversal, translation_cost["m2m_cost"] + actx, traversal, translation_cost["m2m_cost"] ) result["eval_direct"] = self.aggregate_over_boxes( + actx, self.process_direct( - queue, traversal, ndirect_sources_per_target_box, + actx, traversal, ndirect_sources_per_target_box, translation_cost["c_p2p"], box_target_counts_nonchild=box_target_counts_nonchild ) ) result["multipole_to_local"] = self.aggregate_over_boxes( - self.process_list2(queue, traversal, translation_cost["m2l_cost"]) + actx, + self.process_list2(actx, traversal, translation_cost["m2l_cost"]) ) result["eval_multipoles"] = self.aggregate_over_boxes( + actx, self.process_list3( - queue, traversal, translation_cost["m2p_cost"], + actx, traversal, translation_cost["m2p_cost"], box_target_counts_nonchild=box_target_counts_nonchild ) ) result["form_locals"] = self.aggregate_over_boxes( - self.process_list4(queue, traversal, translation_cost["p2l_cost"]) + actx, + self.process_list4(actx, traversal, translation_cost["p2l_cost"]) ) result["refine_locals"] = self.process_refine_locals( - queue, traversal, translation_cost["l2l_cost"] + actx, traversal, translation_cost["l2l_cost"] ) result["eval_locals"] = self.aggregate_over_boxes( + actx, self.process_eval_locals( - queue, traversal, translation_cost["l2p_cost"], + actx, traversal, translation_cost["l2p_cost"], box_target_counts_nonchild=box_target_counts_nonchild ) ) @@ -750,11 +733,12 @@ class FMMCostModel(AbstractFMMCostModel): # {{{ form multipoles - @memoize_method - def process_form_multipoles_knl(self, context, box_id_dtype, particle_id_dtype, + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_form_multipoles_knl(self, actx: PyOpenCLArrayContext, + box_id_dtype, particle_id_dtype, box_level_dtype): return ElementwiseKernel( - context, + actx.context, Template(r""" double *np2m, ${box_id_t} *source_boxes, @@ -779,13 +763,12 @@ def process_form_multipoles_knl(self, context, box_id_dtype, particle_id_dtype, name="process_form_multipoles" ) - def process_form_multipoles(self, queue, traversal, p2m_cost): + def process_form_multipoles(self, actx, traversal, p2m_cost): tree = traversal.tree - np2m = cl_array.zeros(queue, len(traversal.source_boxes), dtype=np.float64) + np2m = actx.np.zeros(len(traversal.source_boxes), dtype=np.float64) process_form_multipoles_knl = self.process_form_multipoles_knl( - queue.context, - tree.box_id_dtype, tree.particle_id_dtype, tree.box_level_dtype + actx, tree.box_id_dtype, tree.particle_id_dtype, tree.box_level_dtype ) process_form_multipoles_knl( @@ -793,7 +776,8 @@ def process_form_multipoles(self, queue, traversal, p2m_cost): traversal.source_boxes, tree.box_source_counts_nonchild, tree.box_levels, - p2m_cost + p2m_cost, + queue=actx.queue, ) return np2m @@ -802,11 +786,12 @@ def process_form_multipoles(self, queue, traversal, p2m_cost): # {{{ propagate multipoles upward - @memoize_method - def process_coarsen_multipoles_knl(self, context, ndimensions, box_id_dtype, + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_coarsen_multipoles_knl(self, actx: PyOpenCLArrayContext, + ndimensions, box_id_dtype, box_level_dtype, nlevels): return ElementwiseKernel( - context, + actx.context, Template(r""" ${box_id_t} *source_parent_boxes, ${box_level_t} *box_levels, @@ -846,14 +831,13 @@ def process_coarsen_multipoles_knl(self, context, ndimensions, box_id_dtype, name="process_coarsen_multipoles" ) - def process_coarsen_multipoles(self, queue, traversal, m2m_cost): + def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, + traversal, m2m_cost): tree = traversal.tree - nm2m = cl_array.zeros( - queue, len(traversal.source_parent_boxes), dtype=np.float64 - ) + nm2m = actx.np.zeros(len(traversal.source_parent_boxes), dtype=np.float64) process_coarsen_multipoles_knl = self.process_coarsen_multipoles_knl( - queue.context, + actx, tree.dimensions, tree.box_id_dtype, tree.box_level_dtype, tree.nlevels ) @@ -863,19 +847,20 @@ def process_coarsen_multipoles(self, queue, traversal, m2m_cost): m2m_cost, nm2m, *tree.box_child_ids, - queue=queue + queue=actx.queue ) - return self.aggregate_over_boxes(nm2m) + return self.aggregate_over_boxes(actx, nm2m) # }}} # {{{ direct evaluation to point targets (lists 1, 3 close, 4 close) - @memoize_method - def _get_ndirect_sources_knl(self, context, particle_id_dtype, box_id_dtype): + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def _get_ndirect_sources_knl(self, actx: PyOpenCLArrayContext, + particle_id_dtype, box_id_dtype): return ElementwiseKernel( - context, + actx.context, Template(""" ${particle_id_t} *ndirect_sources_by_itgt_box, ${box_id_t} *source_boxes_starts, @@ -908,18 +893,19 @@ def _get_ndirect_sources_knl(self, context, particle_id_dtype, box_id_dtype): name="get_ndirect_sources" ) - def get_ndirect_sources_per_target_box(self, queue, traversal): + def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, + traversal): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) particle_id_dtype = tree.particle_id_dtype box_id_dtype = tree.box_id_dtype get_ndirect_sources_knl = self._get_ndirect_sources_knl( - queue.context, particle_id_dtype, box_id_dtype + actx, particle_id_dtype, box_id_dtype ) - ndirect_sources_by_itgt_box = cl_array.zeros( - queue, ntarget_boxes, dtype=particle_id_dtype + ndirect_sources_by_itgt_box = actx.np.zeros( + ntarget_boxes, dtype=particle_id_dtype ) # List 1 @@ -932,7 +918,7 @@ def get_ndirect_sources_per_target_box(self, queue, traversal): # List 3 close if traversal.from_sep_close_smaller_starts is not None: - queue.finish() + actx.queue.finish() get_ndirect_sources_knl( ndirect_sources_by_itgt_box, traversal.from_sep_close_smaller_starts, @@ -942,7 +928,7 @@ def get_ndirect_sources_per_target_box(self, queue, traversal): # List 4 close if traversal.from_sep_close_bigger_starts is not None: - queue.finish() + actx.queue.finish() get_ndirect_sources_knl( ndirect_sources_by_itgt_box, traversal.from_sep_close_bigger_starts, @@ -952,28 +938,26 @@ def get_ndirect_sources_per_target_box(self, queue, traversal): return ndirect_sources_by_itgt_box - def process_direct(self, queue, traversal, ndirect_sources_by_itgt_box, p2p_cost, + def process_direct(self, actx: PyOpenCLArrayContext, + traversal, ndirect_sources_by_itgt_box, p2p_cost, box_target_counts_nonchild=None): if box_target_counts_nonchild is None: box_target_counts_nonchild = traversal.tree.box_target_counts_nonchild - from pyopencl.array import take - ntargets_by_itgt_box = take( - box_target_counts_nonchild, - traversal.target_boxes, - queue=queue - ) - + ntargets_by_itgt_box = ( + actx.thaw(box_target_counts_nonchild)[traversal.target_boxes] + ) return ndirect_sources_by_itgt_box * ntargets_by_itgt_box * p2p_cost # }}} # {{{ translate separated siblings' ("list 2") mpoles to local - @memoize_method - def process_list2_knl(self, context, box_id_dtype, box_level_dtype): + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_list2_knl(self, actx: PyOpenCLArrayContext, + box_id_dtype, box_level_dtype): return ElementwiseKernel( - context, + actx.context, Template(r""" double *nm2l, ${box_id_t} *target_or_target_parent_boxes, @@ -997,25 +981,24 @@ def process_list2_knl(self, context, box_id_dtype, box_level_dtype): name="process_list2" ) - def process_list2(self, queue, traversal, m2l_cost): + def process_list2(self, actx, traversal, m2l_cost): tree = traversal.tree box_id_dtype = tree.box_id_dtype box_level_dtype = tree.box_level_dtype ntarget_or_target_parent_boxes = len(traversal.target_or_target_parent_boxes) - nm2l = cl_array.zeros( - queue, (ntarget_or_target_parent_boxes,), dtype=np.float64 - ) + nm2l = actx.np.zeros((ntarget_or_target_parent_boxes,), dtype=np.float64) process_list2_knl = self.process_list2_knl( - queue.context, box_id_dtype, box_level_dtype + actx, box_id_dtype, box_level_dtype ) process_list2_knl( nm2l, traversal.target_or_target_parent_boxes, traversal.from_sep_siblings_starts, tree.box_levels, - m2l_cost + m2l_cost, + queue=actx.queue, ) return nm2l @@ -1024,10 +1007,11 @@ def process_list2(self, queue, traversal, m2l_cost): # {{{ evaluate sep. smaller mpoles ("list 3") at particles - @memoize_method - def process_list3_knl(self, context, box_id_dtype, particle_id_dtype): + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_list3_knl(self, actx: PyOpenCLArrayContext, + box_id_dtype, particle_id_dtype): return ElementwiseKernel( - context, + actx.context, Template(r""" ${box_id_t} *target_boxes_sep_smaller, ${box_id_t} *sep_smaller_start, @@ -1053,16 +1037,16 @@ def process_list3_knl(self, context, box_id_dtype, particle_id_dtype): name="process_list3" ) - def process_list3(self, queue, traversal, m2p_cost, + def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, box_target_counts_nonchild=None): tree = traversal.tree - nm2p = cl_array.zeros(queue, tree.nboxes, dtype=np.float64) + nm2p = actx.np.zeros(tree.nboxes, dtype=np.float64) if box_target_counts_nonchild is None: box_target_counts_nonchild = tree.box_target_counts_nonchild process_list3_knl = self.process_list3_knl( - queue.context, tree.box_id_dtype, tree.particle_id_dtype + actx, tree.box_id_dtype, tree.particle_id_dtype ) for ilevel, sep_smaller_list in enumerate( @@ -1071,9 +1055,9 @@ def process_list3(self, queue, traversal, m2p_cost, traversal.target_boxes_sep_smaller_by_source_level[ilevel], sep_smaller_list.starts, box_target_counts_nonchild, - m2p_cost[ilevel].get(queue=queue).reshape(-1)[0], + actx.to_numpy(m2p_cost[ilevel]).reshape(-1)[0], nm2p, - queue=queue + queue=actx.queue ) return nm2p @@ -1082,11 +1066,11 @@ def process_list3(self, queue, traversal, m2p_cost, # {{{ form locals for separated bigger source boxes ("list 4") - @memoize_method - def process_list4_knl(self, context, + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_list4_knl(self, actx: PyOpenCLArrayContext, box_id_dtype, particle_id_dtype, box_level_dtype): return ElementwiseKernel( - context, + actx.context, Template(r""" double *nm2p, ${box_id_t} *from_sep_bigger_starts, @@ -1116,15 +1100,13 @@ def process_list4_knl(self, context, name="process_list4" ) - def process_list4(self, queue, traversal, p2l_cost): + def process_list4(self, actx, traversal, p2l_cost): tree = traversal.tree target_or_target_parent_boxes = traversal.target_or_target_parent_boxes - nm2p = cl_array.zeros( - queue, len(target_or_target_parent_boxes), dtype=np.float64 - ) + nm2p = actx.np.zeros(len(target_or_target_parent_boxes), dtype=np.float64) process_list4_knl = self.process_list4_knl( - queue.context, + actx, tree.box_id_dtype, tree.particle_id_dtype, tree.box_level_dtype ) @@ -1134,7 +1116,8 @@ def process_list4(self, queue, traversal, p2l_cost): traversal.from_sep_bigger_lists, tree.box_source_counts_nonchild, tree.box_levels, - p2l_cost + p2l_cost, + queue=actx.queue ) return nm2p @@ -1143,11 +1126,11 @@ def process_list4(self, queue, traversal, p2l_cost): # {{{ evaluate local expansions at targets - @memoize_method - def process_eval_locals_knl(self, context, box_id_dtype, particle_id_dtype, - box_level_dtype): + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_eval_locals_knl(self, actx: PyOpenCLArrayContext, + box_id_dtype, particle_id_dtype, box_level_dtype): return ElementwiseKernel( - context, + actx.context, Template(r""" double *neval_locals, ${box_id_t} *target_boxes, @@ -1172,18 +1155,17 @@ def process_eval_locals_knl(self, context, box_id_dtype, particle_id_dtype, name="process_eval_locals" ) - def process_eval_locals(self, queue, traversal, l2p_cost, + def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, box_target_counts_nonchild=None): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) - neval_locals = cl_array.zeros(queue, ntarget_boxes, dtype=np.float64) + neval_locals = actx.np.zeros(ntarget_boxes, dtype=np.float64) if box_target_counts_nonchild is None: box_target_counts_nonchild = traversal.tree.box_target_counts_nonchild process_eval_locals_knl = self.process_eval_locals_knl( - queue.context, - tree.box_id_dtype, tree.particle_id_dtype, tree.box_level_dtype + actx, tree.box_id_dtype, tree.particle_id_dtype, tree.box_level_dtype ) process_eval_locals_knl( @@ -1200,11 +1182,11 @@ def process_eval_locals(self, queue, traversal, l2p_cost, # {{{ propagate locals downward - @memoize_method - def process_refine_locals_knl(self, context, box_id_dtype): + @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) + def process_refine_locals_knl(self, actx: PyOpenCLArrayContext, box_id_dtype): from pyopencl.reduction import ReductionKernel return ReductionKernel( - context, + actx.context, np.float64, neutral="0.0", reduce_expr="a+b", @@ -1222,43 +1204,40 @@ def process_refine_locals_knl(self, context, box_id_dtype): name="process_refine_locals" ) - def process_refine_locals(self, queue, traversal, l2l_cost): + def process_refine_locals(self, actx: PyOpenCLArrayContext, + traversal, l2l_cost): tree = traversal.tree process_refine_locals_knl = self.process_refine_locals_knl( - queue.context, tree.box_id_dtype + actx, tree.box_id_dtype ) - level_start_target_or_target_parent_box_nrs = cl_array.to_device( - queue, traversal.level_start_target_or_target_parent_box_nrs + level_start_target_or_target_parent_box_nrs = actx.thaw( + traversal.level_start_target_or_target_parent_box_nrs ) cost = process_refine_locals_knl( level_start_target_or_target_parent_box_nrs, l2l_cost, range=slice(1, tree.nlevels) - ).get() + ) - return cost.reshape(-1)[0] + return actx.to_numpy(cost).reshape(-1)[0] # }}} - def zero_cost_per_box(self, queue, nboxes): - return cl_array.zeros(queue, (nboxes,), dtype=np.float64) + def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): + return actx.np.zeros((nboxes,), dtype=np.float64) - def aggregate_over_boxes(self, per_box_result): + def aggregate_over_boxes(self, actx: PyOpenCLArrayContext, per_box_result): if isinstance(per_box_result, float): return per_box_result else: - return cl_array.sum(per_box_result).get().reshape(-1)[0] + return actx.to_numpy(actx.np.sum(per_box_result)).item() def fmm_cost_factors_for_kernels_from_model( - self, queue, nlevels, xlat_cost, context): - if not isinstance(queue, cl.CommandQueue): - raise TypeError( - "An OpenCL command queue must be supplied for cost model") - + self, actx: PyOpenCLArrayContext, nlevels, xlat_cost, context): return AbstractFMMCostModel.fmm_cost_factors_for_kernels_from_model( - self, queue, nlevels, xlat_cost, context + self, actx, nlevels, xlat_cost, context ) # }}} @@ -1267,7 +1246,8 @@ def fmm_cost_factors_for_kernels_from_model( # {{{ _PythonFMMCostModel (undocumented, only used for testing) class _PythonFMMCostModel(AbstractFMMCostModel): - def process_form_multipoles(self, queue, traversal, p2m_cost): + def process_form_multipoles(self, actx: PyOpenCLArrayContext, + traversal, p2m_cost): tree = traversal.tree np2m = np.zeros(len(traversal.source_boxes), dtype=np.float64) @@ -1280,7 +1260,8 @@ def process_form_multipoles(self, queue, traversal, p2m_cost): return np2m - def get_ndirect_sources_per_target_box(self, queue, traversal): + def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, + traversal): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) @@ -1314,7 +1295,8 @@ def get_ndirect_sources_per_target_box(self, queue, traversal): return ndirect_sources_by_itgt_box - def process_direct(self, queue, traversal, ndirect_sources_by_itgt_box, p2p_cost, + def process_direct(self, actx: PyOpenCLArrayContext, + traversal, ndirect_sources_by_itgt_box, p2p_cost, box_target_counts_nonchild=None): if box_target_counts_nonchild is None: box_target_counts_nonchild = traversal.tree.box_target_counts_nonchild @@ -1323,7 +1305,7 @@ def process_direct(self, queue, traversal, ndirect_sources_by_itgt_box, p2p_cost return ntargets_by_itgt_box * ndirect_sources_by_itgt_box * p2p_cost - def process_list2(self, queue, traversal, m2l_cost): + def process_list2(self, actx: PyOpenCLArrayContext, traversal, m2l_cost): tree = traversal.tree ntarget_or_target_parent_boxes = len(traversal.target_or_target_parent_boxes) nm2l = np.zeros(ntarget_or_target_parent_boxes, dtype=np.float64) @@ -1336,7 +1318,7 @@ def process_list2(self, queue, traversal, m2l_cost): return nm2l - def process_list3(self, queue, traversal, m2p_cost, + def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, box_target_counts_nonchild=None): tree = traversal.tree nm2p = np.zeros(tree.nboxes, dtype=np.float64) @@ -1354,7 +1336,7 @@ def process_list3(self, queue, traversal, m2p_cost, return nm2p - def process_list4(self, queue, traversal, p2l_cost): + def process_list4(self, actx: PyOpenCLArrayContext, traversal, p2l_cost): tree = traversal.tree target_or_target_parent_boxes = traversal.target_or_target_parent_boxes nm2p = np.zeros(len(target_or_target_parent_boxes), dtype=np.float64) @@ -1368,7 +1350,7 @@ def process_list4(self, queue, traversal, p2l_cost): return nm2p - def process_eval_locals(self, queue, traversal, l2p_cost, + def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, box_target_counts_nonchild=None): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) @@ -1386,7 +1368,8 @@ def process_eval_locals(self, queue, traversal, l2p_cost, return neval_locals - def process_coarsen_multipoles(self, queue, traversal, m2m_cost): + def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, + traversal, m2m_cost): tree = traversal.tree result = 0.0 @@ -1412,7 +1395,7 @@ def process_coarsen_multipoles(self, queue, traversal, m2m_cost): return result - def process_refine_locals(self, queue, traversal, l2l_cost): + def process_refine_locals(self, actx: PyOpenCLArrayContext, traversal, l2l_cost): tree = traversal.tree result = 0.0 @@ -1424,17 +1407,17 @@ def process_refine_locals(self, queue, traversal, l2l_cost): return result - def zero_cost_per_box(self, queue, nboxes): + def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): return np.zeros(nboxes, dtype=np.float64) - def aggregate_over_boxes(self, per_box_result): + def aggregate_over_boxes(self, actx, per_box_result): if isinstance(per_box_result, float): return per_box_result else: return np.sum(per_box_result) def fmm_cost_factors_for_kernels_from_model( - self, queue, nlevels, xlat_cost, context): + self, actx: PyOpenCLArrayContext, nlevels, xlat_cost, context): return AbstractFMMCostModel.fmm_cost_factors_for_kernels_from_model( self, None, nlevels, xlat_cost, context ) From cffb10bb04db13c71410815cc1fdc11e2b3b4372 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Sun, 26 Jun 2022 18:39:47 +0300 Subject: [PATCH 14/34] port distributed to arraycontext --- boxtree/distributed/__init__.py | 51 ++--- boxtree/distributed/calculation.py | 247 +++++++++++++------------ boxtree/distributed/local_traversal.py | 22 +-- boxtree/distributed/local_tree.py | 214 +++++++++++---------- boxtree/distributed/partition.py | 133 ++++++------- boxtree/fmm.py | 2 +- 6 files changed, 345 insertions(+), 324 deletions(-) diff --git a/boxtree/distributed/__init__.py b/boxtree/distributed/__init__.py index d62664a4..4cdb9ed1 100644 --- a/boxtree/distributed/__init__.py +++ b/boxtree/distributed/__init__.py @@ -91,7 +91,7 @@ Distributed Wrangler -------------------- -.. autoclass:: boxtree.distributed.calculation.DistributedExpansionWrangler +.. autoclass:: boxtree.distributed.calculation.DistributedExpansionWranglerMixin .. _distributed-fmm-evaluation: @@ -100,23 +100,24 @@ The distributed version of the FMM evaluation shares the same interface as the shared-memory version. To evaluate FMM in a distributed manner, use a subclass -of :class:`boxtree.distributed.calculation.DistributedExpansionWrangler` in -:func:`boxtree.fmm.drive_fmm`. +of :class:`boxtree.distributed.calculation.DistributedExpansionWranglerMixin` +in :func:`boxtree.fmm.drive_fmm`. """ import enum import warnings +from typing import TYPE_CHECKING import numpy as np from mpi4py import MPI -import pyopencl as cl -import pyopencl.array - from boxtree.cost import FMMCostModel +if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext + __all__ = ["DistributedFMMRunner"] @@ -131,9 +132,10 @@ class MPITags(enum.IntEnum): def dtype_to_mpi(dtype): - """ This function translates a numpy datatype into the corresponding type used in + """This function translates a numpy datatype into the corresponding type used in mpi4py. """ + if hasattr(MPI, "_typedict"): typedict = MPI._typedict elif hasattr(MPI, "__TypeDict__"): @@ -154,7 +156,7 @@ def dtype_to_mpi(dtype): # {{{ DistributedFMMRunner def make_distributed_wrangler( - queue, global_tree, traversal_builder, wrangler_factory, + actx: PyOpenCLArrayContext, global_tree, traversal_builder, wrangler_factory, calibration_params, comm): """Helper function for constructing the distributed wrangler on each rank. @@ -166,7 +168,6 @@ def make_distributed_wrangler( where the wrangler is constructed according to *wrangler_factory* and the indices are passed to :func:`boxtree.fmm.drive_fmm`. """ - mpi_rank = comm.Get_rank() # `tree_in_device_memory` is True if the global tree is in the device memory @@ -177,7 +178,7 @@ def make_distributed_wrangler( # worker ranks. tree_in_device_memory = None if mpi_rank == 0: - tree_in_device_memory = isinstance(global_tree.targets[0], cl.array.Array) + tree_in_device_memory = isinstance(global_tree.targets[0], actx.array_types) tree_in_device_memory = comm.bcast(tree_in_device_memory, root=0) # {{{ Broadcast the global tree @@ -185,7 +186,7 @@ def make_distributed_wrangler( global_tree_host = None if mpi_rank == 0: if tree_in_device_memory: - global_tree_host = global_tree.get(queue) + global_tree_host = actx.to_numpy(global_tree) else: global_tree_host = global_tree @@ -195,11 +196,11 @@ def make_distributed_wrangler( if mpi_rank == 0 and tree_in_device_memory: global_tree_dev = global_tree else: - global_tree_dev = global_tree_host.to_device(queue) - global_tree_dev = global_tree_dev.with_queue(queue) + global_tree_dev = actx.from_numpy(global_tree_host) + global_tree_dev = actx.thaw(global_tree_dev) - global_trav_dev, _ = traversal_builder(queue, global_tree_dev) - global_trav_host = global_trav_dev.get(queue) + global_trav_dev, _ = traversal_builder(actx, global_tree_dev) + global_trav_host = actx.to_numpy(global_trav_dev) global_trav = global_trav_dev if tree_in_device_memory else global_trav_host # }}} @@ -218,16 +219,16 @@ def make_distributed_wrangler( warnings.warn("Calibration parameters for the cost model are not " "supplied. The default one will be used.", stacklevel=2) - calibration_params = \ - FMMCostModel.get_unit_calibration_params() + calibration_params = FMMCostModel.get_unit_calibration_params() # We need to construct a wrangler in order to access `level_orders` global_wrangler = wrangler_factory(global_trav, global_trav) cost_per_box = cost_model.cost_per_box( - queue, global_trav_dev, global_wrangler.level_orders, + actx, global_trav_dev, global_wrangler.level_orders, calibration_params - ).get() + ) + cost_per_box = actx.to_numpy(cost_per_box) from boxtree.distributed.partition import partition_work responsible_boxes_list = partition_work(cost_per_box, global_trav_host, comm) @@ -238,7 +239,7 @@ def make_distributed_wrangler( from boxtree.distributed.local_tree import generate_local_tree local_tree, src_idx, tgt_idx = generate_local_tree( - queue, global_trav_host, responsible_boxes_list, comm) + actx, global_trav_dev, actx.from_numpy(responsible_boxes_list), comm) # }}} @@ -252,12 +253,12 @@ def make_distributed_wrangler( # {{{ Compute traversal object on each rank from boxtree.distributed.local_traversal import generate_local_travs - local_trav_dev = generate_local_travs(queue, local_tree, traversal_builder) + local_trav_dev = generate_local_travs(actx, local_tree, traversal_builder) if not tree_in_device_memory: - local_trav = local_trav_dev.get(queue=queue) + local_trav = actx.to_numpy(local_trav_dev) else: - local_trav = local_trav_dev.with_queue(None) + local_trav = actx.freeze(local_trav_dev) # }}} @@ -272,7 +273,7 @@ class DistributedFMMRunner: .. automethod:: __init__ .. automethod:: drive_dfmm """ - def __init__(self, queue, global_tree, + def __init__(self, array_context: PyOpenCLArrayContext, global_tree, traversal_builder, wrangler_factory, calibration_params=None, comm=MPI.COMM_WORLD): @@ -295,7 +296,7 @@ def __init__(self, queue, global_tree, """ self.wrangler, self.src_idx_all_ranks, self.tgt_idx_all_ranks = \ make_distributed_wrangler( - queue, global_tree, traversal_builder, wrangler_factory, + array_context, global_tree, traversal_builder, wrangler_factory, calibration_params, comm) def drive_dfmm(self, source_weights, timing_data=None): diff --git a/boxtree/distributed/calculation.py b/boxtree/distributed/calculation.py index ee2e59c4..fdbd7a42 100644 --- a/boxtree/distributed/calculation.py +++ b/boxtree/distributed/calculation.py @@ -25,25 +25,22 @@ """ import logging -from abc import ABC from typing import TYPE_CHECKING import numpy as np from mako.template import Template from mpi4py import MPI -import pyopencl as cl -import pyopencl.array as cl_array from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype from pytools import memoize_method from boxtree.distributed import MPITags -from boxtree.fmm import ExpansionWranglerInterface from boxtree.pyfmmlib_integration import FMMLibExpansionWrangler if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext from boxtree.traversal import FMMTraversalInfo @@ -52,35 +49,41 @@ # {{{ Distributed FMM wrangler -class DistributedExpansionWrangler(ExpansionWranglerInterface, ABC): +class DistributedExpansionWranglerMixin: """Distributed expansion wrangler base class. - This is an abstract class and should not be directly instantiated. Instead, it is - expected that all distributed wranglers should be subclasses of this class. + This class is meant to aid in adding distributed capabilities to wranglers. + All distributed wranglers should inherit from this class. + + .. attribute:: comm + .. attribute:: global_traversal + .. attribute:: communicate_mpoles_via_allreduce - .. automethod:: __init__ .. automethod:: distribute_source_weights .. automethod:: gather_potential_results .. automethod:: communicate_mpoles """ - def __init__(self, context, comm, global_traversal, - traversal_in_device_memory, - communicate_mpoles_via_allreduce=False): - self.context: cl.Context = context - self.comm: MPI.Intracomm = comm - self.global_traversal: FMMTraversalInfo = global_traversal - self.traversal_in_device_memory: bool = traversal_in_device_memory - self.communicate_mpoles_via_allreduce: bool = communicate_mpoles_via_allreduce - def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): - mpi_rank = self.comm.Get_rank() - mpi_size = self.comm.Get_size() + @property + @memoize_method + def mpi_rank(self): + return self.comm.Get_rank() + + @property + @memoize_method + def mpi_size(self): + return self.comm.Get_size() - if mpi_rank == 0: + @property + def is_mpi_root(self): + return self.mpi_rank == 0 + + def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): + if self.is_mpi_root: distribute_weight_req = [] - local_src_weight_vecs = np.empty((mpi_size,), dtype=object) + local_src_weight_vecs = np.empty((self.mpi_size,), dtype=object) - for irank in range(mpi_size): + for irank in range(self.mpi_size): local_src_weight_vecs[irank] = [ source_weights[src_idx_all_ranks[irank]] for source_weights in src_weight_vecs] @@ -99,22 +102,18 @@ def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): return local_src_weight_vecs def gather_potential_results(self, potentials, tgt_idx_all_ranks): - mpi_rank = self.comm.Get_rank() - mpi_size = self.comm.Get_size() - from boxtree.distributed import dtype_to_mpi potentials_mpi_type = dtype_to_mpi(potentials.dtype) - gathered_potentials = None - if mpi_rank == 0: + if self.is_mpi_root: # The root rank received calculated potentials from all worker ranks - potentials_all_ranks = np.empty((mpi_size,), dtype=object) + potentials_all_ranks = np.empty((self.mpi_size,), dtype=object) potentials_all_ranks[0] = potentials recv_reqs = [] - for irank in range(1, mpi_size): + for irank in range(1, self.mpi_size): potentials_all_ranks[irank] = np.empty( tgt_idx_all_ranks[irank].shape, dtype=potentials.dtype) @@ -129,7 +128,7 @@ def gather_potential_results(self, potentials, tgt_idx_all_ranks): gathered_potentials = np.empty( self.global_traversal.tree.ntargets, dtype=potentials.dtype) - for irank in range(mpi_size): + for irank in range(self.mpi_size): gathered_potentials[tgt_idx_all_ranks[irank]] = ( potentials_all_ranks[irank]) else: @@ -143,8 +142,13 @@ def _slice_mpoles(self, mpoles, slice_indices): if len(slice_indices) == 0: return np.empty((0,), dtype=mpoles.dtype) + level_start_box_nrs = self.traversal.tree.level_start_box_nrs + if not isinstance(level_start_box_nrs, np.ndarray): + actx = self.tree_indep._setup_actx + level_start_box_nrs = actx.to_numpy(level_start_box_nrs) + level_start_slice_indices = np.searchsorted( - slice_indices, self.traversal.tree.level_start_box_nrs) + slice_indices, level_start_box_nrs) mpoles_list = [] for ilevel in range(self.traversal.tree.nlevels): @@ -164,8 +168,13 @@ def _update_mpoles(self, mpoles, mpole_updates, slice_indices): if len(slice_indices) == 0: return + level_start_box_nrs = self.traversal.tree.level_start_box_nrs + if not isinstance(level_start_box_nrs, np.ndarray): + actx = self.tree_indep._setup_actx + level_start_box_nrs = actx.to_numpy(level_start_box_nrs) + level_start_slice_indices = np.searchsorted( - slice_indices, self.traversal.tree.level_start_box_nrs) + slice_indices, level_start_box_nrs) mpole_updates_start = 0 for ilevel in range(self.traversal.tree.nlevels): @@ -186,60 +195,61 @@ def _update_mpoles(self, mpoles, mpole_updates, slice_indices): mpole_updates_start = mpole_updates_end - @memoize_method - def find_boxes_used_by_subrange_kernel(self, box_id_dtype): - return ElementwiseKernel( - self.context, - Template(r""" - ${box_id_t} *contributing_boxes_list, - int subrange_start, - int subrange_end, - ${box_id_t} *box_to_user_rank_starts, - int *box_to_user_rank_lists, - char *box_in_subrange - """).render( - box_id_t=dtype_to_ctype(box_id_dtype), - ), - Template(r""" - ${box_id_t} ibox = contributing_boxes_list[i]; - ${box_id_t} iuser_start = box_to_user_rank_starts[ibox]; - ${box_id_t} iuser_end = box_to_user_rank_starts[ibox + 1]; - for(${box_id_t} iuser = iuser_start; iuser < iuser_end; iuser++) { - int useri = box_to_user_rank_lists[iuser]; - if(subrange_start <= useri && useri < subrange_end) { - box_in_subrange[i] = 1; + def find_boxes_used_by_subrange_kernel(self, actx, box_id_dtype): + from pytools import memoize_in + + @memoize_in(actx, (type(self), box_id_dtype)) + def get_kernel(): + return ElementwiseKernel( + actx.context, + Template(r""" + ${box_id_t} *contributing_boxes_list, + int subrange_start, + int subrange_end, + ${box_id_t} *box_to_user_rank_starts, + int *box_to_user_rank_lists, + char *box_in_subrange + """).render( + box_id_t=dtype_to_ctype(box_id_dtype), + ), + Template(r""" + ${box_id_t} ibox = contributing_boxes_list[i]; + ${box_id_t} iuser_start = box_to_user_rank_starts[ibox]; + ${box_id_t} iuser_end = box_to_user_rank_starts[ibox + 1]; + for(${box_id_t} iuser = iuser_start; iuser < iuser_end; iuser++) { + int useri = box_to_user_rank_lists[iuser]; + if(subrange_start <= useri && useri < subrange_end) { + box_in_subrange[i] = 1; + } } - } - """).render( - box_id_t=dtype_to_ctype(box_id_dtype) - ), - "find_boxes_used_by_subrange" - ) + """).render( + box_id_t=dtype_to_ctype(box_id_dtype) + ), + "find_boxes_used_by_subrange" + ) + + return get_kernel() def find_boxes_used_by_subrange( - self, subrange, box_to_user_rank_starts, box_to_user_rank_lists, + self, actx: PyOpenCLArrayContext, + subrange, box_to_user_rank_starts, box_to_user_rank_lists, contributing_boxes_list): """Test whether the multipole expansions of the contributing boxes are used by at least one box in a range. :arg subrange: the range is represented by ``(subrange[0], subrange[1])``. - :arg box_to_user_rank_starts: a :class:`pyopencl.array.Array` object - indicating the start and end index in *box_to_user_rank_lists* for each + :arg box_to_user_rank_starts: an array object indicating the start and + end index in *box_to_user_rank_lists* for each box in + *contributing_boxes_list*. + :arg box_to_user_rank_lists: an array object storing the users of each box in *contributing_boxes_list*. - :arg box_to_user_rank_lists: a :class:`pyopencl.array.Array` object storing - the users of each box in *contributing_boxes_list*. - :returns: a :class:`pyopencl.array.Array` object with the same shape as - *contributing_boxes_list*, where the i-th entry is 1 if - ``contributing_boxes_list[i]`` is used by at least on box in the - subrange specified. + :returns: an array object with the same shape as *contributing_boxes_list*, + where the i-th entry is 1 if ``contributing_boxes_list[i]`` is used + by at least on box in the subrange specified. """ - box_in_subrange = cl_array.zeros( - contributing_boxes_list.queue, - contributing_boxes_list.shape[0], - dtype=np.int8 - ) + box_in_subrange = actx.np.zeros(contributing_boxes_list.shape[0], dtype=np.int8) knl = self.find_boxes_used_by_subrange_kernel( - self.traversal.tree.box_id_dtype) + actx, self.traversal.tree.box_id_dtype) knl( contributing_boxes_list, @@ -252,7 +262,8 @@ def find_boxes_used_by_subrange( return box_in_subrange - def communicate_mpoles(self, mpole_exps, return_stats=False): + def communicate_mpoles(self, actx: PyOpenCLArrayContext, + mpole_exps, return_stats=False): """Based on Algorithm 3: Reduce and Scatter in Lashuk et al. [1]_. The main idea is to mimic an allreduce as done on a hypercube network, but to @@ -261,12 +272,11 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): .. [1] Lashuk, Ilya, Aparna Chandramowlishwaran, Harper Langston, Tuan-Anh Nguyen, Rahul Sampath, Aashay Shringarpure, Richard Vuduc, - Lexing Ying, Denis Zorin, and George Biros. “A massively parallel - adaptive fast multipole method on heterogeneous architectures." - Communications of the ACM 55, no. 5 (2012): 101-109. + Lexing Ying, Denis Zorin, and George Biros. "A massively parallel + adaptive fast multipole method on heterogeneous architectures", + Communications of the ACM 55, no. 5 (2012): 101-109, + `DOI `__. """ - mpi_rank = self.comm.Get_rank() - mpi_size = self.comm.Get_size() tree = self.traversal.tree if self.communicate_mpoles_via_allreduce: @@ -292,16 +302,15 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): # Initially, this set consists of the boxes satisfying condition (a), which # are precisely the boxes owned by this process and their ancestors. if self.traversal_in_device_memory: - with cl.CommandQueue(self.context) as queue: - contributing_boxes = tree.ancestor_mask.get(queue=queue) - responsible_boxes_list = tree.responsible_boxes_list.get(queue=queue) + contributing_boxes = actx.to_numpy(tree.ancestor_mask) + responsible_boxes_list = actx.to_numpy(tree.responsible_boxes_list) else: - contributing_boxes = tree.ancestor_mask.copy() + contributing_boxes = np.copy(tree.ancestor_mask) responsible_boxes_list = tree.responsible_boxes_list contributing_boxes[responsible_boxes_list] = 1 from boxtree.tools import AllReduceCommPattern - comm_pattern = AllReduceCommPattern(mpi_rank, mpi_size) + comm_pattern = AllReduceCommPattern(self.mpi_rank, self.mpi_size) # Temporary buffers for receiving data mpole_exps_buf = np.empty(mpole_exps.shape, dtype=mpole_exps.dtype) @@ -311,15 +320,13 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): stats["bytes_recvd_by_stage"] = [] if self.traversal_in_device_memory: - box_to_user_rank_starts_dev = \ - tree.box_to_user_rank_starts.with_queue(None) - box_to_user_rank_lists_dev = tree.box_to_user_rank_lists.with_queue(None) + box_to_user_rank_starts_dev = actx.freeze(tree.box_to_user_rank_starts) + box_to_user_rank_lists_dev = actx.freeze(tree.box_to_user_rank_lists) else: - with cl.CommandQueue(self.context) as queue: - box_to_user_rank_starts_dev = cl_array.to_device( - queue, tree.box_to_user_rank_starts).with_queue(None) - box_to_user_rank_lists_dev = cl_array.to_device( - queue, tree.box_to_user_rank_lists).with_queue(None) + box_to_user_rank_starts_dev = actx.freeze( + actx.from_numpy(tree.box_to_user_rank_starts)) + box_to_user_rank_lists_dev = actx.freeze( + actx.from_numpy(tree.box_to_user_rank_lists)) while not comm_pattern.done(): send_requests = [] @@ -333,18 +340,15 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): tree.box_id_dtype ) - with cl.CommandQueue(self.context) as queue: - contributing_boxes_list_dev = cl_array.to_device( - queue, contributing_boxes_list) - - box_in_subrange = self.find_boxes_used_by_subrange( - message_subrange, - box_to_user_rank_starts_dev, box_to_user_rank_lists_dev, - contributing_boxes_list_dev - ) - - box_in_subrange_host = box_in_subrange.get().astype(bool) + contributing_boxes_list_dev = actx.from_numpy( + contributing_boxes_list) + box_in_subrange = self.find_boxes_used_by_subrange( + actx, message_subrange, + box_to_user_rank_starts_dev, box_to_user_rank_lists_dev, + contributing_boxes_list_dev + ) + box_in_subrange_host = actx.to_numpy(box_in_subrange).astype(bool) relevant_boxes_list = contributing_boxes_list[ box_in_subrange_host ].astype(tree.box_id_dtype) @@ -393,7 +397,7 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): # Update data structures. self._update_mpoles( - mpole_exps, mpole_exps_buf, boxes_list_buf[:nboxes]) + mpole_exps, mpole_exps_buf, boxes_list_buf[:nboxes]) contributing_boxes[boxes_list_buf[:nboxes]] = 1 @@ -405,38 +409,43 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): if return_stats: return stats - def finalize_potentials(self, potentials, template_ary): - if self.comm.Get_rank() == 0: - return super().finalize_potentials(potentials, template_ary) - else: - return None - class DistributedFMMLibExpansionWrangler( - DistributedExpansionWrangler, FMMLibExpansionWrangler): + DistributedExpansionWranglerMixin, + FMMLibExpansionWrangler): def __init__( - self, context, comm, tree_indep, local_traversal, global_traversal, + self, comm, tree_indep, local_traversal, global_traversal, fmm_level_to_order=None, communicate_mpoles_via_allreduce=False, **kwargs): - DistributedExpansionWrangler.__init__( - self, context, comm, global_traversal, False, - communicate_mpoles_via_allreduce=communicate_mpoles_via_allreduce) FMMLibExpansionWrangler.__init__( self, tree_indep, local_traversal, fmm_level_to_order=fmm_level_to_order, **kwargs) + self.comm: MPI.Intracomm = comm + self.traversal_in_device_memory: bool = False + self.global_traversal: FMMTraversalInfo = global_traversal + self.communicate_mpoles_via_allreduce: bool = communicate_mpoles_via_allreduce + # TODO: use log_process like FMMLibExpansionWrangler? def reorder_sources(self, source_array): - if self.comm.Get_rank() == 0: + if self.is_mpi_root: return source_array[..., self.global_traversal.tree.user_source_ids] else: return None def reorder_potentials(self, potentials): - if self.comm.Get_rank() == 0: + if self.is_mpi_root: return potentials[self.global_traversal.tree.sorted_target_ids] else: return None + def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): + if self.is_mpi_root: + return FMMLibExpansionWrangler.finalize_potentials(self, actx, potentials) + else: + return None + # }}} + +# vim: fdm=marker diff --git a/boxtree/distributed/local_traversal.py b/boxtree/distributed/local_traversal.py index 9a2c683a..237fb5e3 100644 --- a/boxtree/distributed/local_traversal.py +++ b/boxtree/distributed/local_traversal.py @@ -32,34 +32,30 @@ def generate_local_travs( - queue, local_tree, traversal_builder, merge_close_lists=False): + actx, local_tree, traversal_builder, merge_close_lists=False): """Generate local traversal from local tree. - :arg queue: a :class:`pyopencl.CommandQueue` object. - :arg local_tree: the local tree of class - `boxtree.tools.ImmutableHostDeviceArray` on which the local traversal - object will be constructed. - :arg traversal_builder: a function, taken a :class:`pyopencl.CommandQueue` and - a tree, returns the traversal object based on the tree. + :arg local_tree: the local tree on which the local traversal object will + be constructed. + :arg traversal_builder: a function, taken a :class:`arraycontext.ArrayContext` + and a tree, returns the traversal object based on the tree. :return: generated local traversal object in device memory """ start_time = time.time() - local_tree.with_queue(queue) - # We need `source_boxes_mask` and `source_parent_boxes_mask` here to restrict the # multipole formation and upward propagation within the rank's responsible boxes # region. Had there not been such restrictions, some sources might be distributed # to more than 1 rank and counted multiple times. local_trav, _ = traversal_builder( - queue, local_tree.to_device(queue), - source_boxes_mask=local_tree.responsible_boxes_mask.device, - source_parent_boxes_mask=local_tree.ancestor_mask.device + actx, local_tree, + source_boxes_mask=local_tree.responsible_boxes_mask, + source_parent_boxes_mask=local_tree.ancestor_mask ) if merge_close_lists and local_tree.targets_have_extent: - local_trav = local_trav.merge_close_lists(queue) + local_trav = local_trav.merge_close_lists(actx) logger.info("Generate local traversal in %f sec.", time.time() - start_time) diff --git a/boxtree/distributed/local_tree.py b/boxtree/distributed/local_tree.py index d76005ca..c8d1a5e8 100644 --- a/boxtree/distributed/local_tree.py +++ b/boxtree/distributed/local_tree.py @@ -27,20 +27,22 @@ import logging import time from dataclasses import dataclass +from typing import TYPE_CHECKING import numpy as np from mako.template import Template -import pyopencl as cl -import pyopencl.array as cl_array -import pyopencl.elementwise as cl_elementwise -import pytools.obj_array as obj_array +from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype -from pytools import memoize_method +from pytools import memoize_method, obj_array from boxtree import Tree +from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +if TYPE_CHECKING: + from arraycontext import Array, ArrayOrContainer + logger = logging.getLogger(__name__) @@ -54,16 +56,21 @@ class LocalTreeGeneratorCodeContainer: """Objects of this type serve as a place to keep the code needed for :func:`generate_local_tree`. """ - def __init__(self, cl_context, dimensions, particle_id_dtype, coord_dtype): - self.cl_context = cl_context + def __init__(self, array_context: PyOpenCLArrayContext, + dimensions, particle_id_dtype, coord_dtype): + self._setup_actx = array_context self.dimensions = dimensions self.particle_id_dtype = particle_id_dtype self.coord_dtype = coord_dtype + @property + def context(self): + return self._setup_actx.context + @memoize_method def particle_mask_kernel(self): - return cl_elementwise.ElementwiseKernel( - self.cl_context, + return ElementwiseKernel( + self.context, arguments=Template(""" __global char *responsible_boxes, __global ${particle_id_t} *box_particle_starts, @@ -88,7 +95,7 @@ def particle_mask_kernel(self): def mask_scan_kernel(self): from pyopencl.scan import GenericScanKernel return GenericScanKernel( - self.cl_context, self.particle_id_dtype, + self.context, self.particle_id_dtype, arguments=Template(""" __global ${mask_t} *ary, __global ${mask_t} *scan @@ -129,8 +136,8 @@ def mask_scan_kernel(self): @memoize_method def fetch_local_particles_kernel(self, particles_have_extent): - return cl_elementwise.ElementwiseKernel( - self.cl_context, + return ElementwiseKernel( + self.context, self.fetch_local_particles_arguments.render( mask_t=dtype_to_ctype(self.particle_id_dtype), coord_t=dtype_to_ctype(self.coord_dtype), @@ -147,15 +154,15 @@ def fetch_local_particles_kernel(self, particles_have_extent): @memoize_method def mask_compressor_kernel(self): from boxtree.tools import MaskCompressorKernel - return MaskCompressorKernel(self.cl_context) + return MaskCompressorKernel(self._setup_actx) @memoize_method def modify_target_flags_kernel(self): from boxtree import box_flags_enum box_flag_t = dtype_to_ctype(box_flags_enum.dtype) - return cl_elementwise.ElementwiseKernel( - self.cl_context, + return ElementwiseKernel( + self.context, Template(""" __global ${particle_id_t} *box_target_counts_nonchild, __global ${particle_id_t} *box_target_counts_cumul, @@ -179,18 +186,19 @@ def modify_target_flags_kernel(self): ) -@dataclass +@dataclass(frozen=True) class LocalParticlesAndLists: - particles: np.ndarray - particle_radii: cl_array.Array | None - box_particle_starts: cl_array.Array - box_particle_counts_nonchild: cl_array.Array - box_particle_counts_cumul: cl_array.Array + particles: ArrayOrContainer + particle_radii: Array | None + box_particle_starts: Array + box_particle_counts_nonchild: Array + box_particle_counts_cumul: Array particle_idx: np.ndarray def construct_local_particles_and_lists( - queue, code, dimensions, num_boxes, num_global_particles, + actx: PyOpenCLArrayContext, + code, dimensions, num_boxes, num_global_particles, particle_id_dtype, coord_dtype, particles_have_extent, box_mask, global_particles, global_particle_radii, @@ -201,18 +209,19 @@ def construct_local_particles_and_lists( """ # {{{ calculate the particle mask - particle_mask = cl_array.zeros( - queue, num_global_particles, dtype=particle_id_dtype) - + particle_mask = actx.np.zeros(num_global_particles, dtype=particle_id_dtype) code.particle_mask_kernel()( - box_mask, box_particle_starts, box_particle_counts_nonchild, particle_mask) + box_mask, + box_particle_starts, + box_particle_counts_nonchild, + particle_mask) # }}} # {{{ calculate the scan of the particle mask - global_to_local_particle_index = cl_array.empty( - queue, num_global_particles + 1, dtype=particle_id_dtype) + global_to_local_particle_index = actx.np.zeros( + num_global_particles + 1, dtype=particle_id_dtype) global_to_local_particle_index[0] = 0 code.mask_scan_kernel()(particle_mask, global_to_local_particle_index) @@ -221,18 +230,16 @@ def construct_local_particles_and_lists( # {{{ fetch the local particles - num_local_particles = global_to_local_particle_index[-1].get(queue).item() - - local_particles = [ - cl_array.empty(queue, num_local_particles, dtype=coord_dtype) - for _ in range(dimensions)] + num_local_particles = actx.to_numpy(global_to_local_particle_index[-1]).item() + local_particles = obj_array.new_1d([ + actx.np.zeros(num_local_particles, coord_dtype) + for _ in range(dimensions) + ]) local_particles = obj_array.new_1d(local_particles) - local_particle_radii = None if particles_have_extent: - local_particle_radii = cl_array.empty( - queue, num_local_particles, dtype=coord_dtype) + local_particle_radii = actx.np.zeros(num_local_particles, dtype=coord_dtype) code.fetch_local_particles_kernel(True)( particle_mask, global_to_local_particle_index, @@ -241,6 +248,7 @@ def construct_local_particles_and_lists( global_particle_radii, local_particle_radii) else: + local_particle_radii = None code.fetch_local_particles_kernel(False)( particle_mask, global_to_local_particle_index, *global_particles.tolist(), @@ -250,9 +258,9 @@ def construct_local_particles_and_lists( local_box_particle_starts = global_to_local_particle_index[box_particle_starts] - box_counts_all_zeros = cl_array.zeros(queue, num_boxes, dtype=particle_id_dtype) + box_counts_all_zeros = actx.np.zeros(num_boxes, dtype=particle_id_dtype) - local_box_particle_counts_nonchild = cl_array.if_positive( + local_box_particle_counts_nonchild = actx.np.where( box_mask, box_particle_counts_nonchild, box_counts_all_zeros) box_particle_ends_cumul = box_particle_starts + box_particle_counts_cumul @@ -263,18 +271,20 @@ def construct_local_particles_and_lists( # }}} - particle_mask = particle_mask.get(queue=queue).astype(bool) + particle_mask = actx.to_numpy(particle_mask).astype(bool) particle_idx = np.arange(num_global_particles)[particle_mask] return LocalParticlesAndLists( - local_particles, - local_particle_radii, - local_box_particle_starts, - local_box_particle_counts_nonchild, - local_box_particle_counts_cumul, - particle_idx) + particles=local_particles, + particle_radii=local_particle_radii, + box_particle_starts=local_box_particle_starts, + box_particle_counts_nonchild=local_box_particle_counts_nonchild, + box_particle_counts_cumul=local_box_particle_counts_cumul, + particle_idx=particle_idx) +@dataclass_array_container +@dataclass(frozen=True) class LocalTree(Tree): """ Inherits from :class:`boxtree.Tree`. @@ -293,13 +303,21 @@ class LocalTree(Tree): propagated from an ancestor) List 2. """ + box_to_user_rank_starts: Array + box_to_user_rank_lists: Array + + responsible_boxes_list: Array + responsible_boxes_mask: Array + ancestor_mask: Array -def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): + +def generate_local_tree( + actx: PyOpenCLArrayContext, + global_traversal, responsible_boxes_list, comm): """Generate the local tree for the current rank. This is an MPI-collective routine on *comm*. - :arg queue: a :class:`pyopencl.CommandQueue` object. :arg global_traversal: Global :class:`boxtree.traversal.FMMTraversalInfo` object on host memory. :arg responsible_boxes_list: a :class:`numpy.ndarray` object containing the @@ -312,9 +330,9 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): global tree. ``src_idx`` and ``tgt_idx`` are needed for distributing source weights from root rank and assembling calculated potentials on the root rank. """ - global_tree = global_traversal.tree + global_tree = actx.thaw(global_traversal.tree) code = LocalTreeGeneratorCodeContainer( - queue.context, global_tree.dimensions, + actx, global_tree.dimensions, global_tree.particle_id_dtype, global_tree.coord_dtype) mpi_rank = comm.Get_rank() @@ -323,33 +341,31 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): start_time = time.time() from boxtree.distributed.partition import get_box_masks - box_masks = get_box_masks(queue, global_traversal, responsible_boxes_list) - - global_tree_dev = global_tree.to_device(queue).with_queue(queue) + box_masks = get_box_masks(actx, global_traversal, responsible_boxes_list) local_sources_and_lists = construct_local_particles_and_lists( - queue, code, global_tree.dimensions, global_tree.nboxes, + actx, code, global_tree.dimensions, global_tree.nboxes, global_tree.nsources, global_tree.particle_id_dtype, global_tree.coord_dtype, global_tree.sources_have_extent, box_masks.point_src_boxes, - global_tree_dev.sources, - global_tree_dev.sources_radii if global_tree.sources_have_extent else None, - global_tree_dev.box_source_starts, - global_tree_dev.box_source_counts_nonchild, - global_tree_dev.box_source_counts_cumul) + global_tree.sources, + global_tree.sources_radii if global_tree.sources_have_extent else None, + global_tree.box_source_starts, + global_tree.box_source_counts_nonchild, + global_tree.box_source_counts_cumul) local_targets_and_lists = construct_local_particles_and_lists( - queue, code, global_tree.dimensions, global_tree.nboxes, + actx, code, global_tree.dimensions, global_tree.nboxes, global_tree.ntargets, global_tree.particle_id_dtype, global_tree.coord_dtype, global_tree.targets_have_extent, box_masks.responsible_boxes, - global_tree_dev.targets, - global_tree_dev.target_radii if global_tree.targets_have_extent else None, - global_tree_dev.box_target_starts, - global_tree_dev.box_target_counts_nonchild, - global_tree_dev.box_target_counts_cumul) + global_tree.targets, + global_tree.target_radii if global_tree.targets_have_extent else None, + global_tree.box_target_starts, + global_tree.box_target_counts_nonchild, + global_tree.box_target_counts_cumul) # {{{ compute the users of multipole expansions of each box on the root rank @@ -359,24 +375,26 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): (mpi_size, global_tree.nboxes), dtype=box_masks.multipole_src_boxes.dtype) comm.Gather( - box_masks.multipole_src_boxes.get(), multipole_src_boxes_all_ranks, root=0) + actx.to_numpy(box_masks.multipole_src_boxes), + multipole_src_boxes_all_ranks, root=0) box_to_user_rank_starts = None box_to_user_rank_lists = None if mpi_rank == 0: - multipole_src_boxes_all_ranks = cl_array.to_device( - queue, multipole_src_boxes_all_ranks) + multipole_src_boxes_all_ranks = actx.from_numpy( + multipole_src_boxes_all_ranks) (box_to_user_rank_starts, box_to_user_rank_lists, evt) = \ code.mask_compressor_kernel()( - queue, multipole_src_boxes_all_ranks.transpose(), + actx, multipole_src_boxes_all_ranks.transpose(), list_dtype=np.int32) - cl.wait_for_events([evt]) + from pyopencl import wait_for_events + wait_for_events([evt]) - box_to_user_rank_starts = box_to_user_rank_starts.get() - box_to_user_rank_lists = box_to_user_rank_lists.get() + box_to_user_rank_starts = actx.to_numpy(box_to_user_rank_starts) + box_to_user_rank_lists = actx.to_numpy(box_to_user_rank_lists) logger.debug("computing box_to_user: done") @@ -393,7 +411,7 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): # expansions formed by sources in other ranks. Modifying the source box flags # could result in incomplete interaction lists. - local_box_flags = global_tree_dev.box_flags.copy(queue=queue) + local_box_flags = actx.np.copy(global_tree.box_flags) code.modify_target_flags_kernel()( local_targets_and_lists.box_particle_counts_nonchild, local_targets_and_lists.box_particle_counts_cumul, @@ -401,13 +419,6 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): # }}} - local_sources = obj_array.new_1d([ - local_sources_idim.get(queue=queue) - for local_sources_idim in local_sources_and_lists.particles]) - local_targets = obj_array.new_1d([ - local_target_idim.get(queue=queue) - for local_target_idim in local_targets_and_lists.particles]) - local_tree = LocalTree( sources_are_targets=global_tree.sources_are_targets, sources_have_extent=global_tree.sources_have_extent, @@ -424,33 +435,34 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): bounding_box=global_tree.bounding_box, level_start_box_nrs=global_tree.level_start_box_nrs, - level_start_box_nrs_dev=global_tree.level_start_box_nrs_dev, - sources=local_sources, - targets=local_targets, - source_radii=(local_sources_and_lists.particle_radii.get(queue=queue) + sources=local_sources_and_lists.particles, + targets=local_targets_and_lists.particles, + source_radii=( + local_sources_and_lists.particle_radii if global_tree.sources_have_extent else None), - target_radii=(local_targets_and_lists.particle_radii.get(queue=queue) + target_radii=( + local_targets_and_lists.particle_radii if global_tree.targets_have_extent else None), box_source_starts=( - local_sources_and_lists.box_particle_starts.get(queue=queue)), + local_sources_and_lists.box_particle_starts), box_source_counts_nonchild=( - local_sources_and_lists.box_particle_counts_nonchild.get(queue=queue)), + local_sources_and_lists.box_particle_counts_nonchild), box_source_counts_cumul=( - local_sources_and_lists.box_particle_counts_cumul.get(queue=queue)), + local_sources_and_lists.box_particle_counts_cumul), box_target_starts=( - local_targets_and_lists.box_particle_starts.get(queue=queue)), + local_targets_and_lists.box_particle_starts), box_target_counts_nonchild=( - local_targets_and_lists.box_particle_counts_nonchild.get(queue=queue)), + local_targets_and_lists.box_particle_counts_nonchild), box_target_counts_cumul=( - local_targets_and_lists.box_particle_counts_cumul.get(queue=queue)), + local_targets_and_lists.box_particle_counts_cumul), box_parent_ids=global_tree.box_parent_ids, box_child_ids=global_tree.box_child_ids, box_centers=global_tree.box_centers, box_levels=global_tree.box_levels, - box_flags=local_box_flags.get(queue=queue), + box_flags=local_box_flags, user_source_ids=None, sorted_target_ids=None, @@ -463,19 +475,19 @@ def generate_local_tree(queue, global_traversal, responsible_boxes_list, comm): _is_pruned=global_tree._is_pruned, responsible_boxes_list=responsible_boxes_list, - responsible_boxes_mask=box_masks.responsible_boxes.get(), - ancestor_mask=box_masks.ancestor_boxes.get(), - box_to_user_rank_starts=box_to_user_rank_starts, - box_to_user_rank_lists=box_to_user_rank_lists + responsible_boxes_mask=box_masks.responsible_boxes, + ancestor_mask=box_masks.ancestor_boxes, + box_to_user_rank_starts=actx.from_numpy(box_to_user_rank_starts), + box_to_user_rank_lists=actx.from_numpy(box_to_user_rank_lists), ) - local_tree = local_tree.to_host_device_array(queue) - local_tree.with_queue(None) - - logger.info("Generate local tree on rank %d in %f sec.", - mpi_rank, time.time() - start_time) + logger.info("Generate local tree on rank %d in %s sec.", + mpi_rank, time.time() - start_time + ) return ( - local_tree, + actx.freeze(local_tree), local_sources_and_lists.particle_idx, local_targets_and_lists.particle_idx) + +# vim: fdm=marker diff --git a/boxtree/distributed/partition.py b/boxtree/distributed/partition.py index b99164e9..c5ac9876 100644 --- a/boxtree/distributed/partition.py +++ b/boxtree/distributed/partition.py @@ -25,16 +25,22 @@ """ from dataclasses import dataclass +from typing import TYPE_CHECKING import numpy as np from mako.template import Template -import pyopencl.array as cl_array -import pyopencl.elementwise as cl_elementwise +from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype from pytools import memoize_method +if TYPE_CHECKING: + from arraycontext import Array + + from boxtree.array_context import PyOpenCLArrayContext + + def get_box_ids_dfs_order(tree): """Helper function for getting box ids of a tree in depth-first order. @@ -122,17 +128,21 @@ def partition_work(cost_per_box, traversal, comm): class GetBoxMasksCodeContainer: - def __init__(self, cl_context, box_id_dtype): - self.cl_context = cl_context + def __init__(self, array_context: PyOpenCLArrayContext, box_id_dtype): + self._setup_actx = array_context self.box_id_dtype = box_id_dtype + @property + def context(self): + return self._setup_actx.context + @memoize_method def add_interaction_list_boxes_kernel(self): """Given a ``responsible_boxes_mask`` and an interaction list, mark source boxes for target boxes in ``responsible_boxes_mask`` in a new separate mask. """ - return cl_elementwise.ElementwiseKernel( - self.cl_context, + return ElementwiseKernel( + self.context, Template(""" __global ${box_id_t} *box_list, __global char *responsible_boxes_mask, @@ -158,29 +168,28 @@ def add_interaction_list_boxes_kernel(self): @memoize_method def add_parent_boxes_kernel(self): - return cl_elementwise.ElementwiseKernel( - self.cl_context, + return ElementwiseKernel( + self.context, "__global char *current, __global char *parent, " f"__global {dtype_to_ctype(self.box_id_dtype)} *box_parent_ids", "if(i != 0 && current[i]) parent[box_parent_ids[i]] = 1" ) -def get_ancestor_boxes_mask(queue, code, traversal, responsible_boxes_mask): +def get_ancestor_boxes_mask(actx, code, traversal, responsible_boxes_mask): """Query the ancestors of responsible boxes. - :arg responsible_boxes_mask: A :class:`pyopencl.array.Array` object of shape - ``(tree.nboxes,)`` whose i-th entry is 1 if ``i`` is a responsible box. - :return: A :class:`pyopencl.array.Array` object of shape ``(tree.nboxes,)`` whose - i-th entry is 1 if ``i`` is an ancestor of the responsible boxes specified by + :arg responsible_boxes_mask: an array of shape ``(tree.nboxes,)`` whose + i-th entry is 1 if ``i`` is a responsible box. + :return: an array of shape ``(tree.nboxes,)`` whose i-th entry is 1 if ``i`` + is an ancestor of the responsible boxes specified by *responsible_boxes_mask*. """ - ancestor_boxes = cl_array.zeros(queue, (traversal.tree.nboxes,), dtype=np.int8) + ancestor_boxes = actx.np.zeros((traversal.tree.nboxes,), dtype=np.int8) ancestor_boxes_last = responsible_boxes_mask.copy() while ancestor_boxes_last.any(): - ancestor_boxes_new = cl_array.zeros( - queue, (traversal.tree.nboxes,), dtype=np.int8) + ancestor_boxes_new = actx.np.zeros((traversal.tree.nboxes,), dtype=np.int8) code.add_parent_boxes_kernel()( ancestor_boxes_last, ancestor_boxes_new, traversal.tree.box_parent_ids) ancestor_boxes_new = ancestor_boxes_new & (~ancestor_boxes) @@ -191,18 +200,18 @@ def get_ancestor_boxes_mask(queue, code, traversal, responsible_boxes_mask): def get_point_src_boxes_mask( - queue, code, traversal, responsible_boxes_mask, ancestor_boxes_mask): + actx, code, traversal, responsible_boxes_mask, ancestor_boxes_mask): """Query the boxes whose sources are needed in order to evaluate potentials of boxes represented by *responsible_boxes_mask*. - :arg responsible_boxes_mask: A :class:`pyopencl.array.Array` object of shape - ``(tree.nboxes,)`` whose i-th entry is 1 if ``i`` is a responsible box. - :param ancestor_boxes_mask: A :class:`pyopencl.array.Array` object of shape - ``(tree.nboxes,)`` whose i-th entry is 1 if ``i`` is either a responsible box - or an ancestor of the responsible boxes. - :return: A :class:`pyopencl.array.Array` object of shape ``(tree.nboxes,)`` whose - i-th entry is 1 if sources of box ``i`` are needed for evaluating the - potentials of targets in boxes represented by *responsible_boxes_mask*. + :arg responsible_boxes_mask: an array of shape ``(tree.nboxes,)`` whose + i-th entry is 1 if ``i`` is a responsible box. + :param ancestor_boxes_mask: an array of shape ``(tree.nboxes,)`` whose + i-th entry is 1 if ``i`` is either a responsible box or an ancestor + of the responsible boxes. + :return: an array of shape ``(tree.nboxes,)`` whose i-th entry is 1 if + sources of box ``i`` are needed for evaluating the potentials of targets + in boxes represented by *responsible_boxes_mask*. """ src_boxes_mask = responsible_boxes_mask.copy() @@ -212,7 +221,7 @@ def get_point_src_boxes_mask( traversal.target_boxes, responsible_boxes_mask, traversal.neighbor_source_boxes_starts, traversal.neighbor_source_boxes_lists, src_boxes_mask, - queue=queue) + queue=actx.queue) # Add list 4 of responsible boxes or ancestor boxes code.add_interaction_list_boxes_kernel()( @@ -220,7 +229,7 @@ def get_point_src_boxes_mask( responsible_boxes_mask | ancestor_boxes_mask, traversal.from_sep_bigger_starts, traversal.from_sep_bigger_lists, src_boxes_mask, - queue=queue) + queue=actx.queue) if traversal.tree.targets_have_extent: # Add list 3 close of responsible boxes @@ -231,7 +240,7 @@ def get_point_src_boxes_mask( traversal.from_sep_close_smaller_starts, traversal.from_sep_close_smaller_lists, src_boxes_mask, - queue=queue + queue=actx.queue ) # Add list 4 close of responsible boxes @@ -242,30 +251,28 @@ def get_point_src_boxes_mask( traversal.from_sep_close_bigger_starts, traversal.from_sep_close_bigger_lists, src_boxes_mask, - queue=queue + queue=actx.queue ) return src_boxes_mask def get_multipole_src_boxes_mask( - queue, code, traversal, responsible_boxes_mask, ancestor_boxes_mask): + actx, code, traversal, responsible_boxes_mask, ancestor_boxes_mask): """Query the boxes whose multipoles are used in order to evaluate potentials of targets in boxes represented by *responsible_boxes_mask*. - :arg responsible_boxes_mask: A :class:`pyopencl.array.Array` object of shape - ``(tree.nboxes,)`` whose i-th entry is 1 if ``i`` is a responsible box. - :arg ancestor_boxes_mask: A :class:`pyopencl.array.Array` object of shape - ``(tree.nboxes,)`` whose i-th entry is 1 if ``i`` is either a responsible box - or an ancestor of the responsible boxes. - :return: A :class:`pyopencl.array.Array` object of shape ``(tree.nboxes,)`` - whose i-th entry is 1 if multipoles of box ``i`` are needed for evaluating - the potentials of targets in boxes represented by *responsible_boxes_mask*. + :arg responsible_boxes_mask: an array of shape ``(tree.nboxes,)`` whose + i-th entry is 1 if ``i`` is a responsible box. + :arg ancestor_boxes_mask: an array of shape ``(tree.nboxes,)`` whose + i-th entry is 1 if ``i`` is either a responsible box or an ancestor of + the responsible boxes. + :return: an array of shape ``(tree.nboxes,)`` whose i-th entry is 1 if + multipoles of box ``i`` are needed for evaluating the potentials of + targets in boxes represented by *responsible_boxes_mask*. """ - multipole_boxes_mask = cl_array.zeros( - queue, (traversal.tree.nboxes,), dtype=np.int8 - ) + multipole_boxes_mask = actx.np.zeros((traversal.tree.nboxes,), dtype=np.int8) # A mpole is used by process p if it is in the List 2 of either a box # owned by p or one of its ancestors. @@ -275,7 +282,7 @@ def get_multipole_src_boxes_mask( traversal.from_sep_siblings_starts, traversal.from_sep_siblings_lists, multipole_boxes_mask, - queue=queue + queue=actx.queue ) multipole_boxes_mask.finish() @@ -287,7 +294,7 @@ def get_multipole_src_boxes_mask( traversal.from_sep_smaller_by_level[ilevel].starts, traversal.from_sep_smaller_by_level[ilevel].lists, multipole_boxes_mask, - queue=queue + queue=actx.queue ) multipole_boxes_mask.finish() @@ -295,11 +302,11 @@ def get_multipole_src_boxes_mask( return multipole_boxes_mask -@dataclass +@dataclass(frozen=True) class BoxMasks: """ - Box masks needed for the distributed calculation. Each of these masks is a - PyOpenCL array with length ``tree.nboxes``, whose `i`-th entry is 1 if box `i` is + Box masks needed for the distributed calculation. Each of these masks is an + array with length ``tree.nboxes``, whose `i`-th entry is 1 if box `i` is set. .. attribute:: responsible_boxes @@ -319,13 +326,13 @@ class BoxMasks: Current process needs multipole expressions in these boxes. """ - responsible_boxes: cl_array.Array - ancestor_boxes: cl_array.Array - point_src_boxes: cl_array.Array - multipole_src_boxes: cl_array.Array + responsible_boxes: Array + ancestor_boxes: Array + point_src_boxes: Array + multipole_src_boxes: Array -def get_box_masks(queue, traversal, responsible_boxes_list): +def get_box_masks(actx, traversal, responsible_boxes_list): """Given the responsible boxes for a rank, this helper function calculates the relevant masks. @@ -333,27 +340,23 @@ def get_box_masks(queue, traversal, responsible_boxes_list): :returns: A :class:`BoxMasks` object of the relevant masks. """ - code = GetBoxMasksCodeContainer(queue.context, traversal.tree.box_id_dtype) - - # FIXME: It is wasteful to copy the whole traversal object into device memory - # here because - # 1) Not all fields are needed. - # 2) For sumpy wrangler, a device traversal object is already available. - traversal = traversal.to_device(queue) + code = GetBoxMasksCodeContainer(actx, traversal.tree.box_id_dtype) - responsible_boxes_mask = np.zeros((traversal.tree.nboxes,), dtype=np.int8) - responsible_boxes_mask[responsible_boxes_list] = 1 - responsible_boxes_mask = cl_array.to_device(queue, responsible_boxes_mask) + responsible_boxes_mask = actx.np.zeros((traversal.tree.nboxes,), dtype=np.int8) + responsible_boxes_mask[responsible_boxes_list] = ( + 1 + actx.np.zeros(responsible_boxes_list.shape, np.int8)) ancestor_boxes_mask = get_ancestor_boxes_mask( - queue, code, traversal, responsible_boxes_mask) + actx, code, traversal, responsible_boxes_mask) point_src_boxes_mask = get_point_src_boxes_mask( - queue, code, traversal, responsible_boxes_mask, ancestor_boxes_mask) + actx, code, traversal, responsible_boxes_mask, ancestor_boxes_mask) multipole_src_boxes_mask = get_multipole_src_boxes_mask( - queue, code, traversal, responsible_boxes_mask, ancestor_boxes_mask) + actx, code, traversal, responsible_boxes_mask, ancestor_boxes_mask) return BoxMasks( - responsible_boxes_mask, ancestor_boxes_mask, point_src_boxes_mask, + responsible_boxes_mask, + ancestor_boxes_mask, + point_src_boxes_mask, multipole_src_boxes_mask) diff --git a/boxtree/fmm.py b/boxtree/fmm.py index 4be5c53e..a26024ef 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -345,7 +345,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, :arg expansion_wrangler: An object exhibiting the :class:`ExpansionWranglerInterface`. For distributed implementation, this wrangler should be a subclass of - :class:`boxtree.distributed.calculation.DistributedExpansionWrangler`. + :class:`boxtree.distributed.calculation.DistributedExpansionWranglerMixin`. :arg src_weight_vecs: A sequence of source 'density/weights/charges'. Passed unmodified to *expansion_wrangler*. For distributed implementation, this argument is only significant on the root rank, but From d7fd3e650a09ecd0f85e8b1aeed22e04e7ba638b Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Wed, 22 Jun 2022 16:07:10 +0300 Subject: [PATCH 15/34] add tests for DeviceDataRecord based on arraycontext --- boxtree/array_context.py | 176 +++++++++++++++++++++++++++++++++++++-- test/test_tools.py | 43 ++++++++-- test/testlib.py | 18 ++++ 3 files changed, 223 insertions(+), 14 deletions(-) create mode 100644 test/testlib.py diff --git a/boxtree/array_context.py b/boxtree/array_context.py index f6a9ea55..45ece32b 100644 --- a/boxtree/array_context.py +++ b/boxtree/array_context.py @@ -23,25 +23,28 @@ THE SOFTWARE. """ -from arraycontext import PyOpenCLArrayContext as PyOpenCLArrayContextBase +import numpy as np +from arraycontext import ( # noqa: F401 + PyOpenCLArrayContext as PyOpenCLArrayContextBase, + deserialize_container, + rec_map_array_container, + serialize_container, + with_array_context, +) from arraycontext.pytest import ( _PytestPyOpenCLArrayContextFactoryWithClass, register_pytest_array_context_factory, ) +from pyopencl.algorithm import BuiltList + __doc__ = """ .. autoclass:: PyOpenCLArrayContext """ -def _acf(): - import pyopencl as cl - ctx = cl.create_some_context() - queue = cl.CommandQueue(ctx) - - return PyOpenCLArrayContext(queue) - +# {{{ array context class PyOpenCLArrayContext(PyOpenCLArrayContextBase): def transform_loopy_program(self, t_unit): @@ -54,7 +57,158 @@ def transform_loopy_program(self, t_unit): "Did you use arraycontext.make_loopy_program " "to create this kernel?") - return super().transform_loopy_program(t_unit) + return t_unit + + # NOTE: _rec_map_container is copied from arraycontext wholesale and should + # be kept in sync as much as possible! + + def _rec_map_container(self, func, array, allowed_types=None, *, + default_scalar=None, strict=False): + import arraycontext.impl.pyopencl.taggable_cl_array as tga + + if allowed_types is None: + allowed_types = (tga.TaggableCLArray,) + + def _wrapper(ary): + # NOTE: this is copied verbatim from arraycontext and this is the + # only change to allow optional fields inside containers + if ary is None: + return ary + + if isinstance(ary, allowed_types): + return func(ary) + elif not strict and isinstance(ary, self.array_types): + from warnings import warn + warn(f"Invoking {type(self).__name__}.{func.__name__[1:]} with " + f"{type(ary).__name__} will be unsupported in 2025. Use " + "'to_tagged_cl_array' to convert instances to TaggableCLArray.", + DeprecationWarning, stacklevel=2) + return func(tga.to_tagged_cl_array(ary)) + elif np.isscalar(ary): + if default_scalar is None: + return ary + else: + return np.array(ary).dtype.type(default_scalar) + else: + raise TypeError( + f"{type(self).__name__}.{func.__name__[1:]} invoked with " + f"an unsupported array type: got '{type(ary).__name__}', " + f"but expected one of {allowed_types}") + + return rec_map_array_container(_wrapper, array) + +# }}} + + +# {{{ dataclass array container + +def dataclass_array_container(cls: type) -> type: + """A decorator based on :func:`arraycontext.dataclass_array_container` + that allows :class:`typing.Optional` containers. + """ + + from dataclasses import is_dataclass + from types import UnionType + from typing import Union, get_args, get_origin + + from arraycontext.container import is_array_container_type + from arraycontext.container.dataclass import ( + _Field, + _get_annotated_fields, + _inject_dataclass_serialization, + ) + + assert is_dataclass(cls) + + def is_array_type(tp: type, /) -> bool: + if tp is np.ndarray: + from warnings import warn + warn("Encountered 'numpy.ndarray' in a dataclass_array_container. " + "This is deprecated and will stop working in 2026. " + "If you meant an object array, use pytools.obj_array.ObjectArray. " + "For other uses, file an issue to discuss.", + DeprecationWarning, stacklevel=3) + return True + + from arraycontext import Array + return tp is Array or is_array_container_type(tp) + + def is_array_field(f: _Field) -> bool: + field_type = f.type + assert not isinstance(field_type, str) + + origin = get_origin(field_type) + if origin in (Union, UnionType): + return all( + (is_array_type(arg) or arg is type(None)) + for arg in get_args(field_type)) + + if not f.init: + raise ValueError( + f"Field with 'init=False' not allowed: '{f.name}'") + + # NOTE: + # * GenericAlias catches `list`, `tuple`, etc. + # * `_BaseGenericAlias` catches `List`, `Tuple`, `Callable`, etc. + # * `_SpecialForm` catches `Any`, `Literal`, `Optional`, etc. + from types import GenericAlias + from typing import ( # type: ignore[attr-defined] + _BaseGenericAlias, + _SpecialForm, + ) + if isinstance(field_type, GenericAlias | _BaseGenericAlias | _SpecialForm): + # NOTE: anything except a Union is not an array + return False + + return is_array_type(field_type) + + from pytools import partition + + fields = _get_annotated_fields(cls) + array_fields, non_array_fields = partition(is_array_field, fields) + + if not array_fields: + raise ValueError(f"'{cls}' must have fields with array container type " + "in order to use the 'dataclass_array_container' decorator") + + return _inject_dataclass_serialization(cls, array_fields, non_array_fields) + +# }}} + + +# {{{ serialization + +# NOTE: BuiltList is serialized explicitly here because pyopencl cannot depend +# on arraycontext machinery. + +@serialize_container.register(BuiltList) +def _serialize_built_list(obj: BuiltList): + return ( + ("starts", obj.starts), + ("lists", obj.lists), + ("nonempty_indices", obj.nonempty_indices), + ("compressed_indices", obj.compressed_indices), + ) + + +@deserialize_container.register(BuiltList) +def _deserialize_built_list(template: BuiltList, iterable): + return type(template)( + count=template.count, + num_nonempty_lists=template.num_nonempty_lists, + **dict(iterable)) + +# }}} + + +# {{{ pytest + +def _acf(): + import pyopencl as cl + ctx = cl.create_some_context() + queue = cl.CommandQueue(ctx) + + return PyOpenCLArrayContext(queue) class PytestPyOpenCLArrayContextFactory( @@ -64,3 +218,7 @@ class PytestPyOpenCLArrayContextFactory( register_pytest_array_context_factory("boxtree.pyopencl", PytestPyOpenCLArrayContextFactory) + +# }}} + +# vim: fdm=marker diff --git a/test/test_tools.py b/test/test_tools.py index 431fca31..4f73e636 100644 --- a/test/test_tools.py +++ b/test/test_tools.py @@ -101,7 +101,7 @@ def test_masked_matrix_compression(actx_factory, order): actx = actx_factory() from boxtree.tools import MaskCompressorKernel - matcompr = MaskCompressorKernel(actx.context) + matcompr = MaskCompressorKernel(actx) n = 40 m = 10 @@ -110,7 +110,7 @@ def test_masked_matrix_compression(actx_factory, order): arr = (rng.random((n, m)) > 0.5).astype(np.int8).copy(order=order) d_arr = actx.from_numpy(arr) - arr_starts, arr_lists, _evt = matcompr(actx.queue, d_arr) + arr_starts, arr_lists, _evt = matcompr(actx, d_arr) arr_starts = actx.to_numpy(arr_starts) arr_lists = actx.to_numpy(arr_lists) @@ -128,14 +128,14 @@ def test_masked_list_compression(actx_factory): rng = np.random.default_rng(seed=42) from boxtree.tools import MaskCompressorKernel - listcompr = MaskCompressorKernel(actx.context) + listcompr = MaskCompressorKernel(actx) n = 20 arr = (rng.random(n) > 0.5).astype(np.int8) d_arr = actx.from_numpy(arr) - arr_list, _evt = listcompr(actx.queue, d_arr) + arr_list, _evt = listcompr(actx, d_arr) arr_list = actx.to_numpy(arr_list) assert set(arr_list) == set(arr.nonzero()[0]) @@ -168,6 +168,39 @@ def test_device_record(actx_factory): for i in range(3): assert np.array_equal(record_host.obj_array[i], record.obj_array[i]) + +def test_device_record_array_context(actx_factory): + actx = actx_factory() + + from testlib import MyDeviceDataRecord + + from pytools.obj_array import new_1d + + rng = np.random.default_rng() + record = MyDeviceDataRecord( + array=rng.random(128), + obj_array=new_1d([rng.random(128) for _ in range(3)]), + opt_array=None, + value=3) + + actx_record = actx.from_numpy(record) + assert actx_record.array.queue is actx.queue + + frozen_record = actx.freeze(actx_record) + assert frozen_record.array.queue is None + + thawed_record = actx.thaw(frozen_record) + assert actx_record.array.queue is actx.queue + + host_record = actx.to_numpy(thawed_record) + assert isinstance(host_record.array, np.ndarray) + + assert record.value == host_record.value + assert np.allclose(record.array, host_record.array) + assert np.all([ + np.allclose(record.obj_array[i], host_record.obj_array[i]) for i in range(3) + ]) + # }}} @@ -179,7 +212,7 @@ def test_device_record(actx_factory): def test_particle_array(actx_factory, array_factory, dim, dtype): actx = actx_factory() - particles = array_factory(actx.queue, 1000, dim, dtype) + particles = array_factory(actx, 1000, dim, dtype) assert len(particles) == dim assert all(len(particles[0]) == len(axis) for axis in particles) diff --git a/test/testlib.py b/test/testlib.py new file mode 100644 index 00000000..e82cf680 --- /dev/null +++ b/test/testlib.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np # noqa: TC002 + +from arraycontext import Array # noqa: TC001 + +from boxtree.array_context import dataclass_array_container + + +@dataclass_array_container +@dataclass(frozen=True) +class MyDeviceDataRecord: + array: Array + obj_array: np.ndarray + opt_array: Array | None + value: float From 40d205f3def955ee2b6b5e3ca63ab79e84d29132 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Wed, 22 Jun 2022 16:13:02 +0300 Subject: [PATCH 16/34] port test_traversal to arraycontext --- test/test_traversal.py | 53 +++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/test/test_traversal.py b/test/test_traversal.py index 3b032b6d..813f1165 100644 --- a/test/test_traversal.py +++ b/test/test_traversal.py @@ -59,22 +59,21 @@ def test_tree_connectivity(actx_factory, dims, sources_are_targets): actx = actx_factory() dtype = np.float64 - sources = make_normal_particle_array(actx.queue, 1 * 10**5, dims, dtype) + sources = make_normal_particle_array(actx, 1 * 10**5, dims, dtype) if sources_are_targets: targets = None else: - targets = make_normal_particle_array(actx.queue, 2 * 10**5, dims, dtype) + targets = make_normal_particle_array(actx, 2 * 10**5, dims, dtype) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - tree, _ = tb(actx.queue, sources, max_particles_in_box=30, - targets=targets, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, sources, max_particles_in_box=30, targets=targets, debug=True) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context) - trav, _ = tg(actx.queue, tree, debug=True) - tree = tree.get(queue=actx.queue) - trav = trav.get(queue=actx.queue) + tg = FMMTraversalBuilder(actx) + trav, _ = tg(actx, tree, debug=True) + tree = actx.to_numpy(tree) + trav = actx.to_numpy(trav) levels = tree.box_levels parents = tree.box_parent_ids.T @@ -290,17 +289,15 @@ def test_plot_traversal(actx_factory, well_sep_is_n_away=1, visualize=False): for i in range(dims)]) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context, well_sep_is_n_away=well_sep_is_n_away) - trav, _ = tg(actx.queue, tree) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=well_sep_is_n_away) + trav, _ = tg(actx, tree) - tree = tree.get(queue=actx.queue) - trav = trav.get(queue=actx.queue) + tree = actx.to_numpy(tree) + trav = actx.to_numpy(trav) from boxtree.visualization import TreePlotter plotter = TreePlotter(tree) @@ -343,10 +340,8 @@ def test_from_sep_siblings_translation_and_rotation_classes( for i in range(dims)]) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) # }}} @@ -356,14 +351,14 @@ def test_from_sep_siblings_translation_and_rotation_classes( from boxtree.translation_classes import TranslationClassesBuilder from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context, well_sep_is_n_away=well_sep_is_n_away) - trav, _ = tg(actx.queue, tree) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=well_sep_is_n_away) + trav, _ = tg(actx, tree) - rb = RotationClassesBuilder(actx.context) - result, _ = rb(actx.queue, trav, tree) + rb = RotationClassesBuilder(actx) + result, _ = rb(actx, trav, tree) - tb = TranslationClassesBuilder(actx.context) - result_tb, _ = tb(actx.queue, trav, tree) + tb = TranslationClassesBuilder(actx) + result_tb, _ = tb(actx, trav, tree) rot_classes = actx.to_numpy( result.from_sep_siblings_rotation_classes) @@ -375,8 +370,8 @@ def test_from_sep_siblings_translation_and_rotation_classes( distance_vectors = actx.to_numpy( result_tb.from_sep_siblings_translation_class_to_distance_vector) - tree = tree.get(queue=actx.queue) - trav = trav.get(queue=actx.queue) + tree = actx.to_numpy(tree) + trav = actx.to_numpy(trav) centers = tree.box_centers.T From fad7d42026bdb7729d5ad3abbffa7162c63e0b37 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Thu, 23 Jun 2022 16:25:04 +0300 Subject: [PATCH 17/34] port test_tree to arraycontext --- test/test_tree.py | 177 +++++++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 98 deletions(-) diff --git a/test/test_tree.py b/test/test_tree.py index e4c416ed..fd660fdb 100644 --- a/test/test_tree.py +++ b/test/test_tree.py @@ -30,13 +30,10 @@ import pytest from arraycontext import pytest_generate_tests_for_array_contexts -import pytools.obj_array as obj_array +from pytools import obj_array -from boxtree.array_context import ( - PytestPyOpenCLArrayContextFactory, - _acf, # noqa: F401 -) -from boxtree.tools import make_normal_particle_array +from boxtree.array_context import PytestPyOpenCLArrayContextFactory, _acf # noqa: F401 +from boxtree.tools import AXIS_NAMES, make_normal_particle_array logger = logging.getLogger(__name__) @@ -55,18 +52,17 @@ def test_bounding_box(actx_factory, dtype, dims, nparticles): actx = actx_factory() from boxtree.bounding_box import BoundingBoxFinder - from boxtree.tools import AXIS_NAMES - bbf = BoundingBoxFinder(actx.context) + bbf = BoundingBoxFinder(actx) axis_names = AXIS_NAMES[:dims] logger.info("%s - %s %s", dtype, dims, nparticles) - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) bbox_min = [np.min(actx.to_numpy(x)) for x in particles] bbox_max = [np.max(actx.to_numpy(x)) for x in particles] - bbox_cl, _evt = bbf(particles, radii=None) + bbox_cl, _evt = bbf(actx, particles, radii=None) bbox_cl = actx.to_numpy(bbox_cl) bbox_min_cl = np.empty(dims, dtype) @@ -109,21 +105,19 @@ def run_build_test(builder, actx, dims, dtype, nparticles, visualize, logger.info(75 * "-") - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) if visualize: import matplotlib.pyplot as pt np_particles = actx.to_numpy(particles) pt.plot(np_particles[0], np_particles[1], "x") - actx.queue.finish() - - tree, _ = builder(actx.queue, particles, + tree, _ = builder(actx, particles, max_particles_in_box=max_particles_in_box, refine_weights=refine_weights, max_leaf_refine_weight=max_leaf_refine_weight, debug=True, **kwargs) - tree = tree.get(queue=actx.queue) + tree = actx.to_numpy(tree) sorted_particles = np.array(list(tree.sources)) @@ -242,7 +236,7 @@ def test_single_box_particle_tree(actx_factory, dtype, dims, visualize=False): actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) run_build_test(builder, actx, dims, dtype, 4, max_particles_in_box=30, visualize=visualize) @@ -253,7 +247,7 @@ def test_two_level_particle_tree(actx_factory, dtype, dims, visualize=False): actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) run_build_test(builder, actx, dims, dtype, 50, max_particles_in_box=30, visualize=visualize) @@ -264,7 +258,7 @@ def test_unpruned_particle_tree(actx_factory, dtype, dims, visualize=False): actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) # test unpruned tree build run_build_test(builder, actx, dims, dtype, 10**5, @@ -277,7 +271,7 @@ def test_particle_tree_with_reallocations( actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) run_build_test(builder, actx, dims, dtype, 10**5, max_particles_in_box=30, visualize=visualize, nboxes_guess=5) @@ -289,7 +283,7 @@ def test_particle_tree_with_many_empty_leaves( actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) run_build_test(builder, actx, dims, dtype, 10**5, max_particles_in_box=5, visualize=visualize) @@ -300,7 +294,7 @@ def test_vanilla_particle_tree(actx_factory, dtype, dims, visualize=False): actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) run_build_test(builder, actx, dims, dtype, 10**5, max_particles_in_box=30, visualize=visualize) @@ -312,7 +306,7 @@ def test_explicit_refine_weights_particle_tree( actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) nparticles = 10**5 @@ -331,7 +325,7 @@ def test_non_adaptive_particle_tree(actx_factory, dtype, dims, visualize=False): actx = actx_factory() from boxtree import TreeBuilder - builder = TreeBuilder(actx.context) + builder = TreeBuilder(actx) run_build_test(builder, actx, dims, dtype, 10**4, max_particles_in_box=30, visualize=visualize, kind="non-adaptive") @@ -350,9 +344,9 @@ def test_source_target_tree(actx_factory, dims, visualize=False): ntargets = 3 * 10**5 dtype = np.float64 - sources = make_normal_particle_array(actx.queue, nsources, dims, dtype, + sources = make_normal_particle_array(actx, nsources, dims, dtype, seed=12) - targets = make_normal_particle_array(actx.queue, ntargets, dims, dtype, + targets = make_normal_particle_array(actx, ntargets, dims, dtype, seed=19) if visualize: @@ -363,12 +357,11 @@ def test_source_target_tree(actx_factory, dims, visualize=False): pt.show() from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - actx.queue.finish() - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=10, debug=True) - tree = tree.get(queue=actx.queue) + tree = actx.to_numpy(tree) sorted_sources = np.array(list(tree.sources)) sorted_targets = np.array(list(tree.targets)) @@ -462,9 +455,9 @@ def test_extent_tree(actx_factory, dims, extent_norm, visualize=False): dtype = np.float64 npoint_sources_per_source = 16 - sources = make_normal_particle_array(actx.queue, nsources, dims, dtype, + sources = make_normal_particle_array(actx, nsources, dims, dtype, seed=12) - targets = make_normal_particle_array(actx.queue, ntargets, dims, dtype, + targets = make_normal_particle_array(actx, ntargets, dims, dtype, seed=19) refine_weights = actx.np.zeros(nsources + ntargets, np.int32) @@ -479,10 +472,10 @@ def test_extent_tree(actx_factory, dims, extent_norm, visualize=False): ) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) actx.queue.finish() - dev_tree, _ = tb(actx.queue, sources, targets=targets, + dev_tree, _ = tb(actx, sources, targets=targets, source_radii=source_radii, target_radii=target_radii, extent_norm=extent_norm, @@ -500,7 +493,7 @@ def test_extent_tree(actx_factory, dims, extent_norm, visualize=False): logger.info("transfer tree, check orderings") - tree = dev_tree.get(queue=actx.queue) + tree = actx.to_numpy(dev_tree) if visualize: import matplotlib.pyplot as pt @@ -661,7 +654,7 @@ def test_extent_tree(actx_factory, dims, extent_norm, visualize=False): ) from boxtree.tree import link_point_sources - dev_tree = link_point_sources(actx.queue, dev_tree, + dev_tree = link_point_sources(actx, dev_tree, point_source_starts, point_sources, debug=True) @@ -681,7 +674,7 @@ def test_leaves_to_balls_query(actx_factory, dims, visualize=False): nparticles = 10**5 dtype = np.float64 - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) if visualize: import matplotlib.pyplot as pt @@ -689,23 +682,23 @@ def test_leaves_to_balls_query(actx_factory, dims, visualize=False): pt.plot(np_particles[0], np_particles[1], "x") from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) + tree = actx.thaw(tree) nballs = 10**4 - ball_centers = make_normal_particle_array(actx.queue, nballs, dims, dtype) + ball_centers = make_normal_particle_array(actx, nballs, dims, dtype) ball_radii = 0.1 + actx.np.zeros(nballs, dtype) from boxtree.area_query import LeavesToBallsLookupBuilder - lblb = LeavesToBallsLookupBuilder(actx.context) + lblb = LeavesToBallsLookupBuilder(actx) - lbl, _ = lblb(actx.queue, tree, ball_centers, ball_radii) + lbl, _ = lblb(actx, tree, ball_centers, ball_radii) # get data to host for test - tree = tree.get(queue=actx.queue) - lbl = lbl.get(queue=actx.queue) + tree = actx.to_numpy(tree) + lbl = actx.to_numpy(lbl) ball_centers = np.array([actx.to_numpy(x) for x in ball_centers]).T ball_radii = actx.to_numpy(ball_radii) @@ -738,13 +731,12 @@ def run_area_query_test(actx, tree, ball_centers, ball_radii): Performs an area query and checks that the result is as expected. """ from boxtree.area_query import AreaQueryBuilder - aqb = AreaQueryBuilder(actx.context) - - area_query, _ = aqb(actx.queue, tree, ball_centers, ball_radii) + aqb = AreaQueryBuilder(actx) + area_query, _ = aqb(actx, tree, ball_centers, ball_radii) # Get data to host for test. - tree = tree.get(queue=actx.queue) - area_query = area_query.get(queue=actx.queue) + tree = actx.to_numpy(tree) + area_query = actx.to_numpy(area_query) ball_centers = np.array([actx.to_numpy(x) for x in ball_centers]).T ball_radii = actx.to_numpy(ball_radii) @@ -785,7 +777,7 @@ def test_area_query(actx_factory, dims, visualize=False): nparticles = 10**5 dtype = np.float64 - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) if visualize: import matplotlib.pyplot as pt @@ -793,13 +785,11 @@ def test_area_query(actx_factory, dims, visualize=False): pt.plot(np_particles[0], np_particles[1], "x") from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) nballs = 10**4 - ball_centers = make_normal_particle_array(actx.queue, nballs, dims, dtype) + ball_centers = make_normal_particle_array(actx, nballs, dims, dtype) ball_radii = 0.1 + actx.np.zeros(nballs, dtype) run_area_query_test(actx, tree, ball_centers, ball_radii) @@ -818,7 +808,7 @@ def test_area_query_balls_outside_bbox(actx_factory, dims, visualize=False): nparticles = 10**4 dtype = np.float64 - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) if visualize: import matplotlib.pyplot as pt @@ -826,10 +816,8 @@ def test_area_query_balls_outside_bbox(actx_factory, dims, visualize=False): pt.plot(np_particles[0], np_particles[1], "x") from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) nballs = 10**4 bbox_min = tree.bounding_box[0].min() @@ -854,7 +842,7 @@ def test_area_query_elwise(actx_factory, dims, visualize=False): nparticles = 10**5 dtype = np.float64 - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) if visualize: import matplotlib.pyplot as pt @@ -862,13 +850,11 @@ def test_area_query_elwise(actx_factory, dims, visualize=False): pt.plot(np_particles[0], np_particles[1], "x") from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) nballs = 10**4 - ball_centers = make_normal_particle_array(actx.queue, nballs, dims, dtype) + ball_centers = make_normal_particle_array(actx, nballs, dims, dtype) ball_radii = 0.1 + actx.np.zeros(nballs, dtype) from boxtree.area_query import AreaQueryElementwiseTemplate, PeerListFinder @@ -888,10 +874,10 @@ def test_area_query_elwise(actx_factory, dims, visualize=False): """, leaf_found_op="") - peer_lists, evt = PeerListFinder(actx.context)(actx.queue, tree) + peer_lists, evt = PeerListFinder(actx)(actx, tree) kernel = template.generate( - actx.context, + actx.queue.context, dims, tree.coord_dtype, tree.box_id_dtype, @@ -922,8 +908,7 @@ def test_level_restriction( dtype = np.float64 from boxtree.tools import make_surface_particle_array - particles = make_surface_particle_array( - actx.queue, nparticles, dims, dtype, seed=15) + particles = make_surface_particle_array(actx, nparticles, dims, dtype, seed=15) if visualize: import matplotlib.pyplot as pt @@ -931,10 +916,8 @@ def test_level_restriction( pt.plot(np_particles[0], np_particles[1], "x") from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree_dev, _ = tb(actx.queue, particles, + tb = TreeBuilder(actx) + tree_dev, _ = tb(actx, particles, kind="adaptive-level-restricted", max_particles_in_box=30, debug=True, skip_prune=skip_prune, lr_lookbehind=lookbehind, @@ -949,18 +932,18 @@ def find_neighbors(leaf_box_centers, leaf_box_radii): # Note that since this comes from an area query, the self box will be # included in the neighbor list. from boxtree.area_query import AreaQueryBuilder - aqb = AreaQueryBuilder(actx.context) + aqb = AreaQueryBuilder(actx) ball_radii = actx.from_numpy(np.min(leaf_box_radii) / 2 + leaf_box_radii) leaf_box_centers = [actx.from_numpy(axis) for axis in leaf_box_centers] - area_query, _ = aqb(actx.queue, tree_dev, leaf_box_centers, ball_radii) - area_query = area_query.get(queue=actx.queue) + area_query, _ = aqb(actx, tree_dev, leaf_box_centers, ball_radii) + area_query = actx.to_numpy(area_query) return (area_query.leaves_near_ball_starts, area_query.leaves_near_ball_lists) # Get data to host for test. - tree = tree_dev.get(queue=actx.queue) + tree = actx.to_numpy(tree_dev) # Find leaf boxes. from boxtree import box_flags_enum @@ -1004,7 +987,7 @@ def test_space_invader_query(actx_factory, dims, dtype, visualize=False): dtype = np.dtype(dtype) nparticles = 10**5 - particles = make_normal_particle_array(actx.queue, nparticles, dims, dtype) + particles = make_normal_particle_array(actx, nparticles, dims, dtype) if visualize: import matplotlib.pyplot as pt @@ -1012,29 +995,27 @@ def test_space_invader_query(actx_factory, dims, dtype, visualize=False): pt.plot(np_particles[0], np_particles[1], "x") from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - - actx.queue.finish() - tree, _ = tb(actx.queue, particles, max_particles_in_box=30, debug=True) + tb = TreeBuilder(actx) + tree, _ = tb(actx, particles, max_particles_in_box=30, debug=True) nballs = 10**4 - ball_centers = make_normal_particle_array(actx.queue, nballs, dims, dtype) + ball_centers = make_normal_particle_array(actx, nballs, dims, dtype) ball_radii = 0.1 + actx.np.zeros(nballs, dtype) from boxtree.area_query import LeavesToBallsLookupBuilder, SpaceInvaderQueryBuilder - siqb = SpaceInvaderQueryBuilder(actx.context) + siqb = SpaceInvaderQueryBuilder(actx) # We can use leaves-to-balls lookup to get the set of overlapping balls for # each box, and from there to compute the outer space invader distance. - lblb = LeavesToBallsLookupBuilder(actx.context) + lblb = LeavesToBallsLookupBuilder(actx) - siq, _ = siqb(actx.queue, tree, ball_centers, ball_radii) - lbl, _ = lblb(actx.queue, tree, ball_centers, ball_radii) + siq, _ = siqb(actx, tree, ball_centers, ball_radii) + lbl, _ = lblb(actx, tree, ball_centers, ball_radii) # get data to host for test - tree = tree.get(queue=actx.queue) - siq = siq.get(queue=actx.queue) - lbl = lbl.get(queue=actx.queue) + tree = actx.to_numpy(tree) + siq = actx.to_numpy(siq) + lbl = actx.to_numpy(lbl) ball_centers = np.array([actx.to_numpy(x) for x in ball_centers]) ball_radii = actx.to_numpy(ball_radii) @@ -1065,7 +1046,7 @@ def test_space_invader_query(actx_factory, dims, dtype, visualize=False): @pytest.mark.opencl @pytest.mark.parametrize("dims", [2, 3]) -def test_same_tree_with_zero_weight_particles(actx_factory, dims): +def test_same_tree_with_zero_weight_particles(actx_factory, dims, visualize=False): actx = actx_factory() ntargets_values = [300, 400, 500] @@ -1073,7 +1054,7 @@ def test_same_tree_with_zero_weight_particles(actx_factory, dims): nsources = 20 from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) trees = [] @@ -1094,18 +1075,18 @@ def test_same_tree_with_zero_weight_particles(actx_factory, dims): refine_weights[:nsources] = 1 refine_weights[nsources:] = 0 - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, target_radii=target_radii, stick_out_factor=stick_out_factor, max_leaf_refine_weight=10, refine_weights=refine_weights, debug=True) - tree = tree.get(queue=actx.queue) + tree = actx.to_numpy(tree) trees.append(tree) print("TREE:", tree.nboxes) - if 0: + if visualize: import matplotlib.pyplot as plt for tree in trees: plt.figure() @@ -1122,12 +1103,12 @@ def test_max_levels_error(actx_factory): actx = actx_factory() from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) sources = [actx.np.zeros(11, np.float64) for i in range(2)] from boxtree.tree_build import MaxLevelsExceeded with pytest.raises(MaxLevelsExceeded): - _tree, _ = tb(actx.queue, sources, max_particles_in_box=10, debug=True) + _tree, _ = tb(actx, sources, max_particles_in_box=10, debug=True) # }}} From 27b122b0b501da5ae52a386e3dc66ad7e5443d08 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Thu, 23 Jun 2022 21:58:11 +0300 Subject: [PATCH 18/34] port test_fmm to arraycontext --- test/test_fmm.py | 114 ++++++++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 55 deletions(-) diff --git a/test/test_fmm.py b/test/test_fmm.py index 91f324e6..40665d4c 100644 --- a/test/test_fmm.py +++ b/test/test_fmm.py @@ -181,7 +181,7 @@ def test_fmm_completeness(actx_factory, dims, nsources_req, ntargets_req, dtype = np.float64 try: - sources = source_gen(actx.queue, nsources_req, dims, dtype, seed=15) + sources = source_gen(actx, nsources_req, dims, dtype, seed=15) nsources = len(sources[0]) if ntargets_req is None: @@ -189,7 +189,7 @@ def test_fmm_completeness(actx_factory, dims, nsources_req, ntargets_req, targets = None ntargets = ntargets_req else: - targets = target_gen(actx.queue, ntargets_req, dims, dtype, seed=16) + targets = target_gen(actx, ntargets_req, dims, dtype, seed=16) ntargets = len(targets[0]) except ImportError: pytest.skip("loopy not available, but needed for particle array " @@ -211,40 +211,40 @@ def test_fmm_completeness(actx_factory, dims, nsources_req, ntargets_req, target_radii = None from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=30, source_radii=source_radii, target_radii=target_radii, debug=True, stick_out_factor=0.25, extent_norm=extent_norm) if 0: - tree = tree.get(queue=actx.queue) + tree = actx.to_numpy(tree) tree.plot() import matplotlib.pyplot as pt pt.show() from boxtree.traversal import FMMTraversalBuilder - tbuild = FMMTraversalBuilder(actx.context, + tbuild = FMMTraversalBuilder(actx, well_sep_is_n_away=well_sep_is_n_away, from_sep_smaller_crit=from_sep_smaller_crit) - trav, _ = tbuild(actx.queue, tree, debug=True) + trav, _ = tbuild(actx, tree, debug=True) if who_has_extent: pre_merge_trav = trav - trav = trav.merge_close_lists(actx.queue) + trav = trav.merge_close_lists(actx) # weights = np.random.randn(nsources) weights = np.ones(nsources) weights_sum = np.sum(weights) - host_trav = trav.get(queue=actx.queue) + host_trav = actx.to_numpy(trav) host_tree = host_trav.tree if who_has_extent: - pre_merge_host_trav = pre_merge_trav.get(queue=actx.queue) + pre_merge_host_trav = actx.to_numpy(pre_merge_trav) from boxtree.tree import ParticleListFilter - plfilt = ParticleListFilter(actx.context) + plfilt = ParticleListFilter(actx) tree_indep = ConstantOneTreeIndependentDataForWrangler() @@ -255,16 +255,16 @@ def test_fmm_completeness(actx_factory, dims, nsources_req, ntargets_req, if filter_kind == "user": filtered_targets = plfilt.filter_target_lists_in_user_order( - actx.queue, tree, flags) + actx, tree, flags) wrangler = ConstantOneExpansionWranglerWithFilteredTargetsInUserOrder( tree_indep, host_trav, - filtered_targets.get(queue=actx.queue)) + actx.to_numpy(filtered_targets)) elif filter_kind == "tree": filtered_targets = plfilt.filter_target_lists_in_tree_order( - actx.queue, tree, flags) + actx, tree, flags) wrangler = ConstantOneExpansionWranglerWithFilteredTargetsInTreeOrder( tree_indep, host_trav, - filtered_targets.get(queue=actx.queue)) + actx.to_numpy(filtered_targets)) else: raise ValueError("unsupported value of 'filter_kind'") else: @@ -405,25 +405,25 @@ def test_pyfmmlib_fmm(actx_factory, dims, use_dipoles, helmholtz_k): ntargets = 1000 dtype = np.float64 - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) + sources = p_normal(actx, nsources, dims, dtype, seed=15) targets = ( - p_normal(actx.queue, ntargets, dims, dtype, seed=18) + p_normal(actx, ntargets, dims, dtype, seed=18) + np.array([2, 0, 0])[:dims]) - sources_host = particle_array_to_host(sources) - targets_host = particle_array_to_host(targets) + sources_host = particle_array_to_host(actx, sources) + targets_host = particle_array_to_host(actx, targets) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=30, debug=True) from boxtree.traversal import FMMTraversalBuilder - tbuild = FMMTraversalBuilder(actx.context) - trav, _ = tbuild(actx.queue, tree, debug=True) + tbuild = FMMTraversalBuilder(actx) + trav, _ = tbuild(actx, tree, debug=True) - trav = trav.get(queue=actx.queue) + trav = actx.to_numpy(trav) rng = np.random.default_rng(20) weights = rng.uniform(0.0, 1.0, (nsources,)) @@ -514,9 +514,13 @@ def fmm_level_to_order(tree, lev): [knl], exclude_self=False) - _evt, (sumpy_ref_pot,) = p2p( - actx.queue, targets, sources, (weights,), - out_host=True, **sumpy_extra_kwargs) + result, = p2p( + actx, + targets, + sources, + (actx.from_numpy(weights),), + **sumpy_extra_kwargs) + sumpy_ref_pot = actx.to_numpy(result) sumpy_rel_err = ( la.norm(pot - sumpy_ref_pot, np.inf) @@ -557,18 +561,18 @@ def test_pyfmmlib_numerical_stability(actx_factory, dims, helmholtz_k, order): targets = sources * (1 + 1e-3) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=2, debug=True) assert tree.nlevels >= 15 from boxtree.traversal import FMMTraversalBuilder - tbuild = FMMTraversalBuilder(actx.context) - trav, _ = tbuild(actx.queue, tree, debug=True) + tbuild = FMMTraversalBuilder(actx) + trav, _ = tbuild(actx, tree, debug=True) - trav = trav.get(queue=actx.queue) + trav = actx.to_numpy(trav) weights = np.ones_like(sources[0]) from boxtree.pyfmmlib_integration import ( @@ -588,7 +592,7 @@ def fmm_level_to_order(tree, lev): tree_indep, trav, helmholtz_k=helmholtz_k, fmm_level_to_order=fmm_level_to_order, - rotation_data=FMMLibRotationData(actx.queue, trav)) + rotation_data=FMMLibRotationData(actx, trav)) from boxtree.fmm import drive_fmm pot = drive_fmm(wrangler, (weights,)) @@ -628,8 +632,8 @@ def test_interaction_list_particle_count_thresholding(actx_factory, enable_exten from_sep_smaller_min_nsources_cumul = 1 + max_particles_in_box from boxtree.fmm import drive_fmm - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) - targets = p_normal(actx.queue, ntargets, dims, dtype, seed=15) + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = p_normal(actx, ntargets, dims, dtype, seed=15) rng = np.random.default_rng(22) if enable_extents: @@ -640,22 +644,22 @@ def test_interaction_list_particle_count_thresholding(actx_factory, enable_exten target_radii = None from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=max_particles_in_box, target_radii=target_radii, debug=True, stick_out_factor=0.25) from boxtree.traversal import FMMTraversalBuilder - tbuild = FMMTraversalBuilder(actx.context) - trav, _ = tbuild(actx.queue, tree, debug=True, + tbuild = FMMTraversalBuilder(actx) + trav, _ = tbuild(actx, tree, debug=True, _from_sep_smaller_min_nsources_cumul=from_sep_smaller_min_nsources_cumul) weights = np.ones(nsources) weights_sum = np.sum(weights) - host_trav = trav.get(queue=actx.queue) + host_trav = actx.to_numpy(trav) tree_indep = ConstantOneTreeIndependentDataForWrangler() wrangler = ConstantOneExpansionWrangler(tree_indep, host_trav) @@ -683,8 +687,8 @@ def test_fmm_float32(actx_factory, enable_extents): dtype = np.float32 from boxtree.fmm import drive_fmm - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) - targets = p_normal(actx.queue, ntargets, dims, dtype, seed=15) + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = p_normal(actx, ntargets, dims, dtype, seed=15) rng = np.random.default_rng(12) if enable_extents: @@ -695,21 +699,21 @@ def test_fmm_float32(actx_factory, enable_extents): target_radii = None from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=30, target_radii=target_radii, debug=True, stick_out_factor=0.25) from boxtree.traversal import FMMTraversalBuilder - tbuild = FMMTraversalBuilder(actx.context) - trav, _ = tbuild(actx.queue, tree, debug=True) + tbuild = FMMTraversalBuilder(actx) + trav, _ = tbuild(actx, tree, debug=True) weights = np.ones(nsources) weights_sum = np.sum(weights) - host_trav = trav.get(queue=actx.queue) + host_trav = actx.to_numpy(trav) tree_indep = ConstantOneTreeIndependentDataForWrangler() wrangler = ConstantOneExpansionWrangler(tree_indep, host_trav) @@ -735,21 +739,21 @@ def test_fmm_with_optimized_3d_m2l(actx_factory, nsrcntgts, helmholtz_k, nsources = ntargets = nsrcntgts // 2 dtype = np.float64 - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) + sources = p_normal(actx, nsources, dims, dtype, seed=15) targets = ( - p_normal(actx.queue, ntargets, dims, dtype, seed=18) + p_normal(actx, ntargets, dims, dtype, seed=18) + np.array([2, 0, 0])[:dims]) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) - tree, _ = tb(actx.queue, sources, targets=targets, + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=30, debug=True) from boxtree.traversal import FMMTraversalBuilder - tbuild = FMMTraversalBuilder(actx.context) - trav, _ = tbuild(actx.queue, tree, debug=True) - trav = trav.get(queue=actx.queue) + tbuild = FMMTraversalBuilder(actx) + trav, _ = tbuild(actx, tree, debug=True) + trav = actx.to_numpy(trav) rng = np.random.default_rng(20) weights = rng.uniform(0.0, 1.0, (nsources,)) @@ -784,7 +788,7 @@ def fmm_level_to_order(tree, lev): tree_indep, trav, helmholtz_k=helmholtz_k, fmm_level_to_order=fmm_level_to_order, - rotation_data=FMMLibRotationData(actx.queue, trav)) + rotation_data=FMMLibRotationData(actx, trav)) from boxtree.fmm import drive_fmm From 5715a2914fcbe23a3f54bcc4a78a07c28ee34c1d Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Thu, 23 Jun 2022 21:58:27 +0300 Subject: [PATCH 19/34] port test_cost_model to arraycontext --- test/test_cost_model.py | 101 ++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/test/test_cost_model.py b/test/test_cost_model.py index 02e929d9..3dbccc30 100644 --- a/test/test_cost_model.py +++ b/test/test_cost_model.py @@ -35,10 +35,7 @@ import pytest from arraycontext import pytest_generate_tests_for_array_contexts -from boxtree.array_context import ( - PytestPyOpenCLArrayContextFactory, - _acf, # noqa: F401 -) +from boxtree.array_context import PytestPyOpenCLArrayContextFactory, _acf # noqa: F401 from boxtree.cost import ( FMMCostModel, _PythonFMMCostModel, @@ -67,8 +64,8 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt # {{{ Generate sources, targets and target_radii from boxtree.tools import make_normal_particle_array as p_normal - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) - targets = p_normal(actx.queue, ntargets, dims, dtype, seed=18) + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = p_normal(actx, ntargets, dims, dtype, seed=18) rng = np.random.default_rng(22) target_radii = rng.uniform(0.0, 0.05, (ntargets,)).astype(dtype) @@ -78,16 +75,16 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt # {{{ Generate tree and traversal from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) tree, _ = tb( - actx.queue, sources, targets=targets, target_radii=target_radii, + actx, sources, targets=targets, target_radii=target_radii, stick_out_factor=0.15, max_particles_in_box=30, debug=True ) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context, well_sep_is_n_away=2) - trav_dev, _ = tg(actx.queue, tree, debug=True) - trav = trav_dev.get(queue=actx.queue) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=2) + trav_dev, _ = tg(actx, tree, debug=True) + trav = actx.to_numpy(trav_dev) # }}} @@ -115,12 +112,12 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt context=constant_one_params ) p2m_cost_dev = actx.from_numpy(p2m_cost) - actx.queue.finish() + start_time = time.time() cl_form_multipoles = cl_cost_model.process_form_multipoles( - actx.queue, trav_dev, p2m_cost_dev + actx, trav_dev, p2m_cost_dev ) actx.queue.finish() @@ -130,7 +127,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() python_form_multipoles = python_cost_model.process_form_multipoles( - actx.queue, trav, p2m_cost + actx, trav, p2m_cost ) logger.info("Python time for process_form_multipoles: %gs", @@ -153,7 +150,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt actx.queue.finish() start_time = time.time() cl_coarsen_multipoles = cl_cost_model.process_coarsen_multipoles( - actx.queue, trav_dev, m2m_cost_dev + actx, trav_dev, m2m_cost_dev ) actx.queue.finish() @@ -163,7 +160,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() python_coarsen_multipoles = python_cost_model.process_coarsen_multipoles( - actx.queue, trav, m2m_cost + actx, trav, m2m_cost ) logger.info("Python time for coarsen_multipoles: %gs", @@ -179,10 +176,10 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() cl_ndirect_sources_per_target_box = \ - cl_cost_model.get_ndirect_sources_per_target_box(actx.queue, trav_dev) + cl_cost_model.get_ndirect_sources_per_target_box(actx, trav_dev) cl_direct = cl_cost_model.process_direct( - actx.queue, trav_dev, cl_ndirect_sources_per_target_box, 5.0 + actx, trav_dev, cl_ndirect_sources_per_target_box, 5.0 ) actx.queue.finish() @@ -192,10 +189,10 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() python_ndirect_sources_per_target_box = \ - python_cost_model.get_ndirect_sources_per_target_box(actx.queue, trav) + python_cost_model.get_ndirect_sources_per_target_box(actx, trav) python_direct = python_cost_model.process_direct( - actx.queue, trav, python_ndirect_sources_per_target_box, 5.0 + actx, trav, python_ndirect_sources_per_target_box, 5.0 ) logger.info("Python time for process_direct: %gs", @@ -209,7 +206,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() - cl_direct_aggregate = cl_cost_model.aggregate_over_boxes(cl_direct) + cl_direct_aggregate = cl_cost_model.aggregate_over_boxes(actx, cl_direct) actx.queue.finish() logger.info("OpenCL time for aggregate_over_boxes: %gs", @@ -217,7 +214,9 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() - python_direct_aggregate = python_cost_model.aggregate_over_boxes(python_direct) + python_direct_aggregate = ( + python_cost_model.aggregate_over_boxes(actx, python_direct) + ) logger.info("Python time for aggregate_over_boxes: %gs", time.time() - start_time) @@ -240,14 +239,14 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt actx.queue.finish() start_time = time.time() - cl_m2l_cost = cl_cost_model.process_list2(actx.queue, trav_dev, m2l_cost_dev) + cl_m2l_cost = cl_cost_model.process_list2(actx, trav_dev, m2l_cost_dev) actx.queue.finish() logger.info("OpenCL time for process_list2: %gs", time.time() - start_time) start_time = time.time() - python_m2l_cost = python_cost_model.process_list2(actx.queue, trav, m2l_cost) + python_m2l_cost = python_cost_model.process_list2(actx, trav, m2l_cost) logger.info("Python time for process_list2: %gs", time.time() - start_time) @@ -268,14 +267,14 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt actx.queue.finish() start_time = time.time() - cl_m2p_cost = cl_cost_model.process_list3(actx.queue, trav_dev, m2p_cost_dev) + cl_m2p_cost = cl_cost_model.process_list3(actx, trav_dev, m2p_cost_dev) actx.queue.finish() logger.info("OpenCL time for process_list3: %gs", time.time() - start_time) start_time = time.time() - python_m2p_cost = python_cost_model.process_list3(actx.queue, trav, m2p_cost) + python_m2p_cost = python_cost_model.process_list3(actx, trav, m2p_cost) logger.info("Python time for process_list3: %gs", time.time() - start_time) @@ -296,14 +295,14 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt actx.queue.finish() start_time = time.time() - cl_p2l_cost = cl_cost_model.process_list4(actx.queue, trav_dev, p2l_cost_dev) + cl_p2l_cost = cl_cost_model.process_list4(actx, trav_dev, p2l_cost_dev) actx.queue.finish() logger.info("OpenCL time for process_list4: %gs", time.time() - start_time) start_time = time.time() - python_p2l_cost = python_cost_model.process_list4(actx.queue, trav, p2l_cost) + python_p2l_cost = python_cost_model.process_list4(actx, trav, p2l_cost) logger.info("Python time for process_list4: %gs", time.time() - start_time) @@ -325,7 +324,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() cl_refine_locals_cost = cl_cost_model.process_refine_locals( - actx.queue, trav_dev, l2l_cost_dev + actx, trav_dev, l2l_cost_dev ) actx.queue.finish() @@ -334,7 +333,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() python_refine_locals_cost = python_cost_model.process_refine_locals( - actx.queue, trav, l2l_cost + actx, trav, l2l_cost ) logger.info("Python time for refine_locals: %gs", time.time() - start_time) @@ -357,7 +356,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() cl_l2p_cost = cl_cost_model.process_eval_locals( - actx.queue, trav_dev, l2p_cost_dev) + actx, trav_dev, l2p_cost_dev) actx.queue.finish() logger.info("OpenCL time for process_eval_locals: %gs", @@ -365,7 +364,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt start_time = time.time() python_l2p_cost = python_cost_model.process_eval_locals( - actx.queue, trav, l2p_cost) + actx, trav, l2p_cost) logger.info("Python time for process_eval_locals: %gs", time.time() - start_time) @@ -407,8 +406,8 @@ def fmm_level_to_order(tree, ilevel): # {{{ Generate sources, targets and target_radii from boxtree.tools import make_normal_particle_array as p_normal - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) - targets = p_normal(actx.queue, ntargets, dims, dtype, seed=18) + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = p_normal(actx, ntargets, dims, dtype, seed=18) rng = np.random.default_rng(22) target_radii = rng.uniform(0.0, 0.05, (ntargets,)).astype(dtype) @@ -418,16 +417,16 @@ def fmm_level_to_order(tree, ilevel): # {{{ Generate tree and traversal from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) tree, _ = tb( - actx.queue, sources, targets=targets, target_radii=target_radii, + actx, sources, targets=targets, target_radii=target_radii, stick_out_factor=0.15, max_particles_in_box=30, debug=True ) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context, well_sep_is_n_away=2) - trav_dev, _ = tg(actx.queue, tree, debug=True) - trav = trav_dev.get(queue=actx.queue) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=2) + trav_dev, _ = tg(actx, tree, debug=True) + trav = actx.to_numpy(trav_dev) traversals.append(trav) traversals_dev.append(trav_dev) @@ -470,7 +469,7 @@ def test_params_equal(test_params1, test_params2): level_to_order = level_to_orders[icase] python_model_results.append(python_cost_model.cost_per_stage( - actx.queue, traversal, level_to_order, + actx, traversal, level_to_order, _PythonFMMCostModel.get_unit_calibration_params(), )) @@ -489,7 +488,7 @@ def test_params_equal(test_params1, test_params2): level_to_order = level_to_orders[icase] cl_model_results.append(cl_cost_model.cost_per_stage( - actx.queue, traversal, level_to_order, + actx, traversal, level_to_order, FMMCostModel.get_unit_calibration_params(), )) @@ -542,23 +541,23 @@ def test_cost_model_op_counts_agree_with_constantone_wrangler( actx = actx_factory() from boxtree.tools import make_normal_particle_array as p_normal - sources = p_normal(actx.queue, nsources, dims, dtype, seed=16) - targets = p_normal(actx.queue, ntargets, dims, dtype, seed=19) + sources = p_normal(actx, nsources, dims, dtype, seed=16) + targets = p_normal(actx, ntargets, dims, dtype, seed=19) rng = np.random.default_rng(20) target_radii = rng.uniform(0, 0.04, (ntargets,)).astype(dtype) from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) tree, _ = tb( - actx.queue, sources, targets=targets, target_radii=target_radii, + actx, sources, targets=targets, target_radii=target_radii, stick_out_factor=0.15, max_particles_in_box=30, debug=True ) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context, well_sep_is_n_away=2) - trav_dev, _ = tg(actx.queue, tree, debug=True) - trav = trav_dev.get(queue=actx.queue) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=2) + trav_dev, _ = tg(actx, tree, debug=True) + trav = actx.to_numpy(trav_dev) from boxtree.constant_one import ( ConstantOneExpansionWrangler, @@ -579,7 +578,7 @@ def test_cost_model_op_counts_agree_with_constantone_wrangler( level_to_order = np.array([1 for _ in range(tree.nlevels)]) modeled_time = cost_model.cost_per_stage( - actx.queue, trav_dev, level_to_order, + actx, trav_dev, level_to_order, FMMCostModel.get_unit_calibration_params(), ) @@ -598,10 +597,10 @@ def test_cost_model_op_counts_agree_with_constantone_wrangler( total_cost += timing_data[stage]["ops_elapsed"] per_box_cost = cost_model.cost_per_box( - actx.queue, trav_dev, level_to_order, + actx, trav_dev, level_to_order, FMMCostModel.get_unit_calibration_params(), ) - total_aggregate_cost = cost_model.aggregate_over_boxes(per_box_cost) + total_aggregate_cost = cost_model.aggregate_over_boxes(actx, per_box_cost) assert total_cost == ( total_aggregate_cost From 0ab877c75cf07f81c2b0faa4166a12a0862308d5 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Sun, 26 Jun 2022 20:00:45 +0300 Subject: [PATCH 20/34] port test_distributed to arraycontext --- test/test_distributed.py | 71 ++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/test/test_distributed.py b/test/test_distributed.py index 6f33daf2..6e7df92b 100644 --- a/test/test_distributed.py +++ b/test/test_distributed.py @@ -42,6 +42,7 @@ ) from boxtree.pyfmmlib_integration import ( FMMLibExpansionWrangler, + FMMLibRotationData, FMMLibTreeIndependentDataForWrangler, Kernel, ) @@ -87,7 +88,7 @@ def fmm_level_to_order(tree, level): actx = _acf() from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context, well_sep_is_n_away=2) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=2) tree_indep = FMMLibTreeIndependentDataForWrangler( dims, Kernel.HELMHOLTZ if helmholtz_k else Kernel.LAPLACE) @@ -96,8 +97,8 @@ def fmm_level_to_order(tree, level): if rank == 0: # Generate random particles and source weights from boxtree.tools import make_normal_particle_array as p_normal - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) - targets = p_normal(actx.queue, ntargets, dims, dtype, seed=18) + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = p_normal(actx, ntargets, dims, dtype, seed=18) rng = np.random.default_rng(20) sources_weights = rng.uniform(0.0, 1.0, (nsources,)) @@ -105,19 +106,20 @@ def fmm_level_to_order(tree, level): # Build the tree and interaction lists from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) + tb = TreeBuilder(actx) global_tree_dev, _ = tb( - actx.queue, sources, targets=targets, target_radii=target_radii, + actx, sources, targets=targets, target_radii=target_radii, stick_out_factor=0.25, max_particles_in_box=30, debug=True) - d_trav, _ = tg(actx.queue, global_tree_dev, debug=True) - global_traversal_host = d_trav.get(queue=actx.queue) + d_trav, _ = tg(actx, global_tree_dev, debug=True) + global_traversal_host = actx.to_numpy(d_trav) global_tree_host = global_traversal_host.tree # Get pyfmmlib expansion wrangler wrangler = FMMLibExpansionWrangler( tree_indep, global_traversal_host, - fmm_level_to_order=fmm_level_to_order) + fmm_level_to_order=fmm_level_to_order, + rotation_data=FMMLibRotationData(actx, global_traversal_host)) # Compute FMM with one MPI rank from boxtree.fmm import drive_fmm @@ -131,13 +133,13 @@ def wrangler_factory(local_traversal, global_traversal): ) return DistributedFMMLibExpansionWrangler( - actx.context, comm, tree_indep, local_traversal, global_traversal, + comm, tree_indep, local_traversal, global_traversal, fmm_level_to_order=fmm_level_to_order, communicate_mpoles_via_allreduce=communicate_mpoles_via_allreduce) from boxtree.distributed import DistributedFMMRunner distributed_fmm_info = DistributedFMMRunner( - actx.queue, global_tree_host, tg, wrangler_factory, comm=comm) + actx, global_tree_host, tg, wrangler_factory, comm=comm) timing_data = {} pot_dfmm = distributed_fmm_info.drive_dfmm( @@ -191,31 +193,43 @@ def test_against_shared( # {{{ test_constantone def _test_constantone(tmp_cache_basedir, dims, nsources, ntargets, dtype): - from boxtree.distributed.calculation import DistributedExpansionWrangler + from boxtree.distributed.calculation import DistributedExpansionWranglerMixin class ConstantOneExpansionWrangler( - ConstantOneExpansionWranglerBase, DistributedExpansionWrangler): + DistributedExpansionWranglerMixin, + ConstantOneExpansionWranglerBase): def __init__( - self, queue, comm, tree_indep, local_traversal, global_traversal): - DistributedExpansionWrangler.__init__( - self, queue, comm, global_traversal, False, - communicate_mpoles_via_allreduce=True) + self, + comm, + tree_indep, local_traversal, global_traversal): ConstantOneExpansionWranglerBase.__init__( self, tree_indep, local_traversal) + + self.comm = comm + self.global_traversal = global_traversal + self.communicate_mpoles_via_allreduce = True + self.level_orders = np.ones(local_traversal.tree.nlevels, dtype=np.int32) def reorder_sources(self, source_array): - if self.comm.Get_rank() == 0: + if self.is_mpi_root: return source_array[self.global_traversal.tree.user_source_ids] else: return None def reorder_potentials(self, potentials): - if self.comm.Get_rank() == 0: + if self.is_mpi_root: return potentials[self.global_traversal.tree.sorted_target_ids] else: return None + def finalize_potentials(self, actx, potentials): + if self.is_mpi_root: + return ConstantOneExpansionWranglerBase.finalize_potentials( + self, actx, potentials) + else: + return None + from mpi4py import MPI # Get the current rank @@ -232,14 +246,14 @@ def reorder_potentials(self, potentials): actx = _acf() from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(actx.context) + tg = FMMTraversalBuilder(actx) if rank == 0: # Generate random particles from boxtree.tools import make_normal_particle_array as p_normal - sources = p_normal(actx.queue, nsources, dims, dtype, seed=15) - targets = (p_normal(actx.queue, ntargets, dims, dtype, seed=18) + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = (p_normal(actx, ntargets, dims, dtype, seed=18) + np.array([2, 0, 0])[:dims]) # Constant one source weights @@ -247,21 +261,20 @@ def reorder_potentials(self, potentials): # Build the global tree from boxtree import TreeBuilder - tb = TreeBuilder(actx.context) - tree, _ = tb( - actx.queue, sources, targets=targets, max_particles_in_box=30, - debug=True) - tree = tree.get(actx.queue) + tb = TreeBuilder(actx) + tree, _ = tb(actx, sources, targets=targets, max_particles_in_box=30, + debug=True) + tree = actx.to_numpy(tree) tree_indep = ConstantOneTreeIndependentDataForWrangler() def wrangler_factory(local_traversal, global_traversal): return ConstantOneExpansionWrangler( - actx.queue, comm, tree_indep, local_traversal, global_traversal) + comm, tree_indep, local_traversal, global_traversal) from boxtree.distributed import DistributedFMMRunner distributed_fmm_info = DistributedFMMRunner( - actx.queue, tree, tg, wrangler_factory, comm=MPI.COMM_WORLD) + actx, tree, tg, wrangler_factory, comm=MPI.COMM_WORLD) pot_dfmm = distributed_fmm_info.drive_dfmm([sources_weights]) @@ -325,3 +338,5 @@ def test_constantone(tmp_path, num_processes, dims, nsources, ntargets): ntargets = 10000 _test_against_shared(tmp_cache_basedir, dims, nsources, ntargets, dtype) + +# vim: fdm=marker From a8fbc8789331aca5020dfe0736ae89e9c2ddf26d Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Sun, 26 Jun 2022 20:00:26 +0300 Subject: [PATCH 21/34] port examples to arraycontext --- examples/cost_model.py | 44 ++++++++++++++---------------------------- examples/demo.py | 39 ++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 51 deletions(-) diff --git a/examples/cost_model.py b/examples/cost_model.py index 60943210..7b783891 100644 --- a/examples/cost_model.py +++ b/examples/cost_model.py @@ -1,31 +1,18 @@ import logging import os -import sys import numpy as np import pyopencl as cl -# Configure the root logger logging.basicConfig(level=os.environ.get("LOGLEVEL", "WARNING")) - logger = logging.getLogger(__name__) - -# Set the logger level of this module to INFO so that logging outputs of this module -# are shown logger.setLevel(logging.INFO) -# `process_elapsed` in `ProcessTimer` is only supported for Python >= 3.3 -SUPPORTS_PROCESS_TIME = (sys.version_info >= (3, 3)) - def demo_cost_model(): - if not SUPPORTS_PROCESS_TIME: - raise NotImplementedError( - "Currently this script uses process time which only works on Python>=3.3" - ) - + from boxtree.array_context import PyOpenCLArrayContext from boxtree.pyfmmlib_integration import ( FMMLibExpansionWrangler, FMMLibTreeIndependentDataForWrangler, @@ -40,6 +27,7 @@ def demo_cost_model(): ctx = cl.create_some_context() queue = cl.CommandQueue(ctx) + actx = PyOpenCLArrayContext(queue, force_device_scalars=True) traversals = [] traversals_dev = [] @@ -53,31 +41,29 @@ def fmm_level_to_order(tree, ilevel): # {{{ Generate sources, targets and target_radii from boxtree.tools import make_normal_particle_array as p_normal - sources = p_normal(queue, nsources, dims, dtype, seed=15) - targets = p_normal(queue, ntargets, dims, dtype, seed=18) - - from pyopencl.clrandom import PhiloxGenerator + sources = p_normal(actx, nsources, dims, dtype, seed=15) + targets = p_normal(actx, ntargets, dims, dtype, seed=18) - clrng = PhiloxGenerator(queue.context, seed=22) - target_radii = clrng.uniform( - queue, ntargets, a=0, b=0.05, dtype=dtype - ).get() + rng = np.random.default_rng(seed=22) + target_radii = actx.from_numpy( + rng.uniform(low=0.0, high=0.05, size=ntargets) + ) # }}} # {{{ Generate tree and traversal from boxtree import TreeBuilder - tb = TreeBuilder(ctx) + tb = TreeBuilder(actx) tree, _ = tb( - queue, sources, targets=targets, target_radii=target_radii, + actx, sources, targets=targets, target_radii=target_radii, stick_out_factor=0.15, max_particles_in_box=30, debug=True ) from boxtree.traversal import FMMTraversalBuilder - tg = FMMTraversalBuilder(ctx, well_sep_is_n_away=2) - trav_dev, _ = tg(queue, tree, debug=True) - trav = trav_dev.get(queue=queue) + tg = FMMTraversalBuilder(actx, well_sep_is_n_away=2) + trav_dev, _ = tg(actx, tree, debug=True) + trav = actx.to_numpy(trav_dev) traversals.append(trav) traversals_dev.append(trav_dev) @@ -107,7 +93,7 @@ def fmm_level_to_order(tree, ilevel): traversal = traversals_dev[icase] model_results.append( cost_model.cost_per_stage( - queue, traversal, level_orders_list[icase], + actx, traversal, level_orders_list[icase], FMMCostModel.get_unit_calibration_params(), ) ) @@ -118,7 +104,7 @@ def fmm_level_to_order(tree, ilevel): ) predicted_time = cost_model.cost_per_stage( - queue, traversals_dev[-1], level_orders_list[-1], params, + actx, traversals_dev[-1], level_orders_list[-1], params, ) queue.finish() diff --git a/examples/demo.py b/examples/demo.py index a6211692..a1ec22b0 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -4,13 +4,19 @@ import numpy as np import pyopencl as cl -import pytools.obj_array as obj_array +from pytools import obj_array + +from boxtree import TreeBuilder +from boxtree.array_context import PyOpenCLArrayContext +from boxtree.traversal import FMMTraversalBuilder +from boxtree.visualization import TreePlotter logging.basicConfig(level="INFO") ctx = cl.create_some_context() queue = cl.CommandQueue(ctx) +actx = PyOpenCLArrayContext(queue, force_device_scalars=True) dims = 2 nparticles = 500 @@ -18,46 +24,35 @@ # ----------------------------------------------------------------------------- # generate some random particle positions # ----------------------------------------------------------------------------- -from pyopencl.clrandom import PhiloxGenerator - - -rng = PhiloxGenerator(ctx, seed=15) - +rng = np.random.default_rng(seed=15) particles = obj_array.new_1d([ - rng.normal(queue, nparticles, dtype=np.float64) + actx.from_numpy(rng.normal(size=nparticles)) for i in range(dims)]) # ----------------------------------------------------------------------------- # build tree and traversals (lists) # ----------------------------------------------------------------------------- -from boxtree import TreeBuilder +tb = TreeBuilder(actx) +tree, _ = tb(actx, particles, max_particles_in_box=5) - -tb = TreeBuilder(ctx) -tree, _ = tb(queue, particles, max_particles_in_box=5) - -from boxtree.traversal import FMMTraversalBuilder - - -tg = FMMTraversalBuilder(ctx) -trav, _ = tg(queue, tree) +tg = FMMTraversalBuilder(actx) +trav, _ = tg(actx, tree) # ENDEXAMPLE # ----------------------------------------------------------------------------- # plot the tree # ----------------------------------------------------------------------------- - import matplotlib.pyplot as pt -pt.plot(particles[0].get(), particles[1].get(), "+") - -from boxtree.visualization import TreePlotter +particles = actx.to_numpy(particles) +tree = actx.to_numpy(tree) +pt.plot(particles[0], particles[1], "+") +plotter = TreePlotter(tree) -plotter = TreePlotter(tree.get(queue=queue)) plotter.draw_tree(fill=False, edgecolor="black") # plotter.draw_box_numbers() plotter.set_bounding_box() From 80c340991be2ef8e4825ceaabb4834a1f57253a2 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Sun, 26 Jun 2022 20:18:43 +0300 Subject: [PATCH 22/34] remove ImmutableHostDeviceArray --- boxtree/tools.py | 86 ++---------------------------------------------- 1 file changed, 3 insertions(+), 83 deletions(-) diff --git a/boxtree/tools.py b/boxtree/tools.py index 1594227d..a0e62f72 100644 --- a/boxtree/tools.py +++ b/boxtree/tools.py @@ -334,9 +334,8 @@ def transform_val(val): def get(self, queue, **kwargs): """ :returns: a copy of *self* in which all data lives on the host, i.e. - all :class:`pyopencl.array.Array` and `ImmutableHostDeviceArray` - objects are replaced by corresponding :class:`numpy.ndarray` - instances on the host. + all :class:`pyopencl.array.Array` objects are replaced by + corresponding :class:`numpy.ndarray` instances on the host. """ from warnings import warn warn(f"{type(self).__name__}.get is deprecated and will be removed " @@ -344,9 +343,6 @@ def get(self, queue, **kwargs): DeprecationWarning, stacklevel=2) def try_get(attr): - if isinstance(attr, ImmutableHostDeviceArray): - return attr.host - try: return attr.get(queue=queue, **kwargs) except AttributeError: @@ -390,9 +386,7 @@ def to_device(self, queue, exclude_fields=frozenset()): def _to_device(attr): if isinstance(attr, np.ndarray): - return cl_array.to_device(queue, attr).with_queue(None) - elif isinstance(attr, ImmutableHostDeviceArray): - return attr.device + return cl.array.to_device(queue, attr).with_queue(None) elif isinstance(attr, DeviceDataRecord): return attr.to_device(queue) else: @@ -400,31 +394,6 @@ def _to_device(attr): return self._transform_arrays(_to_device, exclude_fields=exclude_fields) - def to_host_device_array(self, queue, exclude_fields=frozenset()): - """ - :arg exclude_fields: a :class:`frozenset` containing fields excluded - from transformed to `ImmutableHostDeviceArray`. - - :returns: a copy of *self* where all device and host arrays are - transformed to `ImmutableHostDeviceArray` objects. - """ - from warnings import warn - warn(f"{type(self).__name__}.to_host_device_array is deprecated and will " - "be removed in 2025. Switch from ImmutableHostDeviceArray.", - DeprecationWarning, stacklevel=2) - - def _to_host_device_array(attr): - if isinstance(attr, np.ndarray | cl_array.Array): - return ImmutableHostDeviceArray(queue, attr) - elif isinstance(attr, DeviceDataRecord): - return attr.to_host_device_array(queue) - else: - return attr - - return self._transform_arrays( - _to_host_device_array, exclude_fields=exclude_fields - ) - # }}} @@ -918,55 +887,6 @@ def run_mpi(script: str, num_processes: int, env: dict[str, Any]) -> None: # }}} -# {{{ HostDeviceArray - -class ImmutableHostDeviceArray: - """Interface for arrays on both host and device. - - .. note:: This interface assumes the array is immutable. The behavior of - modifying the content of either the host array or the device array is undefined. - - @TODO: Once available, replace this implementation with PyOpenCL's in-house - implementation. - """ - def __init__(self, queue, array): - self.queue = queue - self.shape = array.shape - self.host_array = None - self.device_array = None - - if isinstance(array, np.ndarray): - self.host_array = array - elif isinstance(array, cl_array.Array): - self.device_array = array - - def with_queue(self, queue): - self.queue = queue - - @property - def svm_capable(self): - svm_capabilities = \ - self.queue.device.get_info(cl.device_info.SVM_CAPABILITIES) - return svm_capabilities & cl.device_svm_capabilities.FINE_GRAIN_BUFFER != 0 - - @property - def host(self): - if self.host_array is None: - self.host_array = self.device_array.get(self.queue) - return self.host_array - - @property - def device(self): - if self.device_array is None: - # @TODO: Use SVM - self.device_array = cl_array.to_device(self.queue, self.host_array) - - self.device_array.with_queue(self.queue) - return self.device_array - -# }}} - - # {{{ coord_vec tools def get_coord_vec_dtype( From 390eb76b5c899915f9eceeb2d70bdbe6ff747592 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Fri, 24 Jun 2022 19:36:54 +0300 Subject: [PATCH 23/34] docs: add arraycontext --- .pylintrc-local.yml | 4 -- boxtree/__init__.py | 8 +-- boxtree/tree.py | 4 -- doc/Makefile | 136 +++++--------------------------------------- doc/tools.rst | 2 + 5 files changed, 19 insertions(+), 135 deletions(-) diff --git a/.pylintrc-local.yml b/.pylintrc-local.yml index 745ae717..e6cde7f0 100644 --- a/.pylintrc-local.yml +++ b/.pylintrc-local.yml @@ -3,7 +3,3 @@ - arg: extension-pkg-whitelist val: pyfmmlib - -# Needed for boxtree.tools -- arg: init-hook - val: import sys; sys.setrecursionlimit(2000) diff --git a/boxtree/__init__.py b/boxtree/__init__.py index f906ff17..5360ffe7 100644 --- a/boxtree/__init__.py +++ b/boxtree/__init__.py @@ -145,15 +145,15 @@ two arrays, one whose name ends in ``_starts``, and another whose name ends in ``_lists``. For example, suppose we would like to find the colleagues of box #17 using -:attr:`boxtree.traversal.FMMTraversalInfo.colleagues_starts` +:attr:`boxtree.traversal.FMMTraversalInfo.same_level_non_well_sep_boxes_starts` and -:attr:`boxtree.traversal.FMMTraversalInfo.colleagues_lists`. +:attr:`boxtree.traversal.FMMTraversalInfo.same_level_non_well_sep_boxes_lists`. The following snippet of code achieves this:: ibox = 17 - start, end = colleagues_starts[ibox:ibox+2] - ibox_colleagues = colleagues_lists[start:end] + start, end = same_level_non_well_sep_boxes_starts[ibox:ibox+2] + ibox_colleagues = same_level_non_well_sep_boxes_lists[start:end] This indexing scheme has the following properties: diff --git a/boxtree/tree.py b/boxtree/tree.py index 4a62730f..bd516e25 100644 --- a/boxtree/tree.py +++ b/boxtree/tree.py @@ -52,10 +52,6 @@ ^^^^^ .. autoclass:: ParticleListFilter - -.. autofunction:: filter_target_lists_in_user_order - -.. autofunction:: filter_target_lists_in_tree_order """ from __future__ import annotations diff --git a/doc/Makefile b/doc/Makefile index bb66c0e8..d0ac5f2f 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,130 +1,20 @@ -# Makefile for Sphinx documentation +# Minimal makefile for Sphinx documentation # -# You can set these variables from the command line. -SPHINXOPTS = -n -SPHINXBUILD = python $(shell which sphinx-build) -PAPER = +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= python $(shell which sphinx-build) +SOURCEDIR = . BUILDDIR = _build -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest - +# Put it first so that "make" without argument is like "make help". help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/boxtree.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/boxtree.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/boxtree" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/boxtree" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - make -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." +.PHONY: help Makefile -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/doc/tools.rst b/doc/tools.rst index 6db9bc70..0b5225ee 100644 --- a/doc/tools.rst +++ b/doc/tools.rst @@ -4,3 +4,5 @@ Utility Functionality .. automodule:: boxtree.timing .. automodule:: boxtree.constant_one + +.. automodule:: boxtree.array_context From f3f55f0a134e4c8fac946d0bc46457b975621b26 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Wed, 7 Sep 2022 20:47:27 +0300 Subject: [PATCH 24/34] update fmm interface for sumpy --- boxtree/constant_one.py | 38 +++++++++++++++----- boxtree/distributed/__init__.py | 9 +++-- boxtree/distributed/calculation.py | 10 +++--- boxtree/fmm.py | 57 +++++++++++++++++++++++------- boxtree/pyfmmlib_integration.py | 42 ++++++++++++++-------- boxtree/traversal.py | 3 +- examples/cost_model.py | 2 +- test/test_cost_model.py | 4 +-- test/test_distributed.py | 6 ++-- test/test_fmm.py | 39 ++++++++++---------- 10 files changed, 140 insertions(+), 70 deletions(-) diff --git a/boxtree/constant_one.py b/boxtree/constant_one.py index 10b491d4..71a9656d 100644 --- a/boxtree/constant_one.py +++ b/boxtree/constant_one.py @@ -27,12 +27,17 @@ THE SOFTWARE. """ +from typing import TYPE_CHECKING + import numpy as np from boxtree.fmm import ExpansionWranglerInterface, TreeIndependentDataForWrangler from boxtree.timing import DummyTimingFuture +if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext + # {{{ constant one wrangler @@ -87,7 +92,9 @@ def local_expansions_view(self, local_exps, level): def timing_future(ops): return DummyTimingFuture.from_op_count(ops) - def form_multipoles(self, level_start_source_box_nrs, source_boxes, + def form_multipoles(self, actx: PyOpenCLArrayContext, + level_start_source_box_nrs, + source_boxes, src_weight_vecs): src_weights, = src_weight_vecs mpoles = self.multipole_expansion_zeros() @@ -100,8 +107,10 @@ def form_multipoles(self, level_start_source_box_nrs, source_boxes, return mpoles, self.timing_future(ops) - def coarsen_multipoles(self, level_start_source_parent_box_nrs, - source_parent_boxes, mpoles): + def coarsen_multipoles(self, actx: PyOpenCLArrayContext, + level_start_source_parent_box_nrs, + source_parent_boxes, + mpoles): tree = self.tree ops = 0 @@ -123,7 +132,8 @@ def coarsen_multipoles(self, level_start_source_parent_box_nrs, return mpoles, self.timing_future(ops) - def eval_direct(self, target_boxes, neighbor_sources_starts, + def eval_direct(self, actx: PyOpenCLArrayContext, + target_boxes, neighbor_sources_starts, neighbor_sources_lists, src_weight_vecs): src_weights, = src_weight_vecs pot = self.output_zeros() @@ -148,6 +158,7 @@ def eval_direct(self, target_boxes, neighbor_sources_starts, return pot, self.timing_future(ops) def multipole_to_local(self, + actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, mpole_exps): @@ -168,7 +179,9 @@ def multipole_to_local(self, return local_exps, self.timing_future(ops) def eval_multipoles(self, - target_boxes_by_source_level, from_sep_smaller_nonsiblings_by_level, + actx: PyOpenCLArrayContext, + target_boxes_by_source_level, + from_sep_smaller_nonsiblings_by_level, mpole_exps): pot = self.output_zeros() ops = 0 @@ -190,8 +203,10 @@ def eval_multipoles(self, return pot, self.timing_future(ops) def form_locals(self, + actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, - target_or_target_parent_boxes, starts, lists, src_weight_vecs): + target_or_target_parent_boxes, + starts, lists, src_weight_vecs): src_weights, = src_weight_vecs local_exps = self.local_expansion_zeros() ops = 0 @@ -213,7 +228,9 @@ def form_locals(self, return local_exps, self.timing_future(ops) - def refine_locals(self, level_start_target_or_target_parent_box_nrs, + def refine_locals(self, + actx: PyOpenCLArrayContext, + level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, local_exps): ops = 0 @@ -226,7 +243,10 @@ def refine_locals(self, level_start_target_or_target_parent_box_nrs, return local_exps, self.timing_future(ops) - def eval_locals(self, level_start_target_box_nrs, target_boxes, local_exps): + def eval_locals(self, + actx: PyOpenCLArrayContext, + level_start_target_box_nrs, + target_boxes, local_exps): pot = self.output_zeros() ops = 0 @@ -237,7 +257,7 @@ def eval_locals(self, level_start_target_box_nrs, target_boxes, local_exps): return pot, self.timing_future(ops) - def finalize_potentials(self, potentials, template_ary): + def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): return potentials # }}} diff --git a/boxtree/distributed/__init__.py b/boxtree/distributed/__init__.py index 4cdb9ed1..5cc2031a 100644 --- a/boxtree/distributed/__init__.py +++ b/boxtree/distributed/__init__.py @@ -299,11 +299,14 @@ def __init__(self, array_context: PyOpenCLArrayContext, global_tree, array_context, global_tree, traversal_builder, wrangler_factory, calibration_params, comm) - def drive_dfmm(self, source_weights, timing_data=None): - """Calculate potentials at target points. - """ + def drive_dfmm(self, + actx: PyOpenCLArrayContext, + source_weights, + timing_data=None): + """Calculate potentials at target points.""" from boxtree.fmm import drive_fmm return drive_fmm( + actx, self.wrangler, source_weights, timing_data=timing_data, global_src_idx_all_ranks=self.src_idx_all_ranks, diff --git a/boxtree/distributed/calculation.py b/boxtree/distributed/calculation.py index fdbd7a42..8578abd3 100644 --- a/boxtree/distributed/calculation.py +++ b/boxtree/distributed/calculation.py @@ -78,7 +78,8 @@ def mpi_size(self): def is_mpi_root(self): return self.mpi_rank == 0 - def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): + def distribute_source_weights(self, + actx: PyOpenCLArrayContext, src_weight_vecs, src_idx_all_ranks): if self.is_mpi_root: distribute_weight_req = [] local_src_weight_vecs = np.empty((self.mpi_size,), dtype=object) @@ -101,7 +102,8 @@ def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): return local_src_weight_vecs - def gather_potential_results(self, potentials, tgt_idx_all_ranks): + def gather_potential_results(self, + actx: PyOpenCLArrayContext, potentials, tgt_idx_all_ranks): from boxtree.distributed import dtype_to_mpi potentials_mpi_type = dtype_to_mpi(potentials.dtype) gathered_potentials = None @@ -262,8 +264,8 @@ def find_boxes_used_by_subrange( return box_in_subrange - def communicate_mpoles(self, actx: PyOpenCLArrayContext, - mpole_exps, return_stats=False): + def communicate_mpoles(self, + actx: PyOpenCLArrayContext, mpole_exps, return_stats=False): """Based on Algorithm 3: Reduce and Scatter in Lashuk et al. [1]_. The main idea is to mimic an allreduce as done on a hypercube network, but to diff --git a/boxtree/fmm.py b/boxtree/fmm.py index a26024ef..ba01d54f 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -35,8 +35,12 @@ from pytools import ProcessLogger +from boxtree.traversal import FMMTraversalInfo +from boxtree.tree import Tree + if TYPE_CHECKING: + from boxtree.array_context import PyOpenCLArrayContext from boxtree.traversal import FMMTraversalInfo from boxtree.tree import Tree @@ -160,6 +164,7 @@ def local_expansions_view(self, local_exps, level): @abstractmethod def form_multipoles(self, + actx: PyOpenCLArrayContext, level_start_source_box_nrs, source_boxes, src_weight_vecs): """Return an expansions array @@ -172,6 +177,7 @@ def form_multipoles(self, @abstractmethod def coarsen_multipoles(self, + actx: PyOpenCLArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, mpoles): """For each box in *source_parent_boxes*, @@ -184,6 +190,7 @@ def coarsen_multipoles(self, @abstractmethod def eval_direct(self, + actx: PyOpenCLArrayContext, target_boxes, neighbor_sources_starts, neighbor_sources_lists, src_weight_vecs): """For each box in *target_boxes*, evaluate the influence of the @@ -196,6 +203,7 @@ def eval_direct(self, @abstractmethod def multipole_to_local(self, + actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, mpole_exps): @@ -210,6 +218,7 @@ def multipole_to_local(self, @abstractmethod def eval_multipoles(self, + actx: PyOpenCLArrayContext, target_boxes_by_source_level, from_sep_smaller_by_level, mpole_exps): """For a level *i*, each box in *target_boxes_by_source_level[i]*, evaluate the multipole expansion in *mpole_exps* in the nearby boxes given in @@ -223,6 +232,7 @@ def eval_multipoles(self, @abstractmethod def form_locals(self, + actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, src_weight_vecs): """For each box in *target_or_target_parent_boxes*, form local @@ -237,6 +247,7 @@ def form_locals(self, @abstractmethod def refine_locals(self, + actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, local_exps): """For each box in *child_boxes*, @@ -248,6 +259,7 @@ def refine_locals(self, @abstractmethod def eval_locals(self, + actx: PyOpenCLArrayContext, level_start_target_box_nrs, target_boxes, local_exps): """For each box in *target_boxes*, evaluate the local expansion in *local_exps* and return a new potential array. @@ -259,7 +271,7 @@ def eval_locals(self, # }}} @abstractmethod - def finalize_potentials(self, potentials, template_ary): + def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): """ Postprocess the reordered potentials. This is where global scaling factors could be applied. This is distinct from :meth:`reorder_potentials` @@ -273,7 +285,9 @@ def finalize_potentials(self, potentials, template_ary): type. """ - def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): + def distribute_source_weights(self, + actx: PyOpenCLArrayContext, + src_weight_vecs, src_idx_all_ranks): """Used by the distributed implementation for transferring needed source weights from root rank to each worker rank in the communicator. @@ -293,7 +307,9 @@ def distribute_source_weights(self, src_weight_vecs, src_idx_all_ranks): """ return src_weight_vecs - def gather_potential_results(self, potentials, tgt_idx_all_ranks): + def gather_potential_results(self, + actx: PyOpenCLArrayContext, + potentials, tgt_idx_all_ranks): """Used by the distributed implementation for gathering calculated potentials from all worker ranks in the communicator to the root rank. @@ -310,7 +326,9 @@ def gather_potential_results(self, potentials, tgt_idx_all_ranks): """ return potentials - def communicate_mpoles(self, mpole_exps, return_stats=False): # noqa: B027 + def communicate_mpoles(self, # noqa: B027 + actx: PyOpenCLArrayContext, + mpole_exps, return_stats=False): """Used by the distributed implementation for forming the complete multipole expansions from the partial multipole expansions. @@ -329,9 +347,12 @@ def communicate_mpoles(self, mpole_exps, return_stats=False): # noqa: B027 # }}} -def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, +def drive_fmm(actx: PyOpenCLArrayContext, + wrangler: ExpansionWranglerInterface, + src_weight_vecs, *, timing_data=None, - global_src_idx_all_ranks=None, global_tgt_idx_all_ranks=None): + global_src_idx_all_ranks=None, + global_tgt_idx_all_ranks=None): """Top-level driver routine for a fast multipole calculation. In part, this is intended as a template for custom FMMs, in the sense that @@ -378,15 +399,17 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, fmm_proc = ProcessLogger(logger, "fmm") recorder = TimingRecorder() - src_weight_vecs = [wrangler.reorder_sources(weight) for - weight in src_weight_vecs] + src_weight_vecs = [ + wrangler.reorder_sources(weight) for weight in src_weight_vecs] src_weight_vecs = wrangler.distribute_source_weights( - src_weight_vecs, global_src_idx_all_ranks) + actx, + src_weight_vecs, global_src_idx_all_ranks) # {{{ "Step 2.1:" Construct local multipoles mpole_exps, timing_future = wrangler.form_multipoles( + actx, traversal.level_start_source_box_nrs, traversal.source_boxes, src_weight_vecs) @@ -398,6 +421,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # {{{ "Step 2.2:" Propagate multipoles upward mpole_exps, timing_future = wrangler.coarsen_multipoles( + actx, traversal.level_start_source_parent_box_nrs, traversal.source_parent_boxes, mpole_exps) @@ -408,11 +432,12 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # }}} - wrangler.communicate_mpoles(mpole_exps) + wrangler.communicate_mpoles(actx, mpole_exps) # {{{ "Stage 3:" Direct evaluation from neighbor source boxes ("list 1") potentials, timing_future = wrangler.eval_direct( + actx, traversal.target_boxes, traversal.neighbor_source_boxes_starts, traversal.neighbor_source_boxes_lists, @@ -427,6 +452,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # {{{ "Stage 4:" translate separated siblings' ("list 2") mpoles to local local_exps, timing_future = wrangler.multipole_to_local( + actx, traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, traversal.from_sep_siblings_starts, @@ -445,6 +471,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # contribution *out* of the downward-propagating local expansions) mpole_result, timing_future = wrangler.eval_multipoles( + actx, traversal.target_boxes_sep_smaller_by_source_level, traversal.from_sep_smaller_by_level, mpole_exps) @@ -460,6 +487,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, "('list 3 close')") direct_result, timing_future = wrangler.eval_direct( + actx, traversal.target_boxes, traversal.from_sep_close_smaller_starts, traversal.from_sep_close_smaller_lists, @@ -474,6 +502,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # {{{ "Stage 6:" form locals for separated bigger source boxes ("list 4") local_result, timing_future = wrangler.form_locals( + actx, traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, traversal.from_sep_bigger_starts, @@ -486,6 +515,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, if traversal.from_sep_close_bigger_starts is not None: direct_result, timing_future = wrangler.eval_direct( + actx, traversal.target_boxes, traversal.from_sep_close_bigger_starts, traversal.from_sep_close_bigger_lists, @@ -500,6 +530,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # {{{ "Stage 7:" propagate local_exps downward local_exps, timing_future = wrangler.refine_locals( + actx, traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, local_exps) @@ -511,6 +542,7 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # {{{ "Stage 8:" evaluate locals local_result, timing_future = wrangler.eval_locals( + actx, traversal.level_start_target_box_nrs, traversal.target_boxes, local_exps) @@ -522,11 +554,12 @@ def drive_fmm(wrangler: ExpansionWranglerInterface, src_weight_vecs, # }}} potentials = wrangler.gather_potential_results( - potentials, global_tgt_idx_all_ranks) + actx, + potentials, global_tgt_idx_all_ranks) result = wrangler.reorder_potentials(potentials) - result = wrangler.finalize_potentials(result, template_ary=src_weight_vecs[0]) + result = wrangler.finalize_potentials(actx, result) fmm_proc.done() diff --git a/boxtree/pyfmmlib_integration.py b/boxtree/pyfmmlib_integration.py index c6cfaa0c..cf92aeb9 100644 --- a/boxtree/pyfmmlib_integration.py +++ b/boxtree/pyfmmlib_integration.py @@ -681,7 +681,9 @@ def reorder_potentials(self, potentials): @log_process(logger) @return_timing_data - def form_multipoles(self, level_start_source_box_nrs, source_boxes, + def form_multipoles(self, actx: PyOpenCLArrayContext, + level_start_source_box_nrs, + source_boxes, src_weight_vecs): src_weights, = src_weight_vecs formmp = self.tree_indep.get_routine( @@ -724,8 +726,10 @@ def form_multipoles(self, level_start_source_box_nrs, source_boxes, @log_process(logger) @return_timing_data - def coarsen_multipoles(self, level_start_source_parent_box_nrs, - source_parent_boxes, mpoles): + def coarsen_multipoles(self, actx: PyOpenCLArrayContext, + level_start_source_parent_box_nrs, + source_parent_boxes, + mpoles): tree = self.tree mpmp = self.tree_indep.get_translation_routine(self, "%ddmpmp") @@ -780,8 +784,11 @@ def coarsen_multipoles(self, level_start_source_parent_box_nrs, @log_process(logger) @return_timing_data - def eval_direct(self, target_boxes, neighbor_sources_starts, - neighbor_sources_lists, src_weight_vecs): + def eval_direct(self, actx: PyOpenCLArrayContext, + target_boxes, + neighbor_sources_starts, + neighbor_sources_lists, + src_weight_vecs): src_weights, = src_weight_vecs output = self.output_zeros() @@ -824,7 +831,7 @@ def eval_direct(self, target_boxes, neighbor_sources_starts, @log_process(logger) @return_timing_data - def multipole_to_local(self, + def multipole_to_local(self, actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, mpole_exps): @@ -939,8 +946,9 @@ def multipole_to_local(self, @log_process(logger) @return_timing_data - def eval_multipoles(self, - target_boxes_by_source_level, sep_smaller_nonsiblings_by_level, + def eval_multipoles(self, actx: PyOpenCLArrayContext, + target_boxes_by_source_level, + sep_smaller_nonsiblings_by_level, mpole_exps): output = self.output_zeros() @@ -982,9 +990,10 @@ def eval_multipoles(self, @log_process(logger) @return_timing_data - def form_locals(self, + def form_locals(self, actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, - target_or_target_parent_boxes, starts, lists, src_weight_vecs): + target_or_target_parent_boxes, + starts, lists, src_weight_vecs): src_weights, = src_weight_vecs local_exps = self.local_expansion_zeros() @@ -1062,8 +1071,10 @@ def form_locals(self, @log_process(logger) @return_timing_data - def refine_locals(self, level_start_target_or_target_parent_box_nrs, - target_or_target_parent_boxes, local_exps): + def refine_locals(self, actx: PyOpenCLArrayContext, + level_start_target_or_target_parent_box_nrs, + target_or_target_parent_boxes, + local_exps): locloc = self.tree_indep.get_translation_routine(self, "%ddlocloc") @@ -1109,7 +1120,10 @@ def refine_locals(self, level_start_target_or_target_parent_box_nrs, @log_process(logger) @return_timing_data - def eval_locals(self, level_start_target_box_nrs, target_boxes, local_exps): + def eval_locals(self, actx: PyOpenCLArrayContext, + level_start_target_box_nrs, + target_boxes, + local_exps): output = self.output_zeros() taeval = self.tree_indep.get_expn_eval_routine("ta") @@ -1144,7 +1158,7 @@ def eval_locals(self, level_start_target_box_nrs, target_boxes, local_exps): return output @log_process(logger) - def finalize_potentials(self, potential, template_ary): + def finalize_potentials(self, actx: PyOpenCLArrayContext, potential): if self.tree_indep.eqn_letter == "l" and self.dim == 2: scale_factor = -1/(2*np.pi) elif self.tree_indep.eqn_letter == "h" and self.dim == 2: diff --git a/boxtree/traversal.py b/boxtree/traversal.py index 569a874b..57d1a01a 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -1734,6 +1734,7 @@ def get_kernel_info(self, *, extent_norm: ExtentNorm | None, source_boxes_has_mask: bool, source_parent_boxes_has_mask: bool, + debug: bool = False, ) -> _KernelInfo: # {{{ process from_sep_smaller_crit @@ -1772,8 +1773,6 @@ def get_kernel_info(self, *, # }}} - debug = False - from pyopencl.tools import dtype_to_ctype from boxtree.tree import box_flags_enum diff --git a/examples/cost_model.py b/examples/cost_model.py index 7b783891..8328672f 100644 --- a/examples/cost_model.py +++ b/examples/cost_model.py @@ -79,7 +79,7 @@ def fmm_level_to_order(tree, ilevel): timing_data = {} from boxtree.fmm import drive_fmm src_weights = rng.random(size=tree.nsources, dtype=tree.coord_dtype) - drive_fmm(wrangler, (src_weights,), timing_data=timing_data) + drive_fmm(actx, wrangler, (src_weights,), timing_data=timing_data) timing_results.append(timing_data) diff --git a/test/test_cost_model.py b/test/test_cost_model.py index 3dbccc30..feef728e 100644 --- a/test/test_cost_model.py +++ b/test/test_cost_model.py @@ -442,7 +442,7 @@ def fmm_level_to_order(tree, ilevel): timing_data = {} from boxtree.fmm import drive_fmm src_weights = rng.random(size=tree.nsources, dtype=tree.coord_dtype) - drive_fmm(wrangler, (src_weights,), timing_data=timing_data) + drive_fmm(actx, wrangler, (src_weights,), timing_data=timing_data) timing_results.append(timing_data) @@ -569,7 +569,7 @@ def test_cost_model_op_counts_agree_with_constantone_wrangler( timing_data = {} from boxtree.fmm import drive_fmm src_weights = rng.random(size=tree.nsources, dtype=tree.coord_dtype) - drive_fmm(wrangler, (src_weights,), timing_data=timing_data) + drive_fmm(actx, wrangler, (src_weights,), timing_data=timing_data) cost_model = FMMCostModel( translation_cost_model_factory=OpCountingTranslationCostModel diff --git a/test/test_distributed.py b/test/test_distributed.py index 6e7df92b..a5948640 100644 --- a/test/test_distributed.py +++ b/test/test_distributed.py @@ -123,7 +123,7 @@ def fmm_level_to_order(tree, level): # Compute FMM with one MPI rank from boxtree.fmm import drive_fmm - pot_fmm = drive_fmm(wrangler, [sources_weights]) * 2 * np.pi + pot_fmm = drive_fmm(actx, wrangler, [sources_weights]) * 2 * np.pi # Compute FMM using the distributed implementation @@ -143,7 +143,7 @@ def wrangler_factory(local_traversal, global_traversal): timing_data = {} pot_dfmm = distributed_fmm_info.drive_dfmm( - [sources_weights], timing_data=timing_data) + actx, [sources_weights], timing_data=timing_data) assert timing_data # Uncomment the following section to print the time taken of each stage @@ -276,7 +276,7 @@ def wrangler_factory(local_traversal, global_traversal): distributed_fmm_info = DistributedFMMRunner( actx, tree, tg, wrangler_factory, comm=MPI.COMM_WORLD) - pot_dfmm = distributed_fmm_info.drive_dfmm([sources_weights]) + pot_dfmm = distributed_fmm_info.drive_dfmm(actx, [sources_weights]) if rank == 0: assert (np.all(pot_dfmm == nsources)) diff --git a/test/test_fmm.py b/test/test_fmm.py index 40665d4c..db8db629 100644 --- a/test/test_fmm.py +++ b/test/test_fmm.py @@ -55,7 +55,8 @@ # {{{ ref fmmlib pot computation -def get_fmmlib_ref_pot(wrangler, weights, sources_host, targets_host, +def get_fmmlib_ref_pot( + actx, wrangler, weights, sources_host, targets_host, helmholtz_k, dipole_vec=None): dims = sources_host.shape[0] eqn_letter = "h" if helmholtz_k else "l" @@ -88,10 +89,10 @@ def get_fmmlib_ref_pot(wrangler, weights, sources_host, targets_host, kwargs["zk"] = helmholtz_k return wrangler.finalize_potentials( + actx, fmmlib_routine( sources=sources_host, targets=targets_host, - **kwargs)[0], - template_ary=weights) + **kwargs)[0]) # }}} @@ -278,7 +279,7 @@ def test_fmm_completeness(actx_factory, dims, nsources_req, ntargets_req, == weights) from boxtree.fmm import drive_fmm - pot = drive_fmm(wrangler, (weights,)) + pot = drive_fmm(actx, wrangler, (weights,)) if filter_kind: pot = pot[actx.to_numpy(flags) > 0] @@ -296,7 +297,7 @@ def test_fmm_completeness(actx_factory, dims, nsources_req, ntargets_req, for i in range(nsources): unit_vec = np.zeros(nsources, dtype=dtype) unit_vec[i] = 1 - mat[:, i] = drive_fmm(host_trav, wrangler, (unit_vec,)) + mat[:, i] = drive_fmm(actx, wrangler, (unit_vec,)) pb.progress() pb.finished() @@ -410,8 +411,8 @@ def test_pyfmmlib_fmm(actx_factory, dims, use_dipoles, helmholtz_k): p_normal(actx, ntargets, dims, dtype, seed=18) + np.array([2, 0, 0])[:dims]) - sources_host = particle_array_to_host(actx, sources) - targets_host = particle_array_to_host(actx, targets) + sources_host = np.stack(actx.to_numpy(sources)) + targets_host = np.stack(actx.to_numpy(targets)) from boxtree import TreeBuilder tb = TreeBuilder(actx) @@ -462,7 +463,7 @@ def fmm_level_to_order(tree, lev): from boxtree.fmm import drive_fmm timing_data = {} - pot = drive_fmm(wrangler, (weights,), timing_data=timing_data) + pot = drive_fmm(actx, wrangler, (weights,), timing_data=timing_data) print(timing_data) assert timing_data @@ -470,8 +471,8 @@ def fmm_level_to_order(tree, lev): logger.info("computing direct (reference) result") - ref_pot = get_fmmlib_ref_pot(wrangler, weights, sources_host.T, - targets_host.T, helmholtz_k, dipole_vec) + ref_pot = get_fmmlib_ref_pot(actx, wrangler, weights, sources_host, + targets_host, helmholtz_k, dipole_vec) rel_err = la.norm(pot - ref_pot, np.inf) / la.norm(ref_pot, np.inf) logger.info("relative l2 error vs fmmlib direct: %g", rel_err) @@ -508,11 +509,9 @@ def fmm_level_to_order(tree, lev): if use_dipoles: knl = DirectionalSourceDerivative(knl) - sumpy_extra_kwargs["src_derivative_dir"] = dipole_vec + sumpy_extra_kwargs["src_derivative_dir"] = actx.from_numpy(dipole_vec) - p2p = P2P(actx.context, - [knl], - exclude_self=False) + p2p = P2P(target_kernels=[knl], exclude_self=False) result, = p2p( actx, @@ -595,14 +594,14 @@ def fmm_level_to_order(tree, lev): rotation_data=FMMLibRotationData(actx, trav)) from boxtree.fmm import drive_fmm - pot = drive_fmm(wrangler, (weights,)) + pot = drive_fmm(actx, wrangler, (weights,)) assert not np.isnan(pot).any() # {{{ ref fmmlib computation logger.info("computing direct (reference) result") - ref_pot = get_fmmlib_ref_pot(wrangler, weights, sources, targets, + ref_pot = get_fmmlib_ref_pot(actx, wrangler, weights, sources, targets, helmholtz_k) rel_err = la.norm(pot - ref_pot, np.inf) / la.norm(ref_pot, np.inf) @@ -664,7 +663,7 @@ def test_interaction_list_particle_count_thresholding(actx_factory, enable_exten tree_indep = ConstantOneTreeIndependentDataForWrangler() wrangler = ConstantOneExpansionWrangler(tree_indep, host_trav) - pot = drive_fmm(wrangler, (weights,)) + pot = drive_fmm(actx, wrangler, (weights,)) assert np.all(pot == weights_sum) @@ -718,7 +717,7 @@ def test_fmm_float32(actx_factory, enable_extents): tree_indep = ConstantOneTreeIndependentDataForWrangler() wrangler = ConstantOneExpansionWrangler(tree_indep, host_trav) - pot = drive_fmm(wrangler, (weights,)) + pot = drive_fmm(actx, wrangler, (weights,)) assert np.all(pot == weights_sum) @@ -794,11 +793,11 @@ def fmm_level_to_order(tree, lev): baseline_timing_data = {} baseline_pot = drive_fmm( - baseline_wrangler, (weights,), timing_data=baseline_timing_data) + actx, baseline_wrangler, (weights,), timing_data=baseline_timing_data) optimized_timing_data = {} optimized_pot = drive_fmm( - optimized_wrangler, (weights,), timing_data=optimized_timing_data) + actx, optimized_wrangler, (weights,), timing_data=optimized_timing_data) baseline_time = baseline_timing_data["multipole_to_local"]["process_elapsed"] if baseline_time is not None: From 61fedf4f49d8ec2c21a1eb09b6092a21ba84f009 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Fri, 23 Sep 2022 20:38:42 +0300 Subject: [PATCH 25/34] rip out timing collection --- boxtree/constant_one.py | 41 ++------ boxtree/distributed/__init__.py | 6 +- boxtree/fmm.py | 93 ++++++----------- boxtree/pyfmmlib_integration.py | 15 +-- boxtree/timing.py | 173 -------------------------------- doc/misc.rst | 19 +++- doc/tools.rst | 2 - examples/cost_model.py | 8 +- test/test_cost_model.py | 14 +-- test/test_distributed.py | 16 +-- test/test_fmm.py | 22 +--- 11 files changed, 69 insertions(+), 340 deletions(-) delete mode 100644 boxtree/timing.py diff --git a/boxtree/constant_one.py b/boxtree/constant_one.py index 71a9656d..b8b12bc6 100644 --- a/boxtree/constant_one.py +++ b/boxtree/constant_one.py @@ -32,7 +32,6 @@ import numpy as np from boxtree.fmm import ExpansionWranglerInterface, TreeIndependentDataForWrangler -from boxtree.timing import DummyTimingFuture if TYPE_CHECKING: @@ -51,9 +50,6 @@ class ConstantOneExpansionWrangler(ExpansionWranglerInterface): """This implements the 'analytical routines' for a Green's function that is constant 1 everywhere. For 'charges' of 'ones', this should get every particle a copy of the particle count. - - Timing results returned by this wrangler contain the field *ops_elapsed*, - which counts approximately the number of floating-point operations required. """ def _get_source_slice(self, ibox): @@ -88,31 +84,24 @@ def local_expansions_view(self, local_exps, level): # FIXME raise NotImplementedError - @staticmethod - def timing_future(ops): - return DummyTimingFuture.from_op_count(ops) - def form_multipoles(self, actx: PyOpenCLArrayContext, level_start_source_box_nrs, source_boxes, src_weight_vecs): src_weights, = src_weight_vecs mpoles = self.multipole_expansion_zeros() - ops = 0 for ibox in source_boxes: pslice = self._get_source_slice(ibox) mpoles[ibox] += np.sum(src_weights[pslice]) - ops += src_weights[pslice].size - return mpoles, self.timing_future(ops) + return mpoles def coarsen_multipoles(self, actx: PyOpenCLArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, mpoles): tree = self.tree - ops = 0 # nlevels-1 is the last valid level index # nlevels-2 is the last valid level that could have children @@ -128,16 +117,14 @@ def coarsen_multipoles(self, actx: PyOpenCLArrayContext, for child in tree.box_child_ids[:, ibox]: if child: mpoles[ibox] += mpoles[child] - ops += 1 - return mpoles, self.timing_future(ops) + return mpoles def eval_direct(self, actx: PyOpenCLArrayContext, target_boxes, neighbor_sources_starts, neighbor_sources_lists, src_weight_vecs): src_weights, = src_weight_vecs pot = self.output_zeros() - ops = 0 for itgt_box, tgt_ibox in enumerate(target_boxes): tgt_pslice = self._get_target_slice(tgt_ibox) @@ -153,9 +140,8 @@ def eval_direct(self, actx: PyOpenCLArrayContext, src_sum += np.sum(src_weights[src_pslice]) pot[tgt_pslice] = src_sum - ops += pot[tgt_pslice].size * nsrcs - return pot, self.timing_future(ops) + return pot def multipole_to_local(self, actx: PyOpenCLArrayContext, @@ -163,7 +149,6 @@ def multipole_to_local(self, target_or_target_parent_boxes, starts, lists, mpole_exps): local_exps = self.local_expansion_zeros() - ops = 0 for itgt_box, tgt_ibox in enumerate(target_or_target_parent_boxes): start, end = starts[itgt_box:itgt_box+2] @@ -172,11 +157,10 @@ def multipole_to_local(self, # print tgt_ibox, "<-", lists[start:end] for src_ibox in lists[start:end]: contrib += mpole_exps[src_ibox] - ops += 1 local_exps[tgt_ibox] += contrib - return local_exps, self.timing_future(ops) + return local_exps def eval_multipoles(self, actx: PyOpenCLArrayContext, @@ -184,7 +168,6 @@ def eval_multipoles(self, from_sep_smaller_nonsiblings_by_level, mpole_exps): pot = self.output_zeros() - ops = 0 for level, ssn in enumerate(from_sep_smaller_nonsiblings_by_level): for itgt_box, tgt_ibox in \ @@ -198,9 +181,8 @@ def eval_multipoles(self, contrib += mpole_exps[src_ibox] pot[tgt_pslice] += contrib - ops += pot[tgt_pslice].size * (end - start) - return pot, self.timing_future(ops) + return pot def form_locals(self, actx: PyOpenCLArrayContext, @@ -209,7 +191,6 @@ def form_locals(self, starts, lists, src_weight_vecs): src_weights, = src_weight_vecs local_exps = self.local_expansion_zeros() - ops = 0 for itgt_box, tgt_ibox in enumerate(target_or_target_parent_boxes): start, end = starts[itgt_box:itgt_box+2] @@ -224,38 +205,32 @@ def form_locals(self, contrib += np.sum(src_weights[src_pslice]) local_exps[tgt_ibox] += contrib - ops += nsrcs - return local_exps, self.timing_future(ops) + return local_exps def refine_locals(self, actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, local_exps): - ops = 0 - for target_lev in range(1, self.tree.nlevels): start, stop = level_start_target_or_target_parent_box_nrs[ target_lev:target_lev+2] for ibox in target_or_target_parent_boxes[start:stop]: local_exps[ibox] += local_exps[self.tree.box_parent_ids[ibox]] - ops += 1 - return local_exps, self.timing_future(ops) + return local_exps def eval_locals(self, actx: PyOpenCLArrayContext, level_start_target_box_nrs, target_boxes, local_exps): pot = self.output_zeros() - ops = 0 for ibox in target_boxes: tgt_pslice = self._get_target_slice(ibox) pot[tgt_pslice] += local_exps[ibox] - ops += pot[tgt_pslice].size - return pot, self.timing_future(ops) + return pot def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): return potentials diff --git a/boxtree/distributed/__init__.py b/boxtree/distributed/__init__.py index 5cc2031a..aea1f79b 100644 --- a/boxtree/distributed/__init__.py +++ b/boxtree/distributed/__init__.py @@ -299,16 +299,12 @@ def __init__(self, array_context: PyOpenCLArrayContext, global_tree, array_context, global_tree, traversal_builder, wrangler_factory, calibration_params, comm) - def drive_dfmm(self, - actx: PyOpenCLArrayContext, - source_weights, - timing_data=None): + def drive_dfmm(self, actx: PyOpenCLArrayContext, source_weights): """Calculate potentials at target points.""" from boxtree.fmm import drive_fmm return drive_fmm( actx, self.wrangler, source_weights, - timing_data=timing_data, global_src_idx_all_ranks=self.src_idx_all_ranks, global_tgt_idx_all_ranks=self.tgt_idx_all_ranks) diff --git a/boxtree/fmm.py b/boxtree/fmm.py index ba01d54f..aeea9078 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -81,13 +81,15 @@ class ExpansionWranglerInterface(ABC): :class:`TreeIndependentDataForWrangler` exists to hold data that is more broadly reusable. - Functions that support returning timing data return a value supporting the - :class:`~boxtree.timing.TimingFuture` interface. - .. versionchanged:: 2018.1 Changed (a subset of) functions to return timing data. + .. versionchanged:: 2022.1 + + Removed timing data that should be handled by the + :class:`~arraycontext.ArrayContext`. + .. attribute:: tree_indep An instance of (a typically wrangler-dependent subclass of) @@ -167,12 +169,10 @@ def form_multipoles(self, actx: PyOpenCLArrayContext, level_start_source_box_nrs, source_boxes, src_weight_vecs): - """Return an expansions array - containing multipole expansions in *source_boxes* due to sources - with *src_weight_vecs*. - All other expansions must be zero. - - :return: A pair (*mpoles*, *timing_future*). + """ + :returns: an expansions array containing multipole expansions in + *source_boxes* due to sources with *src_weight_vecs*. + All other expansions must be zero. """ @abstractmethod @@ -180,12 +180,11 @@ def coarsen_multipoles(self, actx: PyOpenCLArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, mpoles): - """For each box in *source_parent_boxes*, - gather (and translate) the box's children's multipole expansions in - *mpole* and add the resulting expansion into the box's multipole - expansion in *mpole*. + """For each box in *source_parent_boxes*, gather (and translate) the + box's children's multipole expansions in *mpoles* and add the + resulting expansion into the box's multipole expansion in *mpoles*. - :returns: A pair (*mpoles*, *timing_future*). + :returns: the updated *mpoles*. """ @abstractmethod @@ -197,8 +196,7 @@ def eval_direct(self, neighbor sources due to *src_weight_vecs*, which use :ref:`csr` and are indexed like *target_boxes*. - :returns: A pair (*pot*, *timing_future*), where *pot* is a - a new potential array. + :returns: a new potential array. """ @abstractmethod @@ -212,8 +210,7 @@ def multipole_to_local(self, array of local expansions. *starts* and *lists* use :ref:`csr`, and *starts* is indexed like *target_or_target_parent_boxes*. - :returns: A pair (*pot*, *timing_future*) where *pot* is - a new (local) expansion array. + :returns: a new (local) expansion array. """ @abstractmethod @@ -226,8 +223,7 @@ def eval_multipoles(self, *starts* and *lists* in *from_sep_smaller_by_level[i]* use :ref:`csr` and *starts* is indexed like *target_boxes_by_source_level[i]*. - :returns: A pair (*pot*, *timing_future*) where *pot* is a new potential - array. + :returns: a new potential array. """ @abstractmethod @@ -241,8 +237,7 @@ def form_locals(self, use :ref:`csr` and *starts* is indexed like *target_or_target_parent_boxes*. - :returns: A pair (*pot*, *timing_future*) where *pot* is a new - local expansion array. + :returns: a new local expansion array. """ @abstractmethod @@ -254,7 +249,7 @@ def refine_locals(self, translate the box's parent's local expansion in *local_exps* and add the resulting expansion into the box's local expansion in *local_exps*. - :returns: A pair (*local_exps*, *timing_future*). + :returns: an updated local expansion array *local_exps*. """ @abstractmethod @@ -264,8 +259,7 @@ def eval_locals(self, """For each box in *target_boxes*, evaluate the local expansion in *local_exps* and return a new potential array. - :returns: A pair (*pot*, *timing_future*) where *pot* is a new potential - array. + :returns: a new potential array. """ # }}} @@ -350,7 +344,6 @@ def communicate_mpoles(self, # noqa: B027 def drive_fmm(actx: PyOpenCLArrayContext, wrangler: ExpansionWranglerInterface, src_weight_vecs, *, - timing_data=None, global_src_idx_all_ranks=None, global_tgt_idx_all_ranks=None): """Top-level driver routine for a fast multipole calculation. @@ -371,9 +364,6 @@ def drive_fmm(actx: PyOpenCLArrayContext, Passed unmodified to *expansion_wrangler*. For distributed implementation, this argument is only significant on the root rank, but worker ranks still need to supply a dummy vector. - :arg timing_data: Either *None*, or a :class:`dict` that is populated with - timing information for the stages of the algorithm (in the form of - :class:`~boxtree.timing.TimingResult`), if such information is available. :arg global_src_idx_all_ranks: Only used in the distributed implementation. A :class:`list` of length ``nranks``, where the i-th entry is a :class:`numpy.ndarray` representing the global indices of sources in the @@ -395,9 +385,7 @@ def drive_fmm(actx: PyOpenCLArrayContext, # Interface guidelines: Attributes of the tree are assumed to be known # to the expansion wrangler and should not be passed. - from boxtree.timing import TimingRecorder fmm_proc = ProcessLogger(logger, "fmm") - recorder = TimingRecorder() src_weight_vecs = [ wrangler.reorder_sources(weight) for weight in src_weight_vecs] @@ -408,26 +396,22 @@ def drive_fmm(actx: PyOpenCLArrayContext, # {{{ "Step 2.1:" Construct local multipoles - mpole_exps, timing_future = wrangler.form_multipoles( + mpole_exps = wrangler.form_multipoles( actx, traversal.level_start_source_box_nrs, traversal.source_boxes, src_weight_vecs) - recorder.add("form_multipoles", timing_future) - # }}} # {{{ "Step 2.2:" Propagate multipoles upward - mpole_exps, timing_future = wrangler.coarsen_multipoles( + mpole_exps = wrangler.coarsen_multipoles( actx, traversal.level_start_source_parent_box_nrs, traversal.source_parent_boxes, mpole_exps) - recorder.add("coarsen_multipoles", timing_future) - # mpole_exps is called Phi in [1] # }}} @@ -436,22 +420,20 @@ def drive_fmm(actx: PyOpenCLArrayContext, # {{{ "Stage 3:" Direct evaluation from neighbor source boxes ("list 1") - potentials, timing_future = wrangler.eval_direct( + potentials = wrangler.eval_direct( actx, traversal.target_boxes, traversal.neighbor_source_boxes_starts, traversal.neighbor_source_boxes_lists, src_weight_vecs) - recorder.add("eval_direct", timing_future) - # these potentials are called alpha in [1] # }}} # {{{ "Stage 4:" translate separated siblings' ("list 2") mpoles to local - local_exps, timing_future = wrangler.multipole_to_local( + local_exps = wrangler.multipole_to_local( actx, traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, @@ -459,8 +441,6 @@ def drive_fmm(actx: PyOpenCLArrayContext, traversal.from_sep_siblings_lists, mpole_exps) - recorder.add("multipole_to_local", timing_future) - # local_exps represents both Gamma and Delta in [1] # }}} @@ -470,14 +450,12 @@ def drive_fmm(actx: PyOpenCLArrayContext, # (the point of aiming this stage at particles is specifically to keep its # contribution *out* of the downward-propagating local expansions) - mpole_result, timing_future = wrangler.eval_multipoles( + mpole_result = wrangler.eval_multipoles( actx, traversal.target_boxes_sep_smaller_by_source_level, traversal.from_sep_smaller_by_level, mpole_exps) - recorder.add("eval_multipoles", timing_future) - potentials = potentials + mpole_result # these potentials are called beta in [1] @@ -486,22 +464,20 @@ def drive_fmm(actx: PyOpenCLArrayContext, logger.debug("evaluate separated close smaller interactions directly " "('list 3 close')") - direct_result, timing_future = wrangler.eval_direct( + direct_result = wrangler.eval_direct( actx, traversal.target_boxes, traversal.from_sep_close_smaller_starts, traversal.from_sep_close_smaller_lists, src_weight_vecs) - recorder.add("eval_direct", timing_future) - potentials = potentials + direct_result # }}} # {{{ "Stage 6:" form locals for separated bigger source boxes ("list 4") - local_result, timing_future = wrangler.form_locals( + local_result = wrangler.form_locals( actx, traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, @@ -509,46 +485,38 @@ def drive_fmm(actx: PyOpenCLArrayContext, traversal.from_sep_bigger_lists, src_weight_vecs) - recorder.add("form_locals", timing_future) - local_exps = local_exps + local_result if traversal.from_sep_close_bigger_starts is not None: - direct_result, timing_future = wrangler.eval_direct( + direct_result = wrangler.eval_direct( actx, traversal.target_boxes, traversal.from_sep_close_bigger_starts, traversal.from_sep_close_bigger_lists, src_weight_vecs) - recorder.add("eval_direct", timing_future) - potentials = potentials + direct_result # }}} # {{{ "Stage 7:" propagate local_exps downward - local_exps, timing_future = wrangler.refine_locals( + local_exps = wrangler.refine_locals( actx, traversal.level_start_target_or_target_parent_box_nrs, traversal.target_or_target_parent_boxes, local_exps) - recorder.add("refine_locals", timing_future) - # }}} # {{{ "Stage 8:" evaluate locals - local_result, timing_future = wrangler.eval_locals( + local_result = wrangler.eval_locals( actx, traversal.level_start_target_box_nrs, traversal.target_boxes, local_exps) - recorder.add("eval_locals", timing_future) - potentials = potentials + local_result # }}} @@ -563,9 +531,6 @@ def drive_fmm(actx: PyOpenCLArrayContext, fmm_proc.done() - if timing_data is not None: - timing_data.update(recorder.summarize()) - return result diff --git a/boxtree/pyfmmlib_integration.py b/boxtree/pyfmmlib_integration.py index cf92aeb9..6d845a51 100644 --- a/boxtree/pyfmmlib_integration.py +++ b/boxtree/pyfmmlib_integration.py @@ -47,7 +47,6 @@ from pytools import log_process, memoize_method from boxtree.fmm import ExpansionWranglerInterface, TreeIndependentDataForWrangler -from boxtree.timing import return_timing_data if TYPE_CHECKING: @@ -277,11 +276,7 @@ def wrapper(*args, **kwargs): class FMMLibExpansionWrangler(ExpansionWranglerInterface): """Implements the :class:`boxtree.fmm.ExpansionWranglerInterface` - by using pyfmmlib. - - Timing results returned by this wrangler contains the values *wall_elapsed* - and (optionally, if supported) *process_elapsed*, which measure wall time - and process time in seconds, respectively. + by using ``pyfmmlib``. """ # {{{ constructor @@ -680,7 +675,6 @@ def reorder_potentials(self, potentials): return potentials[self.tree.sorted_target_ids] @log_process(logger) - @return_timing_data def form_multipoles(self, actx: PyOpenCLArrayContext, level_start_source_box_nrs, source_boxes, @@ -725,7 +719,6 @@ def form_multipoles(self, actx: PyOpenCLArrayContext, return mpoles @log_process(logger) - @return_timing_data def coarsen_multipoles(self, actx: PyOpenCLArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, @@ -783,7 +776,6 @@ def coarsen_multipoles(self, actx: PyOpenCLArrayContext, return mpoles @log_process(logger) - @return_timing_data def eval_direct(self, actx: PyOpenCLArrayContext, target_boxes, neighbor_sources_starts, @@ -830,7 +822,6 @@ def eval_direct(self, actx: PyOpenCLArrayContext, return output @log_process(logger) - @return_timing_data def multipole_to_local(self, actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, @@ -945,7 +936,6 @@ def multipole_to_local(self, actx: PyOpenCLArrayContext, return local_exps @log_process(logger) - @return_timing_data def eval_multipoles(self, actx: PyOpenCLArrayContext, target_boxes_by_source_level, sep_smaller_nonsiblings_by_level, @@ -989,7 +979,6 @@ def eval_multipoles(self, actx: PyOpenCLArrayContext, return output @log_process(logger) - @return_timing_data def form_locals(self, actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, @@ -1070,7 +1059,6 @@ def form_locals(self, actx: PyOpenCLArrayContext, return local_exps @log_process(logger) - @return_timing_data def refine_locals(self, actx: PyOpenCLArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, @@ -1119,7 +1107,6 @@ def refine_locals(self, actx: PyOpenCLArrayContext, return local_exps @log_process(logger) - @return_timing_data def eval_locals(self, actx: PyOpenCLArrayContext, level_start_target_box_nrs, target_boxes, diff --git a/boxtree/timing.py b/boxtree/timing.py deleted file mode 100644 index f74e342d..00000000 --- a/boxtree/timing.py +++ /dev/null @@ -1,173 +0,0 @@ -""" -.. autoclass:: TimingResult - -.. autoclass:: TimingFuture -""" -from __future__ import annotations - - -__copyright__ = "Copyright (C) 2012 Andreas Kloeckner" - -__license__ = """ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -""" - - -from collections.abc import Mapping - - -# {{{ timing result - -class TimingResult(Mapping): - """Interface for returned timing data. - - This supports accessing timing results via a mapping interface, along with - combining results via :meth:`merge`. - - .. automethod:: merge - """ - - def __init__(self, *args, **kwargs): - """See constructor for :class:`dict`.""" - self._mapping = dict(*args, **kwargs) - - def __getitem__(self, key): - return self._mapping[key] - - def __iter__(self): - return iter(self._mapping) - - def __len__(self): - return len(self._mapping) - - def merge(self, other): - """Merge this result with another by adding together common fields.""" - result = {} - - for key in self: - val = self.get(key) - other_val = other.get(key) - - if val is None or other_val is None: - continue - - result[key] = val + other_val - - return type(self)(result) - -# }}} - - -# {{{ timing future - -class TimingFuture: - """Returns timing data for a potentially asynchronous operation. - - .. automethod:: result - .. automethod:: done - """ - - def result(self): - """Return a :class:`TimingResult`. May block.""" - raise NotImplementedError - - def done(self): - """Return *True* if the operation is complete.""" - raise NotImplementedError - -# }}} - - -# {{{ timing recorder - -class TimingRecorder: - - def __init__(self): - from collections import defaultdict - self.futures = defaultdict(list) - - def add(self, description, future): - self.futures[description].append(future) - - def summarize(self): - result = {} - - for description, futures_list in self.futures.items(): - futures = iter(futures_list) - - timing_result = next(futures).result() - for future in futures: - timing_result = timing_result.merge(future.result()) - - result[description] = timing_result - - return result - -# }}} - - -# {{{ time recording tool - -class DummyTimingFuture(TimingFuture): - @classmethod - def from_timer(cls, timer): - return cls(wall_elapsed=timer.wall_elapsed, - process_elapsed=timer.process_elapsed) - - @classmethod - def from_op_count(cls, op_count): - return cls(ops_elapsed=op_count) - - def __init__(self, *args, **kwargs): - self._result = TimingResult(*args, **kwargs) - - def result(self): - return self._result - - def done(self): - return True - - -def return_timing_data(wrapped): - """A decorator for recording timing data for a function call. - - The decorated function returns a tuple (*retval*, *timing_future*) - where *retval* is the original return value and *timing_future* - supports the timing data future interface in :mod:`boxtree.fmm`. - """ - - from pytools import ProcessTimer - - def wrapper(*args, **kwargs): - timer = ProcessTimer() - retval = wrapped(*args, **kwargs) - timer.done() - - future = DummyTimingFuture.from_timer(timer) - return (retval, future) - - from functools import update_wrapper - new_wrapper = update_wrapper(wrapper, wrapped) - - return new_wrapper - -# }}} - - -# vim: foldmethod=marker diff --git a/doc/misc.rst b/doc/misc.rst index 37f83588..ebfaa9f3 100644 --- a/doc/misc.rst +++ b/doc/misc.rst @@ -27,13 +27,24 @@ For development, you may want to install in `editable mode User-visible Changes ==================== -Version 2019.1 +.. note:: + + You can get snapshots of in-development versions from + :mod:`boxtree`'s `git repository `_. + +Version 2024.1 -------------- -.. note:: +* Use :mod:`arraycontext` as the main array abstraction (over :mod:`pyopencl` + only at the moment). This changed the API of many functions and classes, + since most of them now take an :class:`~arraycontext.ArrayContext` instead + of a :class:`pyopencl.Context`. +* Remove (temporarily) cost model support. This removed the *timing_data* + parameter and return values from the FMM driver. +* Removed *DeviceDataRecord* in favour of array containers from :mod:`arraycontext`. - This version is currently under development. You can get snapshots from - boxtree's `git repository `__ +Version 2019.1 +-------------- * Faster M2Ls in the FMMLIB backend using precomputed rotation matrices. This change adds an optional *rotation_data* parameter to the FMMLIB geometry wrangler diff --git a/doc/tools.rst b/doc/tools.rst index 0b5225ee..fd3fc963 100644 --- a/doc/tools.rst +++ b/doc/tools.rst @@ -1,8 +1,6 @@ Utility Functionality ===================== -.. automodule:: boxtree.timing - .. automodule:: boxtree.constant_one .. automodule:: boxtree.array_context diff --git a/examples/cost_model.py b/examples/cost_model.py index 8328672f..87565918 100644 --- a/examples/cost_model.py +++ b/examples/cost_model.py @@ -76,12 +76,9 @@ def fmm_level_to_order(tree, ilevel): fmm_level_to_order=fmm_level_to_order) level_orders_list.append(wrangler.level_orders) - timing_data = {} from boxtree.fmm import drive_fmm src_weights = rng.random(size=tree.nsources, dtype=tree.coord_dtype) - drive_fmm(actx, wrangler, (src_weights,), timing_data=timing_data) - - timing_results.append(timing_data) + drive_fmm(actx, wrangler, (src_weights,)) time_field_name = "process_elapsed" @@ -99,6 +96,9 @@ def fmm_level_to_order(tree, ilevel): ) queue.finish() + if not timing_results: + return + params = cost_model.estimate_calibration_params( model_results, timing_results[:-1], time_field_name=time_field_name ) diff --git a/test/test_cost_model.py b/test/test_cost_model.py index feef728e..96156202 100644 --- a/test/test_cost_model.py +++ b/test/test_cost_model.py @@ -378,6 +378,7 @@ def test_compare_cl_and_py_cost_model(actx_factory, nsources, ntargets, dims, dt # {{{ test_estimate_calibration_params @pytest.mark.opencl +@pytest.mark.skip(reason="cost model is not functional") def test_estimate_calibration_params(actx_factory): from boxtree.pyfmmlib_integration import ( FMMLibExpansionWrangler, @@ -439,12 +440,9 @@ def fmm_level_to_order(tree, ilevel): fmm_level_to_order=fmm_level_to_order) level_to_orders.append(wrangler.level_orders) - timing_data = {} from boxtree.fmm import drive_fmm src_weights = rng.random(size=tree.nsources, dtype=tree.coord_dtype) - drive_fmm(actx, wrangler, (src_weights,), timing_data=timing_data) - - timing_results.append(timing_data) + drive_fmm(actx, wrangler, (src_weights,)) time_field_name = "process_elapsed" @@ -461,7 +459,6 @@ def test_params_equal(test_params1, test_params2): assert test_params1[name] == test_params2[name] python_cost_model = _PythonFMMCostModel(make_pde_aware_translation_cost_model) - python_model_results = [] for icase in range(len(traversals)-1): @@ -566,10 +563,10 @@ def test_cost_model_op_counts_agree_with_constantone_wrangler( tree_indep = ConstantOneTreeIndependentDataForWrangler() wrangler = ConstantOneExpansionWrangler(tree_indep, trav) - timing_data = {} from boxtree.fmm import drive_fmm + timing_data = {} src_weights = rng.random(size=tree.nsources, dtype=tree.coord_dtype) - drive_fmm(actx, wrangler, (src_weights,), timing_data=timing_data) + drive_fmm(actx, wrangler, (src_weights,)) cost_model = FMMCostModel( translation_cost_model_factory=OpCountingTranslationCostModel @@ -582,6 +579,9 @@ def test_cost_model_op_counts_agree_with_constantone_wrangler( FMMCostModel.get_unit_calibration_params(), ) + if not timing_data: + return + mismatches = [] for stage in timing_data: if timing_data[stage]["ops_elapsed"] != modeled_time[stage]: diff --git a/test/test_distributed.py b/test/test_distributed.py index a5948640..e73d9fc3 100644 --- a/test/test_distributed.py +++ b/test/test_distributed.py @@ -141,21 +141,7 @@ def wrangler_factory(local_traversal, global_traversal): distributed_fmm_info = DistributedFMMRunner( actx, global_tree_host, tg, wrangler_factory, comm=comm) - timing_data = {} - pot_dfmm = distributed_fmm_info.drive_dfmm( - actx, [sources_weights], timing_data=timing_data) - assert timing_data - - # Uncomment the following section to print the time taken of each stage - """ - if rank == 1: - from pytools import Table - table = Table() - table.add_row(["stage", "time (s)"]) - for stage in timing_data: - table.add_row([stage, "%.2f" % timing_data[stage]["wall_elapsed"]]) - print(table) - """ + pot_dfmm = distributed_fmm_info.drive_dfmm(actx, [sources_weights]) if rank == 0: error = (la.norm(pot_fmm - pot_dfmm * 2 * np.pi, ord=np.inf) diff --git a/test/test_fmm.py b/test/test_fmm.py index db8db629..cc10133a 100644 --- a/test/test_fmm.py +++ b/test/test_fmm.py @@ -462,10 +462,7 @@ def fmm_level_to_order(tree, lev): from boxtree.fmm import drive_fmm - timing_data = {} - pot = drive_fmm(actx, wrangler, (weights,), timing_data=timing_data) - print(timing_data) - assert timing_data + pot = drive_fmm(actx, wrangler, (weights,)) # {{{ ref fmmlib computation @@ -791,21 +788,8 @@ def fmm_level_to_order(tree, lev): from boxtree.fmm import drive_fmm - baseline_timing_data = {} - baseline_pot = drive_fmm( - actx, baseline_wrangler, (weights,), timing_data=baseline_timing_data) - - optimized_timing_data = {} - optimized_pot = drive_fmm( - actx, optimized_wrangler, (weights,), timing_data=optimized_timing_data) - - baseline_time = baseline_timing_data["multipole_to_local"]["process_elapsed"] - if baseline_time is not None: - print(f"Baseline M2L time : {baseline_time:#.4g} s") - - opt_time = optimized_timing_data["multipole_to_local"]["process_elapsed"] - if opt_time is not None: - print(f"Optimized M2L time: {opt_time:#.4g} s") + baseline_pot = drive_fmm(actx, baseline_wrangler, (weights,)) + optimized_pot = drive_fmm(actx, optimized_wrangler, (weights,)) assert np.allclose(baseline_pot, optimized_pot, atol=1e-13, rtol=1e-13) From 62b72437adce169ad0dd7c0348355a58be27eb1b Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Fri, 19 Jul 2024 21:18:23 +0300 Subject: [PATCH 26/34] ruff: mark arraycontext as first-party --- boxtree/area_query.py | 1 + boxtree/array_context.py | 2 +- boxtree/distributed/local_tree.py | 1 + boxtree/distributed/partition.py | 1 + boxtree/rotation_classes.py | 1 + boxtree/translation_classes.py | 1 + boxtree/traversal.py | 5 +++-- boxtree/tree.py | 1 + boxtree/tree_build.py | 2 +- pyproject.toml | 9 +++++---- test/test_cost_model.py | 1 + test/test_distributed.py | 1 + test/test_fmm.py | 1 + test/test_tools.py | 1 + test/test_traversal.py | 2 +- test/test_tree.py | 2 +- test/test_tree_of_boxes.py | 2 +- 17 files changed, 23 insertions(+), 11 deletions(-) diff --git a/boxtree/area_query.py b/boxtree/area_query.py index 84802dbf..314d218a 100644 --- a/boxtree/area_query.py +++ b/boxtree/area_query.py @@ -34,6 +34,7 @@ import numpy as np from mako.template import Template +from arraycontext import Array from pyopencl.elementwise import ElementwiseTemplate from pytools import ProcessLogger, memoize_method diff --git a/boxtree/array_context.py b/boxtree/array_context.py index 45ece32b..ce491117 100644 --- a/boxtree/array_context.py +++ b/boxtree/array_context.py @@ -24,6 +24,7 @@ """ import numpy as np + from arraycontext import ( # noqa: F401 PyOpenCLArrayContext as PyOpenCLArrayContextBase, deserialize_container, @@ -35,7 +36,6 @@ _PytestPyOpenCLArrayContextFactoryWithClass, register_pytest_array_context_factory, ) - from pyopencl.algorithm import BuiltList diff --git a/boxtree/distributed/local_tree.py b/boxtree/distributed/local_tree.py index c8d1a5e8..41ddb626 100644 --- a/boxtree/distributed/local_tree.py +++ b/boxtree/distributed/local_tree.py @@ -32,6 +32,7 @@ import numpy as np from mako.template import Template +from arraycontext import Array, ArrayOrContainer from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype from pytools import memoize_method, obj_array diff --git a/boxtree/distributed/partition.py b/boxtree/distributed/partition.py index c5ac9876..df8c331b 100644 --- a/boxtree/distributed/partition.py +++ b/boxtree/distributed/partition.py @@ -30,6 +30,7 @@ import numpy as np from mako.template import Template +from arraycontext import Array from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype from pytools import memoize_method diff --git a/boxtree/rotation_classes.py b/boxtree/rotation_classes.py index f5790923..9ba6ea58 100644 --- a/boxtree/rotation_classes.py +++ b/boxtree/rotation_classes.py @@ -40,6 +40,7 @@ import numpy as np +from arraycontext import Array from pytools import log_process from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container diff --git a/boxtree/translation_classes.py b/boxtree/translation_classes.py index 583194a5..ba90295e 100644 --- a/boxtree/translation_classes.py +++ b/boxtree/translation_classes.py @@ -42,6 +42,7 @@ import numpy as np from mako.template import Template +from arraycontext import Array from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate from pytools import memoize_method diff --git a/boxtree/traversal.py b/boxtree/traversal.py index 57d1a01a..528c57af 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -56,6 +56,8 @@ import numpy as np from mako.template import Template +from arraycontext import Array +from pyopencl.algorithm import ListOfListsBuilder from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate from pytools import ProcessLogger, log_process, memoize_method, obj_array @@ -68,9 +70,8 @@ if TYPE_CHECKING: - from arraycontext import Array - import pyopencl as cl + from arraycontext import Array from pyopencl.algorithm import ListOfListsBuilder from boxtree.tree_build import ExtentNorm diff --git a/boxtree/tree.py b/boxtree/tree.py index bd516e25..3ed02c62 100644 --- a/boxtree/tree.py +++ b/boxtree/tree.py @@ -85,6 +85,7 @@ import numpy as np from typing_extensions import override +from arraycontext import Array from cgen import Enum from pytools import memoize_method, obj_array diff --git a/boxtree/tree_build.py b/boxtree/tree_build.py index 0e581d3c..dcea03cb 100644 --- a/boxtree/tree_build.py +++ b/boxtree/tree_build.py @@ -62,10 +62,10 @@ if TYPE_CHECKING: - from arraycontext import Array from numpy.typing import NDArray import pyopencl as cl + from arraycontext import Array from pyopencl.cl_array import Allocator from pyopencl.typing import WaitList diff --git a/pyproject.toml b/pyproject.toml index 63408875..2d02175e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -96,13 +96,14 @@ multiline-quotes = "double" [tool.ruff.lint.isort] combine-as-imports = true known-first-party = [ - "pytools", - "pymbolic", + "arraycontext", + "cgen", "loopy", - "pyopencl", "meshmode", "modepy", - "cgen" + "pymbolic", + "pyopencl", + "pytools", ] known-local-folder = [ "boxtree", diff --git a/test/test_cost_model.py b/test/test_cost_model.py index 96156202..04b419af 100644 --- a/test/test_cost_model.py +++ b/test/test_cost_model.py @@ -33,6 +33,7 @@ import numpy as np import pytest + from arraycontext import pytest_generate_tests_for_array_contexts from boxtree.array_context import PytestPyOpenCLArrayContextFactory, _acf # noqa: F401 diff --git a/test/test_distributed.py b/test/test_distributed.py index e73d9fc3..5d5fec52 100644 --- a/test/test_distributed.py +++ b/test/test_distributed.py @@ -30,6 +30,7 @@ import numpy as np import numpy.linalg as la import pytest + from arraycontext import pytest_generate_tests_for_array_contexts from boxtree.array_context import ( diff --git a/test/test_fmm.py b/test/test_fmm.py index cc10133a..1d6bbcb2 100644 --- a/test/test_fmm.py +++ b/test/test_fmm.py @@ -28,6 +28,7 @@ import numpy as np import numpy.linalg as la import pytest + from arraycontext import pytest_generate_tests_for_array_contexts from boxtree.array_context import ( diff --git a/test/test_tools.py b/test/test_tools.py index 4f73e636..2d746569 100644 --- a/test/test_tools.py +++ b/test/test_tools.py @@ -28,6 +28,7 @@ import numpy as np import pytest + from arraycontext import pytest_generate_tests_for_array_contexts from boxtree.array_context import ( diff --git a/test/test_traversal.py b/test/test_traversal.py index 813f1165..298cb3a4 100644 --- a/test/test_traversal.py +++ b/test/test_traversal.py @@ -28,9 +28,9 @@ import numpy as np import numpy.linalg as la import pytest -from arraycontext import pytest_generate_tests_for_array_contexts import pytools.obj_array as obj_array +from arraycontext import pytest_generate_tests_for_array_contexts from boxtree.array_context import ( PytestPyOpenCLArrayContextFactory, diff --git a/test/test_tree.py b/test/test_tree.py index fd660fdb..57b17de4 100644 --- a/test/test_tree.py +++ b/test/test_tree.py @@ -28,8 +28,8 @@ import numpy as np import pytest -from arraycontext import pytest_generate_tests_for_array_contexts +from arraycontext import pytest_generate_tests_for_array_contexts from pytools import obj_array from boxtree.array_context import PytestPyOpenCLArrayContextFactory, _acf # noqa: F401 diff --git a/test/test_tree_of_boxes.py b/test/test_tree_of_boxes.py index 4d8e137d..9d25b4c3 100644 --- a/test/test_tree_of_boxes.py +++ b/test/test_tree_of_boxes.py @@ -28,9 +28,9 @@ import numpy as np import pytest -from arraycontext import pytest_generate_tests_for_array_contexts import pytools.obj_array as obj_array +from arraycontext import pytest_generate_tests_for_array_contexts # This means boxtree's tests have a hard dependency on meshmode. That's OK. from meshmode import _acf # noqa: F401 From c6dcc6f3e0b19b37ab16dc08f131a5aec67dc17e Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Fri, 19 Jul 2024 22:09:07 +0300 Subject: [PATCH 27/34] test: wrap meshmode array context --- boxtree/array_context.py | 73 +++++++++++++++++++++----------------- boxtree/traversal.py | 1 - test/test_tree_of_boxes.py | 25 +++++++++++-- 3 files changed, 63 insertions(+), 36 deletions(-) diff --git a/boxtree/array_context.py b/boxtree/array_context.py index ce491117..707e5664 100644 --- a/boxtree/array_context.py +++ b/boxtree/array_context.py @@ -46,6 +46,42 @@ # {{{ array context +def _boxtree_rec_map_container(actx, func, array, allowed_types=None, *, + default_scalar=None, strict=False): + import arraycontext.impl.pyopencl.taggable_cl_array as tga + + if allowed_types is None: + allowed_types = (tga.TaggableCLArray,) + + def _wrapper(ary): + # NOTE: this is copied verbatim from arraycontext and this is the + # only change to allow optional fields inside containers + if ary is None: + return ary + + if isinstance(ary, allowed_types): + return func(ary) + elif not strict and isinstance(ary, actx.array_types): + from warnings import warn + warn(f"Invoking {type(actx).__name__}.{func.__name__[1:]} with " + f"{type(ary).__name__} will be unsupported in 2025. Use " + "'to_tagged_cl_array' to convert instances to TaggableCLArray.", + DeprecationWarning, stacklevel=2) + return func(tga.to_tagged_cl_array(ary)) + elif np.isscalar(ary): + if default_scalar is None: + return ary + else: + return np.array(ary).dtype.type(default_scalar) + else: + raise TypeError( + f"{type(actx).__name__}.{func.__name__[1:]} invoked with " + f"an unsupported array type: got '{type(ary).__name__}', " + f"but expected one of {allowed_types}") + + return rec_map_array_container(_wrapper, array) + + class PyOpenCLArrayContext(PyOpenCLArrayContextBase): def transform_loopy_program(self, t_unit): default_ep = t_unit.default_entrypoint @@ -64,38 +100,11 @@ def transform_loopy_program(self, t_unit): def _rec_map_container(self, func, array, allowed_types=None, *, default_scalar=None, strict=False): - import arraycontext.impl.pyopencl.taggable_cl_array as tga - - if allowed_types is None: - allowed_types = (tga.TaggableCLArray,) - - def _wrapper(ary): - # NOTE: this is copied verbatim from arraycontext and this is the - # only change to allow optional fields inside containers - if ary is None: - return ary - - if isinstance(ary, allowed_types): - return func(ary) - elif not strict and isinstance(ary, self.array_types): - from warnings import warn - warn(f"Invoking {type(self).__name__}.{func.__name__[1:]} with " - f"{type(ary).__name__} will be unsupported in 2025. Use " - "'to_tagged_cl_array' to convert instances to TaggableCLArray.", - DeprecationWarning, stacklevel=2) - return func(tga.to_tagged_cl_array(ary)) - elif np.isscalar(ary): - if default_scalar is None: - return ary - else: - return np.array(ary).dtype.type(default_scalar) - else: - raise TypeError( - f"{type(self).__name__}.{func.__name__[1:]} invoked with " - f"an unsupported array type: got '{type(ary).__name__}', " - f"but expected one of {allowed_types}") - - return rec_map_array_container(_wrapper, array) + return _boxtree_rec_map_container( + self, func, array, + allowed_types=allowed_types, + default_scalar=default_scalar, + strict=strict) # }}} diff --git a/boxtree/traversal.py b/boxtree/traversal.py index 528c57af..a5bc2e87 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -57,7 +57,6 @@ from mako.template import Template from arraycontext import Array -from pyopencl.algorithm import ListOfListsBuilder from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate from pytools import ProcessLogger, log_process, memoize_method, obj_array diff --git a/test/test_tree_of_boxes.py b/test/test_tree_of_boxes.py index 9d25b4c3..51a1e1be 100644 --- a/test/test_tree_of_boxes.py +++ b/test/test_tree_of_boxes.py @@ -34,7 +34,10 @@ # This means boxtree's tests have a hard dependency on meshmode. That's OK. from meshmode import _acf # noqa: F401 -from meshmode.array_context import PytestPyOpenCLArrayContextFactory +from meshmode.array_context import ( + PyOpenCLArrayContext, + PytestPyOpenCLArrayContextFactory, +) from boxtree import ( make_meshmode_mesh_from_leaves, @@ -43,10 +46,26 @@ ) -logger = logging.getLogger(__name__) +# NOTE: the TreeOfBoxes makes use of meshmode, so we need to use its array context +# to properly handle all the special tags and things that it handles. +class FromMeshmodePyOpenCLArrayContext(PyOpenCLArrayContext): + def _rec_map_container(self, func, array, allowed_types=None, *, + default_scalar=None, strict=False): + from boxtree.array_context import _boxtree_rec_map_container + return _boxtree_rec_map_container( + self, func, array, + allowed_types=allowed_types, + default_scalar=default_scalar, + strict=strict) + +class FromMeshmodeContextFactory(PytestPyOpenCLArrayContextFactory): + actx_class = FromMeshmodePyOpenCLArrayContext + + +logger = logging.getLogger(__name__) pytest_generate_tests = pytest_generate_tests_for_array_contexts([ - PytestPyOpenCLArrayContextFactory, + FromMeshmodeContextFactory, ]) From e77451ed5342766c0fafd4e8398823d048ac1e8a Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Fri, 1 Aug 2025 10:07:44 +0300 Subject: [PATCH 28/34] docs: update missing references --- boxtree/traversal.py | 5 ++++- doc/conf.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/boxtree/traversal.py b/boxtree/traversal.py index a5bc2e87..b84860b0 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -11,7 +11,7 @@ .. automethod:: __call__ -.. autoclass:: FromSepSmallerCrit +.. class:: FromSepSmallerCrit The criterion used to determine separation box dimensions and separation for @@ -21,6 +21,9 @@ ``"precise_linf"`` (use the precise extent of targets in the box, including their radii), or ``"static_l2"`` (use the circumcircle of the box, possibly enlarged by :attr:`boxtree.Tree.stick_out_factor`). + +.. autodata:: FromSepSmallerCrit + :no-index: """ from __future__ import annotations diff --git a/doc/conf.py b/doc/conf.py index 8cd1e288..05f3cea5 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -29,8 +29,14 @@ "np.dtype": "class:numpy.dtype", # pytools typing "ObjectArray1D": "obj:pytools.obj_array.ObjectArray1D", + "obj_array.ObjectArray1D": "obj:pytools.obj_array.ObjectArray1D", # pyopencl typing + "Allocator": "class:pyopencl.array.Allocator", + "WaitList": "class:pyopencl.WaitList", "cl_array.Array": "class:pyopencl.array.Array", + # arraycontext + "Array": "class:arraycontext.typing.Array", + "ArrayContext": "class:arraycontext.ArrayContext", # meshmode typing "Mesh": "class:meshmode.mesh.Mesh", # boxtree typing From 56461bf86267ddfd42d210f3ba6525ff47a05618 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Wed, 10 Dec 2025 15:16:03 -0600 Subject: [PATCH 29/34] Use ArrayContext+assert instead of PyOpenCLActx in annotations --- boxtree/area_query.py | 32 ++++---- boxtree/bounding_box.py | 10 +-- boxtree/constant_one.py | 21 ++--- boxtree/cost.py | 123 ++++++++++++++++++----------- boxtree/distributed/__init__.py | 15 ++-- boxtree/distributed/calculation.py | 13 +-- boxtree/distributed/local_tree.py | 19 ++--- boxtree/distributed/partition.py | 12 +-- boxtree/fmm.py | 29 +++---- boxtree/pyfmmlib_integration.py | 22 +++--- boxtree/rotation_classes.py | 11 +-- boxtree/tools.py | 22 +++--- boxtree/translation_classes.py | 16 ++-- boxtree/traversal.py | 14 ++-- boxtree/tree.py | 12 +-- boxtree/tree_build.py | 9 ++- 16 files changed, 200 insertions(+), 180 deletions(-) diff --git a/boxtree/area_query.py b/boxtree/area_query.py index 314d218a..f85f2dea 100644 --- a/boxtree/area_query.py +++ b/boxtree/area_query.py @@ -29,16 +29,15 @@ import logging from dataclasses import dataclass from functools import partial -from typing import TYPE_CHECKING import numpy as np from mako.template import Template -from arraycontext import Array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pyopencl.elementwise import ElementwiseTemplate from pytools import ProcessLogger, memoize_method -from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.array_context import dataclass_array_container from boxtree.tools import ( InlineBinarySearch, coord_vec_subscript_code, @@ -47,9 +46,6 @@ from boxtree.tree import Tree # noqa: TC001 -if TYPE_CHECKING: - from arraycontext import Array - logger = logging.getLogger(__name__) @@ -663,7 +659,7 @@ class AreaQueryBuilder: .. automethod:: __init__ .. automethod:: __call__ """ - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext) -> None: self._setup_actx = array_context self.peer_list_finder = PeerListFinder(array_context) @@ -741,7 +737,7 @@ def get_area_query_kernel(self, dimensions, coord_dtype, box_id_dtype, # }}} - def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, + def __call__(self, actx: ArrayContext, tree: Tree, ball_centers, ball_radii, peer_lists=None, wait_for=None): """ @@ -758,6 +754,7 @@ def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, :class:`AreaQueryResult`, and *event* is a :class:`pyopencl.Event` for dependency management. """ + assert isinstance(actx, PyOpenCLArrayContext) from pytools import single_valued if single_valued(bc.dtype for bc in ball_centers) != tree.coord_dtype: @@ -818,8 +815,9 @@ class LeavesToBallsLookupBuilder: .. automethod:: __call__ """ - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext) -> None: from pyopencl.algorithm import KeyValueSorter + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx = array_context self.key_value_sorter = KeyValueSorter(self.context) @@ -842,7 +840,7 @@ def get_starts_expander_kernel(self, idx_dtype): self.context, type_aliases=(("idx_t", idx_dtype),)) - def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, + def __call__(self, actx: ArrayContext, tree: Tree, ball_centers, ball_radii, peer_lists=None, wait_for=None): """ @@ -859,6 +857,7 @@ def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, :class:`LeavesToBallsLookup`, and *event* is a :class:`pyopencl.Event` for dependency management. """ + assert isinstance(actx, PyOpenCLArrayContext) from pytools import single_valued if single_valued(bc.dtype for bc in ball_centers) != tree.coord_dtype: @@ -939,9 +938,9 @@ class SpaceInvaderQueryBuilder: .. automethod:: __init__ .. automethod:: __call__ - """ - def __init__(self, array_context: PyOpenCLArrayContext) -> None: + + def __init__(self, array_context: ArrayContext) -> None: self._setup_actx = array_context self.peer_list_finder = PeerListFinder(array_context) @@ -964,7 +963,7 @@ def get_space_invader_query_kernel(self, dimensions, coord_dtype, # }}} - def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, + def __call__(self, actx: ArrayContext, tree: Tree, ball_centers, ball_radii, peer_lists=None, wait_for=None): """ @@ -988,6 +987,7 @@ def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, * if *i* is the index of a leaf box, *sqi[i]* is the outer space invader distance for *i*. """ + assert isinstance(actx, PyOpenCLArrayContext) from pytools import single_valued if single_valued(bc.dtype for bc in ball_centers) != tree.coord_dtype: @@ -1073,7 +1073,7 @@ class PeerListFinder: .. automethod:: __call__ """ - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext) -> None: self._setup_actx = array_context @property @@ -1145,7 +1145,7 @@ def get_peer_list_finder_kernel(self, dimensions, coord_dtype, # }}} - def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, wait_for=None): + def __call__(self, actx: ArrayContext, tree: Tree, wait_for=None): """ :arg wait_for: may either be *None* or a list of :class:`pyopencl.Event` instances for whose completion this command waits before starting @@ -1154,6 +1154,8 @@ def __call__(self, actx: PyOpenCLArrayContext, tree: Tree, wait_for=None): :class:`PeerListLookup`, and *event* is a :class:`pyopencl.Event` for dependency management. """ + assert isinstance(actx, PyOpenCLArrayContext) + from pytools import div_ceil # Round up level count--this gets included in the kernel as diff --git a/boxtree/bounding_box.py b/boxtree/bounding_box.py index 5f495287..fecc3d9a 100644 --- a/boxtree/bounding_box.py +++ b/boxtree/bounding_box.py @@ -23,20 +23,15 @@ THE SOFTWARE. """ -from typing import TYPE_CHECKING - import numpy as np +from arraycontext import ArrayContext, PyOpenCLArrayContext from pyopencl.reduction import ReductionTemplate from pytools import memoize, memoize_method from boxtree.tools import get_type_moniker -if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext - - @memoize def make_bounding_box_dtype(device, dimensions, coord_dtype): from boxtree.tools import AXIS_NAMES @@ -128,7 +123,8 @@ def make_bounding_box_dtype(device, dimensions, coord_dtype): class BoundingBoxFinder: - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext) -> None: + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx = array_context for dev in self.context.devices: diff --git a/boxtree/constant_one.py b/boxtree/constant_one.py index b8b12bc6..3ba08c30 100644 --- a/boxtree/constant_one.py +++ b/boxtree/constant_one.py @@ -35,7 +35,8 @@ if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext + from arraycontext import ArrayContext + # {{{ constant one wrangler @@ -84,7 +85,7 @@ def local_expansions_view(self, local_exps, level): # FIXME raise NotImplementedError - def form_multipoles(self, actx: PyOpenCLArrayContext, + def form_multipoles(self, actx: ArrayContext, level_start_source_box_nrs, source_boxes, src_weight_vecs): @@ -97,7 +98,7 @@ def form_multipoles(self, actx: PyOpenCLArrayContext, return mpoles - def coarsen_multipoles(self, actx: PyOpenCLArrayContext, + def coarsen_multipoles(self, actx: ArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, mpoles): @@ -120,7 +121,7 @@ def coarsen_multipoles(self, actx: PyOpenCLArrayContext, return mpoles - def eval_direct(self, actx: PyOpenCLArrayContext, + def eval_direct(self, actx: ArrayContext, target_boxes, neighbor_sources_starts, neighbor_sources_lists, src_weight_vecs): src_weights, = src_weight_vecs @@ -144,7 +145,7 @@ def eval_direct(self, actx: PyOpenCLArrayContext, return pot def multipole_to_local(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, mpole_exps): @@ -163,7 +164,7 @@ def multipole_to_local(self, return local_exps def eval_multipoles(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, target_boxes_by_source_level, from_sep_smaller_nonsiblings_by_level, mpole_exps): @@ -185,7 +186,7 @@ def eval_multipoles(self, return pot def form_locals(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, src_weight_vecs): @@ -209,7 +210,7 @@ def form_locals(self, return local_exps def refine_locals(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, local_exps): for target_lev in range(1, self.tree.nlevels): @@ -221,7 +222,7 @@ def refine_locals(self, return local_exps def eval_locals(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_box_nrs, target_boxes, local_exps): pot = self.output_zeros() @@ -232,7 +233,7 @@ def eval_locals(self, return pot - def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): + def finalize_potentials(self, actx: ArrayContext, potentials): return potentials # }}} diff --git a/boxtree/cost.py b/boxtree/cost.py index f5a79619..6ef512f4 100644 --- a/boxtree/cost.py +++ b/boxtree/cost.py @@ -69,6 +69,7 @@ import numpy as np from mako.template import Template +from arraycontext import ArrayContext, PyOpenCLArrayContext from pymbolic import evaluate, var from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype @@ -78,8 +79,6 @@ if TYPE_CHECKING: from collections.abc import Mapping - from boxtree.array_context import PyOpenCLArrayContext - Template = partial(Template, strict_undefined=True) @@ -235,7 +234,7 @@ def __init__( self.translation_cost_model_factory = translation_cost_model_factory @abstractmethod - def process_form_multipoles(self, actx: PyOpenCLArrayContext, + def process_form_multipoles(self, actx: ArrayContext, traversal, p2m_cost): """Cost for forming multipole expansions of each box. @@ -248,7 +247,7 @@ def process_form_multipoles(self, actx: PyOpenCLArrayContext, pass @abstractmethod - def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, + def process_coarsen_multipoles(self, actx: ArrayContext, traversal, m2m_cost): """Cost for upward propagation. @@ -265,7 +264,7 @@ def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, pass @abstractmethod - def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, + def get_ndirect_sources_per_target_box(self, actx: ArrayContext, traversal): """Collect the number of direct evaluation sources (list 1, list 3 close and list 4 close) for each target box. @@ -277,7 +276,7 @@ def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, pass @abstractmethod - def process_direct(self, actx: PyOpenCLArrayContext, + def process_direct(self, actx: ArrayContext, traversal, ndirect_sources_by_itgt_box, p2p_cost, box_target_counts_nonchild=None): """Direct evaluation cost of each target box of *traversal*. @@ -298,7 +297,7 @@ def process_direct(self, actx: PyOpenCLArrayContext, pass @abstractmethod - def process_list2(self, actx: PyOpenCLArrayContext, traversal, m2l_cost): + def process_list2(self, actx: ArrayContext, traversal, m2l_cost): """ :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. :arg m2l_cost: an array of shape (nlevels,) representing the @@ -310,7 +309,7 @@ def process_list2(self, actx: PyOpenCLArrayContext, traversal, m2l_cost): pass @abstractmethod - def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, + def process_list3(self, actx: ArrayContext, traversal, m2p_cost, box_target_counts_nonchild=None): """ :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. @@ -328,7 +327,7 @@ def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, pass @abstractmethod - def process_list4(self, actx: PyOpenCLArrayContext, traversal, p2l_cost): + def process_list4(self, actx: ArrayContext, traversal, p2l_cost): """ :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. :arg p2l_cost: an array of shape (nlevels,) where the ith entry @@ -341,7 +340,7 @@ def process_list4(self, actx: PyOpenCLArrayContext, traversal, p2l_cost): pass @abstractmethod - def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, + def process_eval_locals(self, actx: ArrayContext, traversal, l2p_cost, box_target_counts_nonchild=None): """ :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. @@ -358,7 +357,7 @@ def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, pass @abstractmethod - def process_refine_locals(self, actx: PyOpenCLArrayContext, traversal, l2l_cost): + def process_refine_locals(self, actx: ArrayContext, traversal, l2l_cost): """Cost of downward propagation. :arg traversal: a :class:`boxtree.traversal.FMMTraversalInfo` object. @@ -374,7 +373,7 @@ def process_refine_locals(self, actx: PyOpenCLArrayContext, traversal, l2l_cost) pass @abstractmethod - def aggregate_over_boxes(self, actx: PyOpenCLArrayContext, per_box_result): + def aggregate_over_boxes(self, actx: ArrayContext, per_box_result): """Sum all entries of *per_box_result* into a number. :arg per_box_result: an array to be sumed. @@ -383,7 +382,7 @@ def aggregate_over_boxes(self, actx: PyOpenCLArrayContext, per_box_result): pass @staticmethod - def cost_factors_to_dev(cost_factors, actx: PyOpenCLArrayContext | None): + def cost_factors_to_dev(cost_factors, actx: ArrayContext | None): cost_factors_dev = {} for name in cost_factors: @@ -396,7 +395,7 @@ def cost_factors_to_dev(cost_factors, actx: PyOpenCLArrayContext | None): return cost_factors_dev def fmm_cost_factors_for_kernels_from_model( - self, actx: PyOpenCLArrayContext | None, nlevels, xlat_cost, context): + self, actx: ArrayContext | None, nlevels, xlat_cost, context): """Evaluate translation cost factors from symbolic model. The result of this function can be used for process_* methods in this class. @@ -446,7 +445,7 @@ def fmm_cost_factors_for_kernels_from_model( return cost_factors @abstractmethod - def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): + def zero_cost_per_box(self, actx: ArrayContext, nboxes): """Helper function for returning the per-box cost filled with 0. :param nboxes: the number of boxes @@ -454,7 +453,7 @@ def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): """ pass - def cost_per_box(self, actx: PyOpenCLArrayContext, traversal, level_to_order, + def cost_per_box(self, actx: ArrayContext, traversal, level_to_order, calibration_params, ndirect_sources_per_target_box=None, box_target_counts_nonchild=None): @@ -536,7 +535,7 @@ def cost_per_box(self, actx: PyOpenCLArrayContext, traversal, level_to_order, return result - def cost_per_stage(self, actx: PyOpenCLArrayContext, traversal, level_to_order, + def cost_per_stage(self, actx: ArrayContext, traversal, level_to_order, calibration_params, ndirect_sources_per_target_box=None, box_target_counts_nonchild=None): @@ -734,9 +733,11 @@ class FMMCostModel(AbstractFMMCostModel): # {{{ form multipoles @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_form_multipoles_knl(self, actx: PyOpenCLArrayContext, + def process_form_multipoles_knl(self, actx: ArrayContext, box_id_dtype, particle_id_dtype, box_level_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(r""" @@ -763,7 +764,9 @@ def process_form_multipoles_knl(self, actx: PyOpenCLArrayContext, name="process_form_multipoles" ) - def process_form_multipoles(self, actx, traversal, p2m_cost): + def process_form_multipoles(self, actx: ArrayContext, traversal, p2m_cost): + assert isinstance(actx, PyOpenCLArrayContext) + tree = traversal.tree np2m = actx.np.zeros(len(traversal.source_boxes), dtype=np.float64) @@ -787,9 +790,11 @@ def process_form_multipoles(self, actx, traversal, p2m_cost): # {{{ propagate multipoles upward @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_coarsen_multipoles_knl(self, actx: PyOpenCLArrayContext, + def process_coarsen_multipoles_knl(self, actx: ArrayContext, ndimensions, box_id_dtype, box_level_dtype, nlevels): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(r""" @@ -831,8 +836,10 @@ def process_coarsen_multipoles_knl(self, actx: PyOpenCLArrayContext, name="process_coarsen_multipoles" ) - def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, + def process_coarsen_multipoles(self, actx: ArrayContext, traversal, m2m_cost): + assert isinstance(actx, PyOpenCLArrayContext) + tree = traversal.tree nm2m = actx.np.zeros(len(traversal.source_parent_boxes), dtype=np.float64) @@ -857,8 +864,10 @@ def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, # {{{ direct evaluation to point targets (lists 1, 3 close, 4 close) @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def _get_ndirect_sources_knl(self, actx: PyOpenCLArrayContext, + def _get_ndirect_sources_knl(self, actx: ArrayContext, particle_id_dtype, box_id_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(""" @@ -893,8 +902,10 @@ def _get_ndirect_sources_knl(self, actx: PyOpenCLArrayContext, name="get_ndirect_sources" ) - def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, + def get_ndirect_sources_per_target_box(self, actx: ArrayContext, traversal): + assert isinstance(actx, PyOpenCLArrayContext) + tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) particle_id_dtype = tree.particle_id_dtype @@ -938,7 +949,7 @@ def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, return ndirect_sources_by_itgt_box - def process_direct(self, actx: PyOpenCLArrayContext, + def process_direct(self, actx: ArrayContext, traversal, ndirect_sources_by_itgt_box, p2p_cost, box_target_counts_nonchild=None): if box_target_counts_nonchild is None: @@ -954,8 +965,10 @@ def process_direct(self, actx: PyOpenCLArrayContext, # {{{ translate separated siblings' ("list 2") mpoles to local @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_list2_knl(self, actx: PyOpenCLArrayContext, + def process_list2_knl(self, actx: ArrayContext, box_id_dtype, box_level_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(r""" @@ -981,7 +994,9 @@ def process_list2_knl(self, actx: PyOpenCLArrayContext, name="process_list2" ) - def process_list2(self, actx, traversal, m2l_cost): + def process_list2(self, actx: ArrayContext, traversal, m2l_cost): + assert isinstance(actx, PyOpenCLArrayContext) + tree = traversal.tree box_id_dtype = tree.box_id_dtype box_level_dtype = tree.box_level_dtype @@ -1008,8 +1023,10 @@ def process_list2(self, actx, traversal, m2l_cost): # {{{ evaluate sep. smaller mpoles ("list 3") at particles @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_list3_knl(self, actx: PyOpenCLArrayContext, + def process_list3_knl(self, actx: ArrayContext, box_id_dtype, particle_id_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(r""" @@ -1037,8 +1054,10 @@ def process_list3_knl(self, actx: PyOpenCLArrayContext, name="process_list3" ) - def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, + def process_list3(self, actx: ArrayContext, traversal, m2p_cost, box_target_counts_nonchild=None): + assert isinstance(actx, PyOpenCLArrayContext) + tree = traversal.tree nm2p = actx.np.zeros(tree.nboxes, dtype=np.float64) @@ -1067,8 +1086,10 @@ def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, # {{{ form locals for separated bigger source boxes ("list 4") @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_list4_knl(self, actx: PyOpenCLArrayContext, + def process_list4_knl(self, actx: ArrayContext, box_id_dtype, particle_id_dtype, box_level_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(r""" @@ -1100,7 +1121,9 @@ def process_list4_knl(self, actx: PyOpenCLArrayContext, name="process_list4" ) - def process_list4(self, actx, traversal, p2l_cost): + def process_list4(self, actx: ArrayContext, traversal, p2l_cost): + assert isinstance(actx, PyOpenCLArrayContext) + tree = traversal.tree target_or_target_parent_boxes = traversal.target_or_target_parent_boxes nm2p = actx.np.zeros(len(target_or_target_parent_boxes), dtype=np.float64) @@ -1127,8 +1150,10 @@ def process_list4(self, actx, traversal, p2l_cost): # {{{ evaluate local expansions at targets @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_eval_locals_knl(self, actx: PyOpenCLArrayContext, + def process_eval_locals_knl(self, actx: ArrayContext, box_id_dtype, particle_id_dtype, box_level_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + return ElementwiseKernel( actx.context, Template(r""" @@ -1155,7 +1180,7 @@ def process_eval_locals_knl(self, actx: PyOpenCLArrayContext, name="process_eval_locals" ) - def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, + def process_eval_locals(self, actx: ArrayContext, traversal, l2p_cost, box_target_counts_nonchild=None): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) @@ -1183,7 +1208,9 @@ def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, # {{{ propagate locals downward @keyed_memoize_method(key=lambda *args: (type(args[0]), args[1:])) - def process_refine_locals_knl(self, actx: PyOpenCLArrayContext, box_id_dtype): + def process_refine_locals_knl(self, actx: ArrayContext, box_id_dtype): + assert isinstance(actx, PyOpenCLArrayContext) + from pyopencl.reduction import ReductionKernel return ReductionKernel( actx.context, @@ -1204,7 +1231,7 @@ def process_refine_locals_knl(self, actx: PyOpenCLArrayContext, box_id_dtype): name="process_refine_locals" ) - def process_refine_locals(self, actx: PyOpenCLArrayContext, + def process_refine_locals(self, actx: ArrayContext, traversal, l2l_cost): tree = traversal.tree process_refine_locals_knl = self.process_refine_locals_knl( @@ -1225,17 +1252,17 @@ def process_refine_locals(self, actx: PyOpenCLArrayContext, # }}} - def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): + def zero_cost_per_box(self, actx: ArrayContext, nboxes): return actx.np.zeros((nboxes,), dtype=np.float64) - def aggregate_over_boxes(self, actx: PyOpenCLArrayContext, per_box_result): + def aggregate_over_boxes(self, actx: ArrayContext, per_box_result): if isinstance(per_box_result, float): return per_box_result else: return actx.to_numpy(actx.np.sum(per_box_result)).item() def fmm_cost_factors_for_kernels_from_model( - self, actx: PyOpenCLArrayContext, nlevels, xlat_cost, context): + self, actx: ArrayContext, nlevels, xlat_cost, context): return AbstractFMMCostModel.fmm_cost_factors_for_kernels_from_model( self, actx, nlevels, xlat_cost, context ) @@ -1246,7 +1273,7 @@ def fmm_cost_factors_for_kernels_from_model( # {{{ _PythonFMMCostModel (undocumented, only used for testing) class _PythonFMMCostModel(AbstractFMMCostModel): - def process_form_multipoles(self, actx: PyOpenCLArrayContext, + def process_form_multipoles(self, actx: ArrayContext, traversal, p2m_cost): tree = traversal.tree np2m = np.zeros(len(traversal.source_boxes), dtype=np.float64) @@ -1260,7 +1287,7 @@ def process_form_multipoles(self, actx: PyOpenCLArrayContext, return np2m - def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, + def get_ndirect_sources_per_target_box(self, actx: ArrayContext, traversal): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) @@ -1295,7 +1322,7 @@ def get_ndirect_sources_per_target_box(self, actx: PyOpenCLArrayContext, return ndirect_sources_by_itgt_box - def process_direct(self, actx: PyOpenCLArrayContext, + def process_direct(self, actx: ArrayContext, traversal, ndirect_sources_by_itgt_box, p2p_cost, box_target_counts_nonchild=None): if box_target_counts_nonchild is None: @@ -1305,7 +1332,7 @@ def process_direct(self, actx: PyOpenCLArrayContext, return ntargets_by_itgt_box * ndirect_sources_by_itgt_box * p2p_cost - def process_list2(self, actx: PyOpenCLArrayContext, traversal, m2l_cost): + def process_list2(self, actx: ArrayContext, traversal, m2l_cost): tree = traversal.tree ntarget_or_target_parent_boxes = len(traversal.target_or_target_parent_boxes) nm2l = np.zeros(ntarget_or_target_parent_boxes, dtype=np.float64) @@ -1318,7 +1345,7 @@ def process_list2(self, actx: PyOpenCLArrayContext, traversal, m2l_cost): return nm2l - def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, + def process_list3(self, actx: ArrayContext, traversal, m2p_cost, box_target_counts_nonchild=None): tree = traversal.tree nm2p = np.zeros(tree.nboxes, dtype=np.float64) @@ -1336,7 +1363,7 @@ def process_list3(self, actx: PyOpenCLArrayContext, traversal, m2p_cost, return nm2p - def process_list4(self, actx: PyOpenCLArrayContext, traversal, p2l_cost): + def process_list4(self, actx: ArrayContext, traversal, p2l_cost): tree = traversal.tree target_or_target_parent_boxes = traversal.target_or_target_parent_boxes nm2p = np.zeros(len(target_or_target_parent_boxes), dtype=np.float64) @@ -1350,7 +1377,7 @@ def process_list4(self, actx: PyOpenCLArrayContext, traversal, p2l_cost): return nm2p - def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, + def process_eval_locals(self, actx: ArrayContext, traversal, l2p_cost, box_target_counts_nonchild=None): tree = traversal.tree ntarget_boxes = len(traversal.target_boxes) @@ -1368,7 +1395,7 @@ def process_eval_locals(self, actx: PyOpenCLArrayContext, traversal, l2p_cost, return neval_locals - def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, + def process_coarsen_multipoles(self, actx: ArrayContext, traversal, m2m_cost): tree = traversal.tree result = 0.0 @@ -1395,7 +1422,7 @@ def process_coarsen_multipoles(self, actx: PyOpenCLArrayContext, return result - def process_refine_locals(self, actx: PyOpenCLArrayContext, traversal, l2l_cost): + def process_refine_locals(self, actx: ArrayContext, traversal, l2l_cost): tree = traversal.tree result = 0.0 @@ -1407,7 +1434,7 @@ def process_refine_locals(self, actx: PyOpenCLArrayContext, traversal, l2l_cost) return result - def zero_cost_per_box(self, actx: PyOpenCLArrayContext, nboxes): + def zero_cost_per_box(self, actx: ArrayContext, nboxes): return np.zeros(nboxes, dtype=np.float64) def aggregate_over_boxes(self, actx, per_box_result): @@ -1417,7 +1444,7 @@ def aggregate_over_boxes(self, actx, per_box_result): return np.sum(per_box_result) def fmm_cost_factors_for_kernels_from_model( - self, actx: PyOpenCLArrayContext, nlevels, xlat_cost, context): + self, actx: ArrayContext, nlevels, xlat_cost, context): return AbstractFMMCostModel.fmm_cost_factors_for_kernels_from_model( self, None, nlevels, xlat_cost, context ) diff --git a/boxtree/distributed/__init__.py b/boxtree/distributed/__init__.py index aea1f79b..4aec3235 100644 --- a/boxtree/distributed/__init__.py +++ b/boxtree/distributed/__init__.py @@ -107,16 +107,14 @@ import enum import warnings -from typing import TYPE_CHECKING import numpy as np from mpi4py import MPI -from boxtree.cost import FMMCostModel +from arraycontext import ArrayContext, PyOpenCLArrayContext +from boxtree.cost import FMMCostModel -if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext __all__ = ["DistributedFMMRunner"] @@ -156,7 +154,7 @@ def dtype_to_mpi(dtype): # {{{ DistributedFMMRunner def make_distributed_wrangler( - actx: PyOpenCLArrayContext, global_tree, traversal_builder, wrangler_factory, + actx: ArrayContext, global_tree, traversal_builder, wrangler_factory, calibration_params, comm): """Helper function for constructing the distributed wrangler on each rank. @@ -168,6 +166,7 @@ def make_distributed_wrangler( where the wrangler is constructed according to *wrangler_factory* and the indices are passed to :func:`boxtree.fmm.drive_fmm`. """ + assert isinstance(actx, PyOpenCLArrayContext) mpi_rank = comm.Get_rank() # `tree_in_device_memory` is True if the global tree is in the device memory @@ -273,7 +272,7 @@ class DistributedFMMRunner: .. automethod:: __init__ .. automethod:: drive_dfmm """ - def __init__(self, array_context: PyOpenCLArrayContext, global_tree, + def __init__(self, array_context: ArrayContext, global_tree, traversal_builder, wrangler_factory, calibration_params=None, comm=MPI.COMM_WORLD): @@ -299,9 +298,11 @@ def __init__(self, array_context: PyOpenCLArrayContext, global_tree, array_context, global_tree, traversal_builder, wrangler_factory, calibration_params, comm) - def drive_dfmm(self, actx: PyOpenCLArrayContext, source_weights): + def drive_dfmm(self, actx: ArrayContext, source_weights): """Calculate potentials at target points.""" from boxtree.fmm import drive_fmm + + assert isinstance(actx, PyOpenCLArrayContext) return drive_fmm( actx, self.wrangler, source_weights, diff --git a/boxtree/distributed/calculation.py b/boxtree/distributed/calculation.py index 8578abd3..0bc2f9aa 100644 --- a/boxtree/distributed/calculation.py +++ b/boxtree/distributed/calculation.py @@ -40,7 +40,8 @@ if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext + from arraycontext import ArrayContext + from boxtree.traversal import FMMTraversalInfo @@ -79,7 +80,7 @@ def is_mpi_root(self): return self.mpi_rank == 0 def distribute_source_weights(self, - actx: PyOpenCLArrayContext, src_weight_vecs, src_idx_all_ranks): + actx: ArrayContext, src_weight_vecs, src_idx_all_ranks): if self.is_mpi_root: distribute_weight_req = [] local_src_weight_vecs = np.empty((self.mpi_size,), dtype=object) @@ -103,7 +104,7 @@ def distribute_source_weights(self, return local_src_weight_vecs def gather_potential_results(self, - actx: PyOpenCLArrayContext, potentials, tgt_idx_all_ranks): + actx: ArrayContext, potentials, tgt_idx_all_ranks): from boxtree.distributed import dtype_to_mpi potentials_mpi_type = dtype_to_mpi(potentials.dtype) gathered_potentials = None @@ -233,7 +234,7 @@ def get_kernel(): return get_kernel() def find_boxes_used_by_subrange( - self, actx: PyOpenCLArrayContext, + self, actx: ArrayContext, subrange, box_to_user_rank_starts, box_to_user_rank_lists, contributing_boxes_list): """Test whether the multipole expansions of the contributing boxes are used @@ -265,7 +266,7 @@ def find_boxes_used_by_subrange( return box_in_subrange def communicate_mpoles(self, - actx: PyOpenCLArrayContext, mpole_exps, return_stats=False): + actx: ArrayContext, mpole_exps, return_stats=False): """Based on Algorithm 3: Reduce and Scatter in Lashuk et al. [1]_. The main idea is to mimic an allreduce as done on a hypercube network, but to @@ -442,7 +443,7 @@ def reorder_potentials(self, potentials): else: return None - def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): + def finalize_potentials(self, actx: ArrayContext, potentials): if self.is_mpi_root: return FMMLibExpansionWrangler.finalize_potentials(self, actx, potentials) else: diff --git a/boxtree/distributed/local_tree.py b/boxtree/distributed/local_tree.py index 41ddb626..dcea4382 100644 --- a/boxtree/distributed/local_tree.py +++ b/boxtree/distributed/local_tree.py @@ -27,23 +27,19 @@ import logging import time from dataclasses import dataclass -from typing import TYPE_CHECKING import numpy as np from mako.template import Template -from arraycontext import Array, ArrayOrContainer +from arraycontext import Array, ArrayContext, ArrayOrContainer, PyOpenCLArrayContext from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype from pytools import memoize_method, obj_array from boxtree import Tree -from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.array_context import dataclass_array_container -if TYPE_CHECKING: - from arraycontext import Array, ArrayOrContainer - logger = logging.getLogger(__name__) @@ -57,8 +53,9 @@ class LocalTreeGeneratorCodeContainer: """Objects of this type serve as a place to keep the code needed for :func:`generate_local_tree`. """ - def __init__(self, array_context: PyOpenCLArrayContext, + def __init__(self, array_context: ArrayContext, dimensions, particle_id_dtype, coord_dtype): + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx = array_context self.dimensions = dimensions self.particle_id_dtype = particle_id_dtype @@ -198,7 +195,7 @@ class LocalParticlesAndLists: def construct_local_particles_and_lists( - actx: PyOpenCLArrayContext, + actx: ArrayContext, code, dimensions, num_boxes, num_global_particles, particle_id_dtype, coord_dtype, particles_have_extent, box_mask, @@ -208,6 +205,8 @@ def construct_local_particles_and_lists( """This helper function generates particles (either sources or targets) of the local tree, and reconstructs list of lists indexing accordingly. """ + assert isinstance(actx, PyOpenCLArrayContext) + # {{{ calculate the particle mask particle_mask = actx.np.zeros(num_global_particles, dtype=particle_id_dtype) @@ -313,7 +312,7 @@ class LocalTree(Tree): def generate_local_tree( - actx: PyOpenCLArrayContext, + actx: ArrayContext, global_traversal, responsible_boxes_list, comm): """Generate the local tree for the current rank. @@ -331,6 +330,8 @@ def generate_local_tree( global tree. ``src_idx`` and ``tgt_idx`` are needed for distributing source weights from root rank and assembling calculated potentials on the root rank. """ + assert isinstance(actx, PyOpenCLArrayContext) + global_tree = actx.thaw(global_traversal.tree) code = LocalTreeGeneratorCodeContainer( actx, global_tree.dimensions, diff --git a/boxtree/distributed/partition.py b/boxtree/distributed/partition.py index df8c331b..0f491f97 100644 --- a/boxtree/distributed/partition.py +++ b/boxtree/distributed/partition.py @@ -25,23 +25,16 @@ """ from dataclasses import dataclass -from typing import TYPE_CHECKING import numpy as np from mako.template import Template -from arraycontext import Array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pyopencl.elementwise import ElementwiseKernel from pyopencl.tools import dtype_to_ctype from pytools import memoize_method -if TYPE_CHECKING: - from arraycontext import Array - - from boxtree.array_context import PyOpenCLArrayContext - - def get_box_ids_dfs_order(tree): """Helper function for getting box ids of a tree in depth-first order. @@ -129,7 +122,8 @@ def partition_work(cost_per_box, traversal, comm): class GetBoxMasksCodeContainer: - def __init__(self, array_context: PyOpenCLArrayContext, box_id_dtype): + def __init__(self, array_context: ArrayContext, box_id_dtype) -> None: + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx = array_context self.box_id_dtype = box_id_dtype diff --git a/boxtree/fmm.py b/boxtree/fmm.py index aeea9078..dcad1f8b 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -40,7 +40,8 @@ if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext + from arraycontext import ArrayContext + from boxtree.traversal import FMMTraversalInfo from boxtree.tree import Tree @@ -166,7 +167,7 @@ def local_expansions_view(self, local_exps, level): @abstractmethod def form_multipoles(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_source_box_nrs, source_boxes, src_weight_vecs): """ @@ -177,7 +178,7 @@ def form_multipoles(self, @abstractmethod def coarsen_multipoles(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, mpoles): """For each box in *source_parent_boxes*, gather (and translate) the @@ -189,7 +190,7 @@ def coarsen_multipoles(self, @abstractmethod def eval_direct(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, target_boxes, neighbor_sources_starts, neighbor_sources_lists, src_weight_vecs): """For each box in *target_boxes*, evaluate the influence of the @@ -201,7 +202,7 @@ def eval_direct(self, @abstractmethod def multipole_to_local(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, mpole_exps): @@ -215,7 +216,7 @@ def multipole_to_local(self, @abstractmethod def eval_multipoles(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, target_boxes_by_source_level, from_sep_smaller_by_level, mpole_exps): """For a level *i*, each box in *target_boxes_by_source_level[i]*, evaluate the multipole expansion in *mpole_exps* in the nearby boxes given in @@ -228,7 +229,7 @@ def eval_multipoles(self, @abstractmethod def form_locals(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, src_weight_vecs): """For each box in *target_or_target_parent_boxes*, form local @@ -242,7 +243,7 @@ def form_locals(self, @abstractmethod def refine_locals(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, local_exps): """For each box in *child_boxes*, @@ -254,7 +255,7 @@ def refine_locals(self, @abstractmethod def eval_locals(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, level_start_target_box_nrs, target_boxes, local_exps): """For each box in *target_boxes*, evaluate the local expansion in *local_exps* and return a new potential array. @@ -265,7 +266,7 @@ def eval_locals(self, # }}} @abstractmethod - def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): + def finalize_potentials(self, actx: ArrayContext, potentials): """ Postprocess the reordered potentials. This is where global scaling factors could be applied. This is distinct from :meth:`reorder_potentials` @@ -280,7 +281,7 @@ def finalize_potentials(self, actx: PyOpenCLArrayContext, potentials): """ def distribute_source_weights(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, src_weight_vecs, src_idx_all_ranks): """Used by the distributed implementation for transferring needed source weights from root rank to each worker rank in the communicator. @@ -302,7 +303,7 @@ def distribute_source_weights(self, return src_weight_vecs def gather_potential_results(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, potentials, tgt_idx_all_ranks): """Used by the distributed implementation for gathering calculated potentials from all worker ranks in the communicator to the root rank. @@ -321,7 +322,7 @@ def gather_potential_results(self, return potentials def communicate_mpoles(self, # noqa: B027 - actx: PyOpenCLArrayContext, + actx: ArrayContext, mpole_exps, return_stats=False): """Used by the distributed implementation for forming the complete multipole expansions from the partial multipole expansions. @@ -341,7 +342,7 @@ def communicate_mpoles(self, # noqa: B027 # }}} -def drive_fmm(actx: PyOpenCLArrayContext, +def drive_fmm(actx: ArrayContext, wrangler: ExpansionWranglerInterface, src_weight_vecs, *, global_src_idx_all_ranks=None, diff --git a/boxtree/pyfmmlib_integration.py b/boxtree/pyfmmlib_integration.py index 6d845a51..5980bb97 100644 --- a/boxtree/pyfmmlib_integration.py +++ b/boxtree/pyfmmlib_integration.py @@ -50,7 +50,7 @@ if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext + from arraycontext import ArrayContext logger = logging.getLogger(__name__) @@ -85,7 +85,7 @@ class FMMLibRotationData(FMMLibRotationDataInterface): .. automethod:: __init__ """ - def __init__(self, array_context: PyOpenCLArrayContext, trav): + def __init__(self, array_context: ArrayContext, trav): self._setup_actx = array_context self.trav = trav self.tree = trav.tree @@ -675,7 +675,7 @@ def reorder_potentials(self, potentials): return potentials[self.tree.sorted_target_ids] @log_process(logger) - def form_multipoles(self, actx: PyOpenCLArrayContext, + def form_multipoles(self, actx: ArrayContext, level_start_source_box_nrs, source_boxes, src_weight_vecs): @@ -719,7 +719,7 @@ def form_multipoles(self, actx: PyOpenCLArrayContext, return mpoles @log_process(logger) - def coarsen_multipoles(self, actx: PyOpenCLArrayContext, + def coarsen_multipoles(self, actx: ArrayContext, level_start_source_parent_box_nrs, source_parent_boxes, mpoles): @@ -776,7 +776,7 @@ def coarsen_multipoles(self, actx: PyOpenCLArrayContext, return mpoles @log_process(logger) - def eval_direct(self, actx: PyOpenCLArrayContext, + def eval_direct(self, actx: ArrayContext, target_boxes, neighbor_sources_starts, neighbor_sources_lists, @@ -822,7 +822,7 @@ def eval_direct(self, actx: PyOpenCLArrayContext, return output @log_process(logger) - def multipole_to_local(self, actx: PyOpenCLArrayContext, + def multipole_to_local(self, actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, mpole_exps): @@ -936,7 +936,7 @@ def multipole_to_local(self, actx: PyOpenCLArrayContext, return local_exps @log_process(logger) - def eval_multipoles(self, actx: PyOpenCLArrayContext, + def eval_multipoles(self, actx: ArrayContext, target_boxes_by_source_level, sep_smaller_nonsiblings_by_level, mpole_exps): @@ -979,7 +979,7 @@ def eval_multipoles(self, actx: PyOpenCLArrayContext, return output @log_process(logger) - def form_locals(self, actx: PyOpenCLArrayContext, + def form_locals(self, actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, starts, lists, src_weight_vecs): @@ -1059,7 +1059,7 @@ def form_locals(self, actx: PyOpenCLArrayContext, return local_exps @log_process(logger) - def refine_locals(self, actx: PyOpenCLArrayContext, + def refine_locals(self, actx: ArrayContext, level_start_target_or_target_parent_box_nrs, target_or_target_parent_boxes, local_exps): @@ -1107,7 +1107,7 @@ def refine_locals(self, actx: PyOpenCLArrayContext, return local_exps @log_process(logger) - def eval_locals(self, actx: PyOpenCLArrayContext, + def eval_locals(self, actx: ArrayContext, level_start_target_box_nrs, target_boxes, local_exps): @@ -1145,7 +1145,7 @@ def eval_locals(self, actx: PyOpenCLArrayContext, return output @log_process(logger) - def finalize_potentials(self, actx: PyOpenCLArrayContext, potential): + def finalize_potentials(self, actx: ArrayContext, potential): if self.tree_indep.eqn_letter == "l" and self.dim == 2: scale_factor = -1/(2*np.pi) elif self.tree_indep.eqn_letter == "h" and self.dim == 2: diff --git a/boxtree/rotation_classes.py b/boxtree/rotation_classes.py index 9ba6ea58..9ca04ade 100644 --- a/boxtree/rotation_classes.py +++ b/boxtree/rotation_classes.py @@ -36,20 +36,16 @@ import logging from dataclasses import dataclass -from typing import TYPE_CHECKING import numpy as np -from arraycontext import Array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pytools import log_process -from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.array_context import dataclass_array_container from boxtree.translation_classes import TranslationClassesBuilder -if TYPE_CHECKING: - from arraycontext import Array - logger = logging.getLogger(__name__) @@ -97,7 +93,8 @@ class RotationClassesBuilder: .. automethod:: __call__ """ - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext): + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx: PyOpenCLArrayContext = array_context self.tcb = TranslationClassesBuilder(array_context) diff --git a/boxtree/tools.py b/boxtree/tools.py index a0e62f72..ce2c3791 100644 --- a/boxtree/tools.py +++ b/boxtree/tools.py @@ -25,21 +25,18 @@ import sys from functools import partial -from typing import TYPE_CHECKING, Any +from typing import Any import numpy as np from mako.template import Template import pyopencl as cl import pyopencl.array as cl_array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pyopencl.tools import ScalarArg, VectorArg as _VectorArg, dtype_to_c_struct from pytools import Record, memoize_method, obj_array -if TYPE_CHECKING: - from boxtree.array_context import PyOpenCLArrayContext - - # Use offsets in VectorArg by default. VectorArg = partial(_VectorArg, with_offset=True) @@ -53,12 +50,14 @@ def padded_bin(i: int, nbits: int): # NOTE: Order of positional args should match GappyCopyAndMapKernel.__call__() def realloc_array( - actx: PyOpenCLArrayContext, + actx: ArrayContext, new_shape: tuple[int, ...], ary: cl_array.Array, zero_fill: bool | None = None, wait_for: cl.WaitList = None - ) -> tuple[cl_array.Array, cl.Event]: + ) -> tuple[Array, cl.Event]: + assert isinstance(actx, PyOpenCLArrayContext) + if wait_for is None: wait_for = [] @@ -433,10 +432,11 @@ def get_type_moniker(dtype: np.dtype[Any]): class GappyCopyAndMapKernel: def __init__(self, array_context: PyOpenCLArrayContext): - self._setup_actx: PyOpenCLArrayContext = array_context + self._setup_actx: ArrayContext = array_context @property def context(self): + assert isinstance(self._setup_actx, PyOpenCLArrayContext) return self._setup_actx.queue.context @memoize_method @@ -546,11 +546,12 @@ def __call__(self, actx, new_shape, ary, src_indices=None, class MapValuesKernel: - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext) -> None: self._setup_actx = array_context @property def context(self): + assert isinstance(self._setup_actx, PyOpenCLArrayContext) return self._setup_actx.queue.context @memoize_method @@ -665,11 +666,12 @@ class MaskCompressorKernel: """ .. automethod:: __call__ """ - def __init__(self, array_context: PyOpenCLArrayContext): + def __init__(self, array_context: ArrayContext) -> None: self._setup_actx = array_context @property def context(self): + assert isinstance(self._setup_actx, PyOpenCLArrayContext) return self._setup_actx.context @memoize_method diff --git a/boxtree/translation_classes.py b/boxtree/translation_classes.py index ba90295e..ddbd1543 100644 --- a/boxtree/translation_classes.py +++ b/boxtree/translation_classes.py @@ -37,16 +37,15 @@ import logging from dataclasses import dataclass from functools import partial -from typing import TYPE_CHECKING import numpy as np from mako.template import Template -from arraycontext import Array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate from pytools import memoize_method -from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.array_context import dataclass_array_container from boxtree.tools import ( InlineBinarySearch, coord_vec_subscript_code, @@ -55,9 +54,6 @@ from boxtree.traversal import TRAVERSAL_PREAMBLE_MAKO_DEFS, FMMTraversalInfo -if TYPE_CHECKING: - from arraycontext import Array - logger = logging.getLogger(__name__) from pytools import log_process @@ -250,7 +246,8 @@ class TranslationClassesBuilder: .. automethod:: __call__ """ - def __init__(self, array_context: PyOpenCLArrayContext) -> None: + def __init__(self, array_context: ArrayContext) -> None: + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx = array_context @property @@ -323,12 +320,13 @@ def translation_class_to_normalized_vector( return result def compute_translation_classes(self, - actx: PyOpenCLArrayContext, trav, tree, wait_for, + actx: ArrayContext, trav, tree, wait_for, is_translation_per_level): """ :returns: a :class:`tuple` containing *evt*, *translation_class_is_used* and *translation_classes_lists*. """ + assert isinstance(actx, PyOpenCLArrayContext) # {{{ compute translation classes for list 2 @@ -375,7 +373,7 @@ def compute_translation_classes(self, # }}} @log_process(logger, "build m2l translation classes") - def __call__(self, actx: PyOpenCLArrayContext, + def __call__(self, actx: ArrayContext, trav, tree, wait_for=None, is_translation_per_level=True): """Returns a pair *info*, *evt* where info is a :class:`TranslationClassesInfo`. diff --git a/boxtree/traversal.py b/boxtree/traversal.py index b84860b0..86b81a98 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -59,11 +59,11 @@ import numpy as np from mako.template import Template -from arraycontext import Array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pyopencl.elementwise import ElementwiseKernel, ElementwiseTemplate from pytools import ProcessLogger, log_process, memoize_method, obj_array -from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.array_context import dataclass_array_container from boxtree.tools import AXIS_NAMES, coord_vec_subscript_code, get_coord_vec_dtype # NOTE: Tree cannot go into the TYPE_CHECKING block because it is needed @@ -73,7 +73,6 @@ if TYPE_CHECKING: import pyopencl as cl - from arraycontext import Array from pyopencl.algorithm import ListOfListsBuilder from boxtree.tree_build import ExtentNorm @@ -1213,7 +1212,7 @@ class _IndexStyle(enum.IntEnum): class _ListMerger: """Utility class for combining box lists optionally changing indexing style.""" - def __init__(self, array_context: PyOpenCLArrayContext, box_id_dtype): + def __init__(self, array_context: ArrayContext, box_id_dtype): self._setup_actx = array_context self.box_id_dtype = box_id_dtype @@ -1702,7 +1701,7 @@ class FMMTraversalBuilder: from_sep_smaller_crit: FromSepSmallerCrit | None def __init__(self, - array_context: PyOpenCLArrayContext, *, + array_context: ArrayContext, *, well_sep_is_n_away: int = 1, from_sep_smaller_crit: FromSepSmallerCrit | None = None): """ @@ -1712,6 +1711,7 @@ def __init__(self, :attr:`boxtree.traversal.FMMTraversalInfo.from_sep_siblings_starts` (List 2). """ + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx = array_context self.well_sep_is_n_away = well_sep_is_n_away self.from_sep_smaller_crit = from_sep_smaller_crit @@ -1937,7 +1937,7 @@ def get_kernel_info(self, *, # {{{ driver def __call__(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, tree: Tree, wait_for: cl.WaitList = None, debug: bool = False, @@ -1958,6 +1958,8 @@ def __call__(self, :class:`FMMTraversalInfo` and *event* is a :class:`pyopencl.Event` for dependency management. """ + assert isinstance(actx, PyOpenCLArrayContext) + from_sep_smaller_min_nsources_cumul = _from_sep_smaller_min_nsources_cumul if from_sep_smaller_min_nsources_cumul is None: diff --git a/boxtree/tree.py b/boxtree/tree.py index 3ed02c62..763d568b 100644 --- a/boxtree/tree.py +++ b/boxtree/tree.py @@ -80,26 +80,21 @@ import logging from dataclasses import dataclass, field from functools import cached_property -from typing import TYPE_CHECKING import numpy as np from typing_extensions import override -from arraycontext import Array +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from cgen import Enum from pytools import memoize_method, obj_array -from boxtree.array_context import PyOpenCLArrayContext, dataclass_array_container +from boxtree.array_context import dataclass_array_container # NOTE: ExtentNorm cannot go into the TYPE_CHECKING block because it is needed # by `dataclass_array_container` (which evals the types) from boxtree.tree_build import ExtentNorm # noqa: TC001 -if TYPE_CHECKING: - from arraycontext import Array - - logger = logging.getLogger(__name__) @@ -758,7 +753,7 @@ class TreeWithLinkedPointSources(Tree): def link_point_sources( - actx: PyOpenCLArrayContext, tree: Tree, + actx: ArrayContext, tree: Tree, point_source_starts: Array, point_sources: Array, *, debug: bool = False): r""" @@ -777,6 +772,7 @@ def link_point_sources( :arg point_sources: an object array of (XYZ) point coordinate arrays. """ + assert isinstance(actx, PyOpenCLArrayContext) # The whole point of this routine is that all point sources within # a box are reordered to be contiguous. diff --git a/boxtree/tree_build.py b/boxtree/tree_build.py index dcea03cb..92078a3c 100644 --- a/boxtree/tree_build.py +++ b/boxtree/tree_build.py @@ -58,6 +58,7 @@ import numpy as np +from arraycontext import Array, ArrayContext, PyOpenCLArrayContext from pytools import DebugProcessLogger, ProcessLogger, memoize_method, obj_array @@ -65,11 +66,9 @@ from numpy.typing import NDArray import pyopencl as cl - from arraycontext import Array from pyopencl.cl_array import Allocator from pyopencl.typing import WaitList - from boxtree.array_context import PyOpenCLArrayContext logger = logging.getLogger(__name__) @@ -98,7 +97,8 @@ class TreeBuilder: box_level_dtype = np.dtype(np.uint8) ROOT_EXTENT_STRETCH_FACTOR = 1e-4 - def __init__(self, array_context: PyOpenCLArrayContext) -> None: + def __init__(self, array_context: ArrayContext) -> None: + assert isinstance(array_context, PyOpenCLArrayContext) self._setup_actx: PyOpenCLArrayContext = array_context from boxtree.bounding_box import BoundingBoxFinder @@ -131,7 +131,7 @@ def get_kernel_info(self, dimensions, coord_dtype, # {{{ run control def __call__(self, - actx: PyOpenCLArrayContext, + actx: ArrayContext, particles: obj_array.ObjectArray1D[Array], kind: TreeKind = "adaptive", max_particles_in_box: int | None = None, @@ -200,6 +200,7 @@ def __call__(self, :class:`Tree`, and *event* is a :class:`pyopencl.Event` for dependency management. """ + assert isinstance(actx, PyOpenCLArrayContext) if allocator is not None: from warnings import warn From e32e64d46ccb5da52ffac8156e3e92f3df9ddc50 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Wed, 10 Dec 2025 15:16:18 -0600 Subject: [PATCH 30/34] Add some attribute types to DistributedExpansionWranglerMixin --- boxtree/distributed/calculation.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/boxtree/distributed/calculation.py b/boxtree/distributed/calculation.py index 0bc2f9aa..167a4318 100644 --- a/boxtree/distributed/calculation.py +++ b/boxtree/distributed/calculation.py @@ -64,6 +64,9 @@ class DistributedExpansionWranglerMixin: .. automethod:: gather_potential_results .. automethod:: communicate_mpoles """ + comm: MPI.Intracomm # pyright: ignore[reportUninitializedInstanceVariable] + traversal: FMMTraversalInfo # pyright: ignore[reportUninitializedInstanceVariable] + global_traversal: FMMTraversalInfo # pyright: ignore[reportUninitializedInstanceVariable] @property @memoize_method From dc5a71154d8fb69ea7796de51c531d50d3833e5a Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Tue, 2 Aug 2022 10:23:55 +0300 Subject: [PATCH 31/34] point ci to modified downstreams --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 50449abc..15e6243f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -109,8 +109,12 @@ jobs: curl -L -O https://tiker.net/ci-support-v0 . ci-support-v0 - if [[ "$DOWNSTREAM_PROJECT" == "pytential" && "$GITHUB_HEAD_REF" == "rename-nterms" ]]; then - DOWNSTREAM_PROJECT=https://github.com/gaohao95/pytential.git@rename-nterms + if [[ "$GITHUB_HEAD_REF" == "towards-array-context" ]]; then + if [[ "${DOWNSTREAM_PROJECT}" == "sumpy" ]]; then + DOWNSTREAM_PROJECT=https://github.com/inducer/${DOWNSTREAM_PROJECT}.git@towards-array-context-merge + else + DOWNSTREAM_PROJECT=https://github.com/alexfikl/${DOWNSTREAM_PROJECT}.git@towards-array-context + fi fi test_downstream "$DOWNSTREAM_PROJECT" From 11bc5de1cb41e6dad2fee1765cd0201e44007588 Mon Sep 17 00:00:00 2001 From: Alexandru Fikl Date: Mon, 15 Dec 2025 19:43:41 +0200 Subject: [PATCH 32/34] Disable TaggableCLArray warning --- boxtree/array_context.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/boxtree/array_context.py b/boxtree/array_context.py index 707e5664..bc5037e8 100644 --- a/boxtree/array_context.py +++ b/boxtree/array_context.py @@ -62,11 +62,12 @@ def _wrapper(ary): if isinstance(ary, allowed_types): return func(ary) elif not strict and isinstance(ary, actx.array_types): - from warnings import warn - warn(f"Invoking {type(actx).__name__}.{func.__name__[1:]} with " - f"{type(ary).__name__} will be unsupported in 2025. Use " - "'to_tagged_cl_array' to convert instances to TaggableCLArray.", - DeprecationWarning, stacklevel=2) + # from warnings import warn + # warn(f"Invoking {type(actx).__name__}.{func.__name__[1:]} with " + # f"{type(ary).__name__} will be unsupported in 2025. Use " + # "'to_tagged_cl_array' to convert instances to TaggableCLArray.", + # DeprecationWarning, stacklevel=2) + return func(tga.to_tagged_cl_array(ary)) elif np.isscalar(ary): if default_scalar is None: From a0672b2f756f94fb4421b62e67b98e12ca0d53c9 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 1 Jan 2026 15:11:12 +0100 Subject: [PATCH 33/34] Drop pylint --- .github/workflows/ci.yml | 12 ------------ .gitlab-ci.yml | 13 ------------- .pylintrc-local.yml | 5 ----- .test-conda-env-py3.yml | 2 +- pyproject.toml | 1 - 5 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 .pylintrc-local.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15e6243f..ac4509fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,18 +45,6 @@ jobs: - uses: actions/checkout@v6 - uses: crate-ci/typos@master - pylint: - name: Pylint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - name: "Main Script" - run: | - curl -L -O https://tiker.net/ci-support-v0 - . ci-support-v0 - build_py_project_in_conda_env - run_pylint "$(get_proj_name)" examples/*.py test/*.py - docs: name: Documentation runs-on: ubuntu-latest diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 189f87f4..046e66c6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -67,19 +67,6 @@ Python 3 POCL Examples: except: - tags -Pylint: - script: | - export EXTRA_INSTALL="pybind11 numpy mako matplotlib mpi4py" - - curl -L -O https://tiker.net/ci-support-v0 - . ci-support-v0 - build_py_project_in_conda_env - run_pylint "$(get_proj_name)" examples/*.py test/*.py - tags: - - python3 - except: - - tags - Documentation: script: | EXTRA_INSTALL="pybind11 numpy mako mpi4py" diff --git a/.pylintrc-local.yml b/.pylintrc-local.yml deleted file mode 100644 index e6cde7f0..00000000 --- a/.pylintrc-local.yml +++ /dev/null @@ -1,5 +0,0 @@ -- arg: py-version - val: '3.10' - -- arg: extension-pkg-whitelist - val: pyfmmlib diff --git a/.test-conda-env-py3.yml b/.test-conda-env-py3.yml index df5237aa..6d6e9e96 100644 --- a/.test-conda-env-py3.yml +++ b/.test-conda-env-py3.yml @@ -15,7 +15,7 @@ dependencies: - pyfmmlib - mpi4py -# Only needed to make pylint succeed +# needed to make type checking succeed - matplotlib-base # This is intended to prevent conda from selecting 'external' (i.e. empty) builds diff --git a/pyproject.toml b/pyproject.toml index 2d02175e..f1371e64 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,6 @@ meshmode = [ "modepy>=2021.1", ] test = [ - "pylint", "pytest", "ruff", ] From b1bc6ca6fdc28840cb881918ae0fa6ab7f18ab22 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 1 Jan 2026 15:04:57 +0100 Subject: [PATCH 34/34] Update baseline --- .basedpyright/baseline.json | 26008 ++++++++++++++++++---------------- 1 file changed, 13807 insertions(+), 12201 deletions(-) diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index f0a53a39..9ea76136 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -1,6 +1,54 @@ { "files": { "./boxtree/__init__.py": [ + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 34, + "lineCount": 1 + } + }, { "code": "reportAny", "range": { @@ -467,43 +515,59 @@ "lineCount": 1 } }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 29, + "lineCount": 1 + } + }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 15, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 29, + "startColumn": 15, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 47, - "endColumn": 59, + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, @@ -692,7 +756,7 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, "endColumn": 24, @@ -703,95 +767,79 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 12, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 31, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 43, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, @@ -894,24 +942,24 @@ { "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 24, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 59, - "endColumn": 63, + "startColumn": 58, + "endColumn": 62, "lineCount": 1 } }, @@ -1019,14 +1067,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 45, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -1038,16 +1078,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 32, + "endColumn": 42, "lineCount": 1 } }, @@ -1171,14 +1203,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -1187,14 +1211,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 37, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -1244,11 +1260,11 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 15, - "endColumn": 73, - "lineCount": 4 + "startColumn": 8, + "endColumn": 14, + "lineCount": 1 } }, { @@ -1268,18 +1284,10 @@ } }, { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 23, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, @@ -1287,7 +1295,7 @@ "code": "reportUnannotatedClassAttribute", "range": { "startColumn": 13, - "endColumn": 20, + "endColumn": 24, "lineCount": 1 } }, @@ -1299,14 +1307,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 47, - "endColumn": 54, - "lineCount": 1 - } - }, { "code": "reportUnannotatedClassAttribute", "range": { @@ -1315,14 +1315,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 51, - "endColumn": 58, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -1355,91 +1347,59 @@ "lineCount": 3 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 23, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 30, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 43, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, @@ -1510,40 +1470,40 @@ { "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 22, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 41, + "startColumn": 28, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 42, + "endColumn": 52, "lineCount": 1 } }, @@ -1563,6 +1523,22 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 25, + "endColumn": 59, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 25, + "endColumn": 59, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -1604,26 +1580,34 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 20, + "endColumn": 53, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 20, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 63, - "endColumn": 80, + "startColumn": 56, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 63, - "endColumn": 80, + "startColumn": 56, + "endColumn": 73, "lineCount": 1 } }, @@ -1635,6 +1619,14 @@ "lineCount": 1 } }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 50, + "lineCount": 1 + } + }, { "code": "reportUnknownVariableType", "range": { @@ -1644,10 +1636,18 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { "startColumn": 24, - "endColumn": 29, + "endColumn": 57, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 24, + "endColumn": 57, "lineCount": 1 } }, @@ -1676,26 +1676,26 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 15, - "endColumn": 69, - "lineCount": 4 + "startColumn": 8, + "endColumn": 14, + "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, @@ -1703,23 +1703,47 @@ "code": "reportUnannotatedClassAttribute", "range": { "startColumn": 13, - "endColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 29, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 59, + "startColumn": 15, + "endColumn": 37, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, @@ -1827,6 +1851,14 @@ "lineCount": 7 } }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 28, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -1878,80 +1910,64 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 43, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, @@ -2038,24 +2054,24 @@ { "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 24, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 59, - "endColumn": 63, + "startColumn": 58, + "endColumn": 62, "lineCount": 1 } }, @@ -2164,42 +2180,42 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 45, + "startColumn": 50, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 50, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 58, - "endColumn": 69, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 58, - "endColumn": 69, + "startColumn": 18, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 44, + "endColumn": 50, "lineCount": 1 } }, @@ -2307,6 +2323,22 @@ "lineCount": 1 } }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 38, + "endColumn": 44, + "lineCount": 1 + } + }, { "code": "reportUnknownMemberType", "range": { @@ -2324,18 +2356,34 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 12, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 19, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 45, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 45, "lineCount": 1 } }, @@ -2343,7 +2391,47 @@ "code": "reportUnannotatedClassAttribute", "range": { "startColumn": 13, - "endColumn": 20, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 15, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 37, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, @@ -2460,7 +2548,7 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, "endColumn": 24, @@ -2471,63 +2559,47 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 12, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 31, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 12, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 43, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 44, + "startColumn": 55, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 44, + "startColumn": 55, + "endColumn": 63, "lineCount": 1 } }, @@ -2611,27 +2683,19 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 34, + "startColumn": 28, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 34, + "startColumn": 28, + "endColumn": 39, "lineCount": 1 } }, @@ -2748,11 +2812,11 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 15, - "endColumn": 60, - "lineCount": 4 + "startColumn": 8, + "endColumn": 14, + "lineCount": 1 } }, { @@ -2770,778 +2834,800 @@ "endColumn": 48, "lineCount": 1 } + }, + { + "code": "reportAny", + "range": { + "startColumn": 27, + "endColumn": 33, + "lineCount": 1 + } } ], "./boxtree/array_context.py": [ { - "code": "reportUnusedFunction", + "code": "reportUnusedImport", "range": { "startColumn": 4, - "endColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 4, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 31, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 38, - "endColumn": 44, + "startColumn": 31, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 37, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 37, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportAssignmentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 17, - "endColumn": 37, + "startColumn": 43, + "endColumn": 48, "lineCount": 1 } - } - ], - "./boxtree/bounding_box.py": [ + }, { - "code": "reportUnusedImport", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 21, + "startColumn": 43, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 34, + "startColumn": 50, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 34, + "startColumn": 50, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 31, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 31, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 48, - "endColumn": 59, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 48, - "endColumn": 59, + "startColumn": 17, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 29, + "startColumn": 17, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 19, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 19, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 27, + "startColumn": 44, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 47, + "startColumn": 19, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, + "startColumn": 47, "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 25, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { "startColumn": 23, - "endColumn": 30, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 24, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 41, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 34, + "startColumn": 56, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 16, - "endColumn": 26, + "startColumn": 11, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 24, - "endColumn": 35, + "startColumn": 11, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 35, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportImplicitOverride", "range": { - "startColumn": 25, - "endColumn": 35, + "startColumn": 8, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 35, + "startColumn": 38, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportImplicitOverride", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 33, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 39, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 39, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 39, + "startColumn": 46, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 51, + "startColumn": 12, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 53, - "endColumn": 64, + "startColumn": 33, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { "startColumn": 15, - "endColumn": 17, - "lineCount": 15 + "endColumn": 26, + "lineCount": 5 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 24, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportDeprecated", "range": { "startColumn": 23, - "endColumn": 32, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportDeprecated", "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 22, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 31, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 41, - "endColumn": 49, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 41, - "endColumn": 49, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 25, - "endColumn": 34, + "startColumn": 1, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnusedFunction", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 4, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnusedFunction", "range": { - "startColumn": 36, - "endColumn": 47, + "startColumn": 4, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 70, + "startColumn": 49, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 52, + "startColumn": 49, "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 10, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 10, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 14, - "endColumn": 29, + "startColumn": 10, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 53, + "startColumn": 10, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 15, - "endColumn": 53, - "lineCount": 2 + "endColumn": 23, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnusedFunction", "range": { - "startColumn": 27, - "endColumn": 36, + "startColumn": 4, + "endColumn": 8, "lineCount": 1 } - } - ], - "./boxtree/constant_one.py": [ + }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 4, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 4, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAssignmentType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 17, + "endColumn": 37, "lineCount": 1 } - }, + } + ], + "./boxtree/bounding_box.py": [ { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 28, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 25, + "startColumn": 28, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 48, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 48, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 54, + "startColumn": 19, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 21, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 36, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 54, + "startColumn": 44, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 8, - "endColumn": 33, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportAny", "range": { "startColumn": 8, - "endColumn": 33, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 25, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 25, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 37, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 37, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 50, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 50, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 53, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 53, - "lineCount": 1 + "startColumn": 15, + "endColumn": 17, + "lineCount": 15 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 22, - "endColumn": 25, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 22, - "endColumn": 25, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 46, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 50, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 40, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 40, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 56, + "startColumn": 47, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 56, + "startColumn": 47, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 58, - "endColumn": 70, + "startColumn": 25, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 58, - "endColumn": 70, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 36, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 36, + "endColumn": 70, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 52, + "endColumn": 57, "lineCount": 1 } }, @@ -3554,394 +3640,420 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 43, + "startColumn": 14, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 48, + "startColumn": 42, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 35, - "endColumn": 54, - "lineCount": 1 + "startColumn": 15, + "endColumn": 49, + "lineCount": 4 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 43, + "startColumn": 18, + "endColumn": 28, + "lineCount": 1 + } + } + ], + "./boxtree/constant_one.py": [ + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 41, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, + "startColumn": 17, "endColumn": 26, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 17, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 66, + "startColumn": 16, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 66, + "startColumn": 24, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 33, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 17, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", "range": { "startColumn": 16, - "endColumn": 20, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 24, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 46, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 41, + "startColumn": 33, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 24, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 24, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 24, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 4, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 63, + "startColumn": 24, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 63, + "startColumn": 24, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 24, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportImplicitOverride", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 15, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 30, + "startColumn": 28, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 56, + "startColumn": 28, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 47, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportImplicitOverride", "range": { - "startColumn": 48, - "endColumn": 56, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 22, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 24, + "startColumn": 15, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 51, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 26, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportImplicitOverride", "range": { - "startColumn": 25, - "endColumn": 53, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 23, + "startColumn": 40, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 57, + "startColumn": 40, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 52, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 38, + "startColumn": 52, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 29, "lineCount": 1 } }, @@ -3949,151 +4061,151 @@ "code": "reportImplicitOverride", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 48, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 48, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportImplicitOverride", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 22, - "endColumn": 30, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 44, - "endColumn": 73, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 22, + "startColumn": 12, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 24, + "startColumn": 21, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 23, + "startColumn": 44, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 45, + "startColumn": 35, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 23, + "endColumn": 26, "lineCount": 1 } }, @@ -4101,7 +4213,7 @@ "code": "reportImplicitOverride", "range": { "startColumn": 8, - "endColumn": 23, + "endColumn": 26, "lineCount": 1 } }, @@ -4109,7 +4221,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 40, + "endColumn": 45, "lineCount": 1 } }, @@ -4117,23 +4229,23 @@ "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 40, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 42, - "endColumn": 79, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 79, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, @@ -4141,7 +4253,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 22, + "endColumn": 18, "lineCount": 1 } }, @@ -4149,79 +4261,63 @@ "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 22, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 36, - "endColumn": 73, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 26, - "endColumn": 34, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 65, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 51, + "startColumn": 34, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 34, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 26, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 39, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, @@ -4229,39 +4325,23 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 20, - "endColumn": 28, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 20, - "endColumn": 27, + "startColumn": 29, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 38, + "startColumn": 15, + "endColumn": 21, "lineCount": 1 } }, @@ -4285,7 +4365,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 55, + "endColumn": 24, "lineCount": 1 } }, @@ -4293,95 +4373,95 @@ "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 55, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 26, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 26, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 43, - "endColumn": 49, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 49, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 36, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 36, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 58, - "endColumn": 73, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 58, - "endColumn": 73, + "startColumn": 22, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 44, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 30, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 73, + "startColumn": 48, + "endColumn": 56, "lineCount": 1 } }, @@ -4458,130 +4538,146 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportImplicitOverride", "range": { - "startColumn": 27, - "endColumn": 45, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 12, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 71, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 71, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 22, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 44, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 20, + "startColumn": 19, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 50, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 27, - "endColumn": 45, + "startColumn": 16, + "endColumn": 23, "lineCount": 1 } }, @@ -4589,7 +4685,7 @@ "code": "reportIncompatibleMethodOverride", "range": { "startColumn": 8, - "endColumn": 19, + "endColumn": 23, "lineCount": 1 } }, @@ -4597,384 +4693,422 @@ "code": "reportImplicitOverride", "range": { "startColumn": 8, - "endColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 52, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 26, - "endColumn": 52, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 54, - "endColumn": 66, + "startColumn": 12, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 54, - "endColumn": 66, + "startColumn": 12, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 68, - "endColumn": 78, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 68, - "endColumn": 78, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 19, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 47, + "startColumn": 36, + "endColumn": 73, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 26, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 52, + "startColumn": 30, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 38, + "startColumn": 29, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 52, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 16, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 23, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 29, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 20, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 20, + "endColumn": 27, "lineCount": 1 } - } - ], - "./boxtree/cost.py": [ + }, + { + "code": "reportIncompatibleMethodOverride", + "range": { + "startColumn": 8, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportImplicitOverride", + "range": { + "startColumn": 8, + "endColumn": 19, + "lineCount": 1 + } + }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 43, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 43, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 65, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 65, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 33, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportMissingParameterType", "range": { - "startColumn": 13, - "endColumn": 33, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 20, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 62, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 22, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 44, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 62, + "startColumn": 19, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 29, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 52, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 62, + "startColumn": 16, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 25, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, + "startColumn": 16, "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 34, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 62, + "startColumn": 8, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportImplicitOverride", "range": { "startColumn": 8, - "endColumn": 11, + "endColumn": 21, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 38, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 38, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, + "startColumn": 43, "endColumn": 53, - "lineCount": 3 + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 43, + "endColumn": 53, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 43, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, + "startColumn": 35, "endColumn": 52, "lineCount": 1 } @@ -4982,48 +5116,48 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, + "startColumn": 35, "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 38, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 38, + "startColumn": 47, + "endColumn": 71, "lineCount": 1 } }, @@ -5031,511 +5165,537 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 15, - "endColumn": 53, - "lineCount": 3 + "endColumn": 25, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 30, - "endColumn": 43, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportImplicitOverride", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 38, + "startColumn": 26, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 38, + "startColumn": 26, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 53, - "lineCount": 3 + "startColumn": 12, + "endColumn": 16, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 43, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, + "startColumn": 48, "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportImplicitOverride", "range": { "startColumn": 8, - "endColumn": 16, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 37, + "startColumn": 54, + "endColumn": 64, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 37, + "startColumn": 54, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 39, - "endColumn": 53, + "startColumn": 15, + "endColumn": 25, "lineCount": 1 } - }, + } + ], + "./boxtree/cost.py": [ { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 53, + "startColumn": 23, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 48, - "lineCount": 7 + "startColumn": 23, + "endColumn": 43, + "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 46, + "startColumn": 45, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 45, + "startColumn": 45, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 42, - "endColumn": 45, + "startColumn": 13, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 47, - "endColumn": 54, + "startColumn": 13, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 54, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 58, - "endColumn": 65, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 15, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 24, + "startColumn": 15, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 44, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 53, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 42, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 39, - "endColumn": 42, + "startColumn": 15, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 44, - "endColumn": 51, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 44, - "endColumn": 51, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 58, - "endColumn": 65, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 15, + "startColumn": 15, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 44, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 42, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 42, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 43, + "startColumn": 15, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 43, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 56, - "endColumn": 64, + "startColumn": 15, + "endColumn": 53, + "lineCount": 3 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 56, - "endColumn": 64, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 59, - "endColumn": 67, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 59, - "endColumn": 67, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 15, + "endColumn": 53, + "lineCount": 3 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 56, - "endColumn": 65, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 56, - "endColumn": 65, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 34, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 34, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 47, - "endColumn": 74, + "startColumn": 15, + "endColumn": 53, + "lineCount": 3 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 74, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 76, - "endColumn": 84, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 76, - "endColumn": 84, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, @@ -5543,7 +5703,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 23, - "endColumn": 49, + "endColumn": 37, "lineCount": 1 } }, @@ -5551,150 +5711,166 @@ "code": "reportMissingParameterType", "range": { "startColumn": 23, - "endColumn": 49, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 39, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 39, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 35, - "endColumn": 44, - "lineCount": 1 + "startColumn": 19, + "endColumn": 48, + "lineCount": 7 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 15, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 42, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 42, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 47, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 47, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 58, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 4, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 4, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 33, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 33, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 22, - "endColumn": 48, + "startColumn": 39, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 22, - "endColumn": 48, + "startColumn": 39, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 44, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 44, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 58, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 35, + "startColumn": 4, + "endColumn": 15, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 33, "endColumn": 44, "lineCount": 1 } @@ -5702,96 +5878,96 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 12, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 12, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 8, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 13, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 43, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 43, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 54, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 54, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 46, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 46, + "endColumn": 54, "lineCount": 1 } }, @@ -5814,23 +5990,55 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 54, - "endColumn": 62, + "startColumn": 23, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 54, - "endColumn": 62, + "startColumn": 23, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 35, + "startColumn": 34, + "endColumn": 61, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 34, + "endColumn": 61, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 63, + "endColumn": 71, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 63, + "endColumn": 71, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 23, "endColumn": 49, "lineCount": 1 } @@ -5838,7 +6046,7 @@ { "code": "reportMissingParameterType", "range": { - "startColumn": 35, + "startColumn": 23, "endColumn": 49, "lineCount": 1 } @@ -5846,128 +6054,280 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 48, + "endColumn": 57, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 40, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 40, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 41, + "startColumn": 22, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 31, + "startColumn": 22, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 47, + "startColumn": 48, + "endColumn": 57, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 65, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 65, + "endColumn": 73, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 28, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 28, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 56, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 56, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 67, + "endColumn": 75, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 67, + "endColumn": 75, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 55, + "endColumn": 69, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 55, + "endColumn": 69, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 28, + "endColumn": 40, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 28, + "endColumn": 40, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 16, + "lineCount": 1 + } + }, + { + "code": "reportOptionalMemberAccess", + "range": { + "startColumn": 42, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportOptionalMemberAccess", + "range": { + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 65, + "endColumn": 83, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 47, "lineCount": 1 } }, @@ -5987,6 +6347,38 @@ "lineCount": 1 } }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 54, + "endColumn": 63, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 54, + "endColumn": 63, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 65, + "endColumn": 72, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 65, + "endColumn": 72, + "lineCount": 1 + } + }, { "code": "reportUnknownVariableType", "range": { @@ -6259,14 +6651,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 66, - "endColumn": 71, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -6278,32 +6662,16 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 32, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 39, - "endColumn": 45, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 45, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, @@ -6318,48 +6686,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 27, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 59, + "startColumn": 58, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 59, + "startColumn": 58, + "endColumn": 72, "lineCount": 1 } }, @@ -6422,16 +6774,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 56, - "endColumn": 61, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 63, - "endColumn": 72, + "startColumn": 62, + "endColumn": 71, "lineCount": 1 } }, @@ -6526,16 +6870,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 45, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 47, - "endColumn": 53, + "startColumn": 46, + "endColumn": 52, "lineCount": 1 } }, @@ -6603,43 +6939,35 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 62, + "startColumn": 43, + "endColumn": 61, "lineCount": 1 } }, @@ -6686,16 +7014,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -6718,16 +7038,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -6758,16 +7070,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -6798,16 +7102,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -6830,16 +7126,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -6854,16 +7142,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -6894,48 +7174,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 49, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 49, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 61, + "startColumn": 60, + "endColumn": 74, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 61, + "startColumn": 60, + "endColumn": 74, "lineCount": 1 } }, @@ -6998,16 +7262,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 56, - "endColumn": 61, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 63, - "endColumn": 72, + "startColumn": 62, + "endColumn": 71, "lineCount": 1 } }, @@ -7091,43 +7347,35 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 62, + "startColumn": 43, + "endColumn": 61, "lineCount": 1 } }, @@ -7174,16 +7422,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 22, + "endColumn": 31, "lineCount": 1 } }, @@ -7198,16 +7438,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -7230,16 +7462,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 22, + "endColumn": 31, "lineCount": 1 } }, @@ -7270,16 +7494,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 38, - "endColumn": 47, + "startColumn": 37, + "endColumn": 46, "lineCount": 1 } }, @@ -7302,16 +7518,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 22, + "endColumn": 31, "lineCount": 1 } }, @@ -7342,16 +7550,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 38, - "endColumn": 47, + "startColumn": 37, + "endColumn": 46, "lineCount": 1 } }, @@ -7366,16 +7566,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 28, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, @@ -7398,16 +7590,8 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 22, + "endColumn": 31, "lineCount": 1 } }, @@ -7716,50 +7900,50 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 42, - "endColumn": 49, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 42, - "endColumn": 49, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 63, + "startColumn": 36, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 63, + "startColumn": 36, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 65, - "endColumn": 82, + "startColumn": 50, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 65, - "endColumn": 82, + "startColumn": 50, + "endColumn": 67, "lineCount": 1 } }, @@ -7779,14 +7963,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -7886,48 +8062,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 38, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 38, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 58, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 58, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 56, - "endColumn": 64, + "startColumn": 69, + "endColumn": 77, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 56, - "endColumn": 64, + "startColumn": 69, + "endColumn": 77, "lineCount": 1 } }, @@ -7947,99 +8107,51 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 30, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 63, + "startColumn": 33, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 38, - "endColumn": 70, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 33, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 18, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 53, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 53, + "startColumn": 37, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 75, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 55, - "endColumn": 75, + "startColumn": 61, + "endColumn": 81, "lineCount": 1 } }, @@ -8051,14 +8163,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 34, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8067,14 +8171,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8084,66 +8180,50 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 54, - "endColumn": 65, + "startColumn": 39, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 54, - "endColumn": 65, + "startColumn": 39, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 67, - "endColumn": 79, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 67, - "endColumn": 79, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, @@ -8179,14 +8259,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8275,14 +8347,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 34, - "lineCount": 1 - } - }, { "code": "reportIncompatibleMethodOverride", "range": { @@ -8302,48 +8366,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 41, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 59, - "endColumn": 67, + "startColumn": 46, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 59, - "endColumn": 67, + "startColumn": 46, + "endColumn": 54, "lineCount": 1 } }, @@ -8363,51 +8411,27 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 52, + "startColumn": 33, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 41, - "endColumn": 76, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 33, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 38, "lineCount": 1 } }, @@ -8419,14 +8443,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8435,14 +8451,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 29, - "endColumn": 46, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8451,14 +8459,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 48, - "endColumn": 68, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8467,14 +8467,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 70, - "endColumn": 82, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8483,14 +8475,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 41, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8499,22 +8483,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 20, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8523,22 +8491,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 13, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 18, - "endColumn": 23, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -8548,66 +8500,50 @@ } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 39, - "endColumn": 46, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 39, - "endColumn": 46, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 48, - "endColumn": 65, + "startColumn": 33, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 65, + "startColumn": 33, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 67, - "endColumn": 79, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 67, - "endColumn": 79, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, @@ -8694,32 +8630,16 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 49, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 49, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 56, - "endColumn": 65, + "startColumn": 43, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 56, - "endColumn": 65, + "startColumn": 43, + "endColumn": 52, "lineCount": 1 } }, @@ -8788,89 +8708,81 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 34, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 33, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 44, + "startColumn": 12, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 12, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 57, + "startColumn": 11, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 50, + "startColumn": 16, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 50, + "startColumn": 16, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 49, + "startColumn": 16, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, + "startColumn": 11, "endColumn": 49, "lineCount": 1 } @@ -8878,224 +8790,88 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 43, + "startColumn": 16, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 43, + "startColumn": 16, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 50, + "startColumn": 16, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportImplicitOverride", "range": { - "startColumn": 16, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 49, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 53, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 53, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 29, - "endColumn": 34, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 23, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 23, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 74, + "startColumn": 34, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 74, + "startColumn": 34, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 76, - "endColumn": 84, + "startColumn": 63, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 76, - "endColumn": 84, + "startColumn": 63, + "endColumn": 71, "lineCount": 1 } }, @@ -9140,34 +8916,26 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 8, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 22, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 50, + "endColumn": 72, "lineCount": 1 } }, @@ -9180,58 +8948,50 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 32, - "endColumn": 39, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 32, - "endColumn": 39, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 55, - "endColumn": 70, + "startColumn": 40, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 55, - "endColumn": 70, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 40, + "endColumn": 55, "lineCount": 1 } }, @@ -9318,48 +9078,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, @@ -9428,53 +9172,13 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 28, - "endColumn": 50, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, + "startColumn": 8, "endColumn": 25, "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 41, - "endColumn": 56, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -9483,14 +9187,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -9499,14 +9195,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 46, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -9516,74 +9204,50 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 32, - "endColumn": 39, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 32, - "endColumn": 39, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 55, - "endColumn": 72, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 55, - "endColumn": 72, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, @@ -9670,48 +9334,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, @@ -9747,27 +9395,19 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 30, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 29, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 29, + "endColumn": 40, "lineCount": 1 } }, @@ -9788,25 +9428,9 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 28, - "endColumn": 50, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, + "startColumn": 8, "endColumn": 25, "lineCount": 1 } @@ -9814,32 +9438,16 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 44, + "startColumn": 18, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 68, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 46, - "endColumn": 68, + "startColumn": 37, + "endColumn": 59, "lineCount": 1 } }, @@ -9875,14 +9483,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 74, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -9892,127 +9492,87 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 42, + "startColumn": 30, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 16, + "startColumn": 50, "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 64, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 22, - "endColumn": 27, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 39, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 39, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 59, + "endColumn": 74, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 59, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 40, - "endColumn": 57, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 40, - "endColumn": 57, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 59, - "endColumn": 74, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 59, - "endColumn": 74, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, "endColumn": 23, @@ -10110,48 +9670,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, @@ -10190,39 +9734,15 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 28, - "endColumn": 50, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 33, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, + "startColumn": 8, "endColumn": 25, "lineCount": 1 } @@ -10235,14 +9755,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10251,14 +9763,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 53, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10267,14 +9771,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 55, - "endColumn": 75, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10283,14 +9779,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 44, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10299,14 +9787,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10315,14 +9795,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10332,90 +9804,66 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 38, - "endColumn": 45, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 38, - "endColumn": 45, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 59, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 59, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 61, - "endColumn": 78, + "startColumn": 46, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 61, - "endColumn": 78, + "startColumn": 46, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 47, + "startColumn": 65, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 65, + "endColumn": 80, "lineCount": 1 } }, @@ -10518,48 +9966,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 34, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 65, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 65, + "endColumn": 73, "lineCount": 1 } }, @@ -10611,14 +10043,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 38, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -10644,74 +10068,34 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 34, - "endColumn": 62, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 18, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 53, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 53, + "startColumn": 37, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 75, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 55, - "endColumn": 75, + "startColumn": 61, + "endColumn": 81, "lineCount": 1 } }, @@ -10723,22 +10107,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 38, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -10748,58 +10116,34 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportUnknownLambdaType", "range": { - "startColumn": 40, - "endColumn": 47, + "startColumn": 44, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 40, - "endColumn": 47, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 49, - "endColumn": 61, + "startColumn": 60, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 49, - "endColumn": 61, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 60, + "endColumn": 72, "lineCount": 1 } }, @@ -10828,7 +10172,7 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { "startColumn": 8, "endColumn": 29, @@ -10846,48 +10190,48 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 30, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 30, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 43, - "endColumn": 52, + "startColumn": 41, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 52, + "startColumn": 41, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 54, - "endColumn": 62, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 54, - "endColumn": 62, + "startColumn": 15, + "endColumn": 29, "lineCount": 1 } }, @@ -10895,23 +10239,23 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 12, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 29, + "startColumn": 18, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 66, + "startColumn": 8, + "endColumn": 51, "lineCount": 1 } }, @@ -10919,7 +10263,7 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 25, + "endColumn": 65, "lineCount": 1 } }, @@ -10927,103 +10271,95 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 12, - "endColumn": 25, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 27, - "endColumn": 44, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 27, - "endColumn": 44, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 27, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 72, + "startColumn": 15, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 72, + "startColumn": 15, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportCallIssue", - "range": { - "startColumn": 15, - "endColumn": 9, - "lineCount": 5 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 15, - "endColumn": 13, - "lineCount": 5 + "startColumn": 8, + "endColumn": 25, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportImplicitOverride", "range": { - "startColumn": 27, - "endColumn": 39, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 39, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 27, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 34, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, @@ -11031,7 +10367,7 @@ "code": "reportIncompatibleMethodOverride", "range": { "startColumn": 8, - "endColumn": 25, + "endColumn": 28, "lineCount": 1 } }, @@ -11039,55 +10375,47 @@ "code": "reportImplicitOverride", "range": { "startColumn": 8, - "endColumn": 25, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 55, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 55, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 39, - "endColumn": 45, + "startColumn": 19, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 39, - "endColumn": 45, + "startColumn": 33, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 37, - "endColumn": 46, + "startColumn": 45, + "endColumn": 59, "lineCount": 1 } }, @@ -11095,84 +10423,12 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 28, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 8, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 49, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 35, - "endColumn": 49, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 51, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 61, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 19, - "endColumn": 68, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 32, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", "range": { "startColumn": 8, "endColumn": 47, @@ -11190,64 +10446,48 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 18, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 38, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 38, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 58, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 58, + "endColumn": 65, "lineCount": 1 } }, @@ -11270,24 +10510,24 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 24, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 44, + "endColumn": 51, "lineCount": 1 } }, @@ -11318,48 +10558,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 38, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 38, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 56, - "endColumn": 64, + "startColumn": 43, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 56, - "endColumn": 64, + "startColumn": 43, + "endColumn": 51, "lineCount": 1 } }, @@ -11502,32 +10726,16 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 49, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 49, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 56, - "endColumn": 65, + "startColumn": 43, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 56, - "endColumn": 65, + "startColumn": 43, + "endColumn": 52, "lineCount": 1 } }, @@ -11766,64 +10974,48 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 23, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 23, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 74, + "startColumn": 34, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 74, + "startColumn": 34, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 76, - "endColumn": 84, + "startColumn": 63, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 76, - "endColumn": 84, + "startColumn": 63, + "endColumn": 71, "lineCount": 1 } }, @@ -11910,48 +11102,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, @@ -12070,48 +11246,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, @@ -12278,48 +11438,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 44, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 46, - "endColumn": 54, + "startColumn": 59, + "endColumn": 67, "lineCount": 1 } }, @@ -12462,48 +11606,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 34, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 65, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 65, + "endColumn": 73, "lineCount": 1 } }, @@ -12670,232 +11798,200 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, + "startColumn": 35, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 46, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 46, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 12, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 34, "endColumn": 46, "lineCount": 1 } }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 34, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 16, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 19, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 26, + "endColumn": 69, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 16, + "endColumn": 20, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 24, + "endColumn": 53, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 20, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 29, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 18, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 21, + "lineCount": 1 + } + }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportIncompatibleMethodOverride", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportImplicitOverride", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 56, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 56, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 59, - "endColumn": 67, + "startColumn": 67, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 59, - "endColumn": 67, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 12, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 34, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 34, - "endColumn": 48, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 16, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 19, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 69, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 16, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 24, - "endColumn": 53, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 20, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 29, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 18, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 8, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 36, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 36, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 43, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 43, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 54, - "endColumn": 62, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 54, - "endColumn": 62, + "startColumn": 67, + "endColumn": 75, "lineCount": 1 } }, @@ -12990,32 +12086,16 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 32, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 39, - "endColumn": 45, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 45, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, @@ -13052,18 +12132,26 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { "startColumn": 35, - "endColumn": 49, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 41, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 49, + "startColumn": 41, + "endColumn": 55, "lineCount": 1 } }, @@ -13092,7 +12180,7 @@ } }, { - "code": "reportImplicitOverride", + "code": "reportIncompatibleMethodOverride", "range": { "startColumn": 8, "endColumn": 47, @@ -13100,66 +12188,58 @@ } }, { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 18, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", + "code": "reportImplicitOverride", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 8, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 38, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 32, + "startColumn": 38, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 47, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 58, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 52, + "startColumn": 58, + "endColumn": 65, "lineCount": 1 } }, @@ -13205,14 +12285,6 @@ } ], "./boxtree/distributed/__init__.py": [ - { - "code": "reportUnusedImport", - "range": { - "startColumn": 7, - "endColumn": 21, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -13304,64 +12376,48 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 13, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 8, - "endColumn": 13, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 15, - "endColumn": 26, + "startColumn": 28, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 26, + "startColumn": 28, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 45, + "startColumn": 41, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 45, + "startColumn": 41, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 63, + "startColumn": 60, + "endColumn": 76, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 63, + "startColumn": 60, + "endColumn": 76, "lineCount": 1 } }, @@ -13421,30 +12477,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 67, - "endColumn": 75, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 67, - "endColumn": 81, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 70, - "endColumn": 75, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -13462,18 +12494,10 @@ } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 46, + "startColumn": 45, + "endColumn": 56, "lineCount": 1 } }, @@ -13510,18 +12534,10 @@ } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 52, + "startColumn": 42, + "endColumn": 58, "lineCount": 1 } }, @@ -13534,10 +12550,10 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 48, + "startColumn": 32, + "endColumn": 47, "lineCount": 1 } }, @@ -13558,18 +12574,10 @@ } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 4, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 42, + "startColumn": 37, + "endColumn": 52, "lineCount": 1 } }, @@ -13605,43 +12613,35 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 23, - "endColumn": 13, - "lineCount": 4 - } - }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 18, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 34, + "startColumn": 35, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 64, + "startColumn": 35, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 64, + "startColumn": 37, + "endColumn": 49, "lineCount": 1 } }, @@ -13653,14 +12653,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 58, - "endColumn": 74, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -13678,26 +12670,26 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 4, + "endColumn": 14, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 31, + "startColumn": 14, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 57, - "endColumn": 61, + "startColumn": 72, + "endColumn": 76, "lineCount": 1 } }, @@ -13750,34 +12742,26 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 48, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 78, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 60, + "endColumn": 77, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 21, - "endColumn": 39, + "startColumn": 35, + "endColumn": 49, "lineCount": 1 } }, @@ -13790,10 +12774,10 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 21, - "endColumn": 46, + "startColumn": 33, + "endColumn": 47, "lineCount": 1 } }, @@ -13816,32 +12800,16 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 23, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 30, - "endColumn": 41, + "startColumn": 52, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 41, + "startColumn": 52, + "endColumn": 63, "lineCount": 1 } }, @@ -13952,64 +12920,40 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 31, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 34, + "startColumn": 44, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 53, + "startColumn": 63, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 55, - "endColumn": 71, + "startColumn": 45, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 25, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 41, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 41, - "endColumn": 52, + "startColumn": 45, + "endColumn": 59, "lineCount": 1 } }, @@ -14079,86 +13023,6 @@ } ], "./boxtree/distributed/calculation.py": [ - { - "code": "reportMissingSuperCall", - "range": { - "startColumn": 8, - "endColumn": 16, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 23, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 23, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 32, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 32, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 38, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 38, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 17, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 17, - "endColumn": 43, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 17, - "endColumn": 49, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -14167,43 +13031,35 @@ "lineCount": 1 } }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 33, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 55, + "startColumn": 32, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 55, + "startColumn": 32, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 57, - "endColumn": 74, + "startColumn": 49, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 57, - "endColumn": 74, + "startColumn": 49, + "endColumn": 66, "lineCount": 1 } }, @@ -14258,48 +13114,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 32, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 32, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 68, + "startColumn": 44, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 68, + "startColumn": 44, + "endColumn": 61, "lineCount": 1 } }, @@ -14384,23 +13224,39 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 59, - "endColumn": 75, + "startColumn": 16, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", "range": { "startColumn": 59, "endColumn": 75, @@ -14408,10 +13264,10 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 34, + "startColumn": 59, + "endColumn": 75, "lineCount": 1 } }, @@ -14480,10 +13336,34 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 69, "lineCount": 1 } }, @@ -14491,48 +13371,128 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 19, - "endColumn": 23, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportIndexIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 51, + "startColumn": 19, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 24, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 12, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 34, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 27, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 28, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 28, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 28, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 28, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 12, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 57, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownVariableType", "range": { - "startColumn": 60, - "endColumn": 67, - "lineCount": 2 + "startColumn": 37, + "endColumn": 57, + "lineCount": 1 } }, { @@ -14544,10 +13504,10 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 51, - "endColumn": 57, + "startColumn": 25, + "endColumn": 50, "lineCount": 1 } }, @@ -14647,482 +13607,482 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 25, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 30, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportIndexIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 51, + "startColumn": 30, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 30, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 57, + "startColumn": 12, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownMemberType", "range": { - "startColumn": 60, - "endColumn": 67, - "lineCount": 2 + "startColumn": 19, + "endColumn": 34, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 50, + "startColumn": 19, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 51, - "endColumn": 57, + "startColumn": 24, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 28, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 73, + "startColumn": 34, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 33, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 66, - "endColumn": 78, + "startColumn": 27, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 25, - "lineCount": 3 + "startColumn": 28, + "endColumn": 42, + "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 28, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 49, - "endColumn": 61, + "startColumn": 28, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 61, + "startColumn": 28, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { "startColumn": 12, - "endColumn": 23, - "lineCount": 8 + "endColumn": 17, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 13, - "lineCount": 10 + "startColumn": 19, + "endColumn": 23, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 40, - "endColumn": 52, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 23, - "lineCount": 11 + "startColumn": 37, + "endColumn": 57, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 13, - "lineCount": 13 + "startColumn": 20, + "endColumn": 50, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 40, - "endColumn": 52, + "startColumn": 25, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 26, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 26, + "startColumn": 47, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 28, - "endColumn": 51, + "startColumn": 16, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 51, + "startColumn": 66, + "endColumn": 78, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 75, - "lineCount": 1 + "startColumn": 21, + "endColumn": 25, + "lineCount": 3 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 53, - "endColumn": 75, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 35, - "lineCount": 1 + "startColumn": 49, + "endColumn": 53, + "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 49, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 55, + "endColumn": 67, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 55, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 26, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 14, - "endColumn": 53, - "lineCount": 1 + "startColumn": 16, + "endColumn": 27, + "lineCount": 8 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 35, - "lineCount": 1 + "startColumn": 16, + "endColumn": 17, + "lineCount": 10 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 23, + "startColumn": 44, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 23, - "lineCount": 1 + "startColumn": 16, + "endColumn": 27, + "lineCount": 11 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 35, - "lineCount": 1 + "startColumn": 16, + "endColumn": 17, + "lineCount": 13 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 44, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 12, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 12, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 22, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 22, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 47, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 47, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 42, + "startColumn": 40, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 58, + "startColumn": 40, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 50, + "startColumn": 14, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 50, + "startColumn": 22, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 58, - "endColumn": 74, + "startColumn": 22, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 58, - "endColumn": 74, + "startColumn": 22, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 39, + "startColumn": 22, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 54, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 70, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, + "startColumn": 12, "endColumn": 35, "lineCount": 1 } @@ -15130,152 +14090,144 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 39, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 38, - "endColumn": 56, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 30, + "startColumn": 32, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 61, + "startColumn": 32, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 40, + "startColumn": 44, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 61, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 40, + "startColumn": 15, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 24, + "startColumn": 15, "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 11, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { "startColumn": 16, - "endColumn": 24, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 24, + "startColumn": 12, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 32, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 44, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 11, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 16, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 46, + "startColumn": 47, + "endColumn": 65, "lineCount": 1 } }, @@ -15283,231 +14235,231 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 47, - "endColumn": 57, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 59, - "endColumn": 71, + "startColumn": 51, + "endColumn": 78, "lineCount": 1 } }, { - "code": "reportUnsafeMultipleInheritance", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 6, - "endColumn": 40, + "startColumn": 51, + "endColumn": 78, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownVariableType", "range": { - "startColumn": 6, - "endColumn": 40, + "startColumn": 12, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 6, - "endColumn": 40, + "startColumn": 41, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 41, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 37, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 34, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 34, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 58, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 60, + "startColumn": 58, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 60, + "startColumn": 34, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 62, - "endColumn": 78, + "startColumn": 34, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 62, - "endColumn": 78, + "startColumn": 53, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 53, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 11, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 16, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 14, - "endColumn": 20, + "startColumn": 12, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 14, - "endColumn": 20, + "startColumn": 54, + "endColumn": 82, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 45, + "startColumn": 54, + "endColumn": 82, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 53, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 49, + "startColumn": 53, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 40, + "startColumn": 32, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 28, + "startColumn": 32, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 45, + "startColumn": 32, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, + "startColumn": 32, "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 53, - "endColumn": 59, + "startColumn": 16, + "endColumn": 39, "lineCount": 1 } }, @@ -15515,62 +14467,62 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 53, - "endColumn": 59, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 59, + "startColumn": 20, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, - "endColumn": 59, + "startColumn": 20, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, - "endColumn": 59, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 34, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, + "startColumn": 25, "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, + "startColumn": 25, "endColumn": 42, "lineCount": 1 } @@ -15578,1404 +14530,1380 @@ { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 80, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 20, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 47, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 47, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 75, + "startColumn": 38, + "endColumn": 56, "lineCount": 1 } - } - ], - "./boxtree/distributed/local_traversal.py": [ + }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 24, + "startColumn": 20, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 42, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 42, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 44, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 44, + "startColumn": 20, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportCallIssue", "range": { - "startColumn": 46, - "endColumn": 63, + "startColumn": 16, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 4, - "endColumn": 25, + "startColumn": 16, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 17, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 35, + "startColumn": 19, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 26, - "endColumn": 59, + "startColumn": 6, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 66, + "startColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 57, + "startColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 64, + "startColumn": 24, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 59, + "startColumn": 24, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 36, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 21, - "endColumn": 49, + "startColumn": 36, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 11, - "endColumn": 21, + "startColumn": 53, + "endColumn": 69, "lineCount": 1 } - } - ], - "./boxtree/distributed/local_tree.py": [ + }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 53, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 12, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 45, + "startColumn": 12, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 45, + "startColumn": 12, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 64, + "startColumn": 14, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 64, + "startColumn": 14, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 66, - "endColumn": 77, + "startColumn": 8, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 66, - "endColumn": 77, + "startColumn": 18, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 23, + "startColumn": 30, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 23, + "startColumn": 53, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 30, + "startColumn": 53, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 24, + "startColumn": 53, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 53, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 46, - "lineCount": 6 + "startColumn": 53, + "endColumn": 59, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 13, - "lineCount": 8 + "startColumn": 53, + "endColumn": 59, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 67, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportImplicitOverride", "range": { - "startColumn": 22, + "startColumn": 8, "endColumn": 23, - "lineCount": 10 + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 22, - "endColumn": 77, - "lineCount": 10 + "startColumn": 30, + "endColumn": 42, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 53, - "endColumn": 75, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 19, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 50, - "lineCount": 4 + "startColumn": 37, + "endColumn": 58, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 13, - "lineCount": 6 + "startColumn": 37, + "endColumn": 63, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 60, + "startColumn": 37, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 35, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportImplicitOverride", "range": { - "startColumn": 4, - "endColumn": 29, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 43, - "endColumn": 64, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 64, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 19, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 30, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 13, - "lineCount": 6 + "startColumn": 30, + "endColumn": 56, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 60, + "startColumn": 30, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 55, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 22, - "endColumn": 37, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportImplicitOverride", "range": { - "startColumn": 38, - "endColumn": 59, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 49, + "startColumn": 54, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 13, - "lineCount": 5 + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 67, + "startColumn": 19, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 22, - "endColumn": 37, + "startColumn": 19, + "endColumn": 86, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 59, + "startColumn": 75, + "endColumn": 85, "lineCount": 1 } - }, + } + ], + "./boxtree/distributed/local_traversal.py": [ { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 4, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 23, - "lineCount": 5 + "startColumn": 8, + "endColumn": 12, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 13, - "lineCount": 8 + "startColumn": 14, + "endColumn": 24, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 67, + "startColumn": 14, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 26, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 13, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 26, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 45, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 31, + "startColumn": 4, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 31, + "startColumn": 16, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 26, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 33, - "endColumn": 42, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 64, + "startColumn": 29, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 44, - "endColumn": 64, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 25, + "startColumn": 21, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 25, + "startColumn": 11, + "endColumn": 21, "lineCount": 1 } - }, + } + ], + "./boxtree/distributed/local_tree.py": [ { "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 38, + "startColumn": 17, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 38, + "startColumn": 17, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 61, + "startColumn": 29, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 61, + "startColumn": 29, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 48, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 48, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 8, + "startColumn": 13, "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 24, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 26, - "endColumn": 47, + "startColumn": 13, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 47, + "startColumn": 8, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 13, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 27, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 29, - "endColumn": 57, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 57, - "lineCount": 1 + "startColumn": 22, + "endColumn": 46, + "lineCount": 6 } }, { - "code": "reportUnknownParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 33, - "lineCount": 1 + "startColumn": 22, + "endColumn": 13, + "lineCount": 8 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 33, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 35, - "lineCount": 1 + "startColumn": 22, + "endColumn": 23, + "lineCount": 10 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 43, - "endColumn": 60, - "lineCount": 1 + "startColumn": 22, + "endColumn": 77, + "lineCount": 10 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 29, + "startColumn": 53, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 53, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 39, + "startColumn": 26, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 64, - "lineCount": 1 + "startColumn": 22, + "endColumn": 50, + "lineCount": 4 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 4, - "endColumn": 25, - "lineCount": 1 + "startColumn": 22, + "endColumn": 13, + "lineCount": 6 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 23, + "startColumn": 38, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 65, - "endColumn": 70, + "startColumn": 38, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 4, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 30, - "endColumn": 49, + "startColumn": 4, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 57, - "endColumn": 68, + "startColumn": 43, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 43, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 19, - "endColumn": 38, - "lineCount": 1 + "startColumn": 12, + "endColumn": 13, + "lineCount": 6 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 57, + "startColumn": 38, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 41, + "startColumn": 38, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 36, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 41, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 36, + "startColumn": 22, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 22, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 58, + "startColumn": 38, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 66, - "endColumn": 83, + "startColumn": 12, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 16, - "lineCount": 1 + "startColumn": 12, + "endColumn": 13, + "lineCount": 5 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 46, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 27, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 49, + "startColumn": 22, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 22, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 49, + "startColumn": 38, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, + "startColumn": 12, "endColumn": 23, - "lineCount": 1 + "lineCount": 5 } }, { "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 8, - "endColumn": 20, - "lineCount": 1 + "startColumn": 12, + "endColumn": 13, + "lineCount": 8 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 29, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 29, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 31, - "endColumn": 47, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 31, - "endColumn": 47, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 49, - "endColumn": 71, + "startColumn": 14, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 49, - "endColumn": 71, + "startColumn": 14, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 73, - "endColumn": 77, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 73, - "endColumn": 77, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 15, + "startColumn": 37, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 39, + "startColumn": 37, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, + "startColumn": 8, "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, + "startColumn": 8, "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { "startColumn": 27, - "endColumn": 49, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { "startColumn": 27, - "endColumn": 49, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 40, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 40, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 43, - "endColumn": 66, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 66, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 12, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 28, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 12, + "startColumn": 26, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 28, + "startColumn": 26, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 59, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 37, - "endColumn": 53, + "startColumn": 29, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 55, - "endColumn": 77, + "startColumn": 29, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 19, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 22, - "endColumn": 43, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 61, + "startColumn": 34, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 62, + "endColumn": 79, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 43, + "startColumn": 4, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 21, - "endColumn": 43, + "startColumn": 8, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 63, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportIndexIssue", "range": { - "startColumn": 45, - "endColumn": 63, + "startColumn": 4, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 28, + "startColumn": 4, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 28, + "startColumn": 4, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 37, + "startColumn": 22, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 39, - "endColumn": 62, + "startColumn": 43, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 39, - "endColumn": 62, + "startColumn": 23, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 39, + "startColumn": 4, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 39, + "startColumn": 39, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 45, + "endColumn": 64, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 72, + "endColumn": 83, "lineCount": 1 } }, @@ -16983,15 +15911,15 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 37, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 72, + "startColumn": 13, + "endColumn": 36, "lineCount": 1 } }, @@ -17004,17 +15932,17 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 41, + "startColumn": 13, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, + "startColumn": 41, "endColumn": 50, "lineCount": 1 } @@ -17022,16 +15950,16 @@ { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 50, + "startColumn": 58, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 47, + "startColumn": 4, + "endColumn": 38, "lineCount": 1 } }, @@ -17039,1568 +15967,1560 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 8, - "endColumn": 47, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 18, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 43, + "startColumn": 4, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 43, + "startColumn": 4, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 63, + "startColumn": 29, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 63, + "startColumn": 18, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 28, + "startColumn": 37, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 28, + "startColumn": 21, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUntypedBaseClass", "range": { - "startColumn": 8, - "endColumn": 37, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 37, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 62, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 62, + "startColumn": 26, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 39, + "startColumn": 26, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 39, + "startColumn": 50, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 50, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 4, + "endColumn": 15, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 36, + "startColumn": 28, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 71, + "startColumn": 28, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 41, + "startColumn": 18, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 41, + "startColumn": 18, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 50, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 50, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 47, + "startColumn": 43, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 47, + "startColumn": 43, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 42, + "startColumn": 4, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 41, + "startColumn": 15, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 4, - "endColumn": 15, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 12, - "endColumn": 17, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 48, + "startColumn": 15, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportAssignmentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 62, + "startColumn": 46, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 9, - "endColumn": 32, + "startColumn": 36, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 56, + "startColumn": 54, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 58, - "endColumn": 61, + "startColumn": 20, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 20, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 23, + "startColumn": 44, "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 44, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 61, + "startColumn": 8, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 8, - "endColumn": 30, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 59, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 27, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 39, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 26, + "startColumn": 39, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, + "startColumn": 8, "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 19, + "startColumn": 8, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 47, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 52, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 23, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 30, + "startColumn": 37, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 8, - "endColumn": 29, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 8, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 59, + "startColumn": 8, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 59, + "startColumn": 8, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 59, + "startColumn": 8, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 55, + "startColumn": 20, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 21, - "endColumn": 45, + "startColumn": 20, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 43, + "startColumn": 44, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 51, + "startColumn": 44, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 43, + "startColumn": 8, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 53, + "startColumn": 8, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 43, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 21, - "endColumn": 45, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 59, + "startColumn": 39, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 67, + "startColumn": 39, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownMemberType", "range": { - "startColumn": 61, - "endColumn": 64, + "startColumn": 8, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 71, - "endColumn": 76, + "startColumn": 8, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 50, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 64, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 71, - "endColumn": 76, + "startColumn": 8, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 50, + "startColumn": 36, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 66, - "endColumn": 71, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 75, - "endColumn": 80, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 72, - "endColumn": 77, + "startColumn": 8, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 66, - "endColumn": 71, + "startColumn": 8, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 75, - "endColumn": 80, + "startColumn": 8, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 72, - "endColumn": 77, + "startColumn": 8, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 49, + "startColumn": 12, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 47, + "startColumn": 23, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 43, + "startColumn": 4, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 41, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 18, - "endColumn": 37, - "lineCount": 1 + "startColumn": 40, + "endColumn": 42, + "lineCount": 2 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 36, - "endColumn": 75, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAssignmentType", "range": { - "startColumn": 36, - "endColumn": 75, + "startColumn": 8, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 75, + "startColumn": 9, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 75, + "startColumn": 34, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 41, + "startColumn": 58, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 48, + "startColumn": 22, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 22, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 25, + "startColumn": 48, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 20, + "startColumn": 47, + "endColumn": 69, "lineCount": 1 } - } - ], - "./boxtree/distributed/partition.py": [ + }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 30, + "startColumn": 4, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 30, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 39, + "startColumn": 4, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 37, + "startColumn": 29, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 47, - "endColumn": 64, + "startColumn": 4, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 64, + "startColumn": 22, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 23, - "endColumn": 41, + "startColumn": 30, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 41, + "startColumn": 35, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 8, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 27, - "endColumn": 45, + "startColumn": 8, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 41, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 4, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 28, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 28, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 28, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 48, + "startColumn": 26, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 48, + "startColumn": 21, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 8, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 25, + "startColumn": 24, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 12, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 28, + "startColumn": 25, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 12, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 28, + "startColumn": 21, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 29, + "startColumn": 28, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 42, + "startColumn": 19, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 72, + "startColumn": 19, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 72, + "startColumn": 23, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 22, + "startColumn": 22, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 44, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 59, + "startColumn": 19, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 67, - "endColumn": 84, + "startColumn": 36, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 67, - "endColumn": 84, + "startColumn": 36, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 39, - "endColumn": 50, + "startColumn": 36, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 39, - "endColumn": 50, + "startColumn": 36, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 69, - "endColumn": 80, + "startColumn": 19, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 48, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 26, + "startColumn": 47, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 55, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 20, + "endColumn": 30, "lineCount": 1 } - }, + } + ], + "./boxtree/distributed/partition.py": [ { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 26, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 26, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 47, + "startColumn": 25, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 47, + "startColumn": 26, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 23, + "startColumn": 47, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 25, + "startColumn": 47, + "endColumn": 64, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 23, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 46, - "lineCount": 7 + "startColumn": 26, + "endColumn": 41, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 13, - "lineCount": 9 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 40, - "endColumn": 57, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 46, - "lineCount": 10 - } - }, - { - "code": "reportArgumentType", - "range": { - "startColumn": 12, - "endColumn": 13, - "lineCount": 12 + "startColumn": 27, + "endColumn": 45, + "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 57, + "startColumn": 29, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 19, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 56, + "startColumn": 19, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 35, - "endColumn": 39, + "startColumn": 44, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 39, + "startColumn": 44, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 4, + "endColumn": 8, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 11, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 52, - "endColumn": 74, + "startColumn": 4, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 52, - "endColumn": 74, + "startColumn": 15, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 4, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 67, + "startColumn": 15, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 58, + "startColumn": 18, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 65, + "startColumn": 38, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 23, + "startColumn": 55, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 53, + "startColumn": 55, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 10, - "endColumn": 33, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 43, + "startColumn": 46, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 34, + "startColumn": 67, + "endColumn": 84, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 41, + "startColumn": 67, + "endColumn": 84, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 36, + "startColumn": 39, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, - "endColumn": 67, + "startColumn": 39, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 82, + "startColumn": 69, + "endColumn": 80, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 4, - "endColumn": 28, + "startColumn": 12, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 12, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 44, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 4, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 13, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 54, - "lineCount": 1 + "startColumn": 12, + "endColumn": 46, + "lineCount": 7 } }, { - "code": "reportUnknownParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 56, - "endColumn": 75, - "lineCount": 1 + "startColumn": 12, + "endColumn": 13, + "lineCount": 9 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 75, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 18, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 48, - "lineCount": 1 + "startColumn": 12, + "endColumn": 46, + "lineCount": 10 + } + }, + { + "code": "reportArgumentType", + "range": { + "startColumn": 12, + "endColumn": 13, + "lineCount": 12 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 42, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 30, + "startColumn": 40, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 46, + "startColumn": 39, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 45, + "startColumn": 39, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { "startColumn": 4, - "endColumn": 42, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 47, + "startColumn": 28, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 40, + "startColumn": 28, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 42, - "endColumn": 73, + "startColumn": 34, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 7, - "endColumn": 21, + "startColumn": 34, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 7, - "endColumn": 41, + "startColumn": 40, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 11, - "endColumn": 50, + "startColumn": 40, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 50, + "startColumn": 51, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 51, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 55, + "startColumn": 4, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 54, + "startColumn": 21, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 49, + "startColumn": 21, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, + "startColumn": 36, "endColumn": 50, "lineCount": 1 } @@ -18608,344 +17528,344 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 36, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 54, + "startColumn": 4, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, + "startColumn": 26, "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 25, + "startColumn": 10, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 13, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 29, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 29, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 44, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 44, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 8, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 53, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 53, + "endColumn": 82, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 56, - "endColumn": 75, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 56, - "endColumn": 75, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 13, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 39, + "startColumn": 11, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 30, + "startColumn": 4, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 37, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 42, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 47, + "startColumn": 14, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 42, + "startColumn": 14, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 41, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 24, - "endColumn": 38, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 24, - "endColumn": 46, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 24, - "endColumn": 46, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 46, + "startColumn": 55, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 62, + "startColumn": 55, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 47, + "startColumn": 4, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 62, + "startColumn": 21, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 47, + "startColumn": 4, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 61, + "startColumn": 8, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 8, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 8, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 34, + "startColumn": 14, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 34, + "startColumn": 4, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 58, + "startColumn": 8, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 58, + "startColumn": 8, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 49, + "startColumn": 42, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 49, + "startColumn": 14, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 51, - "endColumn": 65, + "startColumn": 7, + "endColumn": 21, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 51, - "endColumn": 78, + "startColumn": 7, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 51, - "endColumn": 78, + "startColumn": 11, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 13, + "startColumn": 12, + "endColumn": 50, "lineCount": 1 } }, @@ -18953,697 +17873,681 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 35, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 62, + "startColumn": 16, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 39, - "endColumn": 53, + "startColumn": 16, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 39, - "endColumn": 60, + "startColumn": 22, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 11, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 12, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 16, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 16, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 22, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 21, - "endColumn": 30, - "lineCount": 1 - } - } - ], - "./boxtree/fmm.py": [ - { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 23, + "startColumn": 11, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 22, + "startColumn": 4, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 14, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 14, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 55, + "endColumn": 74, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 55, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 4, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 27, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 38, + "startColumn": 27, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 38, + "startColumn": 42, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 52, + "startColumn": 42, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 52, + "startColumn": 4, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 8, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 8, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 45, + "startColumn": 8, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 45, + "startColumn": 14, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, + "startColumn": 4, "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 24, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 8, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 26, - "endColumn": 49, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 49, + "startColumn": 12, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 34, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 34, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 12, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 18, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 8, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 11, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 24, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 24, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 35, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 35, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 36, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 42, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 40, + "startColumn": 42, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 40, + "startColumn": 42, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 67, + "startColumn": 4, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 42, - "endColumn": 67, + "startColumn": 29, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 69, - "endColumn": 79, + "startColumn": 29, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 69, - "endColumn": 79, + "startColumn": 44, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 44, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 55, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 41, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 26, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 43, - "endColumn": 49, + "startColumn": 4, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 49, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 58, - "endColumn": 73, + "startColumn": 4, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 58, - "endColumn": 73, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 55, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 4, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 38, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 38, + "startColumn": 55, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 52, + "startColumn": 8, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 52, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 54, - "endColumn": 64, + "startColumn": 8, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 54, - "endColumn": 64, + "startColumn": 8, + "endColumn": 32, "lineCount": 1 } - }, + } + ], + "./boxtree/fmm.py": [ { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 13, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 13, + "endColumn": 22, "lineCount": 1 } }, @@ -19651,558 +18555,3192 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 33, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 55, + "startColumn": 15, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 55, + "startColumn": 15, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 57, - "endColumn": 74, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 57, - "endColumn": 74, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 30, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 32, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 40, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 40, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 68, + "startColumn": 52, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 68, + "startColumn": 52, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 48, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 48, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 67, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 67, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 14, - "endColumn": 25, + "startColumn": 40, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 14, - "endColumn": 25, + "startColumn": 40, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 14, - "endColumn": 38, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 14, - "endColumn": 38, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 69, + "startColumn": 12, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 69, + "startColumn": 12, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 47, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 54, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 33, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 22, - "endColumn": 56, + "startColumn": 33, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 56, + "startColumn": 26, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 28, - "lineCount": 4 + "startColumn": 26, + "endColumn": 49, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 49, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 36, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 36, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 59, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 23, - "lineCount": 4 + "startColumn": 12, + "endColumn": 55, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 22, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 52, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 31, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 42, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 52, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 28, - "lineCount": 5 + "startColumn": 12, + "endColumn": 40, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 42, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 42, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 69, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 59, + "startColumn": 69, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 23, - "lineCount": 6 + "startColumn": 12, + "endColumn": 55, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 22, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 52, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 43, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 31, + "startColumn": 43, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 58, + "startColumn": 51, + "endColumn": 56, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 51, + "endColumn": 56, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 58, + "endColumn": 73, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 58, + "endColumn": 73, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 43, + "endColumn": 53, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 43, + "endColumn": 53, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 40, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 40, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 29, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 29, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 32, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 24, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 24, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 24, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 14, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 14, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 14, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 14, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 14, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 14, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 13, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 37, + "endColumn": 43, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 49, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 22, + "endColumn": 56, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 4, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 37, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 50, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 50, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 43, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 62, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 62, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 14, + "lineCount": 1 + } + }, + { + "code": "reportOperatorIssue", + "range": { + "startColumn": 17, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 7, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 24, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 18, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 43, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 43, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 14, + "lineCount": 1 + } + }, + { + "code": "reportOperatorIssue", + "range": { + "startColumn": 17, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 7, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 24, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 53, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 53, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 18, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 65, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 14, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 14, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 50, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 13, + "endColumn": 40, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 41, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 13, + "endColumn": 41, + "lineCount": 1 + } + } + ], + "./boxtree/pyfmmlib_integration.py": [ + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 52, + "endColumn": 56, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 52, + "endColumn": 56, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 8, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 8, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 20, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 43, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 43, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 43, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 43, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 77, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 2 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 51, + "lineCount": 2 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 58, + "lineCount": 2 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 12, + "endColumn": 58, + "lineCount": 2 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 23, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 23, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 28, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 28, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 36, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 16, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 17, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 29, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 18, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 8, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 26, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 26, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 32, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 15, + "endColumn": 79, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 8, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 30, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 30, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 15, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 32, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 38, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 38, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 48, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 48, + "endColumn": 52, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 54, + "endColumn": 64, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 8, + "endColumn": 12, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 32, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 11, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 23, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 16, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 67, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 30, + "endColumn": 82, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 21, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 19, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 23, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 38, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 38, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 12, + "endColumn": 16, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 21, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 27, + "endColumn": 32, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 19, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 13, + "endColumn": 21, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 12, + "endColumn": 16, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 21, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 19, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 36, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 36, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 8, + "endColumn": 12, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 21, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 27, + "endColumn": 32, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 19, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 13, + "endColumn": 21, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 25, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 33, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 16, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 21, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 26, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 19, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 19, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 23, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 23, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 35, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 35, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 23, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 30, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 30, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportRedeclaration", + "range": { + "startColumn": 30, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 22, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 29, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 62, + "endColumn": 67, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 62, + "endColumn": 67, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 60, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 12, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 12, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 16, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 35, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 35, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 41, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 41, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 23, + "endColumn": 28, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 8, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 25, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 37, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 11, + "endColumn": 28, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 17, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 17, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 13, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 30, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 37, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 29, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 29, + "endColumn": 46, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 8, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 12, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 11, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 29, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 44, + "endColumn": 58, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 48, + "endColumn": 63, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportOptionalCall", + "range": { + "startColumn": 12, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 31, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 59, + "endColumn": 71, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 59, + "endColumn": 71, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 8, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 32, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 11, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 17, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 13, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportOptionalMemberAccess", + "range": { + "startColumn": 30, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 40, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 50, + "endColumn": 59, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 50, + "endColumn": 68, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 16, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 29, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 12, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnannotatedClassAttribute", + "range": { + "startColumn": 17, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 30, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportOptionalMemberAccess", + "range": { + "startColumn": 41, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 11, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, + "startColumn": 15, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, "endColumn": 23, - "lineCount": 4 + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 30, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 30, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 17, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 17, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 55, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 49, + "startColumn": 15, + "endColumn": 21, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 11, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 29, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 45, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, + "startColumn": 15, "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, + "startColumn": 8, "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 59, + "startColumn": 43, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 32, - "lineCount": 5 + "startColumn": 43, + "endColumn": 48, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 55, + "endColumn": 60, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 55, + "endColumn": 60, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 11, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 29, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 45, + "endColumn": 55, + "lineCount": 1 + } + }, + { + "code": "reportOperatorIssue", + "range": { + "startColumn": 31, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 49, + "startColumn": 31, + "endColumn": 40, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 33, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, + "startColumn": 33, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, "endColumn": 18, "lineCount": 1 } @@ -20210,127 +21748,175 @@ { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 20, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 18, + "startColumn": 12, "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 54, + "startColumn": 15, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 28, - "lineCount": 6 + "startColumn": 8, + "endColumn": 25, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 15, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 15, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 21, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 36, + "startColumn": 15, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 15, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 32, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 32, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", "range": { "startColumn": 39, - "endColumn": 59, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportMissingParameterType", "range": { "startColumn": 39, - "endColumn": 32, - "lineCount": 5 + "endColumn": 52, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 25, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 49, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, + "startColumn": 20, "endColumn": 29, "lineCount": 1 } @@ -20338,714 +21924,832 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 20, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 23, - "lineCount": 4 + "startColumn": 22, + "endColumn": 31, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", + "range": { + "startColumn": 22, + "endColumn": 51, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 22, + "endColumn": 21, "lineCount": 1 } }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 20, + "endColumn": 44, + "lineCount": 2 + } + }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 15, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownLambdaType", + "range": { + "startColumn": 23, + "endColumn": 28, + "lineCount": 1 + } + }, + { + "code": "reportUnknownLambdaType", + "range": { + "startColumn": 30, + "endColumn": 48, + "lineCount": 2 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, + "startColumn": 20, "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 41, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 31, + "startColumn": 15, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownLambdaType", + "range": { + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, + { + "code": "reportUnknownLambdaType", + "range": { + "startColumn": 30, + "endColumn": 48, + "lineCount": 2 + } + }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 54, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportGeneralTypeIssues", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 23, - "lineCount": 4 + "startColumn": 20, + "endColumn": 47, + "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 41, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportImplicitOverride", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 14, + "startColumn": 40, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 17, + "startColumn": 40, "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 30, + "startColumn": 52, + "endColumn": 57, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 52, + "endColumn": 57, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 17, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 19, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 40, + "startColumn": 30, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 51, + "startColumn": 30, + "endColumn": 59, "lineCount": 1 } }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 69, + "lineCount": 4 + } + }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 13, + "startColumn": 16, + "endColumn": 56, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 21, "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportIncompatibleMethodOverride", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportImplicitOverride", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } - } - ], - "./boxtree/pyfmmlib_integration.py": [ + }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 45, + "startColumn": 36, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 48, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 48, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 8, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 19, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 30, - "endColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 30, - "endColumn": 34, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 18, - "lineCount": 1 + "startColumn": 15, + "endColumn": 69, + "lineCount": 4 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 17, + "startColumn": 16, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 21, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 17, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 29, + "startColumn": 32, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 38, - "endColumn": 56, + "startColumn": 32, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 38, - "endColumn": 56, + "startColumn": 45, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 45, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 34, + "startColumn": 11, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 12, - "lineCount": 1 + "startColumn": 19, + "endColumn": 21, + "lineCount": 3 } }, { "code": "reportUnknownMemberType", "range": { "startColumn": 15, - "endColumn": 24, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 15, - "endColumn": 34, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 55, + "startColumn": 53, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 57, - "endColumn": 61, - "lineCount": 1 + "startColumn": 23, + "endColumn": 25, + "lineCount": 5 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 63, - "endColumn": 67, + "startColumn": 28, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 26, + "startColumn": 35, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 23, - "endColumn": 26, - "lineCount": 1 + "endColumn": 25, + "lineCount": 4 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 34, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 28, - "endColumn": 34, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 42, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 16, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 19, + "startColumn": 17, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 19, + "startColumn": 17, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 17, - "endColumn": 27, + "startColumn": 16, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 24, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 18, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 33, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 30, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 26, - "endColumn": 30, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 38, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 79, + "startColumn": 16, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 24, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 34, - "lineCount": 1 + "startColumn": 15, + "endColumn": 25, + "lineCount": 4 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 31, - "lineCount": 1 + "startColumn": 24, + "endColumn": 13, + "lineCount": 4 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 45, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 46, + "startColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 38, - "endColumn": 46, + "startColumn": 8, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 48, - "endColumn": 52, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 52, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 54, - "endColumn": 64, + "startColumn": 15, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 12, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 15, - "endColumn": 31, - "lineCount": 1 + "endColumn": 25, + "lineCount": 4 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 36, - "lineCount": 1 + "startColumn": 24, + "endColumn": 13, + "lineCount": 4 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 19, + "startColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 23, + "startColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 8, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 15, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 26, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 44, - "lineCount": 1 + "startColumn": 15, + "endColumn": 25, + "lineCount": 4 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 23, - "lineCount": 1 + "startColumn": 24, + "endColumn": 13, + "lineCount": 4 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 12, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 26, + "startColumn": 8, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 23, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 30, + "endColumn": 48, "lineCount": 1 } }, @@ -21053,231 +22757,239 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 30, - "endColumn": 67, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportOptionalMemberAccess", "range": { - "startColumn": 30, - "endColumn": 82, + "startColumn": 49, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 15, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", "range": { - "startColumn": 21, + "startColumn": 12, "endColumn": 24, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 33, + "startColumn": 25, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 26, + "startColumn": 25, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 22, - "lineCount": 1 + "startColumn": 19, + "endColumn": 47, + "lineCount": 4 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 26, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 38, - "endColumn": 49, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 38, - "endColumn": 49, + "startColumn": 28, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 19, - "endColumn": 39, + "startColumn": 29, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 55, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 13, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 15, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 25, + "startColumn": 13, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 32, + "startColumn": 15, + "endColumn": 29, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 15, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 26, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 21, + "startColumn": 30, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 30, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 39, + "startColumn": 11, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 29, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 45, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 19, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 13, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 31, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 21, - "endColumn": 24, + "startColumn": 47, + "endColumn": 57, "lineCount": 1 } }, @@ -21285,214 +22997,214 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 19, - "endColumn": 26, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 13, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 19, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 22, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 22, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 15, - "endColumn": 31, + "startColumn": 38, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 22, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 22, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 38, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 11, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 25, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 32, + "startColumn": 29, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 26, + "startColumn": 29, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 21, + "startColumn": 49, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 49, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 65, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnusedVariable", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 24, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 35, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 39, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 24, + "startColumn": 28, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 29, + "startColumn": 28, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 33, + "startColumn": 28, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 26, + "startColumn": 48, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 48, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 64, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 35, + "startColumn": 38, "endColumn": 44, "lineCount": 1 } @@ -21500,7 +23212,7 @@ { "code": "reportMissingParameterType", "range": { - "startColumn": 35, + "startColumn": 38, "endColumn": 44, "lineCount": 1 } @@ -21508,400 +23220,408 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 23, + "startColumn": 46, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 23, + "startColumn": 46, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 48, + "startColumn": 60, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 48, + "startColumn": 60, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportRedeclaration", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 48, + "startColumn": 65, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 65, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 11, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 29, - "endColumn": 54, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 62, - "endColumn": 67, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 62, - "endColumn": 67, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 60, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 15, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 33, + "endColumn": 42, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 33, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 34, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 35, - "endColumn": 39, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 39, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 15, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 26, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 25, - "endColumn": 35, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 37, - "endColumn": 46, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 11, - "endColumn": 28, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownParameterType", "range": { - "startColumn": 17, - "endColumn": 30, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportMissingParameterType", "range": { - "startColumn": 17, - "endColumn": 30, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 30, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 30, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 46, + "startColumn": 17, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 29, - "endColumn": 46, + "startColumn": 33, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 25, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 24, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 29, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 11, - "endColumn": 25, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 44, + "startColumn": 12, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 44, - "endColumn": 58, + "startColumn": 30, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 63, + "startColumn": 44, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 25, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportOptionalCall", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, + "startColumn": 21, "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 35, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 59, - "endColumn": 71, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 59, - "endColumn": 71, + "startColumn": 48, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 19, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportAny", "range": { - "startColumn": 13, - "endColumn": 26, + "startColumn": 33, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 32, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 39, + "startColumn": 30, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 24, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 35, + "startColumn": 30, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 53, + "endColumn": 64, "lineCount": 1 } }, @@ -21909,6 +23629,14 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 16, + "endColumn": 19, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 21, "endColumn": 26, "lineCount": 1 } @@ -21916,224 +23644,224 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 49, + "startColumn": 31, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 31, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 27, + "startColumn": 31, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 45, + "startColumn": 57, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 45, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 12, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 12, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 55, - "endColumn": 73, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 21, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 55, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 55, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 15, - "endColumn": 21, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 36, + "startColumn": 31, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 48, + "startColumn": 34, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, + "startColumn": 34, "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 55, - "endColumn": 60, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 55, - "endColumn": 60, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 55, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 45, + "startColumn": 37, "endColumn": 55, "lineCount": 1 } }, { - "code": "reportOperatorIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 40, + "startColumn": 20, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 40, + "startColumn": 51, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 41, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 41, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 20, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 27, + "startColumn": 51, + "endColumn": 57, "lineCount": 1 } }, @@ -22141,334 +23869,326 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 31, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 34, + "startColumn": 28, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 39, - "endColumn": 52, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 39, - "endColumn": 52, + "startColumn": 28, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 49, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 51, + "startColumn": 32, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 21, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 44, - "lineCount": 2 + "startColumn": 29, + "endColumn": 47, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 44, + "startColumn": 24, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownLambdaType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownLambdaType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 48, - "lineCount": 2 + "startColumn": 27, + "endColumn": 35, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 40, + "startColumn": 45, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 20, - "endColumn": 47, + "startColumn": 61, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 47, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 44, + "startColumn": 24, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownLambdaType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 38, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownLambdaType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 48, - "lineCount": 2 + "startColumn": 24, + "endColumn": 30, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 40, - "lineCount": 1 + "startColumn": 38, + "endColumn": 70, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 47, + "startColumn": 67, + "endColumn": 83, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 15, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportIncompatibleMethodOverride", "range": { "startColumn": 8, - "endColumn": 33, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 33, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 33, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 57, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, + "startColumn": 12, "endColumn": 27, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 59, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 69, - "lineCount": 4 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 56, + "startColumn": 8, + "endColumn": 10, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 41, + "startColumn": 13, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 29, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 22, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 44, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 48, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 15, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 33, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, + "startColumn": 12, "endColumn": 17, "lineCount": 1 } @@ -22477,263 +24197,231 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 19, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportOptionalSubscript", - "range": { - "startColumn": 30, - "endColumn": 59, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 69, - "lineCount": 4 - } - }, - { - "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 56, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 41, + "startColumn": 29, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 25, + "startColumn": 52, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 32, - "endColumn": 43, + "startColumn": 19, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 32, - "endColumn": 43, + "startColumn": 37, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 51, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 51, + "startColumn": 30, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 26, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 21, - "lineCount": 3 + "startColumn": 30, + "endColumn": 52, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 41, + "startColumn": 53, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 41, + "startColumn": 16, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 25, - "lineCount": 5 + "startColumn": 25, + "endColumn": 33, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 43, + "startColumn": 32, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 50, + "startColumn": 32, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 25, - "lineCount": 4 + "startColumn": 16, + "endColumn": 30, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 49, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 12, + "endColumn": 55, "lineCount": 1 } }, - { - "code": "reportUnreachable", - "range": { - "startColumn": 8, - "endColumn": 73, - "lineCount": 2 - } - }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 33, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 25, - "lineCount": 4 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 58, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { "startColumn": 27, - "endColumn": 33, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, @@ -22741,84 +24429,84 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 27, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 48, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 68, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownVariableType", "range": { - "startColumn": 49, - "endColumn": 68, + "startColumn": 17, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, + "startColumn": 25, "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 25, - "endColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 47, - "lineCount": 4 + "startColumn": 20, + "endColumn": 25, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 45, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { "startColumn": 12, "endColumn": 17, @@ -22826,434 +24514,450 @@ } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 20, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 28, + "startColumn": 36, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 51, + "startColumn": 16, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 69, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 37, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportOptionalMemberAccess", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 56, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 29, + "startColumn": 27, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 54, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 16, + "endColumn": 21, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 29, + "startColumn": 24, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 15, - "endColumn": 47, + "startColumn": 40, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 20, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 55, + "startColumn": 51, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 45, - "endColumn": 55, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 29, + "startColumn": 37, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 57, + "startColumn": 20, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 40, + "startColumn": 37, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 22, - "endColumn": 43, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 22, - "endColumn": 43, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 43, + "startColumn": 32, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 22, - "endColumn": 43, + "startColumn": 40, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 11, - "endColumn": 33, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 21, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 49, - "endColumn": 70, + "startColumn": 12, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 70, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 65, - "endColumn": 70, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnusedVariable", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 40, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 69, + "startColumn": 15, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 69, + "startColumn": 33, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportAttributeAccessIssue", "range": { - "startColumn": 64, - "endColumn": 69, + "startColumn": 49, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 44, + "startColumn": 24, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, + "startColumn": 34, "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 12, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 46, - "endColumn": 58, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 60, - "endColumn": 63, + "startColumn": 15, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 60, - "endColumn": 63, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 65, - "endColumn": 69, + "startColumn": 20, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 65, - "endColumn": 69, + "startColumn": 34, + "endColumn": 54, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 55, + "endColumn": 77, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 33, + "startColumn": 26, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 26, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 42, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 26, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 59, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 20, + "endColumn": 31, + "lineCount": 21 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 28, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 26, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 28, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 54, + "startColumn": 26, + "endColumn": 33, "lineCount": 1 } }, @@ -23268,32 +24972,32 @@ { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 56, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 56, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 58, - "endColumn": 70, + "startColumn": 12, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 58, - "endColumn": 70, + "startColumn": 12, + "endColumn": 44, "lineCount": 1 } }, @@ -23301,7 +25005,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 27, + "endColumn": 22, "lineCount": 1 } }, @@ -23309,15 +25013,7 @@ "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 19, + "endColumn": 22, "lineCount": 1 } }, @@ -23333,7 +25029,7 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 17, - "endColumn": 44, + "endColumn": 54, "lineCount": 1 } }, @@ -23341,23 +25037,23 @@ "code": "reportAttributeAccessIssue", "range": { "startColumn": 33, - "endColumn": 44, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 24, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 41, + "endColumn": 73, "lineCount": 1 } }, @@ -23365,23 +25061,31 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 28, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 41, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 74, + "startColumn": 20, + "endColumn": 50, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 51, + "endColumn": 61, "lineCount": 1 } }, @@ -23404,80 +25108,48 @@ { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 25, - "endColumn": 47, + "startColumn": 26, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 19, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 33, - "endColumn": 45, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 30, + "endColumn": 70, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 48, + "startColumn": 29, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 52, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 30, - "endColumn": 52, + "startColumn": 19, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 53, - "endColumn": 64, + "startColumn": 37, + "endColumn": 53, "lineCount": 1 } }, @@ -23485,14 +25157,14 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 16, - "endColumn": 19, + "endColumn": 21, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 21, + "startColumn": 23, "endColumn": 26, "lineCount": 1 } @@ -23500,472 +25172,488 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 48, + "startColumn": 29, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 57, - "endColumn": 64, + "startColumn": 20, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 32, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 66, + "startColumn": 20, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 66, + "startColumn": 29, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 35, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 33, - "endColumn": 39, - "lineCount": 1 + "endColumn": 69, + "lineCount": 2 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 39, + "startColumn": 34, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 30, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 54, + "startColumn": 20, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 54, + "startColumn": 20, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 16, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 35, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 37, + "startColumn": 12, "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 50, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 57, + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 35, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 37, - "endColumn": 55, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { "startColumn": 20, - "endColumn": 50, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 57, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 48, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 28, - "endColumn": 48, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 20, + "startColumn": 17, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 33, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 45, - "endColumn": 71, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 61, - "endColumn": 71, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 37, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 56, + "startColumn": 26, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 24, - "endColumn": 30, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 70, - "lineCount": 2 + "startColumn": 19, + "endColumn": 28, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 67, - "endColumn": 83, + "startColumn": 19, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 21, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 19, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 8, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 63, + "startColumn": 47, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 63, + "startColumn": 25, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 51, + "startColumn": 23, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 12, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 10, + "startColumn": 30, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 52, + "startColumn": 20, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 52, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 22, - "endColumn": 30, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 56, + "startColumn": 21, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 47, + "startColumn": 12, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 48, - "endColumn": 56, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 72, - "lineCount": 29 + "endColumn": 25, + "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, + "startColumn": 26, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 21, "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 43, - "lineCount": 16 + "startColumn": 12, + "endColumn": 15, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 17, + "endColumn": 21, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 51, + "startColumn": 15, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 28, + "startColumn": 42, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 21, "lineCount": 1 } }, @@ -24005,7 +25693,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 18, + "endColumn": 22, "lineCount": 1 } }, @@ -24013,55 +25701,55 @@ "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 17, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 33, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 35, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 15, + "startColumn": 35, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 17, - "endColumn": 24, + "startColumn": 35, + "endColumn": 52, "lineCount": 1 } }, @@ -24069,15 +25757,15 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 18, + "endColumn": 17, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, @@ -24085,15 +25773,15 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 25, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 37, + "endColumn": 59, "lineCount": 1 } }, @@ -24101,375 +25789,399 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 20, - "endColumn": 59, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 59, + "startColumn": 47, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 34, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 37, - "endColumn": 55, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 74, + "startColumn": 20, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 56, - "endColumn": 74, + "startColumn": 47, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 27, - "endColumn": 45, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 54, - "endColumn": 59, + "startColumn": 28, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 63, + "startColumn": 28, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 40, - "endColumn": 63, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 16, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 55, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, + "startColumn": 29, "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 51, - "endColumn": 61, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 27, + "endColumn": 36, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 27, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 59, + "startColumn": 16, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 46, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 29, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 19, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 37, + "endColumn": 63, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 53, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 47, + "startColumn": 39, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 39, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 30, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 16, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 52, - "lineCount": 1 + "startColumn": 34, + "endColumn": 69, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 67, + "startColumn": 63, + "endColumn": 76, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 15, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 21, - "endColumn": 41, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 19, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 12, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 27, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 59, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportMissingParameterType", "range": { - "startColumn": 49, - "endColumn": 59, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 44, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 17, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 33, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 41, + "startColumn": 25, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 79, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 54, + "startColumn": 25, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 55, - "endColumn": 77, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 47, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 47, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 37, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 20, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 44, + "startColumn": 47, + "endColumn": 57, "lineCount": 1 } }, @@ -24477,327 +26189,329 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 31, - "lineCount": 21 + "startColumn": 21, + "endColumn": 41, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 46, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 33, + "startColumn": 29, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 52, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 40, + "startColumn": 19, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 40, + "startColumn": 37, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 74, + "startColumn": 16, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 74, + "startColumn": 25, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 31, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 31, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 14, - "lineCount": 1 + "startColumn": 29, + "endColumn": 65, + "lineCount": 2 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 54, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 54, + "startColumn": 26, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 16, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 73, + "startColumn": 44, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 53, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 37, - "endColumn": 55, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 20, - "endColumn": 50, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 61, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 41, + "startColumn": 11, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 26, - "endColumn": 34, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 70, + "startColumn": 49, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 51, + "startColumn": 13, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 29, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 62, - "lineCount": 21 + "startColumn": 51, + "endColumn": 59, + "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 28, + "startColumn": 13, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 20, - "endColumn": 50, - "lineCount": 10 + "startColumn": 29, + "endColumn": 39, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 51, + "startColumn": 58, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 49, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 65, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 55, + "startColumn": 27, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 11, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 43, - "endColumn": 49, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 49, + "startColumn": 24, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 15, + "endColumn": 39, "lineCount": 1 } - }, + } + ], + "./boxtree/rotation_classes.py": [ { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 13, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 58, - "endColumn": 73, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 58, - "endColumn": 73, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, @@ -24805,71 +26519,71 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 19, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 21, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 44, + "startColumn": 12, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 44, + "startColumn": 30, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 15, + "startColumn": 42, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 15, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 21, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 24, - "endColumn": 46, + "startColumn": 54, + "endColumn": 78, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 47, - "endColumn": 58, + "startColumn": 54, + "endColumn": 78, "lineCount": 1 } }, @@ -24877,191 +26591,191 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 21, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 31, + "startColumn": 52, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 28, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 30, - "endColumn": 52, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 46, + "startColumn": 30, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 16, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 32, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 41, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 26, + "startColumn": 30, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 15, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 44, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 21, - "endColumn": 24, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 15, + "code": "reportUnknownParameterType", + "range": { + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 17, - "endColumn": 21, + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 22, + "startColumn": 35, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 48, + "startColumn": 35, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 41, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 71, + "startColumn": 41, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 28, - "endColumn": 71, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 41, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 49, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 55, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 61, + "endColumn": 65, "lineCount": 1 } }, @@ -25069,1033 +26783,1049 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 14, + "endColumn": 9, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 56, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 56, + "startColumn": 8, + "endColumn": 9, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 31, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 31, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 59, + "startColumn": 16, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 46, + "startColumn": 46, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 49, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 19, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 59, + "startColumn": 8, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 46, + "startColumn": 33, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 26, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 48, + "startColumn": 51, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 48, + "startColumn": 15, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 24, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } - }, + } + ], + "./boxtree/tools.py": [ { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 63, + "startColumn": 4, + "endColumn": 7, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportCallIssue", "range": { - "startColumn": 53, - "endColumn": 63, - "lineCount": 1 + "startColumn": 10, + "endColumn": 43, + "lineCount": 3 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 38, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 30, - "endColumn": 48, + "startColumn": 46, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 27, + "startColumn": 52, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 69, - "lineCount": 2 + "startColumn": 28, + "endColumn": 42, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 63, - "endColumn": 76, + "startColumn": 36, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 11, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 4, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 52, + "startColumn": 24, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 26, - "endColumn": 52, + "startColumn": 24, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 54, - "endColumn": 66, + "startColumn": 30, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 54, - "endColumn": 66, + "startColumn": 30, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 68, - "endColumn": 78, + "startColumn": 39, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 68, - "endColumn": 78, + "startColumn": 39, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 57, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 17, - "endColumn": 54, + "startColumn": 57, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 54, + "startColumn": 26, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 4, + "endColumn": 10, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 23, + "startColumn": 13, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 13, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 59, + "startColumn": 40, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 46, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 4, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 4, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 21, - "endColumn": 41, + "startColumn": 7, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 24, + "startColumn": 13, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 51, + "startColumn": 43, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 52, - "endColumn": 60, + "startColumn": 59, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 62, - "lineCount": 14 + "startColumn": 59, + "endColumn": 72, + "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, + "startColumn": 18, "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 11, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 4, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 31, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 31, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 37, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 37, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 11, - "endColumn": 37, + "startColumn": 49, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 49, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 13, - "endColumn": 39, + "startColumn": 55, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 39, + "startColumn": 55, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 13, - "endColumn": 39, + "startColumn": 62, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 39, - "lineCount": 1 + "startColumn": 11, + "endColumn": 10, + "lineCount": 4 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 75, - "lineCount": 1 + "startColumn": 28, + "endColumn": 9, + "lineCount": 4 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 65, - "endColumn": 75, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 11, - "endColumn": 37, + "startColumn": 44, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 62, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnusedVariable", "range": { "startColumn": 12, - "endColumn": 21, + "endColumn": 13, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 38, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 39, + "startColumn": 4, + "endColumn": 31, "lineCount": 1 } - } - ], - "./boxtree/rotation_classes.py": [ + }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 72, - "endColumn": 79, + "startColumn": 38, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 15, + "startColumn": 38, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 50, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 50, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 56, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 17, + "startColumn": 56, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 17, + "startColumn": 63, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 20, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 20, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 17, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 20, + "startColumn": 40, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 19, - "endColumn": 20, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 32, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 27, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 14, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 31, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 42, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, - "endColumn": 41, + "startColumn": 55, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 21, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 32, + "startColumn": 18, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 32, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 15, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 32, - "endColumn": 42, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 42, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 44, - "endColumn": 68, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 44, - "endColumn": 68, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 38, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 55, + "startColumn": 43, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 74, + "startColumn": 19, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 30, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 55, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 65, + "startColumn": 14, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 38, + "startColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 50, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 55, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 32, + "startColumn": 18, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 37, + "startColumn": 32, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 15, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 44, + "startColumn": 32, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 25, + "startColumn": 4, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { "startColumn": 32, - "endColumn": 38, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 38, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 53, + "startColumn": 38, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 50, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 50, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 56, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 56, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 40, + "startColumn": 63, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 40, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 42, - "endColumn": 50, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 50, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 48, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 40, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 60, + "startColumn": 19, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 62, - "endColumn": 66, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, @@ -26103,201 +27833,207 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 9, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 27, + "startColumn": 14, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 9, + "startColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 35, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 45, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 46, - "endColumn": 47, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 49, - "endColumn": 50, + "startColumn": 18, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 34, + "startColumn": 32, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 39, - "endColumn": 44, + "startColumn": 15, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 50, + "startColumn": 32, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 76, + "startColumn": 16, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, + "startColumn": 23, "endColumn": 28, - "lineCount": 4 + "lineCount": 1 } - } - ], - "./boxtree/timing.py": [ + }, { - "code": "reportMissingTypeArgument", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 26, + "startColumn": 23, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 28, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 28, + "startColumn": 42, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", "range": { "startColumn": 32, - "endColumn": 38, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 32, - "endColumn": 38, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 21, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 21, + "startColumn": 14, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 44, + "startColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 29, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 29, + "startColumn": 18, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 28, + "startColumn": 32, + "endColumn": 33, "lineCount": 1 } }, @@ -26305,238 +28041,262 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 15, - "endColumn": 33, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 32, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 33, + "startColumn": 40, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 33, + "startColumn": 40, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 15, + "startColumn": 46, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 32, + "startColumn": 46, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 32, + "startColumn": 58, + "endColumn": 62, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", + "range": { + "startColumn": 58, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 64, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 64, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 71, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 18, + "startColumn": 4, "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 21, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 24, - "endColumn": 33, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 33, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 11, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 11, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 29, + "startColumn": 20, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 29, + "startColumn": 21, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 42, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 31, - "endColumn": 37, + "startColumn": 32, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 31, - "endColumn": 37, + "startColumn": 32, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", + "range": { + "startColumn": 35, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 35, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallInDefaultInitializer", "range": { - "startColumn": 8, - "endColumn": 40, + "startColumn": 50, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 47, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 26, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 23, + "startColumn": 26, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 37, + "startColumn": 23, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 43, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 23, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, + "startColumn": 38, "endColumn": 39, "lineCount": 1 } @@ -26544,112 +28304,104 @@ { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 28, - "endColumn": 48, + "startColumn": 45, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 40, + "startColumn": 52, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 22, + "startColumn": 52, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 52, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 51, + "startColumn": 52, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 52, - "endColumn": 65, + "endColumn": 68, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 21, + "startColumn": 23, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 29, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 29, + "startColumn": 51, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 50, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 50, + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 35, - "endColumn": 56, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 35, - "endColumn": 56, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, @@ -26657,7 +28409,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 27, - "endColumn": 35, + "endColumn": 33, "lineCount": 1 } }, @@ -26665,857 +28417,823 @@ "code": "reportMissingParameterType", "range": { "startColumn": 27, - "endColumn": 35, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 31, - "endColumn": 39, + "startColumn": 12, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 24, - "endColumn": 28, + "startColumn": 20, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 24, - "endColumn": 28, + "startColumn": 20, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 38, + "startColumn": 23, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 38, + "startColumn": 23, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 41, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 51, + "startColumn": 25, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 25, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 12, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 22, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", + "range": { + "startColumn": 27, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", "range": { "startColumn": 23, - "endColumn": 30, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 23, - "endColumn": 30, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 15, + "startColumn": 39, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 21, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 21, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 31, + "startColumn": 24, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 31, + "startColumn": 24, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 31, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 17, + "startColumn": 31, "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportCallInDefaultInitializer", "range": { - "startColumn": 15, - "endColumn": 31, + "startColumn": 46, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 15, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 40, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 49, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 22, + "startColumn": 23, + "endColumn": 31, "lineCount": 1 } - } - ], - "./boxtree/tools.py": [ + }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 7, + "startColumn": 23, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 10, - "endColumn": 61, - "lineCount": 2 + "startColumn": 23, + "endColumn": 65, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 45, + "startColumn": 23, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 47, - "endColumn": 55, + "startColumn": 26, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportOperatorIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 60, + "startColumn": 23, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 11, - "endColumn": 23, + "startColumn": 38, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 24, - "endColumn": 31, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 31, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 44, + "startColumn": 26, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 44, + "startColumn": 26, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 68, + "startColumn": 33, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 68, + "startColumn": 33, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 50, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 50, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 9, + "startColumn": 20, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 21, - "endColumn": 34, + "startColumn": 20, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 33, + "startColumn": 38, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 28, - "endColumn": 33, + "startColumn": 38, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 35, - "endColumn": 46, + "startColumn": 56, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 48, - "endColumn": 61, + "startColumn": 56, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 61, + "startColumn": 26, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 37, + "startColumn": 26, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 22, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 34, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 47, + "startColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 69, + "startColumn": 14, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 43, + "startColumn": 22, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 25, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 36, + "startColumn": 29, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 36, + "startColumn": 27, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 48, + "startColumn": 27, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 48, + "startColumn": 68, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 50, - "endColumn": 54, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 50, - "endColumn": 54, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 56, - "endColumn": 61, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 56, - "endColumn": 61, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 63, - "endColumn": 67, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 26, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 24, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 26, - "endColumn": 36, + "startColumn": 29, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 44, - "endColumn": 49, + "startColumn": 40, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnusedVariable", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 13, + "startColumn": 40, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 45, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 31, + "startColumn": 45, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 17, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 17, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 35, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 35, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 55, + "startColumn": 52, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 55, + "startColumn": 52, + "endColumn": 61, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 57, - "endColumn": 62, + "startColumn": 17, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 57, - "endColumn": 62, + "startColumn": 17, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 64, - "endColumn": 68, + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 44, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 32, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 45, + "startColumn": 30, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 31, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 31, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 45, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 45, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 14, - "endColumn": 20, + "startColumn": 79, + "endColumn": 82, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 30, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 31, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 31, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 45, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 33, + "startColumn": 45, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 39, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 38, + "startColumn": 17, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 17, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 42, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 17, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 32, + "startColumn": 34, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 48, + "startColumn": 34, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 34, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 34, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, @@ -27530,152 +29248,136 @@ { "code": "reportUnknownVariableType", "range": { - "startColumn": 14, - "endColumn": 20, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 22, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 34, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 33, + "startColumn": 34, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 39, + "startColumn": 52, + "endColumn": 57, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 38, + "startColumn": 68, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 31, + "startColumn": 15, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 26, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 55, + "startColumn": 37, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 57, - "endColumn": 62, + "startColumn": 37, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 57, - "endColumn": 62, + "startColumn": 8, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 64, - "endColumn": 68, + "startColumn": 15, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, @@ -27683,7 +29385,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 23, - "endColumn": 28, + "endColumn": 33, "lineCount": 1 } }, @@ -27691,103 +29393,103 @@ "code": "reportMissingParameterType", "range": { "startColumn": 23, - "endColumn": 28, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 32, + "startColumn": 35, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 45, + "startColumn": 35, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 40, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 40, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 12, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 8, - "endColumn": 12, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 14, - "endColumn": 20, + "startColumn": 17, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 34, - "endColumn": 39, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 34, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 45, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 45, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 32, - "endColumn": 33, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, @@ -27795,23 +29497,15 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 15, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 32, - "endColumn": 38, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportDuplicateImport", "range": { - "startColumn": 16, - "endColumn": 33, + "startColumn": 26, + "endColumn": 34, "lineCount": 1 } }, @@ -27819,7 +29513,7 @@ "code": "reportUnknownParameterType", "range": { "startColumn": 23, - "endColumn": 28, + "endColumn": 37, "lineCount": 1 } }, @@ -27827,383 +29521,367 @@ "code": "reportMissingParameterType", "range": { "startColumn": 23, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 32, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIncompatibleMethodOverride", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 15, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 45, + "startColumn": 47, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 14, - "endColumn": 20, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 41, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 46, + "startColumn": 53, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 53, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 25, + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 33, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 15, - "endColumn": 39, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 38, + "startColumn": 43, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 45, + "startColumn": 55, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 45, + "startColumn": 55, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 59, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 59, - "endColumn": 63, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 65, - "endColumn": 70, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 65, - "endColumn": 70, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 72, - "endColumn": 76, + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 26, + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 35, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 35, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 11, - "endColumn": 59, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 59, + "startColumn": 25, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 45, + "startColumn": 15, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 21, - "endColumn": 26, + "startColumn": 15, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 34, + "startColumn": 18, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 33, + "startColumn": 50, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 33, + "startColumn": 50, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 49, + "startColumn": 62, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 35, - "endColumn": 49, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportCallInDefaultInitializer", + "code": "reportUnknownMemberType", "range": { - "startColumn": 50, - "endColumn": 61, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 25, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 29, + "startColumn": 42, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 29, + "startColumn": 42, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 50, + "startColumn": 57, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 44, + "startColumn": 57, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 54, + "startColumn": 19, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 39, + "startColumn": 20, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 46, + "startColumn": 17, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 68, + "startColumn": 17, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 52, - "endColumn": 68, + "startColumn": 18, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 52, - "endColumn": 68, + "endColumn": 62, "lineCount": 1 } }, @@ -28211,135 +29889,143 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 52, - "endColumn": 68, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 68, + "startColumn": 64, + "endColumn": 74, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, + "startColumn": 12, + "endColumn": 16, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 19, "endColumn": 29, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 20, + "startColumn": 19, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 51, - "endColumn": 55, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 24, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 42, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 42, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 57, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 57, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 19, + "startColumn": 30, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 24, + "startColumn": 30, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 24, + "startColumn": 55, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 24, + "startColumn": 55, + "endColumn": 78, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 35, + "startColumn": 30, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 30, + "endColumn": 39, "lineCount": 1 } }, @@ -28347,1191 +30033,1219 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 19, - "endColumn": 50, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 37, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 26, + "startColumn": 36, + "endColumn": 41, "lineCount": 1 } - }, + } + ], + "./boxtree/translation_classes.py": [ { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 12, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 23, + "startColumn": 12, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 41, + "startColumn": 19, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 8, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportReturnType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 15, + "endColumn": 77, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 26, - "endColumn": 31, + "startColumn": 52, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 22, + "startColumn": 15, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportOperatorIssue", "range": { "startColumn": 15, - "endColumn": 37, - "lineCount": 1 + "endColumn": 73, + "lineCount": 2 } }, { - "code": "reportUnknownParameterType", + "code": "reportOperatorIssue", "range": { - "startColumn": 24, - "endColumn": 29, - "lineCount": 1 + "startColumn": 20, + "endColumn": 73, + "lineCount": 2 } }, { - "code": "reportMissingParameterType", + "code": "reportOperatorIssue", "range": { "startColumn": 24, - "endColumn": 29, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportOperatorIssue", "range": { - "startColumn": 31, - "endColumn": 45, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 45, + "startColumn": 12, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportCallInDefaultInitializer", + "code": "reportUnknownParameterType", "range": { - "startColumn": 46, - "endColumn": 57, + "startColumn": 8, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 38, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 38, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 37, + "startColumn": 44, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 44, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 12, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 15, - "endColumn": 37, + "startColumn": 12, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 35, - "endColumn": 40, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 40, + "startColumn": 29, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 56, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 42, - "endColumn": 56, + "startColumn": 21, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportCallInDefaultInitializer", + "code": "reportUnknownVariableType", "range": { - "startColumn": 57, - "endColumn": 68, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 33, + "startColumn": 22, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 38, + "startColumn": 19, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 38, + "startColumn": 16, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 28, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 48, + "startColumn": 48, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 48, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 27, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 37, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 31, + "startColumn": 38, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 31, + "startColumn": 51, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 48, + "startColumn": 52, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 48, + "startColumn": 72, + "endColumn": 82, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 50, - "endColumn": 65, + "startColumn": 12, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 50, - "endColumn": 65, + "startColumn": 58, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 36, + "startColumn": 16, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 36, + "startColumn": 16, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 54, + "startColumn": 50, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 38, - "endColumn": 54, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 66, + "startColumn": 14, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 23, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 66, + "startColumn": 16, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 31, + "startColumn": 16, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 31, + "startColumn": 16, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 49, + "startColumn": 16, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 49, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 14, - "endColumn": 35, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 27, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 27, - "endColumn": 42, + "startColumn": 15, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 40, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 45, + "startColumn": 12, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 27, - "endColumn": 43, + "startColumn": 12, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 37, + "startColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 68, - "endColumn": 73, + "startColumn": 18, + "endColumn": 22, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 24, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 24, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 39, + "startColumn": 39, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 39, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 12, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 50, + "startColumn": 51, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 55, + "startColumn": 57, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 52, - "endColumn": 55, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 57, - "endColumn": 68, + "startColumn": 29, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 57, - "endColumn": 68, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 28, + "startColumn": 21, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 17, - "endColumn": 28, + "startColumn": 29, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 35, - "endColumn": 45, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 35, - "endColumn": 45, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 61, + "startColumn": 48, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 17, - "endColumn": 25, + "startColumn": 68, + "endColumn": 78, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 25, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 18, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 21, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 44, - "endColumn": 49, + "startColumn": 15, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 28, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 50, + "startColumn": 48, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 31, - "endColumn": 43, + "startColumn": 60, + "endColumn": 77, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 60, + "startColumn": 48, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 62, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 44, - "endColumn": 55, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportAny", "range": { - "startColumn": 57, - "endColumn": 60, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } - }, + } + ], + "./boxtree/traversal.py": [ { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownParameterType", "range": { - "startColumn": 57, - "endColumn": 60, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportMissingParameterType", "range": { - "startColumn": 57, - "endColumn": 60, + "startColumn": 52, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 70, - "endColumn": 73, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 30, - "endColumn": 50, + "startColumn": 13, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 31, - "endColumn": 43, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 60, + "startColumn": 15, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 62, + "startColumn": 15, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 44, - "endColumn": 55, + "startColumn": 15, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportAttributeAccessIssue", "range": { - "startColumn": 57, - "endColumn": 60, + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportAny", "range": { - "startColumn": 57, - "endColumn": 60, + "startColumn": 8, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownParameterType", "range": { - "startColumn": 57, - "endColumn": 60, + "startColumn": 37, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 34, + "startColumn": 37, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 34, + "startColumn": 45, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 45, + "startColumn": 45, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 36, - "endColumn": 45, - "lineCount": 1 + "startColumn": 15, + "endColumn": 18, + "lineCount": 9 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 16, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 33, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 68, - "endColumn": 77, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 68, - "endColumn": 77, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 17, - "endColumn": 33, + "startColumn": 23, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 29, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 29, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 51, + "startColumn": 43, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 51, + "startColumn": 43, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 56, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 56, + "endColumn": 73, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 12, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 12, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 22, - "endColumn": 26, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 52, + "startColumn": 46, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 63, - "endColumn": 71, + "startColumn": 46, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 12, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 20, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 35, + "startColumn": 33, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 26, - "endColumn": 35, + "startColumn": 33, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, - "endColumn": 46, + "startColumn": 28, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, - "endColumn": 46, + "startColumn": 46, + "endColumn": 75, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 38, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 15, - "endColumn": 63, + "startColumn": 12, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 20, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 26, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 69, + "endColumn": 75, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 59, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 35, - "endColumn": 38, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 38, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 43, + "startColumn": 51, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 43, + "startColumn": 51, + "endColumn": 68, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 21, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 33, + "startColumn": 21, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 54, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 19, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 40, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 54, + "startColumn": 21, + "endColumn": 33, "lineCount": 1 } }, @@ -29544,892 +31258,874 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 23, + "startColumn": 14, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportDuplicateImport", + "code": "reportUnknownMemberType", "range": { "startColumn": 26, - "endColumn": 34, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 37, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 37, + "startColumn": 21, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 24, + "startColumn": 37, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportIncompatibleMethodOverride", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 15, + "endColumn": 17, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 44, + "startColumn": 20, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 63, + "startColumn": 20, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 38, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 38, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 70, + "endColumn": 87, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 41, - "endColumn": 51, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 41, - "endColumn": 51, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 63, + "startColumn": 14, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 63, + "startColumn": 26, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 28, + "startColumn": 15, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 40, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 41, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 15, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 43, - "endColumn": 53, + "startColumn": 15, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 55, - "endColumn": 65, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 55, - "endColumn": 65, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 28, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 40, + "startColumn": 15, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 41, + "startColumn": 15, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 38, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 34, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 40, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 40, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 46, + "startColumn": 40, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 25, - "endColumn": 35, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 25, + "startColumn": 20, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 49, + "startColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 20, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 50, - "endColumn": 60, + "startColumn": 20, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 45, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 44, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 8, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 37, - "endColumn": 47, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 37, - "endColumn": 50, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 61, + "startColumn": 33, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 52, - "endColumn": 61, + "startColumn": 33, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 48, + "startColumn": 8, + "endColumn": 14, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 42, + "startColumn": 8, + "endColumn": 13, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 17, - "endColumn": 27, + "startColumn": 8, + "endColumn": 13, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 17, - "endColumn": 27, + "startColumn": 15, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 18, - "endColumn": 51, + "startColumn": 15, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUninitializedInstanceVariable", "range": { - "startColumn": 52, - "endColumn": 62, + "startColumn": 4, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportRedeclaration", "range": { - "startColumn": 52, - "endColumn": 62, + "startColumn": 4, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 64, - "endColumn": 74, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportPrivateLocalImportUsage", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 34, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 29, - "lineCount": 1 + "startColumn": 14, + "endColumn": 45, + "lineCount": 4 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 19, - "endColumn": 38, + "startColumn": 41, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 38, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 35, - "lineCount": 1 + "startColumn": 18, + "endColumn": 49, + "lineCount": 5 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 37, - "endColumn": 47, + "startColumn": 49, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, - "endColumn": 50, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 62, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 65, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 53, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 55, - "endColumn": 67, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 55, - "endColumn": 78, + "startColumn": 29, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 39, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 39, + "startColumn": 16, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 73, + "startColumn": 16, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 43, + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 67, + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 15, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 11, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 38, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportArgumentType", "range": { "startColumn": 30, - "endColumn": 35, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 18, + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 24, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", - "range": { - "startColumn": 13, - "endColumn": 18, + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 32, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 23, + "startColumn": 27, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 25, + "startColumn": 42, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 29, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 29, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 28, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 28, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 32, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 32, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 36, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 38, + "startColumn": 36, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 83, + "startColumn": 36, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 51, + "startColumn": 36, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 52, - "endColumn": 62, + "startColumn": 28, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 62, + "startColumn": 28, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 51, - "endColumn": 61, + "startColumn": 30, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 51, - "endColumn": 61, + "startColumn": 30, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 63, - "endColumn": 78, + "startColumn": 25, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 47, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 37, + "startColumn": 30, "endColumn": 47, "lineCount": 1 } - } - ], - "./boxtree/translation_classes.py": [ + }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 32, + "startColumn": 30, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 36, - "endColumn": 42, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 42, + "startColumn": 24, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 24, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 33, + "startColumn": 37, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 22, + "startColumn": 37, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 54, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, + "startColumn": 8, "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 27, + "startColumn": 30, + "endColumn": 65, "lineCount": 1 } }, @@ -30437,222 +32133,230 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 17, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 30, + "startColumn": 23, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 44, - "endColumn": 58, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 40, - "endColumn": 49, + "endColumn": 85, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 73, + "startColumn": 27, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 53, - "endColumn": 83, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 76, - "endColumn": 82, + "startColumn": 12, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 40, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 40, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 42, - "endColumn": 60, + "startColumn": 50, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 42, - "endColumn": 60, + "startColumn": 50, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 23, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 24, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 41, - "lineCount": 1 + "startColumn": 21, + "endColumn": 52, + "lineCount": 2 } }, { - "code": "reportMissingParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 26, - "endColumn": 41, + "startColumn": 16, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 54, + "startColumn": 29, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 54, + "startColumn": 29, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 56, - "endColumn": 83, + "startColumn": 48, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 56, - "endColumn": 83, + "startColumn": 57, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 46, - "endColumn": 57, + "startColumn": 20, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 59, - "endColumn": 69, + "startColumn": 20, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 70, - "endColumn": 80, + "startColumn": 20, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 20, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 47, + "startColumn": 20, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 66, + "startColumn": 39, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 68, - "endColumn": 78, + "startColumn": 47, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 68, + "startColumn": 35, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, + "startColumn": 29, "endColumn": 37, "lineCount": 1 } @@ -30660,304 +32364,320 @@ { "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 32, + "startColumn": 31, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 38, + "startColumn": 28, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 39, - "endColumn": 57, + "startColumn": 24, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 39, - "endColumn": 57, + "startColumn": 24, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 59, - "endColumn": 69, + "startColumn": 24, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 59, - "endColumn": 69, + "startColumn": 24, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 15, - "endColumn": 57, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 71, + "startColumn": 28, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, - "endColumn": 71, + "startColumn": 28, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 22, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 61, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 62, - "endColumn": 80, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 62, + "startColumn": 57, "endColumn": 72, "lineCount": 1 } }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 35, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 36, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 15, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 8, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 49, - "endColumn": 53, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 53, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 59, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 59, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 69, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 61, - "endColumn": 69, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 36, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 36, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 52, + "startColumn": 16, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 36, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 19, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 38, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 19, - "endColumn": 39, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, @@ -30965,31 +32685,31 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 16, - "endColumn": 26, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 28, - "endColumn": 46, + "startColumn": 8, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 65, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 48, - "endColumn": 65, + "startColumn": 32, + "endColumn": 61, "lineCount": 1 } }, @@ -30997,151 +32717,143 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 36, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 36, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 49, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 51, - "endColumn": 75, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 28, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 51, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 52, - "endColumn": 70, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 72, - "endColumn": 82, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 32, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 58, - "endColumn": 70, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 55, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 55, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 43, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 16, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 44, + "startColumn": 47, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 45, + "startColumn": 47, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 50, + "startColumn": 47, + "endColumn": 71, "lineCount": 1 } }, @@ -31149,15 +32861,15 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 51, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 16, - "endColumn": 32, + "endColumn": 52, "lineCount": 1 } }, @@ -31165,598 +32877,612 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 16, - "endColumn": 35, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 16, - "endColumn": 32, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 22, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 50, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, + "startColumn": 8, "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 36, - "endColumn": 40, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 40, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 42, - "endColumn": 50, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 42, - "endColumn": 50, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 41, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 50, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 52, - "endColumn": 56, + "startColumn": 37, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 58, - "endColumn": 62, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, + "startColumn": 16, "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 16, + "endColumn": 51, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 36, + "startColumn": 19, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 73, + "startColumn": 19, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 35, + "startColumn": 19, "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 51, + "startColumn": 19, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 19, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 47, + "startColumn": 21, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 66, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 68, - "endColumn": 78, - "lineCount": 1 + "startColumn": 26, + "endColumn": 38, + "lineCount": 4 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 15, + "startColumn": 12, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 18, - "endColumn": 30, + "startColumn": 16, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 30, + "startColumn": 12, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 45, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 29, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 60, + "endColumn": 84, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 26, + "startColumn": 45, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 26, - "endColumn": 69, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 46, + "startColumn": 26, + "endColumn": 38, + "lineCount": 5 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 12, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 58, + "startColumn": 44, + "endColumn": 83, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 60, - "endColumn": 77, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 64, + "startColumn": 43, + "endColumn": 81, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 39, + "startColumn": 12, "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 39, - "endColumn": 44, + "startColumn": 45, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 16, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 28, - "lineCount": 7 + "startColumn": 32, + "endColumn": 61, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 30, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } - } - ], - "./boxtree/traversal.py": [ + }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 33, + "startColumn": 16, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 39, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 44, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 44, + "startColumn": 57, + "endColumn": 72, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 25, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 30, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { "startColumn": 37, - "endColumn": 43, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 37, - "endColumn": 43, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 62, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 18, - "lineCount": 9 + "startColumn": 16, + "endColumn": 37, + "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { "startColumn": 16, - "endColumn": 28, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 39, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 16, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 44, - "endColumn": 55, + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 16, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 55, + "startColumn": 16, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 57, - "endColumn": 74, + "startColumn": 16, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 57, - "endColumn": 74, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 30, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 47, + "endColumn": 85, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 44, + "startColumn": 12, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 44, + "startColumn": 46, + "endColumn": 83, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 75, + "startColumn": 44, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 46, - "endColumn": 75, + "startColumn": 44, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 12, "endColumn": 18, @@ -31764,2412 +33490,2438 @@ } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 20, - "endColumn": 25, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 41, + "startColumn": 20, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 41, + "startColumn": 20, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 40, + "startColumn": 20, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 46, - "endColumn": 75, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 38, - "endColumn": 57, + "startColumn": 12, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 49, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 63, - "endColumn": 69, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { - "startColumn": 26, - "endColumn": 31, - "lineCount": 1 + "startColumn": 43, + "endColumn": 47, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { "startColumn": 20, - "endColumn": 32, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { - "startColumn": 40, - "endColumn": 45, - "lineCount": 1 + "startColumn": 43, + "endColumn": 47, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { "startColumn": 20, - "endColumn": 25, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { - "startColumn": 36, - "endColumn": 41, + "startColumn": 50, + "endColumn": 54, + "lineCount": 2 + } + }, + { + "code": "reportArgumentType", + "range": { + "startColumn": 20, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { "startColumn": 60, - "endColumn": 77, - "lineCount": 1 + "endColumn": 64, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 19, - "endColumn": 31, + "startColumn": 20, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 51, - "lineCount": 1 + "startColumn": 53, + "endColumn": 57, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 33, - "lineCount": 1 + "startColumn": 52, + "endColumn": 56, + "lineCount": 2 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 45, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 14, - "endColumn": 41, + "startColumn": 44, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 41, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 36, + "startColumn": 40, + "endColumn": 63, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 20, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 20, - "endColumn": 38, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 40, + "startColumn": 39, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 33, + "startColumn": 38, + "endColumn": 59, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } - }, + } + ], + "./boxtree/tree.py": [ { - "code": "reportUnknownMemberType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 14, - "endColumn": 41, + "startColumn": 4, + "endColumn": 10, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 15, - "endColumn": 62, + "startColumn": 4, + "endColumn": 9, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 4, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 4, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 39, - "endColumn": 44, + "startColumn": 4, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 34, - "endColumn": 47, + "startColumn": 4, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 34, - "endColumn": 47, + "startColumn": 4, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 4, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 4, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 20, - "endColumn": 25, + "startColumn": 4, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 15, - "endColumn": 24, + "startColumn": 4, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 72, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 62, - "endColumn": 72, + "startColumn": 15, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 44, - "endColumn": 70, + "startColumn": 19, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownParameterType", "range": { - "startColumn": 60, - "endColumn": 70, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 20, + "endColumn": 13, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportCallIssue", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 26, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 38, + "startColumn": 15, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportOperatorIssue", "range": { - "startColumn": 33, - "endColumn": 38, + "startColumn": 21, + "endColumn": 64, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportReturnType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 15, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 31, - "endColumn": 45, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 43, + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 29, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 19, + "startColumn": 19, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 32, + "startColumn": 37, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportPrivateLocalImportUsage", + "code": "reportUntypedBaseClass", "range": { - "startColumn": 34, - "endColumn": 43, + "startColumn": 11, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportGeneralTypeIssues", "range": { - "startColumn": 14, - "endColumn": 45, - "lineCount": 4 + "startColumn": 8, + "endColumn": 18, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportGeneralTypeIssues", "range": { - "startColumn": 18, - "endColumn": 49, - "lineCount": 5 + "startColumn": 8, + "endColumn": 14, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 49, - "endColumn": 69, + "startColumn": 19, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 19, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportGeneralTypeIssues", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 19, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 19, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 21, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 21, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 35, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 33, + "startColumn": 28, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 16, - "endColumn": 33, + "startColumn": 8, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 40, + "startColumn": 18, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 40, + "startColumn": 18, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 22, - "endColumn": 23, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 22, - "endColumn": 23, + "startColumn": 19, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 25, - "endColumn": 26, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 21, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 15, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 54, + "startColumn": 36, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 36, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 49, - "endColumn": 59, + "startColumn": 41, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 41, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 65, + "startColumn": 26, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 40, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 51, + "startColumn": 40, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 37, + "startColumn": 36, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 85, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 48, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 27, + "startColumn": 43, "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 43, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 39, + "startColumn": 26, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 40, - "endColumn": 48, + "startColumn": 43, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 48, + "startColumn": 43, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 50, - "endColumn": 58, + "startColumn": 37, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 50, - "endColumn": 58, + "startColumn": 37, + "endColumn": 44, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 31, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 46, + "startColumn": 28, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 28, + "startColumn": 37, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 47, + "startColumn": 37, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 50, + "startColumn": 8, + "endColumn": 12, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 37, + "startColumn": 28, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUntypedBaseClass", "range": { - "startColumn": 31, - "endColumn": 41, + "startColumn": 33, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 28, - "endColumn": 40, + "startColumn": 4, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 24, - "endColumn": 36, + "startColumn": 28, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 43, + "startColumn": 11, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 36, + "startColumn": 43, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 53, + "startColumn": 43, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 27, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 37, + "startColumn": 27, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 39, + "startColumn": 12, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 27, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 27, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 28, + "startColumn": 4, + "endColumn": 7, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 29, + "startColumn": 23, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 56, + "startColumn": 30, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 29, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 37, + "endColumn": 50, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 45, + "startColumn": 32, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 58, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 58, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 51, + "startColumn": 4, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 51, + "startColumn": 26, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 25, + "startColumn": 4, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 34, + "startColumn": 25, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 39, + "startColumn": 25, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 25, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 4, + "endColumn": 13, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 51, + "startColumn": 9, + "endColumn": 13, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 4, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 26, - "endColumn": 38, - "lineCount": 4 + "startColumn": 25, + "endColumn": 55, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 26, - "endColumn": 38, - "lineCount": 4 + "startColumn": 4, + "endColumn": 7, + "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 36, + "startColumn": 23, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 59, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 30, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 45, - "endColumn": 71, + "startColumn": 22, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 59, + "startColumn": 40, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 60, - "endColumn": 84, + "startColumn": 23, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 23, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 45, - "endColumn": 48, + "startColumn": 4, + "endColumn": 7, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 30, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 38, - "lineCount": 5 + "startColumn": 25, + "endColumn": 42, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 38, - "lineCount": 5 + "startColumn": 44, + "endColumn": 55, + "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 41, + "startColumn": 44, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 83, + "startColumn": 57, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 40, + "startColumn": 57, + "endColumn": 79, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 81, + "startColumn": 50, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 50, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 48, + "startColumn": 63, + "endColumn": 85, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 63, + "endColumn": 85, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 56, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 39, - "endColumn": 68, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 12, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 52, + "startColumn": 36, + "endColumn": 67, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 51, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 51, + "startColumn": 24, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 24, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 44, + "startColumn": 20, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 85, + "startColumn": 41, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 43, + "startColumn": 4, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 46, - "endColumn": 83, + "startColumn": 11, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 23, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 20, - "endColumn": 32, + "startColumn": 59, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 20, - "endColumn": 49, + "startColumn": 59, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownParameterType", "range": { "startColumn": 12, - "endColumn": 40, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 39, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { "startColumn": 12, - "endColumn": 29, + "endColumn": 50, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 68, - "lineCount": 1 + "startColumn": 52, + "endColumn": 46, + "lineCount": 18 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 28, + "startColumn": 34, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 66, + "startColumn": 30, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 28, - "lineCount": 44 + "startColumn": 30, + "endColumn": 47, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, - "endColumn": 57, - "lineCount": 2 + "startColumn": 30, + "endColumn": 47, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 52, - "endColumn": 56, - "lineCount": 2 + "startColumn": 8, + "endColumn": 41, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 73, + "startColumn": 48, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 44, - "endColumn": 71, + "startColumn": 48, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 65, + "startColumn": 54, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 63, + "startColumn": 54, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 61, + "startColumn": 60, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 38, - "endColumn": 59, + "startColumn": 60, + "endColumn": 65, "lineCount": 1 } - } - ], - "./boxtree/tree.py": [ + }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 10, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 9, + "startColumn": 8, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 18, + "startColumn": 26, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 17, + "startColumn": 26, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 17, + "startColumn": 40, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 27, + "startColumn": 55, + "endColumn": 77, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 26, + "startColumn": 55, + "endColumn": 83, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 26, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 36, + "startColumn": 50, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 15, + "startColumn": 26, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 16, + "startColumn": 26, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 47, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 40, + "startColumn": 47, + "endColumn": 68, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 14, + "startColumn": 17, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 40, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 22, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 43, + "startColumn": 40, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 47, + "startColumn": 40, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 49, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 43, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 18, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 13, + "startColumn": 42, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 37, + "startColumn": 42, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 37, + "startColumn": 16, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 70, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportOptionalOperand", + "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 35, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 27, - "endColumn": 31, + "startColumn": 16, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 33, + "startColumn": 16, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 29, - "endColumn": 33, + "startColumn": 8, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 36, + "startColumn": 34, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 41, + "startColumn": 30, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 33, + "startColumn": 29, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 43, + "startColumn": 15, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 21, - "endColumn": 27, + "startColumn": 15, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 21, - "endColumn": 27, + "startColumn": 60, + "endColumn": 77, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 25, + "startColumn": 60, + "endColumn": 77, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 28, - "endColumn": 34, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportAny", "range": { "startColumn": 8, - "endColumn": 22, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 39, + "startColumn": 8, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 36, - "endColumn": 39, + "startColumn": 48, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 36, - "endColumn": 39, + "startColumn": 48, + "endColumn": 52, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 54, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 41, - "endColumn": 53, + "startColumn": 54, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 38, + "startColumn": 60, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 40, - "endColumn": 49, + "startColumn": 60, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 40, - "endColumn": 49, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 39, + "startColumn": 27, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 27, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 57, + "startColumn": 41, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 55, + "startColumn": 25, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 43, - "endColumn": 55, + "startColumn": 8, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 26, - "endColumn": 52, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 55, + "startColumn": 50, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 43, - "endColumn": 55, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 44, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 37, - "endColumn": 44, + "startColumn": 8, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 44, + "startColumn": 50, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 37, - "endColumn": 44, + "startColumn": 50, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 29, + "startColumn": 31, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 24, - "endColumn": 29, + "startColumn": 8, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 45, + "startColumn": 28, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 45, + "startColumn": 28, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportCallInDefaultInitializer", + "code": "reportUnknownMemberType", "range": { - "startColumn": 46, - "endColumn": 57, + "startColumn": 45, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 8, - "endColumn": 22, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 29, - "endColumn": 43, + "startColumn": 18, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 30, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 32, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, + "startColumn": 16, "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 50, - "endColumn": 64, + "startColumn": 22, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 28, + "startColumn": 32, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 35, - "endColumn": 40, + "startColumn": 32, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 40, + "startColumn": 32, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 56, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 56, - "lineCount": 1 + "startColumn": 44, + "endColumn": 13, + "lineCount": 4 } }, { - "code": "reportCallInDefaultInitializer", + "code": "reportUnknownMemberType", "range": { - "startColumn": 57, - "endColumn": 68, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 22, + "startColumn": 16, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 29, - "endColumn": 43, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 8, - "endColumn": 26, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 43, + "startColumn": 37, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 37, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 43, + "startColumn": 56, + "endColumn": 78, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 8, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 28, + "startColumn": 16, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, + "startColumn": 16, "endColumn": 34, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 35, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 55, + "startColumn": 16, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 55, + "startColumn": 16, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 57, - "endColumn": 70, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 57, - "endColumn": 70, + "startColumn": 22, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { "startColumn": 8, - "endColumn": 13, + "endColumn": 20, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 35, + "startColumn": 15, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 40, - "endColumn": 45, + "startColumn": 15, + "endColumn": 40, + "lineCount": 1 + } + } + ], + "./boxtree/tree_build.py": [ + { + "code": "reportMissingImports", + "range": { + "startColumn": 9, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 51, - "endColumn": 73, + "startColumn": 34, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 51, - "endColumn": 73, + "startColumn": 4, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 4, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 19, - "endColumn": 32, + "startColumn": 4, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 19, - "endColumn": 32, + "startColumn": 13, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 34, - "endColumn": 56, + "startColumn": 13, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnannotatedClassAttribute", "range": { - "startColumn": 34, - "endColumn": 56, + "startColumn": 13, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 19, - "endColumn": 32, + "startColumn": 30, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 32, + "startColumn": 42, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 34, - "endColumn": 56, + "startColumn": 42, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 34, - "endColumn": 56, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 7, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 31, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 31, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 45, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 24, - "endColumn": 46, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 30, - "endColumn": 52, + "startColumn": 33, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 29, - "endColumn": 49, + "startColumn": 33, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 37, - "endColumn": 50, + "startColumn": 12, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { "startColumn": 12, - "endColumn": 31, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 53, + "startColumn": 47, + "endColumn": 73, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 53, + "startColumn": 56, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 68, + "endColumn": 79, "lineCount": 1 } }, @@ -34177,174 +35929,174 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 12, - "endColumn": 17, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 57, + "startColumn": 31, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 35, - "endColumn": 57, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 4, - "endColumn": 22, + "startColumn": 33, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 39, - "endColumn": 44, + "startColumn": 17, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 26, - "endColumn": 31, + "startColumn": 17, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 33, - "endColumn": 46, + "startColumn": 17, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 33, - "endColumn": 46, + "startColumn": 17, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 4, - "endColumn": 22, + "startColumn": 17, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 4, - "endColumn": 7, + "startColumn": 17, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 19, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 19, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 23, - "endColumn": 45, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 24, - "endColumn": 46, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 30, - "endColumn": 52, + "startColumn": 18, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 22, - "endColumn": 38, + "startColumn": 25, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 25, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 38, + "startColumn": 35, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 38, + "startColumn": 42, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 4, - "endColumn": 7, + "startColumn": 15, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 22, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, + "startColumn": 16, "endColumn": 21, "lineCount": 1 } @@ -34352,1335 +36104,1317 @@ { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 52, + "startColumn": 25, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 25, - "endColumn": 42, + "startColumn": 32, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 31, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 19, - "endColumn": 30, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 19, - "endColumn": 30, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 54, - "lineCount": 1 + "startColumn": 44, + "endColumn": 21, + "lineCount": 3 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 19, - "endColumn": 30, + "startColumn": 28, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 30, + "startColumn": 39, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 39, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 45, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 17, + "startColumn": 45, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 30, + "startColumn": 16, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 19, - "endColumn": 30, + "startColumn": 24, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 56, + "endColumn": 66, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 54, + "startColumn": 50, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 20, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 36, - "endColumn": 67, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 40, + "startColumn": 40, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIndexIssue", "range": { - "startColumn": 24, - "endColumn": 35, + "startColumn": 20, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 35, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 40, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIndexIssue", "range": { - "startColumn": 21, - "endColumn": 35, + "startColumn": 20, + "endColumn": 26, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 21, - "endColumn": 42, + "startColumn": 15, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 44, - "endColumn": 48, + "startColumn": 32, + "endColumn": 38, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 50, - "endColumn": 59, + "startColumn": 24, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 36, - "lineCount": 11 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 24, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 14, - "endColumn": 24, + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, + "startColumn": 12, "endColumn": 30, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 31, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 20, + "startColumn": 31, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 59, - "endColumn": 76, + "startColumn": 46, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 59, - "endColumn": 76, + "startColumn": 15, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportOptionalMemberAccess", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 30, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportOptionalOperand", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 11, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportDeprecated", "range": { - "startColumn": 37, - "endColumn": 49, + "startColumn": 51, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 50, + "startColumn": 56, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportOperatorIssue", "range": { - "startColumn": 52, - "endColumn": 46, - "lineCount": 18 + "startColumn": 11, + "endColumn": 54, + "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportDeprecated", "range": { - "startColumn": 34, - "endColumn": 51, + "startColumn": 51, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 30, - "endColumn": 52, + "startColumn": 56, + "endColumn": 70, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportOperatorIssue", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 11, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 12, + "endColumn": 65, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 12, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 24, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 8, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 55, - "endColumn": 59, + "startColumn": 19, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 55, - "endColumn": 59, + "startColumn": 34, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 61, - "endColumn": 66, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportCallIssue", "range": { - "startColumn": 61, - "endColumn": 66, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 46, - "lineCount": 1 + "startColumn": 16, + "endColumn": 36, + "lineCount": 2 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 48, - "endColumn": 61, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 48, - "endColumn": 61, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 30, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 44, + "startColumn": 30, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 44, + "startColumn": 12, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 24, - "endColumn": 46, + "startColumn": 16, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { "startColumn": 16, - "endColumn": 21, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 23, - "endColumn": 36, + "startColumn": 20, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 66, + "startColumn": 31, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 24, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 24, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 40, - "endColumn": 62, + "startColumn": 24, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 40, - "endColumn": 62, + "startColumn": 24, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnreachable", "range": { "startColumn": 16, - "endColumn": 20, - "lineCount": 1 + "endColumn": 42, + "lineCount": 2 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { "startColumn": 30, - "endColumn": 35, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { - "startColumn": 37, - "endColumn": 48, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 32, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { "startColumn": 16, - "endColumn": 38, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 27, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 47, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 47, + "startColumn": 25, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 28, - "lineCount": 5 + "startColumn": 8, + "endColumn": 26, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 34, - "endColumn": 63, + "startColumn": 25, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 60, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 29, - "endColumn": 58, + "startColumn": 8, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 60, - "endColumn": 77, + "startColumn": 23, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 60, - "endColumn": 77, + "startColumn": 12, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 23, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 31, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 28, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 48, - "endColumn": 53, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 55, - "endColumn": 59, + "startColumn": 24, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 55, - "endColumn": 59, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 66, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 66, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 62, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 49, - "endColumn": 62, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 25, - "endColumn": 47, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 13, + "endColumn": 84, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnusedVariable", "range": { - "startColumn": 23, - "endColumn": 36, + "startColumn": 58, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 36, + "startColumn": 69, + "endColumn": 82, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 60, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 60, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 36, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 36, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 60, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 60, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 48, + "startColumn": 13, + "endColumn": 80, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnusedVariable", "range": { - "startColumn": 53, - "endColumn": 75, + "startColumn": 57, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 53, - "endColumn": 75, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 16, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 18, - "endColumn": 27, + "startColumn": 12, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportCallIssue", "range": { - "startColumn": 30, - "endColumn": 80, + "startColumn": 24, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 24, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportCallIssue", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 43, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 32, - "endColumn": 62, + "startColumn": 43, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportCallIssue", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 61, + "endColumn": 76, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 44, - "endColumn": 13, - "lineCount": 4 + "startColumn": 61, + "endColumn": 76, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { "startColumn": 12, - "endColumn": 32, + "endColumn": 34, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 25, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 41, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 36, - "endColumn": 58, + "startColumn": 34, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 58, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 67, + "startColumn": 8, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { "startColumn": 36, - "endColumn": 67, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 26, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 47, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 29, + "startColumn": 25, + "endColumn": 28, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 28, - "lineCount": 8 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 28, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 49, + "startColumn": 28, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 45, - "endColumn": 49, + "startColumn": 43, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 33, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 46, - "lineCount": 2 + "startColumn": 8, + "endColumn": 26, + "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 44, + "startColumn": 35, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 31, - "endColumn": 44, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 47, - "endColumn": 52, + "startColumn": 30, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 54, - "endColumn": 58, + "startColumn": 30, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 60, - "endColumn": 65, + "startColumn": 25, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 33, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 38, - "endColumn": 43, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 45, - "endColumn": 49, + "startColumn": 36, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 45, - "endColumn": 49, + "startColumn": 8, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportIndexIssue", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 8, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportIndexIssue", "range": { - "startColumn": 51, - "endColumn": 56, + "startColumn": 8, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 46, - "lineCount": 2 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 31, - "endColumn": 44, + "startColumn": 24, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 44, + "startColumn": 24, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 47, - "endColumn": 52, + "startColumn": 48, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportIndexIssue", "range": { - "startColumn": 54, - "endColumn": 58, + "startColumn": 8, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 60, - "endColumn": 65, + "startColumn": 24, + "endColumn": 56, "lineCount": 1 } - } - ], - "./boxtree/tree_build.py": [ + }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 24, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 23, - "endColumn": 30, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 24, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 45, - "endColumn": 57, + "startColumn": 28, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 13, - "endColumn": 31, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 56, - "endColumn": 68, + "startColumn": 16, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportAny", "range": { - "startColumn": 13, - "endColumn": 30, + "startColumn": 12, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 49, - "endColumn": 61, + "startColumn": 20, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportUnknownVariableType", "range": { - "startColumn": 4, - "endColumn": 19, + "startColumn": 12, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportCallIssue", "range": { - "startColumn": 4, - "endColumn": 19, - "lineCount": 1 + "startColumn": 42, + "endColumn": 83, + "lineCount": 2 } }, { - "code": "reportUnannotatedClassAttribute", + "code": "reportArgumentType", "range": { - "startColumn": 4, - "endColumn": 30, + "startColumn": 16, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 40, + "startColumn": 39, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 53, + "startColumn": 55, + "endColumn": 75, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 53, + "startColumn": 24, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownVariableType", "range": { "startColumn": 12, "endColumn": 29, @@ -35688,610 +37422,602 @@ } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 20, + "endColumn": 80, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 43, + "startColumn": 47, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 43, + "startColumn": 16, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 31, - "lineCount": 1 + "startColumn": 20, + "endColumn": 81, + "lineCount": 2 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 31, - "lineCount": 1 + "startColumn": 20, + "endColumn": 55, + "lineCount": 2 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 33, - "endColumn": 53, + "startColumn": 27, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 33, - "endColumn": 53, + "startColumn": 76, + "endColumn": 79, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 33, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportIndexIssue", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 20, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 47, - "endColumn": 73, + "startColumn": 34, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 56, - "endColumn": 66, + "startColumn": 34, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 68, - "endColumn": 79, + "startColumn": 32, + "endColumn": 49, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 32, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 31, - "endColumn": 43, + "startColumn": 43, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 53, + "startColumn": 16, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 21, + "startColumn": 16, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportIndexIssue", "range": { - "startColumn": 17, - "endColumn": 31, + "startColumn": 16, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 31, + "startColumn": 32, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 17, - "endColumn": 39, + "startColumn": 32, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 17, - "endColumn": 39, + "startColumn": 56, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 25, + "startColumn": 16, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 19, - "endColumn": 25, + "startColumn": 20, + "endColumn": 32, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 38, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 18, - "endColumn": 23, + "startColumn": 38, + "endColumn": 41, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 43, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 25, - "endColumn": 30, + "startColumn": 43, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 48, + "startColumn": 47, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 50, - "endColumn": 55, + "startColumn": 60, + "endColumn": 69, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 36, + "startColumn": 60, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 39, + "startColumn": 20, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 39, - "endColumn": 43, + "startColumn": 44, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 39, - "endColumn": 43, + "startColumn": 44, + "endColumn": 47, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 45, - "endColumn": 49, + "startColumn": 49, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 45, - "endColumn": 49, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 16, - "endColumn": 21, + "startColumn": 49, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 34, + "startColumn": 49, + "endColumn": 54, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 56, - "endColumn": 66, + "startColumn": 62, + "endColumn": 71, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 42, - "endColumn": 47, + "startColumn": 62, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 40, + "startColumn": 27, "endColumn": 51, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 35, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 40, - "endColumn": 51, + "startColumn": 42, + "endColumn": 48, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 30, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 35, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 35, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 48, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 36, - "endColumn": 68, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportAny", "range": { - "startColumn": 65, - "endColumn": 68, + "startColumn": 42, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 65, - "endColumn": 68, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportAny", "range": { - "startColumn": 65, - "endColumn": 68, + "startColumn": 26, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 23, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 43, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 40, - "endColumn": 43, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 40, - "endColumn": 43, + "startColumn": 32, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 40, - "endColumn": 43, + "startColumn": 36, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportOptionalOperand", + "code": "reportUnknownMemberType", "range": { - "startColumn": 11, - "endColumn": 33, + "startColumn": 24, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 27, + "startColumn": 58, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 42, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 61, - "lineCount": 2 + "startColumn": 41, + "endColumn": 58, + "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 41, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 18, - "endColumn": 19, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 16, + "startColumn": 20, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 19, - "endColumn": 27, + "startColumn": 37, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportOptionalCall", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 43, + "endColumn": 74, "lineCount": 1 } }, { - "code": "reportOptionalMemberAccess", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 27, + "startColumn": 20, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 23, + "startColumn": 41, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 12, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 47, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 20, + "startColumn": 28, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 36, - "lineCount": 2 + "startColumn": 28, + "endColumn": 58, + "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 34, - "endColumn": 49, + "startColumn": 52, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportIndexIssue", "range": { - "startColumn": 34, - "endColumn": 49, + "startColumn": 12, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 38, + "startColumn": 28, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 45, + "startColumn": 28, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 30, - "endColumn": 45, + "startColumn": 54, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportAny", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 47, + "endColumn": 57, "lineCount": 1 } }, @@ -36299,567 +38025,575 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 20, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 12, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 31, + "startColumn": 62, + "endColumn": 66, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 20, + "startColumn": 28, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 21, + "startColumn": 28, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 23, - "endColumn": 24, + "startColumn": 39, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 21, + "startColumn": 16, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportAttributeAccessIssue", + "range": { + "startColumn": 27, + "endColumn": 33, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 37, + "startColumn": 30, + "endColumn": 53, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 28, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, - "endColumn": 40, + "startColumn": 53, + "endColumn": 68, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 24, + "startColumn": 12, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 39, - "endColumn": 54, - "lineCount": 1 + "startColumn": 18, + "endColumn": 62, + "lineCount": 2 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 39, - "endColumn": 54, - "lineCount": 1 + "startColumn": 18, + "endColumn": 62, + "lineCount": 2 } }, { - "code": "reportCallIssue", + "code": "reportArgumentType", "range": { - "startColumn": 24, - "endColumn": 39, - "lineCount": 1 + "startColumn": 18, + "endColumn": 62, + "lineCount": 2 } }, { - "code": "reportArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 24, - "endColumn": 39, + "startColumn": 12, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportOptionalCall", "range": { - "startColumn": 24, - "endColumn": 28, - "lineCount": 1 + "startColumn": 44, + "endColumn": 69, + "lineCount": 2 } }, { - "code": "reportCallIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 39, + "startColumn": 16, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 24, - "endColumn": 39, + "startColumn": 32, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 28, + "startColumn": 32, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportUnreachable", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 42, - "lineCount": 2 + "startColumn": 32, + "endColumn": 54, + "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 48, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 20, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 47, + "endColumn": 51, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownMemberType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 36, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 30, - "endColumn": 47, + "startColumn": 36, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 30, - "endColumn": 34, + "startColumn": 63, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 19, + "startColumn": 20, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportCallIssue", "range": { - "startColumn": 27, - "endColumn": 45, - "lineCount": 1 + "startColumn": 26, + "endColumn": 42, + "lineCount": 9 } }, { - "code": "reportAny", + "code": "reportUnnecessaryTypeIgnoreComment", "range": { - "startColumn": 12, - "endColumn": 23, + "startColumn": 119, + "endColumn": 140, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 40, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 20, + "startColumn": 24, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 33, + "startColumn": 44, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 24, + "startColumn": 32, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 55, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 73, + "endColumn": 85, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 12, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 36, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnusedVariable", + "code": "reportAny", "range": { - "startColumn": 58, - "endColumn": 59, + "startColumn": 34, + "endColumn": 37, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 69, - "endColumn": 82, + "startColumn": 43, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportOptionalCall", "range": { - "startColumn": 8, - "endColumn": 26, - "lineCount": 1 + "startColumn": 18, + "endColumn": 59, + "lineCount": 10 } }, { - "code": "reportUnusedVariable", + "code": "reportArgumentType", "range": { - "startColumn": 57, - "endColumn": 58, + "startColumn": 20, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 20, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { "startColumn": 20, - "endColumn": 23, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 12, - "endColumn": 21, + "startColumn": 33, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownVariableType", "range": { "startColumn": 24, - "endColumn": 39, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 39, + "startColumn": 28, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 28, + "startColumn": 29, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownParameterType", "range": { - "startColumn": 43, - "endColumn": 58, + "startColumn": 31, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 58, + "startColumn": 31, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportMissingParameterType", "range": { - "startColumn": 43, - "endColumn": 47, + "startColumn": 38, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 76, + "startColumn": 33, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 61, - "endColumn": 76, + "startColumn": 40, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportOptionalSubscript", + "code": "reportUnknownParameterType", "range": { - "startColumn": 61, - "endColumn": 65, + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportMissingParameterType", "range": { - "startColumn": 12, - "endColumn": 34, + "startColumn": 32, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 39, + "endColumn": 45, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 34, + "endColumn": 39, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 41, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIndexIssue", "range": { - "startColumn": 8, + "startColumn": 16, "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 11, + "startColumn": 38, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportIndexIssue", "range": { - "startColumn": 14, - "endColumn": 85, - "lineCount": 2 + "startColumn": 16, + "endColumn": 26, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 42, + "startColumn": 66, + "endColumn": 81, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 28, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 30, + "startColumn": 28, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 39, + "endColumn": 45, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 48, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 22, - "endColumn": 23, + "startColumn": 59, + "endColumn": 65, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 22, - "endColumn": 23, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 25, - "endColumn": 26, + "startColumn": 24, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 43, + "endColumn": 69, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 8, - "endColumn": 26, + "startColumn": 12, + "endColumn": 23, "lineCount": 1 } }, @@ -36867,39 +38601,39 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 23, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 29, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 33, + "startColumn": 12, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { "startColumn": 12, - "endColumn": 33, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 41, + "startColumn": 44, + "endColumn": 68, "lineCount": 1 } }, @@ -36907,671 +38641,663 @@ "code": "reportUnknownVariableType", "range": { "startColumn": 12, - "endColumn": 39, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportCallIssue", + "code": "reportAny", "range": { - "startColumn": 42, - "endColumn": 83, - "lineCount": 2 + "startColumn": 29, + "endColumn": 32, + "lineCount": 1 } }, { - "code": "reportArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 74, + "startColumn": 12, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 32, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 12, + "endColumn": 26, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 39, - "endColumn": 49, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 55, - "endColumn": 75, + "startColumn": 12, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 51, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 29, + "startColumn": 16, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 80, + "startColumn": 16, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 47, - "endColumn": 67, + "startColumn": 12, + "endColumn": 28, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 49, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 81, + "startColumn": 17, + "endColumn": 43, "lineCount": 2 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 55, + "startColumn": 17, + "endColumn": 43, "lineCount": 2 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 79, - "lineCount": 1 + "startColumn": 17, + "endColumn": 43, + "lineCount": 2 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 76, - "endColumn": 79, - "lineCount": 1 + "startColumn": 17, + "endColumn": 43, + "lineCount": 2 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 33, - "endColumn": 48, - "lineCount": 1 + "startColumn": 17, + "endColumn": 43, + "lineCount": 2 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 50, - "endColumn": 59, - "lineCount": 1 + "startColumn": 17, + "endColumn": 43, + "lineCount": 2 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 30, - "lineCount": 1 + "startColumn": 17, + "endColumn": 43, + "lineCount": 2 } }, { "code": "reportAny", "range": { - "startColumn": 16, - "endColumn": 26, + "startColumn": 22, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 20, - "endColumn": 32, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 41, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 38, - "endColumn": 41, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 48, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 48, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 17, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 44, - "endColumn": 47, + "startColumn": 39, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 44, - "endColumn": 47, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportIndexIssue", "range": { - "startColumn": 49, - "endColumn": 54, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 34, - "endColumn": 39, + "startColumn": 12, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 32, + "endColumn": 62, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 56, + "startColumn": 32, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 56, + "endColumn": 62, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 40, + "startColumn": 38, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 12, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 32, + "endColumn": 49, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 42, - "endColumn": 45, + "startColumn": 38, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { "startColumn": 16, - "endColumn": 36, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 26, - "endColumn": 29, + "startColumn": 45, + "endColumn": 71, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 31, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 28, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 20, + "startColumn": 37, "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 40, + "startColumn": 28, + "endColumn": 31, "lineCount": 1 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 37, - "endColumn": 40, + "startColumn": 31, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportOptionalCall", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 43, - "endColumn": 74, + "startColumn": 28, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 20, + "startColumn": 37, "endColumn": 40, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 41, - "endColumn": 44, + "startColumn": 28, + "endColumn": 31, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 47, - "endColumn": 57, + "startColumn": 44, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 36, + "startColumn": 32, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 24, - "endColumn": 72, - "lineCount": 2 + "startColumn": 44, + "endColumn": 47, + "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 74, - "lineCount": 2 + "startColumn": 32, + "endColumn": 35, + "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportOptionalCall", "range": { - "startColumn": 12, - "endColumn": 29, - "lineCount": 1 + "startColumn": 18, + "endColumn": 34, + "lineCount": 25 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 23, - "endColumn": 52, - "lineCount": 1 + "startColumn": 59, + "endColumn": 17, + "lineCount": 23 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 54, - "endColumn": 69, - "lineCount": 1 + "startColumn": 34, + "endColumn": 25, + "lineCount": 4 } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 36, - "lineCount": 1 + "startColumn": 24, + "endColumn": 84, + "lineCount": 2 } }, { - "code": "reportUnknownVariableType", + "code": "reportOperatorIssue", "range": { - "startColumn": 20, - "endColumn": 23, + "startColumn": 27, + "endColumn": 84, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 42, + "startColumn": 30, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportOperatorIssue", "range": { - "startColumn": 47, - "endColumn": 59, + "startColumn": 41, + "endColumn": 58, "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 47, - "endColumn": 67, - "lineCount": 2 - } - }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 47, - "endColumn": 69, - "lineCount": 2 + "startColumn": 30, + "endColumn": 21, + "lineCount": 4 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 44, - "endColumn": 55, - "lineCount": 1 + "startColumn": 20, + "endColumn": 47, + "lineCount": 2 } }, { "code": "reportUnknownVariableType", "range": { - "startColumn": 32, - "endColumn": 44, + "startColumn": 12, + "endColumn": 19, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 55, - "endColumn": 71, + "startColumn": 22, + "endColumn": 29, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 73, - "endColumn": 85, + "startColumn": 51, + "endColumn": 59, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 40, - "endColumn": 47, + "startColumn": 20, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 54, - "endColumn": 57, + "startColumn": 21, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 53, - "endColumn": 56, + "startColumn": 28, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 35, + "startColumn": 46, + "endColumn": 53, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnusedVariable", "range": { - "startColumn": 33, - "endColumn": 43, + "startColumn": 57, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 29, - "endColumn": 44, + "startColumn": 20, + "endColumn": 35, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 31, - "endColumn": 36, + "startColumn": 21, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 31, + "startColumn": 28, "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnusedVariable", "range": { - "startColumn": 38, - "endColumn": 44, + "startColumn": 57, + "endColumn": 58, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 33, + "startColumn": 20, "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 40, - "endColumn": 54, + "startColumn": 21, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 32, - "endColumn": 37, + "startColumn": 28, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 32, + "startColumn": 24, "endColumn": 37, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportArgumentType", "range": { "startColumn": 39, - "endColumn": 45, + "endColumn": 54, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 38, - "endColumn": 53, + "startColumn": 24, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 66, - "endColumn": 81, + "startColumn": 39, + "endColumn": 57, "lineCount": 1 } }, @@ -37579,142 +39305,142 @@ "code": "reportAny", "range": { "startColumn": 12, - "endColumn": 29, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 41, + "startColumn": 45, + "endColumn": 55, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 43, - "endColumn": 69, + "startColumn": 27, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 24, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 17, + "endColumn": 26, "lineCount": 1 } }, { - "code": "reportUnknownVariableType", + "code": "reportIndexIssue", "range": { "startColumn": 12, - "endColumn": 27, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 32, + "startColumn": 24, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 24, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 32, - "endColumn": 35, + "startColumn": 42, + "endColumn": 48, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 17, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportIndexIssue", "range": { "startColumn": 12, - "endColumn": 31, + "endColumn": 27, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 35, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 24, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 22, - "endColumn": 25, + "startColumn": 40, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnusedExpression", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 16, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnusedExpression", "range": { - "startColumn": 39, + "startColumn": 16, "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 31, + "startColumn": 40, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 12, + "startColumn": 28, "endColumn": 31, "lineCount": 1 } @@ -37722,129 +39448,121 @@ { "code": "reportUnknownVariableType", "range": { - "startColumn": 38, - "endColumn": 57, + "startColumn": 44, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 72, - "lineCount": 4 + "startColumn": 32, + "endColumn": 35, + "lineCount": 1 } }, { - "code": "reportOperatorIssue", + "code": "reportArgumentType", "range": { - "startColumn": 31, - "endColumn": 61, - "lineCount": 2 + "startColumn": 14, + "endColumn": 34, + "lineCount": 15 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 31, - "endColumn": 65, - "lineCount": 2 + "startColumn": 14, + "endColumn": 34, + "lineCount": 15 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 23, - "endColumn": 57, - "lineCount": 1 + "startColumn": 14, + "endColumn": 34, + "lineCount": 15 } }, { - "code": "reportOperatorIssue", + "code": "reportAny", "range": { - "startColumn": 35, - "endColumn": 52, + "startColumn": 12, + "endColumn": 17, "lineCount": 1 } }, { "code": "reportAny", "range": { - "startColumn": 23, - "endColumn": 62, - "lineCount": 3 - } - }, - { - "code": "reportUnusedVariable", - "range": { - "startColumn": 49, - "endColumn": 50, + "startColumn": 19, + "endColumn": 23, "lineCount": 1 } }, { - "code": "reportUnusedVariable", + "code": "reportUnknownVariableType", "range": { - "startColumn": 49, - "endColumn": 50, + "startColumn": 20, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 12, - "endColumn": 21, + "startColumn": 29, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 26, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 27, + "startColumn": 16, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnusedExpression", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 42, - "lineCount": 1 + "startColumn": 22, + "endColumn": 60, + "lineCount": 5 } }, { - "code": "reportUnusedExpression", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 42, - "lineCount": 1 + "startColumn": 22, + "endColumn": 60, + "lineCount": 5 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 + "startColumn": 22, + "endColumn": 60, + "lineCount": 5 } }, { - "code": "reportAny", + "code": "reportArgumentType", "range": { - "startColumn": 19, - "endColumn": 23, - "lineCount": 1 + "startColumn": 22, + "endColumn": 60, + "lineCount": 5 } }, { @@ -37880,39 +39598,63 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 12, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 15, - "endColumn": 28, - "lineCount": 48 + "startColumn": 12, + "endColumn": 35, + "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 34, + "startColumn": 29, + "endColumn": 43, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 18, - "endColumn": 34, + "startColumn": 16, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 8, + "endColumn": 12, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 27, + "endColumn": 31, "lineCount": 1 } } ], "./boxtree/tree_build_kernels.py": [ + { + "code": "reportPrivateLocalImportUsage", + "range": { + "startColumn": 4, + "endColumn": 13, + "lineCount": 1 + } + }, { "code": "reportUntypedFunctionDecorator", "range": { @@ -38633,14 +40375,6 @@ "lineCount": 1 } }, - { - "code": "reportPrivateLocalImportUsage", - "range": { - "startColumn": 30, - "endColumn": 39, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -38976,22 +40710,62 @@ "endColumn": 71, "lineCount": 1 } - } - ], - "./boxtree/tree_of_boxes.py": [ + }, { "code": "reportAny", "range": { - "startColumn": 4, - "endColumn": 10, + "startColumn": 30, + "endColumn": 47, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 23, + "startColumn": 27, + "endColumn": 41, + "lineCount": 1 + } + }, + { + "code": "reportArgumentType", + "range": { + "startColumn": 42, + "endColumn": 71, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 29, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 28, + "endColumn": 43, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 38, + "endColumn": 63, + "lineCount": 1 + } + } + ], + "./boxtree/tree_of_boxes.py": [ + { + "code": "reportAny", + "range": { + "startColumn": 4, + "endColumn": 10, "lineCount": 1 } }, @@ -39052,7 +40826,55 @@ } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", + "range": { + "startColumn": 4, + "endColumn": 24, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 25, + "endColumn": 28, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 11, + "endColumn": 68, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 44, + "endColumn": 47, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 4, + "endColumn": 34, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 35, + "endColumn": 38, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", "range": { "startColumn": 28, "endColumn": 38, @@ -39060,7 +40882,7 @@ } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 28, "endColumn": 38, @@ -39068,13 +40890,61 @@ } }, { - "code": "reportOptionalOperand", + "code": "reportUnknownMemberType", "range": { "startColumn": 17, "endColumn": 30, "lineCount": 1 } }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 11, + "endColumn": 50, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 32, + "endColumn": 35, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 4, + "endColumn": 25, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 8, + "endColumn": 11, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 11, + "endColumn": 54, + "lineCount": 3 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 8, + "endColumn": 11, + "lineCount": 1 + } + }, { "code": "reportUnknownParameterType", "range": { @@ -39436,15 +41306,15 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 + "startColumn": 11, + "endColumn": 9, + "lineCount": 18 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 20, "endColumn": 35, @@ -39459,14 +41329,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39475,14 +41337,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 24, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39491,14 +41345,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39507,14 +41353,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39523,14 +41361,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39539,14 +41369,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39555,14 +41377,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 25, - "endColumn": 45, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39571,14 +41385,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 33, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -39852,19 +41658,11 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 + "startColumn": 11, + "endColumn": 9, + "lineCount": 18 } }, { @@ -39876,37 +41674,13 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 20, "endColumn": 35, "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 22, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -39923,14 +41697,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39939,14 +41705,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 24, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39955,14 +41713,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39971,14 +41721,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -39987,14 +41729,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40003,14 +41737,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40019,14 +41745,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 25, - "endColumn": 45, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40035,14 +41753,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 33, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -40083,6 +41793,14 @@ "lineCount": 1 } }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 18, + "endColumn": 45, + "lineCount": 1 + } + }, { "code": "reportUnknownMemberType", "range": { @@ -40188,11 +41906,11 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 31, - "lineCount": 1 + "startColumn": 11, + "endColumn": 9, + "lineCount": 18 } }, { @@ -40203,38 +41921,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 22, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -40251,14 +41937,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40267,14 +41945,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 24, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40283,14 +41953,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40299,14 +41961,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40315,14 +41969,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40331,14 +41977,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40347,14 +41985,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 25, - "endColumn": 45, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40364,9 +41994,9 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 19, + "startColumn": 4, "endColumn": 33, "lineCount": 1 } @@ -40444,15 +42074,15 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 + "startColumn": 11, + "endColumn": 9, + "lineCount": 18 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { "startColumn": 20, "endColumn": 35, @@ -40467,14 +42097,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 23, - "endColumn": 48, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40483,14 +42105,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 22, - "endColumn": 49, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40499,14 +42113,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 19, - "endColumn": 40, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40515,14 +42121,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 45, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40547,14 +42145,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 21, - "endColumn": 37, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40563,14 +42153,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 24, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40579,14 +42161,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40595,14 +42169,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40611,14 +42177,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40627,14 +42185,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 35, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -40644,26 +42194,26 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 25, - "endColumn": 45, + "startColumn": 19, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 33, + "startColumn": 4, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 19, - "endColumn": 33, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, @@ -40676,7 +42226,7 @@ } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { "startColumn": 32, "endColumn": 42, @@ -40684,7 +42234,7 @@ } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 32, "endColumn": 42, @@ -40700,7 +42250,7 @@ } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { "startColumn": 33, "endColumn": 43, @@ -40708,7 +42258,7 @@ } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 33, "endColumn": 43, @@ -40731,6 +42281,22 @@ "lineCount": 1 } }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 7, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 60, + "endColumn": 63, + "lineCount": 1 + } + }, { "code": "reportArgumentType", "range": { @@ -40740,7 +42306,7 @@ } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { "startColumn": 50, "endColumn": 60, @@ -40748,13 +42314,53 @@ } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 50, "endColumn": 60, "lineCount": 1 } }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 7, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 46, + "endColumn": 49, + "lineCount": 1 + } + }, + { + "code": "reportAny", + "range": { + "startColumn": 11, + "endColumn": 45, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 41, + "endColumn": 44, + "lineCount": 1 + } + }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 4, + "endColumn": 27, + "lineCount": 1 + } + }, { "code": "reportAny", "range": { @@ -40886,9 +42492,9 @@ { "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 35, - "lineCount": 1 + "startColumn": 11, + "endColumn": 13, + "lineCount": 19 } }, { @@ -40908,42 +42514,74 @@ } }, { - "code": "reportAny", + "code": "reportUnknownParameterType", "range": { - "startColumn": 25, - "endColumn": 37, + "startColumn": 35, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { - "startColumn": 28, - "endColumn": 43, + "startColumn": 4, + "endColumn": 7, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 35, + "startColumn": 10, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownVariableType", "range": { "startColumn": 4, - "endColumn": 7, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownMemberType", "range": { - "startColumn": 10, - "endColumn": 24, + "startColumn": 14, + "endColumn": 28, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 13, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 16, + "endColumn": 31, + "lineCount": 1 + } + }, + { + "code": "reportUnknownVariableType", + "range": { + "startColumn": 4, + "endColumn": 12, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 15, + "endColumn": 29, "lineCount": 1 } }, @@ -40959,12 +42597,12 @@ "code": "reportUnknownMemberType", "range": { "startColumn": 14, - "endColumn": 28, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", "range": { "startColumn": 41, "endColumn": 44, @@ -40972,7 +42610,15 @@ } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 18, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", "range": { "startColumn": 29, "endColumn": 35, @@ -40980,7 +42626,15 @@ } }, { - "code": "reportAny", + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 20, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", "range": { "startColumn": 29, "endColumn": 35, @@ -41003,6 +42657,14 @@ "lineCount": 2 } }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 8, + "endColumn": 29, + "lineCount": 1 + } + }, { "code": "reportUnknownArgumentType", "range": { @@ -42596,77 +44258,13 @@ { "code": "reportUnusedImport", "range": { - "startColumn": 4, - "endColumn": 8, + "startColumn": 69, + "endColumn": 73, "lineCount": 1 } } ], "./test/test_distributed.py": [ - { - "code": "reportUnsafeMultipleInheritance", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 10, - "endColumn": 38, - "lineCount": 1 - } - }, { "code": "reportIncompatibleMethodOverride", "range": { @@ -42701,6 +44299,14 @@ "lineCount": 1 } }, + { + "code": "reportUnusedImport", + "range": { + "startColumn": 4, + "endColumn": 26, + "lineCount": 1 + } + }, { "code": "reportOptionalOperand", "range": { @@ -42732,6 +44338,14 @@ "endColumn": 20, "lineCount": 1 } + }, + { + "code": "reportAssignmentType", + "range": { + "startColumn": 8, + "endColumn": 14, + "lineCount": 1 + } } ], "./test/test_tools.py": [ @@ -42790,8 +44404,8 @@ { "code": "reportUnusedImport", "range": { - "startColumn": 4, - "endColumn": 8, + "startColumn": 69, + "endColumn": 73, "lineCount": 1 } }, @@ -42803,14 +44417,6 @@ "lineCount": 1 } }, - { - "code": "reportOptionalOperand", - "range": { - "startColumn": 12, - "endColumn": 26, - "lineCount": 1 - } - }, { "code": "reportUnusedVariable", "range": {