Files
AareDAQ/pyproject.toml
T
duan_jandClaude Fable 5 32f98d7285 fix: pin PySide6 below 6.10 so CI stops segfaulting
CI installs latest index deps (it does not read uv.lock) and resolved
PySide6 6.11.2, which segfaults the unit suite in teardown on about
half the runs - reproduced on PLAIN origin/main, so it is not this
branch's code. 6.9.0 (the uv.lock pin) is stable. Cap the dependency
so CI resolves a 6.9.x build; drop the cap once the teardown crash is
hunted down. uv.lock re-locked (it was stale at aaredaq 0.22.1).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-16 13:28:16 +02:00

120 lines
3.0 KiB
TOML

[project]
name = "aaredaq"
version = "0.32.1"
description = "AareDAQ (with GUI)"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"uv",
"aarecommon>=0.9.0",
"pydantic>=2.11",
"numpy",
"jfjoch_client>=1.0.0rc166",
"pyJWT",
"pyzmq",
"opencv-python-headless",
# <6.10: 6.11.2 (what the unpinned CI resolves) segfaults the unit suite
# in teardown on ~half the runs — on plain main too, not this branch.
# Drop the cap once the teardown crash is hunted down.
"PySide6<6.10",
"requests",
"pyepics~=3.5",
"redis",
"fastapi",
"uvicorn",
"aaredb>=0.83.1",
"python_multipart",
"websocket-client",
"sseclient",
"psi-pshell==2.1.0",
"bec_lib>=3.130.3",
"bec-ipython-client>=3.130.3",
"aarescan-client>=1.0.0rc15",
"aarelcinfer-client==0.1.1a8",
"matplotlib>=3.10.3",
"httpx>=0.28.1",
]
[project.optional-dependencies]
test = [
"basedpyright",
"pytest",
"pytest-cov",
"pytest-mock",
"pytest-qt",
"pytest-asyncio",
"pytest-timeout",
"fakeredis[lua]",
"diff-cover",
"ruff>=0.15"
]
docs = [
"zensical"
]
[lint]
ignore = ["F401", "F541", "W503", "W504"]
[tool.uv]
# Transitive deps (aarecommon -> aarelc_infer) ask for the non-headless
# `opencv-python`. It unpacks into the same `cv2/` directory as the
# `opencv-python-headless` we depend on, so whichever installs last wins for the
# overlapping files and you get a mixed install -- the Python half of one wheel
# next to the native half of the other. That surfaces as
# `AttributeError: partially initialized module 'cv2' has no attribute
# 'gapi_wip_gst_GStreamerPipeline'` on `import cv2`, and it bites in the
# test-with-beamline-plugins job because installing the plugins re-resolves and
# flips the install order. A marker that never matches drops the requirement,
# leaving headless as the only cv2 provider.
override-dependencies = ["opencv-python; sys_platform == 'nonexistent'"]
[tool.uv.sources]
aaredb = { index = "psi"}
[[tool.uv.index]]
name = "psi"
url = "https://gitea.psi.ch/api/packages/mx/pypi/simple"
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
norecursedirs = ["scripts", ".venv", "logs", "docs"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
markers = [
"integration: tests that require external systems or secrets",
]
[build-system]
requires = ["setuptools>=75.6.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools.package-data]
"aare.gui.graphics" = ["*.svg", "*.png"]
"*" = ["*.json"]
[tool.black]
line-length = 100
skip-magic-trailing-comma = true
[tool.isort]
profile = "black"
line_length = 100
multi_line_output = 3
[tool.ruff]
line-length = 100
[tool.ruff.lint]
ignore = [
# Timestamps here are local beamline wall-clock and are stored/displayed as
# naive ISO strings; adding a tzinfo would change what aaredb and the GUI see.
"DTZ005",
"DTZ006",
]
isort.split-on-trailing-comma=false
[tool.ruff.format]
skip-magic-trailing-comma = true