Skip to content

Contributing

pydisplay is a community project. Bug reports, board configs, drivers, docs, and examples are all welcome.

Development setup

See Building and publishing documentation for local preview (mkdocs serve) and ReadTheDocs setup.

Quick version:

python3 -m venv .venv-docs
.venv-docs/bin/pip install -r docs/requirements.txt
.venv-docs/bin/mkdocs serve    # http://127.0.0.1:8000

After editing files under src/:

./tools/regenerate.sh    # refresh packages/*.json and html/pyscript.toml

Pull request workflow

  1. Fork PyDevices/pydisplay
  2. Create a feature branch
  3. Make changes; run ./tools/regenerate.sh --audit if you touched src/
  4. For docs: see Building docsmkdocs serve and verify pages build
  5. Open a PR against main with a clear description

High-value contributions

  • Board configs for new hardware
  • Display/touch drivers for unsupported controllers
  • C bus drivers (STM32, i.MX RT) compatible with BusDisplay
  • Documentation fixes and platform guides — see docstring conventions
  • EPaperDisplay implementation
  • CircuitPython board configs and circup packaging
  • PyScript asyncio examples and psdisplay improvements

Code style

Python is linted with Ruff — see pyproject.toml. Pre-commit hooks may run on commit.

Public API docstrings: Docstring conventions.

Documentation

Publishing, micropython-lib, and TestPyPI: tools/README.md.

License

Follow the license terms in the repository. Third-party add_ons retain their original licenses where noted.