gh-138192: Fix Context initialization so that all subinterpreters are assigned the MISSING value. (gh-138503)
--------- Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
@@ -2204,6 +2204,16 @@ class LowLevelTests(TestBase):
|
||||
whence = eval(text)
|
||||
self.assertEqual(whence, _interpreters.WHENCE_LEGACY_CAPI)
|
||||
|
||||
def test_contextvars_missing(self):
|
||||
script = f"""
|
||||
import contextvars
|
||||
print(getattr(contextvars.Token, "MISSING", "'doesn't exist'"))
|
||||
"""
|
||||
|
||||
orig = _interpreters.create()
|
||||
text = self.run_and_capture(orig, script)
|
||||
self.assertEqual(text.strip(), "<Token.MISSING>")
|
||||
|
||||
def test_is_running(self):
|
||||
def check(interpid, expected):
|
||||
with self.assertRaisesRegex(InterpreterError, 'unrecognized'):
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
Fix :mod:`contextvars` initialization so that all subinterpreters are assigned the
|
||||
:attr:`~contextvars.Token.MISSING` value.
|
||||
@@ -1360,11 +1360,8 @@ get_token_missing(void)
|
||||
PyStatus
|
||||
_PyContext_Init(PyInterpreterState *interp)
|
||||
{
|
||||
if (!_Py_IsMainInterpreter(interp)) {
|
||||
return _PyStatus_OK();
|
||||
}
|
||||
|
||||
PyObject *missing = get_token_missing();
|
||||
assert(PyUnstable_IsImmortal(missing));
|
||||
if (PyDict_SetItemString(
|
||||
_PyType_GetDict(&PyContextToken_Type), "MISSING", missing))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user