Collect after del in tests, add python 3.13 to non-dev CI #1835
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.
Description
This PR adds python 3.13 testing to our regular (non-devdeps) CI and adds
gc.collect(2)
calls afterdel
calls in our tests.I'm not certain the issue but my suspicion is that the python 3.13 changes to the garbage collector means that some of our tests that rely on implicit garbage collection may now intermittently fail with python 3.13. These tests often make an object, add it's reference in some way to asdf (which should grab a weakref for these tests), then
del
the object and check that asdf correctly handles the failure to resolve the weakref. If garbage collection doesn't occur between thedel
and theassert
testing the weakref the test will fail. Hopefully adding explicit calls togc.collect
will fix the issue.It looks like with python 3.13
gc.collect
is equivalent togc.collect(2)
. This is different compared to python 3.12 and the updates here usegc.collect(2)
to try to have similar behavior for python 3.13 and older versions.Closes #1834
Checklist:
pre-commit checks ran successfully
tests ran successfully
for a public change, added a towncrier news fragment
changes/<PR#>.<changetype>.rst
changes/<PR#>.feature.rst
: new featurechanges/<PR#>.bugfix.rst
: bug fixchanges/<PR#>.doc.rst
: documentation changechanges/<PR#>.removal.rst
: deprecation or removal of public APIchanges/<PR#>.general.rst
: infrastructure or miscellaneous changefor a public change, updated documentation
for any new features, unit tests were added