
    hi*                       d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z ddl	mZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZm Z m!Z! ddl"m#Z# erddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z,  G d de          Z- G d de-          Z. G d de-          Z/ G d de-          Z0 G d de-          Z1 G d de-          Z2dS ) zSlide and related objects.    )annotations)IOTYPE_CHECKINGcast)PROG_ID)CONTENT_TYPE)RELATIONSHIP_TYPE)XmlPart)PackURI)CT_NotesMasterCT_NotesSlideCT_Slide)CT_OfficeStyleSheet)	ChartPart)EmbeddedPackagePart)NotesMaster
NotesSlideSlideSlideLayoutSlideMaster)lazyproperty)	ChartData)XL_CHART_TYPE)Video)Image	ImagePartc                  F    e Zd ZU dZded<   ddZddZedd            ZdS )BaseSlidePartzBase class for slide parts.

    This includes slide, slide-layout, and slide-master parts, but also notes-slide,
    notes-master, and handout-master parts.
    r   _elementrIdstrreturnr   c                R    t          d|                     |                    j        S )zReturn an |Image| object containing the image related to this slide by *rId*.

        Raises |KeyError| if no image is related by that id, which would generally indicate a
        corrupted .pptx file.
        r   )r   related_partimageselfr    s     h/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/pptx/parts/slide.py	get_imagezBaseSlidePart.get_image#   s%     K!2!23!7!788>>    
image_filestr | IO[bytes]c                ~    | j                             |          }|                     |t          j                  }||fS )a@  Return `(image_part, rId)` pair corresponding to `image_file`.

        The returned |ImagePart| object contains the image in `image_file` and is
        related to this slide with the key `rId`. If either the image part or
        relationship already exists, they are reused, otherwise they are newly created.
        )_packageget_or_add_image_part	relate_toRTIMAGE)r'   r+   
image_partr    s       r(   r/   z#BaseSlidePart.get_or_add_image_part+   s8     ]88DD
nnZ223r*   c                $    | j         j        j        S )zInternal name of this slide.)r   cSldnamer'   s    r(   r6   zBaseSlidePart.name6   s     }!&&r*   N)r    r!   r"   r   )r+   r,   )r"   r!   )	__name__
__module____qualname____doc____annotations__r)   r/   propertyr6    r*   r(   r   r      sv           ? ? ? ?	 	 	 	 ' ' ' X' ' 'r*   r   c                  j    e Zd ZdZed             Zed             Zed             Zed             Z	dS )NotesMasterPartz]Notes master part.

    Corresponds to package file `ppt/notesMasters/notesMaster1.xml`.
    c                    |                      |          }|                     |          }|                    |t          j                   |S )zv
        Create and return a default notes master part, including creating the
        new theme it requires.
        )_new_new_theme_partr0   r1   THEME)clspackagenotes_master_part
theme_parts       r(   create_defaultzNotesMasterPart.create_defaultB   sG      HHW--((11
##J999  r*   c                ,    t          | j        |           S )zV
        Return the |NotesMaster| object that proxies this notes master part.
        )r   r   r7   s    r(   notes_masterzNotesMasterPart.notes_masterM       
 4=$///r*   c                v    t          t          d          t          j        |t	          j                              S )z
        Create and return a standalone, default notes master part based on
        the built-in template (without any related parts, such as theme).
        z"/ppt/notesMasters/notesMaster1.xml)r@   r   CTPML_NOTES_MASTERr   new_defaultrE   rF   s     r(   rB   zNotesMasterPart._newT   s7     899&((	
 
 	
r*   c                    t          |                    d          t          j        |t	          j                              S )zCReturn new default theme-part suitable for use with a notes master.z/ppt/theme/theme%d.xml)r
   next_partnamerN   	OFC_THEMEr   rP   rQ   s     r(   rC   zNotesMasterPart._new_theme_parta   s<     !!":;;L+--	
 
 	
r*   N)
r8   r9   r:   r;   classmethodrI   r   rK   rB   rC   r>   r*   r(   r@   r@   <   s         
 ! ! [! 0 0 \0 

 

 [

 
 
 [
 
 
r*   r@   c                  j    e Zd ZdZed             Zed             Zed             Zed             Z	dS )NotesSlidePartzNotes slide part.

    Contains the slide notes content and the layout for the slide handout page.
    Corresponds to package file `ppt/notesSlides/notesSlide[1-9][0-9]*.xml`.
    c                    |j         j        }|                     |||          }|j        }|                    |j                   |S )a'  Return new |NotesSlidePart| for the slide in `slide_part`.

        The new notes-slide part is based on the (singleton) notes master and related to
        both the notes-master part and `slide_part`. If no notes-master is present,
        one is created based on the default template.
        )presentation_partrG   _add_notes_slide_partnotes_slideclone_master_placeholdersrK   )rE   rF   
