@@ -62,13 +62,15 @@ def _auto_func(func_name: str, /, *args: Any, **kwargs: Any) -> Any:
62
62
"""
63
63
dfunc = _registered_algorithms [func_name ]
64
64
65
- backend_priority = []
65
+ backend_priority : list [ str ] = []
66
66
if nxadb .convert .GPU_AVAILABLE and nx .config .backends .arangodb .use_gpu :
67
67
backend_priority .append ("cugraph" )
68
68
69
69
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 ):
72
74
continue
73
75
74
76
try :
@@ -80,14 +82,40 @@ def _auto_func(func_name: str, /, *args: Any, **kwargs: Any) -> Any:
80
82
)
81
83
82
84
except NotImplementedError :
83
- logger .warning (f"'{ func_name } ' not implemented for backend '{ backend } '" )
85
+ logger .debug (f"'{ func_name } ' not implemented for backend '{ backend } '" )
84
86
pass
85
87
86
88
default_backend = "networkx"
87
89
logger .debug (f"'{ func_name } ' running on default backend '{ default_backend } '" )
88
90
return _run_with_backend (default_backend , dfunc , args , kwargs )
89
91
90
92
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
+
91
119
def _run_with_backend (
92
120
backend_name : str ,
93
121
dfunc : NetworkXFunction ,
0 commit comments