-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
110 lines (103 loc) · 4.57 KB
/
pyproject.toml
File metadata and controls
110 lines (103 loc) · 4.57 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 = "agentic-ai-solution-accelerator"
version = "1.0.0"
description = "Template for production-grade multi-agent Azure solutions (flagship: sales research & outreach)."
readme = "README.md"
requires-python = ">=3.11"
license = { text = "MIT" }
# Pinned to a known-good version matrix. See docs/version-matrix.md.
# Weekly version-matrix.yml CI job re-tests against latest; deprecation policy N-1 minor.
dependencies = [
"agent-framework>=1.0.0,<2.0.0",
# Upper bound raised to <3.0.0 because agent-framework-foundry (transitive
# dep of agent-framework>=1.0.0) requires azure-ai-projects>=2.0.0. Keeping
# >=1.0.0 floor for flexibility; pip will resolve to the 2.x series in
# practice to satisfy agent-framework-foundry.
"azure-ai-projects>=1.0.0,<3.0.0",
"azure-ai-agents>=1.0.0,<2.0.0",
"azure-identity>=1.18.0,<2.0.0",
"azure-keyvault-secrets>=4.8.0,<5.0.0",
# Pinned to GA-only (11.5.x) — 11.6.x is a beta line at time of writing
# and ships a different vectorizer shape (AzureOpenAIParameters vs
# AzureOpenAIVectorizerParameters). Keep the ceiling tight and bump only
# when 11.6.0 ships GA.
"azure-search-documents>=11.5.3,<11.6.0",
# Required for bootstrap to embed seed docs at provision time so the
# `accounts` index has populated `contentVector` fields. Query-time
# vectorization fires from the AAD vectorizer in the index schema; this
# dep is only for the seed path. agent-framework already pulls
# openai>=2 transitively so this is a free-floating soft pin.
"openai>=2.0.0,<3.0.0",
"azure-mgmt-cognitiveservices>=13.5.0,<14.0.0",
# Required by src.bootstrap._grant_agent_search_access — at runtime,
# bootstrap inspects each Foundry agent's instance_identity.principal_id
# and uses ARM role-assignments to grant it Search RBAC on the AI Search
# service. The workload MI has Role Based Access Control Administrator
# (constrained to the three Search roles via ABAC condition in
# infra/main.bicep) so this is the minimum-privilege path.
"azure-mgmt-authorization>=4.0.0,<5.0.0",
"azure-monitor-opentelemetry>=1.6.0,<2.0.0",
"opentelemetry-api>=1.27.0,<2.0.0",
"opentelemetry-sdk>=1.27.0,<2.0.0",
# FastAPI auto-instrumentation: creates a parent request span per HTTP call
# so every `emit_event(...)` inside the workflow correlates to a single
# operation_Id in App Insights. Without this, span events emitted by the
# workflow have no recording parent and are silently dropped — the
# `traces`-table fallback in `accelerator_baseline.telemetry.emit_event`
# is what keeps events queryable; FastAPI instrumentation is what makes
# them correlatable. Both are required for Lab 3 to work as described.
"opentelemetry-instrumentation-fastapi>=0.48b0,<1.0.0",
"fastapi>=0.115.0,<1.0.0",
"uvicorn[standard]>=0.32.0,<1.0.0",
"pydantic>=2.9.0,<3.0.0",
"pyyaml>=6.0.2,<7.0.0",
"httpx>=0.28.0,<1.0.0",
# Used by scripts/extract-brief-from-doc.py (driver for /ingest-prd).
# Kept in base deps (not an extra) so the chatmode "just works" on a
# fresh clone without partners needing to install optional extras.
"python-docx>=1.1.0,<2.0.0",
"pypdf>=6.10.2,<7.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"ruff>=0.7",
"mypy>=1.13",
"pyright>=1.1.380",
"pip-audit>=2.7",
"pyyaml>=6.0.2",
]
evals = [
"azure-ai-evaluation>=1.0.0,<2.0.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
# Tell hatchling exactly which directories to ship in the wheel. The project
# name ("agentic-ai-solution-accelerator") doesn't match a top-level Python
# package, so hatchling's default file-discovery heuristic fails. Nothing
# imports `agentic_ai_solution_accelerator` as a package — `src/` is a flat
# collection of feature modules. Listing them explicitly here unblocks the
# editable install used by CI to bring in runtime + dev deps.
[tool.hatch.build.targets.wheel]
packages = [
"src/accelerator_baseline",
"src/config",
"src/retrieval",
"src/scenarios",
"src/tools",
"src/workflow",
]
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "B", "S", "W"]
ignore = ["S101"] # assert-in-tests is fine
[tool.ruff.lint.per-file-ignores]
# Maintenance/tooling scripts: long structured prose in data literals (E501),
# intentional try/except swallow in the linter itself (S110/S112), trusted
# subprocess + URL usage on partner-run machines (S310/S603/S607).
"scripts/*" = ["E501", "S110", "S112", "S310", "S603", "S607"]
# Example pattern module uses SSE f-strings that don't reflow cleanly.
"patterns/chat-with-actioning/src/chat.py" = ["E501"]