[project] name = "trialpath" version = "0.1.0" description = "AI-powered clinical trial matching for NSCLC patients" requires-python = ">=3.11" dependencies = [ "pydantic>=2.0", "httpx>=0.27", "streamlit>=1.40", "google-genai>=1.0", "parlant[gemini]", "huggingface-hub>=0.20", "Pillow>=10.0", "structlog>=24.0", "python-dotenv>=1.0", "requests>=2.31", ] [dependency-groups] dev = [ "aiohttp>=3.13.3", "pre-commit>=4.5.1", "pytest>=8.0", "pytest-asyncio>=0.24", "pytest-cov>=6.0", "pytest-playwright>=0.7.2", "pytest-timeout>=2.3", "ruff>=0.8", "ty>=0.0.15", ] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "W"] [tool.ty.environment] python-version = "3.11" # Parlant's @tool decorator transforms function signatures in ways # ty cannot resolve, causing false-positive unknown-argument errors. [[tool.ty.overrides]] include = ["**/test_tools.py"] [tool.ty.overrides.rules] unknown-argument = "ignore" missing-argument = "ignore" invalid-await = "ignore" # Parlant SDK JourneyState constructors have strict type annotations # that don't match our dynamic usage patterns. [[tool.ty.overrides]] include = ["trialpath/agent/journey.py"] [tool.ty.overrides.rules] invalid-argument-type = "warn" # Test files use MagicMock/AsyncMock which ty cannot resolve to real types. [[tool.ty.overrides]] include = ["**/tests/**", "**/test_*.py"] [tool.ty.overrides.rules] unresolved-attribute = "warn" invalid-argument-type = "warn" [tool.pytest.ini_options] testpaths = ["trialpath/tests", "app/tests", "tests"] asyncio_mode = "auto" addopts = "-m 'not live'" markers = [ "live: tests that call real external services (deselect with '-m not live')", ]