Files
csaxs_bec/pyproject.toml
wyzula_j 34e7dff17d
CI for csaxs_bec / test (pull_request) Successful in 1m55s
Read the Docs Deploy Trigger / trigger-rtd-webhook (push) Successful in 2s
CI for csaxs_bec / test (push) Successful in 2m28s
ci: pytest-cov migrated to coverage
2026-08-12 17:34:33 +02:00

125 lines
3.9 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "csaxs_bec"
version = "0.0.0"
description = "The cSAXS plugin repository for BEC"
requires-python = ">=3.11"
classifiers = [
"Development Status :: 3 - Alpha",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering",
]
dependencies = [
"bec_ipython_client",
"bec_lib",
"bec_server",
"ophyd_devices~=1.29",
"std_daq_client",
"jfjoch-client==1.0.0rc148",
"rich",
"pyepics",
"pyueye", # for the IDS uEye camera
"bec_widgets",
"zmq",
"opencv-python",
"dectris-compression", # for JFJ preview stream decompression
"cbor2~=5.9.0",
]
[project.optional-dependencies]
allied_vision = [
"pygobject<3.52", # for the AlliedVision Alvium camera (native Aravis/GenICam, no EPICS IOC)
# pinned below 3.52: that version switched to requiring
# girepository-2.0 (GLib >=2.80/gobject-introspection >=1.80),
# which RHEL9's system packages don't provide (only the older
# girepository-1.0 via gobject-introspection 1.68) -- unpin once
# deployment hosts are upgraded past that.
#
# Kept out of the default dependency set: pygobject ships no
# PyPI wheels, so `pip install` always builds it from source,
# which needs the OS gobject-introspection dev package present
# at *install* time. As a hard dependency this broke plain
# `pip install csaxs_bec` on CI and on Read the Docs (neither
# has that OS package, and RTD's build image isn't ours to
# change) -- see csaxs_bec/devices/allied_vision_cameras/README.md.
]
dev = [
"black",
"copier",
"isort",
"coverage",
"pylint",
"pytest",
"pytest-random-order",
"pytest-bec-e2e",
"ophyd_devices",
"bec_server",
]
[project.entry-points."bec"]
plugin_bec = "csaxs_bec"
[project.entry-points."bec.deployment.device_server"]
plugin_ds_startup = "csaxs_bec.deployments.device_server.startup:run"
[project.entry-points."bec.file_writer"]
plugin_file_writer = "csaxs_bec.file_writer"
[project.entry-points."bec.scans"]
plugin_scans = "csaxs_bec.scans"
[project.entry-points."bec.scans.scan_modifier"]
plugin_scan_modifier = "csaxs_bec.scans.scan_customization.scan_modifier"
[project.entry-points."bec.scans.metadata_schema"]
plugin_metadata_schema = "csaxs_bec.scans.metadata_schema"
[project.entry-points."bec.ipython_client_startup"]
plugin_ipython_client_pre = "csaxs_bec.bec_ipython_client.startup.pre_startup"
plugin_ipython_client_post = "csaxs_bec.bec_ipython_client.startup"
[project.entry-points."bec.widgets.auto_updates"]
plugin_widgets_update = "csaxs_bec.bec_widgets.auto_updates"
[project.entry-points."bec.widgets.user_widgets"]
plugin_widgets = "csaxs_bec.bec_widgets.widgets"
[tool.coverage.report]
skip_empty = true # exclude empty *files*, e.g. __init__.py, from the report
exclude_lines = [
"pragma: no cover",
"if TYPE_CHECKING:",
"return NotImplemented",
"raise NotImplementedError",
"\\.\\.\\.",
'if __name__ == "__main__":',
]
[tool.hatch.build.targets.wheel]
include = ["*"]
[tool.isort]
profile = "black"
line_length = 100
multi_line_output = 3
include_trailing_comma = true
[tool.black]
line-length = 100
skip-magic-trailing-comma = true
[tool.pylint.basic]
# Good variable names regexes, separated by a comma. If names match any regex,
# they will always be accepted
good-names-rgxs = [
".*scanID.*",
".*RID.*",
".*pointID.*",
".*ID.*",
".*_2D.*",
".*_1D.*",
]