Author: Ronan Lamy <[email protected]>
Branch: py3k
Changeset: r84182:f8f5beaa6782
Date: 2016-05-04 01:23 +0100
http://bitbucket.org/pypy/pypy/changeset/f8f5beaa6782/
Log: Update zipimport for the change in pyc format (fixes zipimport -A
tests)
diff --git a/pypy/module/zipimport/interp_zipimport.py
b/pypy/module/zipimport/interp_zipimport.py
--- a/pypy/module/zipimport/interp_zipimport.py
+++ b/pypy/module/zipimport/interp_zipimport.py
@@ -200,7 +200,8 @@
timestamp = importing._get_long(buf[4:8])
if not self.can_use_pyc(space, filename, magic, timestamp):
return None
- buf = buf[8:] # XXX ugly copy, should use sequential read instead
+ # zipimport ignores the size field
+ buf = buf[12:] # XXX ugly copy, should use sequential read instead
w_mod = w(Module(space, w(modname)))
real_name = self.filename + os.path.sep + self.corr_zname(filename)
space.setattr(w_mod, w('__loader__'), space.wrap(self))
@@ -305,8 +306,9 @@
if not self.can_use_pyc(space, filename + ext,
magic, timestamp):
continue
+ # zipimport ignores the size field
code_w = importing.read_compiled_module(
- space, filename + ext, source[8:])
+ space, filename + ext, source[12:])
else:
co_filename = self.make_co_filename(filename+ext)
code_w = importing.parse_source_module(
@@ -327,7 +329,7 @@
w_data = self.get_data(space, fname)
# XXX CPython does not handle the coding cookie either.
return space.call_method(w_data, "decode",
- space.wrap("utf-8"))
+ space.wrap("utf-8"))
else:
found = True
if found:
diff --git a/pypy/module/zipimport/test/test_zipimport.py
b/pypy/module/zipimport/test/test_zipimport.py
--- a/pypy/module/zipimport/test/test_zipimport.py
+++ b/pypy/module/zipimport/test/test_zipimport.py
@@ -93,8 +93,9 @@
def get_file():
return __file__"""
data = marshal.dumps(compile(source, 'uuu.py', 'exec'))
+ size = len(data).to_bytes(4, 'little', signed=True)
- return imp.get_magic() + mtimeb + data
+ return imp.get_magic() + mtimeb + size + data
def w_now_in_the_future(self, delta):
self.now += delta
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit