"""Core properties part, corresponds to ``/docProps/core.xml`` part in package.""" from __future__ import annotations import datetime as dt from typing import TYPE_CHECKING from pptx.opc.constants import CONTENT_TYPE as CT from pptx.opc.package import XmlPart from pptx.opc.packuri import PackURI from pptx.oxml.coreprops import CT_CoreProperties if TYPE_CHECKING: from pptx.package import Package class CorePropertiesPart(XmlPart): """Corresponds to part named `/docProps/core.xml`. Contains the core document properties for this document package. """ _element: CT_CoreProperties @classmethod def default(cls, package: Package): """Return default new |CorePropertiesPart| instance suitable as starting point. This provides a base for adding core-properties to a package that doesn't yet have any. """ core_props = cls._new(package) core_props.title = "PowerPoint Presentation" core_props.last_modified_by = "python-pptx" core_props.revision = 1 core_props.modified = dt.datetime.now(dt.timezone.utc).replace(tzinfo=None) return core_props @property def author(self) -> str: return self._element.author_text @author.setter def author(self, value: str): self._element.author_text = value @property def category(self) -> str: return self._element.category_text @category.setter def category(self, value: str): self._element.category_text = value @property def comments(self) -> str: return self._element.comments_text @comments.setter def comments(self, value: str): self._element.comments_text = value @property def content_status(self) -> str: return self._element.contentStatus_text @content_status.setter def content_status(self, value: str): self._element.contentStatus_text = value @property def created(self): return self._element.created_datetime @created.setter def created(self, value: dt.datetime): self._element.created_datetime = value @property def identifier(self) -> str: return self._element.identifier_text @identifier.setter def identifier(self, value: str): self._element.identifier_text = value @property def keywords(self) -> str: return self._element.keywords_text @keywords.setter def keywords(self, value: str): self._element.keywords_text = value @property def language(self) -> str: return self._element.language_text @language.setter def language(self, value: str): self._element.language_text = value @property def last_modified_by(self) -> str: return self._element.lastModifiedBy_text @last_modified_by.setter def last_modified_by(self, value: str): self._element.lastModifiedBy_text = value @property def last_printed(self): return self._element.lastPrinted_datetime @last_printed.setter def last_printed(self, value: dt.datetime): self._element.lastPrinted_datetime = value @property def modified(self): return self._element.modified_datetime @modified.setter def modified(self, value: dt.datetime): self._element.modified_datetime = value @property def revision(self): return self._element.revision_number @revision.setter def revision(self, value: int): self._element.revision_number = value @property def subject(self) -> str: return self._element.subject_text @subject.setter def subject(self, value: str): self._element.subject_text = value @property def title(self) -> str: return self._element.title_text @title.setter def title(self, value: str): self._element.title_text = value @property def version(self) -> str: return self._element.version_text @version.setter def version(self, value: str): self._element.version_text = value @classmethod def _new(cls, package: Package) -> CorePropertiesPart: """Return new empty |CorePropertiesPart| instance.""" return CorePropertiesPart( PackURI("/docProps/core.xml"), CT.OPC_CORE_PROPERTIES, package, CT_CoreProperties.new_coreProperties(), )
Memory