From f08a1fb929399cae3ef08426c05870e3e9fdd33d Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Fri, 30 Aug 2024 09:36:27 -0500 Subject: [PATCH 1/2] add minimum, fmin --- arraycontext/fake_numpy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arraycontext/fake_numpy.py b/arraycontext/fake_numpy.py index 8473cc42..bb4febd4 100644 --- a/arraycontext/fake_numpy.py +++ b/arraycontext/fake_numpy.py @@ -90,7 +90,7 @@ def _get_fake_numpy_linalg_namespace(self): # Miscellaneous "convolve", "clip", "sqrt", "cbrt", "square", "absolute", "abs", "fabs", - "sign", "heaviside", "maximum", "fmax", "nan_to_num", "isnan", + "sign", "heaviside", "maximum", "fmax", "nan_to_num", "isnan", "minimum", "fmin", # FIXME: # "interp", From 573a09aaea64afd617f6942f38284861c02d7b30 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Sat, 31 Aug 2024 08:51:18 -0500 Subject: [PATCH 2/2] lint fixes --- arraycontext/container/arithmetic.py | 5 ++--- arraycontext/context.py | 2 +- arraycontext/fake_numpy.py | 3 ++- arraycontext/impl/pytato/compile.py | 4 ++-- arraycontext/impl/pytato/utils.py | 4 ++-- arraycontext/loopy.py | 10 +++++----- arraycontext/pytest.py | 2 +- arraycontext/version.py | 2 +- test/test_arraycontext.py | 19 ++++++++----------- 9 files changed, 24 insertions(+), 27 deletions(-) diff --git a/arraycontext/container/arithmetic.py b/arraycontext/container/arithmetic.py index 2ef5ddc9..32daa626 100644 --- a/arraycontext/container/arithmetic.py +++ b/arraycontext/container/arithmetic.py @@ -369,9 +369,8 @@ def _get_actx_array_types_failsafe(ary): for i, bct in enumerate(bcast_container_types): gen(f"from {bct.__module__} import {bct.__qualname__} as _bctype{i}") gen("") - outer_bcast_type_names = tuple([ - f"_bctype{i}" for i in range(bcast_container_types_count) - ]) + outer_bcast_type_names = \ + tuple(f"_bctype{i}" for i in range(bcast_container_types_count)) if bcast_number: outer_bcast_type_names += ("Number",) diff --git a/arraycontext/context.py b/arraycontext/context.py index 8b42bca7..27937d78 100644 --- a/arraycontext/context.py +++ b/arraycontext/context.py @@ -489,7 +489,7 @@ def einsum(self, :return: the output of the einsum :mod:`loopy` program """ if arg_names is None: - arg_names = tuple([f"arg{i}" for i in range(len(args))]) + arg_names = tuple(f"arg{i}" for i in range(len(args))) prg = self._get_einsum_prg(spec, arg_names, tagged) out_ary = self.call_loopy( diff --git a/arraycontext/fake_numpy.py b/arraycontext/fake_numpy.py index bb4febd4..58215617 100644 --- a/arraycontext/fake_numpy.py +++ b/arraycontext/fake_numpy.py @@ -90,7 +90,8 @@ def _get_fake_numpy_linalg_namespace(self): # Miscellaneous "convolve", "clip", "sqrt", "cbrt", "square", "absolute", "abs", "fabs", - "sign", "heaviside", "maximum", "fmax", "nan_to_num", "isnan", "minimum", "fmin", + "sign", "heaviside", "maximum", "fmax", "nan_to_num", "isnan", "minimum", + "fmin", # FIXME: # "interp", diff --git a/arraycontext/impl/pytato/compile.py b/arraycontext/impl/pytato/compile.py index 523ef3a4..1e218b2a 100644 --- a/arraycontext/impl/pytato/compile.py +++ b/arraycontext/impl/pytato/compile.py @@ -214,10 +214,10 @@ def _get_f_placeholder_args(arg, kw, arg_id_to_name, actx): :attr:`BaseLazilyCompilingFunctionCaller.f`. """ if np.isscalar(arg): - name = arg_id_to_name[(kw,)] + name = arg_id_to_name[kw,] return pt.make_placeholder(name, (), np.dtype(type(arg))) elif isinstance(arg, pt.Array): - name = arg_id_to_name[(kw,)] + name = arg_id_to_name[kw,] # Transform the DAG to give metadata inference a chance to do its job arg = _to_input_for_compiled(arg, actx) return pt.make_placeholder(name, arg.shape, arg.dtype, diff --git a/arraycontext/impl/pytato/utils.py b/arraycontext/impl/pytato/utils.py index 0af54204..a5582d18 100644 --- a/arraycontext/impl/pytato/utils.py +++ b/arraycontext/impl/pytato/utils.py @@ -23,7 +23,7 @@ """ -from typing import TYPE_CHECKING, Any, Dict, Mapping, Optional, Set, Tuple +from typing import TYPE_CHECKING, Any, Dict, Mapping, Set, Tuple from pytato.array import ( AbstractResultWithNamedArrays, @@ -118,7 +118,7 @@ def __init__(self, limit_arg_size_nbytes: int) -> None: self.limit_arg_size_nbytes = limit_arg_size_nbytes @memoize_method - def get_loopy_target(self) -> Optional["lp.PyOpenCLTarget"]: + def get_loopy_target(self) -> "lp.PyOpenCLTarget": from loopy import PyOpenCLTarget return PyOpenCLTarget(limit_arg_size_nbytes=self.limit_arg_size_nbytes) diff --git a/arraycontext/loopy.py b/arraycontext/loopy.py index dc5d84f4..1bee3eb0 100644 --- a/arraycontext/loopy.py +++ b/arraycontext/loopy.py @@ -82,8 +82,8 @@ def _get_scalar_func_loopy_program(actx, c_name, nargs, naxes): def get(c_name, nargs, naxes): from pymbolic import var - var_names = ["i%d" % i for i in range(naxes)] - size_names = ["n%d" % i for i in range(naxes)] + var_names = [f"i{i}" for i in range(naxes)] + size_names = [f"n{i}" for i in range(naxes)] subscript = tuple(var(vname) for vname in var_names) from islpy import make_zero_and_vars v = make_zero_and_vars(var_names, params=size_names) @@ -103,12 +103,12 @@ def get(c_name, nargs, naxes): lp.Assignment( var("out")[subscript], var(c_name)(*[ - var("inp%d" % i)[subscript] for i in range(nargs)])) + var(f"inp{i}")[subscript] for i in range(nargs)])) ], [ lp.GlobalArg("out", dtype=None, shape=lp.auto, offset=lp.auto)] + [ - lp.GlobalArg("inp%d" % i, + lp.GlobalArg(f"inp{i}", dtype=None, shape=lp.auto, offset=lp.auto) for i in range(nargs)] + [...], name=f"actx_special_{c_name}", @@ -142,7 +142,7 @@ def loopy_implemented_elwise_func(*args): prg = _get_scalar_func_loopy_program(actx, c_name, nargs=len(args), naxes=len(args[0].shape)) outputs = actx.call_loopy(prg, - **{"inp%d" % i: arg for i, arg in enumerate(args)}) + **{f"inp{i}": arg for i, arg in enumerate(args)}) return outputs["out"] if name in self._c_to_numpy_arc_functions: diff --git a/arraycontext/pytest.py b/arraycontext/pytest.py index 8a1e0274..24b83980 100644 --- a/arraycontext/pytest.py +++ b/arraycontext/pytest.py @@ -374,7 +374,7 @@ def inner(metafunc): # NOTE: sorts the args so that parallel pytest works arg_value_tuples = sorted([ - tuple([arg_dict[name] for name in arg_names]) + tuple(arg_dict[name] for name in arg_names) for arg_dict in arg_values_with_actx ], key=lambda x: str(x)) diff --git a/arraycontext/version.py b/arraycontext/version.py index a1da82c1..31baea05 100644 --- a/arraycontext/version.py +++ b/arraycontext/version.py @@ -8,7 +8,7 @@ def _parse_version(version: str) -> Tuple[Tuple[int, ...], str]: m = re.match("^([0-9.]+)([a-z0-9]*?)$", VERSION_TEXT) assert m is not None - return tuple([int(nr) for nr in m.group(1).split(".")]), m.group(2) + return tuple(int(nr) for nr in m.group(1).split(".")), m.group(2) VERSION_TEXT = metadata.version("arraycontext") diff --git a/test/test_arraycontext.py b/test/test_arraycontext.py index 3f06156b..e7912b89 100644 --- a/test/test_arraycontext.py +++ b/test/test_arraycontext.py @@ -165,11 +165,11 @@ def size(self): @property def real(self): - return DOFArray(self.array_context, tuple([subary.real for subary in self])) + return DOFArray(self.array_context, tuple(subary.real for subary in self)) @property def imag(self): - return DOFArray(self.array_context, tuple([subary.imag for subary in self])) + return DOFArray(self.array_context, tuple(subary.imag for subary in self)) @serialize_container.register(DOFArray) @@ -249,9 +249,8 @@ def _get_test_containers(actx, ambient_dim=2, shapes=50_000): if isinstance(shapes, (Number, tuple)): shapes = [shapes] - x = DOFArray(actx, tuple([ - actx.from_numpy(randn(shape, np.float64)) - for shape in shapes])) + x = DOFArray(actx, tuple(actx.from_numpy(randn(shape, np.float64)) + for shape in shapes)) # pylint: disable=unexpected-keyword-arg, no-value-for-parameter dataclass_of_dofs = MyContainer( @@ -1074,13 +1073,11 @@ def test_flatten_array_container(actx_factory, shapes): if isinstance(shapes, (int, tuple)): shapes = [shapes] - ary = DOFArray(actx, tuple([ - actx.from_numpy(randn(shape, np.float64)) - for shape in shapes])) + ary = DOFArray(actx, tuple(actx.from_numpy(randn(shape, np.float64)) + for shape in shapes)) - template = DOFArray(actx, tuple([ - actx.from_numpy(randn(shape, np.complex128)) - for shape in shapes])) + template = DOFArray(actx, tuple(actx.from_numpy(randn(shape, np.complex128)) + for shape in shapes)) flat = flatten(ary, actx) ary_roundtrip = unflatten(template, flat, actx, strict=False)