{"id":19078748,"url":"https://github.com/qu1x/rezip","last_synced_at":"2026-05-21T04:30:14.376Z","repository":{"id":57660823,"uuid":"299736754","full_name":"qu1x/rezip","owner":"qu1x","description":"Merges ZIP/NPZ archives recompressed or aligned and stacks NPY arrays","archived":false,"fork":false,"pushed_at":"2022-03-21T09:45:28.000Z","size":34,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-03T00:41:17.235Z","etag":null,"topics":["align","merge","npy","npz","numpy-arrays","rust-lang","stack","zip"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qu1x.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-29T20:59:12.000Z","updated_at":"2022-02-15T16:16:14.000Z","dependencies_parsed_at":"2022-08-29T11:30:22.301Z","dependency_job_id":null,"html_url":"https://github.com/qu1x/rezip","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qu1x%2Frezip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qu1x%2Frezip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qu1x%2Frezip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qu1x%2Frezip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qu1x","download_url":"https://codeload.github.com/qu1x/rezip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240131773,"owners_count":19752725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["align","merge","npy","npz","numpy-arrays","rust-lang","stack","zip"],"created_at":"2024-11-09T02:11:44.432Z","updated_at":"2026-05-21T04:30:14.311Z","avatar_url":"https://github.com/qu1x.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build][]](https://github.com/qu1x/rezip/actions/workflows/build.yml)\n[![Downloads][]](https://crates.io/crates/rezip)\n[![Version][]](https://crates.io/crates/rezip)\n[![Rust][]](https://www.rust-lang.org)\n[![License][]](https://opensource.org/licenses)\n\n[Build]: https://github.com/qu1x/rezip/actions/workflows/build.yml/badge.svg\n[Downloads]: https://img.shields.io/crates/d/rezip.svg\n[Version]: https://img.shields.io/crates/v/rezip.svg\n[Rust]: https://img.shields.io/badge/rust-stable-brightgreen.svg\n[License]: https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg\n\n# rezip\n\nMerges ZIP/NPZ archives recompressed or aligned and stacks NPY arrays\n\n## Installation\n\n```sh\ncargo install rezip\n```\n\n## Command-line Interface\n\n```text\nrezip 0.1.3\nRouven Spreckels \u003crs@qu1x.dev\u003e\nMerges ZIP/NPZ archives recompressed or aligned and stacks NPY arrays\n\nOptions accepting \u003c[glob=]value\u003e pairs use the given values for matching file\nnames in input ZIP archives. Matches of former pairs are superseded by matches\nof latter pairs. Omitting [glob=] by only passing a value assumes the * glob\npattern matching all file names whereas an empty glob pattern matches no file\nnames. An empty value disables the option for the file names matching the glob\npattern. Passing a single pair with an empty glob pattern and an empty value,\nthat is a = only, disables an option with default values entirely as in\n--recompress = whereas passing no pairs as in --recompress keeps assuming the\ndefault values.\n\nUSAGE:\n    rezip [OPTIONS] [glob]...\n\nARGS:\n    \u003cglob\u003e...\n            Merges or checks input ZIP archives.\n\n            Stacks identically named files in different input ZIP archives in\n            the order given by parsing supported file formats like NPY (NumPy\n            array file). Otherwise, only the file in the last given input ZIP\n            archive is merged into the output ZIP archive.\n\nOPTIONS:\n    -o, --output \u003cpath\u003e\n            Writes output ZIP archive.\n\n            With no output ZIP archive, checks if files in input ZIP archives\n            are as requested according to --recompress and --align. Recompress\n            levels and --merge matches are not checked.\n\n    -f, --force\n            Writes existing output ZIP archive\n\n    -m, --merge \u003c[glob=]name\u003e\n            Merges files as if they were in ZIP archives.\n\n            Merges files as if they were in different ZIP archives and renames\n            them to the given names. With empty names, keeps original names,\n            effectively creating a ZIP archive from input files.\n\n            Note: File permissions and its last modification time are not yet\n            supported.\n\n    -r, --recompress \u003c[glob=]method\u003e\n            Writes files recompressed.\n\n            Supported methods are stored (uncompressed), deflated (most common),\n            bzip2[:1-9] (high ratio) with 9 as default level, and zstd[:1-21]\n            (modern) with 3 as default level. With no methods, files are\n            recompressed using their original methods but with default levels.\n\n            Note: Compression levels are not yet supported.\n\n            [default: stored]\n\n    -a, --align \u003c[glob=]bytes\u003e\n            Aligns uncompressed files.\n\n            Aligns uncompressed files in ZIP archives by padding local file\n            headers to enable memory-mapping, SIMD instruction extensions like\n            AVX-512, and dynamic loading of shared objects.\n\n            [default: 64 *.so=4096]\n\n    -s, --stack \u003c[glob=]axis\u003e\n            Stacks arrays along axis.\n\n            One stacked array at a time must fit twice into memory before it is\n            written to the output ZIP archive.\n\n            [default: 0]\n\n    -v, --verbose\n            Prints status information.\n\n            The more occurrences, the more verbose, with three at most.\n\n    -h, --help\n            Print help information\n\n    -V, --version\n            Print version information\n```\n\n## License\n\nDual-licensed under `MIT OR Apache-2.0`.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the works by you shall be licensed as above, without any\nadditional terms or conditions.\n\n## Releases\n\n### Version 0.1.3 (2022-03-21)\n\n  * Fix [RUSTSEC-2020-0071](https://rustsec.org/advisories/RUSTSEC-2020-0071).\n  * Support compression method `zstd`.\n\n### Version 0.1.2 (2022-02-16)\n\n  * Fix silent renaming of `ndarray::stack` to `ndarray::concatenate`.\n\n### Version 0.1.1 (2022-02-15)\n\n  * Update dependencies fixing build.\n\n### Version 0.1.0 (2021-06-05)\n\n  * Implement.\n\n### Version 0.0.0 (2020-09-29)\n\n  * Reserve name.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqu1x%2Frezip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqu1x%2Frezip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqu1x%2Frezip/lists"}