You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix failing tests
* add ci helper
* ruff
* fix false positives
* fix import error
* fix CI trigger: add pull_request event so checks report to PR
workflow_dispatch runs don't appear in the PR Checks tab — only
pull_request-triggered runs are associated with PRs. Add
pull_request: [opened, reopened] so the check runs once when a PR
is opened (not on every push). Keep workflow_dispatch for manual
re-runs.
Also fix branch protection context name: the check run is named
'test' (job name), not 'test / test'.
Copy file name to clipboardExpand all lines: CLAUDE.md
+32-22Lines changed: 32 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,24 +31,26 @@ Spark event log (JSONL)
31
31
32
32
## Key files
33
33
34
-
| File | Purpose |
35
-
|---|---|
36
-
|`sparkparse/models.py`| All Pydantic models. `NodeType` enum (30+ values), `ParsedLog`, `ParsedLogDataFrames`, `NODE_TYPE_DETAIL_MAP` (node type → detail model class) |
37
-
|`sparkparse/parse.py`|`get_parsed_metrics()` is the main entry point. `parse_spark_ui_tree()` converts indented ASCII plans to node graphs. `parse_log()` orchestrates everything. |
38
-
|`sparkparse/clean.py`|`log_to_dag_df()` and `log_to_combined_df()` produce the two output DataFrames. `get_readable_size()` and `get_readable_timing()` are Polars expression helpers. |
|`sparkparse/capture.py`|`SparkparseCapture` context manager/decorator. Stops the active session, restarts it with event logging enabled, then processes logs on `__exit__`. |
|`sparkparse/models.py`| All Pydantic models. `NodeType` enum (30+ values), `ParsedLog`, `ParsedLogDataFrames`, `NODE_TYPE_DETAIL_MAP` (node type → detail model class)|
37
+
|`sparkparse/parse.py`|`get_parsed_metrics()` is the main entry point. `parse_spark_ui_tree()` converts indented ASCII plans to node graphs. `parse_log()` orchestrates everything.|
38
+
|`sparkparse/clean.py`|`log_to_dag_df()` and `log_to_combined_df()` produce the two output DataFrames. `get_readable_size()` and `get_readable_timing()` are Polars expression helpers. |
|`sparkparse/capture.py`|`SparkparseCapture` context manager/decorator. Stops the active session, restarts it with event logging enabled, then processes logs on `__exit__`. |
41
41
42
42
## Data model
43
43
44
44
### `dag` DataFrame columns (per physical plan node per query)
0 commit comments