Author: Manuel Jacob <m...@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) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit