Coding 2024-05-27
Taking another look at the cli_types package...
- artifact: High-level code for ... I'll get back to you on that.
- combinable: Protocol for a generic magma.
- entry: Small module with a set of marker types.
- environment: Small module for... something looks weird here... Okay, so there's a type-level marker, but it's attached to a small dataclass that handles resolution within a virtual environment? And this marker is, at least in part, propagated via a protocol class? I suppose a good condidate for stuff to bundle with this would be "whatever implements the protocol?" Except that it's not implemented anywhere in cli_types. It's implemented once, which, shh... shh...
- executable: Tiny module for specifying a program entry point accessible in an abstract way.
- installer: Does stuff with environment.
- invocation_environment: Ties together a bunch of this stuff as well as lower-level stuff, to represent an abstracted command argument, and the installers needed to make it specific.
- not_output: A helper function for preventing various data structures from containing an io.Output value. I wonder if it makes sense to decouple iteration from instance checking?
- parametric_command: Due for renaming to "command_matrix" or something. I think this is the thing that the cli modules use to represent the basic form of a command, which isn't really a clear description.
- path_with: Class to associate some data to a path. I should consider whether I want the path to default to anything in particular.
- program: Marker class.
- runner: Another part of the whole "tower of abstraction" thing.
It's late, so I'm not going to touch anything tonight, but it looks like creating a package to bundle together marker types might not go amiss. Then again, it might. Regardless, the big division that's manifesting for me is the "tower of abstraction" vs "all the other stuff". Perhaps it would be illuminating to lay out the "tower", and figure out which levels "everything else" has to go "between"? I'll try that out later, I don't know exactly when.
All that said, I'm very worried about the scope of the merges I'm setting myself up for, so it would also be a good idea for me to review my coverage misses and see what's in the way of addressing them...
Anyway, time to stop messing around and get ready for bed.
Good night.