461bf6fd40
CI / lint (3.11) (push) Has been cancelled
CI / lint (3.12) (push) Has been cancelled
CI / lint (3.13) (push) Has been cancelled
CI / shellcheck (push) Has been cancelled
CI / shfmt (push) Has been cancelled
CI / setup (3.11) (push) Has been cancelled
CI / setup (3.12) (push) Has been cancelled
CI / setup (3.13) (push) Has been cancelled
CI / check-licenses (3.12) (push) Has been cancelled
CI / test_unit (3.11) (push) Has been cancelled
CI / test_unit (3.12) (push) Has been cancelled
CI / test_unit (3.13) (push) Has been cancelled
CI / test_unit_no_extras (3.11) (push) Has been cancelled
CI / test_unit_no_extras (3.12) (push) Has been cancelled
CI / test_json_to_html (3.12) (push) Has been cancelled
CI / test_unit_no_extras (3.13) (push) Has been cancelled
CI / test_unit_dependency_extras (csv, 3.12, --extra csv) (push) Has been cancelled
CI / test_unit_dependency_extras (xlsx, 3.11, --extra xlsx) (push) Has been cancelled
CI / test_unit_dependency_extras (xlsx, 3.12, --extra xlsx) (push) Has been cancelled
CI / test_unit_dependency_extras (csv, 3.11, --extra csv) (push) Has been cancelled
CI / test_unit_dependency_extras (csv, 3.13, --extra csv) (push) Has been cancelled
CI / test_unit_dependency_extras (docx, 3.11, --extra docx) (push) Has been cancelled
CI / test_unit_dependency_extras (docx, 3.12, --extra docx) (push) Has been cancelled
CI / test_unit_dependency_extras (docx, 3.13, --extra docx) (push) Has been cancelled
CI / test_unit_dependency_extras (markdown, 3.11, --extra md) (push) Has been cancelled
CI / test_unit_dependency_extras (markdown, 3.12, --extra md) (push) Has been cancelled
CI / test_unit_dependency_extras (markdown, 3.13, --extra md) (push) Has been cancelled
CI / test_unit_dependency_extras (odt, 3.11, --extra odt) (push) Has been cancelled
CI / test_unit_dependency_extras (odt, 3.12, --extra odt) (push) Has been cancelled
CI / test_unit_dependency_extras (odt, 3.13, --extra odt) (push) Has been cancelled
CI / test_unit_dependency_extras (pdf-image, 3.11, --extra pdf --extra image --extra paddleocr) (push) Has been cancelled
CI / test_unit_dependency_extras (pdf-image, 3.12, --extra pdf --extra image --extra paddleocr) (push) Has been cancelled
CI / test_unit_dependency_extras (pdf-image, 3.13, --extra pdf --extra image --extra paddleocr) (push) Has been cancelled
CI / test_unit_dependency_extras (pptx, 3.11, --extra pptx) (push) Has been cancelled
CI / test_unit_dependency_extras (pptx, 3.12, --extra pptx) (push) Has been cancelled
CI / test_unit_dependency_extras (pptx, 3.13, --extra pptx) (push) Has been cancelled
CI / test_unit_dependency_extras (pypandoc, 3.11, --extra epub --extra org --extra rtf --extra rst) (push) Has been cancelled
CI / test_unit_dependency_extras (pypandoc, 3.12, --extra epub --extra org --extra rtf --extra rst) (push) Has been cancelled
CI / test_unit_dependency_extras (pypandoc, 3.13, --extra epub --extra org --extra rtf --extra rst) (push) Has been cancelled
Build And Push Docker Image / set-short-sha (push) Has been cancelled
Partition Benchmark / setup (push) Has been cancelled
Partition Benchmark / Measure and compare partition() runtime (push) Has been cancelled
CI / test_unit_dependency_extras (xlsx, 3.13, --extra xlsx) (push) Has been cancelled
CI / test_ingest_src (3.12) (push) Has been cancelled
CI / test_json_to_markdown (3.12) (push) Has been cancelled
CI / changelog (push) Has been cancelled
CI / test_dockerfile (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build And Push Docker Image / build-images (linux/amd64, opensource-linux-8core) (push) Has been cancelled
Build And Push Docker Image / build-images (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Build And Push Docker Image / publish-images (push) Has been cancelled
79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
import tempfile
|
|
from typing import IO, Any, Optional
|
|
|
|
from unstructured.documents.elements import Element
|
|
from unstructured.file_utils.model import FileType
|
|
from unstructured.partition.common.common import convert_office_doc, exactly_one
|
|
from unstructured.partition.common.metadata import get_last_modified_date
|
|
from unstructured.partition.pptx import partition_pptx
|
|
|
|
|
|
def partition_ppt(
|
|
filename: Optional[str] = None,
|
|
file: Optional[IO[bytes]] = None,
|
|
metadata_filename: Optional[str] = None,
|
|
metadata_last_modified: Optional[str] = None,
|
|
**kwargs: Any,
|
|
) -> list[Element]:
|
|
"""Partitions Microsoft PowerPoint Documents in .ppt format into their document elements.
|
|
|
|
Parameters
|
|
----------
|
|
filename
|
|
A string defining the target filename path.
|
|
file
|
|
A file-like object using "rb" mode --> open(filename, "rb").
|
|
metadata_last_modified
|
|
The last modified date for the document.
|
|
|
|
Note that all arguments valid on `partition_pptx()` are also valid here and will be passed
|
|
along to the `partition_pptx()` function.
|
|
"""
|
|
# -- Verify that only one of the arguments was provided
|
|
exactly_one(filename=filename, file=file)
|
|
|
|
last_modified = get_last_modified_date(filename) if filename else None
|
|
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
if filename:
|
|
# -- Verify filename.
|
|
if not os.path.exists(filename):
|
|
raise ValueError(f"The file {filename} does not exist.")
|
|
|
|
else:
|
|
assert file
|
|
# -- Create filename.
|
|
tmp_file_path = os.path.join(tmpdir, "tmp_file")
|
|
with open(tmp_file_path, "wb") as tmp_file:
|
|
tmp_file.write(file.read())
|
|
filename = tmp_file_path
|
|
|
|
_, filename_no_path = os.path.split(os.path.abspath(filename))
|
|
base_filename, _ = os.path.splitext(filename_no_path)
|
|
|
|
convert_office_doc(
|
|
filename,
|
|
tmpdir,
|
|
target_format="pptx",
|
|
target_filter="Impress MS PowerPoint 2007 XML",
|
|
)
|
|
pptx_filename = os.path.join(tmpdir, f"{base_filename}.pptx")
|
|
|
|
elements = partition_pptx(
|
|
filename=pptx_filename,
|
|
metadata_filename=metadata_filename or filename,
|
|
metadata_file_type=FileType.PPT,
|
|
metadata_last_modified=metadata_last_modified or last_modified,
|
|
**kwargs,
|
|
)
|
|
|
|
# -- Remove tmp.name from filename if parsing file
|
|
if file:
|
|
for element in elements:
|
|
element.metadata.filename = metadata_filename
|
|
|
|
return elements
|