
    ~Zi                        S r SSKJr  SSKJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr   " S S\
5      r " S S\5      r " S S\5      rg)zOverall .pptx package.    )annotations)IOIterator)RELATIONSHIP_TYPE)
OpcPackagePackURI)CorePropertiesPart)Image	ImagePart)	MediaPart)lazypropertyc                  |    \ rS rSrSr\SS j5       rSS jrS rSS jr	S r
\S 5       r\S	 5       r\S
 5       rSrg)Package   zAn overall .pptx package.c                     U R                  [        R                  5      $ ! [         a;    [        R
                  " U 5      nU R                  U[        R                  5        Us $ f = f)zInstance of |CoreProperties| holding read/write Dublin Core doc properties.

Creates a default core properties part if one is not present (not common).
)part_related_byRTCORE_PROPERTIESKeyErrorr
   default	relate_to)self
core_propss     f/var/www/eduai.edurigo.com/question_generate/ques_gen_env/lib/python3.13/site-packages/pptx/package.pycore_propertiesPackage.core_properties   sW    	''(:(:;; 	+33D9JNN:r'9'9:	s   ! AA&%A&c                8    U R                   R                  U5      $ )z
Return an |ImagePart| object containing the image in *image_file*. If
the image part already exists in this package, it is reused,
otherwise a new one is created.
)_image_partsget_or_add_image_part)r   
image_files     r   r    Package.get_or_add_image_part    s       66zBB    c                8    U R                   R                  U5      $ )zReturn a |MediaPart| object containing the media in *media*.

If a media part for this media bytestream ("file") is already present
in this package, it is reused, otherwise a new one is created.
)_media_partsget_or_add_media_part)r   medias     r   r&   Package.get_or_add_media_part(   s       66u==r#   c                <   ^  U 4S jnU" 5       n[        SX14-  5      $ )zReturn a |PackURI| instance representing the next available image partname.

Partname uses the next available sequence number. *ext* is used as the extention on the
returned partname.
c                 `  > [        TR                  5        V s/ s HT  n U R                  R                  S5      (       d  M%  U R                  R                  c  M>  U R                  R                  PMV     sn 5      n[        U5       H  u  p#US-   nXC:  d  M  Us  $    [        U5      S-   $ s  sn f )Nz/ppt/media/image   sorted
iter_partspartname
startswithidx	enumeratelen)part
image_idxsi	image_idxr1   r   s        r   first_available_image_idx>Package.next_image_partname.<locals>.first_available_image_idx7   s     !% 1 1001CD & !MM--	 &DMM%% 1	J !** 5!e?J !6 z?Q&&s   $B+B+B+z/ppt/media/image%d.%sr   )r   extr8   r1   s   `   r   next_image_partnamePackage.next_image_partname0   s%    	'" ().#;<<r#   c                <   ^  U 4S jnU" 5       n[        SX14-  5      $ )zReturn |PackURI| instance for next available media partname.

Partname is first available, starting at sequence number 1. Empty
sequence numbers are reused. *ext* is used as the extension on the
returned partname.
c                 .  > [        TR                  5        V s/ s H;  n U R                  R                  S5      (       d  M%  U R                  R                  PM=     sn 5      n[        U5       H  u  p#US-   nXC:  d  M  Us  $    [        U5      S-   $ s  sn f )Nz/ppt/media/mediar+   r,   )r4   
media_idxsr6   	media_idxr1   r   s        r   first_available_media_idx>Package.next_media_partname.<locals>.first_available_media_idxS   s     !% 1 1}}//0BC &DMM%% 1J !** 5!e?J !6 z?Q&&s   $BBz/ppt/media/media%d.%sr   )r   r:   rA   r1   s   `   r   next_media_partnamePackage.next_media_partnameK   s%    	' ().#;<<r#   c                    U R                   $ )zE
Reference to the |Presentation| instance contained in this package.
)main_document_partr   s    r   presentation_partPackage.presentation_partd   s    
 &&&r#   c                    [        U 5      $ )zK
|_ImageParts| object providing access to the image parts in this
package.
)_ImagePartsrG   s    r   r   Package._image_partsk   s     4  r#   c                    [        U 5      $ )z~Return |_MediaParts| object for this package.

The media parts object provides access to all the media parts in this
package.
)_MediaPartsrG   s    r   r%   Package._media_partss   s     4  r#    N)returnr
   )r!   str | IO[bytes])r:   strrQ   r	   )__name__
