def _run_cell(self, raw_cell: str, store_history: bool, silent: bool, shell_futures: bool) -> ExecutionResult:
    'Internal method to run a complete IPython cell.'
    preprocessing_exc_tuple = None
    try:
        transformed_cell = self.transform_cell(raw_cell)
    except Exception:
        transformed_cell = raw_cell
        preprocessing_exc_tuple = sys.exc_info()
    assert (transformed_cell is not None)
    coro = self.run_cell_async(raw_cell, store_history=store_history, silent=silent, shell_futures=shell_futures, transformed_cell=transformed_cell, preprocessing_exc_tuple=preprocessing_exc_tuple)
    if self.trio_runner:
        runner = self.trio_runner
    elif self.should_run_async(raw_cell, transformed_cell=transformed_cell, preprocessing_exc_tuple=preprocessing_exc_tuple):
        runner = self.loop_runner
    else:
        runner = _pseudo_sync_runner
    try:
        return runner(coro)
    except BaseException as e:
        info = ExecutionInfo(raw_cell, store_history, silent, shell_futures)
        result = ExecutionResult(info)
        result.error_in_exec = e
        self.showtraceback(running_compiled_code=True)
        return result
Internal method to run a complete IPython cell.
def _run_cell(self, raw_cell: str, store_history: bool, silent: bool, shell_futures: bool) -> ExecutionResult:
    
    preprocessing_exc_tuple = None
    try:
        transformed_cell = self.transform_cell(raw_cell)
    except Exception:
        transformed_cell = raw_cell
        preprocessing_exc_tuple = sys.exc_info()
    assert (transformed_cell is not None)
    coro = self.run_cell_async(raw_cell, store_history=store_history, silent=silent, shell_futures=shell_futures, transformed_cell=transformed_cell, preprocessing_exc_tuple=preprocessing_exc_tuple)
    if self.trio_runner:
        runner = self.trio_runner
    elif self.should_run_async(raw_cell, transformed_cell=transformed_cell, preprocessing_exc_tuple=preprocessing_exc_tuple):
        runner = self.loop_runner
    else:
        runner = _pseudo_sync_runner
    try:
        return runner(coro)
    except BaseException as e:
        info = ExecutionInfo(raw_cell, store_history, silent, shell_futures)
        result = ExecutionResult(info)
        result.error_in_exec = e
        self.showtraceback(running_compiled_code=True)
        return result