This repository was archived by the owner on Sep 7, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
97 lines (86 loc) · 3.45 KB
/
Copy pathpyproject.toml
File metadata and controls
97 lines (86 loc) · 3.45 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
[project]
name = "otel-a2a-relay-workspace"
version = "0.0.0"
description = "Monorepo workspace root for otel-a2a-relay-{core,arize-phoenix,tempo-grafana} + the LUCA-flow demo. This package itself ships nothing; it exists so dev tools (uv, ruff, mypy, pytest) can run across the whole tree from one place."
readme = "README.md"
requires-python = ">=3.13"
license = { text = "MIT" }
authors = [{ name = "Kai Siren" }]
# No runtime deps - this package is never published. Each member ships its own.
[tool.uv]
managed = true
package = false
[tool.uv.workspace]
members = ["core", "channels", "arize_phoenix", "tempo_grafana", "examples/luca-flow"]
[tool.uv.sources]
otel-a2a-relay-core = { workspace = true }
otel-a2a-relay-channels = { workspace = true }
otel-a2a-relay-arize-phoenix = { workspace = true }
otel-a2a-relay-tempo-grafana = { workspace = true }
[dependency-groups]
dev = [
# Workspace-wide tools. Each member can add its own dev deps too.
"mypy>=1.20",
"pre-commit>=4.5",
"pytest>=8.0",
"pytest-cov>=5.0",
"ruff>=0.15",
"pyyaml>=6.0",
"types-pyyaml>=6.0",
"httpx>=0.28",
# Pillow drives the `arize_phoenix.viz` GIF renderer + its tests.
# In this workspace it's a dev dep so test runs see it; downstream
# consumers install it via the `viz` extra on otel-a2a-relay-arize-phoenix.
"pillow>=12.2.0",
# Phoenix harness wants this for `make luca-test` end-to-end.
"arize-phoenix>=15.0",
# Each member references the others by workspace dep so dev deps line up.
"otel-a2a-relay-core",
"otel-a2a-relay-channels",
"otel-a2a-relay-arize-phoenix",
"otel-a2a-relay-tempo-grafana",
]
[tool.ruff]
line-length = 100
target-version = "py313"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "A", "RUF"]
[tool.mypy]
python_version = "3.13"
strict = true
ignore_missing_imports = true
explicit_package_bases = true
# The workspace has multiple `tests/` dirs (one per member). Without this,
# mypy collapses them into a single `tests` namespace and complains about
# duplicate modules. Each tests dir gets a distinct module path keyed off
# the package root.
mypy_path = "core/src:channels/src:arize_phoenix/src:tempo_grafana/src:examples/luca-flow/src"
[[tool.mypy.overrides]]
# `tests.fixtures.sessions` is consumed by arize_phoenix/tests/test_viz.py
# and the regen script; it's not part of any importable package.
module = "tests.*"
disallow_untyped_decorators = false
[tool.pyright]
venvPath = "."
venv = ".venv"
[tool.agentic-os.code-comments]
excludes = [
# The apply-agentic-os-hooks.py BEGIN/END markers are generated comments
# past line 1, so the YAML one-line-header rule cannot apply. Mirrors
# agentic-os and sibling consumer repos (ward, backend).
".pre-commit-config.yaml",
]
[tool.agentic-os.documentation-layout]
# Each workspace member carries an idiomatic co-located README next to the code
# it documents, which the root/docs/skills location rule does not model. Excluded
# per the agentic-os #22 escape hatch, mirroring how agentic-os excludes its own
# subsystem dirs (warp, voice, visual). docs/generated/ holds generated semconv
# artifacts (o2r-semconv.yaml, the JSON schema), not Markdown - a generated path.
excludes = [
"**/README.md",
"docs/generated/**",
# The span-attribute registry: a single YAML block parsed by
# scripts/emit_protocol_artifacts.py to generate docs/generated/. It is one
# indivisible generated-source document, so the per-doc line cap cannot apply.
"docs/protocol-attributes.md",
]