Skip to content

alanhamlett/pip-update-requirements

Repository files navigation

Tests Coverage Version Supported Python Versions WakaTime

pip-update-requirements

Update the packages in a requirements.txt file.

Purring Cat

Installation

pip install pur

Usage

Give pur your requirements.txt file and it updates all your packages to the latest versions.

For example, given a requirements.txt file:

flask==0.9
sqlalchemy==0.9.10
alembic==0.8.4

Running pur on that file updates the packages to current latest versions:

$ pur -r requirements.txt
Updated flask: 0.9 -> 1.0.2
Updated sqlalchemy: 0.9.10 -> 1.2.8
Updated alembic: 0.8.4 -> 0.9.9
All requirements up-to-date.

Pur never modifies your environment or installed packages, it only modifies your requirements.txt file.

You can also use Pur directly from Python:

$ python
Python 3.6.1
>>> from pur import update_requirements
>>> print([x[0]['message'] for x in update_requirements(input_file='requirements.txt').values()])
['Updated flask: 0.9 -> 1.0.2', 'Updated sqlalchemy: 0.9.10 -> 1.2.8', 'Updated alembic: 0.8.4 -> 0.9.9']
>>> print(open('requirements.txt').read())
flask==1.0.2
sqlalchemy==1.2.8
alembic==0.9.9

Options

-r, --requirement PATH   The requirements.txt file to update; Defaults to
                         using requirements.txt from the current directory
                         if it exist.
-o, --output PATH        Output updated packages to this file; Defaults to
                         overwriting the input requirements.txt file.
--interactive            Interactively prompts before updating each package.
-f, --force              Force updating packages even when a package has no
                         version specified in the input requirements.txt
                         file.
-d, --dry-run            Output changes to STDOUT instead of overwriting the
                         requirements.txt file.
--dry-run-changed        Enable dry run and only output packages with
                         updates, not packages that are already the latest.
-n, --no-recursive       Prevents updating nested requirements files.
--skip TEXT              Comma separated list of packages to skip updating.
--skip-gt                Skip updating packages using > or >= spec, to allow
                         specifying minimum supported versions of packages.
--index-url TEXT         Base URL of the Python Package Index. Can be
                         provided multiple times for extra index urls.
--cert PATH              Path to PEM-encoded CA certificate bundle. If
                         provided, overrides the default.
--no-ssl-verify          Disable verifying the server's TLS certificate.
--only TEXT              Comma separated list of packages. Only these
                         packages will be updated.
--minor TEXT             Comma separated list of packages to only update
                         minor versions, never major. Use "*" to limit every
                         package to minor version updates.
--patch TEXT             Comma separated list of packages to only update
                         patch versions, never major or minor. Use "*" to
                         limit every package to patch version updates.
--pre TEXT               Comma separated list of packages to allow updating
                         to pre-release versions. Use "*" to allow all
                         packages to be updated to pre-release versions. By
                         default packages are only updated to stable
                         versions.
-z, --nonzero-exit-code  Exit with status 1 when some packages were updated,
                         0 when no packages updated, or a number greater
                         than 1 when there was an error. By default, exit
                         status 0 is used unless there was an error
                         irregardless of whether packages were or not
                         updated.
--version                Show the version and exit.
--help                   Show this message and exit.

Contributing

Before contributing a pull request, make sure tests pass:

virtualenv venv
. venv/bin/activate
pip install tox
tox

Many thanks to all contributors!