Exemple #1
0
def load_source(space, w_modulename, w_filename, w_file=None):
    filename = space.str_w(w_filename)

    stream = get_file(space, w_file, filename, "U")

    w_mod = space.wrap(Module(space, w_modulename))
    importing._prepare_module(space, w_mod, filename, None)

    importing.load_source_module(space, w_modulename, w_mod, filename, stream.readall())
    if space.is_w(w_file, space.w_None):
        stream.close()
    return w_mod
Exemple #2
0
def load_source(space, w_modulename, w_filename, w_file=None):
    filename = space.str0_w(w_filename)

    stream = get_file(space, w_file, filename, 'U')

    w_mod = space.wrap(Module(space, w_modulename))
    importing._prepare_module(space, w_mod, filename, None)

    importing.load_source_module(space, w_modulename, w_mod, filename,
                                 stream.readall())
    if space.is_w(w_file, space.w_None):
        stream.close()
    return w_mod
Exemple #3
0
def load_source(space, w_modulename, w_filename, w_file=None):
    filename = space.fsencode_w(w_filename)

    stream = get_file(space, w_file, filename, 'U')

    w_mod = space.wrap(Module(space, w_modulename))
    importing._prepare_module(space, w_mod, filename, None)

    importing.load_source_module(space, w_modulename, w_mod, filename,
                                 stream.readall(),
                                 stream.try_to_find_file_descriptor())
    if space.is_none(w_file):
        stream.close()
    return w_mod
Exemple #4
0
def load_source(space, w_modulename, w_filename, w_file=None):
    filename = space.str0_w(w_filename)

    stream = get_file(space, w_file, filename, 'U')

    w_mod = space.wrap(Module(space, w_modulename))
    importing._prepare_module(space, w_mod, filename, None)

    importing.load_source_module(
        space, w_modulename, w_mod,
        filename, stream.readall(), stream.try_to_find_file_descriptor())
    if space.is_none(w_file):
        stream.close()
    return w_mod
Exemple #5
0
 def test_load_source_module_dont_write_bytecode(self):
     space = self.space
     w_modulename = space.wrap("somemodule")
     w_mod = space.wrap(Module(space, w_modulename))
     pathname = _testfilesource()
     stream = streamio.open_file_as_stream(pathname, "r")
     try:
         space.setattr(space.sys, space.wrap("dont_write_bytecode"), space.w_True)
         w_ret = importing.load_source_module(
             space, w_modulename, w_mod, pathname, stream.readall(), stream.try_to_find_file_descriptor()
         )
     finally:
         space.setattr(space.sys, space.wrap("dont_write_bytecode"), space.w_False)
         stream.close()
     cpathname = udir.join("test.pyc")
     assert not cpathname.check()
Exemple #6
0
 def test_load_source_module_nowrite(self):
     space = self.space
     w_modulename = space.wrap('somemodule')
     w_mod = space.wrap(Module(space, w_modulename))
     pathname = _testfilesource()
     stream = streamio.open_file_as_stream(pathname, "r")
     try:
         w_ret = importing.load_source_module(
             space, w_modulename, w_mod,
             pathname, stream.readall(),
             stream.try_to_find_file_descriptor(),
             write_pyc=False)
     finally:
         stream.close()
     cpathname = udir.join('test.pyc')
     assert not cpathname.check()
Exemple #7
0
 def test_load_source_module_nowrite(self):
     space = self.space
     w_modulename = space.wrap('somemodule')
     w_mod = space.wrap(Module(space, w_modulename))
     pathname = _testfilesource()
     stream = streamio.open_file_as_stream(pathname, "r")
     try:
         w_ret = importing.load_source_module(
             space, w_modulename, w_mod,
             pathname, stream.readall(),
             stream.try_to_find_file_descriptor(),
             write_pyc=False)
     finally:
         stream.close()
     cpathname = udir.join('test.pyc')
     assert not cpathname.check()
