[project]
name = "talemate"
version = "0.34.1"
description = "AI-backed roleplay and narrative tools"
authors = [{name = "VeguAITools"}]
license = {text = "GNU Affero General Public License v3.0"}
requires-python = ">=3.11,<3.14"
dependencies = [
    "pip",
    "astroid>=2.8",
    "jedi>=0.18",
    "black",
    "rope>=0.22",
    "isort>=5.10",
    "jinja2>=3.0",
    "openai>=1",
    "mistralai>=0.1.8",
    "cohere>=5.2.2",
    "anthropic>=0.19.1",
    "groq>=0.5.0",
    "requests>=2.26",
    "colorama>=0.4.6",
    "Pillow>=9.5",
    "httpx<1",
    "piexif>=1.1",
    "typing-inspect==0.8.0",
    "typing_extensions>=4.5.0",
    "uvicorn>=0.23",
    "blinker>=1.6.2",
    "pydantic<3",
    "beautifulsoup4>=4.12.2",
    "python-dotenv>=1.0.0",
    "structlog>=23.1.0",
    "google-genai>=1.20.0",
    "nest_asyncio>=1.5.7",
    "isodate>=0.6.1",
    "thefuzz>=0.20.0",
    "tiktoken>=0.5.1",
    "nltk>=3.8.1",
    "huggingface-hub>=0.20.2",
    "RestrictedPython>7.1",
    "numpy>=2",
    "aiofiles>=24.1.0",
    "pyyaml>=6.0",
    "limits>=5.0",
    "diff-match-patch>=20241021",
    "sseclient-py>=1.8.0",
    "ollama>=0.5.1",
    # ChromaDB
    "chromadb>=1.0.12",
    "InstructorEmbedding @ https://github.com/vegu-ai/instructor-embedding/archive/refs/heads/202506-fixes.zip",
    "torch>=2.7.1",
    "torchaudio>=2.7.1",
    "sentence_transformers>=2.7.0",
    # TTS
    "elevenlabs>=2.7.1",
    # Local TTS
    # Chatterbox TTS
    #"chatterbox-tts @ https://github.com/rsxdalv/chatterbox/archive/refs/heads/fast.zip",
    "chatterbox-tts==0.1.2",
    "torchcodec>=0.9.0",
    # kokoro TTS
    "kokoro>=0.9.4",
    "soundfile>=0.13.1",
    # F5-TTS
    "f5-tts>=1.1.7",
    "deepdiff>=8.6.1",
]

[project.optional-dependencies]
dev = [
    "pytest>=6.2",
    "pytest-asyncio>=0.25.3",
    "mypy>=0.910",
    "mkdocs-material>=9.5.27",
    "mkdocs-awesome-pages-plugin>=2.9.2",
    "mkdocs-glightbox>=0.4.0",
    "pre-commit>=2.13",
]

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

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

[tool.hatch.metadata]
allow-direct-references = true

[tool.black]
line-length = 88
target-version = ['py38']
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
  | talemate_env
)/
'''

[tool.isort]
profile = "black"
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
line_length = 88

[tool.uv]
override-dependencies = [
  # chatterbox wants torch 2.6.0, but is confirmed working with 2.7.1
  "torchaudio>=2.7.1",
  "torch>=2.7.1",
  # numba needs numpy < 2.3
  "numpy>=2,<2.3",
  "pydantic>=2.11",
]

[tool.uv.sources]
torch = [
  { index = "pytorch-cu128" },
]
torchaudio = [
  { index = "pytorch-cu128" },
]

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
