[tool.poetry]
name = "spectral"
version = "0.0.1"
description = "kernel for spectral: atypical speech analysis and recognition platform"
authors = [
		"Roman Knyazhitskiy <mail@knyaz.tech>",
		"Ody Machairas",
		"Quinton Den Haan",
		"Thijs Houben",
		"Yousef El Bakri"
]
readme = "README.md"
homepage = "https://spectral.ewi.tudelft.nl"
repository = "https://github.com/TU-Delft-SALT-Group/spectral"
documentation = "https://spectral.ewi.tudelft.nl/docs"
keywords = ["spectral", "atypical speech analysis", "speech recognition"]
classifiers = [
		"Development Status :: 2 - Pre-Alpha",
		"Intended Audience :: Developers",
		"Intended Audience :: Science/Research",
		"Topic :: Multimedia :: Sound/Audio :: Analysis",
		"Topic :: Scientific/Engineering :: Artificial Intelligence",
		"License :: OSI Approved :: MIT License",
		"Programming Language :: Python :: 3"
]


[tool.poetry.dependencies]
python = "^3.11"
numpy = "^1.26.4"
fastapi = "^0.111.0"
praat-parselmouth = "^0.4.3"
orjson = "^3.10.3"
pydantic = "^2.7.1"
scipy = "^1.13.0"
psycopg = {extras = ["binary", "pool"], version = "^3.1.19"}
deepgram-sdk = "3.2.7"
pydub = "^0.25.1"
ffmpeg-python = "^0.2.0"
jiwer = "^3.0.4"
allosaurus = "^1.0.2"
python-magic = "^0.4.27"
openai = "^1.33.0"
mytextgrid = "^0.8.0"
bert-score = "^0.3.13"
jarowinkler = "^2.0.1"
torch = "^2.3.1"

[tool.poetry.group.dev.dependencies]
pytest = "^8.2.0"
pytest-cov = "^5.0.0"
coverage = "^7.5.1"
mock = "^5.1.0"
mutmut = "^2.5.0"
pytest-xdist = "^3.6.1"
pytest-testmon = "^2.1.1"
pytest-mock = "^3.14.0"
beartype = "^0.18.5"

[[tool.poetry.source]]
name = "pytorch_cpu"
url = "https://download.pytorch.org/whl/cpu"
priority = "supplemental"

[tool.mutmut]
paths_to_mutate="spectral/"
runner="pytest -n 4 --testmon"
tests_dir="tests/"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.ruff]
line-length = 100

[tool.ruff.lint]
select = ["F", "E", "W", "C90", "I", "N", "D", "UP", "YTT", "ASYNC",
    "TRIO", "S", "BLE", "FBT", "B", "A", "COM", "C4", "DTZ",
    "T10", "DJ", "EM", "EXE", "FA", "ISC", "ICN", "LOG", "G", "INP",
    "PIE", "T20", "PYI", "PT", "Q", "RSE", "RET", "SLF", "SLOT", "SIM",
    "TID", "TCH", "INT", "ARG", "PTH", "TD", "FIX", "ERA", "PD",
    "PL", "C", "R", "TRY", "FLY", "NPY", "AIR", "PERF", "RUF"]

ignore = ["D417", "D205", "D203", "D212", "EM101", "B008", "RET503", "PYI041", "BLE001", "TRY003", "TCH001", "TCH003", "ISC001", "COM812"]
