regret

PyPI version Supported Python versions Build status Codecov Code coverage ReadTheDocs status

Regret is a library for deprecating functionality in Python libraries and applications.

Its documentation lives on Read the Docs.

Deprecations

Regret can deprecate:

  • [x] callables
    • [x] functions

    • [x] classes
      • [ ] subclassable classes

  • [ ] attributes
    • [ ] of modules

    • [ ] of classes

    • [ ] of instances

  • [ ] descriptors
    • [ ] classmethod

  • [ ] modules

  • [ ] arguments to callables
    • [ ] required arguments that will be removed

    • [ ] optional arguments that are now required

    • [ ] deprecated values for arguments

    • [ ] type changes for argument

    • [ ] mutual exclusion

  • [ ] interfaces
    • [ ] PEP 544 protocols

    • [ ] zope.interfaces

  • [x] inheritability of a class

Design Goals

Regret is meant to cover all of the deprecations an author may encounter.

It is intended to:

  • be versioning system agnostic (i.e. SemVer, CalVer, HipsTer, etc.)

  • be documentation system agnostic, though potentially documentation system aware (i.e. Sphinx, epydoc, Plaintext, etc.)

  • be itself fully tested

  • support removal date indication, and likely “policies” which automate choosing default removal dates

  • make “clean code” trivially easy to deprecate, and make complex code possible to deprecate

  • minimize the amount of deprecation-related code required for authors

In particular, as a lofty first milestone, it is intended to cover all of the specific deprecations required for these jsonschema issues, and with luck, to subsume all the functionality present in twisted.python.deprecate.