Exemple #8
0
    def test_load_source_module_syntaxerror(self):
        # No .pyc file on SyntaxError
        space = self.space
        w_modulename = space.wrap('somemodule')
        w_mod = space.wrap(Module(space, w_modulename))
        pathname = _testfilesource(source="<Syntax Error>")
        stream = streamio.open_file_as_stream(pathname, "r")
        try:
            w_ret = importing.load_source_module(space, w_modulename, w_mod,
                                                 pathname, stream.readall())
        except OperationError:
            # OperationError("Syntax Error")
            pass
        stream.close()

        cpathname = udir.join('test.pyc')
        assert not cpathname.check()
Exemple #9
0
 def test_load_source_module_dont_write_bytecode(self):
     space = self.space
     w_modulename = space.wrap('somemodule')
     w_mod = space.wrap(Module(space, w_modulename))
     pathname = _testfilesource()
     stream = streamio.open_file_as_stream(pathname, "r")
     try:
         space.setattr(space.sys, space.wrap('dont_write_bytecode'),
                       space.w_True)
         w_ret = importing.load_source_module(space, w_modulename, w_mod,
                                              pathname, stream.readall())
     finally:
         space.setattr(space.sys, space.wrap('dont_write_bytecode'),
                       space.w_False)
         stream.close()
     cpathname = udir.join('test.pyc')
     assert not cpathname.check()
Exemple #10
0
    def test_load_source_module_importerror(self):
        # the .pyc file is created before executing the module
        space = self.space
        w_modulename = space.wrap('somemodule')
        w_mod = space.wrap(Module(space, w_modulename))
        pathname = _testfilesource(source="a = unknown_name")
        stream = streamio.open_file_as_stream(pathname, "r")
        try:
            w_ret = importing.load_source_module(space, w_modulename, w_mod,
                                                 pathname, stream.readall())
        except OperationError:
            # OperationError("NameError", "global name 'unknown_name' is not defined")
            pass
        stream.close()

        # And the .pyc has been generated
        cpathname = udir.join('test.pyc')
        assert cpathname.check()
Exemple #11
0
    def test_load_source_module_syntaxerror(self):
        # No .pyc file on SyntaxError
        space = self.space
        w_modulename = space.wrap("somemodule")
        w_mod = space.wrap(Module(space, w_modulename))
        pathname = _testfilesource(source="<Syntax Error>")
        stream = streamio.open_file_as_stream(pathname, "r")
        try:
            w_ret = importing.load_source_module(
                space, w_modulename, w_mod, pathname, stream.readall(), stream.try_to_find_file_descriptor()
            )
        except OperationError:
            # OperationError("Syntax Error")
            pass
        stream.close()

        cpathname = udir.join("test.pyc")
        assert not cpathname.check()
Exemple #12
0
    def test_load_source_module(self):
        space = self.space
        w_modulename = space.wrap('somemodule')
        w_mod = space.wrap(Module(space, w_modulename))
        pathname = _testfilesource()
        stream = streamio.open_file_as_stream(pathname, "r")
        try:
            w_ret = importing.load_source_module(space, w_modulename, w_mod,
                                                 pathname, stream.readall())
        finally:
            stream.close()
        assert w_mod is w_ret
        w_ret = space.getattr(w_mod, space.wrap('x'))
        ret = space.int_w(w_ret)
        assert ret == 42

        cpathname = udir.join('test.pyc')
        assert cpathname.check()
        cpathname.remove()
Exemple #13
0
    def test_load_source_module_importerror(self):
        # the .pyc file is created before executing the module
        space = self.space
        w_modulename = space.wrap("somemodule")
        w_mod = space.wrap(Module(space, w_modulename))
        pathname = _testfilesource(source="a = unknown_name")
        stream = streamio.open_file_as_stream(pathname, "r")
        try:
            w_ret = importing.load_source_module(
                space, w_modulename, w_mod, pathname, stream.readall(), stream.try_to_find_file_descriptor()
            )
        except OperationError:
            # OperationError("NameError", "global name 'unknown_name' is not defined")
            pass
        stream.close()

        # And the .pyc has been generated
        cpathname = udir.join("test.pyc")
        assert cpathname.check()
