| 140 | if self.op is Ops.BUFFER and self.realized is not None: args.append(self.realized) |
| 141 | return UOp, tuple(args) |
| 142 | def replace(self, **kwargs) -> UOp: |
| 143 | new_args = (kwargs.pop("op", self.op), kwargs.pop("dtype", self.dtype), kwargs.pop("src", self.src), |
| 144 | kwargs.pop("arg", self.arg), kwargs.pop("tag", self.tag)) |
| 145 | assert len(kwargs) == 0, f"unused kwargs in replace {list(kwargs)}" |
| 146 | if (self.op, self.dtype, self.src, self.arg, self.tag) == new_args: return self |
| 147 | return UOp(*new_args) |
| 148 | def rtag(self, tag=True): return self.replace(tag=tag) |
| 149 | @recursive_property |
| 150 | def key(self) -> bytes: |