Repository navigation
fix(deps): uv.lock portait deux fois le même paquet, et ne se lisait plus - #305
Merged
Merged
Conversation
…plus
`uv` refusait tout sur main :
error: Failed to parse `uv.lock`
Caused by: Found duplicate package `atheris==3.0.0`
Donc plus de `uv run`, plus de tests, plus de hooks pre-commit, plus de lint :
l'outillage entier du dépôt était à l'arrêt pour quiconque partait de main.
C'est ma faute, et le mécanisme mérite d'être écrit. J'ai fusionné coup sur coup
deux PR Dependabot qui touchent toutes deux le verrou — virtualenv (#301) puis
le groupe des dépendances mineures (#302) — en rebasant chacune sur main. La
fusion à trois branches a vu les deux côtés AJOUTER le même bloc `atheris
3.0.0` et a gardé les deux : un conflit sémantique qu'aucun conflit textuel ne
signale. Les deux blocs étaient strictement identiques, octet pour octet.
Le correctif retire le doublon exact, et lui seul : les 51 autres blocs sont
intacts, dont le `atheris 3.1.0` légitime qui coexiste avec la 3.0.0 pour des
marqueurs de version différents.
Vérifié sur le verrou réparé : `uv lock --check` résout 51 paquets, `uv run`
répond, 1289 tests verts, ruff et mypy propres.
La leçon pour la suite : deux PR qui touchent le même verrou ne se fusionnent
pas l'une après l'autre sans rejouer la CI entre les deux. La CI de la seconde
avait été jouée AVANT la fusion de la première, donc sur un verrou qui n'était
plus celui du résultat.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mainest actuellement inutilisable pour quiconque lanceuv:Plus de
uv run, donc plus de tests, plus de hooks pre-commit, plus de lint :l'outillage entier du dépôt est à l'arrêt sur un clone frais de
main.Comment je l'ai cassé
C'est ma faute, et le mécanisme mérite d'être écrit, parce qu'il se reproduira.
J'ai fusionné coup sur coup deux PR Dependabot qui touchent toutes deux le
verrou —
virtualenv(#301) puis le groupe des dépendances mineures (#302) —en rebasant chacune sur
main. La fusion à trois branches a vu les deux côtésajouter le même bloc
atheris 3.0.0, et elle a gardé les deux. Les blocsétaient strictement identiques, octet pour octet : un conflit sémantique
qu'aucun conflit textuel ne signale, et qu'aucune analyse statique ne voit.
La CI de #302 avait été jouée avant la fusion de #301 : elle a donc validé
un verrou qui n'était plus celui du résultat.
Le correctif
Il retire le doublon exact, et lui seul : les 51 autres blocs sont intacts,
dont le
atheris 3.1.0légitime qui coexiste avec la 3.0.0 pour des marqueursde version de Python différents.
Vérifié sur le verrou réparé
Type of change
Checklist
Always
ruff,mypy,pytest— tous joués ci-dessus, tous vertspytest tests_e2e— non joué : il construit la roue et l'installedans un venv jetable, ce qui ne dépend pas du verrou de développement.
Il tourne en CI sur cette PR
une suppression de doublon dans un fichier de verrouillage
When behavior changes
N/A— aucun comportement ne change, et aucune version n'est publiée : leverrou reparse, c'est tout. Les entrées de CHANGELOG des deux releases
concernées restent exactes.
Les autres blocs
N/A— ni commande, ni workflow, ni contrat touchés.La règle que j'en tire
Deux PR qui touchent le même verrou ne se fusionnent pas l'une après l'autre
sans rejouer la CI entre les deux. Je rebaserai et attendrai la CI entre
chaque, à l'avenir — c'est exactement ce que la politique « branche à jour
avant fusion » du ruleset exige, et que le contournement administrateur m'a
laissé sauter.
🤖 Generated with Claude Code