From cbc82afbed6f84d4071c04ab92f1fbe487a52dc2 Mon Sep 17 00:00:00 2001 From: Erik Welch Date: Mon, 22 Jul 2024 10:07:54 -0700 Subject: [PATCH] nx-cugraph: fix `from_pandas_edgekey` given edgekey but not edgeattr --- .../nx-cugraph/nx_cugraph/convert_matrix.py | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/python/nx-cugraph/nx_cugraph/convert_matrix.py b/python/nx-cugraph/nx_cugraph/convert_matrix.py index 67f6386987b..10793c64107 100644 --- a/python/nx-cugraph/nx_cugraph/convert_matrix.py +++ b/python/nx-cugraph/nx_cugraph/convert_matrix.py @@ -111,19 +111,28 @@ def from_pandas_edgelist( } kwargs["edge_values"] = edge_values - if graph_class.is_multigraph() and edge_key is not None: - try: - edge_keys = df[edge_key].to_list() - except (KeyError, TypeError) as exc: - raise nx.NetworkXError( - f"Invalid edge_key argument: {edge_key}" - ) from exc - if not graph_class.is_directed(): - # Symmetrize the edges - edge_keys = cp.hstack( - (edge_keys, edge_keys[mask] if mask is not None else edge_keys) - ) - kwargs["edge_keys"] = edge_keys + if ( + graph_class.is_multigraph() + and edge_key is not None + and ( + # In nx <= 3.3, `edge_key` was ignored if `edge_attr` is None + edge_attr is not None + or nx.__version__[:3] > "3.3" + ) + ): + try: + edge_keys = df[edge_key].to_list() + except (KeyError, TypeError) as exc: + raise nx.NetworkXError(f"Invalid edge_key argument: {edge_key}") from exc + if not graph_class.is_directed(): + # Symmetrize the edges; remember, `edge_keys` is a list! + if mask is None: + edge_keys *= 2 + else: + edge_keys += [ + key for keep, key in zip(mask.tolist(), edge_keys) if keep + ] + kwargs["edge_keys"] = edge_keys G = graph_class.from_coo(N, src_indices, dst_indices, **kwargs) if inplace: