o
    'j6h                     @  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   b/var/www/html/chefvision.cloud.itp360.com/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|rd| | _| 	d| 	df| _
z	t| 	d }W n ty }	 zd}
t|
|	d }	~	ww |dkrt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    d S 1 s{w   Y  d 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      s4    


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.ImageFile1dict[tuple[int, int], bytes | list[bytes]] | Nonec              	   C  s2  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
rRz| j|j }W n	 tyQ   Y nw |du rXd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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$   





s