@@ -30,11 +30,12 @@ def __getitem__(self, key):
30
30
node = self ._root
31
31
for sym in key .split ('/' ):
32
32
node = node ._children [sym ]
33
+ except KeyError as err :
34
+ raise KeyError (key ) from err
35
+ else :
33
36
if node ._content is None :
34
37
raise KeyError (key )
35
38
return node ._content
36
- except KeyError as ke :
37
- raise KeyError (key ) from ke
38
39
39
40
def __delitem__ (self , key ):
40
41
"""Delete the value associated with some topic filter :key"""
@@ -44,11 +45,13 @@ def __delitem__(self, key):
44
45
for k in key .split ('/' ):
45
46
parent , node = node , node ._children [k ]
46
47
lst .append ((parent , k , node ))
47
- # TODO
48
+ except KeyError as err :
49
+ raise KeyError (key ) from err
50
+ else :
51
+ if node ._content is None :
52
+ raise KeyError (key )
48
53
node ._content = None
49
- except KeyError as ke :
50
- raise KeyError (key ) from ke
51
- else : # cleanup
54
+ # cleanup
52
55
for parent , k , node in reversed (lst ):
53
56
if node ._children or node ._content is not None :
54
57
break
@@ -66,11 +69,9 @@ def rec(node, i=0):
66
69
else :
67
70
part = lst [i ]
68
71
if part in node ._children :
69
- for content in rec (node ._children [part ], i + 1 ):
70
- yield content
72
+ yield from rec (node ._children [part ], i + 1 )
71
73
if '+' in node ._children and (normal or i > 0 ):
72
- for content in rec (node ._children ['+' ], i + 1 ):
73
- yield content
74
+ yield from rec (node ._children ['+' ], i + 1 )
74
75
if '#' in node ._children and (normal or i > 0 ):
75
76
content = node ._children ['#' ]._content
76
77
if content is not None :
0 commit comments