Add helpers for deprecating classes.

Review Request #13013 — Created May 4, 2023 and submitted

Information

housekeeping
master

Reviewers

This introduces ClassDeprecatedMixin and ClassMovedMixin.

ClassDeprecatedMixin marks a class as deprecated, emitting a warning
when directly instantiated or subclassed. Warnings are not emitted when
instantiating or subclassing any subclasses of the class, though.

ClassMovedMixin is similar, but it communicates that a class has moved
elsewhere. It can either take the new class to point to as parameter, or
it can be mixxed into a class that subclasses the new class (useful when
a legacy base class needs to subclass a newer base class).

These make use of __init_subclass__ and keyword arguments in the
subclass list to handle storing state and notifying on subclass. This
gives us metaclass-like functionality without the subclass having to
define state in the class body.

Unit tests pass on all supported versions of Python.

Summary ID
Add helpers for deprecating classes.
This introduces `ClassDeprecatedMixin` and `ClassMovedMixin`. `ClassDeprecatedMixin` marks a class as deprecated, emitting a warning when directly instantiated or subclassed. Warnings are not emitted when instantiating or subclassing any subclasses of the class, though. `ClassMovedMixin` is similar, but it communicates that a class has moved elsewhere. It can either take the new class to point to as parameter, or it can be mixxed into a class that subclasses the new class (useful when a legacy base class needs to subclass a newer base class). These make use of `__init_subclass__` and keyword arguments in the subclass list to handle storing state and notifying on subclass. This gives us metaclass-like functionality without the subclass having to define state in the class body.
b3a19cf160e3d83aae78905f870297ca536b2884
chipx86
chipx86
chipx86
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to master (02bf47b)