mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Merge 3.4 (asyncio)
This commit is contained in:
		
						commit
						29ae7633e0
					
				
					 3 changed files with 23 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -416,6 +416,10 @@ def new_test_loop(self, gen=None):
 | 
			
		|||
    def tearDown(self):
 | 
			
		||||
        events.set_event_loop(None)
 | 
			
		||||
 | 
			
		||||
        # Detect CPython bug #23353: ensure that yield/yield-from is not used
 | 
			
		||||
        # in an except block of a generator
 | 
			
		||||
        self.assertEqual(sys.exc_info(), (None, None, None))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@contextlib.contextmanager
 | 
			
		||||
def disable_logger():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -186,10 +186,18 @@ def _make_subprocess_transport(self, protocol, args, shell,
 | 
			
		|||
                                      self._child_watcher_callback, transp)
 | 
			
		||||
            try:
 | 
			
		||||
                yield from waiter
 | 
			
		||||
            except:
 | 
			
		||||
            except Exception as exc:
 | 
			
		||||
                # Workaround CPython bug #23353: using yield/yield-from in an
 | 
			
		||||
                # except block of a generator doesn't clear properly
 | 
			
		||||
                # sys.exc_info()
 | 
			
		||||
                err = exc
 | 
			
		||||
            else:
 | 
			
		||||
                err = None
 | 
			
		||||
 | 
			
		||||
            if err is not None:
 | 
			
		||||
                transp.close()
 | 
			
		||||
                yield from transp._wait()
 | 
			
		||||
                raise
 | 
			
		||||
                raise err
 | 
			
		||||
 | 
			
		||||
        return transp
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -373,10 +373,17 @@ def _make_subprocess_transport(self, protocol, args, shell,
 | 
			
		|||
                                             **kwargs)
 | 
			
		||||
        try:
 | 
			
		||||
            yield from waiter
 | 
			
		||||
        except:
 | 
			
		||||
        except Exception as exc:
 | 
			
		||||
            # Workaround CPython bug #23353: using yield/yield-from in an
 | 
			
		||||
            # except block of a generator doesn't clear properly sys.exc_info()
 | 
			
		||||
            err = exc
 | 
			
		||||
        else:
 | 
			
		||||
            err = None
 | 
			
		||||
 | 
			
		||||
        if err is not None:
 | 
			
		||||
            transp.close()
 | 
			
		||||
            yield from transp._wait()
 | 
			
		||||
            raise
 | 
			
		||||
            raise err
 | 
			
		||||
 | 
			
		||||
        return transp
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue