Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
129 lines (115 loc) · 3.69 KB
/
Copy pathpyproject.toml
File metadata and controls
129 lines (115 loc) · 3.69 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
123
124
125
126
127
128
129
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "simpleaudit"
version = "0.6.1"
description = "Lightweight AI Safety Auditing Framework"
readme = "README.md"
license = {text = "MIT"}
authors = [
{name = "SimpleAudit Contributors"}
]
keywords = ["ai", "safety", "audit", "red-team", "llm", "rag", "testing"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Software Development :: Testing",
]
requires-python = ">=3.11,<3.14"
dependencies = [
"any-llm-sdk>=1.14.0",
"fsspec>=2023.1.0",
"httpx>=0.27",
"tqdm>=4.66.0",
]
[project.scripts]
simpleaudit = "simpleaudit.cli:main"
# Registers the simpleaudit/audit task with Inspect AI (needs the inspect extra).
[project.entry-points.inspect_ai]
simpleaudit = "simpleaudit.integrations.inspect._registry"
[project.optional-dependencies]
# OTLP trace ingestion (simpleaudit.tracing). The core audit engine works with
# no tracing; install this extra to run the builtin OTLP receiver (HTTP-JSON
# and gRPC) that captures spans from instrumented targets.
tracing = [
# Runs as an HTTP server: keep above releases with known request-parsing CVEs.
"aiohttp>=3.12.14",
"grpcio>=1.60",
"opentelemetry-proto>=1.20",
]
plot = ["matplotlib>=3.5.0"]
# Run scenario packs as Inspect AI tasks and read Inspect logs back
# (simpleaudit.integrations.inspect).
# agent-client-protocol 1.0.0 (2026-11-09) removed acp.helpers, which inspect-ai
# 0.3.288 still imports (it only requires >=0.12.0). Drop the cap once inspect-ai
# supports 1.x.
inspect = ["inspect-ai>=0.3.283", "agent-client-protocol<1"]
dev = [
# pytest is pinned <9 because pytest-testmon 2.x is not yet compatible with
# pytest 9 (same pin as Studio).
"pytest>=8,<9",
"pytest-asyncio>=0.21.0",
"pytest-cov>=4.0.0",
# xdist is pinned <3.8 because 3.8+ pulls in `greenlet` (same pin as Studio).
"pytest-xdist>=3.6,<3.8",
"pytest-testmon>=2,<3",
"black>=23.0.0",
"ruff>=0.1.0",
]
all = ["simpleaudit[plot,dev]"]
# Audit agents hosted in OpenEnv environments (simpleaudit.targets.OpenEnvTarget).
openenv = ["openenv>=0.10"]
[project.urls]
Homepage = "https://github.com/simulamet/simpleaudit"
Documentation = "https://github.com/simulamet/simpleaudit#readme"
Repository = "https://github.com/simulamet/simpleaudit"
Issues = "https://github.com/simulamet/simpleaudit/issues"
PyPI = "https://pypi.org/project/simpleaudit/"
[tool.setuptools.packages.find]
where = ["."]
include = ["simpleaudit*"]
[tool.setuptools.package-data]
simpleaudit = [
"scenarios/images/*.png",
]
[tool.black]
line-length = 100
target-version = ["py311", "py312", "py313"]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "--cov=simpleaudit --cov-report=html --cov-report=term-missing"
asyncio_mode = "auto"
[tool.coverage.run]
source = ["simpleaudit"]
omit = [
"*/tests/*",
"*/__init__.py",
"*/__pycache__/*",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise AssertionError",
"raise NotImplementedError",
"if __name__ == .__main__.:",
"if TYPE_CHECKING:",
"class .*\\bProtocol\\):",
"@(abc\\.)?abstractmethod",
]
skip_covered = false
skip_empty = true
[tool.coverage.html]
directory = "htmlcov"
[tool.ruff]
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "W", "I", "N", "UP", "B", "C4"]
ignore = ["E501"]