[project]
name = "batdetect2"
version = "1.1.1"
description = "Deep learning model for detecting and classifying bat echolocation calls in high frequency audio recordings."
authors = [
  { "name" = "Oisin Mac Aodha", "email" = "oisin.macaodha@ed.ac.uk" },
  { "name" = "Santiago Martinez Balvanera", "email" = "santiago.balvanera.20@ucl.ac.uk" },
]
dependencies = [
  "click>=8.1.7",
  "librosa>=0.10.1",
  "matplotlib>=3.7.1",
  "numpy>=1.23.5",
  "pandas>=1.5.3",
  "scikit-learn>=1.2.2",
  "scipy>=1.10.1",
  "torch>=1.13.1,<2.5.0",
  "torchaudio>=1.13.1,<2.5.0",
  "torchvision>=0.14.0",
  "soundevent[audio,geometry,plot]>=2.5.0",
  "click>=8.1.7",
  "netcdf4>=1.6.5",
  "tqdm>=4.66.2",
  "pytorch-lightning>=2.2.2",
  "cf-xarray>=0.9.0",
  "onnx>=1.16.0",
  "lightning[extra]>=2.2.2",
  "tensorboard>=2.16.2",
  "omegaconf>=2.3.0",
  "pyyaml>=6.0.2",
  "hydra-core>=1.3.2",
  "numba>=0.60",
  "loguru>=0.7.3",
]
requires-python = ">=3.9,<3.13"
readme = "README.md"
license = { text = "CC-by-nc-4" }
classifiers = [
  "Development Status :: 4 - Beta",
  "Intended Audience :: Science/Research",
  "Natural Language :: English",
  "Operating System :: OS Independent",
  "Programming Language :: Python :: 3.9",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
  "Topic :: Software Development :: Libraries :: Python Modules",
  "Topic :: Multimedia :: Sound/Audio :: Analysis",
]
keywords = [
  "bat",
  "echolocation",
  "deep learning",
  "audio",
  "machine learning",
  "classification",
  "detection",
]

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

[project.scripts]
batdetect2 = "batdetect2.cli:cli"

[dependency-groups]
jupyter = ["ipywidgets>=8.1.5", "jupyter>=1.1.1"]
marimo = [
    "marimo>=0.12.2",
]
dev = [
  "debugpy>=1.8.8",
  "hypothesis>=6.118.7",
  "pytest>=7.2.2",
  "ruff>=0.7.3",
  "ipykernel>=6.29.4",
  "setuptools>=69.5.1",
  "pyright>=1.1.399",
  "myst-parser>=3.0.1",
  "sphinx-autobuild>=2024.10.3",
  "numpydoc>=1.8.0",
  "sphinx-autodoc-typehints>=2.3.0",
  "sphinx-book-theme>=1.1.4",
  "autodoc-pydantic>=2.2.0",
  "pytest-cov>=6.1.1",
  "ty>=0.0.1a12",
  "rust-just>=1.40.0",
]
dvclive = [
    "dvclive>=3.48.2",
]

[tool.ruff]
line-length = 79
target-version = "py39"

[tool.ruff.format]
docstring-code-format = true
docstring-code-line-length = 79

[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "B", "Q", "I", "NPY201"]

[tool.ruff.lint.pydocstyle]
convention = "numpy"

[tool.pyright]
include = ["src", "tests"]
pythonVersion = "3.9"
pythonPlatform = "All"
exclude = [
  "src/batdetect2/detector/",
  "src/batdetect2/finetune",
  "src/batdetect2/utils",
  "src/batdetect2/plotting",
  "src/batdetect2/plot",
  "src/batdetect2/api",
  "src/batdetect2/evaluate/legacy",
  "src/batdetect2/train/legacy",
]
