Conversation
The Cell class serialization was relying on a manual dictionary construction as a workaround for older Python versions. Now that the project requires Python>=3.12, we can modernize this. This commit replaces the manual __dict__ manipulation with super().__getstate__() while preserving the logic that clears connections to prevent infinte recursion during the deepcopy operations.
|
Performance benchmarks:
|
quaquel
approved these changes
Jan 7, 2026
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.
Summary
This PR refactors the
Cellclass inmesa/discrete_space/cell.pyto usesuper().__getstate__()for serialization, replacing a legacy manual dictionary construction.Motive
The previous implementation of getstate contained a manual workaround for older Python versions, explicitly marked with a
FIXME comment: # fixme, once we shift to 3.11, replace this with super. __getstate__.Since the project now requires
Python>=3.12, we can safely modernize this method to use the standardsuper()implementation, reducing technical debt and simplifying the codebase.Implementation
self.__dict__andself.__slots__.super().__getstate__()to retrieve the default state.Usage Examples
This is a refactor, so the external behavior remains identical. The
Cellobjects continue to support pickling and deepcopying without recursion errors.Additional Notes
This change addresses the specific technical debt item identified in the source code comments. No behavior changes are expected
Closes #3084