o
    Ԧ/f                     @  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rawZjpeg)r      namestrreturnbytesc                 C  s0   | dkrt dd dS dt d|  d}t|)NZPADzIptcImagePlugin.PAD          zmodule 'z' has no attribute '')r
   __name__AttributeError)r   msg r   3lib/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dt| dd qt  dS )r$   zIptcImagePlugin.dumpr   z%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 )IptcImageFileZIPTCzIPTC/NAAkeytuple[int, int]r   r   c                 C  s   t | j| S )N)r   info)selfr-   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   r4         r            	      zinvalid IPTC/NAA filer6      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr   i16)r0   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|rd| | _| 	d| 	df| _
z	t| 	d }W n ty }	 zd}
t|
|	d }	~	ww |dkrdd| j ||fg| _d S d S )NTr:   
   )r6   <   r   r   )r6   A   Lr6   ZRGBr7   ZCMYK)r6      )r6      )r6   x   zUnknown IPTC image compressioniptc)r   r   )r?   tellrH   r@   r/   r"   listappend_moder1   _sizeCOMPRESSIONKeyErrorrC   rG   tile)r0   offsetrF   rG   tagdataZlayersZ	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   rQ   r4   r   s   P5
%d %d
255
TrI   i    )lenrY   r   loadr?   seekr   writerG   rH   r@   minr   openim)r0   rZ   r]   otyperG   rE   Z_imr   r   r   ra      s.    

"zIptcImageFile.loadN)r-   r.   r   r   )r   r2   )r   r'   )	r   
__module____qualname__formatZformat_descriptionr1   rH   r_   ra   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   ri   rj   r   r   r   r   	FakeImage   s    ro   ) rl   rm   r"   r,   r/   ZJpegImageFilegetZTiffImageFilerF   r[   ZIPTC_NAA_CHUNKr   rX   	__class__r   r?   r_   
IndexError)rf   rl   rm   datarn   ro   r   r   r   getiptcinfo   s:   



ru   N)r   r   r   r   )r   r   r   r   )r   r    r   r   )r   r&   r   r'   )Z
__future__r   ior   typingr   rp   r   r   Z_binaryr   rD   r	   r   Z
_deprecater
   rW   r   r   r#   r%   r+   r,   Zregister_openrk   Zregister_extensionru   r   r   r   r   <module>   s"   





p