Files
csaxs_bec/pyproject.toml
x01dcandClaude Sonnet 5 89b185eae2
CI for csaxs_bec / test (pull_request) Successful in 1m47s
Read the Docs Deploy Trigger / trigger-rtd-webhook (push) Successful in 2s
CI for csaxs_bec / test (push) Successful in 1m51s
fix(deps): make pygobject an optional extra, not a hard dependency
pygobject ships no PyPI wheels, so pip install always compiles it from
source, which requires the OS gobject-introspection dev package at
install time. As a mandatory dependency this broke plain `pip install
csaxs_bec` on CI and on Read the Docs, neither of which has that
package installed. Move it to the `allied_vision` extra so only hosts
that actually run the camera (which already need Aravis + the OS
package present) opt in via `pip install csaxs_bec[allied_vision]`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 13:25:25 +02:00

114 lines
3.6 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.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.*",
]