| 
					
				 | 
			
			
				@@ -22,7 +22,10 @@ class BaseAppGenerator: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         user_inputs = user_inputs or {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # Filter input variables from form configuration, handle required fields, default values, and option values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         variables = app_config.variables 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        user_inputs = {var.variable: self._validate_input(inputs=user_inputs, var=var) for var in variables} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        user_inputs = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var.variable: self._validate_inputs(value=user_inputs.get(var.variable), variable_entity=var) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for var in variables 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         user_inputs = {k: self._sanitize_value(v) for k, v in user_inputs.items()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # Convert files in inputs to File 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         entity_dictionary = {item.variable: item for item in app_config.variables} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -74,57 +77,66 @@ class BaseAppGenerator: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return user_inputs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def _validate_input(self, *, inputs: Mapping[str, Any], var: "VariableEntity"): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        user_input_value = inputs.get(var.variable) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if not user_input_value: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if var.required: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                raise ValueError(f"{var.variable} is required in input form") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _validate_inputs( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        *, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        variable_entity: "VariableEntity", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        value: Any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if value is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if variable_entity.required: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                raise ValueError(f"{variable_entity.variable} is required in input form") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if var.type in { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if variable_entity.type in { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             VariableEntityType.TEXT_INPUT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             VariableEntityType.SELECT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             VariableEntityType.PARAGRAPH, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } and not isinstance(user_input_value, str): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            raise ValueError(f"(type '{var.type}') {var.variable} in input form must be a string") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } and not isinstance(value, str): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise ValueError( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                f"(type '{variable_entity.type}') {variable_entity.variable} in input form must be a string" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if var.type == VariableEntityType.NUMBER and isinstance(user_input_value, str): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if variable_entity.type == VariableEntityType.NUMBER and isinstance(value, str): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # may raise ValueError if user_input_value is not a valid number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if "." in user_input_value: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return float(user_input_value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if "." in value: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return float(value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return int(user_input_value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return int(value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             except ValueError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                raise ValueError(f"{var.variable} in input form must be a valid number") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                raise ValueError(f"{variable_entity.variable} in input form must be a valid number") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        match var.type: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        match variable_entity.type: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case VariableEntityType.SELECT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if user_input_value not in var.options: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    raise ValueError(f"{var.variable} in input form must be one of the following: {var.options}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if value not in variable_entity.options: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        f"{variable_entity.variable} in input form must be one of the following: " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        f"{variable_entity.options}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case VariableEntityType.TEXT_INPUT | VariableEntityType.PARAGRAPH: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if var.max_length and len(user_input_value) > var.max_length: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    raise ValueError(f"{var.variable} in input form must be less than {var.max_length} characters") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if variable_entity.max_length and len(value) > variable_entity.max_length: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        f"{variable_entity.variable} in input form must be less than {variable_entity.max_length} " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "characters" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case VariableEntityType.FILE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if not isinstance(user_input_value, dict) and not isinstance(user_input_value, File): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    raise ValueError(f"{var.variable} in input form must be a file") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if not isinstance(value, dict) and not isinstance(value, File): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError(f"{variable_entity.variable} in input form must be a file") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case VariableEntityType.FILE_LIST: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # if number of files exceeds the limit, raise ValueError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if not ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    isinstance(user_input_value, list) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    and ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        all(isinstance(item, dict) for item in user_input_value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        or all(isinstance(item, File) for item in user_input_value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    isinstance(value, list) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    and (all(isinstance(item, dict) for item in value) or all(isinstance(item, File) for item in value)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    raise ValueError(f"{var.variable} in input form must be a list of files") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError(f"{variable_entity.variable} in input form must be a list of files") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if var.max_length and len(user_input_value) > var.max_length: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    raise ValueError(f"{var.variable} in input form must be less than {var.max_length} files") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if variable_entity.max_length and len(value) > variable_entity.max_length: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        f"{variable_entity.variable} in input form must be less than {variable_entity.max_length} files" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return user_input_value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def _sanitize_value(self, value: Any) -> Any: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if isinstance(value, str): 
			 |