Coverage for src\zapy\requests\exceptions.py: 70%
29 statements
« prev ^ index » next coverage.py v7.3.4, created at 2023-12-20 14:17 -0500
« prev ^ index » next coverage.py v7.3.4, created at 2023-12-20 14:17 -0500
1import functools
2import asyncio
4from zapy.base.exceptions import ZapyException, HandledException
5from zapy.templating.traceback import copy_traceback
7class RenderLocationException(ZapyException, HandledException):
9 namespace = "render"
11 def __init__(self, ex, location):
12 super().__init__(f"Error on {location}")
13 self.identifier = location
14 info = copy_traceback(self, from_exc=ex)
15 if info:
16 self.context["stacktrace"] = info
19def error_location(location: str):
20 def decorator(function):
21 if not asyncio.iscoroutinefunction(function):
22 @functools.wraps(function)
23 def wrapper(*args, **kwargs):
24 try:
25 return function(*args, **kwargs)
26 except Exception as ex:
27 raise RenderLocationException(ex, location)
28 else:
29 @functools.wraps(function)
30 async def wrapper(*args, **kwargs):
31 try:
32 return await function(*args, **kwargs)
33 except Exception as ex:
34 raise RenderLocationException(ex, location)
35 return wrapper
36 return decorator