batchvault 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- batchvault/__init__.py +61 -0
- batchvault/__main__.py +3 -0
- batchvault/api.py +884 -0
- batchvault/blocks.py +176 -0
- batchvault/cli.py +806 -0
- batchvault/config.py +169 -0
- batchvault/crypto.py +193 -0
- batchvault/doctor.py +67 -0
- batchvault/engines/__init__.py +0 -0
- batchvault/engines/base.py +57 -0
- batchvault/engines/native.py +237 -0
- batchvault/engines/registry.py +61 -0
- batchvault/engines/sevenzip.py +303 -0
- batchvault/errors.py +38 -0
- batchvault/eta.py +39 -0
- batchvault/filters.py +51 -0
- batchvault/inputs.py +226 -0
- batchvault/levels.py +169 -0
- batchvault/locate.py +140 -0
- batchvault/logs.py +86 -0
- batchvault/manifest.py +210 -0
- batchvault/models.py +164 -0
- batchvault/names.py +36 -0
- batchvault/notify.py +73 -0
- batchvault/options.py +71 -0
- batchvault/py.typed +0 -0
- batchvault/security.py +40 -0
- batchvault/signing.py +152 -0
- batchvault/ui.py +298 -0
- batchvault/volumes.py +201 -0
- batchvault-0.1.0.dist-info/METADATA +306 -0
- batchvault-0.1.0.dist-info/RECORD +35 -0
- batchvault-0.1.0.dist-info/WHEEL +4 -0
- batchvault-0.1.0.dist-info/entry_points.txt +2 -0
- batchvault-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: batchvault
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Batch archive, compress, split and restore files with a native or 7-Zip engine.
|
|
5
|
+
License: MIT License
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2026 coldsofttech
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in all
|
|
17
|
+
copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
25
|
+
SOFTWARE.
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Python: >=3.11.4
|
|
28
|
+
Requires-Dist: pathspec>=0.12
|
|
29
|
+
Requires-Dist: rich>=13
|
|
30
|
+
Provides-Extra: crypto
|
|
31
|
+
Requires-Dist: cryptography>=42; extra == 'crypto'
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# BatchVault
|
|
35
|
+
|
|
36
|
+
[](https://github.com/coldsofttech/BatchVault/actions/workflows/tests.yml)
|
|
37
|
+
[](https://github.com/coldsofttech/BatchVault/actions/workflows/e2e.yml)
|
|
38
|
+
[](https://github.com/coldsofttech/BatchVault/actions/workflows/lint.yml)
|
|
39
|
+
[](https://github.com/coldsofttech/BatchVault/releases)
|
|
40
|
+
[](https://pypi.org/project/batchvault/)
|
|
41
|
+
[](https://www.python.org/downloads/)
|
|
42
|
+
[](LICENSE)
|
|
43
|
+
[](https://github.com/astral-sh/ruff)
|
|
44
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
45
|
+
|
|
46
|
+
Archive, compress, split and restore many files in one go, from the command
|
|
47
|
+
line, from Python, from a GitHub workflow, or from a container.
|
|
48
|
+
|
|
49
|
+
## Why BatchVault?
|
|
50
|
+
|
|
51
|
+
Backing up or moving a pile of large files usually means a shell loop around
|
|
52
|
+
`7z`, with no record of what went where. When a copy goes missing or gets
|
|
53
|
+
damaged, you only find out when you try to restore.
|
|
54
|
+
|
|
55
|
+
BatchVault does the whole job and keeps proof:
|
|
56
|
+
|
|
57
|
+
- Every file becomes its own set of fixed-size volumes, so huge files fit
|
|
58
|
+
through upload limits, small disks and flaky links.
|
|
59
|
+
- A **manifest** records every file and volume with its checksum, so
|
|
60
|
+
restoring never depends on guessing folder names.
|
|
61
|
+
- Restoring checks each volume and the finished file against those checksums
|
|
62
|
+
before anything lands in your output folder.
|
|
63
|
+
- It works the same on Windows, Linux and macOS, with or without 7-Zip.
|
|
64
|
+
|
|
65
|
+
## What you get
|
|
66
|
+
|
|
67
|
+
- Compress a list of files into volumes of a size you choose (`10m`, `2g`, ...).
|
|
68
|
+
- Restore from a manifest, a folder, any single volume, or a list of volumes.
|
|
69
|
+
- Verify archives are complete and intact, and optionally compare them with the
|
|
70
|
+
originals.
|
|
71
|
+
- Pick up where you left off: `--update` skips what has not changed.
|
|
72
|
+
- Optional **encryption** (AES-256) and **signed manifests** to prove nothing
|
|
73
|
+
was tampered with.
|
|
74
|
+
- `--delete-source` removes an original only after the archive has been
|
|
75
|
+
restored and matched byte for byte.
|
|
76
|
+
- A live progress bar with an ETA, readable summaries, and JSON output for
|
|
77
|
+
scripts.
|
|
78
|
+
- Include and exclude patterns, retries, webhook notifications and a
|
|
79
|
+
settings file.
|
|
80
|
+
- A Python API, a GitHub Action and Docker images.
|
|
81
|
+
|
|
82
|
+
## Install
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
pip install batchvault
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Requires Python 3.11.4 or later. Works with [pipx](https://pipx.pypa.io/) and
|
|
89
|
+
[uv](https://docs.astral.sh/uv/) too:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
pipx install batchvault
|
|
93
|
+
uv tool install batchvault
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
For encryption and signed manifests, add the extra:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
pip install "batchvault[crypto]"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
7-Zip is optional. If you want to use it, install it from
|
|
103
|
+
[7-zip.org](https://www.7-zip.org/) (`7zz` on Linux and macOS, for example
|
|
104
|
+
`brew install sevenzip`, or `apt install 7zip`).
|
|
105
|
+
|
|
106
|
+
## Engines
|
|
107
|
+
|
|
108
|
+
BatchVault has two engines. `--engine auto` (the default) uses 7-Zip when it
|
|
109
|
+
finds it and the built-in engine otherwise.
|
|
110
|
+
|
|
111
|
+
| | Built-in (`native`) | 7-Zip (`7zip`) |
|
|
112
|
+
|---|---|---|
|
|
113
|
+
| Needs anything installed | No | An installed 7-Zip |
|
|
114
|
+
| Volume names | `name.bv.001`, `.002`, ... | `name.7z.001`, `.002`, ... |
|
|
115
|
+
| Compression | xz (default), gzip, bzip2 or none | 7z (LZMA2) |
|
|
116
|
+
| Levels | 0-9 (bzip2 has no 0; 1 is used) | 0-9 |
|
|
117
|
+
| Volume size, parallel jobs | Yes | Yes |
|
|
118
|
+
| Encryption | Yes, needs `batchvault[crypto]` | Yes |
|
|
119
|
+
| Plain-tool recovery | Unencrypted volumes join into a normal `.tar.xz` / `.tar.gz` / `.tar.bz2` (`cat name.bv.* > name.tar.xz`) | Opens in any 7-Zip |
|
|
120
|
+
|
|
121
|
+
Things to know:
|
|
122
|
+
|
|
123
|
+
- `--format` only applies to the built-in engine. 7-Zip always writes 7z, and
|
|
124
|
+
BatchVault warns if you ask for something else (`--strict` makes that an
|
|
125
|
+
error).
|
|
126
|
+
- 7-Zip can only take a password on its command line, so other users on a
|
|
127
|
+
shared machine could see it while it runs. Prefer the built-in engine there.
|
|
128
|
+
- An encrypted built-in archive cannot be opened with standard tools; use
|
|
129
|
+
BatchVault to restore it.
|
|
130
|
+
- Several engines can live in one archive folder: the manifest records which
|
|
131
|
+
one made each file.
|
|
132
|
+
- Videos, photos and other already-compressed files do not shrink, whatever the
|
|
133
|
+
level. For them use `--format store`. See the
|
|
134
|
+
[compression guide](docs/compression.md) for choosing a format and level, and
|
|
135
|
+
for memory use.
|
|
136
|
+
|
|
137
|
+
## Use
|
|
138
|
+
|
|
139
|
+
| I want to use BatchVault... | Read |
|
|
140
|
+
|---|---|
|
|
141
|
+
| in a terminal | [Command line guide](docs/cli.md) |
|
|
142
|
+
| in my own Python code | [Python guide](docs/python.md) |
|
|
143
|
+
| in a GitHub workflow | [GitHub Action guide](docs/github-action.md) |
|
|
144
|
+
| in a container | [Docker guide](docs/docker.md) |
|
|
145
|
+
| choosing a format and level | [Compression guide](docs/compression.md) |
|
|
146
|
+
|
|
147
|
+
A **source** is an original file; an **archive** is the set of volumes made from
|
|
148
|
+
it. `pack` turns sources into archives, `unpack` turns archives back into files.
|
|
149
|
+
|
|
150
|
+
A first run:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
# 1. List the files you want to archive
|
|
154
|
+
batchvault list files D:\Media --exclude "*.tmp" -o files.txt
|
|
155
|
+
|
|
156
|
+
# 2. Archive them into 100 MB volumes, checking each archive afterwards
|
|
157
|
+
batchvault pack --list files.txt -o archives --volume-size 100m --verify
|
|
158
|
+
|
|
159
|
+
# 3. Look at what is in your archives (sizes, ratios, volumes, ...)
|
|
160
|
+
batchvault inspect archives
|
|
161
|
+
|
|
162
|
+
# 4. Restore everything somewhere else
|
|
163
|
+
batchvault unpack archives -o restored
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Your folder structure is kept automatically. Each file gets its own folder, inside
|
|
167
|
+
a copy of the folders it came from, plus a manifest:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
batchvault list files D:\Media -o files.json
|
|
171
|
+
batchvault pack --list files.json -o archives
|
|
172
|
+
|
|
173
|
+
archives/
|
|
174
|
+
manifest.json
|
|
175
|
+
Media/
|
|
176
|
+
Holidays/
|
|
177
|
+
holiday.mp4/
|
|
178
|
+
holiday.mp4.bv.001
|
|
179
|
+
holiday.mp4.bv.002
|
|
180
|
+
report.pdf/
|
|
181
|
+
report.pdf.bv.001
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
`unpack` puts every file back in the same place (`restored\Media\Holidays\holiday.mp4`),
|
|
185
|
+
and files with the same name in different folders do not clash.
|
|
186
|
+
|
|
187
|
+
The folder you listed (`Media`) is kept because `list files` remembers it. If you
|
|
188
|
+
give `pack` files directly instead, the folders below the one they all share are
|
|
189
|
+
kept; files that sit directly in it are not nested.
|
|
190
|
+
|
|
191
|
+
## Cryptography (optional)
|
|
192
|
+
|
|
193
|
+
Encryption and signed manifests need one extra package. Everything else works
|
|
194
|
+
without it.
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
pip install "batchvault[crypto]"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
The Docker images already include it. Without the extra, asking for encryption
|
|
201
|
+
or signing stops with a message telling you to install it.
|
|
202
|
+
|
|
203
|
+
### Encrypt your archives
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
export BATCHVAULT_PASSWORD='a long passphrase' # PowerShell: $env:BATCHVAULT_PASSWORD = '...'
|
|
207
|
+
batchvault pack secrets.db -o vault --encrypt
|
|
208
|
+
batchvault unpack vault -o restored
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
- Encrypting and decrypting use about 128 MiB of memory for a moment while the
|
|
212
|
+
password is turned into a key; that is deliberate, to make guessing slow.
|
|
213
|
+
- The password comes from `BATCHVAULT_PASSWORD` or `--password-file`, never from
|
|
214
|
+
a command-line option, so it stays out of your shell history.
|
|
215
|
+
- Restoring and verifying need the same password. A wrong password or a damaged
|
|
216
|
+
archive is reported as an error; nothing is written to your output folder.
|
|
217
|
+
- Tampering is detected too: changed, reordered or missing pieces of an encrypted
|
|
218
|
+
archive fail the check instead of restoring bad data.
|
|
219
|
+
- **There is no way to recover encrypted data if the password is lost.**
|
|
220
|
+
|
|
221
|
+
What is and is not hidden:
|
|
222
|
+
|
|
223
|
+
- The contents of each file are encrypted.
|
|
224
|
+
- File names, sizes and checksums still appear in `manifest.json` and in the
|
|
225
|
+
output folder names. Keep the manifest private, or do not put sensitive
|
|
226
|
+
names in file names.
|
|
227
|
+
- The 7-Zip engine encrypts with 7-Zip's own AES-256 (and hides the names inside
|
|
228
|
+
the archive), but 7-Zip can only take the password on its command line, so
|
|
229
|
+
other users on the same machine could see it while the command runs. On a
|
|
230
|
+
shared machine, use the built-in engine.
|
|
231
|
+
|
|
232
|
+
### Sign your manifest
|
|
233
|
+
|
|
234
|
+
A signature proves the manifest was made by you and has not been changed since,
|
|
235
|
+
so restoring from an untrusted copy can be refused.
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
batchvault keygen # creates batchvault.key and batchvault.pub
|
|
239
|
+
batchvault pack --list files.txt -o archives --sign-key batchvault.key
|
|
240
|
+
batchvault verify archives --public-key batchvault.pub
|
|
241
|
+
batchvault unpack archives -o restored --public-key batchvault.pub
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
- Keep `batchvault.key` secret (set `BATCHVAULT_KEY_PASSWORD` before `keygen` to
|
|
245
|
+
store it encrypted). Share only `batchvault.pub`.
|
|
246
|
+
- The signature is saved next to the manifest as `manifest.json.sig`. Adding more
|
|
247
|
+
files to the archive folder later changes the manifest, so sign it again; an
|
|
248
|
+
old signature is removed automatically and you get a warning.
|
|
249
|
+
- With `--public-key`, a missing, wrong or outdated signature stops the run
|
|
250
|
+
before anything is restored.
|
|
251
|
+
|
|
252
|
+
## Config file
|
|
253
|
+
|
|
254
|
+
Keep your usual options in a `batchvault.toml` next to your files, or in
|
|
255
|
+
`[tool.batchvault]` inside `pyproject.toml`:
|
|
256
|
+
|
|
257
|
+
```toml
|
|
258
|
+
[pack]
|
|
259
|
+
level = 7
|
|
260
|
+
volume-size = "100m"
|
|
261
|
+
exclude = ["*.tmp"]
|
|
262
|
+
update = true
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Command-line options always win over the file. See
|
|
266
|
+
[docs/configuration.md](docs/configuration.md) for every setting and the
|
|
267
|
+
environment variables.
|
|
268
|
+
|
|
269
|
+
## Check your setup
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
batchvault doctor
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
shows whether Python has the compression modules it needs, whether 7-Zip was
|
|
276
|
+
found, and whether the log folder is writable. If something is missing it says
|
|
277
|
+
what to install.
|
|
278
|
+
|
|
279
|
+
## Logs
|
|
280
|
+
|
|
281
|
+
Every run writes a log file you can attach to a bug report. Passwords are never
|
|
282
|
+
logged, and web addresses with credentials in them are masked.
|
|
283
|
+
|
|
284
|
+
| OS | Folder |
|
|
285
|
+
|---|---|
|
|
286
|
+
| Windows | `%LOCALAPPDATA%\BatchVault\Logs` |
|
|
287
|
+
| macOS | `~/Library/Logs/BatchVault` |
|
|
288
|
+
| Linux | `$XDG_STATE_HOME/batchvault` (default `~/.local/state/batchvault`) |
|
|
289
|
+
|
|
290
|
+
The newest 20 logs are kept. Change the folder with `BATCHVAULT_LOG_DIR`, pick a
|
|
291
|
+
file with `--log-file`, or turn logging off with `--no-log`.
|
|
292
|
+
|
|
293
|
+
## Contributing and security
|
|
294
|
+
|
|
295
|
+
Contributions are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md) and
|
|
296
|
+
follow the [code of conduct](CODE_OF_CONDUCT.md). To report a vulnerability,
|
|
297
|
+
please read [SECURITY.md](SECURITY.md) first and do not open a public issue.
|
|
298
|
+
Technical notes live in [docs/architecture.md](docs/architecture.md) and
|
|
299
|
+
[docs/development.md](docs/development.md).
|
|
300
|
+
|
|
301
|
+
## License
|
|
302
|
+
|
|
303
|
+
See [LICENSE](LICENSE). BatchVault depends on [Rich](https://github.com/Textualize/rich)
|
|
304
|
+
(MIT) and [pathspec](https://github.com/cpburnett/python-pathspec) (MPL-2.0), and
|
|
305
|
+
optionally on [cryptography](https://github.com/pyca/cryptography). 7-Zip is a
|
|
306
|
+
separate program with its own license and is never bundled.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
batchvault/__init__.py,sha256=hvrQkmHWcG0VRlgNrU05aNe_jUGJ1ctR7FaZ-isn_Es,1141
|
|
2
|
+
batchvault/__main__.py,sha256=VTivU2-phDbQBZekO-g23jadHo_ezs1dFY04CEIwtgM,58
|
|
3
|
+
batchvault/api.py,sha256=mgpoxQxkmkpEjl0_Gkcl4tuvkMMwvcRIUbJ9ooMwUs0,32163
|
|
4
|
+
batchvault/blocks.py,sha256=vdQH1MvKlX5hrLt5r7nmLHXY0HTB6HOwEBHa0OOkaeA,5582
|
|
5
|
+
batchvault/cli.py,sha256=B3A_YU6cnqyeEE0rwfL5Xt7ScHAF6bjwT0QQhxXBKCQ,26758
|
|
6
|
+
batchvault/config.py,sha256=I8qPcBV9ueMf26DWxHfjFZ6eIv2E5PKQ7AW8ar-DtfY,6332
|
|
7
|
+
batchvault/crypto.py,sha256=OVViVPW0FfGNpHaBiJsSzdZnImrSVGiTe5DeK9pZsIE,6520
|
|
8
|
+
batchvault/doctor.py,sha256=ZHRBjY4D3okkwqW4m1cWiWW0AwMG8BYI71o2kFJVggo,1984
|
|
9
|
+
batchvault/errors.py,sha256=BAABOJgPvXgYc5Lwg8w1OAV3bbeev2MCoBn7BKrcvA0,1036
|
|
10
|
+
batchvault/eta.py,sha256=H7VPLCejLuSPML_z-NamLwXKsqMzeOHPsrkn8z0yxSg,1134
|
|
11
|
+
batchvault/filters.py,sha256=GpT92CFIr4pNFtnR9rBk3fyYqOY4OK2RS0_-TLA_W1g,1681
|
|
12
|
+
batchvault/inputs.py,sha256=rxm19DsInMeREGyUzTxxzzJR-fqmgftObHvCSDwBaIw,8380
|
|
13
|
+
batchvault/levels.py,sha256=t6Gxf6sY-dL3LakcfgUsHW3uhdCt684j22j__dgm4wA,5411
|
|
14
|
+
batchvault/locate.py,sha256=b-BhpLZ-dzY73bpGBPzq8LJV-VL4B-EqpIbbghZG-ak,4613
|
|
15
|
+
batchvault/logs.py,sha256=-vRSIVXStHdFMP5Y35r3oe6a1rzXsF3e_wWrKxUV_0Y,2580
|
|
16
|
+
batchvault/manifest.py,sha256=w-uzX7v5IViG5YMuvMPp55V1Wboz1peGHHNaa1awNR0,7460
|
|
17
|
+
batchvault/models.py,sha256=USTNp4zqCONBhVaJxACqwwUR54TuUCeSlFarPTklOUM,5235
|
|
18
|
+
batchvault/names.py,sha256=0MmfZBRpUJUVgza8xA-Zt5sAuUmK3g8JriSYS9-KlZ0,1230
|
|
19
|
+
batchvault/notify.py,sha256=JWAn9sPokIJxqvGsZ-YulLqpxbeib3nirxI8HkrDHRo,2288
|
|
20
|
+
batchvault/options.py,sha256=yneNBVi0XSmM1wkZoQNI4BNiYa-ebH5z2mi4S_-z8Hw,2207
|
|
21
|
+
batchvault/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
batchvault/security.py,sha256=-zxIyUec2BqniyiJTOdEZcA8Fv37bgCg5_eUR2NoiWM,1104
|
|
23
|
+
batchvault/signing.py,sha256=DZDF63A3ftPOwX1-gaGZmOWTQ06DXmtIFj99KkeHSmo,5318
|
|
24
|
+
batchvault/ui.py,sha256=Euspsi_rCqWnrSj9r4nDBTuzJGWsYDOIRomb6s6Y1Lo,10209
|
|
25
|
+
batchvault/volumes.py,sha256=82W6_9fLRExWULKfEJCAWgTcyHwsNnLZDgADOn2TVgo,6088
|
|
26
|
+
batchvault/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
+
batchvault/engines/base.py,sha256=wYEXJFw0C1iXixXLYVLLqvXpIzG1Un0ll4x9nD3RxAI,1734
|
|
28
|
+
batchvault/engines/native.py,sha256=bcr1Vx09KmDkyqTY6KvwS797LSVQuI34TALUXwADags,8359
|
|
29
|
+
batchvault/engines/registry.py,sha256=8CgqjS_j20s91iPoO6Hgc3wd7M1S4qkDQTq-iaGLoHU,2136
|
|
30
|
+
batchvault/engines/sevenzip.py,sha256=AnJmGB60hn5hWTHaDMRgmQlEOKnjWDZo4KfDP14_bp0,10393
|
|
31
|
+
batchvault-0.1.0.dist-info/METADATA,sha256=C1FlFNdM-k5a4B9O9MstzUTcadAGCRNyWDX_n0hVz3I,12611
|
|
32
|
+
batchvault-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
33
|
+
batchvault-0.1.0.dist-info/entry_points.txt,sha256=pbNi6xOJxwbNjApafhnmr2RmicpbcsxSJmuzJ8fZLcA,51
|
|
34
|
+
batchvault-0.1.0.dist-info/licenses/LICENSE,sha256=Fp2y0lUbKz36nIyWDL75VKlioccKHFsVnxKv9Mtt48c,1069
|
|
35
|
+
batchvault-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 coldsofttech
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|