-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
123 lines (111 loc) · 5.29 KB
/
Copy pathpyproject.toml
File metadata and controls
123 lines (111 loc) · 5.29 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
[build-system]
requires = ["setuptools>=77.0.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "dprovenancekit"
version = "0.6.1"
description = "Regression testing for AI agents — fail the PR when your agent skips a step, even when the answer still looks right."
readme = "README.md"
requires-python = ">=3.9"
license = "Apache-2.0"
license-files = ["LICENSE", "NOTICE"]
authors = [{ name = "DProvenanceKit" }]
keywords = ["observability", "ai", "agents", "tracing", "provenance", "regression"]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Intended Audience :: Developers",
"Topic :: Software Development :: Debuggers",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Operating System :: OS Independent",
"Typing :: Typed",
]
# Pure standard library: sqlite3, contextvars, threading, json, hashlib, uuid, urllib.
dependencies = []
[project.optional-dependencies]
# langchain-core is included so CI exercises the LangChain integration tests instead of
# silently skipping them. The CrewAI integration test needs `crewai`, which is heavy
# (chromadb, onnxruntime, …) and requires Python >=3.10, so it is intentionally left out
# of `dev` and runs only where crewai is installed (importorskip skips it otherwise).
dev = ["pytest>=7.0", "pytest-cov", "fastapi", "httpx", "IPython", "pytest-asyncio", "langchain-core>=0.2"]
# Framework adapters. The core package stays pure standard library; these extras are only
# needed to wire DProvenanceKit into the corresponding framework.
langchain = ["langchain-core>=0.2"]
openai-agents = ["openai-agents>=0.1"]
# The OpenAI Python SDK, used by the examples/model_drift live client. The core stays pure
# standard library; this extra is only needed to run a drift check against a live OpenAI model.
openai = ["openai>=1.0"]
llama-index = ["llama-index-core"]
# The adapter is a crewai event-bus listener (crewai.events.BaseEventListener), verified
# against the public `crewai.events` API stabilized in the 1.x line. It does NOT use
# langchain — CrewAI dropped that dependency in 0.85.0.
crewai = ["crewai>=1.0.0"]
google-genai = ["google-genai"]
fastapi = ["fastapi", "starlette"]
jupyter = ["ipython"]
mcp = ["mcp"]
# Convenience aggregate: every framework adapter in one install. Requires Python >= 3.10
# (openai-agents, llama-index, and crewai declare that floor) and is heavy (crewai pulls
# chromadb/onnxruntime). On 3.9, or for a lean install, pick the specific extras above.
all = [
"langchain-core>=0.2",
"openai-agents>=0.1",
"llama-index-core",
"crewai>=1.0.0",
"google-genai",
"fastapi",
"starlette",
"ipython",
"mcp",
]
[project.scripts]
dprovenancekit = "dprovenancekit.cli:main"
dpk = "dprovenancekit.cli:main"
[project.entry-points.pytest11]
dprovenancekit = "dprovenancekit.pytest_plugin"
[project.urls]
Homepage = "https://github.com/Therealdk8890/DProvenanceKitPython"
Repository = "https://github.com/Therealdk8890/DProvenanceKitPython"
Issues = "https://github.com/Therealdk8890/DProvenanceKitPython/issues"
"Swift original" = "https://github.com/Therealdk8890/DProvenanceKit"
[tool.setuptools.package-data]
dprovenancekit = ["py.typed", "index.html", "rulesets/*.json"]
[tool.ruff]
# Conservative, house-style-friendly gate. ruff already passes clean on this codebase, so
# this locks in that state without a reformat. Line length matches the existing source.
line-length = 100
target-version = "py39"
[tool.ruff.lint]
# Conservative rule set that already passes clean on this codebase: pyflakes (F) catches
# real bugs (undefined names, unused imports, bad f-strings), pycodestyle (E) covers core
# style. Kept deliberately narrow so the gate is free today and can be widened later.
select = ["E", "F"]
# E501 (line length) is handled by the formatter's line-length above; leaving it off here
# avoids churn on the handful of long docstring/URL lines the codebase already carries.
ignore = ["E501"]
[tool.ruff.lint.per-file-ignores]
# The package root deliberately imports names it does not itself use so they stay
# importable (``from dprovenancekit import X``) even when they are intentionally excluded
# from the curated ``__all__``. Re-export files are the standard exception to F401.
"dprovenancekit/__init__.py" = ["F401"]
[tool.mypy]
# An honest, non-strict baseline gate: it type-checks the package and blocks regressions,
# and can be tightened later. Framework adapters import optional third-party packages that
# are not installed in the lint job, so missing imports are ignored rather than failing.
# python_version is intentionally unset so mypy assumes the interpreter it runs under (the
# CI job pins 3.12); the package itself still supports 3.9 per requires-python.
ignore_missing_imports = true
# Do NOT enable strict mode; untyped function bodies stay unchecked for now.
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_default_fixture_loop_scope = "function"
filterwarnings = [
"ignore:Using `httpx` with `starlette.testclient` is deprecated",
]
[tool.setuptools.packages.find]
include = ["dprovenancekit*"]