[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "babelvox"
version = "1.5.0"
description = "Real-time text-to-speech on Intel NPU/CPU via OpenVINO"
readme = "README.md"
requires-python = ">=3.10"
license = "Apache-2.0"
classifiers = [
  "Programming Language :: Python :: 3",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
  "Programming Language :: Python :: 3.13",
]

dependencies = [
  "openvino>=2025.4",
  "numpy>=2.0",
  "librosa>=0.11",
  "soundfile>=0.13",
  "scipy>=1.14",
  "transformers>=5.0",
  "huggingface_hub>=1.0",
  "num2words>=0.5.14",
  "defusedxml>=0.7",
]

[project.urls]
Repository = "https://github.com/Djwarf/babelvox"
Issues = "https://github.com/Djwarf/babelvox/issues"

[project.scripts]
babelvox = "babelvox.cli:main"

[project.optional-dependencies]
dev = [
    "pytest>=8.0",
    "pytest-cov>=5.0",
    "ruff>=0.9",
    "websockets>=14.0",
    "pytest-asyncio>=0.24",
]
ws = [
    "websockets>=14.0",
]

[tool.setuptools]
package-dir = {"" = "src"}
packages = ["babelvox", "babelvox.text"]

[tool.setuptools.package-data]
babelvox = ["static/*.html", "data/speakers/*.json", "data/speakers/*.npy"]

[tool.pytest.ini_options]
testpaths = ["tests"]
markers = [
    "integration: requires downloaded models and hardware",
]

[tool.ruff]
target-version = "py310"
line-length = 100

[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP", "B", "SIM"]

[tool.ruff.lint.per-file-ignores]
"src/babelvox/pipeline.py" = ["F821", "SIM102"]
