From 934c8b387e328eaa2983724baff71c28b663e421 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 26 May 2026 19:14:40 -0500 Subject: [PATCH 1/3] Fix some imports in tests Fix some imports in tests --- test/__init__.py | 0 test/test_callables.py | 4 ++-- test/test_loopy.py | 6 +++--- test/test_numa_diff.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 test/__init__.py diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/test/test_callables.py b/test/test_callables.py index fd04ca332..c69153c9e 100644 --- a/test/test_callables.py +++ b/test/test_callables.py @@ -44,7 +44,7 @@ def test_register_function_lookup(ctx_factory: cl.CtxFactory): queue = cl.CommandQueue(ctx) rng = np.random.default_rng(seed=42) - from testlib import Log2Callable + from .testlib import Log2Callable x = rng.random(size=10) queue = cl.CommandQueue(ctx) @@ -754,7 +754,7 @@ def test_passing_scalar_as_indexed_subscript_in_clbl_knl(inline: bool): def test_symbol_mangler_in_call(): - from library_for_test import preamble_for_x, symbol_x + from .library_for_test import preamble_for_x, symbol_x ctx = cl.create_some_context() cq = cl.CommandQueue(ctx) diff --git a/test/test_loopy.py b/test/test_loopy.py index 2f3995d55..fd366d6b6 100644 --- a/test/test_loopy.py +++ b/test/test_loopy.py @@ -1538,7 +1538,7 @@ def test_call_with_no_returned_value(ctx_factory: cl.CtxFactory): [lp.CallInstruction((), p.Call(p.Variable("f"), ()))] ) - from library_for_test import NoRetFunction + from .library_for_test import NoRetFunction knl = lp.register_callable(knl, "f", NoRetFunction("f")) _evt, _ = knl(queue) @@ -1554,7 +1554,7 @@ def test_call_with_options(): "f() {id=init}" ) - from library_for_test import NoRetFunction + from .library_for_test import NoRetFunction knl = lp.register_callable(knl, "f", NoRetFunction("f")) print(lp.generate_code_v2(knl).device_code()) @@ -2298,7 +2298,7 @@ def test_barrier_in_overridden_get_grid_size_expanded_kernel(): vecsize = 16 prog = lp.split_iname(prog, "i", vecsize, inner_tag="l.0") - from testlib import GridOverride + from .testlib import GridOverride # artificially expand via overridden_get_grid_sizes_for_insn_ids knl = prog["loopy_kernel"] diff --git a/test/test_numa_diff.py b/test/test_numa_diff.py index 751d537e8..21cac2525 100644 --- a/test/test_numa_diff.py +++ b/test/test_numa_diff.py @@ -63,7 +63,7 @@ def test_gnuma_horiz_kernel(ctx_factory: cl.CtxFactory, ilp_multiple, Nq, opt_le # hsv = hsv_s hsv = lp.add_nosync(hsv, "any", "writes:rhsQ", "writes:rhsQ", force=True) - from gnuma_loopy_transforms import ( + from .gnuma_loopy_transforms import ( fix_euler_parameters, set_D_storage_format, set_q_storage_format, From fae0349edc3c032903fa82aebe8104fd3acaeeb9 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 26 May 2026 19:14:57 -0500 Subject: [PATCH 2/3] Add a few override decorators --- loopy/types.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/loopy/types.py b/loopy/types.py index bced31e43..534cdfffa 100644 --- a/loopy/types.py +++ b/loopy/types.py @@ -180,10 +180,12 @@ class AtomicNumpyType(NumpyType, AtomicType): def __hash__(self): return 0xa7031c ^ hash(self.dtype) + @override def update_persistent_hash(self, key_hash: Hash, key_builder: KeyBuilder) -> None: key_builder.rec(key_hash, 0xa7031c) key_builder.rec(key_hash, self.dtype) + @override def __repr__(self): return "np_atomic:%s" % repr(self.dtype) From 37d0d8fec07f64373babe90a71f3531d7e3c9661 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 26 May 2026 19:15:13 -0500 Subject: [PATCH 3/3] Add pyrefly config --- pyproject.toml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 45f3e90c0..fd944fdc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -231,3 +231,34 @@ reportUnknownArgumentType = "none" reportUnknownMemberType = "hint" reportUnknownParameterType = "none" reportUnknownVariableType = "none" + +[tool.pyrefly] +project-includes = [ + "**/*.py*", +] +project-excludes = [ + "proto-tests/*.py", + "contrib/mem-pattern-explorer/*.py", + "loopy/ipython_ext.py", + "loopy/frontend/fortran/*.py", + "doc", + ".conda-root", + ".venv", +] +preset = "strict" +infer-with-first-use = false + +[tool.pyrefly.errors] +implicit-any-parameter = "ignore" +implicit-any-empty-container = "ignore" +missing-override-decorator = "warn" +bad-override = "warn" + +[[tool.pyrefly.sub-config]] +matches = "test/*.py" +[tool.pyrefly.sub-config.errors] +missing-override-decorator = "ignore" +bad-override-param-name = "ignore" + +bad-argument-type = "warn" +missing-attribute = "warn"