Python 76.2%
JavaScript 11.3%
CSS 6.3%
HTML 5.9%
1[project]2name = "trawls"3version = "0.1.0"4description = "Trawls — moteur de crawling, d'extraction et de navigation web, LLM-ready."5readme = "README.md"6requires-python = ">=3.12"7license = { text = "MIT" }8authors = [{ name = "Simon-Pierre Boucher" }]9dependencies = [10 "fastapi>=0.115",11 "uvicorn[standard]>=0.30",12 "pydantic>=2.8",13 "pydantic-settings>=2.4",14 "curl_cffi>=0.7",15 "httpx[http2]>=0.27",16 "playwright>=1.47",17 "selectolax>=0.3.21",18 "lxml>=5.2",19 "charset-normalizer>=3.3",20 "pymupdf>=1.24",21 "tiktoken>=0.7",22 "structlog>=24.1",23 "aiosqlite>=0.20",24 "typer>=0.12",25 "rich>=13.7",26 "python-dateutil>=2.9",27 "sse-starlette>=2.1",28 "argon2-cffi>=23.1",29 "orjson>=3.10",30]3132[project.optional-dependencies]33dev = ["pytest>=8", "pytest-asyncio>=0.23", "ruff>=0.5", "mypy>=1.10", "aiohttp>=3.9"]34ocr = ["rapidocr-onnxruntime>=1.3"]3536[project.scripts]37trawls = "trawls.cli:app"3839[build-system]40requires = ["hatchling"]41build-backend = "hatchling.build"4243[tool.hatch.build.targets.wheel]44packages = ["trawls"]4546[tool.ruff]47line-length = 11048target-version = "py312"4950[tool.ruff.lint]51select = ["E", "F", "I", "UP", "B", "ASYNC"]52ignore = ["E501", "B008", "E402", "UP047", "ASYNC109", "ASYNC230"]5354[tool.mypy]55python_version = "3.12"56strict = true57ignore_missing_imports = true5859[tool.pytest.ini_options]60asyncio_mode = "auto"61testpaths = ["tests"]62