You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
783 B
33 lines
783 B
9 months ago
|
"""
|
||
|
Generate zip test data files.
|
||
|
"""
|
||
|
|
||
|
import contextlib
|
||
|
import os
|
||
|
import pathlib
|
||
|
import zipfile
|
||
|
|
||
|
import zipp
|
||
|
|
||
|
|
||
|
def make_zip_file(src, dst):
|
||
|
"""
|
||
|
Zip the files in src into a new zipfile at dst.
|
||
|
"""
|
||
|
with zipfile.ZipFile(dst, 'w') as zf:
|
||
|
for src_path, rel in walk(src):
|
||
|
dst_name = src.name / pathlib.PurePosixPath(rel.as_posix())
|
||
|
zf.write(src_path, dst_name)
|
||
|
zipp.CompleteDirs.inject(zf)
|
||
|
return dst
|
||
|
|
||
|
|
||
|
def walk(datapath):
|
||
|
for dirpath, dirnames, filenames in os.walk(datapath):
|
||
|
with contextlib.suppress(ValueError):
|
||
|
dirnames.remove('__pycache__')
|
||
|
for filename in filenames:
|
||
|
res = pathlib.Path(dirpath) / filename
|
||
|
rel = res.relative_to(datapath)
|
||
|
yield res, rel
|