| """ |
| Generate zip test data files. |
| """ |
| |
| import contextlib |
| import os |
| import pathlib |
| import zipfile |
| |
| |
| 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) |
| zipfile._path.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 |