o
    üÞh?  ã                   @  sÜ   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
 ddlmZ ddlmZ dd	lmZ d
ddœZd)dd„Zd*dd„Zd+dd„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)ÚSequence)ÚBytesIO)Úcasté   )ÚImageÚ	ImageFile)Úi16be)Úi32be)Ú	deprecateÚrawÚjpeg)r   é   ÚnameÚstrÚreturnÚbytesc                 C  s0   | dkrt ddƒ dS dt› d| › d�}t|ƒ‚)NÚPADzIptcImagePlugin.PADé   ó       zmodule 'z' has no attribute 'ú')r   Ú__name__ÚAttributeError)r   Úmsg© r   úS/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.pyÚ__getattr__   s
   
r   ÚcÚintc                 C  s   t d|  dd … ƒS )Nr   éüÿÿÿ)Úi32©r   r   r   r   Ú_i+   s   r"   úint | bytesc                 C  s   t | tƒr| S | d S ©Nr   )Ú
isinstancer   r!   r   r   r   Ú_i8/   s   r&   c                 C  s   t ddƒ t| ƒS )ú.. deprecated:: 10.2.0zIptcImagePlugin.ir   )r   r"   r!   r   r   r   Úi3   s   
r(   úSequence[int | bytes]ÚNonec                 C  s2   t ddƒ | D ]}tt|ƒd›dd� qtƒ  dS )r'   zIptcImagePlugin.dumpr   Ú02xú )ÚendN)r   Úprintr&   )r   r(   r   r   r   Údump9   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)Úselfr2   r   r   r   ÚgetintJ   s   zIptcImageFile.getintú"tuple[tuple[int, int] | None, int]c                 C  s´   | j  d¡}| d¡sdS |d |d f}|d dks!|d dvr'd	}t|ƒ‚|d
 }|dkr5d}t|ƒ‚|dkr?d}||fS |dkrQt| j  |d ¡ƒ}||fS t|d
ƒ}||fS )Nr   ó    r$   r   é   r   é   )
r   r9   é   é   r   é   é   é   é	   éð   zinvalid IPTC/NAA filer;   é„   z%illegal field length in IPTC/NAA fileé€   )ÚfpÚreadÚstripÚSyntaxErrorÚOSErrorr"   Úi16)r5   ÚsÚtagr   Úsizer   r   r   ÚfieldM   s&   
û
þzIptcImageFile.fieldr*   c              
   C  s„  	 | j  ¡ }|  ¡ \}}|r|dkrn2|r| j  |¡}nd }|| jv r?t| j| tƒr4| j|  |¡ n| j| |g| j|< n|| j|< q| jd d }| jd d }d| jv rb| jd d d }nd}|dkrn|snd| _n|dkrz|rzd	| | _n|d
kr…|r…d| | _|  	d¡|  	d¡f| _
z	t|  	d¡ }W n ty¬ }	 zd}
t|
ƒ|	‚d }	~	ww |dkrÀt dd| j ||¡g| _d S d S )NT©r?   é
   )r;   é<   r   r   )r;   éA   ÚLr;   ÚRGBr<   ÚCMYK)r;   é   )r;   é   )r;   éx   zUnknown IPTC image compressionÚiptc)r   r   )rD   ÚtellrM   rE   r4   r%   ÚlistÚappendÚ_moder6   Ú_sizeÚCOMPRESSIONÚKeyErrorrH   r   Ú_TilerL   Útile)r5   ÚoffsetrK   rL   ÚtagdataÚlayersÚ	componentÚidÚcompressionÚer   r   r   r   Ú_openi   sJ   


ñ


€þ
ÿÿzIptcImageFile._openúImage.core.PixelAccess | Nonec                 C  s  t | jƒdks| jd d dkrtj | ¡S | jd dd … \}}| j |¡ tƒ }|dkr6| d| j ¡ 	 |  	¡ \}}|dkrBn |dkra| j 
t|d	ƒ¡}|sRn| |¡ |t |ƒ8 }|dksFq7t |¡�}| ¡  |j| _W d   ƒ n1 szw   Y  g | _tj | ¡S )
Nr   r   rX   r9   r   s   P5
%d %d
255
TrN   i    )Úlenra   r   ÚloadrD   Úseekr   ÚwriterL   rM   rE   Úminr   ÚopenÚim)r5   rb   rg   ÚoÚtyperL   rJ   Ú_imr   r   r   rl   š   s2    
ûü
þzIptcImageFile.loadN)r2   r3   r   r   )r   r7   )r   r*   )r   rj   )	r   Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr6   rM   ri   rl   r   r   r   r   r0   F   s    


1r0   z.iimrq   úImageFile.ImageFileú1dict[tuple[int, int], bytes | list[bytes]] | Nonec              	   C  s4  ddl m}m} d}i }t| tƒr&| j ¡ D ]\}}t|tƒr#|||< q|S t| |jƒr:| j 	d¡}|r9| 	d¡}nt| |j
ƒrSz	| jj|j }W n	 tyR   Y nw |du rYdS G dd„ dƒ}|ƒ }	t|	_tt|	ƒ}
i |
_t|ƒ|
_z|
 ¡  W n ttfy„   Y nw |
j ¡ D ]\}}t|tƒr—|||< qŠ|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ÚTiffImagePluginNÚ	photoshopi  c                   @  s   e Zd ZdS )zgetiptcinfo.<locals>.FakeImageN)r   ru   rv   r   r   r   r   Ú	FakeImageç   s    r~   )Ú r{   r|   r%   r0   r4   ÚitemsÚtupleÚJpegImageFileÚgetÚTiffImageFileÚtag_v2Ú_tagdataÚIPTC_NAA_CHUNKr_   Ú	__class__r   r   rD   ri   Ú
IndexError)rq   r{   r|   Údatar4   ÚkÚvr}   r~   Úfake_imÚiptc_imr   r   r   Úgetiptcinfo¿   sL   


€
€ÿ

ÿ
€r�   N)r   r   r   r   )r   r   r   r   )r   r#   r   r   )r   r)   r   r*   )rq   ry   r   rz   )Ú
__future__r   Úcollections.abcr   Úior   Útypingr   r   r   r   Ú_binaryr	   rI   r
   r    Ú
_deprecater   r^   r   r"   r&   r(   r/   r0   Úregister_openrw   Úregister_extensionr�   r   r   r   r   Ú<module>   s$   





t