Repository navigation
Conversation
compute_igraph/layout_igraph and compute_cugraph/layout_cugraph crashed on graphs bound to polars frames (AttributeError on eager, "LazyFrame is not subscriptable" on lazy, "Unsupported edge data type" for cuGraph). GFQL call() already bridged these analytics under Polars; direct method calls bypassed it. - Engine.py: graph_frames_to_engine (shared with the GFQL call executor) and bridge_polars_graph(compute_engine): Polars-bound graphs (eager or lazy) run on pandas or cuDF and return eager Polars frames; explicit engine='pandas'/'cudf' is honored; non-Polars graphs pass through untouched. Identifier dtypes are restored only when the cast is exact. - PlotterBase: igraph methods bridge through pandas, cuGraph methods through cuDF (Arrow). - Tests: decorator contract (engine forms, positional engine, lazy, passthrough, dtype restore and its exactness guard) and plugin parity against pandas-bound results, cuGraph gated on TEST_CUGRAPH. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The new tests need polars, which only test-polars installs, and the igraph parity cases need igraph, which that lane lacked; without it they would skip in every lane. Adding igraph leaves the existing lane results unchanged (same pass/fail sets on dgx with and without igraph). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01DBp5x7mfdDARNTXhRoJATw
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2025. Groundwork for #1966: the same bridge is applied to the layouts in a stacked PR.
Problem
At master
599c405a, freshly reproduced on dgx-spark (polars 1.35.2, igraph 1.0.0, cuDF/cuGraph 26.02):compute_igraph,layout_igraphAttributeError: 'Int64' object has no attribute 'name'LazyFrame is not subscriptable/has no len()compute_cugraph,layout_cugraphValueError: Unsupported edge data typeLazyFrame is not subscriptableGFQL
call()already runs these analytics off-engine under Polars and returns Polars frames, as documented in "Analytics under Polars" in engines.rst. Direct method calls bypassed that bridge.Change
graphistry/Engine.py:graph_frames_to_engine, now shared with the GFQL call executor, andbridge_polars_graph(compute_engine). For a Polars-bound graph, eager or lazy:engineargument,autoorpolars: run on the compute engine and return eager Polars;polars-gpu: run on cuDF and return Polars;pandasorcudf: honored, and that engine's frames are returned.PlotterBase: igraph methods bridge through pandas; cuGraph methods go Polars to cuDF via Arrow.Validation (dgx-spark)
TEST_CUGRAPH=1 --gpus all.test_edges_named,test_minimal_attributed_edges,test_all_calls) are pre-existing in this image.graphistry/tests/computewithout a GPU: identical failure sets on master and branch.Cost (#2032 context, no algorithm change)
compute_igraph('pagerank'), interleaved, medians of 5 runs, 4 CPUs:The bridge adds well under 0.1% of runtime, and the Polars totals fall within the pandas run ranges. As #2032 reports, the solver accounts for only 10 to 19% of the time; join-back and igraph conversion dominate.
Merge note: master requires an approving review, and self-approval is impossible, so landing this as the author needs
gh pr merge --admin, which means no human review.🤖 Generated with Claude Code