[project]
name = "ekfsm"
dependencies = [
    "yamale",
    "gpiod>=2.1.0",
    "smbus2",
    "anytree",
    "more-itertools",
    "crcmod",
    "munch",
    "types-pyyaml>=6.0.12.20241230",
    "click>=8.0.1",
    "hexdump",
]
readme = "README.md"
license-files = ["LICENSE"]
authors = [
    {name = "Klaus Popp", email = "klaus.popp@ci4rail.com"},
    {name = "Jan Jansen", email = "jan@ekf.de"},
    {name = "Felix Päßler", email = "fp@ekf.de"}
]
description = "The EKF System Management Library (ekfsm) is a sensor monitoring suite for Compact PCI Serial devices."
requires-python = ">=3.10"
version = "1.1.0-alpha.15.post.1"

[project.scripts]
ekfsm-cli = "ekfsm.cli:main"

[tool.uv]
package = false
default-groups = ["dev", "docs"]

[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/ekfsm/"
publish-url = "https://test.pypi.org/legacy/"

[tool.pytest.ini_options]
pythonpath = [
    "."
]

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

[dependency-groups]
dev = [
    "basedpyright>=1.24.0",
    "mypy>=1.14.1",
    "pytest>=8.3.4",
    "sphinx>=8.1.3",
    "black>=25.1.0",
    "packaging"
]
docs = [
    "sphinx>=8.1.3",
    "sphinx-autodoc-typehints>=3.0.1",
    "sphinx-rtd-theme>=3.0.2",
    "sphinx-click"
]

[tool.basedpyright]
include = ["ekfsm"]
exclude = ["**/node_modules",
    "**/__pycache__",
    "src/experimental",
    "docs/*",
]
ignore = []
defineConstant = { DEBUG = true }
typeCheckingMode = "standard"
reportMissingImports = "error"
reportMissingTypeStubs = false
reportAny = "none"
pythonVersion = "3.12.6"
pythonPlatform = "Linux"

[tool.mypy]
ignore_missing_imports = true
strict = false
disallow_untyped_defs = false
cache_dir = ".mypy_cache"
exclude = "docs/*"

[tool.coverage.run]
omit = [
    "/nix/*",
]
