Skip to main content

rp2040py

license pypi version python versions Pre-commit Test MicroPython Releases Test Pi Pico SDK coverage

Raspberry Pi Pico (RP2040) Emulator in Python — started as a port of rp2040js, now grown into its own CLI/SDK toolkit around it (see Differences from upstream rp2040js below). It blinks, runs native code, and even the MicroPython REPL!

See docs/reference/porting-checklist.md for the file-by-file port status against upstream rp2040js.

Table of Contents

Installation

pip install rp2040py

or, with uv:

uv add rp2040py       # into a project
uv tool install rp2040py   # as a standalone CLI tool
uvx rp2040py ...           # run without installing at all

Any of these gives you the rp2040py console script (python -m rp2040py works identically), so the emulator is runnable without a git checkout - see Run the demo project below for the checkout-equivalent commands.

Environments without compiled-extension support (iOS)

rp2040py ships an optional Cython-accelerated backend as a compiled extension (see Performance) alongside a pure-Python fallback with identical behavior - but a handful of environments, fully sandboxed by the OS with no dynamic-library loading at all, can't load compiled .so extensions or import native code dynamically. So far that's confirmed only for iOS app runtimes like Pythonista and PythonIDE - not Android: both Termux and Python 3 IDE (Pydroid 3) load the compiled rp2040py.native extension fine, confirmed by hand (see "Tested" below). A plain pip install rp2040py in one of the affected iOS environments resolves to a platform-specific wheel that simply won't load. Force the pure-Python universal wheel instead:

pip download rp2040py --only-binary=:all: --platform any --abi none
pip install rp2040py-*.whl --upgrade

This is the exact same artifact rp2040py's own release pipeline builds and publishes for every release (RP2040PY_SKIP_NATIVE_BUILD=1, see .github/workflows/publish.yml's build-pure job) - not a degraded or unsupported build, just the emulator without the compiled speedup.

Shell completions

rp2040py install-completion sets up tab completion for every subcommand and flag (--board, --log-level, --littlefs, ...) in Bash or Zsh, via argcomplete:

rp2040py install-completion
# then open a new shell, or:
source ~/.bashrc   # or ~/.zshrc

This appends the shell's register-python-argcomplete hook to ~/.bashrc/~/.zshrc (detected from $SHELL) - a one-time setup step, not something run on every invocation.

To confirm you actually got it:

  • Before installing: the downloaded file's name - a genuine pure-Python wheel is rp2040py-<version>-py3-none-any.whl, with no platform/ABI tag (e.g. no cp310-abi3-manylinux...) anywhere in the filename.
  • At runtime: rp2040py.rp2040.RP2040.__module__ is "rp2040py._rp2040" (pure Python) rather than "rp2040py.native._rp2040" (compiled) - equivalently, watch for the UserWarning ("Native extensions are not available...") rp2040py.native raises on import once the compiled backend isn't present, which is the expected, harmless case here rather than an error.

