Metadata-Version: 2.4
Name: devpi-cleaner
Version: 0.3.1
Summary: Enables batch removal of packages from a devpi server.
Home-page: https://github.com/blue-yonder/devpi-cleaner
Author: Matthias Bach
Author-email: matthias.bach@blue-yonder.com
License: new BSD
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
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 :: System :: Archiving :: Packaging
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/x-rst
License-File: COPYING
Requires-Dist: devpi-client>=2.4.0
Requires-Dist: devpi-plumber>=0.2.5
Requires-Dist: setuptools>=0.8
Requires-Dist: six
Requires-Dist: progressbar2
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

=============
Devpi Cleaner
=============

.. image:: https://coveralls.io/repos/blue-yonder/devpi-cleaner/badge.svg?branch=master
    :alt: Coverage Status
    :target: https://coveralls.io/r/blue-yonder/devpi-cleaner?branch=master
.. image:: https://badge.fury.io/py/devpi-cleaner.svg
    :alt: Latest Version
    :target: https://pypi.python.org/pypi/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
=======

`New BSD`_


.. _devpi server: http://doc.devpi.net/latest/
.. _New BSD: https://github.com/blue-yonder/devpi-cleaner/blob/master/COPYING


=========
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
