Skip to main content

No project description provided

Project description

python-update-checker

Python-update-checker (puc) checks or updates pinned dependencies in pyproject.toml, requirements.txt or uv.lock files.

See https://github.com/astral-sh/uv/issues/6794 for a discussion about different pinning strategies.

Features

  • updates pinned dependencies, ignores unpinned dependencies
  • supports pyproject.toml, uv.lock and requirements.txt formats
  • supports [project.dependencies], [project.optional-dependencies] and [dependency-groups] in pyproject.toml
  • supports recursive references (-r) in requirements.txt formats
  • can run in check only mode, ie. it checks if updates are available
  • limit updates to specific packages
  • limit updates with package version constraints (ie. "django<6")
  • limit updates to versions that were uploaded prior to a given date
  • (limited) support for environment markers, ie. "pywin32==311; os_name=='nt'"
  • runs on Linux, MacOS and Windows platforms

Examples

$ # check all pinned packages for updates in pyproject.toml
$ puc check pyproject.toml
puc INFO: check pyproject file pyproject.toml
puc WARNING: found update 'ty==0.0.29' --> 0.0.32

$ # update all pinned packages in pyproject.toml
$ # limit updates to versions that are at least 7 days old
$ puc --exclude-newer="7 days" update pyproject.toml
puc INFO: update pyproject file pyproject.toml
puc INFO: updating 'ty==0.0.29' --> 0.0.31
puc INFO: Wrote 1 updated package version(s) to pyproject.toml

$ # check all pinned packages for updates in requirements.txt
$ puc check requirements.txt
puc INFO: check requirements file requirements.txt
puc WARNING: found update 'argcomplete==3.6.1' --> 3.6.3
puc WARNING: found update 'Django==5.2.0' --> 6.0.4

$ # update only the django package version in requirements.txt
$ # limit updates to django versions less than 6
$ puc --package="Django" --constraints="Django<6" update requirements.txt
INFO: update requirements file requirements.txt
INFO: updating 'Django==5.2.0' --> 5.2.13
INFO: Wrote 1 updated package version(s) to requirements.txt

Script behaviour

The exit code of puc check is non-zero when updates are available.

Checking a pyproject.toml or uv.lockfile with puc should be done from the directory of the pyproject.toml file, especially if your project relies on a project directory (for example to define additional package indexes in pyproject.toml).

After updating versions in pyproject.toml, run uv lock --upgrade to update the transitive dependencies in uv.lock.

Pinned dependencies are packages with == or === constraints and no wildcards in the version.

Installation

  1. Install python uv
  2. Install puc with uv pip install python-update-checker.

Architecture

Dependencies are

  • uv: The uv binary must be available for the script to call.
    puc uses echo "package" | uv pip compile - to get latest package versions.
    puc uses uv add "package==<version>" to update pyproject.toml dependencies.

  • packaging: Parses dependencies with the packaging.requirements.Requirement class.

puc needs Python >= 3.11 since it uses the tomllib Python module.

Limitations

  • No support for custom dependency formats in pyproject.toml (eg. [tool.poetry.dependencies]).
  • puc has limited support for environment markers.
  • Constraint references (-c) inside requirements.txt are not supported.
    Use the --constraints option instead.

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

python_update_checker-0.6.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_update_checker-0.6-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file python_update_checker-0.6.tar.gz.

File metadata

  • Download URL: python_update_checker-0.6.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for python_update_checker-0.6.tar.gz
Algorithm Hash digest
SHA256 7d2103ed26f19c3e319e0a77458c9376d21619b464e1114fe1a336f1690e7a75
MD5 e2d954ef6169ffa77291cefdde11cbc8
BLAKE2b-256 23f689add4cee193d3d6625e620d0819f66a3d5337dce0f59b218136d229e662

See more details on using hashes here.

File details

Details for the file python_update_checker-0.6-py3-none-any.whl.

File metadata

  • Download URL: python_update_checker-0.6-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for python_update_checker-0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9f4df82ddaf3fc7229468f69aff60966be1ee4f66fa26a22d989f3ee7313ab64
MD5 45ccf94c5271921971db859c3bc8d379
BLAKE2b-256 3179d626bcb0668da3f0cae21c7ce328882fd96cb274235ced7a6976bab3a616

See more details on using hashes here.

Supported by

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