Skip to main content

Check if a version of a PyPI package is outdated

Project description

outdated

Build Status Coverage Status Supports Python versions 2.7 and 3.5+

This is a mini-library which, given a package name and a version, checks if it's the latest version available on PyPI.

To install:

pip install outdated

Quickstart:

from outdated import warn_if_outdated

warn_if_outdated('my-package-name', '1.2.3')

This will:

  • Show a warning if the given version is not the latest. The warning includes the package name, the given version, and the latest version.
  • Perform the check in a background thread (so it doesn't delay anything)
  • Make at most one HTTP call (unless there is an HTTP error, in which case it will try 3 times) to the PyPI server for that specific package
  • Cache the result of the HTTP call on disk for 24 hours
  • Show a warning if any exception occurs during the check

This will not check what version is currently installed, it will only use the given version. Library authors must make sure that the version in their setup.py matches the version here.

The package name argument must be exactly the name used on PyPI, so that e.g. https://pypi-hypernode.com/pypi/my-package-name is a valid URL.

Optional arguments:

  • background (default True): run the check in a separate thread. Set to False to run immediately.
  • raise_exceptions (default: False): if True, allow exceptions to bubble to the top. Otherwise, show a warning including the exception message. If background is True and this is True then this will result in a full traceback showing but the process continuing.

Lower level API

from outdated import check_outdated

is_outdated, latest_version = check_outdated('my-package-name', '1.2.3')

is_outdated is a boolean which is True if the given version is earlier than the latest version, which is the string latest_version.

Optional arguments:

  • repository_url (default https://pypi-hypernode.com/pypi/%s/json): a % style format string to use a different repository PyPI repository URL, e.g. test.pypi.org or a private repository. The string is formatted with the package name.

This still makes the HTTP call with retries and caches the result on disk. It doesn't use a separate thread or emit any warnings (unless there is an exception specifically while using the cache, in which case the check will be done without the cache).

Additional configuration

To disable all warnings from this library, set the environment variable OUTDATED_IGNORE to any non-empty value.

To always raise exceptions instead of converting them to warnings (both in general in warn_if_outdated and more specifically when there's a caching problem) set the environment variable OUTDATED_RAISE_EXCEPTION=1.

The warnings are also categorised so that you can easily control them with standard warning filters. The classes are here and can be imported directly from the outdated module.

Performance

This library works by fetching a URL such as this - the time it takes to visit that link is essentially the speed of the library. This is much faster than the command pip list --outdated or any equivalent code.

Project details


Download files

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

Source Distribution

outdated-0.2.2.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

outdated-0.2.2-py2.py3-none-any.whl (7.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file outdated-0.2.2.tar.gz.

File metadata

  • Download URL: outdated-0.2.2.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.28.1 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.8.5

File hashes

Hashes for outdated-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4b7fdec88e36711120d096d485fc4d5035e4e5ffbd907cf3a6ce2af43058b970
MD5 54e1c2d4ba1a1ab4e27e492002860099
BLAKE2b-256 e943ac45b6c53fc62c99f02dbc310939d8693aa76cdf9900afe74a60febc8266

See more details on using hashes here.

File details

Details for the file outdated-0.2.2-py2.py3-none-any.whl.

File metadata

  • Download URL: outdated-0.2.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.5.0.1 requests/2.28.1 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.8.5

File hashes

Hashes for outdated-0.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3e9c2ee6d17e86ae8cc7bb71d70c4172690121cda367155a30994742172678c8
MD5 eae157ea31660526e72b8d05b1cf5afe
BLAKE2b-256 d3047d2b9a0d1b81e30f39e6f358bac01f4f18b585f35b0ffc5c83fc274f146b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page