You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`build-linux-arm64-drm` — Raspberry Pi OS containers (Bullseye/Bookworm), Python 3.10–3.14, DRM only
124
+
-`build-windows` — Windows Server 2022, Python 3.7–3.14 + PyPy 3.11, Desktop/SDL/SDL_SOFT, x64
125
+
-`build-windows32` — Windows Server 2022, same Python versions, x86
126
+
-`source-distro` — Builds and publishes sdist
127
+
-`dynamic-distro` — Builds and publishes `raylib_dynamic` sdist
128
+
-`merge` — Merges all artifact uploads
129
+
130
+
**Manual dispatch inputs:**
131
+
-`publish_to_pypi` (boolean): Publish wheels to PyPI after build. Requires `PYPI_KEY` secret.
132
+
133
+
All build jobs perform a smoke test after building: `import pyray; pyray.init_window(100,100,"test")`, checking output for `"INFO: Initializing raylib"`.
134
+
135
+
### `.github/workflows/test_pypi.yml`
136
+
137
+
On-demand workflow to verify packages work when installed directly from PyPI. Triggered manually via `workflow_dispatch`.
138
+
139
+
**Inputs:**
140
+
-`package_name` (string): Which package to test (`raylib`, `raylib_sdl`, `raylib_drm`, `raylib_dynamic`) — default `raylib`
141
+
-`version` (string): Specific version to install (e.g., `5.5.0.2`) — leave empty for latest
142
+
-`pre_release` (boolean): Whether to pass `--pre` to pip to allow pre-release versions
143
+
144
+
**Matrix:**
145
+
- OS: macOS Intel (`macos-15-intel`) and macOS ARM64 (`macos-14`)
146
+
- Python versions: 3.10, 3.11, 3.12, 3.13, 3.14
147
+
- Python source: Homebrew (`brew install python@X.Y`) and python.org (`actions/setup-python`)
148
+
149
+
The workflow installs the selected package from PyPI and runs the same smoke test (`import pyray; pyray.init_window(...)`) to verify the installed wheel works correctly.
150
+
151
+
## Testing Structure
152
+
153
+
-`test_*.py` — Standard tests (run by `run_tests.sh`)
154
+
-`xtest_*.py` — Extra/manual tests (not run by default scripts)
155
+
-`test_hello_world.py` — Minimal smoke test for basic import and window init
156
+
-`test_pyray.py` — Tests the `pyray` wrapper API
157
+
-`test_static_with_only_api_from_dynamic.py` — Ensures static API matches dynamic
Copy file name to clipboardExpand all lines: README.md
+15-4Lines changed: 15 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,8 +33,6 @@ while not window_should_close():
33
33
close_window()
34
34
```
35
35
36
-
37
-
38
36
Use the [project generator](https://github.com/electronstudio/python-raylib-template) to generate a complete project. [Example of project](https://github.com/electronstudio/raylib-example-game)
39
37
40
38
# Videos
@@ -59,6 +57,7 @@ Use the [project generator](https://github.com/electronstudio/python-raylib-temp
59
57
*[Python video player](https://github.com/anrayliu/pyvidplayer2)
@@ -297,3 +304,7 @@ You can create a standalone binary using the Nuitka compiler. For example, here
297
304
298
305
[Coding Games With Pygame Zero & Python](https://github.com/electronstudio/pygame-zero-book) is
299
306
a book for Python beginners.
307
+
308
+
# Hall of shame!
309
+
310
+
Apparently [comma.ai](https://comma.ai/) are now using raylib-python-cffi commercially and so have begun donating money to raylib but have chosen _not_ to give anything to raylib-python-cffi. Yes it's perfectly legal usage, but it's not very nice behaviour. 😔
0 commit comments