While converting Djblets to housekeeping, we hit an interesting case
where we needed to allow a deprecated base class to remain a base class
for now, but to warn when otherwise used. Furthermore, the base class
was for deprecation warnings, and needed to use a versioned warning
class when otherwise subclassed.
To handle that, two additions were made:
-
Subclasses of a ClassDeprecatedMixin
or ClassMovedMixin
can now
set housekeeping_skip_warning = True
to avoid a warning being
emitted.
-
All warning_cls
parameters can now take a callable that returns a
warning class when it's time to emit. This can help avoid circular
reference issues in this particular type of case.