Skip to content

[ENH]: should Axes hold references to widgets? #24373

Open

Description

@timhoffm

Problem

People often forget to hold a reference to a widget so that it‘s getting garbage collected, c.f. #24372.

Proposed solution

Track widgets in a (maybe private) Axes attribute, as we do for artists.

The widget‘s artists (=visual part of the widget) are referenced, so there is a tight relationship. We should add the widget objects themselves (=logic part of the widget) as well.

Activity

  1. anntzer commented on Nov 5, 2022

    @anntzer
    Contributor

    See also #16221 and linked issues.

  2. timhoffm commented on Nov 5, 2022

    @timhoffm
    MemberAuthor

    Thanks for the reminder on #16221. At least for the case of widgets, I feel that holding explicit references is simpler than the lambda construct (explicit is better than implicit).

  3. anntzer commented on Nov 5, 2022

    @anntzer
    Contributor

    To be clear, I don't have a strong preference implementation-wise, it was just to point out an earlier discussion on the same topic.

  4. efiring commented on Jun 5, 2023

    @efiring
    Member

    @anntzer in #16221 you complain about the use of weak references in the callback registry. Proposals to address the current issue include your lambda trick and tracking strong references in the Figure or Axes. Do you also have in mind a solution based on switching from weak to strong references in the callback registry? Or would that have been your preference from the start, but it is now too late to change it?

  5. anntzer commented on Jun 5, 2023

    @anntzer
    Contributor

    I would certainly prefer using strong references (the lambda trick is basically just a way to get strong references for cheap). I think it's possible to even have a proper deprecation period when changing that (basically emit a warning if a method proxy gets gc'ed from the callbackregistry if it didn't get disconnected before -- untested, though).
    However IIRC @tacaswell is strongly (hehe) in favor of keeping the weakref semantics.

  6. carlosgmartin commented on Oct 14, 2024

    @carlosgmartin
    Contributor

    I agree with @anntzer's comments here. The current behavior is surprising and not user-friendly.

  7. anntzer commented on Feb 27, 2025

    @anntzer
    Contributor

    See also #26881 ("Provide a standard place to manually register widgets/animations on a figure/artist/etc.") for an alternative suggestion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions