[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "ophyd_devices"
version = "1.29.2"
description = "Custom device implementations based on the ophyd hardware abstraction layer"
requires-python = ">=3.11"
classifiers = [
    "Development Status :: 3 - Alpha",
    "Programming Language :: Python :: 3",
    "Topic :: Scientific/Engineering",
]

dependencies = [
    "ophyd ~= 1.10",
    "typeguard ~= 4.1, >=4.1.5",
    "prettytable ~= 3.9",
    "bec_lib~=3.13",
    "numpy >= 1.24, <3.0",
    "pyyaml ~= 6.0",
    "std_daq_client ~= 1.3",
    "pyepics >=3.5.5, <=3.5.7",
    "pytest ~= 8.0",
    "h5py ~= 3.10",
    "hdf5plugin >=4.3, < 6.0",
]

[project.optional-dependencies]
dev = [
    "bec-server~=3.13",
    "pillow ~= 11.1",
    "black~=25.0",
    "isort~=5.13, >=5.13.2",
    "coverage~=7.0",
    "pylint~=3.0",
    "pytest-random-order~=1.1",
]

[project.scripts]
ophyd_test = "ophyd_devices:launch"

[project.urls]
"Bug Tracker" = "https://gitlab.psi.ch/bec/ophyd_devices/issues"
Homepage = "https://gitlab.psi.ch/bec/ophyd_devices"
documentation = "https://bec.readthedocs.org"
changelog = "https://gitlab.psi.ch/bec/ophyd_devices/blob/main/CHANGELOG.md"

[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.*",
]

[tool.semantic_release]
build_command = "python -m build"
version_toml = ["pyproject.toml:project.version"]

[tool.semantic_release.commit_author]
env = "GIT_COMMIT_AUTHOR"
default = "semantic-release <semantic-release>"

[tool.semantic_release.commit_parser_options]
allowed_tags = [
    "build",
    "chore",
    "ci",
    "docs",
    "feat",
    "fix",
    "perf",
    "style",
    "refactor",
    "test",
]
minor_tags = ["feat"]
patch_tags = ["fix", "perf"]
default_bump_level = 0

[tool.semantic_release.remote]
name = "origin"
type = "github"
ignore_token_for_push = true

[tool.semantic_release.remote.token]
env = "GH_TOKEN"

[tool.semantic_release.publish]
dist_glob_patterns = ["dist/*"]
upload_to_vcs_release = true
