class_docstr: Allow users to create a specific file as a signal to pause
  and iteratively debug the training.
  Once the :meth:`trigger` method is called, it detects whether the file exists, and opens an
  IPython/pdb shell if yes.
  In the shell, ``self`` is this callback, ``self.trainer`` is the trainer, and
  from that you can access everything else.
  
  Example:
  
  .. code-block:: none
  
      callbacks=[InjectShell('/path/to/pause-training.tmp'), ...]
  
      # the following command will pause the training and start a shell when the epoch finishes:
      $ touch /path/to/pause-training.tmp
code: def _inject(self):
      trainer = self.trainer  # noqa
      if self._shell == "ipython":
          import IPython as IP  # noqa
  
          IP.embed()
      elif self._shell == "pdb":
          import pdb  # noqa
  
          pdb.set_trace()
  
imports: import numpy
  import os
  import time
  from collections import deque
  from ..utils import logger
  from ..utils.utils import humanize_time_delta
  from .base import Callback
label_desc: Use image node_id 3 for calling the InjectShell obj's underlying member method code with example usage: obj._inject() without return types