code: def no_leading_block_quotes(cells):
      """
      A block quote at the start of a cell doesn't recieve the necessary separating comment in rST
  
      A rST quote is just indented text, which can merge with earlier directives unless there's a
      separating comment. Within a single cell, nbsphinx/nbconvert handles this correctly, but it
      doesn't when the quote is at the start of the cell. See:
      - https://github.com/spatialaudio/nbsphinx/issues/450
      - https://github.com/stellargraph/stellargraph/pull/1398
      """
      errors = []
      for cell in cells:
          if not isinstance(cell, MarkdownCell):
              continue
  
          # unfortunately, the cloud runner cells break this rule (and there doesn't seem to be a good
          # way to avoid it), so skip them, and we just have to be careful that they get formatted
          # correctly.
          if "CloudRunner" in cell.metadata.get("tags", []):
              continue
  
          first = cell.ast.first_child
  
          if is_block_quote(first):
              errors.append(
                  message_with_line(
                      cell,
                      f"Found a block quote (like `> ...`) as the first element of a cell; this must be avoided because it may cause problems during the reStructuredText conversion (https://github.com/spatialaudio/nbsphinx/issues/450). Consider: moving the block quote",
                      sourcepos=first.sourcepos,
                  )
              )
  
      if errors:
          raise FormattingError(errors)
  
imports: import argparse
  import commonmark
  import nbformat
  import os
  import re
  import subprocess
  import sys
  import textwrap
  from pathlib import Path
label_desc: Use image node_id 21 for calling a global function with example usage: no_leading_block_quotes(cells) without return types