a
    ç´«j?  ã                   @  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œdd„Zdddœdd„Zdddœdd„Zdddœdd„Zdddœdd„ZG dd „ d e
j
ƒZe	 eje¡ e	 ejd!¡ d"d#d$œd%d&„Zd'S )(é    )Úannotations)ÚSequence)ÚBytesIO)Úcasté   )ÚImageÚ	ImageFile)Úi16be)Úi32be)Ú	deprecateÚrawZjpeg)r   é   ÚstrÚbytes)ÚnameÚreturnc                 C  s4   | dkrt ddƒ dS dt› d| › d�}t|ƒ‚d S )NZPADzIptcImagePlugin.PADé   ó       zmodule 'z' has no attribute 'ú')r   Ú__name__ÚAttributeError)r   Úmsg© r   úR/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/IptcImagePlugin.pyÚ__getattr__   s
    
r   Úint)Úcr   c                 C  s   t d|  dd … ƒS )Nr   éüÿÿÿ)Úi32©r   r   r   r   Ú_i+   s    r    z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%   z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                   @  sN   e Zd ZdZdZdddœdd„Zdd	œd
d„Zdd	œdd„Zdd	œdd„ZdS )ÚIptcImageFileZIPTCzIPTC/NAAztuple[int, int]r   )Úkeyr   c                 C  s   t | j| ƒS )N)r    Úinfo)Úselfr-   r   r   r   ÚgetintJ   s    zIptcImageFile.getintz"tuple[tuple[int, int] | None, int])r   c                 C  sª   | j  d¡}| d¡sdS |d |d f}|d dksB|d dvrNd	}t|ƒ‚|d
 }|dkrld}t|ƒ‚n6|dkrzd}n(|dkr˜t| j  |d ¡ƒ}n
t|d
ƒ}||fS )Nr   ó    r!   r   é   r   é   )
r   r2   é   é   r   é   é   é   é	   éð   zinvalid IPTC/NAA filer4   é„   z%illegal field length in IPTC/NAA fileé€   )ÚfpÚreadÚstripÚSyntaxErrorÚOSErrorr    Úi16)r/   ÚsÚtagr   Úsizer   r   r   ÚfieldM   s"    


zIptcImageFile.fieldr&   c              
   C  s’  | j  ¡ }|  ¡ \}}|rˆ|dkr$qˆ|r6| j  |¡}nd }|| jv r|t| j| tƒrf| j|  |¡ q†| j| |g| j|< q || j|< q | jd d }| jd d }d| jv rÂ| jd d d }nd}|dkrÚ|sÚd| _n2|dkrò|ròd| | _n|d	k�r|�rd
| | _|  	d¡|  	d¡f| _
zt|  	d¡ }W n4 t�yh }	 zd}
t|
ƒ|	‚W Y d }	~	n
d }	~	0 0 |dk�rŽt dd| j ||¡g| _d S )N©r8   é
   )r4   é<   r   r   )r4   éA   ÚLr4   ÚRGBr5   ZCMYK)r4   é   )r4   é   )r4   éx   zUnknown IPTC image compressionÚiptc)r   r   )r=   ÚtellrF   r>   r.   r"   ÚlistÚappendÚ_moder0   Ú_sizeÚCOMPRESSIONÚKeyErrorrA   r   Z_TilerE   Útile)r/   ÚoffsetrD   rE   ZtagdataZlayersÚ	componentÚidÚcompressionÚer   r   r   r   Ú_openi   s@    



 
ÿzIptcImageFile._openz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rl| d| j ¡ |  	¡ \}}|dkr‚q¼|dkrl| j 
t|dƒ¡}|s¢ql| |¡ |t |ƒ8 }q‚qlt |¡� }| ¡  |j| _W d   ƒ n1 sì0    Y  g | _tj | ¡S )	Nr   r   rP   r2   r   s   P5
%d %d
255
rG   i    )ÚlenrX   r   Úloadr=   Úseekr   ÚwriterE   rF   r>   Úminr   ÚopenÚim)r/   rY   r\   ÚoÚtyperE   rC   Z_imr   r   r   r`   š   s*     
&zIptcImageFile.loadN)	r   Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr0   rF   r^   r`   r   r   r   r   r,   F   s   1r,   z.iimzImageFile.ImageFilez1dict[tuple[int, int], bytes | list[bytes]] | None)re   r   c              	   C  s:  ddl m}m} d}i }t| tƒrL| j ¡ D ]\}}t|tƒr,|||< q,|S t| |jƒrt| j 	d¡}|r¦| 	d¡}n2t| |j
ƒr¦z| jj|j }W n ty¤   Y n0 |du r²dS G dd„ dƒ}|ƒ }	t|	_tt|	ƒ}
i |
_t|ƒ|
_z|
 ¡  W n ttf�y
   Y n0 |
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   rh   ri   r   r   r   r   Ú	FakeImageç   s   ro   )Ú rl   rm   r"   r,   r.   ÚitemsÚtupleZJpegImageFileÚgetZTiffImageFileZtag_v2Z_tagdataZIPTC_NAA_CHUNKrW   Ú	__class__r   r   r=   r^   Ú
IndexError)re   rl   rm   Údatar.   ÚkÚvrn   ro   Zfake_imZiptc_imr   r   r   Úgetiptcinfo¿   sB    





ry   N)Ú
__future__r   Úcollections.abcr   Úior   Útypingr   rp   r   r   Ú_binaryr	   rB   r
   r   Z
_deprecater   rV   r   r    r#   r%   r+   r,   Zregister_openrj   Zregister_extensionry   r   r   r   r   Ú<module>   s"   
t