Skip to content

Commit c410489

Browse files
committed
add additional float validators
1 parent 8e3c28e commit c410489

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

py/argcheck.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,21 @@ mp_int_t mp_arg_validate_int_range(mp_int_t i, mp_int_t min, mp_int_t max, qstr
186186
return i;
187187
}
188188

189+
mp_float_t mp_arg_validate_type_float(mp_obj_t obj, qstr arg_name) {
190+
mp_float_t a_float;
191+
if (!mp_obj_get_float_maybe(obj, &a_float)) {
192+
mp_raise_TypeError_varg(translate("%q must be of type %q, not %q"), arg_name, MP_QSTR_float, mp_obj_get_type(obj)->name);
193+
}
194+
return a_float;
195+
}
196+
197+
void mp_arg_validate_obj_float_range(mp_obj_t float_in, mp_int_t min, mp_int_t max, qstr arg_name) {
198+
const mp_float_t f = mp_arg_validate_type_float(float_in, arg_name);
199+
if (f < (mp_float_t)min || f > (mp_float_t)max) {
200+
mp_raise_ValueError_varg(translate("%q must be %d-%d"), arg_name, min, max);
201+
}
202+
}
203+
189204
mp_float_t mp_arg_validate_obj_float_non_negative(mp_obj_t float_in, mp_float_t default_for_null, qstr arg_name) {
190205
const mp_float_t f = (float_in == MP_OBJ_NULL)
191206
? default_for_null

py/runtime.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ mp_int_t mp_arg_validate_int_max(mp_int_t i, mp_int_t j, qstr arg_name);
103103
mp_int_t mp_arg_validate_int_range(mp_int_t i, mp_int_t min, mp_int_t max, qstr arg_name);
104104
#if MICROPY_PY_BUILTINS_FLOAT
105105
mp_float_t mp_arg_validate_obj_float_non_negative(mp_obj_t float_in, mp_float_t default_for_null, qstr arg_name);
106+
void mp_arg_validate_obj_float_range(mp_obj_t float_in, mp_int_t min, mp_int_t max, qstr arg_name);
107+
mp_float_t mp_arg_validate_type_float(mp_obj_t obj, qstr arg_name);
106108
#endif
107109
mp_uint_t mp_arg_validate_length_min(mp_uint_t length, mp_uint_t min, qstr arg_name);
108110
mp_uint_t mp_arg_validate_length_max(mp_uint_t length, mp_uint_t max, qstr arg_name);

0 commit comments

Comments
 (0)