BDD-first Python library for Divoom Pixoo 64
Project description
PyPixoo
The Pixoo library you can trust — BDD-first, well-tested.
A Python library for the Divoom Pixoo 64 display. This is a true behavior-driven design project: behaviors come first. We work outside-in and backward from observable behavior — write Gherkin scenarios first, run them (expect failures), implement until they pass. Specs mock the device and assert library behavior; we test the library, not the device.
What is this?
PyPixoo is a reimplementation of Pixoo control logic, inspired by pixoo but built with BDD from the ground up. Outside-in: we specify observable behavior in Gherkin before writing production code, then implement just enough to make the specs pass. CI runs without a real Pixoo; specs mock HTTP and verify our buffer handling, API payloads, and control flow.
Planned evolution: a Pydantic buffer model with introspection for assertions; features for constructing images and running animation sequences with timing; async fire-and-forget constructs that push frames at the right times; headless browser rendering; and React + Storybook components that run on the Pixoo with a time parameter for frame rendering (variable frame rate, animation timing intact). See PR_FAQ.md for rationale and roadmap. See AGENTS.md for agent guidance.
Requirements
- Python 3.9+
- A Divoom Pixoo 64 on your network (for real-device use; specs use a mock)
Installation
cd PyPixoo
pip install -e ".[dev]"
Run specs
behave
Specs mock the device HTTP layer, so no Pixoo is required. The first scenario uses a hardcoded IP (192.168.0.37) in the step text; the mock fakes all API calls. Edit features/display.feature if you change the IP in your assertions.
Usage
from pypixoo import Pixoo
pixoo = Pixoo("192.168.0.37")
pixoo.connect()
pixoo.fill(255, 0, 68) # RGB red
pixoo.push()
Project structure
PyPixoo/
features/ # Gherkin specs (behave)
src/pypixoo/ # Library
PR_FAQ.md # Project rationale and roadmap
AGENTS.md # Agent guide
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pypixoo-1.0.3.tar.gz.
File metadata
- Download URL: pypixoo-1.0.3.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b01181b1bc8ebb00ec66fc25e84b48c58273155b8fff53adedd558c9bf33dff
|
|
| MD5 |
3fe4ebc2f8c044efb713113dc52baa08
|
|
| BLAKE2b-256 |
af375f15eb31c7a6689b8ff07e4a8e6ac35aac23b4da5153aff66c7d58286553
|
Provenance
The following attestation bundles were made for pypixoo-1.0.3.tar.gz:
Publisher:
ci.yml on endymion/PyPixoo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypixoo-1.0.3.tar.gz -
Subject digest:
6b01181b1bc8ebb00ec66fc25e84b48c58273155b8fff53adedd558c9bf33dff - Sigstore transparency entry: 1006550321
- Sigstore integration time:
-
Permalink:
endymion/PyPixoo@89ee185cbcbd8b52b6f3ef3723a0c7f0ecf21083 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/endymion
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@89ee185cbcbd8b52b6f3ef3723a0c7f0ecf21083 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypixoo-1.0.3-py3-none-any.whl.
File metadata
- Download URL: pypixoo-1.0.3-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b6fd3db77872ffd9a900f748a1748c7d5058e1746ebd7ce461a876a5c61ed9f
|
|
| MD5 |
247a4a19e1492e145fc6f63f934f4df7
|
|
| BLAKE2b-256 |
68ba5daa57114fdf5d0e081f403b1e194d364cc92f8e4dd3705db7659747d99c
|
Provenance
The following attestation bundles were made for pypixoo-1.0.3-py3-none-any.whl:
Publisher:
ci.yml on endymion/PyPixoo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypixoo-1.0.3-py3-none-any.whl -
Subject digest:
7b6fd3db77872ffd9a900f748a1748c7d5058e1746ebd7ce461a876a5c61ed9f - Sigstore transparency entry: 1006550326
- Sigstore integration time:
-
Permalink:
endymion/PyPixoo@89ee185cbcbd8b52b6f3ef3723a0c7f0ecf21083 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/endymion
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@89ee185cbcbd8b52b6f3ef3723a0c7f0ecf21083 -
Trigger Event:
push
-
Statement type: