6
6
from typing import Any , AsyncIterator , Dict , Optional
7
7
8
8
from asphalt .core import (
9
- Component , Context , PluginContainer , context_teardown , merge_config , qualified_name )
9
+ Component ,
10
+ Context ,
11
+ PluginContainer ,
12
+ context_teardown ,
13
+ merge_config ,
14
+ qualified_name ,
15
+ )
10
16
from typeguard import check_argument_types
11
17
12
18
from asphalt .exceptions import report_exception
13
19
from asphalt .exceptions .api import ExceptionReporter
14
20
15
- reporter_backends = PluginContainer (' asphalt.exceptions.reporters' , ExceptionReporter )
21
+ reporter_backends = PluginContainer (" asphalt.exceptions.reporters" , ExceptionReporter )
16
22
logger = logging .getLogger (__name__ )
17
23
18
24
19
- def default_exception_handler (loop : AbstractEventLoop , context : dict [str , Any ], * ,
20
- ctx : Context ) -> None :
21
- report_exception (ctx , context ['message' ], context ['exception' ])
25
+ def default_exception_handler (
26
+ loop : AbstractEventLoop , context : dict [str , Any ], * , ctx : Context
27
+ ) -> None :
28
+ report_exception (ctx , context ["message" ], context ["exception" ])
22
29
23
30
24
31
class ExceptionReporterComponent (Component ):
@@ -52,17 +59,21 @@ class ExceptionReporterComponent(Component):
52
59
:param default_args: default values for constructor keyword arguments
53
60
"""
54
61
55
- def __init__ (self , reporters : Dict [str , Optional [Dict [str , Any ]]] = None ,
56
- install_default_handler : bool = True , ** default_args ) -> None :
62
+ def __init__ (
63
+ self ,
64
+ reporters : Dict [str , Optional [Dict [str , Any ]]] = None ,
65
+ install_default_handler : bool = True ,
66
+ ** default_args ,
67
+ ) -> None :
57
68
assert check_argument_types ()
58
69
self .install_default_handler = install_default_handler
59
70
if not reporters :
60
- reporters = {' default' : default_args }
71
+ reporters = {" default" : default_args }
61
72
62
73
self .reporters : list [tuple ] = []
63
74
for resource_name , config in reporters .items ():
64
75
merged_config = merge_config (default_args , config or {})
65
- type_ = merged_config .pop (' backend' , resource_name )
76
+ type_ = merged_config .pop (" backend" , resource_name )
66
77
serializer = reporter_backends .create_object (type_ , ** merged_config )
67
78
self .reporters .append ((resource_name , serializer ))
68
79
@@ -71,15 +82,18 @@ async def start(self, ctx: Context) -> AsyncIterator[None]:
71
82
for resource_name , reporter in self .reporters :
72
83
types = [ExceptionReporter , type (reporter )]
73
84
ctx .add_resource (reporter , resource_name , types = types )
74
- logger .info ('Configured exception reporter (%s; class=%s)' , resource_name ,
75
- qualified_name (reporter ))
85
+ logger .info (
86
+ "Configured exception reporter (%s; class=%s)" ,
87
+ resource_name ,
88
+ qualified_name (reporter ),
89
+ )
76
90
77
91
if self .install_default_handler :
78
92
handler = partial (default_exception_handler , ctx = ctx )
79
93
ctx .loop .set_exception_handler (handler )
80
- logger .info (' Installed default event loop exception handler' )
94
+ logger .info (" Installed default event loop exception handler" )
81
95
82
96
yield
83
97
84
98
ctx .loop .set_exception_handler (None )
85
- logger .info (' Uninstalled default event loop exception handler' )
99
+ logger .info (" Uninstalled default event loop exception handler" )
0 commit comments