Textual était déclaré sans version. Les quatre écrans TUI du dépôt sont écrits pour la 8, et la bibliothèque casse son API entre majeures : un « pip install -U » les casse tous sans prévenir. Borner le fichier de requirements ne suffisait pas. install_command() faisait « pip install textual », sans borne : « make install » aurait pris la 8, et l'installation proposée à l'écran la majeure suivante. Deux chemins pour la même dépendance, qui ne disent pas la même chose. La borne vit donc dans une seule constante, TEXTUAL_SPEC, que install_command() utilise, et que le fichier de requirements recopie avec un commentaire qui pointe dessus. La borne ne s'applique qu'à l'installation : ensure() vérifie « est-ce importable », pas « à quelle version ». Un Textual 9 déjà présent passe, et c'est volontaire — refuser de démarrer sur une version qui marche peut-être serait pire que le problème. lxml devient une dépendance déclarée. Il n'arrivait que par pykeepass, openupgradelib et odoo-module-migrator ; le jour où l'un d'eux s'en passe, il disparaît d'un venv sans que rien ne le réclame. Sans borne : cyclonedx-python-lib demande déjà « lxml >=4,<7 », en ajouter une seconde n'apporterait qu'un conflit possible. Vérifié : install_command() porte la borne, l'insertion de « --user » hors venv reste au bon rang, et le Textual installé (8.2.8) la satisfait. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| database_manager.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| migration_form.py | ||
| migration_stats.py | ||
| qemu_deploy_form.py | ||
| qemu_install_monitor.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| source_todo.sh | ||
| textual_setup.py | ||
| todo.json | ||
| todo.py | ||
| todo_example.json | ||
| todo_file_browser.py | ||
| todo_i18n.py | ||
| todo_prefs.py | ||
| todo_telemetry.py | ||
| todo_upgrade.py | ||
| version_manager.py | ||
TODO is an assistant robot to use ERPLibre
Execute it with ./script/todo/todo.py or make todo.
For a new project, copy todo_example.json to private/todo/todo_override.json | private/todo/todo_override_private.json and edit it.