class_docstr: Base class for block processors.
  
  Each subclass will provide the methods below to work with the source and
  tree. Each processor will need to define it's own `test` and `run`
  methods. The `test` method should return True or False, to indicate
  whether the current block should be processed by this processor. If the
  test passes, the parser will call the processors `run` method.
  
  Attributes:
      BlockProcessor.parser (BlockParser): The `BlockParser` instance this is attached to.
      BlockProcessor.tab_length (int): The tab length set on the `Markdown` instance.
class_docstr_tok: ["Base","class","for","block","processors",".","Each","subclass","will","provide","the","methods","below","to","work","with","the","source","and","tree",".","Each","processor","will","need","to","define","it","'s","own","`","test","`","and","`","run","`","methods",".","The","`","test","`","method","should","return","True","or","False",",","to","indicate","whether","the","current","block","should","be","processed","by","this","processor",".","If","the","test","passes",",","the","parser","will","call","the","processors","`","run","`","method",".","Attributes",":","BlockProcessor.parser","(","BlockParser",")",":","The","`","BlockParser","`","instance","this","is","attached","to",".","BlockProcessor.tab_length","(","int",")",":","The","tab","length","set","on","the","`","Markdown","`","instance","."]
docstr: Test for block type. Must be overridden by subclasses.
  
  As the parser loops through processors, it will call the `test`
  method on each to determine if the given block of text is of that
  type. This method must return a boolean `True` or `False`. The
  actual method of testing is left to the needs of that particular
  block type. It could be as simple as `block.startswith(some_string)`
  or a complex regular expression. As the block type may be different
  depending on the parent of the block (i.e. inside a list), the parent
  `etree` element is also provided and may be used as part of the test.
  
  Keyword arguments:
      parent: An `etree` element which will be the parent of the block.
      block: A block of text from the source which has been split at blank lines.
docstr_tok: ["Test","for","block","type",".","Must","be","overridden","by","subclasses",".","As","the","parser","loops","through","processors",",","it","will","call","the","`","test","`","method","on","each","to","determine","if","the","given","block","of","text","is","of","that","type",".","This","method","must","return","a","boolean","`","True","`","or","`","False","`",".","The","actual","method","of","testing","is","left","to","the","needs","of","that","particular","block","type",".","It","could","be","as","simple","as","`","block.startswith","(","some_string",")","`","or","a","complex","regular","expression",".","As","the","block","type","may","be","different","depending","on","the","parent","of","the","block","(","i.e",".","inside","a","list",")",",","the","parent","`","etree","`","element","is","also","provided","and","may","be","used","as","part","of","the","test",".","Keyword","arguments",":","parent",":","An","`","etree","`","element","which","will","be","the","parent","of","the","block",".","block",":","A","block","of","text","from","the","source","which","has","been","split","at","blank","lines","."]
code: def test(self, parent: etree.Element, block: str) -> bool:
      """Test for block type. Must be overridden by subclasses.
  
      As the parser loops through processors, it will call the `test`
      method on each to determine if the given block of text is of that
      type. This method must return a boolean `True` or `False`. The
      actual method of testing is left to the needs of that particular
      block type. It could be as simple as `block.startswith(some_string)`
      or a complex regular expression. As the block type may be different
      depending on the parent of the block (i.e. inside a list), the parent
      `etree` element is also provided and may be used as part of the test.
  
      Keyword arguments:
          parent: An `etree` element which will be the parent of the block.
          block: A block of text from the source which has been split at blank lines.
      """
      pass
  
imports: from __future__ import annotations
  import logging
  import re
  import xml.etree.ElementTree
  from typing import TYPE_CHECKING, Any
  from .None import util
  from .blockparser import BlockParser
label_desc: Use image node_id 5 for calling the BlockProcessor obj's underlying member method code with example usage: obj.test(parent, block) without return types