class_docstr: Transformer for escaped commands like %foo, !foo, or /foo
class_docstr_tok: ["Transformer","for","escaped","commands","like","%","foo",",","!","foo",",","or","\/foo"]
docstr: Find the first escaped command (%foo, !foo, etc.) in the cell.
          
docstr_tok: ["Find","the","first","escaped","command","(","%","foo",",","!","foo",",","etc",".",")","in","the","cell","."]
code: def find(cls, tokens_by_line):
      """Find the first escaped command (%foo, !foo, etc.) in the cell."""
      for line in tokens_by_line:
          if not line:
              continue
          ix = 0
          ll = len(line)
          while ll > ix and line[ix].type in {
              tokenize.INDENT,
              tokenize.DEDENT,
          }:
              ix += 1
          if ix >= ll:
              continue
          if line[ix].string in ESCAPE_SINGLES:
              return cls(line[ix].start)
  
imports: import ast
  from codeop import CommandCompiler, Compile
  import re
  import sys
  import tokenize
  from typing import List, Tuple, Optional, Any
  import warnings
  from IPython.utils import tokenutil
label_desc: Use image node_id 1 for calling the EscapedCommand obj's underlying member method code with example usage: obj.find(cls, tokens_by_line) and returns: cls