utils.py 749 B

12345678910111213141516171819202122232425
  1. """Python compatiblity utilities."""
  2. from __future__ import absolute_import, unicode_literals
  3. from functools import (
  4. WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES,
  5. update_wrapper as _update_wrapper,
  6. partial,
  7. )
  8. __all__ = ['update_wrapper', 'wraps']
  9. def update_wrapper(wrapper, wrapped, *args, **kwargs):
  10. """Update wrapper, also setting .__wrapped__."""
  11. wrapper = _update_wrapper(wrapper, wrapped, *args, **kwargs)
  12. wrapper.__wrapped__ = wrapped
  13. return wrapper
  14. def wraps(wrapped,
  15. assigned=WRAPPER_ASSIGNMENTS,
  16. updated=WRAPPER_UPDATES):
  17. """Backport of Python 3.5 wraps that adds .__wrapped__."""
  18. return partial(update_wrapper, wrapped=wrapped,
  19. assigned=assigned, updated=updated)