Skip to main content

Enables batch removal of packages from a devpi server.

Project description

Devpi Cleaner

Build Status Coverage Status Latest Version Requirements Status

Léon, the devpi cleaner, enables batch removal of artefacts from a devpi server. Given a package and version specification, it will remove the specified versions of a package from either a single index or all indices of a given user.

Rationale

Devpi cleaner wraps the original devpi remove command. It provides the following extensions:

  • Conditionally limit removal to development packages.

  • Conditionally limit removal to versions matching a given regular expression.

  • Temporarily switch non-volatile indices to volatile.

  • Apply a remove operation to all indices of a user.

  • Throttle removal activities if the Devpi server is having difficulties keeping up.

Léon by Example

The following command will delete all development packages preceding version 0.2 of delete_me on index index1 of the user:

> devpi-cleaner http://localhost:2414/ user/index1 'delete_me<=0.2' --dev-only
Password:
Packages to be deleted from user/index1:
 * delete_me 0.2.dev1 on user/index1
 * delete_me 0.2.dev2 on user/index1
Cleaning user/index1…
100% (2 of 2) |###########################| Elapsed Time: 0:00:00 Time: 0:00:00
>

As shown, packages will be listed and confirmation required before they are actually deleted from the server.

Commandline Usage

usage: devpi-cleaner [-h] [--batch] [--dev-only] [--version-filter REGEX]
                     [--force] [--password PASSWORD] [--login LOGIN]
                     server user[/index] package_specification

A utility to batch-remove packages from a Devpi server.

positional arguments:
  server                The devpi server to operate on.
  user[/index]          The index from which to remove the packages. If only
                        the user part is specified, all indices of that user
                        will be cleaned.
  package_specification
                        The specification of the package version(s) to remove.

optional arguments:
  -h, --help            show this help message and exit
  --batch               Assume yes on confirmation questions.
  --dev-only            Remove only development versions as specified by PEP
                        440.
  --version-filter REGEX
                        Remove only versions in which the given regular
                        expression can be found.
  --force               Temporarily make indices volatile to enable package
                        removal.
  --password PASSWORD   The password with which to authenticate.
  --login LOGIN         The user name to user for authentication. Defaults to
                        the user of the indices to operate on.

The arguments --dev-only and --version-filter can be combined. In this case
only packages passing both filters will be removed.

License

New BSD

Changelog

This is the version history of devpi_cleaner.

Version 0.3.0 - 2021-02-05

Added

  • Throttle deletion if Devpi seems under heavy load.

  • Python 3.6 to 3.9 are now officially supported.

Removed

  • Python 2.7, and 3.3 to 3.5 are no longer supported.

Version 0.2.0 - 2016-04-08

Added

  • Allow cleaning of single indices instead of all indices of a user. See --help for the invocation syntax.

  • Allow to limit the versions to delete via a regular expression.

  • Display a progress bar while performing the removal if multiple packages or package versions are selected.

  • Python 3.5 is now officially supported

  • PyPy is now officially supported

Changed

  • Prompt the user for a list of package versions and the indices from which to delete them. Previously the user was shown a list of package URLs. However, devpi_cleaner will actually delete by package version, not by uploaded file.

  • Improved performance when deleting multiple package versions from non-volatile indices

  • Changelog is now maintained in the format suggested by http://keepachangelog.com/.

Removed

  • Python 3.2 is no longer supported

Version 0.1.1 - 2015-11-23

Added

  • Add support for HTTPS.

Version 0.1.0 - 2015-07-17

Added

  • Batch removal of packages from all indices of a Devpi user

  • Allow restricting removal to development versions

  • Enable removal of packages from non-volatile indices

  • Batch mode for non-interactive operation

Supported by

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