1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
import typing
 
 
T_JSON_DICT = typing.Dict[str, typing.Any]
_event_parsers = dict()
 
 
def event_class(method):
    ''' A decorator that registers a class as an event class. '''
    def decorate(cls):
        _event_parsers[method] = cls
        return cls
    return decorate
 
 
def parse_json_event(json: T_JSON_DICT) -> typing.Any:
    ''' Parse a JSON dictionary into a CDP event. '''
    return _event_parsers[json['method']].from_json(json['params'])