add zstd Python library (#32731)

* add zstd

* fix

* uploader

* logreader: zst support

* caps

* only logreader
old-commit-hash: 04a93dd849
testing-closet^2
Shane Smiskol 12 months ago committed by GitHub
parent f19bfe36a8
commit e88cbb0162
  1. 4
      poetry.lock
  2. 1
      pyproject.toml
  3. 8
      tools/lib/logreader.py

4
poetry.lock generated

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6181d338c8da4314745ebb305485a8c22130288f3faa9740fb1782288c06bc0b
size 614543
oid sha256:35ddb7f95b0443e48f540d6b7ec0b01b4d35da2c7b758de47fb6f0040dac527d
size 627912

@ -187,6 +187,7 @@ tabulate = "*"
types-requests = "*"
types-tabulate = "*"
tqdm = "*"
zstd = "*"
# this is only pinned since 5.15.11 is broken
pyqt5 = { version = "==5.15.2", markers = "platform_machine == 'x86_64'" } # no aarch64 wheels for macOS/linux

@ -10,6 +10,7 @@ import sys
import tqdm
import urllib.parse
import warnings
import zstd
from collections.abc import Callable, Iterable, Iterator
from urllib.parse import parse_qs, urlparse
@ -34,8 +35,8 @@ class _LogFileReader:
ext = None
if not dat:
_, ext = os.path.splitext(urllib.parse.urlparse(fn).path)
if ext not in ('', '.bz2'):
# old rlogs weren't bz2 compressed
if ext not in ('', '.bz2', '.zst'):
# old rlogs weren't compressed
raise Exception(f"unknown extension {ext}")
with FileReader(fn) as f:
@ -43,6 +44,9 @@ class _LogFileReader:
if ext == ".bz2" or dat.startswith(b'BZh9'):
dat = bz2.decompress(dat)
elif ext == ".zst" or dat.startswith(b'\x28\xB5\x2F\xFD'):
# https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#zstandard-frames
dat = zstd.decompress(dat)
ents = capnp_log.Event.read_multiple_bytes(dat)

Loading…
Cancel
Save