Stampla
Deterministic, verifiable naming for photo and video archives.
stampla stamps every photo and video with an identity derived
purely from the file itself — the capture time plus a slice of the
content hash:
20260703_150727_9b677b64.nef
└──────┬──────┘ └──┬───┘
capture time hash
That name is a stable, unique identifier with properties a filename usually doesn't have:
- Everything on one timeline. Sorting by name is sorting by
capture time, across every camera, phone and scanner — no rolling
counters, no
IMG_0001 (2).jpg. - Verifiable. Because the name is reproducible from the file, the whole archive can be re-checked at any time: corruption is told apart from legitimate edits, and duplicates identify themselves.
- Groups stay whole. A RAW master, its XMP/PP3 sidecars and its editor derivatives share one name and are renamed together, atomically.
Install
$ pip install stampla
Python 3.11+ and ExifTool on PATH; no other
dependencies.
Usage
| command | what it does |
|---|---|
import |
copy a memory card into the archive, named on arrival; exit 0 certifies the card is fully accounted for — safe to format |
verify |
recompute every name and report what disagrees, classified by meaning (corruption vs. expected drift vs. date mismatch) |
rename |
bring stale names in line, atomically per file group |
inject |
let a DAM (Lightroom Classic) rename the masters it manages, via a metadata token |
organize |
report-only triage for messy trees: proposals, duplicates, undatable files |
history / undo / resume |
every apply is journaled: list runs, revert them, finish interrupted ones |
Safety first: every command is a dry run unless --apply. Applies are
validated as a whole before anything is touched, journaled before the
first change, applied atomically per group, resumable after
interruption and revertable — and a file whose capture time cannot be
resolved is reported, never renamed. Nothing is ever overwritten.
See the command guide for details, output formats and the exit-code contract, and DESIGN.md for why it works this way.
Configuration
An archive is described by a TOML file; every setting has a sensible default. See six complete example setups — from a single folder of photos to a Lightroom workflow and a naming-scheme migration — and the annotated example config for every option.
License
Metadata
Release files for stampla 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| stampla-0.5.0.tar.gz | 152.5 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| stampla-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 227.8 kB
Release files / stampla-0.5.0.tar.gz
| Download URL | stampla-0.5.0.tar.gz |
|---|---|
| Size | 152.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ade4add6c249670ca5b5fb52f7bbcf1d53b9612ee4167ed30e28181f745d1f7a
|
|
BLAKE2b-256 checksum How to use checksums |
6dbd00d51f599f32cf28c59d5d9db24b00b49a37b4fb529af68cb6b062fedd9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.
Transparency logRelease files / stampla-0.5.0-py3-none-any.whl
| Download URL | stampla-0.5.0-py3-none-any.whl |
|---|---|
| Size | 75.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f97670bb98ca5d55fc8111808904c4c95808a35098350e348b4f3806a68e605
|
|
BLAKE2b-256 checksum How to use checksums |
562772ba1b974235636eb310676c706f5c80a115e8e227ffb78d7c6d332f7dca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.
Transparency logSecurity for stampla 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for stampla-0.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.