Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
executable file
·98 lines (89 loc) · 2.32 KB
/
Copy pathpyproject.toml
File metadata and controls
executable file
·98 lines (89 loc) · 2.32 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
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "draco-toolkit"
version = "0.1.2"
description = "Authentication and authorization for AI agents: SPIFFE identity, per-tool OAuth tokens, per-call authorization, and behavioral telemetry"
requires-python = ">=3.12"
license = "Apache-2.0"
readme = "README.md"
authors = [
{ name = "Draco Tech" },
]
keywords = [
"ai-agents",
"authentication",
"authorization",
"spiffe",
"openfga",
"oauth",
"token-exchange",
"workload-identity",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Security",
"Topic :: Software Development :: Libraries",
"Typing :: Typed",
]
dependencies = [
"python-ulid>=3.0",
"spiffe>=0.2",
"pyjwt>=2.9",
"httpx>=0.27",
"cryptography>=43.0",
"hvac>=2.3",
]
[project.urls]
Homepage = "https://draco-tech.ai/"
Repository = "https://github.com/Draco-Tech-ai/draco-toolkit"
Issues = "https://github.com/Draco-Tech-ai/draco-toolkit/issues"
Documentation = "https://github.com/Draco-Tech-ai/draco-toolkit/tree/main/docs"
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.24",
"ruff>=0.4",
"mypy>=1.10",
"httpx>=0.27",
"respx>=0.22",
]
agent = [
"langchain>=0.3",
"langchain-core>=0.3",
"langchain-openai>=0.3",
"langgraph>=0.4",
"pydantic-settings>=2.0.0",
]
metrics = [
"opentelemetry-api>=1.20",
"opentelemetry-sdk>=1.20",
]
[tool.hatch.build.targets.wheel]
packages = ["src/draco"]
[tool.ruff]
target-version = "py312"
line-length = 88
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "A", "SIM", "TCH"]
[tool.ruff.lint.per-file-ignores]
# Embeds the OpenFGA model DSL as a string literal; long schema lines are
# intrinsic to the DSL and must not be reflowed.
"scripts/bootstrap_openfga.py" = ["E501"]
[tool.mypy]
python_version = "3.12"
strict = true
warn_return_any = true
warn_unused_configs = true
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
markers = [
"e2e: end-to-end tests requiring a live k3s cluster",
"integration: tests against live OpenFGA and OpenBao services",
]