diff --git a/gluon/admin.py b/gluon/admin.py index 8a2f9277..8c70c348 100644 --- a/gluon/admin.py +++ b/gluon/admin.py @@ -59,8 +59,6 @@ def app_pack(app, request, raise_ex=False, filenames=None): w2p_pack(filename, apath(app, request), filenames=filenames) return filename except Exception as e: - import traceback - print(traceback.format_exc()) if raise_ex: raise return False diff --git a/gluon/compileapp.py b/gluon/compileapp.py index 5bedc04e..0ee9c18c 100644 --- a/gluon/compileapp.py +++ b/gluon/compileapp.py @@ -44,18 +44,15 @@ from functools import reduce logger = logging.getLogger("web2py") from gluon import rewrite from gluon.custom_import import custom_import_install - -try: - import py_compile -except: - logger.warning('unable to import py_compile') +import py_compile is_pypy = settings.global_settings.is_pypy is_gae = settings.global_settings.web2py_runtime_gae is_jython = settings.global_settings.is_jython - pjoin = os.path.join +marshal_header_size = 8 if PY2 else 12 + TEST_CODE = \ r""" def _TEST(): @@ -456,7 +453,8 @@ def save_pyc(filename): """ Bytecode compiles the file `filename` """ - py_compile.compile(filename) + cfile = "%sc" % filename + py_compile.compile(filename, cfile=cfile) def read_pyc(filename): @@ -470,7 +468,7 @@ def read_pyc(filename): data = read_file(filename, 'rb') if not is_gae and data[:4] != imp.get_magic(): raise SystemError('compiled code is incompatible') - return marshal.loads(data[8:]) + return marshal.loads(data[marshal_header_size:]) def compile_views(folder, skip_failed_views=False): diff --git a/gluon/fileutils.py b/gluon/fileutils.py index 5ccdfaac..27fe8a8d 100644 --- a/gluon/fileutils.py +++ b/gluon/fileutils.py @@ -97,14 +97,19 @@ def parse_version(version): return version_tuple -def read_file(filename, mode='r'): - """Returns content from filename, making sure to close the file explicitly - on exit. - """ +def open_file(filename, mode): if PY2 or 'b' in mode: f = open(filename, mode) else: f = open(filename, mode, encoding="utf8") + return f + + +def read_file(filename, mode='r'): + """Returns content from filename, making sure to close the file explicitly + on exit. + """ + f = open_file(filename, mode) try: return f.read() finally: @@ -115,10 +120,7 @@ def write_file(filename, value, mode='w'): """Writes to filename, making sure to close the file explicitly on exit. """ - if PY2: - f = open(filename, mode) - else: - f = open(filename, mode, encoding="utf8") + f = open_file(filename, mode) try: return f.write(value) finally: