athena-python-pptx 0.9.0__tar.gz → 0.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/PKG-INFO +1 -1
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/__init__.py +1 -1
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/slides.py +38 -4
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pyproject.toml +1 -1
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/.gitignore +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/API_PARITY_REPORT.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/CHANGELOG.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/CLAUDE.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/DEV-GUIDE.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/PARITY_QUESTIONS.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/PUBLISHING.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/README.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/docs/API_PARITY_EXCEPTIONS.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/docs/athena-api.json +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/docs/athena-api.md +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/_athena_extension.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/_citations.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/_ptc.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/_references.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/action.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/batching.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/__init__.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/axis.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/category.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/chart.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/data.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/datalabel.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/legend.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/marker.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/plot.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/point.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/series.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/chart/xlsx.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/client.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/commands.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/decorators.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/dml/__init__.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/dml/chtfmt.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/dml/color.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/dml/effect.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/dml/fill.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/dml/line.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/docgen.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/__init__.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/action.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/chart.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/dml.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/lang.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/shapes.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/enum/text.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/errors.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/exc.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/media.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/package.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/__init__.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/_base.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/chart.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/coreprops.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/embeddedpackage.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/image.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/media.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/presentation.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/parts/slide.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/presentation.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/__init__.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/autoshape.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/base.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/connector.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/freeform.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/graphfrm.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/group.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/picture.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/placeholder.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shapes/shapetree.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/shared.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/slide.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/spec.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/table.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/text/__init__.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/text/fonts.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/text/layout.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/text/text.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/types.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/typing.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/units.py +0 -0
- {athena_python_pptx-0.9.0 → athena_python_pptx-0.9.1}/pptx/util.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: athena-python-pptx
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.1
|
|
4
4
|
Summary: Drop-in replacement for python-pptx that connects to PPTX Studio for real-time collaboration
|
|
5
5
|
Project-URL: Homepage, https://github.com/pptx-studio/python-sdk
|
|
6
6
|
Project-URL: Documentation, https://docs.pptx-studio.com/sdk/python
|
|
@@ -745,6 +745,7 @@ class Slide:
|
|
|
745
745
|
notes: Optional[str] = None,
|
|
746
746
|
layout_index: Optional[int] = None,
|
|
747
747
|
layout_name: Optional[str] = None,
|
|
748
|
+
layout_path: Optional[str] = None,
|
|
748
749
|
):
|
|
749
750
|
self._presentation = presentation
|
|
750
751
|
self._slide_id = slide_id
|
|
@@ -756,6 +757,7 @@ class Slide:
|
|
|
756
757
|
# Layout tracking
|
|
757
758
|
self._layout_index = layout_index
|
|
758
759
|
self._layout_name = layout_name
|
|
760
|
+
self._layout_path = layout_path
|
|
759
761
|
self._layout: Optional[SlideLayout] = None
|
|
760
762
|
|
|
761
763
|
# Initialize shapes collection
|
|
@@ -880,6 +882,8 @@ class Slide:
|
|
|
880
882
|
name=self._layout_name or "Unknown",
|
|
881
883
|
index=self._layout_index or 0,
|
|
882
884
|
slide=self,
|
|
885
|
+
presentation=self._presentation,
|
|
886
|
+
path=getattr(self, "_layout_path", None),
|
|
883
887
|
)
|
|
884
888
|
return self._layout
|
|
885
889
|
|
|
@@ -910,6 +914,7 @@ class Slide:
|
|
|
910
914
|
|
|
911
915
|
self._layout_index = layout_index
|
|
912
916
|
self._layout_name = layout_name
|
|
917
|
+
self._layout_path = getattr(value, "_path", None) if isinstance(value, SlideLayout) else None
|
|
913
918
|
self._layout = None # Reset cached layout
|
|
914
919
|
|
|
915
920
|
if self._buffer:
|
|
@@ -1838,6 +1843,7 @@ class Slide:
|
|
|
1838
1843
|
self._notes = slide_snapshot.notes
|
|
1839
1844
|
self._layout_index = _parse_layout_index(slide_snapshot.layout_path)
|
|
1840
1845
|
self._layout_name = slide_snapshot.layout_name
|
|
1846
|
+
self._layout_path = slide_snapshot.layout_path
|
|
1841
1847
|
self._layout = None
|
|
1842
1848
|
|
|
1843
1849
|
# Rebuild shapes collection
|
|
@@ -1890,6 +1896,7 @@ class Slides:
|
|
|
1890
1896
|
notes=slide_snapshot.notes,
|
|
1891
1897
|
layout_index=_parse_layout_index(slide_snapshot.layout_path),
|
|
1892
1898
|
layout_name=slide_snapshot.layout_name,
|
|
1899
|
+
layout_path=slide_snapshot.layout_path,
|
|
1893
1900
|
)
|
|
1894
1901
|
self._slides.append(slide)
|
|
1895
1902
|
self._slides_by_id[slide_snapshot.id] = slide
|
|
@@ -2644,6 +2651,7 @@ class Slides:
|
|
|
2644
2651
|
notes=slide_snapshot.notes,
|
|
2645
2652
|
layout_index=_parse_layout_index(slide_snapshot.layout_path),
|
|
2646
2653
|
layout_name=slide_snapshot.layout_name,
|
|
2654
|
+
layout_path=slide_snapshot.layout_path,
|
|
2647
2655
|
)
|
|
2648
2656
|
else:
|
|
2649
2657
|
slide._update_from_snapshot(slide_snapshot, snapshot.elements)
|
|
@@ -2990,11 +2998,37 @@ class SlideLayout:
|
|
|
2990
2998
|
def slide_master(self) -> Optional["SlideMaster"]:
|
|
2991
2999
|
"""The :class:`SlideMaster` this layout belongs to.
|
|
2992
3000
|
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
3001
|
+
python-pptx resolves this through the layout part's relationship to
|
|
3002
|
+
its master and never returns ``None``. Layout proxies here are often
|
|
3003
|
+
constructed without a master backreference (e.g. ``slide.slide_layout``),
|
|
3004
|
+
so the master is resolved lazily from the presentation's theme
|
|
3005
|
+
hierarchy: first by layout path, then by layout name, falling back to
|
|
3006
|
+
the first master. Returns ``None`` only when the deck snapshot carries
|
|
3007
|
+
no master data at all.
|
|
2996
3008
|
"""
|
|
2997
|
-
|
|
3009
|
+
if self._slide_master_ref is not None:
|
|
3010
|
+
return self._slide_master_ref
|
|
3011
|
+
prs = self._presentation
|
|
3012
|
+
if prs is None and self._slide is not None:
|
|
3013
|
+
prs = self._slide._presentation
|
|
3014
|
+
if prs is None:
|
|
3015
|
+
return None
|
|
3016
|
+
masters = prs.slide_masters
|
|
3017
|
+
by_name: Optional["SlideMaster"] = None
|
|
3018
|
+
for master in masters:
|
|
3019
|
+
for layout in master.slide_layouts:
|
|
3020
|
+
if self._path is not None and layout._path == self._path:
|
|
3021
|
+
self._slide_master_ref = master
|
|
3022
|
+
return master
|
|
3023
|
+
if by_name is None and self._name is not None and layout._name == self._name:
|
|
3024
|
+
by_name = master
|
|
3025
|
+
if by_name is not None:
|
|
3026
|
+
self._slide_master_ref = by_name
|
|
3027
|
+
return by_name
|
|
3028
|
+
if len(masters) > 0:
|
|
3029
|
+
self._slide_master_ref = masters[0]
|
|
3030
|
+
return masters[0]
|
|
3031
|
+
return None
|
|
2998
3032
|
|
|
2999
3033
|
@property
|
|
3000
3034
|
def background(self) -> "_LayoutBackground":
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "athena-python-pptx"
|
|
7
|
-
version = "0.9.
|
|
7
|
+
version = "0.9.1"
|
|
8
8
|
description = "Drop-in replacement for python-pptx that connects to PPTX Studio for real-time collaboration"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|