Exemple #14
0
    def test_load_source_module(self):
        space = self.space
        w_modulename = space.wrap("somemodule")
        w_mod = space.wrap(Module(space, w_modulename))
        pathname = _testfilesource()
        stream = streamio.open_file_as_stream(pathname, "r")
        try:
            w_ret = importing.load_source_module(
                space, w_modulename, w_mod, pathname, stream.readall(), stream.try_to_find_file_descriptor()
            )
        finally:
            stream.close()
        assert w_mod is w_ret
        w_ret = space.getattr(w_mod, space.wrap("x"))
        ret = space.int_w(w_ret)
        assert ret == 42

        cpathname = udir.join("test.pyc")
        assert cpathname.check()
        cpathname.remove()
Exemple #15
0
def _load_source_module(space, w_modname, w_mod, *args, **kwds):
    kwds.setdefault("check_afterwards", False)
    return importing.load_source_module(space, w_modname, w_mod, *args, **kwds)
Exemple #16
0
def setup_directory_structure(space):
    root = setuppkg(
        "",
        a="imamodule = 1\ninpackage = 0",
        b="imamodule = 1\ninpackage = 0",
        ambig="imamodule = 1",
        test_reload="def test():\n    raise ValueError\n",
        infinite_reload="import infinite_reload; reload(infinite_reload)",
    )
    root.ensure("notapackage", dir=1)  # empty, no __init__.py
    setuppkg(
        "pkg",
        a="imamodule = 1\ninpackage = 1",
        relative_a="import a",
        abs_b="import b",
        abs_x_y="import x.y",
        abs_sys="import sys",
        string="inpackage = 1",
        errno="",
        absolute="from __future__ import absolute_import\nimport string",
        relative_b=
        "from __future__ import absolute_import\nfrom . import string",
        relative_c=
        "from __future__ import absolute_import\nfrom .string import inpackage",
    )
    setuppkg(
        "pkg.pkg1",
        a='',
        relative_d=
        "from __future__ import absolute_import\nfrom ..string import inpackage",
        relative_e=
        "from __future__ import absolute_import\nfrom .. import string",
    )
    setuppkg("pkg.pkg2", a='', b='')
    setuppkg("pkg_r", inpkg="import x.y")
    setuppkg("pkg_r.x")
    setuppkg("x", y='')
    setuppkg("ambig", __init__="imapackage = 1")
    setuppkg(
        "pkg_relative_a",
        __init__="import a",
        a="imamodule = 1\ninpackage = 1",
    )
    setuppkg("pkg_substituting",
             __init__="import sys, pkg_substituted\n"
             "print 'TOTO', __name__\n"
             "sys.modules[__name__] = pkg_substituted")
    setuppkg("pkg_substituted", mod='')
    setuppkg("evil_pkg",
             evil="import sys\n"
             "from evil_pkg import good\n"
             "sys.modules['evil_pkg.evil'] = good",
             good="a = 42")
    p = setuppkg("readonly", x='')
    p = setuppkg("pkg_univnewlines")
    p.join('__init__.py').write('a=5\nb=6\rc="""hello\r\nworld"""\r',
                                mode='wb')
    p.join('mod.py').write('a=15\nb=16\rc="""foo\r\nbar"""\r', mode='wb')

    # create compiled/x.py and a corresponding pyc file
    p = setuppkg("compiled", x="x = 84")
    if conftest.option.runappdirect:
        import marshal, stat, struct, os, imp
        code = py.code.Source(p.join("x.py").read()).compile()
        s3 = marshal.dumps(code)
        s2 = struct.pack("i", os.stat(str(p.join("x.py")))[stat.ST_MTIME])
        p.join("x.pyc").write(imp.get_magic() + s2 + s3, mode='wb')
    else:
        w = space.wrap
        w_modname = w("compiled.x")
        filename = str(p.join("x.py"))
        stream = streamio.open_file_as_stream(filename, "r")
        try:
            importing.load_source_module(space, w_modname,
                                         w(importing.Module(space, w_modname)),
                                         filename, stream.readall())
        finally:
            stream.close()
        if space.config.objspace.usepycfiles:
            # also create a lone .pyc file
            p.join('lone.pyc').write(p.join('x.pyc').read(mode='rb'),
                                     mode='wb')

    return str(root)
