erplibre/requirement/pyproject.odoo18.0_python3.12.10.toml
Mathieu Benoit aef98311f5 [ADD] requirement : déclarer markdown-it-py, moteur de rendu HTML
The researcher assistant renders the model's markdown into HTML before
sanitising it, and markdown-it-py is the engine. It is present in the
environment only through bandit -> rich, so a lint tool holds up the render
path of a portal page: dropping bandit would drop the engine, with no
diagnostic beyond an ImportError at request time. The pin is declared where
functional dependencies live, not among the development ones, and matches the
version already installed.

--- FR ---

L'assistant du chercheur rend le markdown du modèle en HTML avant de
l'assainir, et markdown-it-py est le moteur. Il n'est présent dans
l'environnement que par la chaîne bandit -> rich : un outil de lint porte
donc le chemin de rendu d'une page portail, et retirer bandit retirerait le
moteur, sans autre diagnostic qu'une ImportError au moment de la requête.
L'épingle est déclarée là où vivent les dépendances fonctionnelles, non
celles de développement, et reprend la version déjà installée.

Assisted-by: Claude Opus 5
2026-09-14 05:10:46 -04:00

243 lines
5.1 KiB
TOML

[build-system]
requires = [ "poetry>=1.8.3",]
build-backend = "poetry.masonry.api"
[tool.isort]
profile = "black"
py_version = 312
[tool.black]
line-length = 79
target-version = [ "py37",]
[tool.poetry]
name = "ERPLibre"
version = "1.8.0"
description = "Easy way to configure Odoo community"
license = "AGPL-3.0-or-later"
authors = [ "Mathieu Benoit <mathben@technolibre.ca>",]
[tool.poetry.dependencies]
python = ">=3.12.10,<3.13"
a2wsgi = ">=1.10.6"
aiobotocore = "3.1.2"
altcha = ">=2.0.0"
ansi2html = "^1.9.2"
apispec = "^6.10.0"
asn1crypto = "1.5.1"
astor = "^0.8.1"
avalara = "^26.7.3"
babel = "2.10.3"
bandit = "^1.9.4"
base64io = "^1.0.3"
beautifulsoup4 = "4.13.5"
bokeh = "3.6.3"
boto3 = "1.42.42"
botocore = "1.42.42"
cachetools = "^7.1.7"
cairosvg = "^2.9.0"
caldav = "1.3.9"
cbor2 = "5.6.2"
cerberus = "^1.3.8"
chardet = "5.2.0"
code-writer = "^1.3.0"
colorama = "^0.4.6"
contextvars = "^2.4"
cryptography = "46.0.5"
cssselect = "^1.5.0"
cython = "^3.2.9"
dateparser = "^1.4.2"
decorator = "5.1.1"
dnspython = "^2.8.0"
docutils = "0.20.1"
dropbox = "^12.2.1"
easypost = "7.15.0"
email-validator = "^2.3.0"
extendable = ">=0.0.4"
extendable-pydantic = ">=1.2.0"
extract-msg = "^0.56.0"
extruct = "^0.18.0"
ezdxf = "^1.4.4"
fastapi = ">=0.110.0"
filetype = "^1.2.0"
flake8 = "^7.3.0"
formio-data = "^2.1.7"
freezegun = "1.2.1"
geocoder = "^1.38.1"
geoip2 = "2.9.0"
geojson = "^3.3.0"
gevent = "24.2.1"
gitpython = "^3.1.59"
giturlparse = "0.12.0"
googletrans-py = "4.0.0"
greenlet = "3.0.3"
httpagentparser = "^1.9.9"
icalendar = "5.0.13"
idna = "3.6"
img2pdf = "^0.6.3"
isort = "7.0.0"
itsdangerous = "^2.2.0"
jinja2 = "3.1.2"
js2py = "^0.74"
libsass = "0.22.0"
lottie = "^0.7.2"
lxml = "5.2.1"
lxml-html-clean = "<0.4.5"
mako = "^1.4.1"
markdown-it-py = "4.2.0"
markdown2 = "2.5.1"
markdownify = "0.13.1"
markupsafe = "2.1.5"
matplotlib = "^3.11.1"
meteostat = "1.6.8"
mock = "^5.2.0"
mpld3 = "0.5.10"
msgraphfs = "^0.5"
mysqlclient = "^2.2.8"
nextcloud-api-wrapper = "^0.2.3"
num2words = "0.5.13"
numpy = ">=1.15"
numpy-financial = "<=1.0.0"
numpy-stl = "^4.0.0"
oauthlib = "^3.3.1"
odoo-test-helper = "^2.1.3"
odoorpc = "^0.10.1"
ofxparse = "0.21"
ollama = "^0.6.2"
openai = "^2.53.0"
openpyxl = "3.1.2"
openupgradelib = "^3.13.6"
openwebui-client = ">=0.3.0"
orjson = "^3.11.9"
ovh = "^1.2.0"
pandas = "2.3.3"
paramiko = "<4.0.0"
parse-accept-language = "^0.1.2"
passlib = "1.7.4"
pathspec = "^1.1.1"
pdf2image = "^1.17.0"
pdfminer-six = "20260107"
pexpect = "^4.9.0"
phonenumbers = "^9.0.36"
pillow = "12.2.0"
plaid-python = "^42.0.0"
plotly = "^6.9.0"
polib = "1.1.1"
pre-commit = "^4.6.2"
premailer = "^3.10.0"
prometheus-client = "^0.26.0"
psutil = "5.9.8"
psycopg2 = "2.9.9"
py3dns = "^4.0.2"
py3o-formats = "^0.3"
py3o-template = "^0.10.0"
pycountry = "^26.2.16"
pycups = "^2.0.4"
pydantic = ">=2.0.0"
pydevd-odoo = "^1.2.2"
pyftpdlib = "^2.2.0"
pygithub = "^2.9.1"
pyjsparser = "^2.7.1"
pyjwt = "^2.13.0"
pylint = "^4.0.7"
pylint-odoo = "^10.0.9"
pyncclient = "^0.7"
pyopenssl = "26.0.0"
pypdf = ">=3.1.0"
pypdf2 = "2.12.1"
pyproj = "^3.7.2"
pyquerystring = "^1.1"
pyserial = "3.5"
pysftp = "^0.2.9"
pytesseract = "^0.3.13"
python-dateutil = "2.8.2"
python-docx = "^1.2.0"
python-dotenv = ">=1.0.0"
python-jose = "^3.5.0"
python-json-logger = "^4.1.0"
python-ldap = "3.4.4"
python-multipart = "^0.0.32"
python-pptx = "^1.0.2"
python-resize-image = "^1.1.20"
python-slugify = "^8.0.4"
python-stdnum = "1.19"
python-telegram-bot = "^22.8"
pytz = "^2026.3.post1"
pyusb = "1.2.1"
pyyaml = "^6.0.3"
pyzbar = "^0.1.9"
pyzk = "^0.9"
qifparse = "^0.5"
qrcode = "7.4.2"
radon = "^6.0.1"
redis = "^8.1.0"
regex = "^2026.7.19"
reportlab = "4.1.0"
requests = "2.31.0"
requests-oauthlib = "^2.0.0"
requests-toolbelt = "^1.0.0"
responses = "^0.26.2"
rjsmin = "1.2.0"
roulier = "^1.1.1"
s3fs = "2026.7.0"
schwifty = "2024.4.0"
sentry-sdk = ">=2.0.0,<=2.22.0"
setuptools = "80.10.2"
shapely = "^2.1.2"
sqlalchemy = "^2.0.51"
statsd = "^4.0.1"
tldextract = "^5.3.2"
to-3mf = "^0.1.0"
tweepy = "^4.17.0"
twilio = "^9.10.9"
typing-extensions = "^4.16.0"
ujson = "^5.13.0"
unidecode = "^1.4.0"
urllib3 = "2.0.7"
uvloop = "^0.22.1"
validate-email = "^1.3"
validator-collection = "^1.5.0"
vobject = "0.9.6.1"
w3lib = "^2.4.1"
werkzeug = "3.0.1"
wget = "^3.2"
xlrd = "2.0.1"
xlsxwriter = "3.1.9"
xlwt = "1.3.0"
xmltodict = "0.13.0"
zeep = "4.2.1"
[[tool.poetry.dependencies.pymupdf]]
version = "^1.28.2"
markers = "platform_machine != \"s390x\""
[[tool.poetry.dependencies.factur-x]]
version = ">=4.2"
markers = "platform_machine != \"s390x\""
[[tool.poetry.dependencies.factur-x]]
version = "<4"
markers = "platform_machine == \"s390x\""
[tool.poetry.dependencies.black]
git = "https://github.com/psf/black.git"
rev = "24.8.0"
[tool.poetry.dependencies.flanker]
git = "https://github.com/mathben/flanker.git"
rev = "update_imghdr_python3"
[tool.poetry.dependencies.fsspec]
extras = [ "s3",]
version = "^2026.7.0"
[tool.poetry.dependencies.pysaml2]
git = "https://github.com/prauscher/pysaml2.git"
rev = "replace-pyopenssl"
[tool.poetry.dependencies.webdav4]
extras = [ "fsspec",]
version = "^0.11.0"
[poetry.group.dev.dependencies]
websocket_client = "^1.1.0"