@@ -99,9 +99,9 @@ def _import_blocks(block_names, block_args):
9999 :param block_args: A list of block arguments to be passed to block constructor.
100100 :return: A list of initialized objects.
101101 :rtype: list
102-
103102 """
104103 blocks = []
104+ namespace = {} # Create a namespace dictionary to store imported classes
105105
106106 for (block_id , block_name ) in enumerate (block_names ):
107107 # Importing module dynamically.
@@ -115,7 +115,7 @@ def _import_blocks(block_names, block_args):
115115 try :
116116 command = "from " + module + " import " + class_name + " as b" + str (block_id )
117117 logging .debug ("Trying to run command: %s" , command )
118- exec (command ) # pylint: disable=exec-used
118+ exec (command , namespace ) # Pass namespace as globals
119119 except ModuleNotFoundError as err :
120120 package_name = "." .join (module .split ("." )[:- 1 ])
121121 package_blocks = _blocks_in_a_package (package_name )
@@ -130,10 +130,11 @@ def _import_blocks(block_names, block_args):
130130 raise
131131
132132 # Run the imported module.
133- kwargs = block_args [block_id ] # pylint: disable=unused-variable
133+ kwargs = block_args [block_id ]
134+ namespace ['kwargs' ] = kwargs # Add kwargs to the namespace
134135 command = "b%s(**kwargs)" % block_id
135136 logging .debug ("Trying to evaluate this: %s" , command )
136- new_block_instance = eval (command ) # pylint: disable=eval-used
137+ new_block_instance = eval (command , namespace ) # Pass namespace as globals
137138 args = ' ' .join (f"{ k } ={ v } " for k ,v in kwargs .items ())
138139 blocks .append ((block_name , new_block_instance , args ))
139140
0 commit comments