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.1 or v0.2.1). 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.1. After this commit is on the default branch, the next release is either of:

git tag 0.2.1
git push origin 0.2.1
git tag v0.2.1
git push origin v0.2.1

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.1.tar.gz (14.9 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.1-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: newertag-0.2.1.tar.gz
  • Upload date:
  • Size: 14.9 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.1.tar.gz
Algorithm Hash digest
SHA256 bb08bbe503e77517b6e817618d6bb5db668ebf54d8f691b7ff2605b742822eb8
MD5 86ebe5eb43415aa418ddb7a4f2e81658
BLAKE2b-256 6abc1b7eac13e7656d4b6e8ed9e2a722555b38ace5ee56fd1f4d04a9a9f62f85

See more details on using hashes here.

Provenance

The following attestation bundles were made for newertag-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: newertag-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 970011e0816f5ee1f232af14424d25ec8dc42896e07f54aa3e9f5d45151c42c3
MD5 4bcbd6965136c09c7298df78667f556a
BLAKE2b-256 fd4117feffc1ccacd56f1ad885a7e57540d9ab5b9d619be4941900df92f91df7

See more details on using hashes here.

Provenance

The following attestation bundles were made for newertag-0.2.1-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