Skip to main content

A Python/REST interface for GPIO circuits running on the Raspberry Pi

Project description

PyPI version

Please see the project website for more information.

Python Interface for GPIO Circuits

This package provides two related capabilities. First, it provides a high-level, event-driven Python interface for GPIO circuits running on the Raspberry Pi. Sensors, motors, LEDs, switches, and many other components are covered. An example is shown below (click to watch; Python code here):

Buzzing LED bar with push button

Remote Control of GPIO Circuits via REST/HTML/JavaScript

Second, this package enables remote control of GPIO circuits via REST APIs invoked from HTML/JavaScript front-ends. Want to control your circuit remotely from your phone? Look no further. This package auto-generates HTML/JavaScript for GPIO circuits based on Material Design for Bootstrap. These HTML/JavaScript elements can be embedded in full web pages for remote control of the circuit. The remote control screen for the Freenove Smart Car is shown below:

freenove-smart-car

The smart car is built from the same components (sensors, motors, LEDs, etc.) listed above, making development quite straightforward. As another example, consider the 3D-printed robotic arm that I designed for the car.

Please see the project website for more information.

Bumping, Tagging, and Releasing Versions with Poetry

We follow semantic versioning and Python Packaging specifications when bumping and releasing.

Prerelease

Prereleases are useful for testing changes prior to an official release. These releases include alpha (a), beta (b), and release candidate (rc) versions, which are successively mature release phases on the path to an official release.

Bump the minor prerelease (e.g., 0.2.00.3.0a0):

OLD_VERSION=$(poetry version --short)
poetry version preminor
VERSION=$(poetry version --short)
git commit -a -m "Bump minor prerelease:  ${OLD_VERSION}${VERSION}"
git push

Bump the prerelease number within the current prerelease phase (e.g., 0.1.0a00.1.0a1):

OLD_VERSION=$(poetry version --short)
poetry version prerelease
VERSION=$(poetry version --short)
git commit -a -m "Bump prerelease number:  ${OLD_VERSION}${VERSION}"
git push

Bump the prerelease phase (e.g., 0.1.0a10.1.0b0):

OLD_VERSION=$(poetry version --short)
poetry version prerelease --next-phase
VERSION=$(poetry version --short)
git commit -a -m "Bump prerelease phase:  ${OLD_VERSION}${VERSION}"
git push

The prerelease phases progress as alpha (a), beta (b), and release candidate (rc), each time resetting to a prerelease number of 0. After rc, the prerelease suffix (e.g., rc3) is stripped, leaving the major.minor.patch release version.

Patch

A patch release fixes one or more issues in a previous release.

Bump the patch version (e.g., 0.1.0b10.1.1):

OLD_VERSION=$(poetry version --short)
poetry version patch
VERSION=$(poetry version --short)
git commit -a -m "Bump patch:  ${OLD_VERSION}${VERSION}"
git push

Minor

A minor release adds functionality in a backwards compatible fashion.

Bump the minor version (e.g., 0.1.0b10.1.0):

OLD_VERSION=$(poetry version --short)
poetry version minor
VERSION=$(poetry version --short)
git commit -a -m "Bump minor:  ${OLD_VERSION}${VERSION}"
git push

Major

A major release adds functionality in a backwards incompatible fashion.

Bump the major version (e.g., 0.1.0a02.0.0):

OLD_VERSION=$(poetry version --short)
poetry version major
VERSION=$(poetry version --short)
git commit -a -m "Bump major:  ${OLD_VERSION}${VERSION}"
git push

Tagging

Tagging the current version enables the publication of a new release to PyPI via GitHub workflow. Tag the current version (e.g., v2.0.0):

VERSION=$(poetry version --short)
git tag -a -m "version ${VERSION}" "v${VERSION}"
git push --follow-tags

Then create a new release from the tag. Doing this will trigger the publication workflow to run, which builds a new release and uploads it to PyPI.

Project details


Download files

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

Source Distribution

raspberry_py-0.7.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

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

raspberry_py-0.7.0-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file raspberry_py-0.7.0.tar.gz.

File metadata

  • Download URL: raspberry_py-0.7.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.8 Linux/6.17.0-1018-azure

File hashes

Hashes for raspberry_py-0.7.0.tar.gz
Algorithm Hash digest
SHA256 cb39216c290ca09d5025733c75cd9c71d117e18793fbfd6b795861804316f459
MD5 8b82d230f92a707a8a0513be731807bb
BLAKE2b-256 ecd6be35c067601fd3a688b8ba89f9ae177a6d5c48ce1117379e20bc24fe736e

See more details on using hashes here.

File details

Details for the file raspberry_py-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: raspberry_py-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.8 Linux/6.17.0-1018-azure

File hashes

Hashes for raspberry_py-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c148e8a69e94ccb689c8cc8b886667d8df2ea376b7fc72cc60d4fbf762d5e896
MD5 2a4a9ed874e248c80ddf4d9f8d0fb407
BLAKE2b-256 bf4dca2f755277d7e4acee53e51757eca8f7cd4b4acdfbec0ae586250ec3031c

See more details on using hashes here.

Supported by

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