diff --git a/src/c3nav/mapdata/utils/cache/package.py b/src/c3nav/mapdata/utils/cache/package.py index f66e03d8..a3015f9e 100644 --- a/src/c3nav/mapdata/utils/cache/package.py +++ b/src/c3nav/mapdata/utils/cache/package.py @@ -5,6 +5,8 @@ from collections import namedtuple from io import BytesIO from tarfile import TarFile, TarInfo +from pyzstd import CParameter, ZstdFile + from c3nav.mapdata.utils.cache import AccessRestrictionAffected, GeometryIndexed, MapHistory CachePackageLevel = namedtuple('CachePackageLevel', ('history', 'restrictions')) @@ -27,15 +29,26 @@ class CachePackage: filename = settings.CACHE_ROOT / 'package.tar' filemode = 'w' - if compression is not None: + fileobj = None + if compression == 'zst': + fileobj = ZstdFile(filename, filemode, level_or_option={ + CParameter.compressionLevel: 9, + CParameter.checksumFlag: 1, + }) + elif compression is not None: filemode += ':' + compression - with TarFile.open(filename, filemode) as f: - self._add_bytesio(f, 'bounds', BytesIO(struct.pack('