From 99fd9ff7992b9a1ac78bc91c57c2b4cbd512596d Mon Sep 17 00:00:00 2001 From: George Hotz Date: Tue, 28 Oct 2025 08:47:20 +0800 Subject: [PATCH] more explicit --- tinygrad/uop/spec.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tinygrad/uop/spec.py b/tinygrad/uop/spec.py index 00e0289615..b03124a8fe 100644 --- a/tinygrad/uop/spec.py +++ b/tinygrad/uop/spec.py @@ -2,7 +2,7 @@ import math from typing import cast, Any from tinygrad.uop.ops import PatternMatcher, UPat, GroupOp, Ops, UOp, print_uops, AxisType, KernelInfo, pyrender from tinygrad.dtype import DType, ImageDType, dtypes, PtrDType, AddrSpace, Invalid -from tinygrad.helpers import DEBUG, Context, prod, SPEC +from tinygrad.helpers import DEBUG, Context, prod, SPEC, Metadata from tinygrad.uop.validate import validate_index # four specs: @@ -244,13 +244,15 @@ def type_verify(ast:UOp|list[UOp], check_spec:PatternMatcher): if DEBUG >= 3: print_uops(lst) raise RuntimeError(f"UOp verification failed at {i} on {u.op} {u.dtype} {len(u.src)} {[(x.op, x.dtype, x.arg) for x in u.src]} {u.arg}") +# late imports to avoid circular import +from tinygrad.codegen.opt import Opt, OptOps +from tinygrad.schedule.rangeify import BufferizeOpts, Kernel +glbls:dict[str, Any] = {"inf": math.inf, "nan": math.nan, "KernelInfo": KernelInfo, "Kernel": Kernel, "Metadata": Metadata, + "UOp": UOp, "dtypes": dtypes, "Ops": Ops, "AxisType": AxisType, "Invalid": Invalid, + "Opt": Opt, "OptOps": OptOps, "BufferizeOpts": BufferizeOpts, "AddrSpace": AddrSpace} def eval_pyrender(code:str) -> UOp: - from tinygrad.dtype import AddrSpace - from tinygrad.codegen.opt import Opt, OptOps - from tinygrad.schedule.rangeify import BufferizeOpts, Kernel - lcls:dict[str, Any] = {"inf": math.inf, "nan": math.nan, "KernelInfo": KernelInfo, "Kernel": Kernel, - "Opt": Opt, "OptOps": OptOps, "BufferizeOpts": BufferizeOpts, "AddrSpace": AddrSpace} - exec(code, None, lcls) + lcls:dict[str, Any] = {} + exec(code, glbls, lcls) return lcls['ast'] def test_pyrender(test_ast:UOp, assert_parents=True):