Today, I improved my coverage metrics by deciding that some of the code I added didn't make sense, so I deleted a bunch of it.
Looking for other low-hanging fruit, I noticed some code I added that should have been running, but wasn't, because I didn't update the rest of the code to properly invoke it. That improved things a little further. Now I'm just missing "what about subclasses that don't define an __init__, but a superclass does?", and various invocations of annotations and alias helpers. I should just put aside some time to work through those, but I don't feel like it right now.
My longer-term plans, once this has full coverage:
- Make sure that these changes I made to punq actually enable the use cases that motivated the fundamental changes here in the first place. The place to look for this is in the Risus CLI functions.
- Remember what I was planning to do with Mythic. I think my intention was to make the sheet a resolution-time argument, which I now realize I didn't need to make all these changes to enable, but I only realize that because of what I learned making the changes, so I guess it sort of works out.
- Get this into a state where I can make it a proper fork, since I really don't think it'd make sense to merge up all of the changes I've made, but I'm willing to offer up some of them. Especially since some of the more drastic ones turned out to be unnecessary.
- Actually understand some of the core logic that I barely touched. I mean, clearly I didn't break it for simple cases, but for more complicated stuff...
Actually, looking over some of that code, I'm kind of skeptical of bits of it, and I'm going to try changing more of the base logic and see what happens. Eh, need more planning. And it's not hurting anything, currently. I'm thinking that the cache value format for ResolutionContexts should be changed so it has fields like first: T; rest: Optional[Tuple[T, ...]]. That's a tomorrow question, though.