21
21
import inspect
22
22
import os
23
23
from dataclasses import dataclass
24
- from typing import Any , Callable , List , Optional , get_type_hints
24
+ from typing import Any , Callable , List , Optional , Union , get_type_hints
25
25
26
26
from robot .api .deco import keyword # noqa F401
27
27
from robot .errors import DataError
@@ -304,11 +304,11 @@ def __init__(self, argument_specification=None, documentation=None, argument_typ
304
304
305
305
306
306
class PluginParser :
307
- def __init__ (self , base_class : Optional [Any ] = None , python_object : List [ Any ] = [] ):
307
+ def __init__ (self , base_class : Optional [Any ] = None , python_object = None ):
308
308
self ._base_class = base_class
309
- self ._python_object = python_object
309
+ self ._python_object = python_object if python_object else []
310
310
311
- def parse_plugins (self , plugins : str ) -> List :
311
+ def parse_plugins (self , plugins : Union [ str , List [ str ]] ) -> List :
312
312
imported_plugins = []
313
313
importer = Importer ("test library" )
314
314
for parsed_plugin in self ._string_to_modules (plugins ):
@@ -327,11 +327,11 @@ def parse_plugins(self, plugins: str) -> List:
327
327
def get_plugin_keywords (self , plugins : List ):
328
328
return DynamicCore (plugins ).get_keyword_names ()
329
329
330
- def _string_to_modules (self , modules ):
330
+ def _string_to_modules (self , modules : Union [ str , List [ str ]] ):
331
331
parsed_modules : list = []
332
332
if not modules :
333
333
return parsed_modules
334
- for module in modules . split ( "," ):
334
+ for module in self . _modules_splitter ( modules ):
335
335
module = module .strip ()
336
336
module_and_args = module .split (";" )
337
337
module_name = module_and_args .pop (0 )
@@ -346,3 +346,11 @@ def _string_to_modules(self, modules):
346
346
module = Module (module = module_name , args = args , kw_args = kw_args )
347
347
parsed_modules .append (module )
348
348
return parsed_modules
349
+
350
+ def _modules_splitter (self , modules : Union [str , List [str ]]):
351
+ if isinstance (modules , str ):
352
+ for module in modules .split ("," ):
353
+ yield module
354
+ else :
355
+ for module in modules :
356
+ yield module
0 commit comments