class_docstr: Process Tables. 
class_docstr_tok: ["Process","Tables","."]
docstr: Given a row of text, build table cells. 
docstr_tok: ["Given","a","row","of","text",",","build","table","cells","."]
code: def _build_row(
      self, row: str, parent: etree.Element, align: Sequence[str | None]
  ) -> None:
      """Given a row of text, build table cells."""
      tr = etree.SubElement(parent, "tr")
      tag = "td"
      if parent.tag == "thead":
          tag = "th"
      cells = self._split_row(row)
      # We use align here rather than cells to ensure every row
      # contains the same number of columns.
      for i, a in enumerate(align):
          c = etree.SubElement(tr, tag)
          try:
              c.text = cells[i].strip(" ")
          except IndexError:  # pragma: no cover
              c.text = ""
          if a:
              if self.config["use_align_attribute"]:
                  c.set("align", a)
              else:
                  c.set("style", f"text-align: {a};")
  
file_path: markdown/markdown/extensions/tables.py
imports: from __future__ import annotations
  from .None import Extension
  from ..blockprocessors import BlockProcessor
  import xml.etree.ElementTree
  import re
  from typing import TYPE_CHECKING, Any, Sequence
label_desc: Use image node_id 5 for calling the TableProcessor obj's underlying member method code with example usage: obj._build_row(row, parent, align) without return types