• 
      

    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)