CI / lint (push) Failing after 11s
CI / test (3.13) (push) Failing after 17s
CI / test-with-beamline-plugins (pxi_bec) (push) Failing after 13s
Docs build and publish / docker (push) Successful in 5s
CI / test-with-beamline-plugins (pxiii_bec) (push) Failing after 20s
Build and Publish / release (push) Successful in 19s
CI / test (3.12) (push) Successful in 1m2s
CI / test (3.14) (push) Successful in 1m1s
CI / test-with-beamline-plugins (pxii_bec) (push) Successful in 1m6s
CI / test-with-coverage (push) Successful in 1m29s
CI / coverage-analysis (push) Skipped
Automatically generated by python-semantic-release
116 lines
2.8 KiB
TOML
116 lines
2.8 KiB
TOML
[project]
|
|
name = "aaredaq"
|
|
version = "0.17.4"
|
|
description = "AareDAQ (with GUI)"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"uv",
|
|
"gunicorn",
|
|
"aarecommon>=0.5.1",
|
|
"pydantic>=2.11",
|
|
"numpy",
|
|
"jfjoch_client==1.0.0rc146",
|
|
"pyJWT",
|
|
"pyzmq",
|
|
"opencv-python-headless",
|
|
"PySide6==6.9.0",
|
|
"requests",
|
|
"pyepics~=3.5",
|
|
"redis",
|
|
"python-redis-lock",
|
|
"fastapi",
|
|
"uvicorn",
|
|
"aaredb>=0.2",
|
|
"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.0rc5",
|
|
"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",
|
|
"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"]
|
|
|
|
[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",
|
|
]
|
|
|
|
[tool.ruff.format]
|
|
skip-magic-trailing-comma = true
|