The GitHub Actions job "Benchmarks" on texera.git/main has succeeded. Run started by GitHub user github-merge-queue[bot] (triggered by github-merge-queue[bot]).
Head commit for run: 004a524c27f7b30a2ed02154e203b6b9cda4fe7c / Kary Zheng <[email protected]> feat(visualization): export the hierarchy and graph charts as Python (#8344) ### What changes were proposed in this PR? Seven visualizations implement `StandaloneCodeGenerator`: the ones that draw a structure rather than a coordinate system — tree plot, network graph, sankey, hierarchy chart, icicle chart, dendrogram — and the word cloud. A visualization emits a figure rather than a frame, so it is compared as one: number by number after both paths have drawn, which catches a difference in the data behind the picture without failing over a layout detail that carries no meaning. The word cloud renders an image instead, so it is compared as the HTML that carries it. Network Graph and Word Cloud are verified here rather than withheld. Both had been flagged for drawing a different picture on every run, which stopped being true once their placement was seeded, and lifting those two rows showed three things the reason had been hiding. Network Graph never called `manipulateTable`, the method it already had for dropping the rows that name no edge, so a null reached `add_node`, which refuses one outright. Word Cloud counted its words out of whatever column it was given, and the filter that finds them uses pandas' `.str`, which refuses anything but text, so the operator now states that. And the Tree Plot lays itself out without igraph, which is GPL v2 and Category X under the ASF third-party licence policy. Stating it is not enough on its own. An attribute type rule only warns: the property editor prints the warning and lets the workflow run, so a user still reaches the word cloud with a column of numbers, and `.str` ends the run on a pandas error naming an accessor nobody wrote. Both generators now answer that the way they already answer an empty table and a column holding no words, with the operator's own error page. This changes what the engine does with such a workflow: it used to fail, and now it draws the reason. Both sides ask the same question in the same words, so the two paths still agree on what they produce. ### Any related issues, documentation, discussions? Part of #8325, 13 of 27; that issue lists the set in order. It needs #8327 for the trait, so it does not compile until that lands, and the rows these operators add to the verification runner follow with the harness rather than as whole new files here. Closes #7969, the Tree Plot's Category X dependency. Closes #8416, the task this change is the whole of. ### How was this PR tested? Each operator asserts the block it emits in its own spec. Once the verification lands it is also run through the engine and through its generated script, on every configuration its schema offers, and the two answers compared; this branch is cut from main and does not carry that machinery, so those runs are not on this diff's CI. The word cloud's guard is compared on a table its column knob points at a numeric column, so the two paths are held to the same answer for input the type rule only warned about; that row arrives with the verification harness, like the others. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 5) --------- Co-authored-by: Claude Opus 5 (1M context) <[email protected]> Report URL: https://github.com/apache/texera/actions/runs/36488063082 With regards, GitHub Actions via GitBox
