scanny / python-pptx

Create Open XML PowerPoint documents in Python
MIT License
2.26k stars 498 forks source link

ValueError: ZIP does not support timestamps before 1980 #958

Open kasgel opened 3 months ago

kasgel commented 3 months ago

Currently when I try to use python-pptx on Python 3.9 to save a new .pptx file, I get the following error:

Traceback (most recent call last):
  File "test.py", line 19, in main
    prs.save('test.pptx')
  File "/packages/pptx/presentation.py", line 39, in save
    self.part.save(file)
  File "/packages/pptx/parts/presentation.py", line 107, in save
    self.package.save(path_or_stream)
  File "/packages/pptx/opc/package.py", line 153, in save
    PackageWriter.write(pkg_file, self._rels, tuple(self.iter_parts()))
  File "/packages/pptx/opc/serialized.py", line 76, in write
    cls(pkg_file, pkg_rels, parts)._write()
  File "/packages/pptx/opc/serialized.py", line 81, in _write
    self._write_content_types_stream(phys_writer)
  File "/packages/pptx/opc/serialized.py", line 91, in _write_content_types_stream
    phys_writer.write(
  File "/packages/pptx/opc/serialized.py", line 220, in write
    self._zipf.writestr(pack_uri.membername, blob)
  File "/usr/local/lib/python3.9/zipfile.py", line 1783, in writestr
    zinfo = ZipInfo(filename=zinfo_or_arcname,
  File "/usr/local/lib/python3.9/zipfile.py", line 361, in __init__
    raise ValueError('ZIP does not support timestamps before 1980')
ValueError: ZIP does not support timestamps before 1980

This seems to be related to following: https://github.com/pypa/pip/issues/9910

I believe the solution is to update python-pptx to create a new zipfile.ZipFile with strict_timestamps=False

scanny commented 3 months ago

Please post code that reproduces this error for you. Also state your exact Python version.