Explain use of global thread-local variable in repr. #854
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.
It's not completely obvious to a reader why we need a thread-local
"global" variable to track reference cycles in
__repr__
calls,and the test does not currently contain one. This change adds a comment
explaining the need and also adds a non-attrs value in the reference
cycle of
test_infinite_recursion
.This was inspired by a bug that was opened where the reporter couldn't see why the global variable was needed in the
__repr__
process. Initially I couldn't either, so I figured it was a good idea to add an explanation of why it is there—turns out it is an excellent solution to a real problem. I will gladly accept input about the nature/phrasing/placement of the commentary.This is essentially a docs-only change (with a minor test change attached) so I don't think the full checklist applies in this case.