Hash file or directory recursively.
Python bindings to the Rust paq library.
Powered by blake3 cryptographic hashing algorithm.
The Go programming language repository was used as a test data source (157 MB / 14,490 files).
| Tool | Version | Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|---|---|
| paq | latest | paq ./go |
77.7 ± 0.6 | 77.1 | 80.2 | 1.00 |
| b3sum | 1.5.1 | find ./go ... b3sum |
327.3 ± 3.6 | 320.2 | 332.3 | 4.21 ± 0.05 |
| dirhash | 0.5.0 | dirhash -a sha256 ./go |
576.1 ± 2.9 | 570.8 | 580.3 | 7.41 ± 0.06 |
| GNU sha2 | 9.7 | find ./go ... sha256sum |
725.2 ± 43.5 | 692.2 | 813.2 | 9.33 ± 0.56 |
| folder-hash | 4.1.1 | folder-hash ./go |
1906.0 ± 78.0 | 1810.0 | 2029.0 | 24.53 ± 1.02 |
See paq benchmarks documentation for more details.
pip install paqpyNot recommended due to instability of main branch in-between tagged releases.
- Clone this repository.
- Run
pip install maturinto install maturin. - Run
maturin develop --releasefrom repository root.
import paqpy
source = "/path/to/source"
ignore_hidden = True # .dir or .file
source_hash = paqpy.hash_source(source, ignore_hidden)
print(source_hash)Visit the paq homepage for more details.