← retour aux snippets

gzip: sorties reproductibles avec mtime=0

Fixer mtime à 0 pour des octets gzip identiques à contenu égal.

python compression #gzip#mtime#reproducible

objectif

Fixer mtime à 0 pour des octets gzip identiques à contenu égal.

code minimal

import gzip, io
def comp(data: bytes) -> bytes:
    buf = io.BytesIO()
    with gzip.GzipFile(fileobj=buf, mode="wb", mtime=0) as f:
        f.write(data)
    return buf.getvalue()
a, b = comp(b"x"), comp(b"x")
print(a == b)  # attendu: True

utilisation

import gzip, io
buf = io.BytesIO()
with gzip.GzipFile(fileobj=buf, mode="wb", mtime=0) as f:
    f.write(b"hello")
print(buf.getvalue().startswith(b"\x1f\x8b"))

variante(s) utile(s)

import gzip
print(callable(gzip.GzipFile))

notes

  • mtime=0 neutralise l’horodatage dans l’entête gzip.
  • Combinez avec un niveau de compression constant.