Skip to content

Commit 6f7a862

Browse files
Update the comment about extensions.
1 parent 9522b8e commit 6f7a862

File tree

1 file changed

+43
-40
lines changed

1 file changed

+43
-40
lines changed

Python/import.c

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -634,29 +634,30 @@ _PyImport_ClearModulesByIndex(PyInterpreterState *interp)
634634
A. _imp_create_dynamic_impl() -> import_find_extension()
635635
B. _imp_create_dynamic_impl() -> _PyImport_GetModInitFunc()
636636
C. _PyImport_GetModInitFunc(): load <module init func>
637-
D. _imp_create_dynamic_impl() -> _PyImport_RunModInitFunc()
638-
E. _PyImport_RunModInitFunc(): call <module init func>
639-
F. <module init func> -> PyModule_Create() -> PyModule_Create2()
640-
-> PyModule_CreateInitialized()
641-
G. PyModule_CreateInitialized() -> PyModule_New()
642-
H. PyModule_CreateInitialized(): allocate mod->md_state
643-
I. PyModule_CreateInitialized() -> PyModule_AddFunctions()
644-
J. PyModule_CreateInitialized() -> PyModule_SetDocString()
645-
K. PyModule_CreateInitialized(): set mod->md_def
646-
L. <module init func>: initialize the module, etc.
647-
M. _PyImport_RunModInitFunc(): set def->m_base.m_init
648-
N. _imp_create_dynamic_impl()
649-
-> _PyImport_CheckSubinterpIncompatibleExtensionAllowed()
650-
O. _imp_create_dynamic_impl(): set __file__
651-
P. _imp_create_dynamic_impl() -> update_global_state_for_extension()
652-
Q. update_global_state_for_extension():
653-
copy __dict__ into def->m_base.m_copy
654-
R. update_global_state_for_extension():
655-
add it to _PyRuntime.imports.extensions
656-
S. _imp_create_dynamic_impl() -> finish_singlephase_extension()
657-
T. finish_singlephase_extension():
658-
add it to interp->imports.modules_by_index
659-
U. finish_singlephase_extension(): add it to sys.modules
637+
D. _imp_create_dynamic_impl() -> import_run_extension()
638+
E. import_run_extension() -> _PyImport_RunModInitFunc()
639+
F. _PyImport_RunModInitFunc(): call <module init func>
640+
G. <module init func> -> PyModule_Create() -> PyModule_Create2()
641+
-> PyModule_CreateInitialized()
642+
H. PyModule_CreateInitialized() -> PyModule_New()
643+
I. PyModule_CreateInitialized(): allocate mod->md_state
644+
J. PyModule_CreateInitialized() -> PyModule_AddFunctions()
645+
K. PyModule_CreateInitialized() -> PyModule_SetDocString()
646+
L. PyModule_CreateInitialized(): set mod->md_def
647+
M. <module init func>: initialize the module, etc.
648+
N. _PyImport_RunModInitFunc(): set def->m_base.m_init
649+
O. import_run_extension()
650+
-> _PyImport_CheckSubinterpIncompatibleExtensionAllowed()
651+
P. import_run_extension(): set __file__
652+
Q. import_run_extension() -> update_global_state_for_extension()
653+
R. update_global_state_for_extension():
654+
copy __dict__ into def->m_base.m_copy
655+
S. update_global_state_for_extension():
656+
add it to _PyRuntime.imports.extensions
657+
T. import_run_extension() -> finish_singlephase_extension()
658+
U. finish_singlephase_extension():
659+
add it to interp->imports.modules_by_index
660+
V. finish_singlephase_extension(): add it to sys.modules
660661
661662
Step (Q) is skipped for core modules (sys/builtins).
662663
@@ -679,14 +680,14 @@ _PyImport_ClearModulesByIndex(PyInterpreterState *interp)
679680
...for single-phase init modules, where m_size >= 0:
680681
681682
(6). not main interpreter and never loaded there - every time (not found in _PyRuntime.imports.extensions):
682-
A-O. (same as for m_size == -1)
683-
P-R. (skipped)
684-
S-U. (same as for m_size == -1)
683+
A-P. (same as for m_size == -1)
684+
Q-S. (skipped)
685+
T-V. (same as for m_size == -1)
685686
686687
(6). main interpreter - first time (not found in _PyRuntime.imports.extensions):
687-
A-Q. (same as for m_size == -1)
688-
R. (skipped)
689-
S-U. (same as for m_size == -1)
688+
A-R. (same as for m_size == -1)
689+
S. (skipped)
690+
T-V. (same as for m_size == -1)
690691
691692
(6). subsequent times (found in _PyRuntime.imports.extensions):
692693
A. _imp_create_dynamic_impl() -> import_find_extension()
@@ -703,19 +704,21 @@ _PyImport_ClearModulesByIndex(PyInterpreterState *interp)
703704
...for multi-phase init modules:
704705
705706
(6). every time:
706-
A. _imp_create_dynamic_impl() -> import_find_extension() (not found)
707-
B. _imp_create_dynamic_impl() -> _PyImport_LoadDynamicModuleWithSpec()
708-
C. _PyImport_LoadDynamicModuleWithSpec(): load module init func
709-
D. _PyImport_LoadDynamicModuleWithSpec(): call module init func
710-
E. _PyImport_LoadDynamicModuleWithSpec() -> PyModule_FromDefAndSpec()
711-
F. PyModule_FromDefAndSpec(): gather/check moduledef slots
712-
G. if there's a Py_mod_create slot:
707+
A. _imp_create_dynamic_impl() -> import_find_extension() (not found)
708+
B. _imp_create_dynamic_impl() -> _PyImport_GetModInitFunc()
709+
C. _PyImport_GetModInitFunc(): load <module init func>
710+
D. _imp_create_dynamic_impl() -> import_run_extension()
711+
E. import_run_extension() -> _PyImport_RunModInitFunc()
712+
F. _PyImport_RunModInitFunc(): call <module init func>
713+
G. import_run_extension() -> PyModule_FromDefAndSpec()
714+
H. PyModule_FromDefAndSpec(): gather/check moduledef slots
715+
I. if there's a Py_mod_create slot:
713716
1. PyModule_FromDefAndSpec(): call its function
714-
H. else:
717+
J. else:
715718
1. PyModule_FromDefAndSpec() -> PyModule_NewObject()
716-
I: PyModule_FromDefAndSpec(): set mod->md_def
717-
J. PyModule_FromDefAndSpec() -> _add_methods_to_object()
718-
K. PyModule_FromDefAndSpec() -> PyModule_SetDocString()
719+
K: PyModule_FromDefAndSpec(): set mod->md_def
720+
L. PyModule_FromDefAndSpec() -> _add_methods_to_object()
721+
M. PyModule_FromDefAndSpec() -> PyModule_SetDocString()
719722
720723
(10). every time:
721724
A. _imp_exec_dynamic_impl() -> exec_builtin_or_dynamic()

0 commit comments

Comments
 (0)