Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
110 lines (99 loc) · 3.28 KB
/
Copy pathpyproject.toml
File metadata and controls
110 lines (99 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
[project]
name = "paid-media-agent"
version = "0.1.0"
description = "Paid-media analysis and reporting with Deep Agents. Deploy with MDA or self-host."
readme = "README.md"
license = "Apache-2.0"
license-files = ["LICENSE"]
requires-python = ">=3.11"
keywords = ["paid-media", "deep-agents", "langchain", "mcp", "pipeboard", "slack"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Office/Business",
"Typing :: Typed",
]
dependencies = [
"deepagents>=0.7.12,<0.8",
"managed-deepagents>=0.6.1,<0.9",
"langchain>=1.3.18,<1.5",
"langgraph>=1.2.11,<1.3",
"langchain-mcp-adapters>=0.3.2,<0.4",
# langchain-mcp-adapters 0.3.x currently requires MCP 1.x.
"mcp>=1.24,<2",
"httpx>=0.28.1,<0.29",
"pydantic>=2.13.5,<3",
"pydantic-settings>=2.15,<3",
"click>=8.2,<9",
# LangChain does not validate dict-form JSON schema tool arguments; the host guard does.
"jsonschema>=4.23,<5",
# API and optional local setup console.
"fastapi>=0.115,<1",
"uvicorn>=0.35,<1",
# MDA builds install core dependencies only.
"langchain-anthropic>=1.4,<2",
"langchain-openai>=1.1,<2",
"jinja2>=3.1,<4",
"pillow>=12,<13",
]
[project.urls]
Repository = "https://github.com/langchain-ai/paid-media-agent"
Changelog = "https://github.com/langchain-ai/paid-media-agent/blob/main/CHANGELOG.md"
Security = "https://github.com/langchain-ai/paid-media-agent/blob/main/SECURITY.md"
[project.scripts]
paid-media-agent = "paid_media_agent.cli:main"
[project.optional-dependencies]
google = ["langchain-google-genai>=4,<5"]
# Self-hosted path: the Slack adapter, Postgres persistence, and the production ASGI server.
slack = ["slack-bolt>=1.30,<2", "slack-sdk>=3.44.1,<4", "aiohttp>=3.9,<4"]
self-host = [
"langgraph-checkpoint-postgres>=3,<4",
"psycopg[binary,pool]>=3.2,<4",
"uvicorn[standard]>=0.35,<1",
]
# Host PDF rendering needs native libraries; the Docker image includes them.
reports = ["weasyprint>=70,<71"]
# Extra model providers. Each adds a `provider:` prefix for PAID_MEDIA_MODEL.
groq = ["langchain-groq>=1,<2"]
xai = ["langchain-xai>=1,<2"]
mistral = ["langchain-mistralai>=1,<2"]
deepseek = ["langchain-deepseek>=1,<2"]
[dependency-groups]
dev = [
"mypy>=1.17,<3",
"pytest>=9,<10",
"pytest-asyncio>=1.3,<2",
"pytest-cov>=7,<8",
"ruff>=0.12,<1",
]
[build-system]
requires = ["uv_build>=0.10,<0.13"]
build-backend = "uv_build"
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
filterwarnings = [
"ignore::DeprecationWarning",
]
[tool.ruff]
line-length = 100
target-version = "py311"
extend-exclude = [".venv"]
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "UP", "TID", "ARG", "S", "RUF100"]
ignore = ["E501"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["S101", "S105", "S106", "ARG001", "ARG002"]
"src/paid_media_agent/admin/server.py" = ["B008"]
"src/paid_media_agent/surfaces/api/app.py" = ["B008"]
[tool.ruff.lint.flake8-tidy-imports]
ban-relative-imports = "all"
[tool.mypy]
python_version = "3.11"
strict = true
ignore_missing_imports = true
plugins = ["pydantic.mypy"]