[build-system] requires = ["hatchling>=1.26.3"] build-backend = "hatchling.build" [project] name = "agentcrawl-ai" version = "0.7.0" description = "Self-hosted web scraping and Markdown extraction for AI agents." readme = "README.md" requires-python = ">=3.10" license = "Apache-2.0" authors = [{ name = "AgentCrawl contributors" }] keywords = [ "ai-agents", "crawler", "markdown", "mcp", "scraping", "self-hosted", "web-extraction", ] classifiers = [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ "html2text>=2025.4.15,<2026.0.0", "regex>=2024.11.6", ] [project.urls] Homepage = "https://github.com/JorG18/agentcrawl" Repository = "https://github.com/JorG18/agentcrawl" Issues = "https://github.com/JorG18/agentcrawl/issues" Documentation = "https://github.com/JorG18/agentcrawl#readme" [project.optional-dependencies] browser = ["playwright>=1.60.0,<2.0.0"] # Playwright patched against automation detection (browser_engine="patchright"). stealth = ["playwright>=1.60.0,<2.0.0", "patchright>=1.58.0,<2.0.0"] # CloakBrowser's patched Chromium (browser_engine="cloak"); the binary is # downloaded by the user under its own license: python -m cloakbrowser install. cloak = ["playwright>=1.60.0,<2.0.0", "cloakbrowser>=0.6.0,<0.7.0"] docs = ["PyMuPDF>=1.26.0,<2.0.0"] llm = [ "langchain>=1.3.2,<2.0.0", "pydantic>=2.13.4,<3.0.0", ] quality = ["semchunk>=4.0.0,<5.0.0"] openai = [ "langchain>=1.3.2,<2.0.0", "langchain-openai>=1.2.2,<2.0.0", "pydantic>=2.13.4,<3.0.0", ] anthropic = [ "langchain>=1.3.2,<2.0.0", "langchain-anthropic>=1.4.4,<2.0.0", "pydantic>=2.13.4,<3.0.0", ] ollama = [ "langchain>=1.3.2,<2.0.0", "langchain-ollama>=1.1.0,<2.0.0", "pydantic>=2.13.4,<3.0.0", ] server = [ # 0.133 is the first fastapi that accepts the starlette floor below. "fastapi>=0.133.0,<1.0.0", "pydantic>=2.13.4,<3.0.0", # Security floor for fastapi's transitive dependency (CVE-2026-54282/54283). "starlette>=1.3.1,<2.0.0", "uvicorn[standard]>=0.38.0,<1.0.0", ] mcp = [ "mcp>=1.30.0,<2.0.0", "pydantic>=2.13.4,<3.0.0", ] dev = ["httpx2>=2.0.0,<3.0.0", "pytest>=8.0.0", "ruff>=0.13.0,<0.17"] [project.scripts] agentcrawl = "agentcrawl.cli:main" agentcrawl-mcp = "agentcrawl.mcp_server:main" [tool.hatch.build.targets.wheel] packages = ["agentcrawl"] # Explicit allowlist: without it hatch packs every file not excluded by the # repo's own .gitignore, so locally ignored working files (agent plans, notes) # ended up in the published sdist. [tool.hatch.build.targets.sdist] include = [ "/agentcrawl", "/tests", "/benchmarks", "/docs", "/examples", "/integrations", "/README.md", "/CHANGELOG.md", "/ROADMAP.md", "/SECURITY.md", "/CONTRIBUTING.md", "/INSTALL_FOR_AGENTS.md", "/LICENSE", "/.env.example", ] exclude = ["__pycache__", "*.pyc"] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["."] [tool.ruff] line-length = 100 target-version = "py310" [tool.ruff.lint] # Pinned explicitly: Ruff 0.16 widened its default rule set, which turned a # green tree red in CI without a single code change. Widen on purpose, not by # upgrading. select = ["E4", "E7", "E9", "F"]