@@ -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+
91119def _run_with_backend (
92120 backend_name : str ,
93121 dfunc : NetworkXFunction ,
0 commit comments