At 0.59.0 (3fb216dd), a graph bound from polars frames cannot run the plugin algorithms:
graphistry.edges(pl.scan_parquet(...), 'src', 'dst').compute_cugraph('pagerank') → TypeError: LazyFrame is not subscriptable (aside from slicing) at graphistry/plugins/cugraph.py:161 (self._edges[list(opts.values())]).
- with an eager
pl.DataFrame → ValueError: ('Unsupported edge data type, expected pd/cudf.DataFrame, got: %s', <class 'polars.dataframe.frame.DataFrame'>).
compute_igraph takes the same path (to_igraph indexes the edge frame). GFQL itself accepts both polars forms (the polars / polars-gpu engines bind and query them), so a user who chose polars for ingestion has to re-bind on pandas/cuDF by hand before PageRank.
Expected: to_cugraph / to_igraph convert through the engine seam (Engine.df_to_engine already knows polars → cuDF via Arrow, polars → pandas), collecting a LazyFrame with the target-aware collect.
Seen while building the pyg-bench GraphFrames streaming ladder (LiveJournal → Friendster), where the graph is bound from pl.scan_parquet; the harness now re-binds an eager cuDF/pandas copy outside the timer as a workaround.
At 0.59.0 (
3fb216dd), a graph bound from polars frames cannot run the plugin algorithms:graphistry.edges(pl.scan_parquet(...), 'src', 'dst').compute_cugraph('pagerank')→TypeError: LazyFrame is not subscriptable (aside from slicing)atgraphistry/plugins/cugraph.py:161(self._edges[list(opts.values())]).pl.DataFrame→ValueError: ('Unsupported edge data type, expected pd/cudf.DataFrame, got: %s', <class 'polars.dataframe.frame.DataFrame'>).compute_igraphtakes the same path (to_igraphindexes the edge frame). GFQL itself accepts both polars forms (thepolars/polars-gpuengines bind and query them), so a user who chose polars for ingestion has to re-bind on pandas/cuDF by hand before PageRank.Expected:
to_cugraph/to_igraphconvert through the engine seam (Engine.df_to_enginealready knows polars → cuDF via Arrow, polars → pandas), collecting a LazyFrame with the target-aware collect.Seen while building the pyg-bench GraphFrames streaming ladder (LiveJournal → Friendster), where the graph is bound from
pl.scan_parquet; the harness now re-binds an eager cuDF/pandas copy outside the timer as a workaround.