Files
wehub-resource-sync f3d80b4628
Auto Release / auto-release (push) Failing after 1s
CI / lint (push) Failing after 0s
CI / screenshot-quality (push) Failing after 3s
CI / pr-policy (push) Has been skipped
CI / test (3.11) (push) Failing after 0s
CI / test (3.12) (push) Failing after 0s
CI / test (3.13) (push) Failing after 3s
CI / coverage (push) Failing after 1s
Legibility / legibility (push) Failing after 3s
chore: import upstream snapshot with attribution
2026-07-13 12:31:48 +08:00

111 lines
2.8 KiB
TOML

[project]
name = "claude-tap"
dynamic = ["version"]
description = "Trace AI CLI API requests via local reverse and forward proxies. Inspect system prompts, messages, tools, and token usage."
requires-python = ">=3.11"
license = "MIT"
authors = [{ name = "liaohch3" }]
readme = "README.md"
keywords = ["claude", "claude-code", "codex", "kimi", "cursor", "qoder", "trace", "proxy", "api", "llm", "context-engineering"]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Debuggers",
"Topic :: Software Development :: Testing",
]
dependencies = [
"aiohttp==3.14.1",
"backports-zstd>=1.0; python_version < '3.14'",
"cryptography>=42.0",
]
[project.urls]
Homepage = "https://github.com/liaohch3/claude-tap"
Repository = "https://github.com/liaohch3/claude-tap"
Issues = "https://github.com/liaohch3/claude-tap/issues"
[project.scripts]
claude-tap = "claude_tap.cli:main_entry"
[build-system]
requires = ["setuptools>=68.0", "setuptools-scm[toml]>=8.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools]
packages = ["claude_tap", "claude_tap.viewer_assets"]
[tool.setuptools_scm]
version_scheme = "guess-next-dev"
local_scheme = "no-local-version"
[tool.setuptools.package-data]
claude_tap = ["dashboard.html", "viewer.html", "viewer_i18n.json", "py.typed"]
"claude_tap.viewer_assets" = ["*.css", "*.js"]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"pytest-timeout>=2.3",
"pexpect>=4.9",
"coverage>=7.6",
"ruff>=0.11",
]
[tool.ruff]
target-version = "py311"
line-length = 120
[tool.ruff.lint]
select = ["E", "F", "W", "I"]
ignore = ["E501"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
addopts = [
"-v",
"--tb=short",
"--strict-markers",
]
markers = [
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
"integration: marks tests as integration tests",
"asyncio: marks tests as async (run by pytest-asyncio)",
"real_e2e: marks tests as real E2E tests requiring claude CLI (use --run-real-e2e)",
]
timeout = 60
[tool.coverage.run]
source = ["claude_tap"]
branch = true
omit = ["tests/*"]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"if __name__ == .__main__.:",
"if TYPE_CHECKING:",
]
show_missing = true
[tool.claude_tap.coverage]
python_total_min = 65.0
python_diff_min = 80.0
viewer_js_function_min = 50.0
viewer_js_diff_min = 80.0
viewer_css_selector_min = 65.0
viewer_css_diff_min = 80.0
[dependency-groups]
dev = [
"playwright>=1.58.0",
]