-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
122 lines (111 loc) · 3.8 KB
/
Copy pathpyproject.toml
File metadata and controls
122 lines (111 loc) · 3.8 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
111
112
113
114
115
116
117
118
119
120
121
122
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "openarmature"
version = "0.9.0"
description = "Workflow framework for LLM pipelines and tool-calling agents."
readme = "README.md"
requires-python = ">=3.12"
authors = [{ name = "Chris Colinsky", email = "chris@lunarcommand.xyz" }]
license = "Apache-2.0"
license-files = ["LICENSE"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: Libraries :: Python Modules",
"Typing :: Typed",
]
dependencies = [
"pydantic>=2.7",
"httpx>=0.27",
"jsonschema>=4.0",
"jinja2>=3.1",
]
[project.optional-dependencies]
# Spec observability §6 OTel mapping. Optional per charter §3.1
# principle 5 — backend mappings are pluggable rather than core
# dependencies. Plan to lift into a sibling ``openarmature-otel``
# package at v1.0 launch alongside ``openarmature-eval``.
otel = [
"opentelemetry-api>=1.27,<3",
"opentelemetry-sdk>=1.27,<3",
# Provides ``LoggingHandler`` after the SDK's deprecation
# of ``opentelemetry.sdk._logs.LoggingHandler``. No upper
# bound — the contrib repo cycles fast on minor releases
# below 1.0; revisit when 1.0 lands.
"opentelemetry-instrumentation-logging>=0.62.0b1",
]
# Spec observability §8 Langfuse mapping. Optional per charter §3.1
# principle 5; matches the [otel] extras' shape. Validated against
# Langfuse Python SDK 4.6.x; bridge from the SDK's v4 API onto the
# LangfuseClient Protocol lives in ``observability.langfuse.adapter``.
langfuse = [
"langfuse>=4.6,<5",
]
[project.urls]
Repository = "https://github.com/LunarCommand/openarmature-python"
Specification = "https://github.com/LunarCommand/openarmature-spec"
[project.scripts]
openarmature = "openarmature.cli:main"
[tool.openarmature]
spec_version = "0.26.0"
[dependency-groups]
dev = [
"pre-commit>=3.7",
"pyright>=1.1.360",
"pytest>=8.2",
"pytest-asyncio>=0.23",
"pytest-examples>=0.0.13",
"pyyaml>=6.0",
"ruff>=0.5",
"types-pyyaml",
]
docs = [
"mkdocs>=1.6,<2",
"mkdocs-material[imaging]>=9.5,<10",
"mkdocstrings[python]>=0.27,<1",
"pymdown-extensions>=10.0,<11",
"mkdocs-glightbox>=0.4,<1",
"mkdocs-llmstxt>=0.1,<1",
]
# Deps for the runnable demos under ``examples/``. The demos call out to
# an OpenAI-compatible LLM endpoint, so ``openai`` is the one extra
# they need beyond the core package.
examples = [
"openai>=1.40",
]
[tool.hatch.build.targets.wheel]
packages = ["src/openarmature"]
[tool.pyright]
include = ["src", "tests", "examples"]
pythonVersion = "3.12"
typeCheckingMode = "strict"
reportMissingTypeStubs = false
# Underscore-prefixed names are conventionally "package-private" — used
# across sibling modules within `openarmature.graph` but not part of the
# public API (which is enforced by `__all__`). Pyright's strict default
# treats them as module-private; turn it off so legitimate cross-module
# package-private imports don't need per-line ignores.
reportPrivateUsage = false
[tool.ruff]
line-length = 110
target-version = "py312"
extend-exclude = ["openarmature-spec"]
[tool.ruff.lint]
select = ["E", "F", "I", "B", "UP"]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
# Opt-in markers for tests that hit real external services. CI skips
# these by default — run with `-m integration` to include them after
# setting the relevant env vars (LANGFUSE_PUBLIC_KEY / SECRET_KEY for
# Langfuse Cloud, etc).
markers = [
"integration: tests that exercise real external services (Langfuse Cloud, HyperDX). Skipped by default.",
]
addopts = ["-m", "not integration"]