Pip 2021-02-21

By Max Woerner Chase

I haven't made any dramatic breakthroughs on the last test I have. I'm just going to try to lay out what I know.

I am creating a wheel at... wait. I have a suspicion about what's going wrong. If I'm failing to properly replace the wheel tags...

Okay, I've done something less brittle. Wish me luck! Or don't, the test will run well before I need to publish this.

Hm, didn't work, let's see what happened...

It's still hard to figure out what's going wrong. It looks clear that it's possible for the URL constraint code I added to just not fire. Which is troubling. The way that this would happen that makes the most sense to me is that the constraint isn't being added. Why could that be...

Okay, there's a bunch of code that I added, and all of the other tests pass, so the problem is either specific to what the test is asserting, or how the test is written. I'm going to go over the test in excruciating detail.

The buggy behavior that results is kind of special, because instead of just "what I expected" and "what happened", there's:

So, the first version corresponds to "knew about the constraint, generated no candidates because it didn't match the installation platform, backtracked to lower version of base". The second version corresponds to "knew about the constraint, generated a candidate because I didn't set the wheel tags properly, installed latest base". The third version, I can't be as sure of, because it happened outside my head, but it looks like either the constraint didn't get populated, or the constraint failed to reject a completely different path.

The latter option, I'll try to check, because I wrote the rejection code and it's not completely trivial. ... It is pretty close to trivial, though, and it sure looks like it should be capable of distinguishing the paths at issue.

All the same, the only way I can see to pin this outside my code is to suppose some form of filtering step that's stopping the constraint from populating, and that doesn't seem to exist.

At the same time, I have tests passing that require the constraint logic to fire under some conditions.

So, I'm going to want to fix my wheel generation just because it's really doubtful that what I'm doing currently works. However, once I'm satisfied with that, I'm going to have to ask for help, because I don't think that's going to fix it, and something is really wrong. I'll try to work on the first part while this publishes.

Good night.