Coding 2021-12-01

By Max Woerner Chase

I ended up getting a bit distracted improving the typing strictness in MOTR, part of which ended up turning into PRs against other libraries. I... did not do so great with those PRs; I assume they'll get moving in a bit. (This would all be so much easier if pylint would stop regressing things when it updates...)

Anyway, I have some stub classes for implementing the Pip versions of the Protocols I need, so let's zoom in on what needs to happen there.

All right, that was pretty painless. So, let's see what this new Pip class, that I got from not needing to note the kind of class, will need.

It needs to convert all of that into a working environment, and it does so as follows:

I thought I might need something a bit more involved in some cases, but I suspect I was misreading the Mypy documentation. It would be best to do the following things:

I'm also going to need to review how I'm going to fit using pyproject-build into this flow, because that's going to be the code responsible for generating a bunch of the requirements and constraints files, and it's also complex enough that it can't fit into the same ecosystem that it's going to be supporting.

So, things to work on now:

Actually, it's occurring to me that I should really be able to construct a pip command without needing to rely on the Key stuff directly, by leveraging Builders.

I made the changes now, and I'll see what I think of all that later. It might be somewhat unfortunate that I can't be completely consistent about removing late binding, because that's what the Command object must do, but oh well, this should simplify some things, I think/hope. Or maybe the interface comes out looking virtually identical, but the Installer Protocol is theoretically more flexible.

It's all good. Anyway, I'm going to wrap up for now, and start working on that list later.

Good night.