Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit c897f6a

Browse filesBrowse files
Update the comment about extensions.
1 parent b932173 commit c897f6a
Copy full SHA for c897f6a

File tree

Expand file treeCollapse file tree

1 file changed

+43
-40
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+43
-40
lines changed

‎Python/import.c

Copy file name to clipboardExpand all lines: Python/import.c
+43-40Lines 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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.