@@ -295,3 +295,61 @@ def list_to_string(lst: list):
295
295
str: string
296
296
"""
297
297
return " " .join (str (i ) for i in lst )
298
+
299
+
300
+ def is_invalid_str (to_test_str : str ):
301
+ """Verify whether the to_test_str is valid.
302
+
303
+ Args:
304
+ to_test_str (str): string to be tested.
305
+
306
+ Returns:
307
+ bool: valid or invalid
308
+ """
309
+ return any (char in to_test_str for char in [" " , '"' , "'" , "&" , "|" , ";" , "`" , ">" ])
310
+
311
+
312
+ def is_valid_task (task : dict ) -> bool :
313
+ """Verify whether the task is valid.
314
+
315
+ Args:
316
+ task (dict): task request
317
+
318
+ Returns:
319
+ bool: valid or invalid
320
+ """
321
+ required_fields = ["script_url" , "optimized" , "arguments" , "approach" , "requirements" , "workers" ]
322
+
323
+ for field in required_fields :
324
+ if field not in task :
325
+ return False
326
+
327
+ if not isinstance (task ["script_url" ], str ) or is_invalid_str (task ["script_url" ]):
328
+ return False
329
+
330
+ if (isinstance (task ["optimized" ], str ) and task ["optimized" ] not in ["True" , "False" ]) or (
331
+ not isinstance (task ["optimized" ], str ) and not isinstance (task ["optimized" ], bool )
332
+ ):
333
+ return False
334
+
335
+ if not isinstance (task ["arguments" ], list ):
336
+ return False
337
+ else :
338
+ for argument in task ["arguments" ]:
339
+ if is_invalid_str (argument ):
340
+ return False
341
+
342
+ if not isinstance (task ["approach" ], str ) or task ["approach" ] not in ["static" , "static_ipex" , "dynamic" , "auto" ]:
343
+ return False
344
+
345
+ if not isinstance (task ["requirements" ], list ):
346
+ return False
347
+ else :
348
+ for requirement in task ["requirements" ]:
349
+ if is_invalid_str (requirement ):
350
+ return False
351
+
352
+ if not isinstance (task ["workers" ], int ) or task ["workers" ] < 1 :
353
+ return False
354
+
355
+ return True
0 commit comments