Showing 468 changed files with 3,444 additions and 1,355 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ jobs:
- "TG-Watch"
- "adafruit_feather_rp2040"
- "adafruit_itsybitsy_rp2040"
- "adafruit_led_glasses_nrf52840"
- "adafruit_macropad_rp2040"
- "adafruit_neokey_trinkey_m0"
- "adafruit_proxlight_trinkey_m0"
Expand Down Expand Up @@ -289,6 +290,7 @@ jobs:
- "itsybitsy_m0_express"
- "itsybitsy_m4_express"
- "itsybitsy_nrf52840_express"
- "jpconstantineau_encoderpad_rp2040"
- "kicksat-sprite"
- "loc_ber_m4_base_board"
- "makerdiary_m60_keyboard"
Expand Down Expand Up @@ -395,6 +397,7 @@ jobs:
- "uartlogger2"
- "uchip"
- "ugame10"
- "warmbit_bluepixel"
- "winterbloom_big_honking_button"
- "winterbloom_sol"
- "xinabox_cc03"
Expand Down Expand Up @@ -509,6 +512,7 @@ jobs:
- "atmegazero_esp32s2"
- "crumpspace_crumps2"
- "electroniccats_bastwifi"
- "espressif_hmi_devkit_1"
- "espressif_kaluga_1"
- "espressif_kaluga_1.3"
- "espressif_saola_1_wroom"
Expand All @@ -520,6 +524,7 @@ jobs:
- "gravitech_cucumber_r"
- "gravitech_cucumber_rs"
- "lilygo_ttgo_t8_s2_st7789"
- "lolin_s2_mini"
- "microdev_micro_s2"
- "morpheans_morphesp-240"
- "muselab_nanoesp32_s2_wroom"
Expand All @@ -528,6 +533,7 @@ jobs:
- "targett_module_clip_wroom"
- "targett_module_clip_wrover"
- "unexpectedmaker_feathers2"
- "unexpectedmaker_feathers2_neo"
- "unexpectedmaker_feathers2_prerelease"
- "unexpectedmaker_tinys2"

Expand Down
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@
url = https://github.com/adafruit/Adafruit_CircuitPython_RFM69.git
[submodule "ports/esp32s2/esp-idf"]
path = ports/esp32s2/esp-idf
url = https://github.com/adafruit/esp-idf.git
branch = circuitpython-v4.3
url = https://github.com/espressif/esp-idf.git
branch = release/v4.3
[submodule "ports/esp32s2/certificates/nina-fw"]
path = ports/esp32s2/certificates/nina-fw
url = https://github.com/adafruit/nina-fw.git
Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ CircuitPython:
- Supports native USB on most boards and BLE otherwise, allowing file editing without special tools.
- Floats (aka decimals) are enabled for all builds.
- Error messages are translated into 10+ languages.
- Concurrenncy within Python is not well supported. Interrupts and threading are disabled.
- Concurrency within Python is not well supported. Interrupts and threading are disabled.
async/await keywords are available on some boards for cooperative multitasking. Some concurrency
is achieved with native modules for tasks that require it such as audio file playback.

Expand Down
2 changes: 1 addition & 1 deletion docs/redirects.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ shared-bindings/displayio/Group.rst shared-bindings/displayio/#displayio.Group
shared-bindings/displayio/I2CDisplay.rst shared-bindings/displayio/#displayio.I2CDisplay
shared-bindings/displayio/OnDiskBitmap.rst shared-bindings/displayio/#displayio.OnDiskBitmap
shared-bindings/displayio/Palette.rst shared-bindings/displayio/#displayio.Palette
shared-bindings/displayio/ParallelBus.rst shared-bindings/displayio/#displayio.ParallelBus
shared-bindings/paralleldisplay/ParallelBus.rst shared-bindings/paralleldisplay/#paralleldisplay.ParallelBus
shared-bindings/displayio/Shape.rst shared-bindings/displayio/#displayio.Shape
shared-bindings/displayio/TileGrid.rst shared-bindings/displayio/#displayio.TileGrid
shared-bindings/displayio/__init__.rst shared-bindings/displayio/
Expand Down
2 changes: 1 addition & 1 deletion frozen/Adafruit_CircuitPython_NeoPixel
2 changes: 1 addition & 1 deletion frozen/circuitpython-stage
Submodule circuitpython-stage updated 7 files
+1 −0 meowbit/stage.py
+78 −0 meowbit/ugame.py
+7 −7 pewpew_m4/pew.py
+2 −1 pewpew_m4/ugame.py
+43 −23 pybadge/ugame.py
+44 −33 pygamer/ugame.py
+12 −5 stage.py
2 changes: 2 additions & 0 deletions lib/libc/string0.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@
#include <stdint.h>
#include <string.h>