slide_partrG   notes_slide_partr[   s         r(   newzNotesSlidePart.news   sO     $5G44WjJ[\\&2--.?.LMMMr*   c                N    |                      t          j                  }|j        S )z?Return the |NotesMaster| object this notes slide inherits from.)part_related_byr1   NOTES_MASTERrK   )r'   rG   s     r(   rK   zNotesSlidePart.notes_master   #     !00AA --r*   c                ,    t          | j        |           S )zBReturn the |NotesSlide| object that proxies this notes slide part.)r   r   r7   s    r(   r[   zNotesSlidePart.notes_slide   s     $-...r*   c                   t          |                    d          t          j        |t	          j                              }|                    |t          j                   |                    |t          j	                   |S )zCreate and return a new notes-slide part.

        The return part is fully related, but has no shape content (i.e. placeholders
        not cloned).
        z!/ppt/notesSlides/notesSlide%d.xml)
rW   rS   rN   PML_NOTES_SLIDEr   r_   r0   r1   rb   SLIDE)rE   rF   r]   rG   r^   s        r(   rZ   z$NotesSlidePart._add_notes_slide_part   st     *!!"EFF	
 
 	""#4boFFF"":rx888r*   N)
r8   r9   r:   r;   rU   r_   r   rK   r[   rZ   r>   r*   r(   rW   rW   l   s              [  . . \.
 / / \/     [     r*   rW   c                      e Zd ZdZed             ZddZddZddZe	d             Z
edd            Zed             Ze	d d            Ze	d!d            Zd ZdS )"	SlidePartzISlide part. Corresponds to package files ppt/slides/slide[1-9][0-9]*.xml.c                     | |t           j        |t          j                              }|                    |t
          j                   |S )zReturn newly-created blank slide part.

        The new slide-part has `partname` and a relationship to `slide_layout_part`.
        )rN   	PML_SLIDEr   r_   r0   r1   SLIDE_LAYOUT)rE   partnamerF   slide_layout_partr]   s        r(   r_   zSlidePart.new   s@     S2<(,..II
.@@@r*   
chart_typer   
chart_datar   c                t    |                      t          j        ||| j                  t          j                  S )zReturn str rId of new |ChartPart| object containing chart of `chart_type`.

        The chart depicts `chart_data` and is related to the slide contained in this
        part by `rId`.
        )r0   r   r_   r.   r1   CHART)r'   ro   rp   s      r(   add_chart_partzSlidePart.add_chart_part   s,     ~~imJ
DMRRTVT\]]]r*   prog_idPROG_ID | strole_object_filer,   c                    t          |t                    rt          j        nt          j        }|                     t          j        ||                     |          | j	                  |          S )zHReturn rId of newly-added OLE-object part formed from `ole_object_file`.)

isinstancer   r1   PACKAGE
OLE_OBJECTr0   r   factory_blob_from_filer.   )r'   rt   rv   relationship_types       r(   add_embedded_ole_object_partz&SlidePart.add_embedded_ole_object_part   sc     +5Wg*F*FYBJJBM~~'--o>>  	
 
 	
r*   videor   r"   tuple[str, str]c                    | j                             |          }|                     |t          j                  }|                     |t          j                  }||fS )a  Return rIds for media and video relationships to media part.

        A new |MediaPart| object is created if it does not already exist
        (such as would occur if the same video appeared more than once in
         a presentation). Two relationships to the media part are created,
        one each with MEDIA and VIDEO relationship types. The need for two
        appears to be for legacy support for an earlier (pre-Office 2010)
        PowerPoint media embedding strategy.
        )r.   get_or_add_media_partr0   r1   MEDIAVIDEO)r'   r   
