Coding 2025-09-18

By Max Woerner Chase

I'm still poking at lint errors, and making slow progress. Part of the reason it wasn't faster was because I hit a bad interaction in all of the metaprogramming I'm doing.

Basically, for some node types, there's an inherited public method that forwards to an overridden private method, right? And I was trying to inject documentation from the private method into a copy of the public method. But I was doing this in __init_subclass__, which should have been fine, except that all of the leaf classes that need this are attrs classes, which gets you two classes per class. This is why all of my documentation was getting injected twice: first it gets injected in the non-slots class that is input to attrs.frozen, then it gets injected again when the method is referenced in the new slots class in the output.

I opted to fix this by simply keeping a list of private implementations on the public copy. This seems to work, but maybe I'll notice something weird later.

Anyway, it's late, gotta sleep.

Good night.