
    .i,                        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	d
ZddZ G d dej                  Z ej        ej        e            ej        ej        d           ddZdS )    )annotations)BytesIO)cast   )Image	ImageFile)i16be)i32berawjpeg)r      cbytesreturnintc                6    t          d| z   dd                    S )Ns       )i32)r   s    O/var/www/html/analyses/venv/lib/python3.11/site-packages/PIL/IptcImagePlugin.py_ir   !   s    a%&&&    c                  6    e Zd ZdZdZddZdd	ZddZddZdS )IptcImageFileIPTCzIPTC/NAAkeytuple[int, int]r   r   c                6    t          | j        |                   S )N)r   info)selfr   s     r   getintzIptcImageFile.getint.   s    $)C.!!!r   "tuple[tuple[int, int] | None, int]c                   | j                             d          }|                    d          sdS |d         |d         f}|d         dk    s
|d         dvrd	}t          |          |d
         }|dk    rd}t	          |          |dk    rd}nA|dk    r+t          | j                             |dz
                      }nt          |d
          }||fS )Nr       )Nr   r      r      )
r   r$         r            	      zinvalid IPTC/NAA filer&      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr   i16)r   stagmsgsizes        r   fieldzIptcImageFile.field1   s     GLLOOwww 	7dAaDj Q44<<3q6)III)Cc""" t#::9C#,,S[[DDCZZdgll4#:..//DDq!99DDyr   Nonec                   	 | j                                         }|                                 \  }}|r|dk    rn|r| j                             |          }nd }|| j        v rYt          | j        |         t                    r!| j        |                             |           n"| j        |         |g| j        |<   n
|| j        |<   | j        d         d         }| j        d         d         }|dk    r|s
d| _        d }nA|dk    r
|rd| _        n|d	k    r	|rd
| _        d| j        v r| j        d         d         dz
  }nd}| 	                    d          | 	                    d          f| _
        	 t          | 	                    d                   }n$# t          $ r}	d}
t          |
          |	d }	~	ww xY w|dk    r)t          j        dd| j        z   |||f          g| _        d S d S )NTr*   
   )r&   <   r   r   Lr&   RGBr'   CMYK)r&   A   )r&      )r&      )r&   x   zUnknown IPTC image compressioniptc)r   r   )r/   tellr9   r0   r   
isinstancelistappend_moder    _sizeCOMPRESSIONKeyErrorr3   r   _Tiler8   tile)r   offsetr6   r8   tagdatalayers	componentbandcompressioner7   s              r   _openzIptcImageFile._openM   s   	)W\\^^F

IC #.. ',,t,,didind33 ?IcN))'2222&*ing%>DIcNN!(	#	)$ 7#A&Ig&q)	Q;;y;DJDD{{y{"

1#
$)##y)!,q0 [[))4;;w+?+??
	&%dkk(&;&;<KK 	& 	& 	&2C#,,A%	&
 '>>(:F[RVDWXXDIII >s   0 F 
F2F--F2Image.core.PixelAccess | Nonec                   | j         r| j         d         j        }t          |t                    sJ |\  }}| j                            | j         d         j                   t                      }|dk    r|                    d| j	        z             	 | 
                                \  }}|dk    rn_|dk    rX| j                            t          |d                    }|sn-|                    |           |t          |          z  }|dk    X}t          j        |          5 }|Ut          j        d|j	                  gt          j        | j                  z  }	||	|<   t          j        | j        |	          }n|                                 |j        | _        d d d            n# 1 swxY w Y   g | _         t,          j                            |           S )Nr   r   s   P5
%d %d
255
Tr<   i    r?   )rP   argsrH   tupler/   seekrQ   r   writer8   r9   r0   minlenr   opennewgetmodebandsmodemergeloadimr   )
r   r[   rV   rU   otyper8   r5   _imbandss
             r   rf   zIptcImageFile.load   s   9  	9Q<$DdE***** $KGLL1,--- 		Ae## +di7888	#!ZZ\\
d7??QhhSt__55A GGAJJJCFFND Qhh		# A !##"YsCH5569KDI9V9VVE"%E$K+di77CCHHJJJ&! ! ! ! ! ! ! ! ! ! ! ! ! ! ! DI"''---s   $A8F((F,/F,N)r   r   r   r   )r   r!   )r   r:   )r   rY   )	__name__
__module____qualname__formatformat_descriptionr    r9   rX   rf    r   r   r   r   *   sp        F#" " " "   81 1 1 1f". ". ". ". ". ".r   r   z.iimrg   ImageFile.ImageFile1dict[tuple[int, int], bytes | list[bytes]] | Nonec                B   ddl m}m} d}i }t          | t                    r;| j                                        D ]\  }}t          |t                    r|||<    |S t          | |j                  r2| j        	                    d          }|r|	                    d          }n>t          | |j
                  r)	 | j        j        |j                 }n# t          $ r Y nw xY w|dS  G d d          } |            }	t          |	_        t!          t          |	          }
i |
_        t#          |          |
_        	 |
                                 n# t(          t          f$ r Y nw xY w|
j                                        D ]\  }}t          |t                    r|||<    |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                      e Zd ZdS )getiptcinfo.<locals>.FakeImageN)rl   rm   rn   rq   r   r   	FakeImagery      s        r   rz   ) ru   rv   rH   r   r   itemsr\   JpegImageFilegetTiffImageFiletag_v2_tagdataIPTC_NAA_CHUNKrN   	__class__r   r   r/   rX   
IndexError)rg   ru   rv   datar   kvrw   rz   fake_imiptc_ims              r   getiptcinfor      s    32222222D79D"m$$ GMMOO 	 	DAq!U## Q	B5	6	6 GKK,,	 	)==((D	B5	6	6 	9%o&DEDD 	 	 	D	 |t        ikkG%G='**G GLGJ!    ""$$  1a 	DGKs$   :C 
CC:E E#"E#N)r   r   r   r   )rg   rr   r   rs   )
__future__r   ior   typingr   r{   r   r   _binaryr	   r4   r
   r   rM   r   r   register_openro   register_extensionr   rq   r   r   <module>r      s   " # " " " " "                     ! ! ! ! ! ! ! ! ! ! ! !F##' ' ' 'x. x. x. x. x.I' x. x. x.v  M(- 8 8 8  -v 6 6 6; ; ; ; ; ;r   