• 
      

    Update decorators to more correctly set function metadata.

    Review Request #13378 — Created Oct. 25, 2023 and submitted

    Information

    Djblets
    release-3.x

    Reviewers

    Our API decorators and @augment_method_from attempted to set their own
    function metadata (__name__, __doc__, etc.), rather than utilizing
    Python's @wraps/update_wrapper functions. This meant that we weren't
    keeping up with all the latest attributes, such as __annotations__ and
    __qualname__.

    This change switches some of our decorators over to this. It also
    simplifies @webapi_response_errors to not require an inner function
    call, modifying state on the original function instead, reducing API
    overhead.

    Unit tests pass.

    Verified I could access the original function state (__qualname__ in
    particular) when working with these functions.

    Summary ID
    Update decorators to more correctly set function metadata.
    Our API decorators and `@augment_method_from` attempted to set their own function metadata (`__name__`, `__doc__`, etc.), rather than utilizing Python's `@wraps`/`update_wrapper` functions. This meant that we weren't keeping up with all the latest attributes, such as `__annotations__` and `__qualname__`. This change switches some of our decorators over to this. It also simplifies `@webapi_response_errors` to not require an inner function call, modifying state on the original function instead, reducing API overhead.
    4f22c3b380da164b586880263b4e5e46c34820ab
    Description From Last Updated

    'functools.wraps' 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. 
        
    maubin
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-3.x (9a27a50)