@@ -77,6 +77,7 @@ def _prepare_user_inputs(
77
77
78
78
def _validate_input (self , * , inputs : Mapping [str , Any ], var : "VariableEntity" ):
79
79
user_input_value = inputs .get (var .variable )
80
+
80
81
if not user_input_value :
81
82
if var .required :
82
83
raise ValueError (f"{ var .variable } is required in input form" )
@@ -89,6 +90,7 @@ def _validate_input(self, *, inputs: Mapping[str, Any], var: "VariableEntity"):
89
90
VariableEntityType .PARAGRAPH ,
90
91
} and not isinstance (user_input_value , str ):
91
92
raise ValueError (f"(type '{ var .type } ') { var .variable } in input form must be a string" )
93
+
92
94
if var .type == VariableEntityType .NUMBER and isinstance (user_input_value , str ):
93
95
# may raise ValueError if user_input_value is not a valid number
94
96
try :
@@ -98,25 +100,30 @@ def _validate_input(self, *, inputs: Mapping[str, Any], var: "VariableEntity"):
98
100
return int (user_input_value )
99
101
except ValueError :
100
102
raise ValueError (f"{ var .variable } in input form must be a valid number" )
101
- if var .type == VariableEntityType .SELECT :
102
- options = var .options
103
- if user_input_value not in options :
104
- raise ValueError (f"{ var .variable } in input form must be one of the following: { options } " )
105
- elif var .type in {VariableEntityType .TEXT_INPUT , VariableEntityType .PARAGRAPH }:
106
- if var .max_length and len (user_input_value ) > var .max_length :
107
- raise ValueError (f"{ var .variable } in input form must be less than { var .max_length } characters" )
108
- elif var .type == VariableEntityType .FILE :
109
- if not isinstance (user_input_value , dict ) and not isinstance (user_input_value , File ):
110
- raise ValueError (f"{ var .variable } in input form must be a file" )
111
- elif var .type == VariableEntityType .FILE_LIST :
112
- if not (
113
- isinstance (user_input_value , list )
114
- and (
115
- all (isinstance (item , dict ) for item in user_input_value )
116
- or all (isinstance (item , File ) for item in user_input_value )
117
- )
118
- ):
119
- raise ValueError (f"{ var .variable } in input form must be a list of files" )
103
+
104
+ match var .type :
105
+ case VariableEntityType .SELECT :
106
+ if user_input_value not in var .options :
107
+ raise ValueError (f"{ var .variable } in input form must be one of the following: { var .options } " )
108
+ case VariableEntityType .TEXT_INPUT | VariableEntityType .PARAGRAPH :
109
+ if var .max_length and len (user_input_value ) > var .max_length :
110
+ raise ValueError (f"{ var .variable } in input form must be less than { var .max_length } characters" )
111
+ case VariableEntityType .FILE :
112
+ if not isinstance (user_input_value , dict ) and not isinstance (user_input_value , File ):
113
+ raise ValueError (f"{ var .variable } in input form must be a file" )
114
+ case VariableEntityType .FILE_LIST :
115
+ # if number of files exceeds the limit, raise ValueError
116
+ if not (
117
+ isinstance (user_input_value , list )
118
+ and (
119
+ all (isinstance (item , dict ) for item in user_input_value )
120
+ or all (isinstance (item , File ) for item in user_input_value )
121
+ )
122
+ ):
123
+ raise ValueError (f"{ var .variable } in input form must be a list of files" )
124
+
125
+ if var .max_length and len (user_input_value ) > var .max_length :
126
+ raise ValueError (f"{ var .variable } in input form must be less than { var .max_length } files" )
120
127
121
128
return user_input_value
122
129
0 commit comments