Devpi Cleaner
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
Changelog
This is the version history of devpi_cleaner.
Version 0.3.1 - 2026-10-20
Added
Compatibility with Python 3.11, 3.12, 3.13, 3.14, and 3.15 has been verified.
Changed
Stop marking wheels as universal now that Python 2 is no longer supported.
Removed
Compatibility with Python 3.6 to 3.10 as well as PyPy 3.7 to 3.10 is no longer verified.
Dropped support for running tests via setup.py test. The mechanism is considered deprecated by upstream and removing it allows us to drop a dependency.
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.
Changed
Tests are now executed via pytest to avoid compatibility problems with Python 3.10.
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
Metadata
Release files for devpi-cleaner 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| devpi_cleaner-0.3.1.tar.gz | 29.3 kB | Without provenance | Details for devpi_cleaner-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| devpi_cleaner-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for devpi_cleaner-0.3.1-py3-none-any.whl |
Total release size: 37.3 kB
Release files / devpi_cleaner-0.3.1.tar.gz
| Download URL | devpi_cleaner-0.3.1.tar.gz |
|---|---|
| Size | 29.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dfd898cb0b57d21c39ad692d730f5cb954c2443f84bb282b58e5b08d6eff7dab
|
|
BLAKE2b-256 checksum How to use checksums |
c8d253894c0b85ac2982183a410c6ee326c5c808af29b8866cae67183ec6e3b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / devpi_cleaner-0.3.1-py3-none-any.whl
| Download URL | devpi_cleaner-0.3.1-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b11c4bd141df7b071fdd70d3653c097606d56cfb04a0ab8fe50a7b778d83274
|
|
BLAKE2b-256 checksum How to use checksums |
6f43a08c465424186cc4f7915c9cdcf2134d1bd301541560cdbea18860a12919
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for devpi-cleaner 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.