gh-119180: No longer set __annotations__ in __main__ (#124634)

This commit is contained in:
Jelle Zijlstra 2024-09-27 05:49:43 -07:00 committed by GitHub
parent b79a21ea42
commit 365dffbaad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 4 additions and 9 deletions

View file

@ -849,7 +849,6 @@ class RunStringTests(TestBase):
ns.pop('__loader__')
self.assertEqual(ns, {
'__name__': '__main__',
'__annotations__': {},
'__doc__': None,
'__package__': None,
'__spec__': None,

View file

@ -1080,7 +1080,7 @@ class TestMain(ReplTestCase):
@force_not_colorized
def test_exposed_globals_in_repl(self):
pre = "['__annotations__', '__builtins__'"
pre = "['__builtins__'"
post = "'__loader__', '__name__', '__package__', '__spec__']"
output, exit_code = self.run_repl(["sorted(dir())", "exit()"])
if "can't use pyrepl" in output:

View file

@ -0,0 +1,2 @@
The ``__main__`` module no longer always contains an ``__annotations__``
dictionary in its global namespace.

View file

@ -2503,18 +2503,12 @@ finalize_subinterpreters(void)
static PyStatus
add_main_module(PyInterpreterState *interp)
{
PyObject *m, *d, *ann_dict;
PyObject *m, *d;
m = PyImport_AddModuleObject(&_Py_ID(__main__));
if (m == NULL)
return _PyStatus_ERR("can't create __main__ module");
d = PyModule_GetDict(m);
ann_dict = PyDict_New();
if ((ann_dict == NULL) ||
(PyDict_SetItemString(d, "__annotations__", ann_dict) < 0)) {
return _PyStatus_ERR("Failed to initialize __main__.__annotations__");
}
Py_DECREF(ann_dict);
int has_builtins = PyDict_ContainsString(d, "__builtins__");
if (has_builtins < 0) {