Exemple #17
0
def setup_directory_structure(space):
    root = setuppkg("",
                    a = "imamodule = 1\ninpackage = 0",
                    b = "imamodule = 1\ninpackage = 0",
                    ambig = "imamodule = 1",
                    test_reload = "def test():\n    raise ValueError\n",
                    infinite_reload = "import infinite_reload; reload(infinite_reload)",
                    del_sys_module = "import sys\ndel sys.modules['del_sys_module']\n",
                    _md5 = "hello_world = 42\n",
                    gc = "should_never_be_seen = 42\n",
                    )
    root.ensure("notapackage", dir=1)    # empty, no __init__.py
    setuppkg("pkg",
             a          = "imamodule = 1\ninpackage = 1",
             relative_a = "import a",
             abs_b      = "import b",
             abs_x_y    = "import x.y",
             abs_sys    = "import sys",
             string     = "inpackage = 1",
             errno      = "",
             absolute   = "from __future__ import absolute_import\nimport string",
             relative_b = "from __future__ import absolute_import\nfrom . import string",
             relative_c = "from __future__ import absolute_import\nfrom .string import inpackage",
             relative_f = "from .imp import get_magic",
             relative_g = "import imp; from .imp import get_magic",
             )
    setuppkg("pkg.pkg1",
             __init__   = 'from . import a',
             a          = '',
             relative_d = "from __future__ import absolute_import\nfrom ..string import inpackage",
             relative_e = "from __future__ import absolute_import\nfrom .. import string",
             relative_g = "from .. import pkg1\nfrom ..pkg1 import b",
             b          = "insubpackage = 1",
             )
    setuppkg("pkg.pkg2", a='', b='')
    setuppkg("pkg_r", inpkg = "import x.y")
    setuppkg("pkg_r.x")
    setuppkg("x", y='')
    setuppkg("ambig", __init__ = "imapackage = 1")
    setuppkg("pkg_relative_a",
             __init__ = "import a",
             a        = "imamodule = 1\ninpackage = 1",
             )
    setuppkg("pkg_substituting",
             __init__ = "import sys, pkg_substituted\n"
                        "print 'TOTO', __name__\n"
                        "sys.modules[__name__] = pkg_substituted")
    setuppkg("pkg_substituted", mod='')
    setuppkg("evil_pkg",
             evil = "import sys\n"
                      "from evil_pkg import good\n"
                      "sys.modules['evil_pkg.evil'] = good",
             good = "a = 42")
    p = setuppkg("readonly", x='')
    p = setuppkg("pkg_univnewlines")
    p.join('__init__.py').write(
        'a=5\nb=6\rc="""hello\r\nworld"""\r', mode='wb')
    p.join('mod.py').write(
        'a=15\nb=16\rc="""foo\r\nbar"""\r', mode='wb')

    # create compiled/x.py and a corresponding pyc file
    p = setuppkg("compiled", x = "x = 84")
    if conftest.option.runappdirect:
        import marshal, stat, struct, os, imp
        code = py.code.Source(p.join("x.py").read()).compile()
        s3 = marshal.dumps(code)
        s2 = struct.pack("i", os.stat(str(p.join("x.py")))[stat.ST_MTIME])
        p.join("x.pyc").write(imp.get_magic() + s2 + s3, mode='wb')
    else:
        w = space.wrap
        w_modname = w("compiled.x")
        filename = str(p.join("x.py"))
        stream = streamio.open_file_as_stream(filename, "r")
        try:
            importing.load_source_module(
                space, w_modname, w(importing.Module(space, w_modname)),
                filename, stream.readall(),
                stream.try_to_find_file_descriptor())
        finally:
            stream.close()
        if space.config.objspace.usepycfiles:
            # also create a lone .pyc file
            p.join('lone.pyc').write(p.join('x.pyc').read(mode='rb'),
                                     mode='wb')

    # create a .pyw file
    p = setuppkg("windows", x = "x = 78")
    try:
        p.join('x.pyw').remove()
    except py.error.ENOENT:
        pass
    p.join('x.py').rename(p.join('x.pyw'))

    return str(root)
