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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   Y/home/www/facesmatcher.com/frenv_anti/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 )IptcImageFileZIPTCzIPTC/NAAkeytuple[int, int]r   r   c                 C  s   t | j| S )N)r    info)selfr/   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   r6         r            	      zinvalid IPTC/NAA filer8      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr    i16)r2   stagr   sizer   r   r   fieldM   s&   

zIptcImageFile.fieldr(   c              
   C  s  	 | j  }|  \}}|r|dkrqE|r| j |}nd }|| jv r?t| j| tr4| j| | qD| 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<   
   )r8   <   r   r   )r8   A   Lr8   RGBr9   ZCMYK)r8      )r8      )r8   x   zUnknown IPTC image compressioniptc)r   r   )rA   tellrJ   rB   r1   r#   listappend_moder3   _sizeCOMPRESSIONKeyErrorrE   r   Z_TilerI   tile)r2   offsetrH   rI   ZtagdataZ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rBqb|dkra| j
t|d	}|sRqa|| |t |8 }|dksFq7t|}|  |j| _W d    n1 szw   Y  g | _tj| S )
Nr   r   rT   r6   r   s   P5
%d %d
255
TrK   i    )lenr\   r   loadrA   seekr   writerI   rJ   rB   minr   openim)r2   r]   r`   otyperI   rG   Z_imr   r   r   re      s2    

zIptcImageFile.loadN)r/   r0   r   r   )r   r4   )r   r(   )r   rc   )	r   
__module____qualname__formatformat_descriptionr3   rJ   rb   re   r   r   r   r   r.   F   s    


1r.   z.iimrj   ImageFile.ImageFile1dict[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   rm   rn   r   r   r   r   	FakeImage   s    rv   ) rs   rt   r#   r.   r1   itemstupleZJpegImageFilegetZTiffImageFileZtag_v2Z_tagdataZIPTC_NAA_CHUNKr[   	__class__r   r   rA   rb   
IndexError)rj   rs   rt   datar1   kvru   rv   Zfake_imZiptc_imr   r   r   getiptcinfo   sL   






r   N)r   r   r   r   )r   r   r   r   )r   r!   r   r   )r   r'   r   r(   )rj   rq   r   rr   )
__future__r   collections.abcr   ior   typingr   rw   r   r   _binaryr	   rF   r
   r   Z
_deprecater   rZ   r   r    r$   r&   r-   r.   Zregister_openro   Zregister_extensionr   r   r   r   r   <module>   s$   





t