releaseprobe
Find release notes, URLs and other release metadata for container images by reading their labels. Inspired by Renovate's docker datasource:
- OCI image labels
(
org.opencontainers.image.*), preferred. - label-schema.org labels (
org.label-schema.*), as a fallback for older images.
releaseprobe does not talk to a registry or the Docker daemon itself - it
takes the labels you already have (from docker inspect, skopeo inspect,
crane config, the registry HTTP API, a Kubernetes pod spec, ...) as input
and tells you what release metadata they contain.
Installation
pip install releaseprobe
Usage
Pass labels as a JSON object, e.g. straight from docker inspect:
docker inspect --format '{{json .Config.Labels}}' ghcr.io/org/app:1.2.3 \
| releaseprobe
version: 1.2.3
source: https://github.com/org/app
url: -
documentation: -
revision: abc123
release notes: https://github.com/org/app
A path to a JSON file works too (releaseprobe labels.json); omit the path or
pass - to read from stdin. Add --json for machine-readable output.
Library usage
from releaseprobe import probe_labels
info = probe_labels({"org.opencontainers.image.source": "https://github.com/org/app"})
info.release_notes_url() # "https://github.com/org/app"
Development
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check .
mypy
Dev container
A dev container is included so you can try releaseprobe in VS Code: open the repo and choose "Reopen in Container" (needs the Dev Containers extension). It gives you a Python 3.12 environment with the project installed in editable mode.
The container itself has no Docker CLI, so to try releaseprobe against a real image, inspect it from your host and drop the labels into the workspace (they land in the container too, since the workspace folder is mounted in):
# on your host
docker inspect --format '{{json .Config.Labels}}' ghcr.io/grafana/grafana:11.2.0 > labels.json
# inside the dev container
releaseprobe labels.json
Releasing
Bump the __version__ string in src/releaseprobe/__init__.py and merge to
main. The CI pipeline detects the version bump, tags the commit, creates a
GitHub release with auto-generated notes, and publishes the package to PyPI.
License
MIT, see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file releaseprobe-0.1.0.tar.gz.
File metadata
- Download URL: releaseprobe-0.1.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
245de24c64fba7ec42f120d339ac90ec04bbaeec63e2a46d66205b460bcbe94a
|
|
| MD5 |
5c759f3ebe862179825fb5085abbb3a6
|
|
| BLAKE2b-256 |
0cc92e4f8fb2df6129146d6175fdcfdd1d50118a2b85ca830959d6f4b966a1a9
|
Provenance
The following attestation bundles were made for releaseprobe-0.1.0.tar.gz:
Publisher:
release.yml on dkarv/releaseprobe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
releaseprobe-0.1.0.tar.gz -
Subject digest:
245de24c64fba7ec42f120d339ac90ec04bbaeec63e2a46d66205b460bcbe94a - Sigstore transparency entry: 2811395566
- Sigstore integration time:
-
Permalink:
dkarv/releaseprobe@2436457699a63002c6143de0da671fd6e740d0d9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/dkarv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2436457699a63002c6143de0da671fd6e740d0d9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file releaseprobe-0.1.0-py3-none-any.whl.
File metadata
- Download URL: releaseprobe-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
509ad8851dd1570aee309253f0e262f7751548a7947548ac91a97c0de1b66db2
|
|
| MD5 |
f6c6a1a4ebb868d6a455323b557ff6a3
|
|
| BLAKE2b-256 |
b45f6820ae84bf81235812316ae14db5c5b43917f8e2008e8458bd46f2f47f7d
|
Provenance
The following attestation bundles were made for releaseprobe-0.1.0-py3-none-any.whl:
Publisher:
release.yml on dkarv/releaseprobe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
releaseprobe-0.1.0-py3-none-any.whl -
Subject digest:
509ad8851dd1570aee309253f0e262f7751548a7947548ac91a97c0de1b66db2 - Sigstore transparency entry: 2811395688
- Sigstore integration time:
-
Permalink:
dkarv/releaseprobe@2436457699a63002c6143de0da671fd6e740d0d9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/dkarv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2436457699a63002c6143de0da671fd6e740d0d9 -
Trigger Event:
push
-
Statement type: