[pypy-commit] pypy default: Remove objspace.usepycfiles option.
mjacob
pypy.commits at gmail.com
Thu Feb 25 09:43:54 EST 2016
Author: Manuel Jacob <me at manueljacob.de>
Branch:
Changeset: r82506:bc2f7f711496
Date: 2016-02-25 15:44 +0100
http://bitbucket.org/pypy/pypy/changeset/bc2f7f711496/
Log: Remove objspace.usepycfiles option.
This option was needed for the sandbox feature, where it might not
be allowed to write to the file system. Nowadays Python has a
sys.dont_write_bytecode flag, which can be used for that. By
default, this flags is `False`, unless when the sandbox feature is
enabled; in this case it's set to `True`.
diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -170,12 +170,8 @@
cmdline="--translationmodules",
suggests=[("objspace.allworkingmodules", False)]),
- BoolOption("usepycfiles", "Write and read pyc files when importing",
- default=True),
-
BoolOption("lonepycfiles", "Import pyc files with no matching py file",
- default=False,
- requires=[("objspace.usepycfiles", True)]),
+ default=False),
StrOption("soabi",
"Tag to differentiate extension modules built for different Python interpreters",
diff --git a/pypy/goal/targetpypystandalone.py b/pypy/goal/targetpypystandalone.py
--- a/pypy/goal/targetpypystandalone.py
+++ b/pypy/goal/targetpypystandalone.py
@@ -277,7 +277,6 @@
if config.translation.sandbox:
config.objspace.lonepycfiles = False
- config.objspace.usepycfiles = False
config.translating = True
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
@@ -85,7 +85,7 @@
# The "imp" module does not respect this, and is allowed to find
# lone .pyc files.
# check the .pyc file
- if space.config.objspace.usepycfiles and space.config.objspace.lonepycfiles:
+ if space.config.objspace.lonepycfiles:
pycfile = filepart + ".pyc"
if file_exists(pycfile):
# existing .pyc file
@@ -888,17 +888,11 @@
"""
w = space.wrap
- if space.config.objspace.usepycfiles:
- src_stat = os.fstat(fd)
- cpathname = pathname + 'c'
- mtime = int(src_stat[stat.ST_MTIME])
- mode = src_stat[stat.ST_MODE]
- stream = check_compiled_module(space, cpathname, mtime)
- else:
- cpathname = None
- mtime = 0
- mode = 0
- stream = None
+ src_stat = os.fstat(fd)
+ cpathname = pathname + 'c'
+ mtime = int(src_stat[stat.ST_MTIME])
+ mode = src_stat[stat.ST_MODE]
+ stream = check_compiled_module(space, cpathname, mtime)
if stream:
# existing and up-to-date .pyc file
@@ -913,7 +907,7 @@
else:
code_w = parse_source_module(space, pathname, source)
- if space.config.objspace.usepycfiles and write_pyc:
+ if write_pyc:
if not space.is_true(space.sys.get('dont_write_bytecode')):
write_compiled_module(space, code_w, cpathname, mode, mtime)
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
@@ -123,7 +123,7 @@
stream.try_to_find_file_descriptor())
finally:
stream.close()
- if space.config.objspace.usepycfiles:
+ 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')
@@ -1349,8 +1349,14 @@
class AppTestWriteBytecode(object):
+ spaceconfig = {
+ "translation.sandbox": False
+ }
+
def setup_class(cls):
cls.saved_modules = _setup(cls.space)
+ sandbox = cls.spaceconfig['translation.sandbox']
+ cls.w_sandbox = cls.space.wrap(sandbox)
def teardown_class(cls):
_teardown(cls.space, cls.saved_modules)
@@ -1364,7 +1370,7 @@
import os.path
from test_bytecode import a
assert a.__file__.endswith('a.py')
- assert os.path.exists(a.__file__ + 'c')
+ assert os.path.exists(a.__file__ + 'c') == (not self.sandbox)
def test_write_bytecode(self):
import os.path
@@ -1383,15 +1389,15 @@
assert not os.path.exists(c.__file__ + 'c')
-class AppTestNoPycFile(object):
+class AppTestWriteBytecodeSandbox(AppTestWriteBytecode):
spaceconfig = {
- "objspace.usepycfiles": False,
- "objspace.lonepycfiles": False
+ "translation.sandbox": True
}
+
+
+class _AppTestLonePycFileBase(object):
def setup_class(cls):
- usepycfiles = cls.spaceconfig['objspace.usepycfiles']
lonepycfiles = cls.spaceconfig['objspace.lonepycfiles']
- cls.w_usepycfiles = cls.space.wrap(usepycfiles)
cls.w_lonepycfiles = cls.space.wrap(lonepycfiles)
cls.saved_modules = _setup(cls.space)
@@ -1400,10 +1406,7 @@
def test_import_possibly_from_pyc(self):
from compiled import x
- if self.usepycfiles:
- assert x.__file__.endswith('x.pyc')
- else:
- assert x.__file__.endswith('x.py')
+ assert x.__file__.endswith('x.pyc')
try:
from compiled import lone
except ImportError:
@@ -1412,15 +1415,13 @@
assert self.lonepycfiles, "should not have found 'lone.pyc'"
assert lone.__file__.endswith('lone.pyc')
-class AppTestNoLonePycFile(AppTestNoPycFile):
+class AppTestNoLonePycFile(_AppTestLonePycFileBase):
spaceconfig = {
- "objspace.usepycfiles": True,
"objspace.lonepycfiles": False
}
-class AppTestLonePycFile(AppTestNoPycFile):
+class AppTestLonePycFile(_AppTestLonePycFileBase):
spaceconfig = {
- "objspace.usepycfiles": True,
"objspace.lonepycfiles": True
}
diff --git a/pypy/module/sys/__init__.py b/pypy/module/sys/__init__.py
--- a/pypy/module/sys/__init__.py
+++ b/pypy/module/sys/__init__.py
@@ -77,7 +77,7 @@
'meta_path' : 'space.wrap([])',
'path_hooks' : 'space.wrap([])',
'path_importer_cache' : 'space.wrap({})',
- 'dont_write_bytecode' : 'space.w_False',
+ 'dont_write_bytecode' : 'space.wrap(space.config.translation.sandbox)',
'getdefaultencoding' : 'interp_encoding.getdefaultencoding',
'setdefaultencoding' : 'interp_encoding.setdefaultencoding',
More information about the pypy-commit
mailing list