Skip to content
Snippets Groups Projects
Commit c6ee2734 authored by pohmelie's avatar pohmelie Committed by Paul Sokolovsky
Browse files

py: Add min/max "default" keyword argument

parent 354e688d
No related branches found
No related tags found
No related merge requests found
...@@ -254,6 +254,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin_iter_obj, mp_builtin_iter); ...@@ -254,6 +254,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin_iter_obj, mp_builtin_iter);
STATIC mp_obj_t mp_builtin_min_max(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwargs, mp_uint_t op) { STATIC mp_obj_t mp_builtin_min_max(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwargs, mp_uint_t op) {
mp_map_elem_t *key_elem = mp_map_lookup(kwargs, MP_OBJ_NEW_QSTR(MP_QSTR_key), MP_MAP_LOOKUP); mp_map_elem_t *key_elem = mp_map_lookup(kwargs, MP_OBJ_NEW_QSTR(MP_QSTR_key), MP_MAP_LOOKUP);
mp_map_elem_t *default_elem;
mp_obj_t key_fn = key_elem == NULL ? MP_OBJ_NULL : key_elem->value; mp_obj_t key_fn = key_elem == NULL ? MP_OBJ_NULL : key_elem->value;
if (n_args == 1) { if (n_args == 1) {
// given an iterable // given an iterable
...@@ -269,8 +270,13 @@ STATIC mp_obj_t mp_builtin_min_max(mp_uint_t n_args, const mp_obj_t *args, mp_ma ...@@ -269,8 +270,13 @@ STATIC mp_obj_t mp_builtin_min_max(mp_uint_t n_args, const mp_obj_t *args, mp_ma
} }
} }
if (best_obj == MP_OBJ_NULL) { if (best_obj == MP_OBJ_NULL) {
default_elem = mp_map_lookup(kwargs, MP_OBJ_NEW_QSTR(MP_QSTR_default), MP_MAP_LOOKUP);
if (default_elem != NULL) {
best_obj = default_elem->value;
} else {
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "arg is an empty sequence")); nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "arg is an empty sequence"));
} }
}
return best_obj; return best_obj;
} else { } else {
// given many args // given many args
......
...@@ -235,6 +235,7 @@ Q(map) ...@@ -235,6 +235,7 @@ Q(map)
#if MICROPY_PY_BUILTINS_MIN_MAX #if MICROPY_PY_BUILTINS_MIN_MAX
Q(max) Q(max)
Q(min) Q(min)
Q(default)
#endif #endif
Q(namedtuple) Q(namedtuple)
Q(next) Q(next)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment