Description
When running the test suite sequentially (as is done as part of the release process), an interaction between test_imp, test_importlib and subinterpreters is causing test_pickle and test_pickletools to fail. The easiest reproducer::
% ./python -m test test_imp test_importlib test_pickletools
0:00:00 load avg: 0.22 Run tests sequentially
0:00:00 load avg: 0.22 [1/3] test_imp
0:00:00 load avg: 0.22 [2/3] test_importlib
0:00:03 load avg: 0.22 [3/3] test_pickletools
test test_pickletools failed -- Traceback (most recent call last):
File "Lib/test/pickletester.py", line 1989, in test_builtin_types
s = self.dumps(t, proto)
^^^^^^^^^^^^^^^^^^^^
File "Lib/test/test_pickletools.py", line 11, in dumps
return pickletools.optimize(pickle.dumps(arg, proto, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_pickle.PicklingError: Can't pickle <class 'importlib._bootstrap.BuiltinImporter'>: it's not the same object as importlib._bootstrap.BuiltinImporter
test_pickletools failed (1 error)
== Tests result: FAILURE ==
2 tests OK.
1 test failed:
test_pickletools
Total duration: 4.2 sec
Tests result: FAILURE
The failure happens in both test_pickle and test_pickletools (test_pickletools's traceback is more obvious), after in the same process running both test_imp and either test_import or test_importlib. Disabling test_imp.ImportTests.test_create_builtin_subinterp()
makes the tests pass. (This was happening before #102982 as well as after it, so I don't think it is involved here.)
I expect this is an unintentional side-effect of the test, but this was not happening in the 3.12.0a6 release, and as far as I can tell the relevant tests haven't changed since before a6. I'm delaying the 3.12.0a7 release until it's clear this isn't a fundamental problem with subinterpreters.
Linked PRs
Metadata
Metadata
Assignees
Projects
Status
Done
Status
Done