2025-08-07 04:45:54 -04:00
|
|
|
# ERPLibre Poetry requirement
|
|
|
|
|
packaging
|
|
|
|
|
toml
|
|
|
|
|
|
|
|
|
|
# ERPLibre script
|
|
|
|
|
giturlparse
|
|
|
|
|
agithub
|
|
|
|
|
GitPython
|
|
|
|
|
retrying
|
|
|
|
|
xmltodict
|
|
|
|
|
openupgradelib
|
|
|
|
|
unidiff
|
|
|
|
|
colorama
|
|
|
|
|
wheel
|
|
|
|
|
selenium
|
|
|
|
|
uvloop
|
|
|
|
|
python-randomword-fr
|
|
|
|
|
isort
|
[IMP] format : un formateur par contexte, ruff pour l'outillage
« make format » donnait isort et black à tout fichier Python : la cible py37,
plus petit dénominateur commun de six dépôts d'addons, imposait son style au
code de ce dépôt. Le contexte décide désormais — les modules Odoo gardent isort
et black, le reste passe par ruff, réglé dans .ruff.toml, comme la norme OCA
depuis qu'elle a quitté black. Les dépôts rapatriés sous script/ en sont
écartés, chemin nommé compris. La cible y reste py310 : dès 3.14 ruff écrit
« except A, B: » sans parenthèses, que le python3 des hooks ne sait pas lire.
Vérifié : un fichier reçoit deux normes selon son chemin, et aucun dépôt
rapatrié n'est touché.
--- EN ---
"make format" gave isort and black to every Python file: the py37 target,
lowest common denominator of six addons repositories, imposed its style on this
repository's code. Context now decides — Odoo modules keep isort and black,
everything else goes through ruff, set in .ruff.toml, as the OCA standard does
since it left black. The repositories checked out under script/ are excluded, a
named path included. The target stays py310 there: from 3.14 on, ruff writes
"except A, B:" unparenthesised, which the python3 of the hooks cannot read.
Checked: one file gets two standards by its path, and no checked-out
repository is touched.
Assisted-by: Claude Opus 5
2026-09-24 13:29:11 -04:00
|
|
|
# Formatage et tri des imports de l'outillage : il suit les versions de
|
|
|
|
|
# CPython, là où black 24.8.0 s'arrête à py313. Voir .ruff.toml.
|
|
|
|
|
ruff
|
2025-08-07 04:45:54 -04:00
|
|
|
pykeepass
|
2026-08-10 03:10:50 -04:00
|
|
|
cryptography
|
|
|
|
|
keyring
|
2025-08-07 04:45:54 -04:00
|
|
|
click
|
|
|
|
|
aioshutil
|
2026-05-26 18:10:04 -04:00
|
|
|
python-magic
|
2025-08-07 04:45:54 -04:00
|
|
|
openai
|
|
|
|
|
humanize
|
|
|
|
|
requests
|
2025-08-07 06:28:34 -04:00
|
|
|
urwid
|
2026-08-07 03:22:26 -04:00
|
|
|
# Borne recopiée de script/todo/textual_setup.py (TEXTUAL_SPEC) : les écrans TUI
|
|
|
|
|
# sont écrits pour Textual 8, qui casse son API entre majeures. Modifier les deux.
|
|
|
|
|
textual>=8,<9
|
[ADD] migration state: colour the commands, and know when not to
A list of commands in flat text blends into its own headings the moment it
outgrows the screen — which is exactly when it gets read. Commands are now
cyan, steps bold blue, failed ones red, and each verdict wears the colour
of its meaning: 1 is amber, because « there is something to look at » is
not a crash and painting it red worries for nothing.
Colour is refused three times over, and each refusal has cost someone: a
log file full of escape codes, a grep that finds nothing, a terminal that
prints them as text. A pipe is not a screen, and NO_COLOR is honoured.
The full screen goes through Text.from_ansi, which does two things: it
renders the colours, and it takes the rest literally. Textual parses Rich
markup, so a command containing « [1] » was being eaten as a tag and
vanished from the pane without a word. That was true before the colour.
--- FR ---
[ADD] état de migration : colorer les commandes, et savoir s'en abstenir
Une liste de commandes en texte plat se confond avec ses titres dès
qu'elle dépasse l'écran — et c'est justement quand elle le dépasse qu'on
la lit. Les commandes sont en cyan, les étapes en bleu gras, celles qui
ont échoué en rouge, et chaque verdict porte la couleur de son sens : 1
est ambre, car « il y a quelque chose à regarder » n'est pas une panne.
La couleur se refuse trois fois, et chaque refus a coûté à quelqu'un : un
fichier de journal truffé de codes d'échappement, un grep qui ne trouve
plus rien, un terminal qui les affiche en clair.
Le plein écran passe par Text.from_ansi, qui rend les couleurs ET prend le
reste au pied de la lettre : une commande contenant « [1] » était avalée
comme du balisage Rich et disparaissait sans un mot.
Assisted-by: Claude Opus 5
2026-08-19 05:36:49 -04:00
|
|
|
# Dépendance DIRECTE, même si Textual l'installe : l'écran d'état décode
|
|
|
|
|
# l'ANSI avec rich.text.Text.from_ansi. Compter sur une dépendance
|
|
|
|
|
# transitive, c'est dépendre du jour où Textual changera la sienne.
|
|
|
|
|
rich
|
2026-08-07 03:22:26 -04:00
|
|
|
# Dépendance directe : les outils d'analyse comparent des arbres XML avec lxml.
|
|
|
|
|
# Il n'arrivait que par pykeepass / openupgradelib / odoo-module-migrator, donc
|
|
|
|
|
# un jour où l'un d'eux s'en passe, il disparaît sans que rien ne le réclame.
|
|
|
|
|
lxml
|
[FIX] requirement erplibre : déclarer openpyxl, sauter sans lui
Three Transform data tests wrote an Excel workbook with openpyxl, which the
.venv.erplibre requirements never declared, so the unit suite reported three
errors on every install. openpyxl is now declared there. The tests skip when it
cannot be imported in their own interpreter, since a venv built before this
line still lacks it; the dedicated engine venv is not the right probe, as the
tests write their workbook in-process. Checked: 707 Transform tests pass, and
with openpyxl made unimportable the three are skipped, not errors.
--- FR ---
Trois tests de Transform data écrivaient un classeur Excel avec openpyxl, que
les dépendances de .venv.erplibre ne déclaraient pas : la suite unitaire
rendait trois erreurs sur toute installation. openpyxl y est désormais
déclaré. Les tests se sautent quand il ne s'importe pas dans leur interpréteur,
un venv bâti avant cette ligne ne l'ayant toujours pas ; le venv dédié du
moteur n'est pas la bonne sonde, les tests écrivant leur classeur sur place.
Vérifié : 707 tests de Transform passent, et openpyxl rendu inimportable, les
trois sont sautés et non en erreur.
Assisted-by: Claude Opus 5
2026-09-16 02:59:01 -04:00
|
|
|
# Classeurs Excel de « Transform data », et les tests qui les éprouvent. Le
|
|
|
|
|
# moteur garde son venv dédié (script/todo/transform_setup.py) : un
|
|
|
|
|
# .venv.erplibre installé avant cette ligne n'a pas openpyxl, et le code ne
|
|
|
|
|
# l'importe donc jamais au niveau d'un module.
|
|
|
|
|
openpyxl
|
2025-10-01 04:53:08 -04:00
|
|
|
python-dotenv
|
2025-10-31 02:29:52 -04:00
|
|
|
python-dateutil
|
2025-10-31 17:26:58 -04:00
|
|
|
unidecode
|
2025-11-02 02:12:33 -05:00
|
|
|
cloudflare
|
2025-12-22 04:02:44 -05:00
|
|
|
psutil
|
2026-03-06 19:15:11 -05:00
|
|
|
mmg
|
2026-03-07 01:38:55 -05:00
|
|
|
pip-audit
|
2026-03-08 18:59:00 -04:00
|
|
|
tldextract
|
|
|
|
|
PyYAML
|
2025-08-07 04:45:54 -04:00
|
|
|
|
2025-12-28 00:37:45 -05:00
|
|
|
# For mobile
|
|
|
|
|
pillow
|
|
|
|
|
|
2025-08-07 04:45:54 -04:00
|
|
|
# Force upgrade package to fix Ubuntu 25.04
|
2026-02-04 09:45:08 -05:00
|
|
|
virtualenv==20.36.1
|
2025-08-07 04:45:54 -04:00
|
|
|
|
|
|
|
|
# For logical test and quality
|
|
|
|
|
git+https://github.com/psf/black.git@24.8.0
|
2025-08-07 06:28:34 -04:00
|
|
|
pre-commit
|
|
|
|
|
|
2026-08-10 03:10:50 -04:00
|
|
|
# Bac à sable du client courriel : un VRAI serveur SMTP et un VRAI serveur
|
|
|
|
|
# IMAP, sur loopback, pour tester ce qu'un faux transport ne peut pas —
|
|
|
|
|
# littéraux IMAP, en-têtes 8 bits, coupures en plein FETCH. Utilisés
|
|
|
|
|
# UNIQUEMENT par les tests, jamais par le client lui-même : les tests
|
|
|
|
|
# concernés s'ignorent d'eux-mêmes si ces paquets manquent.
|
|
|
|
|
aiosmtpd
|
|
|
|
|
twisted
|
|
|
|
|
|
2025-08-07 06:28:34 -04:00
|
|
|
odoo-module-migrator
|
2026-03-08 18:59:00 -04:00
|
|
|
|
|
|
|
|
# Ignore because need installation system
|
|
|
|
|
# pymysql
|
|
|
|
|
# Don't forget to install selenium script/selenium/requirements.txt
|