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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   L/home/ubuntu/webapp/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|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>   
   )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