Skip to content

Commit 1e7df83

Browse files
authored
bump: networkx dep (#64)
* bump: networkx dep * fix: `mypy` * new: `_should_backend_run` overriding https://github.com/networkx/networkx/blob/networkx-3.4.1/networkx/utils/backends.py#L1514-L1535 to support backwards compatibility * Update VERSION * fix: use `from_networkx` if graph does not exist in db * remove demo.py * new: `_should_backend_run`, `_can_backend_run` * fix: lint
1 parent 2406459 commit 1e7df83

File tree

5 files changed

+38
-10
lines changed

5 files changed

+38
-10
lines changed

_nx_arangodb/VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.0
1+
1.1.1

nx_arangodb/classes/dict/adj.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1815,7 +1815,7 @@ def propagate_edge_directed_symmetric(
18151815
set_adj_inner_dict_mirror(src_node_id)
18161816
set_adj_inner_dict_mirror(dst_node_id)
18171817

1818-
edge_attr_or_key_dict = set_edge_func( # type: ignore[operator]
1818+
edge_attr_or_key_dict = set_edge_func(
18191819
src_node_id, dst_node_id, edge_or_edges
18201820
)
18211821

nx_arangodb/convert.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,11 @@ def _to_nxcg_graph(G: Any, as_directed: bool = False) -> nxcg.Graph:
138138
return G
139139

140140
if isinstance(G, nxadb.Graph):
141+
logger.debug("converting nx_arangodb graph to nx_cugraph graph")
142+
141143
if not G.graph_exists_in_db:
142-
m = "nx_arangodb.Graph does not exist in ArangoDB. Cannot pull graph."
143-
raise ValueError(m)
144+
return nxcg.convert.from_networkx(G)
144145

145-
logger.debug("converting nx_arangodb graph to nx_cugraph graph")
146146
return nxadb_to_nxcg(G, as_directed=as_directed)
147147

148148
raise TypeError(f"Expected nx_arangodb.Graph or nxcg.Graph; got {type(G)}")

nx_arangodb/interface.py

+32-4
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,15 @@ def _auto_func(func_name: str, /, *args: Any, **kwargs: Any) -> Any:
6262
"""
6363
dfunc = _registered_algorithms[func_name]
6464

65-
backend_priority = []
65+
backend_priority: list[str] = []
6666
if nxadb.convert.GPU_AVAILABLE and nx.config.backends.arangodb.use_gpu:
6767
backend_priority.append("cugraph")
6868

6969
for backend in backend_priority:
70-
if not dfunc.__wrapped__._should_backend_run(backend, *args, **kwargs):
71-
logger.warning(f"'{func_name}' cannot be run on backend '{backend}'")
70+
if not _should_backend_run(backend, dfunc, *args, **kwargs):
71+
continue
72+
73+
if not _can_backend_run(backend, dfunc, *args, **kwargs):
7274
continue
7375

7476
try:
@@ -80,14 +82,40 @@ def _auto_func(func_name: str, /, *args: Any, **kwargs: Any) -> Any:
8082
)
8183

8284
except NotImplementedError:
83-
logger.warning(f"'{func_name}' not implemented for backend '{backend}'")
85+
logger.debug(f"'{func_name}' not implemented for backend '{backend}'")
8486
pass
8587

8688
default_backend = "networkx"
8789
logger.debug(f"'{func_name}' running on default backend '{default_backend}'")
8890
return _run_with_backend(default_backend, dfunc, args, kwargs)
8991

9092

93+
def _should_backend_run(backend: str, dfunc: Any, *args: Any, **kwargs: Any) -> bool:
94+
"""Wrapper around NetworkX's should_backend_run function, because
95+
the signature is different for NetworkX <=3.3 and 3.4:
96+
97+
- https://github.com/networkx/networkx/blob/networkx-3.3/networkx/utils/backends.py#L821 # noqa: E501
98+
- https://github.com/networkx/networkx/blob/networkx-3.4.1/networkx/utils/backends.py#L1514 # noqa: E501
99+
"""
100+
try:
101+
return bool(dfunc.__wrapped__._should_backend_run(backend, *args, **kwargs))
102+
except TypeError:
103+
return bool(dfunc.__wrapped__._should_backend_run(backend, args, kwargs))
104+
105+
106+
def _can_backend_run(backend: str, dfunc: Any, *args: Any, **kwargs: Any) -> bool:
107+
"""Wrapper around NetworkX's _can_backend_run function, because
108+
the signature is different for NetworkX <=3.3 and 3.4:
109+
110+
- https://github.com/networkx/networkx/blob/networkx-3.3/networkx/utils/backends.py#L810 # noqa: E501
111+
- https://github.com/networkx/networkx/blob/networkx-3.4.1/networkx/utils/backends.py#L1489 # noqa: E501
112+
"""
113+
try:
114+
return bool(dfunc.__wrapped__._can_backend_run(backend, *args, **kwargs))
115+
except TypeError:
116+
return bool(dfunc.__wrapped__._can_backend_run(backend, args, kwargs))
117+
118+
91119
def _run_with_backend(
92120
backend_name: str,
93121
dfunc: NetworkXFunction,

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ classifiers = [
2828
"Topic :: Software Development :: Libraries :: Python Modules",
2929
]
3030
dependencies = [
31-
"networkx>=3.0,<=3.3",
31+
"networkx>=3.0,<=3.4",
3232
"phenolrs~=0.5",
3333
"python-arango~=8.1",
3434
"adbnx-adapter~=5.0.5"

0 commit comments

Comments
 (0)