[project] name = "tools" version = "0.1.0" description = "Tools library for the Aden agent framework" readme = "README.md" requires-python = ">=3.11" license = { text = "Apache-2.0" } authors = [{ name = "Aden", email = "team@aden.ai" }] keywords = ["ai", "agents", "tools", "llm"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] dependencies = [ "pydantic>=2.0.0", "httpx>=0.27.0", "beautifulsoup4>=4.12.0", "pypdf>=4.0.0", "pandas>=2.0.0", "jsonpath-ng>=1.6.0", "fastmcp>=2.0.0", "diff-match-patch>=20230430", "python-dotenv>=1.0.0", "playwright>=1.40.0", "playwright-stealth>=2.0.0", "litellm==1.83.4", "dnspython>=2.4.0", "resend>=2.0.0", "asana>=3.2.0", "google-analytics-data>=0.18.0", "framework", "stripe>=14.3.0", "arxiv>=2.1.0", "requests>=2.31.0", "websockets>=12.0", "psycopg2-binary>=2.9.0", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", ] sandbox = [ "RestrictedPython>=7.0", ] browser = [ "pillow>=10.0.0", ] ocr = [ "pytesseract>=0.3.10", "pillow>=10.0.0", ] excel = [ "openpyxl>=3.1.0", ] sql = [ "duckdb>=1.0.0", ] bigquery = [ "google-cloud-bigquery>=3.0.0", ] databricks = [ "databricks-sdk>=0.30.0", "databricks-mcp>=0.1.0", ] all = [ "RestrictedPython>=7.0", "pytesseract>=0.3.10", "pillow>=10.0.0", "duckdb>=1.0.0", "openpyxl>=3.1.0", "google-cloud-bigquery>=3.0.0", "databricks-sdk>=0.30.0", "databricks-mcp>=0.1.0", ] [tool.uv.sources] framework = { workspace = true } [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/aden_tools"] [tool.ruff] target-version = "py311" line-length = 100 lint.select = [ "B", # bugbear errors "C4", # flake8-comprehensions errors "E", # pycodestyle errors "F", # pyflakes errors "I", # import sorting "Q", # flake8-quotes errors "UP", # py-upgrade "W", # pycodestyle warnings ] lint.isort.combine-as-imports = true lint.isort.known-first-party = ["aden_tools"] lint.isort.section-order = [ "future", "standard-library", "third-party", "first-party", "local-folder", ] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" addopts = "-m 'not live'" markers = [ "live: Tests that call real external APIs (require credentials, never run in CI)", ] [dependency-groups] dev = [ "ty>=0.0.13", "ruff>=0.14.14", "duckdb>=1.4.4", ]