mirror of
https://github.com/python/cpython.git
synced 2025-11-24 04:17:38 +00:00
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:
parent
9d6b94afe7
commit
f070f54c5f
3 changed files with 13 additions and 4 deletions
|
|
@ -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))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue