Author: Richard Plangger <planri...@gmail.com> Branch: py3.5-text-utf8 Changeset: r90406:cb8bf6a7d22d Date: 2017-02-27 16:42 +0100 http://bitbucket.org/pypy/pypy/changeset/cb8bf6a7d22d/
Log: (ronan, plan_rich) allow surrogates to be passed to __import__ 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 @@ -67,7 +67,7 @@ lib_pypy = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'lib_pypy') -@unwrap_spec(modulename='text0', level=int) +@unwrap_spec(modulename='fsencode', level=int) def importhook(space, modulename, w_globals=None, w_locals=None, w_fromlist=None, level=0): # A minimal version, that can only import builtin and lib_pypy modules! assert w_locals is w_globals 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 @@ -5,6 +5,7 @@ from pypy.interpreter.pycode import PyCode from pypy.module._io.interp_iobase import W_IOBase from pypy.interpreter.streamutil import wrap_streamerror +from pypy.interpreter.error import OperationError def extension_suffixes(space): @@ -72,7 +73,11 @@ return None def is_builtin(space, w_name): - name = space.text0_w(w_name) + try: + name = space.text0_w(w_name) + except OperationError: + return space.newint(0) + if name not in space.builtin_modules: return space.newint(0) if space.finditem(space.sys.get('modules'), w_name) is not None: diff --git a/pypy/module/imp/test/test_import.py b/pypy/module/imp/test/test_import.py --- a/pypy/module/imp/test/test_import.py +++ b/pypy/module/imp/test/test_import.py @@ -255,6 +255,10 @@ def test_import_keywords(self): __import__(name='sys', level=0) + def test_import_nonutf8_encodable(self): + exc = raises(ImportError, __import__, '\ud800') + assert exc.value.args[0].startswith("No module named ") + def test_import_by_filename(self): import pkg.a filename = pkg.a.__file__ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit