Skip to main content

newertag

PyPI Python

Check whether pinned container images have a newer stable tag.

newertag looks at the tag you are already using — from a running container today, or from an image you pass in later — and asks the registry for newer stable releases in the same version family.

It prefers false negatives over false positives. Pre-release tags (latest, nightly, rc, …) are ignored. Calendar versions and ordinary semantic versions are not mixed. Packaging suffixes such as linuxserver -ls43 stay in-family.

Requirements

There are no Python dependencies at runtime.

Install

Install the published package from PyPI with pipx:

pipx install newertag

Or with pip:

pip install newertag

From this repository, in editable mode while developing:

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Usage

Scan every running container:

newertag
CONTAINER               IMAGE                                     STATUS
qbittorrent             linuxserver/qbittorrent:5.2.3             up to date
home-assistant          homeassistant/home-assistant:2026.8.1     2026.9.0 available (minor)
newertag --verbose
newertag --help

Check one image. Without a tag, list the latest stable tags:

newertag jc21/nginx-proxy-manager
IMAGE   jc21/nginx-proxy-manager

Latest stable tags:
  2.15.1
  2.14.6
  2.14.5
  2.14.3
  2.14.2

With a tag, report whether a newer stable release exists:

newertag jc21/nginx-proxy-manager:2.12.3
IMAGE   jc21/nginx-proxy-manager:2.12.3
STATUS  2.15.1 available (minor)

The same entry point also works as a module:

python -m newertag

Exit codes

Code Meaning
0 No updates available
1 Updates available
2 Error

Development

pip install -e ".[dev]"
pytest

GitHub Actions runs the same suite on Python 3.9–3.13 for pushes to main / master and for pull requests.

Releasing

Publishing is tag-driven. Once the version you want is on main / master, push a matching version tag (0.2.0 or v0.2.0). That runs .github/workflows/publish.yml, which checks that the tag matches the package version, runs the tests, builds an sdist and wheel, and uploads them to PyPI with trusted publishing. No API token is stored in the repository.

The package version is currently 0.2.0. After this commit is on the default branch, the next release is either of:

git tag 0.2.0
git push origin 0.2.0
git tag v0.2.0
git push origin v0.2.0

For later releases, bump version in pyproject.toml and __version__ in src/newertag/__init__.py, merge that to the default branch, then tag X.Y.Z or vX.Y.Z and push the tag. A tag that does not match those versions fails before upload.

First-time PyPI setup

Do this once before pushing the first tag:

  1. Create a GitHub Actions environment named pypi (Settings → Environments). Requiring a reviewer on that environment is recommended so a tag cannot publish without approval.

  2. Register a pending trusted publisher at https://pypi.org/manage/account/publishing/:

    Field Value
    PyPI project name newertag
    Owner johe37
    Repository newertag
    Workflow name publish.yml
    Environment name pypi

The first successful tag creates the PyPI project. After that, install with pipx install newertag or pip install newertag.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

newertag-0.2.0.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

newertag-0.2.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file newertag-0.2.0.tar.gz.

File metadata

  • Download URL: newertag-0.2.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for newertag-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c61a4823469a23b2bc93c74f42a519616bbd480c73ffe06a779eb5e1a807423b
MD5 e6755c6fec0446f5ed9f1dcf1a8743ca
BLAKE2b-256 10c8afcd32656980c149fc4a0145239e72ec22d9dc83752659356fdf9c3892cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for newertag-0.2.0.tar.gz:

Publisher: publish.yml on johe37/newertag

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file newertag-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: newertag-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for newertag-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 480430090dea502eb891fb9ef488c935aa5a578b3d78890e6f072a677128fa16
MD5 69ed4fb597dfb087e8fc7de8d75f9a4f
BLAKE2b-256 cd62b652dc465b6ae446ae70825646934e2d416769856c0c752a0ed3a634cb40

See more details on using hashes here.

Provenance

The following attestation bundles were made for newertag-0.2.0-py3-none-any.whl:

Publisher: publish.yml on johe37/newertag

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page