__module____qualname____firstlineno____doc__r   r   r    r&   r;   rC   propertyrH   r   r%   __static_attributes__rP   r#   r   r   r      sh    #
 
C>=6=2 ' ' ! ! ! !r#   r   c                  J   ^  \ rS rSrSrU 4S jrSS jrS	S jrS
S jrSr	U =r
$ )rK   }   z0Provides access to the image parts in a package.c                6   > [         [        U ]  5         Xl        g N)superrK   __init___packager   package	__class__s     r   r`   _ImageParts.__init__       k4)+r#   c              #    #    / nU R                   R                  5        H^  nUR                  (       a  M  UR                  [        R
                  :w  a  M6  UR                  nX1;   a  MI  UR                  U5        Uv   M`     g7f)z?Generate a reference to each |ImagePart| object in the package.N)ra   	iter_relsis_externalreltyper   IMAGEtarget_partappend)r   image_partsrel
image_parts       r   __iter___ImageParts.__iter__   sd     ==**,C{{bhh&J(z* -s   B Bc                    [         R                  " U5      nU R                  UR                  5      nU(       a  U$ [        R
                  " U R                  U5      $ )a  Return |ImagePart| object containing the image in `image_file`.

`image_file` can be either a path to an image file or a file-like object
containing an image. If an image part containing this same image already exists,
that instance is returned, otherwise a new image part is created.
)r   	from_file_find_by_sha1sha1r   newra   )r   r!   imagerp   s       r   r    !_ImageParts.get_or_add_image_part   sB     
+''

3
'zPY]]4==%-PPr#   c                d    U  H*  n[        US5      (       d  M  UR                  U:X  d  M(  Us  $    g)z
Return an |ImagePart| object belonging to this package or |None| if
no matching image part is found. The image part is identified by the
SHA1 hash digest of the image binary it contains.
rv   N)hasattrrv   )r   rv   rp   s      r   ru   _ImageParts._find_by_sha1   s5     J:v..$&!!  r#   ra   )rQ   zIterator[ImagePart])r!   rR   rQ   r   )rv   rS   rQ   zImagePart | None)rT   rU   rV   rW   rX   r`   rq   r    ru   rZ   __classcell__rd   s   @r   rK   rK   }   s     : 	Q r#   rK   c                  >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )rN      zProvides access to the media parts in a package.

Supports iteration and :meth:`get()` using the media object SHA1 hash as
its key.
c                6   > [         [        U ]  5         Xl        g r^   )r_   rN   r`   ra   rb   s     r   r`   _MediaParts.__init__   rf   r#   c              #  (  #    / nU R                   R                  5        Hn  nUR                  (       a  M  UR                  [        R
                  [        R                  4;  a  MF  UR                  nX1;   a  MY  UR                  U5        Uv   Mp     g7f)z?Generate a reference to each |MediaPart| object in the package.N)	ra   rh   ri   rj   r   MEDIAVIDEOrl   rm   )r   media_partsro   
media_parts       r   rq   _MediaParts.__iter__   so     
 ==**,C{{288RXX"66J(z* -s   BBc                    U R                  UR                  5      nUc!  [        R                  " U R                  U5      nU$ )zReturn a |MediaPart| object containing the media in *media*.

If this package already contains a media part for the same
bytestream, that instance is returned, otherwise a new media part is
created.
)ru   rv   r   rw   ra   )r   r'   r   s      r   r&   !_MediaParts.get_or_add_media_part   s8     ''

3
"t}}e<Jr#   c                >    U  H  nUR                   U:X  d  M  Us  $    g)zReturn |MediaPart| object having *sha1* hash or None if not found.

All media parts belonging to this package are considered. A media
part is identified by the SHA1 hash digest of its bytestream
("file").
N)rv   )r   rv   r   s      r   ru   _MediaParts._find_by_sha1   s%     J$&!!  r#   r}   )rT   rU   rV   rW   rX   r`   rq   r&   ru   rZ   r~   r   s   @r   rN   rN      s!     "

 
r#   rN   N)rX   
__future__r   typingr   r   pptx.opc.constantsr   r   pptx.opc.packager   pptx.opc.packurir	   pptx.parts.corepropsr
   pptx.parts.imager   r   pptx.parts.mediar   	pptx.utilr   r   objectrK   rN   rP   r#   r   <module>r      sK     "  6 ' $ 3 - & "j!j j!Z,& ,^2& 2r#   