Status of node-graph: Defined dunder methods, and also removed various other bits of noise. Defined partial derivatives, and found yet another old bug, thanks to the assert I added earlier.
I think the next step is to work on visitor interfaces for this stuff, so I can start constructing networks.
On the other hand, this code is incredibly intimidating, and the fact that I've got some random magic numbers in here doesn't help.
There's something missing in terms of documenting the motivation for some of the code I've written recently. I'm not sure I have anything concrete that I can point to as "not the way it should be". Maybe the place to start rectifying this sensation is in documenting the actual format of the various data types I've defined. It's definitely hard for me to grasp some of the things I've set up the code to do. Like in the intervening years, I've lost the full weight of the aesthetics deriving the design, so I'm falling back somewhat on "eh, seems to work".
Hm. On a whim, I ran pylint against node-graph. Per usual when running pylint against my code, I ran across bugs in pylint the existence of which I never would have considered.
It occurs to me that maybe one issue I have with pylint is the idea of collapsing everything into a single numerical score. Like, when it comes to code, you've got concerns like "that spacing is unreadable" or "that looks like it can't ever work". But you've also got concerns like "do you actually need to use a metaclass there?". I'm not sure that any pair of those is different only in degree. Maybe it's just way too late at night, but it seems weird to me to put them all into a single one-dimensional score, such that one could in theory "trade" one for another and get "equivalent" code of a very different character.
But yeah, it's late. Good night.