trax/pyproject.toml

147 lines
3.3 KiB
TOML

[project]
name = "trax"
version = "1.0.0"
description = "Production-ready media transcription platform with iterative enhancement"
readme = "README.md"
requires-python = ">=3.11"
authors = [
{ name = "Your Name", email = "your.email@example.com" }
]
dependencies = [
"python-dotenv>=1.0.0",
"sqlalchemy>=2.0.0",
"alembic>=1.13.0",
"psycopg2-binary>=2.9.0",
"pydantic>=2.0.0",
"click>=8.1.0",
"rich>=13.0.0",
"asyncio>=3.4.3",
"cryptography>=41.0.0", # For secure configuration
"streamlit>=1.28.0", # For research agent UI
# Phase 2: Transcription Dependencies
"faster-whisper>=1.0.0",
"yt-dlp>=2024.0.0",
"ffmpeg-python>=0.2.0",
"pydub>=0.25.0",
"librosa>=0.10.0", # Audio analysis
"numpy>=1.24.0",
"scipy>=1.11.0",
"soundfile>=0.12.0", # Audio file I/O
"aiohttp>=3.9.0", # Async HTTP for downloads
"tenacity>=8.2.0", # Retry logic
"psutil>=7.0.0", # System and process utilities
"openai>=1.0.0", # OpenAI API client
"deepseek>=1.0.0", # DeepSeek API client
]
[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-asyncio>=0.21.0",
"pytest-cov>=4.0.0",
"black>=23.0.0",
"flake8>=6.0.0",
"mypy>=1.0.0",
"ruff>=0.1.0",
"ipython>=8.0.0",
]
# Phase 3: AI Enhancement (for v2)
ai = [
"deepseek>=0.1.0", # DeepSeek API client
"openai>=1.0.0", # OpenAI API
"jinja2>=3.1.0", # Templates
]
# Phase 4: Advanced Features (for v3-v4)
advanced = [
"pyannote.audio>=3.0.0", # Speaker diarization
"torch>=2.0.0", # For ML models
"torchaudio>=2.0.0",
]
# Vector search and embeddings
vector-search = [
"faiss-cpu>=1.12.0", # FAISS for vector similarity search
"chromadb>=1.0.0", # ChromaDB for vector database
"sentence-transformers>=5.0.0", # Sentence embeddings
"numpy>=1.24.0", # Required for vector operations
"scipy>=1.11.0", # Required for vector operations
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src", "lib"]
[tool.uv]
dev-dependencies = [
"ipython>=8.0.0",
"rich>=13.0.0",
]
[tool.black]
line-length = 100
target-version = ['py311']
include = '\.pyi?$'
extend-exclude = '''
/(
migrations
| .venv
| data
)/
'''
[tool.ruff]
line-length = 100
select = ["E", "F", "I", "N", "W", "B", "C90", "D"]
ignore = ["E501", "D100", "D104"]
exclude = ["migrations", ".venv", "data"]
fix = true
fixable = ["ALL"]
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
ignore_missing_imports = true
plugins = ["pydantic.mypy", "sqlalchemy.ext.mypy.plugin"]
exclude = ["migrations", "tests"]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
pythonpath = [".", "lib"]
addopts = """
-v
--cov=src
--cov-report=html
--cov-report=term
--tb=short
"""
asyncio_mode = "auto"
markers = [
"unit: Unit tests",
"integration: Integration tests",
"slow: Slow tests (>5s)",
"batch: Batch processing tests",
]
[tool.coverage.run]
omit = [
"*/tests/*",
"*/migrations/*",
"*/__pycache__/*",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise AssertionError",
"raise NotImplementedError",
"if __name__ == .__main__.:",
]