Hi everyone
As you may have noticed, my personal availability to work on compatibility 
issues for yt has been decreasing. Meanwhile, [dependency hell keeps breaking 
loose](https://github.com/yt-project/yt/issues/5301) . I'm growing wary of this 
kind of "implicit upgrades" constantly breaking CI at unpredictable (and 
inconvenient) times, so I would like to propose a long-term solution, that will 
help isolating them so they:

- do not incapacitate normal CI
- can be dealt with on our on schedule
- (but are still automatically detected)

Basically the solution is to build two separate CI modes:

- stable (locked): this is the regular CI that runs on every PR. It should be 
reliable and only break when *our* code breaks.
- unstable (unlocked): this is akin to our "bleeding-edge" CI now, but instead 
of just running against a couple, hand-picked dependencies at pre-release 
stage, it's role would be expanded to running against all the latest 
dependencies (including potentially broken ones), and mimic what users get from 
running `pip install yt` at a given time.

"locking" test environments means:

- skip dynamic dependency resolution on stable CI, using a static lockfile 
instead (think of it as a known-good record of yt's dependency tree)
- periodically upgrade the lock's content with automated PRs. Points of failure 
will be isolated to *these* PRs (and bleeding-edge CI).

I know how to implement all of this with uv, but I also know that some may feel 
concerned about changing the testing strategy, so I'd like to open a discussion 
first. Are there any strong objections or concerns I should try to address 
first ?

Cheers
Clément
_______________________________________________
yt-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/yt-dev.python.org
Member address: [email protected]

Reply via email to