Coding 2025-04-21
As I alluded to in the summary, I'm intending to rework some of the Axes fields. The field in question is called box_labels, and the plan is to supplement it with two additional fields. These supplementary fields would be called something like defaultable_labels and defaulted_labels, which satisfy box_labels >= defaultable_labels >= defaulted_labels. One of the key derived fields would have a value of box_labels - defaulted_labels.
I'm currently looking over the usages of box_labels to see what would need to change.
- defaultable_labels and selection_labels must have an empty intersection.
- set_defaults_for_labels must add any defaulted values in defaultable_labels to defaulted_labels.
- product has to do a bunch of extra calculations that I've previously worked out.
- selections must check in box_labels - defaulted_labels, instead of just box_labels.
- draws_from_box must set defaultable_labels as well as box_labels.
- uses_own_defaults requires a new Axes method that I have previously worked out the behavior of.
Once that's in and I've confirmed that everything still works, my next step is to convert the inputs field from a Box to a DependentMapping[Callable[[Label[T]], tuple[T, Box]]], and make the following updates:
- Wait hold on, I'm not sure if this fixes the problem I encountered.
- Hm.
Basically, I want to know the default values that are relevant for the calculation of a Matrix associated with an Input. Now, the Matrix that goes into a PreInput will carry some of that information, and it shouldn't be possible to get it wrong, per se. What's missing is the defaults that got set after the PreInput was generated.
- Okay, this should work, actually.
- Basically, when calling Axes.set_defaults_for_labels, it needs to now pass the entire Box, not just the set of labels, and that Box has to be added to the right of the Box values in inputs. Question: can/should the values of default_arguments be filtered based on the contents of defaultable_labels?
- with_input must process its argument accordingly.
- without_inputs must use a different type value in order to typecheck.
- product has to... do... something... probably it should actually just keep doing what it's doing? Very confusing. Maybe it should be taking either the union or the intersection? Maybe needs to be checking against the other Axes fields. On further consideration, it should simply keep the same logic.
Well, that was a bit of a ride. I don't want to prolong it for tonight, so I'm going to wrap up for now, and see if this all still makes sense when I come back to it.
Good night.