Exemple #18
0
def setup_directory_structure(space):
    root = setuppkg(
        "",
        a="imamodule = 1\ninpackage = 0",
        b="imamodule = 1\ninpackage = 0",
        ambig="imamodule = 1",
        test_reload="def test():\n    raise ValueError\n",
        infinite_reload="import infinite_reload; reload(infinite_reload)",
        del_sys_module="import sys\ndel sys.modules['del_sys_module']\n",
        _md5="hello_world = 42\n",
        gc="should_never_be_seen = 42\n",
    )
    root.ensure("notapackage", dir=1)  # empty, no __init__.py
    setuppkg(
        "pkg",
        a="imamodule = 1\ninpackage = 1",
        relative_a="import a",
        abs_b="import b",
        abs_x_y="import x.y",
        abs_sys="import sys",
        string="inpackage = 1",
        errno="",
        absolute="from __future__ import absolute_import\nimport string",
        relative_b=
        "from __future__ import absolute_import\nfrom . import string",
        relative_c=
        "from __future__ import absolute_import\nfrom .string import inpackage",
        relative_f="from .imp import get_magic",
        relative_g="import imp; from .imp import get_magic",
    )
    setuppkg(
        "pkg.pkg1",
        __init__='from . import a',
        a='',
        relative_d=
        "from __future__ import absolute_import\nfrom ..string import inpackage",
        relative_e=
        "from __future__ import absolute_import\nfrom .. import string",
        relative_g="from .. import pkg1\nfrom ..pkg1 import b",
        b="insubpackage = 1",
    )
    setuppkg("pkg.pkg2", a='', b='')
    setuppkg("pkg.withall",
             __init__="__all__ = ['foobar']",
             foobar="found = 123")
    setuppkg("pkg.withoutall", __init__="", foobar="found = 123")
    setuppkg("pkg.bogusall", __init__="__all__ = 42")
    setuppkg("pkg_r", inpkg="import x.y")
    setuppkg("pkg_r.x")
    setuppkg("x", y='')
    setuppkg("ambig", __init__="imapackage = 1")
    setuppkg(
        "pkg_relative_a",
        __init__="import a",
        a="imamodule = 1\ninpackage = 1",
    )
    setuppkg("pkg_substituting",
             __init__="import sys, pkg_substituted\n"
             "print 'TOTO', __name__\n"
             "sys.modules[__name__] = pkg_substituted")
    setuppkg("pkg_substituted", mod='')
    setuppkg("evil_pkg",
             evil="import sys\n"
             "from evil_pkg import good\n"
             "sys.modules['evil_pkg.evil'] = good",
             good="a = 42")
    p = setuppkg("readonly", x='')
    p = setuppkg("pkg_univnewlines")
    p.join('__init__.py').write('a=5\nb=6\rc="""hello\r\nworld"""\r',
                                mode='wb')
    p.join('mod.py').write('a=15\nb=16\rc="""foo\r\nbar"""\r', mode='wb')
    setuppkg("test_bytecode", a='', b='', c='')

    # create compiled/x.py and a corresponding pyc file
    p = setuppkg("compiled", x="x = 84")
    if conftest.option.runappdirect:
        import marshal, stat, struct, os, imp
        code = py.code.Source(p.join("x.py").read()).compile()
        s3 = marshal.dumps(code)
        s2 = struct.pack("<i", os.stat(str(p.join("x.py")))[stat.ST_MTIME])
        p.join("x.pyc").write(imp.get_magic() + s2 + s3, mode='wb')
    else:
        w = space.wrap
        w_modname = w("compiled.x")
        filename = str(p.join("x.py"))
        stream = streamio.open_file_as_stream(filename, "r")
        try:
            importing.load_source_module(space, w_modname,
                                         w(importing.Module(space, w_modname)),
                                         filename, stream.readall(),
                                         stream.try_to_find_file_descriptor())
        finally:
            stream.close()
        if not space.config.translation.sandbox:
            # also create a lone .pyc file
            p.join('lone.pyc').write(p.join('x.pyc').read(mode='rb'),
                                     mode='wb')

    # create a .pyw file
    p = setuppkg("windows", x="x = 78")
    try:
        p.join('x.pyw').remove()
    except py.error.ENOENT:
        pass
    p.join('x.py').rename(p.join('x.pyw'))

    return str(root)