erplibre/requirement/requirements.odoo18.0_python3.12.10.txt
Mathieu Benoit 3fbde848f8 [ADD] poetry: pin a dependency per architecture
factur-x >= 4.0 needs saxonche, which Saxonica ships no s390x wheel for.
Pin 3.x there, 4.2+ everywhere else.

PEP 508 markers now survive the whole chain: kept instead of evaluated,
and each line reaches "poetry add" as a single argument -- the
"grep -v ';'" silently dropped them. Since "poetry add" dedupes by name,
the multi-constraint form, which the CLI cannot express, is written back
into the pyproject and the lock regenerated.

PyMuPDF is set aside on s390x for the same reason: MuPDF does not build
there. Along the way, the ignore list missed pymssql, whose key carried
its version, and two pre-existing solver deadlocks, lxml-html-clean and
s3fs, blocked any regeneration.

--- FR ---

factur-x >= 4.0 dépend de saxonche, sans roue s390x chez Saxonica. On
épingle la 3.x là-bas, la 4.2+ ailleurs.

Le marqueur PEP 508 traverse maintenant la chaîne : il est conservé au
lieu d'être évalué, et chaque ligne devient un seul argument de « poetry
add » — le « grep -v ';' » écartait ces lignes en silence. « poetry add »
dédupliquant par nom, la forme multi-contraintes, hors de portée du CLI,
est réécrite dans le pyproject, puis le lock refait.

PyMuPDF est écarté sur s390x pour la même raison : MuPDF ne s'y construit
pas. Au passage, la liste d'ignorés ratait pymssql, dont la clé portait sa
version, et deux blocages préexistants du solveur, lxml-html-clean et
s3fs, interdisaient toute régénération.

Assisted-by: Claude Opus 5
2026-08-16 06:11:44 -04:00

103 lines
2.7 KiB
Text

# For OSX
cython
setuptools==80.10.2
# Module voice_to_text
#SpeechRecognition==3.10.0
# Module detect_unauthorized_login
#opencv-python
# Module advanced_payment_cybersource
#cybersource-rest-client-python==0.0.56
# Module translation_helper
googletrans-py==4.0.0
#googletrans==4.0.0-rc1
#chardet==3.0.4
openai
# Module infobip_whatsapp_integration
# Ignore it, need another version of requests
# infobip-api-python-sdk==5.0.0
# Module extra unknown name
filetype
PyPDF2
img2pdf
# For logical test and quality
git+https://github.com/psf/black.git@24.8.0
pre-commit
# Fix vonage package depend on vonage-verify-v2 1.1.3, but not exist into pip
#vonage-verify-v2==1.1.4
# Fix poetry
#hubspot-api-client==10.0.0
# Optional Odoo
#pdfminer
pdfminer.six==20260107
# Optional PyDev
pydevd-odoo
# Mail check
flanker
# For optimal json
orjson
# For fixing module ocr_data_retrieval check file ocr_data_retrieval/models/ocr_data_template.py
#spacy==3.8.2
# Fix update dateutil from odoo
#python-dateutil>=2.8.2
# Extra module
meteostat==1.6.8
# Fix build
beautifulsoup4==4.13.5
# pylint-odoo depend on pylint==3.3.9 https://github.com/OCA/pylint-odoo/pull/541
#pylint-odoo==9.3.22
#pylint==3.3.9
isort==7.0.0
git+https://github.com/mathben/flanker.git@update_imghdr_python3
# Fix some OS
cryptography==46.0.5
pyopenssl==26.0.0
# This will ignore pyopenssl from pysaml2==7.5.4
git+https://github.com/prauscher/pysaml2.git@replace-pyopenssl
# Fix compilation, until pymssql==2.3.9 is release
#git+https://github.com/pymssql/pymssql.git
pandas==2.3.3
pillow==12.2.0
# OCA_storage amène « fsspec[s3] » sans borne : l'extra s3 de fsspec 2026.7.0
# exige s3fs>=2026.6.0, incompatible avec l'épingle 2026.4.0. On aligne s3fs sur
# fsspec ; aiobotocore 3.1.2 reste dans la plage exigée (>=2.19.0,<4.0.0), donc
# le trio botocore/boto3 n'a pas à bouger.
s3fs==2026.7.0
aiobotocore==3.1.2
botocore==1.42.42
boto3==1.42.42
# factur-x >= 4.0 dépend de saxonche, qui encapsule SaxonC. Saxonica ne publie
# de roue que pour x86_64, aarch64, macOS et Windows — aucune pour s390x, et
# aucune distribution source : rien à installer, rien à compiler. La cause est
# en amont, GraalVM Native Image ne ciblant pas s390x.
# La 3.x n'exige que lxml et pypdf. On y retombe là où saxonche n'existe pas,
# au prix de la validation Schematron.
factur-x>=4.2 ; platform_machine != 's390x'
factur-x<4 ; platform_machine == 's390x'
# lxml-html-clean 0.4.5 (2026-05-20) exige lxml>=6.1.1, alors qu'Odoo 18 épingle
# lxml==5.2.1 : le solveur poetry n'a plus de solution. Les versions jusqu'à
# 0.4.4 n'imposent aucune borne sur lxml — vérifié sur PyPI, release par
# release. À lever le jour où lxml montera.
lxml-html-clean<0.4.5