-
Notifications
You must be signed in to change notification settings - Fork 950
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
weakref to enable gc + setting children with iterable + fix loading state via jupyter.widget.control + fix various tooltips #3893
Closed
Conversation
This file contains 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
…dentify closed widgets. Added a new class `Children` for the children trait of Box optimised for checking widgets and quietly dropping widgets that are closed, and objects that aren't widgets. Widgets in Box.children are also removed when the widget is closed. Added tests test_gc_box & test_gc_box_advanced
…pr_mimebundle_ is set to None when closed, this reduces the risk of name clash with subclasses. Changed Children to allow any object that has the method `_repr_mimebundle_`. Moved box related tests to test_widget_box. Added `close` method to Box to ensure discarded children are un-observed.
…rgument `observe_children`. Updated TestBox.
- change evaluation order to check for a widget first (most common object). - raise NotImplementedError for objects with _repr_mimebundle_ that aren't widgets.
Fix 'Exception' for a Box that has been provided a tooltip.
Remove observe_children from 'Box'
Removed _model_id and revised __rer__ for a closed widget. Added validate_mode for Box.
…idget available for gc).
fleming79
changed the title
Use weakref to resolve kernel side memory leaks
weakref to enable gc + setting children with iterable + fix loading state via jupyter.widget.control + fix various tooltips
May 10, 2024
This was referenced May 25, 2024
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.
This PR consists of several enhancements/fixes:
Children
for validating box.children.No breaking changes are foreseen.
Garbage collection
A weak reference is used for the comm message removing internal strong references.
A new function
enable_weakreference
replaces the global_instances
dict with a weak value dictionary moving any existing mappings. This removes the last strong reference to objects in theipywidgets
module enabling automatic garbage collection once the user generated strong references are removed.The inverse function
disable_weakreference
does the opposite, restoring a normal dictionary and copying existing mappings.Box.children
Box.children has new features:
Other changes
f'<closed:{self.__class__.__name__}>'