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

The same entry point also works as a module:

python -m newertag

Passing a specific image (newertag nginx:1.28.1) is planned. For now the command only inspects running containers.

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

git tag 0.1.0
git push origin 0.1.0
git tag v0.1.0
git push origin v0.1.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.1.0.tar.gz (10.5 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.1.0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for newertag-0.1.0.tar.gz
Algorithm Hash digest
SHA256 653adbe476c36a87c14f107b5a1f50d69dd164348d600d69fa511495eb6bc645
MD5 05c49dadfd9d4d45c2b4299943d30a7d
BLAKE2b-256 59c063c314f05662b24d2982400ffaef317c1cd0913a5c3d2f21e83f3261c44e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: newertag-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eaf4517517e4e38b2d871e1cb1fd1180f2a92971fb05216580830265a4f37b51
MD5 d24db9f525bc01e996fd09279f402847
BLAKE2b-256 f9b444f3f202fcba060e3ec48846aacc54fe382ef9c785d83b691dd8f3f35bde

See more details on using hashes here.

Provenance

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