#ifndef likely
#define likely(x) __builtin_expect((x), 1)
#endif

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcast-align"
Expand Down
2 changes: 1 addition & 1 deletion lib/tinyusb
Submodule tinyusb updated 150 files
22 changes: 18 additions & 4 deletions lib/utils/pyexec.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ STATIC int pyexec_raw_repl_process_char(int c) {
}
goto reset;
}
mp_hal_stdout_tx_str("raw REPL; CTRL-B to exit\r\n");
serial_write_compressed(translate("raw REPL; CTRL-B to exit\n"));
goto reset;
} else if (c == CHAR_CTRL_B) {
// change to friendly REPL
Expand Down Expand Up @@ -469,7 +469,7 @@ STATIC int pyexec_friendly_repl_process_char(int c) {
return PYEXEC_FORCED_EXIT;
} else if (ret == CHAR_CTRL_E) {
// paste mode
mp_hal_stdout_tx_str("\r\npaste mode; Ctrl-C to cancel, Ctrl-D to finish\r\n=== ");
serial_write_compressed(translate("\npaste mode; Ctrl-C to cancel, Ctrl-D to finish\n=== "));
vstr_reset(MP_STATE_VM(repl_line));
repl.paste_mode = true;
return 0;
Expand Down Expand Up @@ -545,7 +545,7 @@ int pyexec_raw_repl(void) {
vstr_init(&line, 32);

raw_repl_reset:
mp_hal_stdout_tx_str("raw REPL; CTRL-B to exit\r\n");
serial_write_compressed(translate("raw REPL; CTRL-B to exit\n"));

for (;;) {
vstr_reset(&line);
Expand Down Expand Up @@ -650,7 +650,21 @@ int pyexec_friendly_repl(void) {
}

vstr_reset(&line);
int ret = readline(&line, ">>> ");

nlr_buf_t nlr;
nlr.ret_val = NULL;
int ret = 0;
if (nlr_push(&nlr) == 0) {
ret = readline(&line, ">>> ");
} else {
// Uncaught exception
mp_handle_pending(false); // clear any pending exceptions (and run any callbacks)

// Print exceptions but stay in the REPL. There are very few delayed
// exceptions. The WatchDogTimer can raise one though.
mp_hal_stdout_tx_str("\r\n");
mp_obj_print_exception(&mp_plat_print, MP_OBJ_FROM_PTR(nlr.ret_val));
}
mp_parse_input_kind_t parse_input_kind = MP_PARSE_SINGLE_INPUT;

if (ret == CHAR_CTRL_A) {
Expand Down
33 changes: 29 additions & 4 deletions locale/ID.po
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ msgstr ""
"Harap ajukan masalah dengan konten drive CIRCUITPY Anda di\n"
"https://github.com/adafruit/circuitpython/issues\n"

#: lib/utils/pyexec.c
msgid ""
"\n"
"paste mode; Ctrl-C to cancel, Ctrl-D to finish\n"
"=== "
msgstr ""

#: py/obj.c
msgid " File \"%q\""
msgstr " File \"%q\""
Expand Down Expand Up @@ -103,7 +110,7 @@ msgid "%q indices must be integers, not %s"
msgstr "indeks %q harus bilangan bulat, bukan %s"

#: py/argcheck.c
msgid "%q length must be %q"
msgid "%q length must be %d-%d"
msgstr ""

#: shared-bindings/usb_hid/Device.c
Expand Down Expand Up @@ -196,7 +203,7 @@ msgstr "Objek '%q' tidak mendukung '%q'"
msgid "'%q' object is not an iterator"
msgstr "Objek '%q' bukan merupakan iterator"

#: py/objtype.c py/runtime.c
#: py/objtype.c py/runtime.c shared-module/atexit/__init__.c
msgid "'%q' object is not callable"
msgstr ""

Expand Down Expand Up @@ -1245,7 +1252,7 @@ msgstr "Otentikasi tidak cukup"
msgid "Insufficient encryption"
msgstr "Enkripsi tidak cukup"

#: ports/raspberrypi/audio_dma.c
#: ports/atmel-samd/audio_dma.c ports/raspberrypi/audio_dma.c
msgid "Internal audio buffer too small"
msgstr ""

Expand Down Expand Up @@ -1412,7 +1419,8 @@ msgstr "Pin untuk channel kanan tidak valid"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/nrf/common-hal/busio/I2C.c
#: ports/raspberrypi/common-hal/busio/I2C.c
#: ports/raspberrypi/common-hal/busio/SPI.c
#: ports/raspberrypi/common-hal/busio/UART.c
#: ports/raspberrypi/common-hal/busio/UART.c shared-bindings/busio/SPI.c
#: shared-bindings/busio/UART.c
msgid "Invalid pins"
msgstr "Pin-pin tidak valid"

Expand Down Expand Up @@ -2617,6 +2625,10 @@ msgstr ""
msgid "axis too long"
msgstr ""

#: shared-bindings/bitmaptools/__init__.c
msgid "background value out of range of target"
msgstr ""

#: py/builtinevex.c
msgid "bad compile mode"
msgstr "mode compile buruk"
Expand Down Expand Up @@ -3954,8 +3966,10 @@ msgstr ""
#: ports/esp32s2/boards/adafruit_funhouse/mpconfigboard.h
#: ports/esp32s2/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/esp32s2/boards/artisense_rd00/mpconfigboard.h
#: ports/esp32s2/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
Expand All @@ -3968,9 +3982,12 @@ msgstr ""
#: ports/esp32s2/boards/gravitech_cucumber_r/mpconfigboard.h
#: ports/esp32s2/boards/gravitech_cucumber_rs/mpconfigboard.h
#: ports/esp32s2/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/esp32s2/boards/lolin_s2_mini/mpconfigboard.h
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/morpheans_morphesp-240/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h
#: ports/esp32s2/boards/odt_pixelwing_esp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/targett_module_clip_wroom/mpconfigboard.h
#: ports/esp32s2/boards/targett_module_clip_wrover/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
Expand Down Expand Up @@ -4007,6 +4024,10 @@ msgstr ""
msgid "queue overflow"
msgstr "antrian meluap (overflow)"

#: lib/utils/pyexec.c
msgid "raw REPL; CTRL-B to exit\n"
msgstr ""

#: py/parse.c
msgid "raw f-strings are not implemented"
msgstr ""
Expand Down Expand Up @@ -4410,6 +4431,10 @@ msgstr ""
msgid "value must fit in %d byte(s)"
msgstr ""

#: shared-bindings/bitmaptools/__init__.c
msgid "value out of range of target"
msgstr ""

#: shared-bindings/displayio/Bitmap.c
msgid "value_count must be > 0"
msgstr ""
Expand Down
22 changes: 19 additions & 3 deletions locale/circuitpython.pot
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ msgid ""
"https://github.com/adafruit/circuitpython/issues\n"
msgstr ""

#: lib/utils/pyexec.c
msgid ""
"\n"
"paste mode; Ctrl-C to cancel, Ctrl-D to finish\n"
"=== "
msgstr ""

#: py/obj.c
msgid " File \"%q\""
msgstr ""
Expand Down Expand Up @@ -96,7 +103,7 @@ msgid "%q indices must be integers, not %s"
msgstr ""

#: py/argcheck.c
msgid "%q length must be %q"
msgid "%q length must be %d-%d"
msgstr ""

#: shared-bindings/usb_hid/Device.c
Expand Down Expand Up @@ -1225,7 +1232,7 @@ msgstr ""
msgid "Insufficient encryption"
msgstr ""

#: ports/raspberrypi/audio_dma.c
#: ports/atmel-samd/audio_dma.c ports/raspberrypi/audio_dma.c
msgid "Internal audio buffer too small"
msgstr ""

Expand Down Expand Up @@ -1392,7 +1399,8 @@ msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/nrf/common-hal/busio/I2C.c
#: ports/raspberrypi/common-hal/busio/I2C.c
#: ports/raspberrypi/common-hal/busio/SPI.c
#: ports/raspberrypi/common-hal/busio/UART.c
#: ports/raspberrypi/common-hal/busio/UART.c shared-bindings/busio/SPI.c
#: shared-bindings/busio/UART.c
msgid "Invalid pins"
msgstr ""

Expand Down Expand Up @@ -3915,8 +3923,10 @@ msgstr ""
#: ports/esp32s2/boards/adafruit_funhouse/mpconfigboard.h
#: ports/esp32s2/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/esp32s2/boards/artisense_rd00/mpconfigboard.h
#: ports/esp32s2/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
Expand All @@ -3929,10 +3939,12 @@ msgstr ""
#: ports/esp32s2/boards/gravitech_cucumber_r/mpconfigboard.h
#: ports/esp32s2/boards/gravitech_cucumber_rs/mpconfigboard.h
#: ports/esp32s2/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/esp32s2/boards/lolin_s2_mini/mpconfigboard.h
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/morpheans_morphesp-240/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h
#: ports/esp32s2/boards/odt_pixelwing_esp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/targett_module_clip_wroom/mpconfigboard.h
#: ports/esp32s2/boards/targett_module_clip_wrover/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
Expand Down Expand Up @@ -3969,6 +3981,10 @@ msgstr ""
msgid "queue overflow"
msgstr ""

#: lib/utils/pyexec.c
msgid "raw REPL; CTRL-B to exit\n"
msgstr ""

#: py/parse.c
msgid "raw f-strings are not implemented"
msgstr ""
Expand Down
Loading