I tried to put the stuff I was talking about yesterday into practice, and it didn't work out. I think it needs more planning, so I'll once again wait until the weekend.
The main thing I found out is that "passing IO objects into subprocess.run" doesn't work, so it's probably not worth trying to do that up-front.
I started roughing out the pyproject-build and Package stuff, and it ended up as a big mess because I didn't plan it properly.
I'm thinking about the kind of stuff that needs to happen for each phase, and it's pretty confusing.
At the top level, it needs a generator that takes an output directory and some kind of aggregated structure combining paths to use. The return value needs to be an aggregated data structure that associates to the existing data, objects that can be passed into the pip functions to consume the output files created by the action.
Looking over some of the files I want to put together, I see that it needs the full path as well, but also it needs, say it with me, data that isn't available at graph generation time. As such, I'm going to end up leaning even more on generating input files for some of this. This is... probably fine.
I think I'm going to have to set up some kind of shared object that has this information and asynchronous communication stuff set up. Either that, or defined channels associated with the different actions. I suppose I could kind of cheat and just read some stuff from the files that I'm writing. Just be like, okay, we know that this requirements.txt file just contains a single project name, so just, like, interpolate that in.
Eesh, this is going to be so brittle. I guess I just need really thorough tests.
And some really thorough planning so I know which steps need what information and what they'll have to do with it...
This entry went late, so I'm just cutting it off here.