o
    Ñ­j÷  ã                   @  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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#„ Zd$S ))é    )Úannotations)ÚBytesIO)ÚSequenceé   )Ú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   úP/var/www/html/CropPilot/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   Úi2   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   Údump8   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„ ZdS )ÚIptcImageFileÚIPTCzIPTC/NAAÚkeyútuple[int, int]r   r   c                 C  s   t | j| ƒS )N)r!   Úinfo)Úselfr1   r   r   r   ÚgetintI   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   r8   é   é   r   é   é   é   é	   éð   zinvalid IPTC/NAA filer:   é„   z%illegal field length in IPTC/NAA fileé€   )ÚfpÚreadÚstripÚSyntaxErrorÚOSErrorr!   Úi16)r4   ÚsÚtagr   Úsizer   r   r   ÚfieldL   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¾dd| j ||f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   )rC   ÚtellrL   rD   r3   r$   ÚlistÚappendÚ_moder5   Ú_sizeÚCOMPRESSIONÚKeyErrorrG   rK   Útile)r4   ÚoffsetrJ   rK   ÚtagdataÚlayersÚ	componentÚidÚcompressionÚer   r   r   r   Ú_openh   sH   


ñ


€þÿzIptcImageFile._openc                 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   ƒ d S 1 s{w   Y  d S )
Nr   r   rW   r8   r   s   P5
%d %d
255
TrM   i    )Úlenr_   r   ÚloadrC   Úseekr   ÚwriterK   rL   rD   Úminr   ÚopenÚim)r4   r`   re   ÚoÚtyperK   rI   Ú_imr   r   r   ri   —   s.    
ûü
"þzIptcImageFile.loadN)r1   r2   r   r   )r   r6   )r   r)   )	r   Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr5   rL   rg   ri   r   r   r   r   r/   E   s    


/r/   z.iimc              	   C  sä   ddl m}m} d}t| tƒr| jS t| |jƒr&| j d¡}|r%| d¡}nt| |jƒrAz	| j	j
|j }W n ttfy@   Y nw |du rGdS G dd„ dƒ}|ƒ } t| _i | _t|ƒ| _z|  ¡  W | jS  ttfyq   Y | jS w )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   rr   rs   r   r   r   r   Ú	FakeImageÜ   s    ry   )Ú rv   rw   r$   r/   r3   ÚJpegImageFileÚgetÚTiffImageFilerJ   ra   ÚIPTC_NAA_CHUNKr   r^   Ú	__class__r   rC   rg   Ú
IndexError)rn   rv   rw   Údatarx   ry   r   r   r   Úgetiptcinfoº   s:   

€ÿ

ýýr‚   N)r   r   r   r   )r   r   r   r   )r   r"   r   r   )r   r(   r   r)   )Ú
__future__r   Úior   Útypingr   rz   r   r   Ú_binaryr   rH   r	   r   Ú
_deprecater
   r]   r   r!   r%   r'   r.   r/   Úregister_openrt   Úregister_extensionr‚   r   r   r   r   Ú<module>   s"   





p