polyglot-tutor / pyproject.toml
Arthur_Diaz
feat(dictation): word-level dictation scoring with tolerant normalization (#8)
f6bff07 unverified
Raw
History Blame Contribute Delete
1.97 kB
[project]
name = "polyglot-tutor"
version = "0.1.0"
description = "Adaptive language tutor: CEFR-aware exercises across the four skills, driven by a predictive spaced-repetition learner model."
readme = "README.md"
requires-python = ">=3.12"
license = "MIT"
authors = [{ name = "Arthur" }]
dependencies = [
# Runtime deps only — keep the Docker image (HF Space, cpu-basic) lean.
"gradio>=6.17,<7",
"huggingface-hub>=1.18.0",
"jiwer>=4.0.0",
"numpy>=2.4.6",
"onnxruntime>=1.26.0",
"openai>=2.41,<3", # single OpenAI-compatible client: Gemini / Mistral / Ollama / OpenAI (ADR 0002)
"pydantic>=2.8",
"pydantic-settings>=2.14,<3",
"tokenizers>=0.22.2",
]
[dependency-groups]
dev = [
"pytest>=9.0",
"pytest-asyncio>=1.4",
"ruff==0.15.16", # exact pin, mirrored in .pre-commit-config.yaml
"pre-commit>=4.6",
]
data = [
# Dataset download / EDA (UniversalCEFR & friends). Not in the runtime image.
"datasets>=5.0",
"huggingface-hub>=1.18.0",
]
train = [
"accelerate>=1.14.0",
# M1: transformers, torch (CUDA, local GPU), optimum/onnxruntime for CPU export.
"datasets>=5.0.0",
"mlflow>=3.13.0",
"onnx>=1.21.0",
"torch>=2.12.0",
"transformers>=5.11.0",
]
asr = [
"faster-whisper>=1.0",
"soundfile>=0.12",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/tutor"]
[tool.ruff]
target-version = "py312"
line-length = 100
src = ["src", "tests", "scripts"]
[tool.ruff.lint]
select = [
"E", "W", # pycodestyle
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
"B", # bugbear
"SIM", # simplify
"C4", # comprehensions
"PTH", # pathlib
"RET", # return
"ASYNC", # async pitfalls
"RUF",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = "-q"