This document is a maintainer guide for the TachyWooting project.
- Python 3.9+ (CI covers 3.9-3.14)
- A local C compiler toolchain (for CFFI)
- Docker Desktop (if you run workflows with
act)
python -m pip install -e ".[dev]"
wooting-build-interfaceThe GitHub Actions workflow update-wooting-sdk updates vendored SDK assets under
tachywooting/libraries from an official Wooting SDK release.
Workflow file: .github/workflows/update-wooting-sdk.yml
Script used: scripts/update_wooting_sdk.py
- Runs manually (
workflow_dispatch) with aversioninput (default0.9.1). - Executes:
python scripts/update_wooting_sdk.py --version "<version>"- Checks whether
tachywooting/librarieschanged. - If changed:
- creates branch
update-wooting-sdk-<version> - commits changes
- pushes branch
- opens a PR automatically
python scripts/update_wooting_sdk.py --version 0.9.1
git status --shortThe script:
- downloads GitHub release assets for macOS arm64/x86_64, Linux, and Windows
- verifies SHA256 (release metadata or
KNOWN_SHA256fallback) - extracts archives and replaces target platform directories
- updates
tachywooting/libraries/VERSION.json(per-platformversion/source/files; a platform skipped due to an upstream packaging bug keeps its previously vendored version instead of being force-marked as the new one) - adjusts macOS install names for dylibs when needed
- Always inspect
git diff tachywooting/librariesbefore commit. - Ensure required Linux artifacts still exist in:
tachywooting/libraries/linux/releasetachywooting/libraries/linux/debug- Do not remove binaries required by the CFFI build.
You can run test-install.yml locally.
Local config file: .actrc (ignored by Git).
Examples:
act -W .github/workflows/test-install.yml -l
act pull_request -W .github/workflows/test-install.yml -j install --matrix os:ubuntu-latest --matrix python-version:3.12 --matrix extras:dev
act pull_request -W .github/workflows/test-install.yml -j test --matrix os:ubuntu-latest --matrix python-version:3.12Notes:
actmainly emulates Linux; macOS/Windows are not reproduced 1:1.- On Apple Silicon, use
linux/amd64to reduce compatibility issues.
Documentation is built with Sphinx under docs/.
docs/index.rst: main table of contentsdocs/installation.rst: installationdocs/usage.rst: usagedocs/console_scripts.rst: CLI scriptsdocs/api.rst: API docsdocs/scripts.md: script documentation (Markdown through MyST)
File: docs/conf.py
Enabled extensions:
myst_parsersphinx.ext.autodocsphinx.ext.autosummarysphinx.ext.napoleonsphinx.ext.viewcode
Conventions:
- NumPy-style docstrings (
napoleon_numpy_docstring = True) - autosummary generation enabled
- theme:
sphinx_rtd_theme
docs/_build/: generated build outputdocs/generated/: generated API pagesdocs/_static/: static assets
pytest tests/ -v --tb=shortpython -m pip install .
python -m pip show tachywootingwooting-delete-interface
wooting-build-interfacepyproject.toml: package metadata, dependencies, scriptstachywooting/wooting_interface_builder.py: CFFI build and native linkingtachywooting/package_setup.py: post-install orchestration (permissions/plugins)scripts/update_wooting_sdk.py: vendored SDK updater.github/workflows/test-install.yml: install/test matrix CI.github/workflows/update-wooting-sdk.yml: automated SDK update workflow
.DS_Storeand.actrcare local files and should remain ignored.pip as rootwarnings inactcontainers are expected.- If
rgis not installed locally, usegrepto filter logs.