Typing fixes, simplify `_set_trace()`
							parent
							
								
									2cdf6bd8ce
								
							
						
					
					
						commit
						a4396e78ee
					
				|  | @ -31,6 +31,7 @@ from typing import ( | |||
|     AsyncIterator, | ||||
|     AsyncGenerator, | ||||
| ) | ||||
| from types import FrameType | ||||
| 
 | ||||
| import tractor | ||||
| import trio | ||||
|  | @ -380,7 +381,7 @@ async def wait_for_parent_stdin_hijack( | |||
|             log.debug(f"Child {actor_uid} released parent stdio lock") | ||||
| 
 | ||||
| 
 | ||||
| def mk_mpdb() -> (MultiActorPdb, Callable): | ||||
| def mk_mpdb() -> tuple[MultiActorPdb, Callable]: | ||||
| 
 | ||||
|     pdb = MultiActorPdb() | ||||
|     signal.signal = pdbpp.hideframe(signal.signal) | ||||
|  | @ -534,9 +535,10 @@ async def _breakpoint( | |||
| 
 | ||||
|         _pdb_release_hook = teardown | ||||
| 
 | ||||
|     frame = sys._getframe() | ||||
|     last_f = frame.f_back | ||||
|     last_f.f_globals['__tracebackhide__'] = True | ||||
|     # frame = sys._getframe() | ||||
|     # last_f = frame.f_back | ||||
|     # last_f.f_globals['__tracebackhide__'] = True | ||||
| 
 | ||||
|     try: | ||||
|         # block here one (at the appropriate frame *up*) where | ||||
|         # ``breakpoint()`` was awaited and begin handling stdio. | ||||
|  | @ -658,24 +660,25 @@ def shield_sigint( | |||
| 
 | ||||
| 
 | ||||
| def _set_trace( | ||||
|     actor: Optional[tractor.Actor] = None, | ||||
|     actor: Optional[tractor._actor.Actor] = None, | ||||
|     pdb: Optional[MultiActorPdb] = None, | ||||
| ): | ||||
|     __tracebackhide__ = True | ||||
|     actor = actor or tractor.current_actor() | ||||
| 
 | ||||
|     # XXX: on latest ``pdbpp`` i guess we don't need this? | ||||
|     # frame = sys._getframe() | ||||
|     # last_f = frame.f_back | ||||
|     # last_f.f_globals['__tracebackhide__'] = True | ||||
| 
 | ||||
|     # start 2 levels up in user code | ||||
|     frame: FrameType = sys._getframe() | ||||
|     if frame: | ||||
|         frame = frame.f_back.f_back  # type: ignore | ||||
| 
 | ||||
|     if pdb and actor is not None: | ||||
|         log.pdb(f"\nAttaching pdb to actor: {actor.uid}\n") | ||||
| 
 | ||||
|         pdb.set_trace( | ||||
|             # start 2 levels up in user code | ||||
|             frame=sys._getframe().f_back.f_back, | ||||
|         ) | ||||
| 
 | ||||
|     else: | ||||
|         pdb, undo_sigint = mk_mpdb() | ||||
| 
 | ||||
|  | @ -683,12 +686,7 @@ def _set_trace( | |||
|         global _local_task_in_debug, _pdb_release_hook | ||||
|         _local_task_in_debug = 'sync' | ||||
| 
 | ||||
|         _pdb_release_hook = undo_sigint | ||||
| 
 | ||||
|         pdb.set_trace( | ||||
|             # start 2 levels up in user code | ||||
|             frame=sys._getframe().f_back.f_back, | ||||
|         ) | ||||
|     pdb.set_trace(frame=frame) | ||||
| 
 | ||||
| 
 | ||||
| breakpoint = partial( | ||||
|  | @ -698,7 +696,7 @@ breakpoint = partial( | |||
| 
 | ||||
| 
 | ||||
| def _post_mortem( | ||||
|     actor: tractor.Actor, | ||||
|     actor: tractor._actor.Actor, | ||||
|     pdb: MultiActorPdb, | ||||
| 
 | ||||
| ) -> None: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue