136 lines
5.8 KiB
TOML
136 lines
5.8 KiB
TOML
[project]
|
|
name = "deepagents"
|
|
version = "0.3.5"
|
|
description = "General purpose 'deep agent' with sub-agent spawning, todo list capabilities, and mock file system. Built on LangGraph."
|
|
readme = "README.md"
|
|
license = { text = "MIT" }
|
|
requires-python = ">=3.11,<4.0"
|
|
dependencies = [
|
|
"langchain-core>=1.2.6,<2.0.0",
|
|
"langchain>=1.2.3,<2.0.0",
|
|
"langchain-anthropic>=1.3.1,<2.0.0",
|
|
"langchain-google-genai>=4.1.3,<5.0.0",
|
|
"wcmatch",
|
|
]
|
|
|
|
|
|
[project.urls]
|
|
Homepage = "https://docs.langchain.com/oss/python/deepagents/overview"
|
|
Documentation = "https://reference.langchain.com/python/deepagents/"
|
|
Source = "https://github.com/langchain-ai/deepagents"
|
|
Twitter = "https://x.com/LangChainAI"
|
|
Slack = "https://www.langchain.com/join-community"
|
|
Reddit = "https://www.reddit.com/r/LangChain/"
|
|
|
|
|
|
[dependency-groups]
|
|
test = [
|
|
"pytest",
|
|
"pytest-cov",
|
|
"pytest-xdist",
|
|
"ruff>=0.12.2,<0.13.0",
|
|
"mypy>=1.18.1,<1.19.0",
|
|
"pytest-asyncio>=1.3.0",
|
|
]
|
|
|
|
dev = [
|
|
"langchain-openai",
|
|
"twine",
|
|
"build",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=73.0.0", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.package-data]
|
|
"*" = ["py.typed", "*.md"]
|
|
|
|
[tool.ruff]
|
|
line-length = 150
|
|
# Exclude any files that shouldn't be linted
|
|
exclude = []
|
|
|
|
[tool.ruff.format]
|
|
docstring-code-format = true # Formats code blocks in docstrings
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"ALL" # Enable all rules by default
|
|
]
|
|
ignore = [
|
|
"COM812", # Messes with the formatter
|
|
"ISC001", # Messes with the formatter
|
|
"PERF203", # Rarely useful
|
|
"SLF001", # Private member access
|
|
"PLC0415", # Imports should be at the top. Not always desirable
|
|
"PLR0913", # Too many arguments in function definition
|
|
"PLC0414", # Inconsistent with how type checkers expect to be notified of intentional re-exports
|
|
"C901", # Too complex
|
|
]
|
|
unfixable = ["B028"] # Rules that shouldn't be auto-fixed
|
|
|
|
[tool.ruff.lint.pyupgrade]
|
|
keep-runtime-typing = true
|
|
|
|
[tool.ruff.lint.flake8-annotations]
|
|
allow-star-arg-any = true
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
convention = "google" # Google-style docstrings
|
|
ignore-var-parameters = true
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/*" = [
|
|
"D1", # Skip documentation rules in tests
|
|
"S101", # Allow asserts in tests
|
|
"S311", # Allow pseudo-random generators in tests
|
|
# Add more test-specific ignores
|
|
]
|
|
|
|
"deepagents/backends/composite.py" = ["B007", "BLE001", "D102", "EM101", "FBT001", "FBT002", "PLW2901", "S110"]
|
|
"deepagents/backends/filesystem.py" = ["BLE001", "D102", "D205", "D417", "DTZ006", "EM101", "EM102", "FBT001", "FBT002", "PLR0912", "S112", "TRY003"]
|
|
"deepagents/backends/protocol.py" = ["B024", "B027", "FBT001", "FBT002"]
|
|
"deepagents/backends/sandbox.py" = ["FBT001", "FBT002", "PLR2004"]
|
|
"deepagents/backends/state.py" = ["ANN204", "D102", "D205", "EM101", "FBT001", "FBT002", "PERF401"]
|
|
"deepagents/backends/store.py" = ["A002", "ANN204", "BLE001", "D102", "D205", "F821", "FBT001", "FBT002", "PERF401"]
|
|
"deepagents/backends/utils.py" = ["D301", "E501", "EM101", "FBT001", "RET504", "RUF005", "TRY003"]
|
|
"deepagents/middleware/filesystem.py" = ["EM102", "TRY003"]
|
|
"deepagents/middleware/memory.py" = ["E501", "EM102", "G004", "PERF401", "SIM108", "T201", "TC002", "TC003", "TRY003"]
|
|
"deepagents/middleware/skills.py" = ["EM101", "SIM108", "TC002", "TC003", "TRY003"]
|
|
"tests/integration_tests/test_deepagents.py" = ["ANN201", "C419", "E731", "PLR2004", "SIM118", "TID252"]
|
|
"tests/integration_tests/test_filesystem_middleware.py" = ["ANN001", "ANN201", "ANN202", "ARG002", "E731", "PLR2004", "SIM118", "T201", "TID252"]
|
|
"tests/integration_tests/test_hitl.py" = ["ANN201", "C419", "E501", "PLR2004", "TID252"]
|
|
"tests/integration_tests/test_subagent_middleware.py" = ["ANN001", "ANN201", "F841", "RUF012", "SIM118"]
|
|
"tests/unit_tests/backends/test_composite_backend.py" = ["ANN001", "ANN201", "ANN202", "ARG001", "ARG002", "F841", "INP001", "PLR2004", "PT018"]
|
|
"tests/unit_tests/backends/test_composite_backend_async.py" = ["ANN001", "ANN201", "ANN202", "ARG001", "ARG002", "F841", "INP001", "PLR2004", "PT018"]
|
|
"tests/unit_tests/backends/test_filesystem_backend.py" = ["ANN201", "ARG005", "B007", "B011", "INP001", "PLR2004", "PT015", "PT018"]
|
|
"tests/unit_tests/backends/test_filesystem_backend_async.py" = ["ANN201", "ARG005", "B007", "INP001", "PLR2004", "PT011", "PT018"]
|
|
"tests/unit_tests/backends/test_state_backend.py" = ["ANN001", "ANN201", "INP001", "PLR2004", "PT018"]
|
|
"tests/unit_tests/backends/test_state_backend_async.py" = ["ANN001", "ANN201", "INP001", "PLR2004", "PT018"]
|
|
"tests/unit_tests/backends/test_store_backend.py" = ["ANN201", "INP001", "PLR2004", "PT018"]
|
|
"tests/unit_tests/backends/test_store_backend_async.py" = ["ANN201", "INP001", "PLR2004", "PT018"]
|
|
"tests/unit_tests/chat_model.py" = ["ARG002", "D301", "PLR0912", "RUF012"]
|
|
"tests/unit_tests/middleware/test_memory_middleware.py" = ["F841", "PGH003", "PLR2004", "RUF001", "TC002"]
|
|
"tests/unit_tests/middleware/test_memory_middleware_async.py" = ["F841", "PGH003", "PLR2004", "RUF001"]
|
|
"tests/unit_tests/middleware/test_skills_middleware.py" = ["F841", "PGH003", "PLR2004", "TC002"]
|
|
"tests/unit_tests/middleware/test_skills_middleware_async.py" = ["F841", "PGH003", "PLR2004"]
|
|
"tests/unit_tests/middleware/test_validate_path.py" = ["ANN201"]
|
|
"tests/unit_tests/test_end_to_end.py" = ["ARG002", "PLR2004"]
|
|
"tests/unit_tests/test_middleware.py" = ["ANN001", "ANN201", "ANN202", "ARG002", "E731", "PLR2004", "SIM118", "T201"]
|
|
"tests/unit_tests/test_middleware_async.py" = ["ANN001", "ANN201", "ANN202", "ARG002"]
|
|
"tests/unit_tests/test_subagents.py" = ["PLR2004"]
|
|
"tests/unit_tests/test_todo_middleware.py" = ["E501", "PLR2004"]
|
|
"tests/utils.py" = ["ANN001", "ANN201", "RUF012", "SIM118"]
|
|
|
|
[tool.mypy]
|
|
strict = true
|
|
ignore_missing_imports = true
|
|
enable_error_code = ["deprecated"]
|
|
# Optional: reduce strictness if needed
|
|
disallow_any_generics = false
|
|
warn_return_any = false
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|