outdated


Nameoutdated JSON
Version 0.2.2 PyPI version JSON
download
home_pagehttp://github.com/alexmojaki/outdated
SummaryCheck if a version of a PyPI package is outdated
upload_time2022-10-29 10:14:01
maintainer
docs_urlNone
authorAlex Hall
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            # outdated

[![Build Status](https://travis-ci.org/alexmojaki/outdated.svg?branch=master)](https://travis-ci.org/alexmojaki/outdated) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/outdated/badge.svg?branch=master&uncache)](https://coveralls.io/github/alexmojaki/outdated?branch=master) [![Supports Python versions 2.7 and 3.5+](https://img.shields.io/pypi/pyversions/outdated.svg)](https://pypi.python.org/pypi/outdated)

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.python.org/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.python.org/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](https://docs.python.org/3/library/warnings.html#the-warnings-filter). The classes are [here](https://github.com/alexmojaki/outdated/blob/master/outdated/mywarnings.py) and can be imported directly from the `outdated` module.

## Performance

This library works by fetching a URL such as [this](https://pypi.python.org/pypi/requests/json) - 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.

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/alexmojaki/outdated",
    "name": "outdated",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Alex Hall",
    "author_email": "alex.mojaki@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e9/43/ac45b6c53fc62c99f02dbc310939d8693aa76cdf9900afe74a60febc8266/outdated-0.2.2.tar.gz",
    "platform": null,
    "description": "# outdated\n\n[![Build Status](https://travis-ci.org/alexmojaki/outdated.svg?branch=master)](https://travis-ci.org/alexmojaki/outdated) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/outdated/badge.svg?branch=master&uncache)](https://coveralls.io/github/alexmojaki/outdated?branch=master) [![Supports Python versions 2.7 and 3.5+](https://img.shields.io/pypi/pyversions/outdated.svg)](https://pypi.python.org/pypi/outdated)\n\nThis is a mini-library which, given a package name and a version, checks if it's the latest version available on PyPI.\n\nTo install:\n\n    pip install outdated\n\n## Quickstart:\n\n    from outdated import warn_if_outdated\n\n    warn_if_outdated('my-package-name', '1.2.3')\n\nThis will:\n\n- Show a warning if the given version is not the latest. The warning includes the package name, the given version, and the latest version.\n- Perform the check in a background thread (so it doesn't delay anything)\n- 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\n- Cache the result of the HTTP call on disk for 24 hours\n- Show a warning if any exception occurs during the check\n\nThis 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.\n\nThe package name argument must be exactly the name used on PyPI, so that e.g. https://pypi.python.org/pypi/my-package-name is a valid URL.\n\nOptional arguments:\n\n- `background` (default `True`): run the check in a separate thread. Set to `False` to run immediately.\n- `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.\n\n## Lower level API\n\n    from outdated import check_outdated\n\n    is_outdated, latest_version = check_outdated('my-package-name', '1.2.3')\n    \n`is_outdated` is a boolean which is True if the given version is earlier than the latest version, which is the string `latest_version`.\n\nOptional arguments:\n\n- `repository_url` (default `https://pypi.python.org/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.\n\nThis 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).\n\n## Additional configuration\n\nTo disable all warnings from this library, set the environment variable `OUTDATED_IGNORE` to any non-empty value.\n\nTo 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`.\n\nThe warnings are also categorised so that you can easily control them with standard [warning filters](https://docs.python.org/3/library/warnings.html#the-warnings-filter). The classes are [here](https://github.com/alexmojaki/outdated/blob/master/outdated/mywarnings.py) and can be imported directly from the `outdated` module.\n\n## Performance\n\nThis library works by fetching a URL such as [this](https://pypi.python.org/pypi/requests/json) - 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.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Check if a version of a PyPI package is outdated",
    "version": "0.2.2",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "eae157ea31660526e72b8d05b1cf5afe",
                "sha256": "3e9c2ee6d17e86ae8cc7bb71d70c4172690121cda367155a30994742172678c8"
            },
            "downloads": -1,
            "filename": "outdated-0.2.2-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "eae157ea31660526e72b8d05b1cf5afe",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 7543,
            "upload_time": "2022-10-29T10:13:59",
            "upload_time_iso_8601": "2022-10-29T10:13:59.919810Z",
            "url": "https://files.pythonhosted.org/packages/d3/04/7d2b9a0d1b81e30f39e6f358bac01f4f18b585f35b0ffc5c83fc274f146b/outdated-0.2.2-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "54e1c2d4ba1a1ab4e27e492002860099",
                "sha256": "4b7fdec88e36711120d096d485fc4d5035e4e5ffbd907cf3a6ce2af43058b970"
            },
            "downloads": -1,
            "filename": "outdated-0.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "54e1c2d4ba1a1ab4e27e492002860099",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 9325,
            "upload_time": "2022-10-29T10:14:01",
            "upload_time_iso_8601": "2022-10-29T10:14:01.847739Z",
            "url": "https://files.pythonhosted.org/packages/e9/43/ac45b6c53fc62c99f02dbc310939d8693aa76cdf9900afe74a60febc8266/outdated-0.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-10-29 10:14:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "alexmojaki",
    "github_project": "outdated",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "outdated"
}
        
Elapsed time: 0.01387s