media_part	media_rId	video_rIds        r(   get_or_add_video_media_partz%SlidePart.get_or_add_video_media_part   sN     ]88??
NN:rx88	NN:rx88	)##r*   c                j    	 |                      t          j                   n# t          $ r Y dS w xY wdS )a  
        Return True if this slide has a notes slide, False otherwise. A notes
        slide is created by the :attr:`notes_slide` property when one doesn't
        exist; use this property to test for a notes slide without the
        possible side-effect of creating one.
        FT)ra   r1   NOTES_SLIDEKeyErrorr7   s    r(   has_notes_slidezSlidePart.has_notes_slide   sG    	  0000 	 	 	55	ts   " 
00r   c                    	 |                      t          j                  }n$# t          $ r |                                 }Y nw xY w|j        S )zThe |NotesSlide| instance associated with this slide.

        If the slide does not have a notes slide, a new one is created. The same single instance
        is returned on each call.
        )ra   r1   r   r   rZ   r[   r'   r^   s     r(   r[   zSlidePart.notes_slide   s\    	<#33BNCC 	< 	< 	<#99;;	<++s   " AAc                ,    t          | j        |           S )zB
        The |Slide| object representing this slide part.
        )r   r   r7   s    r(   slidezSlidePart.slide   s    
 T]D)))r*   intc                D    | j         j        }|                    |           S )zPReturn the slide identifier stored in the presentation part for this slide part.)rF   rY   slide_id)r'   rY   s     r(   r   zSlidePart.slide_id   s#     !L: ))$///r*   r   c                N    |                      t          j                  }|j        S )zE|SlideLayout| object the slide in this part inherits appearance from.)ra   r1   rl   slide_layout)r'   rn   s     r(   r   zSlidePart.slide_layout   rc   r*   c                    t                               | j        |           }|                     |t          j                   |S )z
        Return a newly created |NotesSlidePart| object related to this slide
        part. Caller is responsible for ensuring this slide doesn't already
        have a notes slide part.
        )rW   r_   rF   r0   r1   r   r   s     r(   rZ   zSlidePart._add_notes_slide_part   s9     *--dlDAA'888r*   N)ro   r   rp   r   )rt   ru   rv   r,   )r   r   r"   r   )r"   r   )r"   r   )r"   r   )r8   r9   r:   r;   rU   r_   rs   r~   r   r=   r   r   r[   r   r   r   rZ   r>   r*   r(   ri   ri      s       SS  [^ ^ ^ ^

 

 

 

$ $ $ $   X 
, 
, 
, \
, * * \* 0 0 0 X0
 . . . X.
         r*   ri   c                  @    e Zd ZdZed             Zedd            ZdS )SlideLayoutPartzjSlide layout part.

    Corresponds to package files ``ppt/slideLayouts/slideLayout[1-9][0-9]*.xml``.
    c                ,    t          | j        |           S )zB
        The |SlideLayout| object representing this part.
        )r   r   r7   s    r(   r   zSlideLayoutPart.slide_layout  rL   r*   r"   r   c                J    |                      t          j                  j        S )z>Slide master from which this slide layout inherits properties.)ra   r1   SLIDE_MASTERslide_masterr7   s    r(   r   zSlideLayoutPart.slide_master  s     ##BO44AAr*   N)r"   r   )r8   r9   r:   r;   r   r   r=   r   r>   r*   r(   r   r     s_         
 0 0 \0 B B B XB B Br*   r   c                  0    e Zd ZdZd	dZed             ZdS )
SlideMasterPartzfSlide master part.

    Corresponds to package files ppt/slideMasters/slideMaster[1-9][0-9]*.xml.
    r    r!   r"   r   c                6    |                      |          j        S )z?Return |SlideLayout| related to this slide-master by key `rId`.)r$   r   r&   s     r(   related_slide_layoutz$SlideMasterPart.related_slide_layout   s      %%22r*   c                ,    t          | j        |           S )zB
        The |SlideMaster| object representing this part.
        )r   r   r7   s    r(   r   zSlideMasterPart.slide_master$  rL   r*   N)r    r!   r"   r   )r8   r9   r:   r;   r   r   r   r>   r*   r(   r   r     sM         
3 3 3 3 0 0 \0 0 0r*   r   N)3r;   
__future__r   typingr   r   r   pptx.enum.shapesr   pptx.opc.constantsr   rN   r	   r1   pptx.opc.packager
   pptx.opc.packurir   pptx.oxml.slider   r   r   pptx.oxml.themer   pptx.parts.chartr   pptx.parts.embeddedpackager   
pptx.slider   r   r   r   r   	pptx.utilr   pptx.chart.datar   pptx.enum.chartr   
pptx.mediar   pptx.parts.imager   r   r   r@   rW   ri   r   r   r>   r*   r(   <module>r      s       " " " " " " * * * * * * * * * * $ $ $ $ $ $ 1 1 1 1 1 1 6 6 6 6 6 6 $ $ $ $ $ $ $ $ $ $ $ $ C C C C C C C C C C / / / / / / & & & & & & : : : : : : O O O O O O O O O O O O O O " " " " " " 2))))))------      11111111' ' ' ' 'G ' ' 'D-
 -
 -
 -
 -
m -
 -
 -
`/  /  /  /  / ] /  /  / df  f  f  f  f  f  f  f RB B B B Bm B B B&0 0 0 0 0m 0 0 0 0 0r*   