@@ -232,3 +232,46 @@ def perform(self, *_):
232
232
233
233
x = pt .TensorType (dtype = "float64" , shape = (1 ,))("x" )
234
234
assert SomeOp ()(x ).type == pt .dvector
235
+
236
+
237
+ @pytest .mark .parametrize ("multi_output" , [True , False ])
238
+ def test_call_name (multi_output ):
239
+ def dummy_variable (name ):
240
+ return Variable (MyType (thingy = None ), None , None , name = name )
241
+
242
+ x = dummy_variable ("x" )
243
+
244
+ class TestCallOp (Op ):
245
+ def __init__ (self , default_output , multi_output ):
246
+ super ().__init__ ()
247
+ self .default_output = default_output
248
+ self .multi_output = multi_output
249
+
250
+ def make_node (self , input ):
251
+ inputs = [input ]
252
+ if self .multi_output :
253
+ outputs = [input .type (), input .type ()]
254
+ else :
255
+ outputs = [input .type ()]
256
+ return Apply (self , inputs , outputs )
257
+
258
+ def perform (self , node , inputs , outputs ):
259
+ raise NotImplementedError ()
260
+
261
+ if multi_output :
262
+ multi_op = TestCallOp (default_output = None , multi_output = multi_output )
263
+ res = multi_op (x , name = "test_name" )
264
+ for i , r in enumerate (res ):
265
+ assert r .name == f"test_name_{ i } "
266
+
267
+ multi_op = TestCallOp (default_output = 1 , multi_output = multi_output )
268
+ result = multi_op (x , name = "test_name" )
269
+ assert result .owner .outputs [0 ].name is None
270
+ assert result .name == "test_name"
271
+ else :
272
+ single_op = TestCallOp (default_output = None , multi_output = multi_output )
273
+ res_single = single_op (x , name = "test_name" )
274
+ assert res_single .name == "test_name"
275
+
276
+ res_nameless = single_op (x )
277
+ assert res_nameless .name is None
0 commit comments