Files
PsAgentAI/venv/lib/python3.11/site-packages/docx/shape.py
T
marcocosta10000 6b3b6541a7 feat: add psagentai agent with deployment and configuration
Initial project setup including the main agent script, configuration
files, profile JSON state, systemd service unit, startup script,
deployment documentation, and Python dependencies.

Includes .env, venv/, and __pycache__/ which should likely be
excluded via .gitignore to avoid committing secrets and artifacts.
2026-10-25 17:05:13 -03:00

104 lines
2.9 KiB
Python

"""Objects related to shapes.
A shape is a visual object that appears on the drawing layer of a document.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
from docx.enum.shape import WD_INLINE_SHAPE
from docx.oxml.ns import nsmap
from docx.shared import Parented
if TYPE_CHECKING:
from docx.oxml.document import CT_Body
from docx.oxml.shape import CT_Inline
from docx.parts.story import StoryPart
from docx.shared import Length
class InlineShapes(Parented):
"""Sequence of |InlineShape| instances, supporting len(), iteration, and indexed access."""
def __init__(self, body_elm: CT_Body, parent: StoryPart):
super(InlineShapes, self).__init__(parent)
self._body = body_elm
def __getitem__(self, idx: int):
"""Provide indexed access, e.g. 'inline_shapes[idx]'."""
try:
inline = self._inline_lst[idx]
except IndexError:
msg = "inline shape index [%d] out of range" % idx
raise IndexError(msg)
return InlineShape(inline)
def __iter__(self):
return (InlineShape(inline) for inline in self._inline_lst)
def __len__(self):
return len(self._inline_lst)
@property
def _inline_lst(self):
body = self._body
xpath = "//w:p/w:r/w:drawing/wp:inline"
return body.xpath(xpath)
class InlineShape:
"""Proxy for an ``<wp:inline>`` element, representing the container for an inline
graphical object."""
def __init__(self, inline: CT_Inline):
super(InlineShape, self).__init__()
self._inline = inline
@property
def height(self) -> Length:
"""Read/write.
The display height of this inline shape as an |Emu| instance.
"""
return self._inline.extent.cy
@height.setter
def height(self, cy: Length):
self._inline.extent.cy = cy
self._inline.graphic.graphicData.pic.spPr.cy = cy
@property
def type(self):
"""The type of this inline shape as a member of
``docx.enum.shape.WD_INLINE_SHAPE``, e.g. ``LINKED_PICTURE``.
Read-only.
"""
graphicData = self._inline.graphic.graphicData
uri = graphicData.uri
if uri == nsmap["pic"]:
blip = graphicData.pic.blipFill.blip
if blip.link is not None:
return WD_INLINE_SHAPE.LINKED_PICTURE
return WD_INLINE_SHAPE.PICTURE
if uri == nsmap["c"]:
return WD_INLINE_SHAPE.CHART
if uri == nsmap["dgm"]:
return WD_INLINE_SHAPE.SMART_ART
return WD_INLINE_SHAPE.NOT_IMPLEMENTED
@property
def width(self):
"""Read/write.
The display width of this inline shape as an |Emu| instance.
"""
return self._inline.extent.cx
@width.setter
def width(self, cx: Length):
self._inline.extent.cx = cx
self._inline.graphic.graphicData.pic.spPr.cx = cx