• 
      

    Allow skipping warnings on subclasses and deferring warning classes.

    Review Request #13123 — Created June 22, 2023 and submitted

    Information

    housekeeping
    master

    Reviewers

    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:

    1. Subclasses of a ClassDeprecatedMixin or ClassMovedMixin can now
      set housekeeping_skip_warning = True to avoid a warning being
      emitted.

    2. 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.

    Unit tests pass.

    Tested this with upcoming work on moving Djblets to housekeeping.

    Summary ID
    Allow skipping warnings on subclasses and deferring warning classes.
    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: 1. Subclasses of a `ClassDeprecatedMixin` or `ClassMovedMixin` can now set `housekeeping_skip_warning = True` to avoid a warning being emitted. 2. 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.
    a598dc60efd24f2d03c0941283381ef339cb6d7f
    Description From Last Updated

    'housekeeping.base.BaseDeprecationWarningMixin' imported but unused Column: 1 Error code: F401

    reviewbotreviewbot
    Checks run (1 failed, 1 succeeded)
    flake8 failed.
    JSHint passed.

    flake8

    chipx86
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (9f24a4a)