[build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [project] name = "vivamais" version = "0.1.0" description = "Local-first WhatsApp copilot for the Viva Mais travel agency" requires-python = ">=3.11" dependencies = [ "dspy>=3", "faster-whisper>=1.1.0", "gradio>=6.16", "huggingface-hub>=1.18.0", "llama-cpp-python>=0.3.26", "numpy", "pillow", "pydantic>=2.0,<2.12", "pypdf>=6.13.1", "pypdfium2", "spaces", ] [dependency-groups] dev = ["pytest", "pytest-bdd", "ruff", "mypy", { include-group = "vision" }] train = ["modal>=0.73"] vision = ["torch>=2.8", "torchvision", "transformers>=5.10,<6"] [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] pythonpath = ["src"] testpaths = ["tests/unit", "tests/steps"] [tool.ruff] line-length = 100 target-version = "py311" extend-exclude = ["finetune"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] [tool.ruff.lint.per-file-ignores] "app.py" = ["E402"] "app_blocks.py" = ["E402"] "evals/*.py" = ["E402"] "finetune/*.py" = ["E402"] [tool.mypy] python_version = "3.11" strict = true files = ["src"] [[tool.mypy.overrides]] module = "faster_whisper.*" ignore_missing_imports = true [[tool.mypy.overrides]] module = "llama_cpp.*" ignore_missing_imports = true [[tool.mypy.overrides]] module = "spaces" ignore_missing_imports = true [[tool.mypy.overrides]] module = "dspy.*" ignore_missing_imports = true [[tool.mypy.overrides]] module = "pypdfium2" ignore_missing_imports = true [[tool.mypy.overrides]] module = "vivamais.adapters.models.llama_cpp" ignore_errors = true [[tool.mypy.overrides]] module = "vivamais.adapters.models.llama_cpp" disallow_untyped_decorators = false