
    h                        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  SS	KJr   " S
 S\5      r " S S5      rg)z3WordprocessingML Package class and related objects.    )annotations)IOcast)Image)RELATIONSHIP_TYPE)
OpcPackagePackURI)	ImagePart)lazypropertyc                  B    \ rS rSrSrS rS	S jr\S
S j5       rS r	Sr
g)Package   z6Customizations specific to a WordprocessingML package.c                $    U R                  5         g)zCalled by loading code after all parts and relationships have been loaded.

This method affords the opportunity for any required post-processing.
N)_gather_image_partsselfs    >/var/www/html/env/lib/python3.13/site-packages/docx/package.pyafter_unmarshalPackage.after_unmarshal   s    
 	  "    c                8    U R                   R                  U5      $ )zReturn |ImagePart| containing image specified by `image_descriptor`.

The image-part is newly created if a matching one is not already present in the
collection.
)image_partsget_or_add_image_part)r   image_descriptors     r   r   Package.get_or_add_image_part   s     556FGGr   c                    [        5       $ )z0|ImageParts| collection object for this package.)
ImagePartsr   s    r   r   Package.image_parts!   s     |r   c                .   U R                  5        H  nUR                  (       a  M  UR                  [        R                  :w  a  M6  UR
                  U R                  ;   a  MR  U R                  R                  [        SUR
                  5      5        M     g)zCLoad the image part collection with all the image parts in package.r   N)		iter_relsis_externalreltypeRTIMAGEtarget_partr   appendr   )r   rels     r   r   Package._gather_image_parts&   sd    >>#C{{bhh&$"2"22##Dcoo$FG $r    Nr   zstr | IO[bytes]returnr   )r,   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   r   __static_attributes__r*   r   r   r   r      s*    @#H  	Hr   r   c                  f    \ rS rSrSrS rSS jrS rS rSS jr	SS jr
SS	 jrSS
 jrSS jrSrg)r   2   zICollection of |ImagePart| objects corresponding to images in the package.c                    / U l         g N_image_partsr   s    r   __init__ImageParts.__init__5   s
    -/r   c                8    U R                   R                  U5      $ r6   )r8   __contains__r   items     r   r<   ImageParts.__contains__8   s      --d33r   c                6    U R                   R                  5       $ r6   )r8   __iter__r   s    r   rA   ImageParts.__iter__;   s      ))++r   c                6    U R                   R                  5       $ r6   )r8   __len__r   s    r   rD   ImageParts.__len__>   s      ((**r   c                :    U R                   R                  U5        g r6   )r8   r'   r=   s     r   r'   ImageParts.appendA   s      &r   c                    [         R                  " U5      nU R                  UR                  5      nUb  U$ U R	                  U5      $ )zReturn |ImagePart| object containing image identified by `image_descriptor`.

The image-part is newly created if a matching one is not present in the
collection.
)r   	from_file_get_by_sha1sha1_add_image_part)r   r   imagematching_image_parts       r   r    ImageParts.get_or_add_image_partD   sE      01"//

;*&&##E**r   c                    U R                  UR                  5      n[        R                  " X5      nU R	                  U5        U$ )zVReturn |ImagePart| instance newly created from `image` and appended to the collection.)_next_image_partnameextr   
from_imager'   )r   rM   partname
image_parts       r   rL   ImageParts._add_image_partP   s8    ,,UYY7))%:
Jr   c                R    U R                    H  nUR                  U:X  d  M  Us  $    g)zdReturn the image part in this collection having a SHA1 hash matching `sha1`,
or |None| if not found.N)r8   rK   )r   rK   rU   s      r   rJ   ImageParts._get_by_sha1W   s+     ++J$&!! , r   c                   ^ SU4S jjnU  Vs/ s H  o3R                   R                  PM     nn[        S[        U 5      S-   5       H  nXT;  d  M
  U" U5      s  $    U" [        U 5      S-   5      $ s  snf )zThe next available image partname, starting from ``/word/media/image1.{ext}``
where unused numbers are reused.

The partname is unique by number, without regard to the extension. `ext` does
not include the leading period.
c                $   > [        SU T4-  5      $ )Nz/word/media/image%d.%sr	   )nrR   s    r   image_partname7ImageParts._next_image_partname.<locals>.image_partnameg   s    3q#h>??r      )r[   intr,   r
   )rT   idxrangelen)r   rR   r\   rU   used_numbersr[   s    `    r   rQ   ImageParts._next_image_partname_   sp    	@ CGG$J++//$Gq#d)a-(A$%a(( ) c$i!m,,	 Hs   A1r7   N)r>   object)r>   r   r+   )rM   r   )rK   strr,   zImagePart | None)rR   rf   r,   r
   )r-   r.   r/   r0   r1   r9   r<   rA   rD   r'   r   rL   rJ   rQ   r2   r*   r   r   r   r   2   s2    S04,+'
+-r   r   N)r1   
__future__r   typingr   r   docx.image.imager   docx.opc.constantsr   r$   docx.opc.packager   docx.opc.packurir
   docx.parts.imager   docx.sharedr   r   r   r*   r   r   <module>ro      s9    9 "  " 6 ' $ & $ Hj  HF<- <-r   