@@ -483,28 +483,30 @@ MP_DEFINE_CONST_FUN_OBJ_1(int_bit_length_obj, int_bit_length);
483483STATIC mp_obj_t int_from_bytes (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
484484 // TODO: Support signed param (assumes signed=False at the moment)
485485
486- enum { ARG_signed };
486+ enum { ARG_bytes , ARG_byteorder , ARG_signed };
487487 static const mp_arg_t allowed_args [] = {
488- { MP_QSTR_signed , MP_ARG_KW_ONLY | MP_ARG_BOOL , {.u_bool = false} },
488+ { MP_QSTR_bytes , MP_ARG_REQUIRED | MP_ARG_OBJ },
489+ { MP_QSTR_byteorder , MP_ARG_REQUIRED | MP_ARG_OBJ },
490+ { MP_QSTR_signed , MP_ARG_KW_ONLY | MP_ARG_BOOL , {.u_bool = false} },
489491 };
490492 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
491- mp_arg_parse_all (n_args - 3 , pos_args + 3 , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
493+ mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
492494
493495 if (args [ARG_signed ].u_bool ) {
494- mp_raise_msg ( & mp_type_NotImplementedError , MP_ERROR_TEXT ("from_bytes() does not implement signed=True" ) );
496+ mp_raise_NotImplementedError_varg ( MP_ERROR_TEXT ("%q=%q" ), MP_QSTR_signed , MP_QSTR_True );
495497 }
496498
497499 // get the buffer info
498500 mp_buffer_info_t bufinfo ;
499- mp_get_buffer_raise (pos_args [ 1 ] , & bufinfo , MP_BUFFER_READ );
501+ mp_get_buffer_raise (args [ ARG_bytes ]. u_obj , & bufinfo , MP_BUFFER_READ );
500502
501503 const byte * buf = (const byte * )bufinfo .buf ;
502504 int delta = 1 ;
503- if (pos_args [ 2 ] == MP_OBJ_NEW_QSTR (MP_QSTR_little )) {
505+ if (args [ ARG_byteorder ]. u_obj == MP_OBJ_NEW_QSTR (MP_QSTR_little )) {
504506 buf += bufinfo .len - 1 ;
505507 delta = -1 ;
506- } else if (pos_args [ 2 ] != MP_OBJ_NEW_QSTR (MP_QSTR_big )) {
507- mp_raise_ValueError ( MP_ERROR_TEXT ( "byteorder must be 'little' or 'big'" ) );
508+ } else if (args [ ARG_byteorder ]. u_obj != MP_OBJ_NEW_QSTR (MP_QSTR_big )) {
509+ mp_arg_error_invalid ( MP_QSTR_byteorder );
508510 }
509511
510512 mp_uint_t value = 0 ;
@@ -513,7 +515,7 @@ STATIC mp_obj_t int_from_bytes(size_t n_args, const mp_obj_t *pos_args, mp_map_t
513515 #if MICROPY_LONGINT_IMPL != MICROPY_LONGINT_IMPL_NONE
514516 if (value > (MP_SMALL_INT_MAX >> 8 )) {
515517 // Result will overflow a small-int so construct a big-int
516- return mp_obj_int_from_bytes_impl (pos_args [ 2 ] != MP_OBJ_NEW_QSTR (MP_QSTR_little ), bufinfo .len , bufinfo .buf );
518+ return mp_obj_int_from_bytes_impl (args [ ARG_byteorder ]. u_obj != MP_OBJ_NEW_QSTR (MP_QSTR_little ), bufinfo .len , bufinfo .buf );
517519 }
518520 #endif
519521 value = (value << 8 ) | * buf ;
0 commit comments