summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstijn <stijn@ignitron.net>2019-05-20 10:35:31 +0200
committerDamien George <damien.p.george@gmail.com>2019-05-21 14:24:04 +1000
commitfb54736bdb5c01a4051a77c8b048502c6a41e044 (patch)
tree38520561d642d8ffc29d93759a437aa6ba67be3e
parentc769da1aaa28fb0eba9fabfba84c39cbc09e23da (diff)
py/objarray: Add decode method to bytearray.
Reuse the implementation for bytes since it works the same way regardless of the underlying type. This method gets added for CPython compatibility of bytearray, but to keep the code simple and small array.array now also has a working decode method, which is non-standard but doesn't hurt.
-rw-r--r--py/objarray.c3
-rw-r--r--py/objstr.h1
-rw-r--r--tests/basics/bytearray_decode.py6
3 files changed, 10 insertions, 0 deletions
diff --git a/py/objarray.c b/py/objarray.c
index 89d2f2180..4e58d8e5d 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -530,6 +530,9 @@ STATIC mp_int_t array_get_buffer(mp_obj_t o_in, mp_buffer_info_t *bufinfo, mp_ui
STATIC const mp_rom_map_elem_t array_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_append), MP_ROM_PTR(&array_append_obj) },
{ MP_ROM_QSTR(MP_QSTR_extend), MP_ROM_PTR(&array_extend_obj) },
+ #if MICROPY_CPYTHON_COMPAT
+ { MP_ROM_QSTR(MP_QSTR_decode), MP_ROM_PTR(&bytes_decode_obj) },
+ #endif
};
STATIC MP_DEFINE_CONST_DICT(array_locals_dict, array_locals_dict_table);
diff --git a/py/objstr.h b/py/objstr.h
index a10d0df8b..15ed7a225 100644
--- a/py/objstr.h
+++ b/py/objstr.h
@@ -102,5 +102,6 @@ MP_DECLARE_CONST_FUN_OBJ_1(str_isalpha_obj);
MP_DECLARE_CONST_FUN_OBJ_1(str_isdigit_obj);
MP_DECLARE_CONST_FUN_OBJ_1(str_isupper_obj);
MP_DECLARE_CONST_FUN_OBJ_1(str_islower_obj);
+MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(bytes_decode_obj);
#endif // MICROPY_INCLUDED_PY_OBJSTR_H
diff --git a/tests/basics/bytearray_decode.py b/tests/basics/bytearray_decode.py
new file mode 100644
index 000000000..b5e1cb419
--- /dev/null
+++ b/tests/basics/bytearray_decode.py
@@ -0,0 +1,6 @@
+try:
+ print(bytearray(b'').decode())
+ print(bytearray(b'abc').decode())
+except AttributeError:
+ print("SKIP")
+ raise SystemExit