awesome-micropython icon indicating copy to clipboard operation
awesome-micropython copied to clipboard

Add Belay (Package Manager & computer-device communications)

Open BrianPugh opened this issue 1 year ago • 3 comments

I'd like to propose adding my project, Belay, to your list! I can open a PR, but I was unsure of what section to put it under. Belay is primarily 2 things:

Allows Easy Computer-Device Communications.

The following code, running on a computer (e.g. with CPython), will toggle an LED on a microcontroller board running micropython. Besides micropython, no prior pre-configuration is required.

import belay

device = belay.Device("/dev/ttyUSB0")


@device.task
def set_led(state):
    print(f"Printing from device; turning LED to {state}.")
    Pin(25, Pin.OUT).value(state)


set_led(True)

Package Manager

It's been a challenge to get repeatable deployments, and reliable dependency updates. I added a cli tool belay that is heavily inspired by Poetry.

Basically, micropython dependency URLs can be specified in pyproject.toml. Running belay update will fetch and cache those files into the .belay/ folder of your project (this should be committed to git and can be thought of like a lock file). The dependencies and project can then be installed to device via belay install [PORT]. Hashes of files are compared, so syncs are efficient when only a few changes are made. The CLI has a lot of other actions to aid in development and debugging, but this is the basic use-case.

Here's a very basic project that uses Belay for handling dependencies. Note that in this project, no explicit belay install needs to be performed since it's automatically handled within main.py. This also allows for pip-installable libraries/cli to bundle micropython code that can be automatically deployed to micropython microcontrollers.

BrianPugh avatar Mar 10 '23 17:03 BrianPugh

Nice! A worthy addition 👍

Not sure where to put it either. Maybe it's time for a new section under Development, or time to restructure them. mpremote is under Development > Shells > On Host, but Belay does more than that. Maybe Development > IDEs?

mcauser avatar May 09 '23 01:05 mcauser

What if we were to add a new, top-level category Tools and move Development > Shells > On Host contents; many of the tools listed there are either more-than-just-shells, or aren't really shells.

I feel like anything under Development > IDE must have a GUI as the primary method of interaction.

BrianPugh avatar May 09 '23 15:05 BrianPugh

I think that’s a good suggestion - gut feel agree on the “IDE” thing, it wouldn’t seem like the right spot for Belay to go either.

andypiper avatar May 09 '23 22:05 andypiper