Fix graphview signals#287
Merged
TeunHuijben merged 9 commits intoroyerlab:mainfrom May 1, 2026
Merged
Conversation
…y happen in rare multithreading case)
…rlab#289) zarr 2.x's util.py imports cbuffer_sizes/cbuffer_metainfo from numcodecs.blosc at module load. numcodecs >= 0.16 dropped those symbols. On Python 3.11+ the resolver freely picks zarr 2.18.x with numcodecs >= 0.16, so any 'import zarr' (e.g. via geff_spec) raises ImportError and tests are cancelled. On Python 3.10 the resolver is forced to numcodecs <= 0.13.1 anyway (numcodecs >= 0.14 requires Python >= 3.11), so the broken pair is unreachable and zarr 2.18 keeps working there. tracksdata's code already uses zarr v3 APIs at runtime ('from zarr.storage import StoreLike') so the constraint just makes explicit what we already require.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #287 +/- ##
==========================================
+ Coverage 87.70% 87.73% +0.02%
==========================================
Files 57 57
Lines 4879 4890 +11
Branches 858 862 +4
==========================================
+ Hits 4279 4290 +11
Misses 378 378
Partials 222 222 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
JoOkuma
approved these changes
May 1, 2026
Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com>
Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com>
Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com>
TeunHuijben
added a commit
to TeunHuijben/tracksdata
that referenced
this pull request
May 1, 2026
* block _root signals while updating the view * save signal state in remove_node in case signal deconnects (would only happen in rare multithreading case) * precomit fixes * stop black and ruff from fighting * Require zarr>=3 on Python >= 3.11 to avoid numcodecs 0.16 clash (royerlab#289) zarr 2.x's util.py imports cbuffer_sizes/cbuffer_metainfo from numcodecs.blosc at module load. numcodecs >= 0.16 dropped those symbols. On Python 3.11+ the resolver freely picks zarr 2.18.x with numcodecs >= 0.16, so any 'import zarr' (e.g. via geff_spec) raises ImportError and tests are cancelled. On Python 3.10 the resolver is forced to numcodecs <= 0.13.1 anyway (numcodecs >= 0.14 requires Python >= 3.11), so the broken pair is unreachable and zarr 2.18 keeps working there. tracksdata's code already uses zarr v3 APIs at runtime ('from zarr.storage import StoreLike') so the constraint just makes explicit what we already require. * Update src/tracksdata/graph/_test/test_graph_view_signals.py Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com> * Update src/tracksdata/graph/_test/test_graph_view_signals.py Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com> * Update src/tracksdata/graph/_test/test_graph_view_signals.py Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com> --------- Co-authored-by: Jordão Bragantini <jordao.bragantini@czbiohub.org> Co-authored-by: Jordão Bragantini <jordao.bragantini@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix GraphView signal emission to keep root and view consistent
Listeners attached to either root or view used to see one graph updated
while the other was still stale, because remove_node and update_node_attrs
emitted root's signal mid-mutation (before the view's local copy caught up).
add_node already did this correctly with a block-and-replay pattern.
call and re-emit at the end, mirroring add_node.
can't reference an unbound old_attrs.
on either side see consistent has_node / attribute values at signal time.