about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/docx/blkcntnr.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/docx/blkcntnr.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/docx/blkcntnr.py')
-rw-r--r--.venv/lib/python3.12/site-packages/docx/blkcntnr.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docx/blkcntnr.py b/.venv/lib/python3.12/site-packages/docx/blkcntnr.py
new file mode 100644
index 00000000..a9969f6f
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docx/blkcntnr.py
@@ -0,0 +1,100 @@
+# pyright: reportImportCycles=false
+
+"""Block item container, used by body, cell, header, etc.
+
+Block level items are things like paragraph and table, although there are a few other
+specialized ones like structured document tags.
+"""
+
+from __future__ import annotations
+
+from typing import TYPE_CHECKING, Iterator
+
+from typing_extensions import TypeAlias
+
+from docx.oxml.table import CT_Tbl
+from docx.oxml.text.paragraph import CT_P
+from docx.shared import StoryChild
+from docx.text.paragraph import Paragraph
+
+if TYPE_CHECKING:
+    import docx.types as t
+    from docx.oxml.document import CT_Body
+    from docx.oxml.section import CT_HdrFtr
+    from docx.oxml.table import CT_Tc
+    from docx.shared import Length
+    from docx.styles.style import ParagraphStyle
+    from docx.table import Table
+
+BlockItemElement: TypeAlias = "CT_Body | CT_HdrFtr | CT_Tc"
+
+
+class BlockItemContainer(StoryChild):
+    """Base class for proxy objects that can contain block items.
+
+    These containers include _Body, _Cell, header, footer, footnote, endnote, comment,
+    and text box objects. Provides the shared functionality to add a block item like a
+    paragraph or table.
+    """
+
+    def __init__(self, element: BlockItemElement, parent: t.ProvidesStoryPart):
+        super(BlockItemContainer, self).__init__(parent)
+        self._element = element
+
+    def add_paragraph(self, text: str = "", style: str | ParagraphStyle | None = None) -> Paragraph:
+        """Return paragraph newly added to the end of the content in this container.
+
+        The paragraph has `text` in a single run if present, and is given paragraph
+        style `style`.
+
+        If `style` is |None|, no paragraph style is applied, which has the same effect
+        as applying the 'Normal' style.
+        """
+        paragraph = self._add_paragraph()
+        if text:
+            paragraph.add_run(text)
+        if style is not None:
+            paragraph.style = style
+        return paragraph
+
+    def add_table(self, rows: int, cols: int, width: Length) -> Table:
+        """Return table of `width` having `rows` rows and `cols` columns.
+
+        The table is appended appended at the end of the content in this container.
+
+        `width` is evenly distributed between the table columns.
+        """
+        from docx.table import Table
+
+        tbl = CT_Tbl.new_tbl(rows, cols, width)
+        self._element._insert_tbl(tbl)  #  # pyright: ignore[reportPrivateUsage]
+        return Table(tbl, self)
+
+    def iter_inner_content(self) -> Iterator[Paragraph | Table]:
+        """Generate each `Paragraph` or `Table` in this container in document order."""
+        from docx.table import Table
+
+        for element in self._element.inner_content_elements:
+            yield (Paragraph(element, self) if isinstance(element, CT_P) else Table(element, self))
+
+    @property
+    def paragraphs(self):
+        """A list containing the paragraphs in this container, in document order.
+
+        Read-only.
+        """
+        return [Paragraph(p, self) for p in self._element.p_lst]
+
+    @property
+    def tables(self):
+        """A list containing the tables in this container, in document order.
+
+        Read-only.
+        """
+        from docx.table import Table
+
+        return [Table(tbl, self) for tbl in self._element.tbl_lst]
+
+    def _add_paragraph(self):
+        """Return paragraph newly added to the end of the content in this container."""
+        return Paragraph(self._element.add_p(), self)