diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/docx/parts/settings.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/docx/parts/settings.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docx/parts/settings.py b/.venv/lib/python3.12/site-packages/docx/parts/settings.py new file mode 100644 index 00000000..116facca --- /dev/null +++ b/.venv/lib/python3.12/site-packages/docx/parts/settings.py @@ -0,0 +1,51 @@ +"""|SettingsPart| and closely related objects.""" + +from __future__ import annotations + +import os +from typing import TYPE_CHECKING, cast + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.packuri import PackURI +from docx.opc.part import XmlPart +from docx.oxml.parser import parse_xml +from docx.settings import Settings + +if TYPE_CHECKING: + from docx.oxml.settings import CT_Settings + from docx.package import Package + + +class SettingsPart(XmlPart): + """Document-level settings part of a WordprocessingML (WML) package.""" + + def __init__( + self, partname: PackURI, content_type: str, element: CT_Settings, package: Package + ): + super().__init__(partname, content_type, element, package) + self._settings = element + + @classmethod + def default(cls, package: Package): + """Return a newly created settings part, containing a default `w:settings` + element tree.""" + partname = PackURI("/word/settings.xml") + content_type = CT.WML_SETTINGS + element = cast("CT_Settings", parse_xml(cls._default_settings_xml())) + return cls(partname, content_type, element, package) + + @property + def settings(self) -> Settings: + """A |Settings| proxy object for the `w:settings` element in this part. + + Contains the document-level settings for this document. + """ + return Settings(self._settings) + + @classmethod + def _default_settings_xml(cls): + """Return a bytestream containing XML for a default settings part.""" + path = os.path.join(os.path.split(__file__)[0], "..", "templates", "default-settings.xml") + with open(path, "rb") as f: + xml_bytes = f.read() + return xml_bytes |