[project] name = "scrapegraphai" version = "2.1.5" description = "A web scraping library based on LangChain which uses LLM and direct graph logic to create scraping pipelines." authors = [ { name = "Marco Vinciguerra", email = "mvincig11@gmail.com" }, { name = "Lorenzo Padoan", email = "lorenzo.padoan977@gmail.com" }, ] dependencies = [ "langchain>=1.2.0", "langchain-classic>=1.0.0", "langchain-openai>=1.1.6", "langchain-mistralai>=1.1.1", "langchain_community>=0.4.0", "langchain-aws>=1.1.0", "langchain-ollama>=1.0.1", "html2text>=2025.4.15", "beautifulsoup4>=4.14.3", "python-dotenv>=1.2.1", "tiktoken>=0.12.0", "tqdm>=4.67.1", "minify-html>=0.18.1", "free-proxy>=1.1.3", "playwright>=1.57.0", "undetected-playwright>=0.3.0", "semchunk>=3.2.5", "async-timeout>=4.0.0", "simpleeval>=1.0.3", "jsonschema>=4.25.1", "ddgs>=9.0.0", "pydantic>=2.12.5", "scrapegraph-py>=2.0.0", ] readme = "README.md" homepage = "https://scrapegraphai.com/" repository = "https://github.com/ScrapeGraphAI/Scrapegraph-ai" documentation = "https://docs.scrapegraphai.com/introduction" keywords = [ "scrapegraph", "scrapegraphai", "langchain", "ai", "artificial intelligence", "gpt", "machine learning", "rag", "nlp", "natural language processing", "openai", "scraping", "web scraping", "web scraping library", "web scraping tool", "webscraping", "graph", "llm", ] classifiers = [ "Intended Audience :: Developers", "Topic :: Software Development :: Libraries :: Python Modules", "Programming Language :: Python :: 3", "Operating System :: OS Independent", ] requires-python = ">=3.12,<4.0" [project.optional-dependencies] burr = ["burr[start]==0.22.1"] nvidia = ["langchain-nvidia-ai-endpoints>=0.1.0"] ocr = [ "surya-ocr>=0.5.0", "matplotlib>=3.7.2", "ipywidgets>=8.1.0", "pillow>=10.4.0", ] [build-system] requires = ["hatchling==1.26.3"] build-backend = "hatchling.build" [tool.uv] dev-dependencies = [ "pytest>=8.0.0", "pytest-mock>=3.14.0", "pytest-asyncio>=0.25.0", "pytest-sugar>=1.0.0", "pytest-cov>=4.1.0", "pylint>=3.2.5", "poethepoet>=0.32.0", "black>=24.2.0", "ruff>=0.2.0", "isort>=5.13.2", "pre-commit>=3.6.0", "mypy>=1.8.0", "types-setuptools>=75.1.0", ] [tool.black] line-length = 88 target-version = ["py310"] [tool.isort] profile = "black" [tool.ruff] line-length = 88 [tool.ruff.lint] select = ["F", "E", "W", "C"] ignore = ["E203", "E501", "C901"] # Ignore conflicts with Black [tool.mypy] python_version = "3.10" strict = true disallow_untyped_calls = true ignore_missing_imports = true [tool.poe.tasks] pylint-local = "pylint scraperaphai/**/*.py" pylint-ci = "pylint --disable=C0114,C0115,C0116 --exit-zero scrapegraphai/**/*.py"