forked from daaain/claude-code-log
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
150 lines (134 loc) · 4.28 KB
/
Copy pathpyproject.toml
File metadata and controls
150 lines (134 loc) · 4.28 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
[project]
name = "claude-code-log"
version = "1.4.0"
description = "Convert Claude Code transcript JSONL files to HTML"
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
]
license = "MIT"
license-files = ["LICEN[CS]E*"]
authors = [
{ name = "Daniel Demmel", email = "hello@danieldemmel.me" },
{ name = "Edward Z. Yang", email = "ezyang@mit.edu" },
]
dependencies = [
"click>=8.3.0",
"dateparser>=1.2.2",
"pydantic>=2.12.0",
"jinja2>=3.1.6",
"mistune>=3.1.4",
"toml>=0.10.2",
"textual>=6.5.0",
"packaging>=25.0",
"gitpython>=3.1.45",
"pygments>=2.19.2",
]
[project.urls]
Homepage = "https://github.com/daaain/claude-code-log"
Issues = "https://github.com/daaain/claude-code-log/issues"
[project.scripts]
claude-code-log = "claude_code_log.cli:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build]
exclude = ["/docs", "/test", "/scripts"]
[tool.pytest.ini_options]
testpaths = ["test"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
# Parallelise across all cores; worksteal rebalances heavyweight integration
# tests across workers (default `load` left workers idle while one slogged
# through the queue). Override with `-n0 --dist=no` for serial runs, or with
# `--dist=no --pdb` for debugging (worksteal distribution must be disabled).
addopts = "-n auto --dist=worksteal"
markers = [
"tui: TUI tests using Textual framework (requires isolated event loop)",
"browser: Browser integration tests using Playwright (requires Chromium)",
"snapshot: Snapshot tests that must run serially (syrupy file ordering)",
"integration: Integration tests with realistic JSONL data",
"slow: Slower tests that measure performance (may take several seconds)",
"benchmark: Performance benchmarks that output to GitHub Job Summary",
]
[tool.ty.environment]
# Use custom stubs for untyped libraries
extra-paths = ["stubs"]
[tool.ty.src]
# docs/gen_pages.py is a build-time mkdocs-gen-files script: it imports
# `mkdocs_gen_files` (a docs-only dependency) and the standalone helpers in
# scripts/ via sys.path manipulation, neither of which ty can resolve in the
# default environment. It is not part of the type-checked source (pyright only
# `include`s claude_code_log), so exclude it here to match that intent.
exclude = ["docs"]
[tool.pyright]
# Pyright configuration with strict settings
include = ["claude_code_log"] # TODO: , "test"
exclude = ["**/__pycache__", "dist"]
stubPath = "stubs"
venvPath = "."
venv = ".venv"
reportMissingImports = true
reportMissingTypeStubs = true
pythonVersion = "3.10"
pythonPlatform = "All"
typeCheckingMode = "strict"
reportUnknownMemberType = true
reportUnknownParameterType = true
reportUnknownVariableType = true
reportUnknownArgumentType = true
reportPrivateImportUsage = true
reportUntypedFunctionDecorator = true
reportFunctionMemberAccess = true
reportIncompatibleMethodOverride = true
[tool.ruff]
target-version = "py310"
[tool.coverage.run]
source = ["claude_code_log"]
omit = ["*/tests/*", "*/test/*", "*/__pycache__/*", "*/venv/*", "*/.venv/*"]
relative_files = true
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"if settings.DEBUG",
"raise AssertionError",
"raise NotImplementedError",
"if 0:",
"if __name__ == .__main__.:",
"class .*\\bProtocol\\):",
"@(abc\\.)?abstractmethod",
]
show_missing = true
precision = 2
[tool.coverage.html]
directory = "htmlcov"
[dependency-groups]
dev = [
"pytest>=8.3.5",
"pytest-asyncio>=0.25.3",
"pytest-cov>=5.0.0",
"coverage[toml]>=7.6.0",
"ruff>=0.11.2",
"pytest-xdist[psutil]>=3.6.1",
"pyright>=1.1.408",
"vulture>=2.14",
"ty>=0.0.11",
"pytest-playwright>=0.7.0",
"syrupy>=5.0.0",
# Reference test plugin for the plugin-system test suite. Doubles as
# the canonical example for third-party plugin authors. See
# test/_plugins/clmail/README.md.
"claude-code-log-clmail-test",
]
docs = [
"mkdocs>=1.6.1",
"mkdocs-material>=9.5.0",
"mkdocs-click>=0.8.1",
"mkdocs-gen-files>=0.5.0",
]
[tool.uv.sources]
claude-code-log-clmail-test = { path = "test/_plugins/clmail", editable = true }