o
    ë6Wj%  ã                   @  sœ   d dl mZ d dlmZ d dlmZ ddlmZmZ ddl	m
Z ddl	mZ dd	d
œZddd„ZG dd„ dejƒZe eje¡ e ejd¡ ddd„ZdS )é    )Úannotations)ÚBytesIO)Úcasté   )ÚImageÚ	ImageFile)Úi16be)Úi32beÚrawÚjpeg)r   é   ÚcÚbytesÚreturnÚintc                 C  s   t d|  dd … ƒS )Ns       éüÿÿÿ)Úi32)r   © r   úb/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.pyÚ_i!   s   r   c                   @  s<   e Zd ZdZdZddd„Zdd
d„Zddd„Zddd„ZdS )ÚIptcImageFileÚIPTCzIPTC/NAAÚkeyútuple[int, int]r   r   c                 C  s   t | j| ƒS )N)r   Úinfo)Úselfr   r   r   r   Úgetint.   s   zIptcImageFile.getintú"tuple[tuple[int, int] | None, int]c                 C  sÂ   | j d usJ ‚| j  d¡}| d¡sdS |d |d f}|d dks(|d dvr.d	}t|ƒ‚|d
 }|dkr<d}t|ƒ‚|dkrFd}||fS |dkrXt| j  |d ¡ƒ}||fS t|d
ƒ}||fS )Nr   ó    )Nr   r   é   r   é   )
r   r   é   é   r   é   é   é   é	   éð   zinvalid IPTC/NAA filer!   é„   z%illegal field length in IPTC/NAA fileé€   )ÚfpÚreadÚstripÚSyntaxErrorÚOSErrorr   Úi16)r   ÚsÚtagÚmsgÚsizer   r   r   Úfield1   s(   
û
þzIptcImageFile.fieldÚNonec              
   C  s’  | j d usJ ‚	 | j  ¡ }|  ¡ \}}|r|dkrn2|r#| j  |¡}nd }|| jv rFt| j| tƒr;| j|  |¡ n| j| |g| j|< n|| j|< q| jd d }| jd d }|dkrf|sfd| _d }n$|dkrp|rpd| _n	|d	kry|ryd
| _d| jv rˆ| jd d d }nd}|  	d¡|  	d¡f| _
z	t|  	d¡ }W n ty± }	 zd}
t|
ƒ|	‚d }	~	ww |dkrÇt dd| j |||f¡g| _d S d S )NT©r%   é
   )r!   é<   r   r   ÚLr!   ÚRGBr"   ÚCMYK)r!   éA   )r!   é   )r!   é   )r!   éx   zUnknown IPTC image compressionÚiptc)r   r   )r*   Útellr4   r+   r   Ú
isinstanceÚlistÚappendÚ_moder   Ú_sizeÚCOMPRESSIONÚKeyErrorr.   r   Ú_Tiler3   Útile)r   Úoffsetr1   r3   ÚtagdataÚlayersÚ	componentÚbandÚcompressionÚer2   r   r   r   Ú_openN   sN   


ñ

€þ
ÿÿzIptcImageFile._openúImage.core.PixelAccess | Nonec                 C  sL  | j r | j d j}t|tƒsJ ‚|\}}| jd usJ ‚| j | j d j¡ tƒ }|dkr4| d| j	 ¡ 	 |  
¡ \}}|dkr@n |dkr_| j t|dƒ¡}|sPn| |¡ |t|ƒ8 }|dksDq5t |¡�0}|d ur„t d|j	¡gt | j¡ }	||	|< t | j|	¡}
n|}
|
 ¡  |
j| _W d   ƒ n1 s˜w   Y  g | _ tj | ¡S )Nr   r
   s   P5
%d %d
255
Tr6   i    r9   )rJ   ÚargsrB   Útupler*   ÚseekrK   r   Úwriter3   r4   r+   ÚminÚlenr   ÚopenÚnewÚgetmodebandsÚmodeÚmergeÚloadÚimr   )r   rT   rP   rO   ÚoÚtyper3   r0   Ú_imÚbandsr`   r   r   r   r_   ‚   s@   
ûü
ø	zIptcImageFile.loadN)r   r   r   r   )r   r   )r   r5   )r   rS   )	Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr   r4   rR   r_   r   r   r   r   r   *   s    


4r   z.iimr`   úImageFile.ImageFileú1dict[tuple[int, int], bytes | list[bytes]] | Nonec              	   C  s  ddl m}m} d}t| tƒrdd„ | j ¡ D ƒS t| |jƒr-| j d¡}|r,| d¡}nt| |j	ƒrFz	| j
j|j }W n	 tyE   Y nw |du rLdS G dd	„ d	ƒ}|ƒ }t|_tt|ƒ}i |_t|ƒ|_z| ¡  W n ttfyw   Y nw d
d„ |j ¡ D ƒS )zÜ
    Get IPTC information from TIFF, JPEG, or IPTC file.

    :param im: An image containing IPTC data.
    :returns: A dictionary containing IPTC information, or None if
        no IPTC information block was found.
    r   )ÚJpegImagePluginÚTiffImagePluginNc                 S  ó    i | ]\}}t |tƒr||“qS r   ©rB   rU   ©Ú.0ÚkÚvr   r   r   Ú
<dictcomp>¾   ó     zgetiptcinfo.<locals>.<dictcomp>Ú	photoshopi  c                   @  s   e Zd ZdS )zgetiptcinfo.<locals>.FakeImageN)re   rf   rg   r   r   r   r   Ú	FakeImageÒ   s    rw   c                 S  rn   r   ro   rp   r   r   r   rt   â   ru   )Ú rl   rm   rB   r   r   ÚitemsÚJpegImageFileÚgetÚTiffImageFileÚtag_v2Ú_tagdataÚIPTC_NAA_CHUNKrH   Ú	__class__r   r   r*   rR   Ú
IndexError)r`   rl   rm   Údatarv   rw   Úfake_imÚiptc_imr   r   r   Úgetiptcinfo®   s:   


€ÿ

ÿr…   N)r   r   r   r   )r`   rj   r   rk   )Ú
__future__r   Úior   Útypingr   rx   r   r   Ú_binaryr   r/   r	   r   rG   r   r   Úregister_openrh   Úregister_extensionr…   r   r   r   r   Ú<module>   s   

	