```class PythonToolRequirementsBase(Subsystem): .....
# random
c
Copy code
class PythonToolRequirementsBase(Subsystem):
...
+   @memoized_classmethod
    def rules(cls: Any) -> Iterable[Any]:
        yield from super().rules()
I turns out you can break all python tools at once. using
classmethod
works (well, the rule graph closes), and the parent is memoized. I'm not sure why any of it works or doesn't