Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #61 +/- ##
==========================================
- Coverage 40.02% 37.93% -2.09%
==========================================
Files 23 21 -2
Lines 2131 2019 -112
Branches 327 311 -16
==========================================
- Hits 853 766 -87
+ Misses 1177 1163 -14
+ Partials 101 90 -11
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Refactors WhipperSnapPy’s headless OpenGL rendering path to use Mesa OSMesa (CPU software rendering) instead of EGL, and reorganizes view-matrix utilities out of the gl subpackage while updating CI/Docker/docs accordingly.
Changes:
- Replace EGL headless context with a new OSMesa-based offscreen context and update GL context creation/teardown paths.
- Move canonical view-matrix helpers into
utils.typesand relocate GUI-only view state/arcball utilities into the CLI module. - Update CI workflows, Docker image dependencies, and documentation to reflect OSMesa-based headless rendering.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
whippersnappy/utils/types.py |
Adds canonical per-view 4×4 numpy view matrices + accessors alongside ViewType. |
whippersnappy/snap.py |
Updates imports to use get_view_matrices from utils.types. |
whippersnappy/gl/views.py |
Removes view matrices + interactive view state helpers from gl package. |
whippersnappy/gl/utils.py |
Switches fallback headless rendering path from EGL to OSMesa; adds platform selection env var logic; updates context handling. |
whippersnappy/gl/osmesa_context.py |
Introduces new OSMesa offscreen context implementation via ctypes. |
whippersnappy/gl/egl_context.py |
Removes EGL headless context implementation. |
whippersnappy/gl/_platform.py |
Removes EGL-specific PyOpenGL platform bootstrapper. |
whippersnappy/gl/__init__.py |
Updates package exports/docs now that views/EGL are removed and view matrices live in utils. |
whippersnappy/cli/whippersnap.py |
Moves GUI-only ViewState + arcball helpers into CLI (only consumer) and updates view-matrix usage. |
whippersnappy/__init__.py |
Removes previous EGL platform selection / display probing logic. |
tests/test_array_and_rendering.py |
Adjusts rendering test behavior and introduces macOS CI skip for rendering tests. |
doc/conf.py |
Tweaks numpydoc configuration for dataclass attribute documentation and ignore patterns. |
README.md |
Updates user-facing docs from EGL to OSMesa headless rendering description. |
Dockerfile |
Swaps EGL system dependency for libosmesa6 to support headless CPU rendering. |
DOCKER.md |
Updates Docker guide to describe OSMesa-based headless rendering. |
.github/workflows/pytest.yml |
Installs libosmesa6 on Ubuntu; adds Windows Mesa software OpenGL setup; documents platform strategy. |
.github/workflows/publish.yml |
Updates Ubuntu system deps from EGL to OSMesa. |
.github/workflows/doc.yml |
Updates Ubuntu system deps from EGL to OSMesa. |
.github/workflows/build.yml |
Updates Ubuntu system deps from EGL to OSMesa. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Refactor headless rendering: EGL → OSMesa, clean up GL subpackage