feat: teapot: for all methods log exception in loguru
This commit is contained in:
parent
a20ce8b3d6
commit
880948829a
|
@ -1,5 +1,6 @@
|
||||||
|
import functools
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import List
|
from typing import Any, Callable, List
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
|
@ -8,6 +9,29 @@ from joint_teapot.utils import first
|
||||||
from joint_teapot.workers import Canvas, Git, Gitea
|
from joint_teapot.workers import Canvas, Git, Gitea
|
||||||
|
|
||||||
|
|
||||||
|
def for_all_methods(decorator: Callable[..., Any]) -> Callable[..., Any]:
|
||||||
|
def decorate(cls: Any) -> Any:
|
||||||
|
print(type(cls))
|
||||||
|
for attr in cls.__dict__: # there's propably a better way to do this
|
||||||
|
if callable(getattr(cls, attr)):
|
||||||
|
setattr(cls, attr, decorator(getattr(cls, attr)))
|
||||||
|
return cls
|
||||||
|
|
||||||
|
return decorate
|
||||||
|
|
||||||
|
|
||||||
|
def log_exception_in_loguru(func: Callable[..., Any]) -> Callable[..., Any]:
|
||||||
|
@functools.wraps(func)
|
||||||
|
def decorator(*args: Any, **kwargs: Any) -> Any:
|
||||||
|
try:
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception(e)
|
||||||
|
|
||||||
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
|
@for_all_methods(log_exception_in_loguru)
|
||||||
class Teapot:
|
class Teapot:
|
||||||
_canvas = None
|
_canvas = None
|
||||||
_gitea = None
|
_gitea = None
|
||||||
|
|
Loading…
Reference in New Issue
Block a user