Tested:

  • iOS
    • Pythonista - full support (no [fs] optional dependency); mpremote itself now confirmed to work over --tcp-port, but running the emulator and mpremote at the same time did not work on-device - the app's sandbox appears to only run one Python process per app instance, with no real subprocess/multi-process support, so there's no way to have rp2040py micropython --tcp-port ... and a separate mpremote invocation running concurrently the way this works on a normal OS. This is a constraint of the app sandbox itself, not something rp2040py/rp2040py mpremote can patch around (unlike the list_ports ImportError below).
    • PythonIDE - full support (no [fs] optional dependency); same mpremote-works-but-not-concurrently-with-the-emulator caveat as Pythonista above.
  • Android
    • Termux - full support, including mpremote via rp2040py mpremote (the real mpremote binary alone still fails - pySerial's list_ports has no Android backend and raises ImportError at import time regardless of which subcommand you run; rp2040py mpremote patches around it - see docs/reference/mpremote.md). The compiled rp2040py.native (Cython) extension loads and runs fine here too - confirmed by hand, no pure-Python fallback needed.
    • Python 3 IDE (Pydroid 3) - full support, including mpremote via rp2040py mpremote over --tcp-port (same caveat and same fix as Termux above) and the compiled rp2040py.native (Cython) extension, both confirmed by hand.

Run the demo project

The commands below assume rp2040py is installed (pip install rp2040py / uv add rp2040py / uv tool install rp2040py, or run ad hoc with uvx rp2040py ...). From a checkout of this repo instead, each maps 1:1 onto uv run python demo/*.py (demo/*.py are thin wrappers around the same src/rp2040py/cli code):

rp2040py subcommand Checkout equivalent
rp2040py run ... uv run python demo/emulator_run.py ...
rp2040py micropython ... uv run python demo/micropython_run.py ...
rp2040py kaluma ... uv run python demo/kaluma_run.py ...
rp2040py bench ... uv run python demo/benchmark.py ...

--board {pico,pico_w} (default pico) is available on all four and picks which board's fixed extras get attached alongside the RP2040 itself - currently just the onboard LED, except for pico_w, which also attaches an emulated CYW43439 WiFi/Bluetooth chip; see WiFi (Pico W / CYW43439) below.

Native code

You'd need to get hello_uart.hex by building it from the pico-examples repo, then copy it to the rp2040py root directory and run:

rp2040py run
# or, without installing:
uvx rp2040py run

You can also specify the path to the image on the command line and/or load a UF2 image:

rp2040py run --image ./my-pico-project.uf2

A GDB server will be available on port 3333, and the data written to UART0 will be printed to the console.

MicroPython code

No manual download needed: just run

rp2040py micropython
# or, without installing:
uvx rp2040py micropython

and enjoy the MicroPython REPL! Quit the REPL with Ctrl+X. The first run fetches the recommended MicroPython build (1.21.0, currently) from micropython.org into ~/.cache/rp2040py and reuses that cached file afterwards (falls back to the current directory if the cache directory isn't writable). 1.21 is recommended: it does far less work before dropping to the REPL prompt than newer releases, so it boots dramatically faster in the emulator (see the benchmark below). Newer releases work too, just slower to reach the REPL - e.g. 1.28.0.

A different version, a local UF2 file, or a CircuitPython version (--circuitpython, see below) can be loaded by supplying the --image option - a known version tag (1.28.0), or a path to a UF2 file already on disk:

[!TIP] Booting real firmware means executing millions of Thumb instructions through a pure-Python interpreter, which is dramatically slower than V8 JIT-compiling the equivalent JS in rp2040js. Measured with demo/benchmark.py booting MicroPython 1.28 + littlefs, then running a typical resident script (while True: print(...); time.sleep(1), same as ci-micropython.yml's fixture) to its first output:

Interpreter Time
CPython 3.10 188.98s
CPython 3.10 + rp2040py.native (Cython, on by default) 25.83s (~7.3x)
CPython 3.14 + PYTHON_JIT=1 113.77s (~1.7x)
PyPy 3.10 8.75s (~22x)

The rp2040py.native figure improved from an earlier 46.65s (~4.1x) after fixing two Cython compilation gotchas in the bus/interpreter hot path (untyped address/value parameters forcing a PyLong box on every memory access, and bare 0x80000000+ hex literals silently compiling as Python-object constants instead of C literals) - see docs/records/0013-cython-core.md for the full writeup, including why PyPy's gap didn't close by the same amount (a real boot spends a large, unchanged share of its time in still-Python peripheral emulation that these fixes don't touch). This row is CPython 3.10 specifically (this project's default target, and below the abi3 floor - see Performance below): CPython 3.11+ actually measures slower in absolute terms (33.90s, ~5.6x) on the same fixed source, purely from the stable-ABI (Py_LIMITED_API) build every 3.11+ wheel uses - see the same record 0013 section for that gap too, found (and initially mismeasured!) while producing these very numbers.

The rp2040py.native row is what most installs actually get with no extra effort - see Performance below. It doesn't help PyPy (compilation is deliberately skipped there - PyPy's own JIT already does better on its own than routing through rp2040py.native's CPython-C-API-based extension would), so for CPU-bound runs PyPy is still the clear winner: uv run --python pypy3.10 --no-dev -- rp2040py micropython ... (or ... -- python demo/micropython_run.py ... from a checkout). See docs/reference/porting-checklist.md for the full breakdown (including a synthetic instructions/sec benchmark) and CI's python_runtime matrix, which tests all three.

This is also why 1.21 is the recommended version: reaching the bare REPL prompt is fast on both 1.21 and 1.28 (well under a second, whether or not a littlefs main.py auto-runs first) - the gap above is specifically about running a script shaped like the one above afterward. On the same machine and CPython 3.10, that same script reaches its first print() in 3.72s (1,418,835 steps) under 1.21 versus 188.98s (64,679,599 steps) under 1.28 - identical instruction counts run-to-run (this is deterministic, not host-speed noise), so the ~45x gap is a real difference in how much work 1.28 does per loop iteration, not an emulator bug: profiling shows the core essentially never reaches WFI/idle during that time, so it's real Thumb instructions being interpreted, not something hanging. 1.28 still boots and mounts a mklittlefs-built littlefs image correctly (that's exactly the version pinned disk_version fixed compatibility for, see below); it's simply much more expensive to actually run typical resident scripts on.

Core-level per-instruction throughput work continues independently of this version gap (most recently: RP2040.write_uint32() was checking a peripheral dict lookup before cheap RAM/flash range comparisons - see docs/reference/porting-checklist.md for the running log). These are general wins, not something that closes the 1.21-vs-1.28 gap itself - that gap is real work MicroPython 1.28's own compiled firmware does per loop iteration, not something this project's emulator code controls.

rp2040py micropython --image 1.28.0
rp2040py micropython --image my_image.uf2

A GDB server on port 3333 can be enabled by specifying the --gdb flag:

rp2040py micropython --gdb

For using the MicroPython demo code in tests, --expect-text can come in handy: it will look for the given text in the serial output and exit with code 0 if found, or 1 if not found. It's repeatable (--expect-text foo --expect-text bar stops once both have appeared, on any line, not necessarily the same one or in that order) and, with --expect-regex, each --expect-text value is matched as a Python re pattern (via re.search) instead of a plain substring. You can find an example in the MicroPython CI test.

For one-shot, non-interactive runs (like micropython's own CLI), pass one of -c <command>, -m <module>, or a script <filename> - mutually exclusive, matching [-c <command> | -m <module> | <filename>]. Instead of dropping into the REPL, rp2040py boots the device, runs it via the raw-REPL protocol, prints its stdout/stderr, and exits with the device's exit status (0 on success, 1 if it raised):

rp2040py micropython -c "print(1 + 1)"
rp2040py micropython -m sys
rp2040py micropython path/to/script.py

mpremote

--tcp-port <port> serves the console over a plain TCP socket instead of this process's own stdio - for tools that expect a serial port but can't open one, notably mpremote in a sandboxed environment with no serial support at all (e.g. Pythonista, see above). No client-side patching needed - mpremote connect socket://host:port just talks directly to rp2040py, via pySerial's own built-in socket:// URL support:

rp2040py micropython --tcp-port 4321
# in another terminal:
mpremote connect socket://127.0.0.1:4321 exec "print(1 + 1)"
mpremote connect socket://127.0.0.1:4321 fs cp your_script.py :main.py

--pty (POSIX only) is the alternative: a real pseudo-terminal instead of a TCP socket, whose slave side (e.g. /dev/pts/3) is a genuine POSIX serial device path - everything --tcp-port supports also works here, plus mpremote's own bare interactive REPL, which does not work over --tcp-port's socket:// transport through the real mpremote binary (see below) - though rp2040py mpremote (a thin proxy subcommand, same arguments as mpremote itself) patches around that specific crash, so rp2040py mpremote connect socket://host:port repl works too, no --pty needed.

See docs/reference/mpremote.md for the full picture: connection details for both flags, the rp2040py mpremote proxy and the upstream bug it patches around (micropython#18660), how to quit the emulator when mpremote owns the console, and an explicit list of which mpremote commands are verified working against each transport (exec, fs, mount, run, reset/bootloader, the interactive repl over --pty or rp2040py mpremote, ...) versus the remaining documented limitations (the real mpremote binary's own bare interactive REPL over --tcp-port, --pty on Windows, and df on MicroPython ≤1.21).

Filesystem support

With MicroPython, you can use the filesystem on the Pico. This becomes useful as more than one script file is used in your code. Build a LittleFS formatted filesystem image (see mklittlefs below) and pass it with --littlefs path/to/littlefs.img, and your main.py will be automatically started from there (it's silently skipped, not an error, if the file doesn't exist - but it's never loaded unless --littlefs is given explicitly, even if a littlefs.img happens to sit in the current directory).

The mklittlefs subcommand builds such an image (requires the optional fs extra: pip install rp2040py[fs] / uv sync --extra fs). Every file keeps its own basename; pass --main to mark one of them as main.py (auto-run on boot) - omit it entirely for a filesystem with no auto-run script, e.g. modules staged for a raw-REPL-driven test, or omit files entirely for an empty formatted image. Always builds fresh - pass -f/--force to overwrite an existing --output (there's no "add these files to the existing image" mode; rebuild from the full file list):

rp2040py mklittlefs -o littlefs.img your_main.py your.py files.py here.py --main your_main.py
rp2040py mklittlefs -o littlefs.img --force your_main.py --main your_main.py  # to overwrite it later

--disk-version {2.0,2.1} selects the littlefs on-disk format (defaults to 2.0): MicroPython <=1.21's bundled littlefs can only mount 2.0, while 1.28's reads both - see docs/records/0003-littlefs-image-format.md for why.

--target {micropython,circuitpython,kaluma} presets --block-size/--block-count to a known firmware's own filesystem layout instead of spelling them out by hand (mutually exclusive with passing them explicitly) - see the Kaluma section below for why its layout differs from MicroPython/CircuitPython's.

The filesystem is writeable - MicroPython's os/rp2.Flash calls go through a real JEDEC SPI-NOR flash command emulation in the SSI peripheral (RPSSI), the same peripheral real hardware uses to erase/program flash.

--dump-fs <path> dumps the device's filesystem flash region back out to a local file when the micropython/kaluma subcommand exits (Ctrl+X, --expect-text, or the end of a -c/-m/script run) - the same layout --littlefs path/to/littlefs.img reads back in, so a dump can be fed straight back with --littlefs/--dump-fs pointing at the same path for persistence across runs:

rp2040py micropython --littlefs littlefs.img --dump-fs littlefs.img -c "open('log.txt', 'a').write('run\n')"

[!TIP] This makes --dump-fs a littlefs-python-free alternative to mklittlefs: instead of building the image on the host with littlefs-python, boot the real emulated MicroPython firmware against blank flash, write files to it the normal way (open(path, "wb").write(data), exactly as code running on a real Pico would), and dump the resulting filesystem - built by MicroPython's own bundled littlefs, not a separately-installed library. demo/mklittlefs_dump.py generates such a script from a list of local files (mirroring mklittlefs's own --main semantics) for use as the positional <filename> argument:

python demo/mklittlefs_dump.py your_main.py your.py files.py here.py --main your_main.py \
    --output flash_script.py
rp2040py micropython --dump-fs littlefs.img flash_script.py

Useful when the fs extra isn't installed, or to build against exactly the same littlefs version/behavior a given firmware boots with instead of whatever littlefs-python happens to bundle.

WiFi (Pico W / CYW43439)

--board pico_w (default: pico) attaches an emulated CYW43439 - the WiFi/Bluetooth chip on a real Pico W - over the same gSPI bus real firmware drives it through:

rp2040py micropython --board pico_w

network.WLAN works against it: nic.active(True), nic.scan(), and nic.connect(ssid, key) all complete, answered by a fixed fake "RP2040PY-GUEST" access point built into the emulation rather than anything real - there's no bridge to an actual network yet. Live-boot verified against real, unmodified MicroPython firmware on both 1.23.0 and 1.28.0:

import network

nic = network.WLAN(network.WLAN.IF_STA)
nic.active(True)
print(nic.scan())
print(nic.connect("RP2040PY-GUEST", "key"))

See docs/records/0027-cyw43-wifi.md for the full picture, including exactly what's emulated at the gSPI/SDPCM protocol level and what's left (a real network bridge, network.WLAN.IF_AP).

CircuitPython code

To run the CircuitPython demo, follow the directions above for MicroPython but add --circuitpython:

rp2040py micropython --circuitpython

and start the CircuitPython REPL! As with MicroPython, the firmware (8.0.2 by default) is downloaded automatically on first use; a different version or a local file can be given via --image (e.g. --image 10.2.1 or a path to an already-downloaded UF2). The rest of the experience is the same as the MicroPython demo (Ctrl+X to exit, the --gdb option, etc).

Filesystem support

For CircuitPython, you can create a FAT12 filesystem in Linux using the truncate and mkfs.vfat utilities:

truncate fat12.img -s 1M  # make the image file
mkfs.vfat -F12 -S512 fat12.img  # create the FAT12 filesystem

You can then mount the filesystem image and add files to it:

mkdir fat12  # create the mounting folder if needed
sudo mount -o loop fat12.img fat12/  # mount the filesystem to the folder
sudo cp code.py fat12/  # copy code.py to the filesystem
sudo umount fat12/  # unmount the filesystem

Then pass it explicitly with --fat12 (no default - fat12.img sitting in the current directory is never picked up implicitly):

rp2040py micropython --circuitpython --fat12 fat12.img

CircuitPython doesn't typically write to its own filesystem at runtime the way MicroPython's os/rp2.Flash does, so this hasn't been separately exercised - but the underlying flash-write path (see the MicroPython filesystem support section) is the same SSI peripheral either way.

Kaluma (other USB-CDC firmware, not MicroPython/CircuitPython)

rp2040py's USB/CDC emulation isn't MicroPython-specific - any firmware presenting a CDC-ACM serial console works the same way underneath. The kaluma subcommand runs Kaluma (a JavaScript runtime for RP2040), verified against 1.2.1 - it boots, USB enumerates, and evaluates real JS at its REPL prompt (e.g. sending 1+1 gets back 2):

rp2040py kaluma
# or, without installing:
uvx rp2040py kaluma
rp2040py kaluma --image 1.2.1
rp2040py kaluma --image my_kaluma_image.uf2

As with micropython, missing firmware is downloaded automatically (1.2.1 by default - the newest release still shipping a plain, non--w, RP2040 pico build; 1.3.0+ only ships pico2/pico2-w). Ctrl+X to exit, same as the MicroPython demo. Unlike micropython, kaluma is interactive-only - Kaluma has no raw-REPL-equivalent protocol, so there's no -c/-m/<filename>.

An optional <script.js> positional stages a local file into Kaluma's "user program" flash region before boot - the same one kaluma flash <file> writes to on real hardware, which Kaluma auto-executes on every boot:

rp2040py kaluma your_script.js

Give it a few real seconds after connecting before expecting output - like MicroPython, booting real firmware through an interpreted emulator takes actual wall-clock time (JerryScript engine init, then running your script), not something --expect-text needs to work around, just something to expect if driving this non-interactively.

Separately, Kaluma has its own pluggable littlefs-backed filesystem (see its docs), mounted from a 512K region of flash with 4096-byte blocks - a different flash region than the user-program one above, with no auto-run semantics of its own (plain storage, accessible from JS via require('fs')). Build a compatible image with mklittlefs and pass it via --littlefs explicitly (no default - unlike MicroPython's --littlefs, it's never picked up implicitly, even from a kaluma_littlefs.img sitting in the current directory):

rp2040py mklittlefs -o kaluma_littlefs.img --target kaluma your_script.js
rp2040py kaluma --littlefs kaluma_littlefs.img

--target {micropython,circuitpython,kaluma} presets --block-size/--block-count for a known firmware's filesystem layout (mutually exclusive with passing them explicitly) - omit both for MicroPython's own defaults.

--dump-fs <path> works here too, dumping the same littlefs-formatted region back out on exit - but unlike micropython, kaluma has no non-interactive exec mode to script filesystem writes through (no -c/<filename> raw-REPL equivalent, see above), so the mklittlefs-without- littlefs-python trick above doesn't apply the same way; use it interactively via require('fs') at the REPL instead, or stick with mklittlefs.

--tcp-port <port>/--pty also work here, same as micropython - see mpremote above (that section is mpremote-specific, but the underlying mechanism, a plain socket/pty serving the console instead of this process's own stdio, is not).

[!NOTE] Without a valid --littlefs image, board.js's unconditional mount-at-startup logs Bad block at 0x0/Superblock 0x0 has become unwritable/Error: No space left on device against the unformatted flash region - purely cosmetic, Kaluma catches and prints the error without aborting, so boot and <script.js> auto-run both continue normally past it. This used to reproduce even against a validly-built mklittlefs image, not just blank flash - no longer reproduced after the SSI flash-read/write fixes in docs/records/0008-ssi-flash-write.md (a real --target kaluma image now mounts and reads/writes cleanly, verified via tests/kaluma/index-flash-rw.js), though that wasn't a deliberate target of those fixes and hasn't been separately root-caused - flag it if it resurfaces.

Kaluma prints its "Welcome to Kaluma" banner exactly once, right at boot - but that's before the emulated USB-CDC connection to the host is actually up, so (same as real hardware racing a host terminal that isn't already attached - Kaluma's own docs: "if you cannot see the prompt, press Enter several times") those bytes are typically gone by the time anything's listening. kaluma doesn't send anything to work around this - type .hi yourself at the prompt to reprint the same banner on demand if you need to see it; if you're scripting against a device's output instead of typing at it interactively, stage a <script.js> and match against its output, which isn't racy (see the Kaluma CI test, which does exactly that).

Bootrom revisions

run, micropython, kaluma, and bench all boot a fixed bootrom (B1, bundled - no download needed) by default. --bootrom picks a different one: a b0/b1/b2 version tag (downloaded automatically from Raspberry Pi's pico-bootrom-rp2040 releases and cached locally, same as --image), or a local .elf/.bin path:

rp2040py micropython --bootrom b2
rp2040py micropython --bootrom path/to/custom.elf

Raspberry Pi only publishes .elf for each revision - pyelftools (a normal dependency, not an extra: it's a pure-Python wheel with no platform-specific build to justify gating it) parses out the ROM image on the fly, no separate conversion step needed. A local .bin (e.g. produced with objcopy -O binary) is loaded directly with no parsing at all.

Library API

Everything above is the CLI, but the emulator is also usable programmatically - e.g. to run code against a device and check its output the way Thonny does over a real serial port, from a test suite or another tool. rp2040py.device.MicroPythonDevice boots a UF2 image (optionally for a specific board, e.g. board="pico_w") and lets you run code on it via the same raw-REPL protocol mpremote run/tools/pyboard.py use, interrupting anything already running on the device first (e.g. an auto-run main.py from a littlefs image).

[!NOTE] Async-native only, no blocking API. MicroPythonDevice/KalumaDevice/BaseDevice boot and run as coroutines on an asyncio event loop (the same "engine room" the CLI itself runs on) - there is no blocking start()/exec()/exec_file() and no synchronous with device: form. Calling a blocking wrapper's Future.result() from the same loop it would need to run on deadlocks (the loop can't process the coroutine that resolves the Future while its own thread is stuck waiting on it), so this project stopped offering one rather than ship that footgun - wrap a call in asyncio.run(...) yourself if you want blocking behavior from a plain script.

asyncio, via astart()/aexec()/aexec_file(), entered as an async with context manager:

import asyncio
from rp2040py.device import MicroPythonDevice


async def main():
    async with MicroPythonDevice("RPI_PICO-20231005-v1.21.0.uf2") as device:
        stdout, stderr = await device.aexec("print(1 + 1)")
        assert stdout == b"2\r\n"

        stdout, stderr = await device.aexec_file("my_script.py")


asyncio.run(main())

Callback style, via exec_async()'s concurrent.futures.Future - no separate API needed, Future.add_done_callback() does this out of the box. Requires the device already started (astart()/start_async() first, or already inside async with):

def on_done(future):
    stdout, stderr = future.result()
    print(stdout.decode())


device.exec_async("print(1 + 1)").add_done_callback(on_done)

Both share one asyncio.Lock per device: since the device only has a single REPL channel and can't run two exec()s at once, calling exec_async()/aexec() again before a previous call finishes doesn't raise, it just queues behind it and runs once its turn comes. This is exactly what powers the CLI's own micropython -c/-m/<filename> batch mode - it's a caller of this same API, not a separate implementation. start_async()/astart()/stop() are available directly if you want more control over the lifecycle than the context manager gives you - stop() itself stays a plain synchronous call.

Performance

The interpreter core (CortexM0Core) and the memory bus's hot read/write paths are also available as a compiled Cython extension (rp2040py.native), giving roughly 7x the instruction throughput of the pure-Python implementation on both a synthetic benchmark and a real MicroPython boot (see docs/records/0013-cython-core.md for the full measured breakdown).

This is on by default and needs nothing from you: pip install rp2040py builds it automatically when a C compiler is available (prebuilt wheels are published for common platforms, so most installs don't even need one) and falls back to the identical pure-Python implementation otherwise

  • correctness is the same either way, just the speed differs. A couple of environment variables exist for cases where you want to control this explicitly:

  • RP2040PY_SKIP_CYTHON=1 - force the pure-Python implementation at runtime, even if the compiled extension is installed (e.g. to rule out a native-specific issue).

  • RP2040PY_SKIP_NATIVE_BUILD=1 - skip compiling the extension at build time, for a deliberately pure-Python install/wheel.

Differences from upstream rp2040js

rp2040py started as a straight port of rp2040js - the core CPU/peripheral emulation still tracks it closely, and docs/reference/porting-checklist.md keeps a file-by-file checklist of that. But it's grown well past a 1:1 translation into its own toolkit with no rp2040js equivalent, built around actually running real firmware from a shell rather than embedding the emulator as a library (rp2040js's own primary use case, e.g. inside Wokwi):

  • A real packaged CLI - rp2040py/python -m rp2040py, installable via pip/uv, not just a checkout-only demo/*.ts script. Firmware (MicroPython/CircuitPython/Kaluma) is auto-downloaded and cached by version tag instead of needing to be fetched and placed by hand.
  • A real, writeable filesystem: RPSSI (the SSI peripheral MicroPython/CircuitPython's os/rp2.Flash calls go through to erase/program flash) implements the actual JEDEC SPI-NOR command set (WREN/WRDI, status/JEDEC-ID reads, page program, sector/block erase) - the same commands real flash hardware understands - not just a register stub. rp2040js has the same gap MicroPython/CircuitPython on rp2040py used to have (see docs/records/0008-ssi-flash-write.md's "SSI flash-write support"): on-device open(path, "w")/os.remove()/... genuinely persist to the emulated flash now, instead of raising/no-opping against an unimplemented peripheral.
  • A filesystem toolkit: mklittlefs builds a littlefs image on the host (needs littlefs-python, the optional fs extra); --dump-fs builds one without that dependency instead, by writing files to a booted device's real filesystem the normal way and reading the resulting flash region back out - see mpremote and Filesystem support above.
  • A programmatic device API (rp2040py.device.MicroPythonDevice/KalumaDevice) for driving a booted device from another Python program over the raw-REPL protocol (device.exec("print(1+1)")) - the same API micropython -c/-m/<filename> and --tcp-port themselves are built on, not a separate implementation. --tcp-port/--pty in particular let any serial-oriented external tool - mpremote chief among them, including its own bare interactive REPL via rp2040py mpremote (see mpremote) - drive the emulator over a real socket or pty, something rp2040js has no analogue for at all (no pty/socket-backed USB-CDC passthrough anywhere in its source, only stdio-driven demo scripts).
  • Broader firmware coverage: MicroPython, CircuitPython, and Kaluma (a second, independent USB-CDC-console JS runtime for RP2040 - unrelated to rp2040js despite both being JS) all boot and run against this emulator; a built-in GDB server (--gdb) works against any of them.
  • machine.reset()/machine.bootloader() actually reset the device: rp2040js's own RPWatchdog.onWatchdogTrigger (src/peripherals/watchdog.ts) defaults to logging "Watchdog triggered, but no reset handler provided" and does nothing else - the emulated CPU spins forever waiting for a reset that never happens. rp2040py's RPWatchdog.on_watchdog_trigger performs a real in-place reset (CPU core, PWM/DMA/USB-CDC peripheral state) and jumps back to flash's entry point, preserving flash/filesystem content and every externally-referenced peripheral object's identity - mpremote reset/mpremote bootloader (the latter performs the same reset rather than entering actual BOOTSEL mode, which isn't implemented) both return promptly instead of hanging.
  • Configurable bootrom revision (--bootrom b0/b1/b2, or a local .elf/.bin) - see Bootrom revisions below - auto-downloaded and cached the same way firmware images are. rp2040js ships exactly one hardcoded bootrom build (demo/bootrom.ts, revision B1), with no way to select a different revision at all.
  • An optional native-compiled backend (rp2040py.native, Cython) for when pure-Python instruction dispatch is the bottleneck - see Performance above - alongside a pure-Python universal wheel for environments that can't load compiled extensions at all (e.g. Pythonista).
  • Pico W / CYW43439 WiFi emulation (--board pico_w) - real network.WLAN calls (active()/scan()/connect()) against a real, unmodified MicroPython firmware's CYW43439 driver are answered at the actual gSPI/SDPCM protocol level, not stubbed out - something rp2040js has no equivalent of at all (no --board concept, no WiFi chip emulation). See WiFi (Pico W / CYW43439) above.

See docs/reference/porting-checklist.md#known-differences-from-rp2040js for the exhaustive, file-level breakdown (including behavioral divergences found while porting, not just added features).

Used by

  • ballistics-lab/micropython-bclibc — tests its RP2040 usermod/natmod builds in CI by actually booting real firmware through this emulator (o-murphy/rp2040py/.github/actions/setup-rp2040py), not just compiling it.

Learn more

License

Released under the MIT license. Copyright (c) 2021, Uri Shaked. Copyright (c) 2026, Dmytro Yaroshenko.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rp2040py-0.2.0.tar.gz (738.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rp2040py-0.2.0-py3-none-any.whl (288.9 kB view details)

Uploaded Python 3

rp2040py-0.2.0-cp314-cp314t-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.14tWindows ARM64

rp2040py-0.2.0-cp314-cp314t-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.14tWindows x86-64

rp2040py-0.2.0-cp314-cp314t-win32.whl (1.6 MB view details)

Uploaded CPython 3.14tWindows x86

rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_i686.whl (1.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl (1.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

rp2040py-0.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

rp2040py-0.2.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (1.7 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

rp2040py-0.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

rp2040py-0.2.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

rp2040py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

rp2040py-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

rp2040py-0.2.0-cp314-cp314t-macosx_10_15_universal2.whl (2.3 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ universal2 (ARM64, x86-64)

rp2040py-0.2.0-cp314-cp314-android_24_x86_64.whl (1.7 MB view details)

Uploaded Android API level 24+ x86-64CPython 3.14

rp2040py-0.2.0-cp314-cp314-android_24_arm64_v8a.whl (1.7 MB view details)

Uploaded Android API level 24+ ARM64 v8aCPython 3.14

rp2040py-0.2.0-cp313-cp313-android_24_x86_64.whl (1.7 MB view details)

Uploaded Android API level 24+ x86-64CPython 3.13

rp2040py-0.2.0-cp313-cp313-android_24_arm64_v8a.whl (1.7 MB view details)

Uploaded Android API level 24+ ARM64 v8aCPython 3.13

rp2040py-0.2.0-cp311-abi3-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11+Windows ARM64

rp2040py-0.2.0-cp311-abi3-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.11+Windows x86-64

rp2040py-0.2.0-cp311-abi3-win32.whl (1.6 MB view details)

Uploaded CPython 3.11+Windows x86

rp2040py-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

rp2040py-0.2.0-cp311-abi3-musllinux_1_2_i686.whl (1.8 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ i686

rp2040py-0.2.0-cp311-abi3-musllinux_1_2_armv7l.whl (1.7 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARMv7l

rp2040py-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

rp2040py-0.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

rp2040py-0.2.0-cp311-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (1.7 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

rp2040py-0.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

rp2040py-0.2.0-cp311-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.8 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

rp2040py-0.2.0-cp311-abi3-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

rp2040py-0.2.0-cp311-abi3-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11+macOS 10.9+ x86-64

rp2040py-0.2.0-cp311-abi3-macosx_10_9_universal2.whl (2.1 MB view details)

Uploaded CPython 3.11+macOS 10.9+ universal2 (ARM64, x86-64)

rp2040py-0.2.0-cp310-cp310-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.10Windows ARM64

rp2040py-0.2.0-cp310-cp310-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.10Windows x86-64

rp2040py-0.2.0-cp310-cp310-win32.whl (1.6 MB view details)

Uploaded CPython 3.10Windows x86

rp2040py-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

rp2040py-0.2.0-cp310-cp310-musllinux_1_2_i686.whl (1.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

rp2040py-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl (1.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

rp2040py-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

rp2040py-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

rp2040py-0.2.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (1.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

rp2040py-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

rp2040py-0.2.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

rp2040py-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rp2040py-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

rp2040py-0.2.0-cp310-cp310-macosx_10_9_universal2.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file rp2040py-0.2.0.tar.gz.

File metadata

  • Download URL: rp2040py-0.2.0.tar.gz
  • Upload date:
  • Size: 738.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0.tar.gz
Algorithm Hash digest
SHA256 95465a733a0c93ddb798c0dfec0d98178165542ba43166113a1bef53fe6f1a4d
MD5 a583d0d1e606449bf77cb0e12aed0ab6
BLAKE2b-256 a77d7cdc8f5de568f70911ba6c1aeb0335917049bfb843c3dc21d8b732a65906

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0.tar.gz:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: rp2040py-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 288.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dbc9dccf9980ee0986291378703f75e6d3a127c7b31155546acb62a36e357159
MD5 ef84edff4a2042adb68dd10c62637727
BLAKE2b-256 ee97f4950137b8f001a27d9f7253fd18bedd8c76811a4cbe2353840c40e767a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-py3-none-any.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 73a2ebed39e979f35c5a272e304ccfc36630a029d52885f03a7833493a8faaca
MD5 18aaabd5f876b503f448ec3c4717bead
BLAKE2b-256 5b5b0033ea17af8f605678fbc4ac92fb23d1a66e7b496a4bb91bcbc24f6e1de6

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-win_arm64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 02f5a2263baca804e9e1fecdff7a1a2c2c6011bc9cb10f2e42ee77d79a8e24b1
MD5 d635e5726216f6f16ef432b0c0f6d5e1
BLAKE2b-256 629ad6b7c653db9b821832517225f558d430c7ae92e62b277a04df5d8844c32e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-win_amd64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-win32.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 93fb5225349132f6277ee8fbee0b90c10e8342ec5ce531c3d4d3995c793c6471
MD5 5e039210be18d478a237a0a6e505c913
BLAKE2b-256 7eadfe6803352d9d8ddd94e5b89cc920ba13018cc8010696f43a2cfae434d5d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-win32.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6cf27203ab14a35d43193b37f0a56f3ac6df3b920ca8cace32501284cd12159c
MD5 893aaef15d115eae9173bf2a6761e0bd
BLAKE2b-256 5905f2550c51965eab30d18531efccff791593a8d689c3db00edb2784f95164d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a943526ff0ea62c155e9db5f6260688a18a71fb5102d31e4588979c52506ab55
MD5 9f400b8a00fae239a464f2bbaa4ed13c
BLAKE2b-256 833564c442b2f667235817dc9f3636c9fe548357bc4cc787b50d81d0ccc2c20f

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_i686.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a19f0569a047b6b7a0edad41fffa33e5a1f06ec21aeb138ebb30558b8b4f0c97
MD5 4612f5208d7f0f52b89942570b519833
BLAKE2b-256 8bf37d0fed0923c99d1ac59972be7adc2e910872c6d50ec1f2abd8c56bb7d1b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bd27fa1458968e7e33acb51cd88d9638f50f62e9c315e7fe838eb555c9fbd815
MD5 e5aab840f4775253c4a2ac41e6654b99
BLAKE2b-256 94f055a6e5691568c7672252e3058afe7a698db15dd32995408572b8b71e1981

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a30b346e265a7b2fffc613a3c23ace5a557c7d3661e6e1d4906a2f76e463ef89
MD5 51f1ddde6c3d8f87399a3289eda461c6
BLAKE2b-256 a6aa1ad2c9aa1479b5003510be6ae89a0560e458da78ec02ab4d55a16b698a00

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 bdb15bd00086bbdd4875bb7d147345e682078590211952f1ec14dbc7fbac1694
MD5 8d8a95bb8c562aac56ac6805680687ba
BLAKE2b-256 851483d2977ad4cad95ace992cc139cc124c9024edf6e4df573a9b22133e0efd

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d862f6b79ed78eae8a4c27f98b7d0832d8d50df636e18ba4867a4669938cb3b
MD5 70de81af5d333a277e9267bcb49da32d
BLAKE2b-256 19dd42dcbf57b32ba588df8cbe8a0b8276fcc6621933db285b8fafe6f6e47ac6

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 497061012cf3ade07a65a9a7cdf7503ab4ca1153a32686d0236f37d20bb16ee0
MD5 86e07f3ec2c0ccf949786e85c8e83161
BLAKE2b-256 41f6f5950927e48ac9e70b48ee5d797d71de9ccd53c5aabb4bad5abdfa806d29

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5f2f31dce9ba070637fa83c77a35a8f5138149be97af0bc2ffad5bc57a2dfe1
MD5 bb06f463e455a5188f7178b4ce77c82f
BLAKE2b-256 07eef790bdebaf6ba4c72883d8e19d74eeab8b56cb304e3f141634d83664c8ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bc8d0f80e2cffab6fe4ee57ce1fe149be77fac455c433f1314a82dfb694e1e84
MD5 17252423b6b7a97b42651f0a93eaadf0
BLAKE2b-256 4ac1b9dad9a4a5db06c6e0b543a3760534fed96c7854b30b25df29b3ee027e74

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314t-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 4fc39ed0cde6ee176ce7da86551044c4b4e6db46d9f0d5f3b51df74b783978dd
MD5 c17c1b382c17305fef71e5f540772f6c
BLAKE2b-256 e89daeee60e829facc0633c9e0ba49fd441c88bde8cbacc8b5104e97600c8ee4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314t-macosx_10_15_universal2.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314-android_24_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314-android_24_x86_64.whl
Algorithm Hash digest
SHA256 9a69f5a156467aa8aaecb496d174052a298d91140f7fb8e14c4a5490c3148280
MD5 ea4c687511f3f75e078d76a014cedd11
BLAKE2b-256 66097490f830dd69a60fd31934ce3db61b6197f09a07f4cc55bd5383fc660c58

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314-android_24_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp314-cp314-android_24_arm64_v8a.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp314-cp314-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 55f9304945fa3035db427bf771bc0b2ed3d4cf324759702e6c7a609ee4c7c505
MD5 ef0bee6415eb68a0390d0f4373110cd6
BLAKE2b-256 dad30d63566633de8616ec18bb6a9151ea5a548b65bebb0e0b511390d24c0e53

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp314-cp314-android_24_arm64_v8a.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp313-cp313-android_24_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp313-cp313-android_24_x86_64.whl
Algorithm Hash digest
SHA256 4e201a43b73f6d9b98fdd35f7313c59325edb5e9c4aaa9790f7d7777a5359472
MD5 f37028d82d78e9dd1b027e08efd80d06
BLAKE2b-256 7a9fa50ac6e210d43ec8185c8ab2ee7d5ff61d3b0a66663bdb1e5a4fc7c07166

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp313-cp313-android_24_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp313-cp313-android_24_arm64_v8a.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp313-cp313-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 e419b510cf670895336a882764e9422aa4982b1ee1277988488b85ba35d89a9b
MD5 168f3871f50ef9b081c8f9b8c75fcb2c
BLAKE2b-256 4561f0fee4c348d7cad71924a474b1f5781ceb0e9bb4518150dce6e59ba1b9ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp313-cp313-android_24_arm64_v8a.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-win_arm64.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp311-abi3-win_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.11+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 6d6885e00e683b069182fcbb6e743f18a3692c0b1f2111d56b71600a6e0066fd
MD5 fdf0fdcf87c2ac8be3117bcb2ae00e01
BLAKE2b-256 ada030a8b33ab57e0f18446d8693c9782d8f577c7d9a3ec8e2b4529e22759f79

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-win_arm64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 21ef168328f490bf0508d4a04a50d35c16dd242babcdccefc2339f306b35a52c
MD5 2b46c3ec69806b36a06f5934e936a145
BLAKE2b-256 c3ad44aac8b4eae98a82f2113edc993243f7540889a83d28b658e07dbf7569b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-win_amd64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-win32.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp311-abi3-win32.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.11+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 624fbc1035da6ae9545b23215c8e93d93c31e7732bf14c29aad8150c0c7c7989
MD5 a0087b64e654c70098d88ead32d08e83
BLAKE2b-256 94262cefcaa6a31631cf4ea724943de526f4a8d7d148fb8d1322aba6048c3349

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-win32.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ae75854a7c19e1f985a4ae6fbef219160c858cc472de86fa5ac504603349dc7e
MD5 79a7b60141d441f6be480d4154857866
BLAKE2b-256 3b3e35ec913511fc7db9e91089ea93f294057c9127ecba78566bc08dc48c93a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7f5e4a106353e8e3712b5e1f4429546676118b6b7a7e7b19837828d3ea019a3e
MD5 ea38b9a5f848ebd7625a9dcb9c523d1b
BLAKE2b-256 7eae2eef255c2df0dd7a5999d65b529162c9093424a5b5135a058750cb4d742e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_i686.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 056672ec7e1c7793b4349c818c91419fea920e69dba04f2217d1426691d51901
MD5 ddb91a88dda77067130657bb67cbd9f1
BLAKE2b-256 4fb6f006059ae51404b7d9c92d436be9b097a4fa1cac71036bff37d6ff3f6293

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_armv7l.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b1aea2cf107fd0631a68735138719eb7209f4d97dcc786fb0b4187fbd299a5a7
MD5 651da623873540b3a98a6697ae2e5af7
BLAKE2b-256 c6d8c32fdab6d86e1e040947ffd43def2d4ffdd14e061465ecbcafa4853d5009

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9e14ce1747caf75dbb74d9990d8d24262626aa94372f23108fcf777969cd2f65
MD5 95caeb4471ef9d4fbf9792bd2ee0bd07
BLAKE2b-256 9ad63365a1afbbeed046a2e7e16f332b25117f81d812b332ac104d8e79c4c080

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 93910d70b6566e3c3ed8e195bfdc3d4ea3bd6afbb7d595ac2d2d9702165720b3
MD5 975dae80b1657af7006e0e29c34e1117
BLAKE2b-256 77183b9ec968ad4078e070cbb7ad06148745dd1c614f6a545fe849e7a05958ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2c1b4751c393cac0bab39d50b01b63eb114b3eb1d12a415840219608bf89d742
MD5 ccef59de66a16eacb71107bee728b5be
BLAKE2b-256 3bee3a42a90b4c6c6067962502bc59bf3323aee2c0372175f3e56cc9a7747fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 922ca00b98871b7bb431f7e381d892d436fcf438c29b40e967316a773359ceb3
MD5 f8653028efd8744af9be0858d364ed9a
BLAKE2b-256 37bd516b5d81b747b370f308fb7d7de7ac0732e1c586e7be3eb056e2f088a151

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ea8183bb301e80bef14508ee64a114014faa5925e8c4d99d6db692c4e8ee349
MD5 9af8bf2be84734114a04835bf765b2fd
BLAKE2b-256 cd5c95d69aed76da02a1fe182b12740abc4844eb918216726783d386cfe2a428

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e003ddaefa941802ca7e34262082abfa090bc9e99eccd36e765992fd723c4a9d
MD5 022ac15caea0e0bb469d4e7221707e88
BLAKE2b-256 6ad5a441b704a9c8d11dbdd8ac6fb4e707a4d4487b3abe0ef62218c986ed15fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-macosx_10_9_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp311-abi3-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp311-abi3-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b0c7c9b7d2dd8b7749a259a8daec78288f24114e7812e7f516afa39b20b51a0e
MD5 bed9dc47b33211a736029feaa2132a09
BLAKE2b-256 b54a810c908fd652988e3239e58c91b90dfdc1574523911e81b05ea644d3a03a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp311-abi3-macosx_10_9_universal2.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 306540f84e2ae7b4a80b53528a6794608252a5f3454ef1caa3fea46f8df2a110
MD5 041f0648bee0ed4980881576af4056dd
BLAKE2b-256 88600695db3e32feb3ecaa8f782487a37f8e1a49554f3b44359b31eb31445539

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-win_arm64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d53008e107f23de9bb8519376b98596c0fc7b41ecf0820a0ec60de98db8c2c03
MD5 0d52b11b9a1e271bafb43c200720846b
BLAKE2b-256 0179bd632feaa2d2ca88aba7c62563a9c0b02479eba36d7ee59d20049bdfce40

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: rp2040py-0.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 c400c4d3d12f2ef8e8b809ce78fbc8b29a6b903c4c0564b549bee4417c920d6a
MD5 8194a7d44d6cac1f7c24c01e4a626f3b
BLAKE2b-256 cad5af3a4054524cd6256e90bf4d12b23e1d4ca3cfb808afc77d24139a58de85

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-win32.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1903bd3ecf15018ec1378f32af990006e4d49d1fc6dd4b8dce6157ea839a34ec
MD5 03fdd3b724fcd06507d65690888a9f55
BLAKE2b-256 ac452c626331ad35e6b38775e8a321eae3e4a468fd8f643b1550b3810dfa0cd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7e9c1f43abb16766af35b6ee401a4a8e9d6e48decf6a5ccb4a0472474b38b5bb
MD5 2f9a0022c80d4b54934f168b4a0c9b68
BLAKE2b-256 38c8bdd9ee147b1efa97622c5870c8ddfb4144be2296587f4150858901950489

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 296ece275e8f01e909c658a52ced466013d9c56b4b9c59f9da6c3d17960d941d
MD5 ee9c363c261e5a2e63bf50b803321635
BLAKE2b-256 7d856e46241d0eee3745b282f23c0897b65a6600d50325a47b3083c66e638c2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 199bd90412dc1733bc37a1850c8f71e680ddf495e3746ad9e7df077006c4eb82
MD5 33a3c1bb5abe2e71c5fe69e3016969db
BLAKE2b-256 6fe713a370c3db74720467e09ea9817a50c3995a68b672f97b8152b29685e461

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc54f73d9bd5959695d425b3022cc72a0235a1dc7b540c53debcea18a1136cd4
MD5 0e13bf5256d4347b2f0b29af674cc4f6
BLAKE2b-256 bc9a413af032b21e23ee039e3d43b9af4070757276687c47380ccf2148c0f47c

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 e60503832e765ecef9f93d5a397302d4c90fbb8f2e13e28697e3720d7bf159bd
MD5 6f497c31839060ce94068b8b6563b4cd
BLAKE2b-256 08cd29c78794f2048d448da424acb1208b687696fbb1d971fbe1e2605539962a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c388655147ab68560ac907de3c7475383acb36b0981331ff07afd88b02ab7d3
MD5 ac241276e457d88e5bf02a78497a98fc
BLAKE2b-256 4dd52180650848b234849a26675e88e7cf86ac2a261300a74ef329cd8f4518f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 384170825de59db1cdb50278d38f30f1ea3f990c35faa860b1c6068937d06972
MD5 9fd4bfadc58129d4fab4aeed1bd935b6
BLAKE2b-256 90bfc506f0d55009065619d42e430a10d145007b73d67e90a0a304c61849bd94

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f606a911235548b3b7331e00f288a61f13d47e981d159da5ae194f9bd39b4b5
MD5 fa76381667e1cd59d4b9d36da6b45190
BLAKE2b-256 0fdbdbcb7a6b594c871fc521f6908c66a34236117257492de568dc22ec522ee9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aec9a6203f789416306b9427e74afb24669e0432f02a98a7187114ff402d1376
MD5 87d374a8d7366b47dccb7124b9c3521f
BLAKE2b-256 22f44f694c18215755dff26289dbe8a007e6361eedcb2c5079c6c480ec000cc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rp2040py-0.2.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rp2040py-0.2.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d6e95f3a8da010f71c7e77f1a44eeb808f6d7d54c7e8828776bbff44a3e32c56
MD5 092ead251a7965cd17820a0508c09446
BLAKE2b-256 cb27b329bde9f7187a359e68e91e7734899a4a2c3af9ed8f94066443e3e9415c

See more details on using hashes here.

Provenance

The following attestation bundles were made for rp2040py-0.2.0-cp310-cp310-macosx_10_9_universal2.whl:

Publisher: publish.yml on o-murphy/rp2040py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page