[Python-checkins] peps: PEP 489: Improve markup.
berker.peksag
python-checkins at python.org
Thu May 21 14:58:28 CEST 2015
https://hg.python.org/peps/rev/6b6570f097ee
changeset: 5869:6b6570f097ee
user: Berker Peksag <berker.peksag at gmail.com>
date: Thu May 21 15:58:29 2015 +0300
summary:
PEP 489: Improve markup.
files:
pep-0489.txt | 202 +++++++++++++++++++-------------------
1 files changed, 100 insertions(+), 102 deletions(-)
diff --git a/pep-0489.txt b/pep-0489.txt
--- a/pep-0489.txt
+++ b/pep-0489.txt
@@ -191,138 +191,136 @@
The framework that calls the importers is explained in PEP 451
[#pep-0451-loading]_.
-::
+importlib/_bootstrap.py::
- importlib/_bootstrap.py:
+class BuiltinImporter:
+ def create_module(self, spec):
+ module = _imp.create_builtin(spec)
- class BuiltinImporter:
- def create_module(self, spec):
- module = _imp.create_builtin(spec)
+ def exec_module(self, module):
+ _imp.exec_dynamic(module)
- def exec_module(self, module):
- _imp.exec_dynamic(module)
+ def load_module(self, name):
+ # use a backwards compatibility shim
+ _load_module_shim(self, name)
- def load_module(self, name):
- # use a backwards compatibility shim
- _load_module_shim(self, name)
+importlib/_bootstrap_external.py::
- importlib/_bootstrap_external.py:
+ class ExtensionFileLoader:
+ def create_module(self, spec):
+ module = _imp.create_dynamic(spec)
- class ExtensionFileLoader:
- def create_module(self, spec):
- module = _imp.create_dynamic(spec)
+ def exec_module(self, module):
+ _imp.exec_dynamic(module)
- def exec_module(self, module):
- _imp.exec_dynamic(module)
+ def load_module(self, name):
+ # use a backwards compatibility shim
+ _load_module_shim(self, name)
- def load_module(self, name):
- # use a backwards compatibility shim
- _load_module_shim(self, name)
+Python/import.c (the _imp module)::
- Python/import.c (the _imp module):
+ def create_dynamic(spec):
+ name = spec.name
+ path = spec.origin
- def create_dynamic(spec):
- name = spec.name
- path = spec.origin
+ # Find an already loaded module that used single-phase init.
+ # For multi-phase initialization, mod is NULL, so a new module
+ # is always created.
+ mod = _PyImport_FindExtensionObject(name, name)
+ if mod:
+ return mod
- # Find an already loaded module that used single-phase init.
- # For multi-phase initialization, mod is NULL, so a new module
- # is always created.
- mod = _PyImport_FindExtensionObject(name, name)
- if mod:
- return mod
+ return _PyImport_LoadDynamicModuleWithSpec(spec)
- return _PyImport_LoadDynamicModuleWithSpec(spec)
+ def exec_dynamic(module):
+ if not isinstance(module, types.ModuleType):
+ # non-modules are skipped -- PyModule_GetDef fails on them
+ return
- def exec_dynamic(module):
- if not isinstance(module, types.ModuleType):
- # non-modules are skipped -- PyModule_GetDef fails on them
- return
+ def = PyModule_GetDef(module)
+ state = PyModule_GetState(module)
+ if state is NULL:
+ PyModule_ExecDef(module, def)
- def = PyModule_GetDef(module)
- state = PyModule_GetState(module)
- if state is NULL:
- PyModule_ExecDef(module, def)
+ def create_builtin(spec):
+ name = spec.name
- def create_builtin(spec):
- name = spec.name
+ # Find an already loaded module that used single-phase init.
+ # For multi-phase initialization, mod is NULL, so a new module
+ # is always created.
+ mod = _PyImport_FindExtensionObject(name, name)
+ if mod:
+ return mod
- # Find an already loaded module that used single-phase init.
- # For multi-phase initialization, mod is NULL, so a new module
- # is always created.
- mod = _PyImport_FindExtensionObject(name, name)
- if mod:
- return mod
+ for initname, initfunc in PyImport_Inittab:
+ if name == initname:
+ m = initfunc()
+ if isinstance(m, PyModuleDef):
+ def = m
+ return PyModule_FromDefAndSpec(def, spec)
+ else:
+ # fall back to single-phase initialization
+ module = m
+ _PyImport_FixupExtensionObject(module, name, name)
+ return module
- for initname, initfunc in PyImport_Inittab:
- if name == initname:
- m = initfunc()
- if isinstance(m, PyModuleDef):
- def = m
- return PyModule_FromDefAndSpec(def, spec)
- else:
- # fall back to single-phase initialization
- module = m
- _PyImport_FixupExtensionObject(module, name, name)
- return module
+Python/importdl.c::
- Python/importdl.c:
+def _PyImport_LoadDynamicModuleWithSpec(spec):
+ path = spec.origin
+ package, dot, name = spec.name.rpartition('.')
- def _PyImport_LoadDynamicModuleWithSpec(spec):
- path = spec.origin
- package, dot, name = spec.name.rpartition('.')
+ # see the "Non-ASCII module names" section for export_hook_name
+ hook_name = export_hook_name(name)
- # see the "Non-ASCII module names" section for export_hook_name
- hook_name = export_hook_name(name)
+ # call platform-specific function for loading exported function
+ # from shared library
+ exportfunc = _find_shared_funcptr(hook_name, path)
- # call platform-specific function for loading exported function
- # from shared library
- exportfunc = _find_shared_funcptr(hook_name, path)
+ m = exportfunc()
+ if isinstance(m, PyModuleDef):
+ def = m
+ return PyModule_FromDefAndSpec(def, spec)
- m = exportfunc()
- if isinstance(m, PyModuleDef):
- def = m
- return PyModule_FromDefAndSpec(def, spec)
+ module = m
- module = m
+ # fall back to single-phase initialization
+ ....
- # fall back to single-phase initialization
- ....
+Objects/moduleobject.c::
- Objects/moduleobject.c:
+def PyModule_FromDefAndSpec(def, spec):
+ name = spec.name
+ create = None
+ for slot, value in def.m_slots:
+ if slot == Py_mod_create:
+ create = value
+ if create:
+ m = create(spec, def)
+ else:
+ m = PyModule_New(name)
- def PyModule_FromDefAndSpec(def, spec):
- name = spec.name
- create = None
- for slot, value in def.m_slots:
- if slot == Py_mod_create:
- create = value
- if create:
- m = create(spec, def)
- else:
- m = PyModule_New(name)
+ if isinstance(m, types.ModuleType):
+ m.md_state = None
+ m.md_def = def
- if isinstance(m, types.ModuleType):
- m.md_state = None
- m.md_def = def
+ if def.m_methods:
+ PyModule_AddFunctions(m, def.m_methods)
+ if def.m_doc:
+ PyModule_SetDocString(m, def.m_doc)
- if def.m_methods:
- PyModule_AddFunctions(m, def.m_methods)
- if def.m_doc:
- PyModule_SetDocString(m, def.m_doc)
+def PyModule_ExecDef(module, def):
+ if isinstance(module, types.module_type):
+ if module.md_state is NULL:
+ # allocate a block of zeroed-out memory
+ module.md_state = _alloc(module.md_size)
- def PyModule_ExecDef(module, def):
- if isinstance(module, types.module_type):
- if module.md_state is NULL:
- # allocate a block of zeroed-out memory
- module.md_state = _alloc(module.md_size)
+ if def.m_slots is NULL:
+ return
- if def.m_slots is NULL:
- return
-
- for slot, value in def.m_slots:
- if slot == Py_mod_exec:
- value(module)
+ for slot, value in def.m_slots:
+ if slot == Py_mod_exec:
+ value(module)
Module Creation Phase
--
Repository URL: https://hg.python.org/peps
More information about the Python-checkins
mailing list