Skip to content

feat: add __weakref__ to Model.__slots__#656

Merged
FBumann merged 1 commit intomasterfrom
feat/model-weakref
Apr 20, 2026
Merged

feat: add __weakref__ to Model.__slots__#656
FBumann merged 1 commit intomasterfrom
feat/model-weakref

Conversation

@FBumann
Copy link
Copy Markdown
Collaborator

@FBumann FBumann commented Apr 20, 2026

Summary

  • Add __weakref__ to Model.__slots__ so weakref.ref(model) and WeakKeyDictionary keyed by Model work.
  • Enables third-party accessor-style extensions to attach per-instance state without forcing users to subclass Model or reintroduce __dict__.

Closes #655

Test plan

  • test_model_is_weakrefableweakref.ref(Model()) returns a live reference.
  • test_model_weakkeydict_use_case — entries in a WeakKeyDictionary[Model, ...] are GC'd when the model is deleted.
  • Full test/test_model.py suite still passes (20 tests).

🤖 Generated with Claude Code

Enables weakref.ref() and WeakKeyDictionary-based per-instance storage for
third-party extensions (e.g. accessor-style libraries) without requiring
users to subclass Model.

Closes #655

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@FBumann FBumann force-pushed the feat/model-weakref branch from 19d5427 to bbd7ffb Compare April 20, 2026 07:39
@FBumann FBumann requested a review from FabianHofmann April 20, 2026 07:40
@FBumann
Copy link
Copy Markdown
Collaborator Author

FBumann commented Apr 20, 2026

@FabianHofmann I need this to improve the UX of linopy-yaml. See #561 . Also probably needed for things like #645.

@FBumann FBumann merged commit db8ccde into master Apr 20, 2026
22 checks passed
@FBumann FBumann deleted the feat/model-weakref branch April 20, 2026 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add __weakref__ to Model.__slots__

2 participants