[pypy-commit] pypy default: Clean up extension module loading slightly in anticipation of upcoming py3.5 changes.
mjacob
pypy.commits at gmail.com
Tue Mar 21 18:17:21 EDT 2017
Author: Manuel Jacob <me at manueljacob.de>
Branch:
Changeset: r90781:b9542a9fa14e
Date: 2017-03-21 22:58 +0100
http://bitbucket.org/pypy/pypy/changeset/b9542a9fa14e/
Log: Clean up extension module loading slightly in anticipation of
upcoming py3.5 changes.
diff --git a/pypy/module/_cffi_backend/cffi1_module.py b/pypy/module/_cffi_backend/cffi1_module.py
--- a/pypy/module/_cffi_backend/cffi1_module.py
+++ b/pypy/module/_cffi_backend/cffi1_module.py
@@ -48,3 +48,4 @@
w_modules_dict = space.sys.get('modules')
space.setitem(w_modules_dict, w_name, module)
space.setitem(w_modules_dict, space.newtext(name + '.lib'), lib)
+ return module
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -1469,10 +1469,6 @@
copy_header_files(cts, trunk_include, use_micronumpy)
-def _load_from_cffi(space, name, path, initptr):
- from pypy.module._cffi_backend import cffi1_module
- cffi1_module.load_cffi1_module(space, name, path, initptr)
-
@unwrap_spec(path='text', name='text')
def load_extension_module(space, path, name):
# note: this is used both to load CPython-API-style C extension
@@ -1505,11 +1501,11 @@
pass
else:
try:
- _load_from_cffi(space, name, path, initptr)
+ from pypy.module._cffi_backend import cffi1_module
+ return cffi1_module.load_cffi1_module(space, name, path, initptr)
except:
rdynload.dlclose(dll)
raise
- return
#
if space.config.objspace.usemodules.cpyext:
also_look_for = 'init%s' % (basename,)
@@ -1518,8 +1514,7 @@
except KeyError:
pass
else:
- load_cpyext_module(space, name, path, dll, initptr)
- return
+ return load_cpyext_module(space, name, path, dll, initptr)
if look_for is not None:
look_for += ' or ' + also_look_for
else:
@@ -1535,9 +1530,10 @@
space.getbuiltinmodule("cpyext") # mandatory to init cpyext
state = space.fromcache(State)
- if state.find_extension(name, path) is not None:
+ w_mod = state.find_extension(name, path)
+ if w_mod is not None:
rdynload.dlclose(dll)
- return
+ return w_mod
old_context = state.package_context
state.package_context = name, path
try:
@@ -1546,7 +1542,8 @@
state.check_and_raise_exception()
finally:
state.package_context = old_context
- state.fixup_extension(name, path)
+ w_mod = state.fixup_extension(name, path)
+ return w_mod
@specialize.ll()
def generic_cpy_call(space, func, *args):
diff --git a/pypy/module/cpyext/state.py b/pypy/module/cpyext/state.py
--- a/pypy/module/cpyext/state.py
+++ b/pypy/module/cpyext/state.py
@@ -165,6 +165,7 @@
w_dict = w_mod.getdict(space)
w_copy = space.call_method(w_dict, 'copy')
self.extensions[path] = w_copy
+ return w_mod
def _rawrefcount_perform(space):
diff --git a/pypy/module/imp/importing.py b/pypy/module/imp/importing.py
--- a/pypy/module/imp/importing.py
+++ b/pypy/module/imp/importing.py
@@ -616,7 +616,7 @@
from pypy.module.cpyext.api import load_extension_module
log_pyverbose(space, 1, "import %s # from %s\n" %
(modulename, filename))
- load_extension_module(space, filename, modulename)
+ return load_extension_module(space, filename, modulename)
# NB. cpyext.api.load_extension_module() can also delegate to _cffi_backend
@jit.dont_look_inside
@@ -680,8 +680,8 @@
pass
return w_mod
elif find_info.modtype == C_EXTENSION and has_so_extension(space):
- load_c_extension(space, find_info.filename, space.text_w(w_modulename))
- return check_sys_modules(space, w_modulename)
+ return load_c_extension(space, find_info.filename,
+ space.text_w(w_modulename))
except OperationError:
w_mods = space.sys.get('modules')
space.call_method(w_mods, 'pop', w_modulename, space.w_None)
diff --git a/pypy/module/imp/interp_imp.py b/pypy/module/imp/interp_imp.py
--- a/pypy/module/imp/interp_imp.py
+++ b/pypy/module/imp/interp_imp.py
@@ -136,8 +136,8 @@
def load_dynamic(space, w_modulename, filename, w_file=None):
if not importing.has_so_extension(space):
raise oefmt(space.w_ImportError, "Not implemented")
- importing.load_c_extension(space, filename, space.text_w(w_modulename))
- return importing.check_sys_modules(space, w_modulename)
+ return importing.load_c_extension(space, filename,
+ space.text_w(w_modulename))
def new_module(space, w_name):
return Module(space, w_name, add_package=False)
More information about the pypy-commit
mailing list