Metadata-Version: 2.5
Name: pip-check
Version: 3.3
Summary: Display installed pip packages and their update status.
Project-URL: Homepage, https://github.com/bartTC/pip-check/
Project-URL: Issues, https://github.com/bartTC/pip-check/issues
Project-URL: Changelog, https://github.com/bartTC/pip-check/blob/main/CHANGELOG.md
Author-email: Martin Mahner <martin@mahner.org>
License-Expression: MIT
License-File: LICENSE
Keywords: dependencies,outdated,packages,pip,upgrade,uv
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Software Distribution
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Requires-Dist: packaging>=20.0
Requires-Dist: terminaltables>=3.1
Description-Content-Type: text/markdown

[![Testsuite](https://github.com/bartTC/pip-check/actions/workflows/test.yml/badge.svg)](https://github.com/bartTC/pip-check/actions/workflows/test.yml)
[![PyPi Version](https://img.shields.io/pypi/v/pip-check
)](https://pypi.org/project/pip-check/)
![Monthly Downloads](https://img.shields.io/pypi/dm/pip-check
)

# pip-check

pip-check gives you a quick overview of all installed packages and their
update status. Under the hood it calls `pip list --outdated --format=json`
and transforms it into a more user-friendly table.

pip-check also supports uv, or pip at any location. Pass the `pip`
command using `--cmd`:

```
pip-check -c pip3
pip-check -c ".venv/bin/pip"
pip-check -c "uv pip"
```

![Screenshot of pip-check in action](https://d.pr/i/ZDPuw5.png)

## Installation:

```
pip install pip-check
```
    
Or Install the last version that runs on Python 2.7 or 3.4:

```
pip install pip-check==2.5.2
```  

## Usage:

```bash
$ pip-check -h
usage: pip-check [options] [-- PIP_ARGS ...]

A quick overview of all installed packages and their update status. Supports `pip` or `uv pip`.

options:
  -h, --help            show this help message and exit
  -a, --ascii           Display as ASCII Table
  -c, --cmd PIP_CMD     The [uv] pip executable to run. E.g.: `/path/to/pip` or `uv pip`. Default: `pip`
  -l, --local           Show only virtualenv installed packages. (pip only)
  -r, --not-required    List only packages that are not dependencies of installed packages. (pip only)
  -f, --full-version    Show full version strings.
  -H, --hide-unchanged  Do not show "unchanged" packages.
  -u, --show-update     Show update instructions for updatable packages. (pip only)
  -U, --user            Show only user installed packages. (pip only)
  --version             Show the version of pip-check and exit.

Arguments after `--` are passed to `pip list` as they are, e.g. `pip-check -- --pre` to include pre-releases, or `pip-check -- --extra-index-url URL` to also check another index. With uv, use uv's
options, e.g. `-- --index URL`. They are also added to the --show-update command.
```

## Pre-releases and other package indexes:

Everything after `--` is passed to `pip list` unchanged, so pip-check can use
any of pip's options:

```
pip-check -- --pre                                        # include pre-releases
pip-check -- --extra-index-url https://my.index/simple    # also check another index
pip-check -- --index-url https://mirror.example/simple    # check a mirror instead of PyPI
pip-check -c "uv pip" -- --index https://my.index/simple  # uv uses its own option names
```

The same arguments are added to the upgrade command that `--show-update`
prints, so e.g. a listed pre-release actually gets installed. uv's `pip list`
has no pre-release option, so `--pre` only works with pip.

pip's own configuration applies as well, so a `pip.conf` or environment
variables such as `PIP_PRE=1` or `PIP_EXTRA_INDEX_URL` work without `--`.

## Local Development

pip-check uses `uv` for local development.

```
uv sync         # Create a .venv and install dependencies
uv build        # Build distribution packages
```

### Releasing:

Releases are published to PyPI by GitHub Actions. Bump `version` in
`pyproject.toml`, add the CHANGELOG entry, then push a matching tag:

```bash
$ git tag v3.3 && git push origin v3.3
```

The Publish workflow checks that the tag matches the project version, runs
the full test suite and uploads the package using PyPI Trusted Publishing.

### Testing:

Test against a variation of Python versions:

```bash
$ uv run nox
```

## Recommended Similar Tools

- [pip-date](https://github.com/E3V3A/pip-date) - Show the installation or modification times of all your pip packages
- [pip-chill](https://github.com/rbanffy/pip-chill) - Lists only the dependencies (or not) of installed packages


# Changelog

v3.3 (2026-10-22):

- Pass extra arguments to `pip list` after `--`, e.g. `pip-check -- --pre` to include pre-releases (#28) or `pip-check -- --extra-index-url URL` to also check another index (#30). They're added to the `--show-update` upgrade command too.
- Report a failing pip command with pip's error message and exit code 1. Previously it showed up as "No outdated packages".
- A `--cmd` that can't be run (e.g. a typo) now prints an error instead of a traceback.
- Ctrl-C now exits quietly with code 130 instead of printing a traceback.
- Require `packaging>=20.0`. Older versions lack `Version.major` and made pip-check crash.
- The sdist can be built with pip older than 19.3 (the pip that came with Python 3.8), which couldn't parse `pyproject.toml`.
- Test against **Python 3.15**. Python 3.8 and later remain supported.
- Use an SPDX license expression (PEP 639) and add project keywords, topics and a changelog link.
- Limit the sdist to source, docs and tests. It previously included local files such as `.coverage` and `uv.lock`.
- Releases are published from GitHub Actions using PyPI Trusted Publishing.

v3.2 (2025-08-27):
v3.2.1 (2025-08-27):

- Fix 'uv' support to work with latest UV version.

v3.1 (2025-04-14):

- Adopted **uv** and **hatchling** as the primary build tools.
- Implemented **nox** as the test runner.
- Migrated all documentation from **reStructuredText** to **Markdown** for improved readability and accessibility.
- Introduced **Ruff** as a linter and optimized code to align with the current set of Ruff rules.
- Added type annotations throughout the codebase.
- Test against **Python 3.14**.

v3.0 (2025-04-11):

- Added support for ``uv``. Use ``--cmd="uv pip"`` to utilize uv.

v2.10 (2025-04-11):

- Resolve the issue of missing line breaks when no packages are found.
- Test against Python 3.13.

v2.9 (2024-09-01):

- Show current Python and pip version upon load.
- Test against Python 3.12.

v2.8.1 (2022-11-06):

- Fixes issue with packages not correctly sorted into "Major" category.

v2.8 (2022-11-06):

- Added support for Python 3.11.
- Replaced deprecated "distutils" with "packaging" module.

v2.7 (2021-11-16):

- Drop support for Python 2.7, 3.4 and 3.5
- Added support for Python 3.9 and 3.10.
- Removed 'colorclass' as a dependency and with that the shell argument
  `--disable-colors`.

v2.6 (2019-12-12):

- Requires Python 3.5 or higher.
- Command error is shown if pip exits with a status code 1 (or larger).
- Error message is shown if pip is not able to load packages in case of
  network problems.
- Update instructions will now add ``--user`` in case the pip-check command
  should only show user packages as well.

v2.5.2 (2019-08-08):

- This is the last version that runs on Python 2.7. Install it with
  ``pip install pip-check==2.5.2``
- Windows color fixes.

v2.5.1 (2019-08-08):

- Windows script fixes.

v2.5 (2019-08-08):

- A more robust installation that installs pip-check as a proper console script.
- Added new ``--disable-colors`` argument.
- Added tests for Python 3.7 and 3.8.
- Fixed Syntax warning happening with no outdated packages.
- Cleanup of the entire codebase.

v2.4 (2019-07-23):

- Added support to only show packages from the ``user`` or ``local`` package
  namespace.

v2.3.3 (2018-02-19):

- Visual fixes around ``--show-update``

v2.3.2 (2018-02-18):

- New ``--show-update`` argument.
- Fixed ``--full-versions`` argument.
- Minor UI improvements.

v2.1 (2018-02-18):

- Complete new architecture. It now calls ``pip`` directly and parses it output
  which should be more reliable.
- It's also using distutils for the version comparision now, which is more
  reliable as well.
- Lots of features and bug fixes.

v0.2 (2016-02-09):

- Fixes issues with older pip versions.
- Truncates extremly long version numbers.

v0.1 (2016-02-06):

- Very first version, and yet with very limited features.