[project]
name = "getgather"
version = "0.1.0"
description = "Free your data"
readme = "README.md"
requires-python = ">=3.11"
license = "MIT"
dependencies = [
"aiofiles>=24.1.0",
"nanoid>=2.0.0",
"pydantic>=2.11.3",
"pydantic-settings>=2.9.1",
"pyyaml>=6.0.2",
"sentry-sdk[fastapi]>=2.29.1",
"rich>=14.0.0",
"fastapi>=0.115.12",
"jinja2>=3.1.6",
"uvicorn[standard]>=0.34.2",
# Browser Automation: Locked to specific versions to avoid breaking changes.
"patchright==1.52.5",
"requests>=2.32.4",
"httpx>=0.28.1",
"beautifulsoup4>=4.13.4",
"lxml>=6.0.0",
"python-multipart>=0.0.20",
"pwinput>=1.0.3",
"fastmcp>=2.12.2",
"pytest-asyncio>=1.0.0",
"logfire[fastapi]>=4.13.2",
"zendriver>=0.14.2",
"loguru>=0.7.3",
]
[dependency-groups]
dev = [
"assertpy>=1.1",
"faker>=33.3.0",
"nanoid>=2.0.0",
"pyright>=1.1.399",
"pytest>=8.3.5",
"pytest-asyncio>=0.23.5",
"pytest-cov>=4.1.0",
"pytest-playwright>=0.7.0",
"pytest-xdist>=3.7.0",
"ruff>=0.11.6",
"yamlfix>=1.6.1",
"python-fasthtml>=0.12.21",
]
[tool.ruff]
src = ["getgather", "tests"]
exclude = [
"**/__pycache__",
"**/.pytest_cache",
"**/.venv",
"**/venv",
"**/htmlcov",
"**/alembic/versions",
"**/node_modules",
"**/*env/*",
"**/.git",
"**/*.yaml",
"**/*.yml",
]
line-length = 100
preview = true
[tool.ruff.lint]
select = ["I", "UP045", "UP006", "UP007"]
[tool.ruff.lint.isort]
combine-as-imports = true
known-first-party = ["getgather", "tests"]
[tool.yamlfix]
exclude = ["**/.venv/**"]
explicit_start = false
line_length = 120
whitelines = 1