[project]
name = "banos"
version = "0.2.3"
description = "Behavior ANnOtation Score: ethological metrics for evaluating behavior annotation quality"
readme = "README.md"
license = { text = "MIT" }
requires-python = ">=3.9"
keywords = ["behavior", "annotation", "ethology", "video", "scoring", "metrics"]
classifiers = [
  "Development Status :: 4 - Beta",
  "Intended Audience :: Science/Research",
  "License :: OSI Approved :: MIT License",
  "Programming Language :: Python :: 3",
  "Programming Language :: Python :: 3.9",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
  "Topic :: Scientific/Engineering :: Bio-Informatics",
]
dependencies = [
  "numpy>=1.24",
  "pandas>=2.0",
  "scipy>=1.10",
  "matplotlib>=3.7",
  "seaborn>=0.12",
]

[project.optional-dependencies]
dev = [
  "pytest>=7.4",
  "pytest-cov>=4.1",
  "pytest-html>=4.0",
  "pre-commit>=3.5",
  "ruff>=0.4",
]
notebook = [
  "jupyter>=1.0",
  "nbformat>=5.9",
]
calms21 = [
  "tensorflow>=2.12",
  "scikit-learn>=1.3",
  "tqdm>=4.65",
]

[project.urls]
Homepage = "https://github.com/BelloneLab/BANOS"
Repository = "https://github.com/BelloneLab/BANOS"
Issues = "https://github.com/BelloneLab/BANOS/issues"

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

[tool.hatch.build.targets.wheel]
packages = ["src/banos"]

[tool.ruff]
line-length = 100

[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "W"]
ignore = ["E501"]

[tool.ruff.lint.per-file-ignores]
"tests/*" = ["N802", "N803"]

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "--cov=banos --cov-report=term-missing --cov-fail-under=80"

[tool.coverage.run]
source = ["src/banos"]

[dependency-groups]
dev = [
    "nbformat>=5.10.4",
    "pytest>=7.4",
    "pytest-cov>=4.1",
    "pytest-html>=4.2.0",
    "pre-commit>=3.5",
    "ruff>=0.4",
]
