File tree Expand file tree Collapse file tree 1 file changed +15
-12
lines changed Expand file tree Collapse file tree 1 file changed +15
-12
lines changed Original file line number Diff line number Diff line change @@ -36,12 +36,10 @@ def _run(c):
3636 cont = self ._cont
3737 self ._cont = None
3838 self ._ended = True
39- parent = self .parent
40- while True :
41- if parent is not None and parent ._cont is not None and not parent ._ended :
42- break
43- parent = parent .parent
44- _continuation .permute (cont , parent ._cont )
39+ _continuation .permute (
40+ cont ,
41+ self ._get_active_parent ()._cont ,
42+ )
4543
4644 self ._func = _run
4745
@@ -52,6 +50,16 @@ def _run(c):
5250 raise error ('parent cannot be on a different thread' )
5351 self .parent = parent
5452
53+ def _get_active_parent (self ):
54+ parent = self .parent
55+ while True :
56+ if (parent is not None
57+ and parent ._cont is not None
58+ and not parent ._ended ):
59+ break
60+ parent = parent .parent
61+ return parent
62+
5563 @classmethod
5664 def current (cls ):
5765 return current ()
@@ -97,12 +105,7 @@ def throw(self, *args):
97105 if self ._cont is None :
98106 # Fiber was not started yet, propagate to parent directly
99107 self ._ended = True
100- parent = self .parent
101- while True :
102- if parent is not None and parent ._cont is not None and not parent ._ended :
103- break
104- parent = parent .parent
105- return parent .throw (* args )
108+ return self ._get_active_parent ().throw (* args )
106109
107110 try :
108111 return curr ._cont .throw (* args , to = self ._cont )
You can’t perform that action at this time.
0 commit comments