Source code for warg.decorators.wrapping

#!/usr/bin/env python3


__author__ = "Christian Heider Lindbjerg"
__doc__ = r"""

           Created on 14/11/2019
           """

__all__ = ["pre_decorate", "post_decorate"]

import logging
from typing import Callable

_logger = logging.getLogger(__name__)


[docs] def pre_decorate(method: Callable, *callables: Callable) -> callable: def pre_call_func(self: object = None, *args, **kwargs) -> callable: for c in callables: c(self, *args, **kwargs) return method(self, *args, **kwargs) return pre_call_func
[docs] def post_decorate(method: Callable, *callables: Callable) -> callable: def post_call_func(self: object = None, *args, **kwargs) -> callable: res = method(self, *args, **kwargs) for c in callables: c(self, *args, res=res, **kwargs) return res return post_call_func
if __name__ == "__main__": def juahsdu() -> None: def c(d): _logger.info(d) return f"c_{d}" a = pre_decorate(c, lambda *args, **kwargs: _logger.info(f"pre {args, kwargs}")) b = post_decorate(c, lambda *args, **kwargs: _logger.info(f"post {args, kwargs}")) _logger.info(a("yo")) _logger.info(b("bro")) juahsdu()