
    (g.                        d Z ddlmZ ddlZdgZ ej
                  ed       ddZg Zd Z	ej                  e	       d	 Zej                  e       d
 Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zej                  e       d Zd Zedk(  r e        yy)z<Recognize image file formats based on their first few bytes.    )PathLikeNwhat)      )removec                    d}	 |ft        | t        t        f      rt        | d      }|j	                  d      }n2| j                         }| j	                  d      }| j                  |       t        D ]$  } |||      }|s|c |r|j                          S S  	 |r|j                          y# |r|j                          w w xY w)z<Return the type of image contained in a file or byte stream.Nrb    )	
isinstancestrr   openreadtellseektestsclose)filehflocationtfress         /usr/lib/python3.12/imghdr.pyr   r      s    A9$h0t$FF2J99;IIbM		(# 	BQ(C
aggi1	
 aggi aggi1s   A<B- B- B- -Cc                 &    | dd dv ry| dd dk(  ryy)z;Test for JPEG data with JFIF or Exif markers; and raw JPEG.   
   )s   JFIFs   ExifjpegN   s   ۩ r   r   s     r   	test_jpegr!   +   s+    2w$$	
2A%	% 
&    c                 (    | j                  d      ryy)zVerify if the image is a PNG.s   PNG

pngN
startswithr    s     r   test_pngr'   4   s    ||() *r"   c                     | dd dv ryy)z3Verify if the image is a GIF ('87 or '89 variants).Nr   )s   GIF87as   GIF89agifr   r    s     r   test_gifr*   ;   s    !u&& 'r"   c                     | dd dv ryy)zGVerify if the image is a TIFF (can be in Motorola or Intel byte order).N   )s   MMs   IItiffr   r    s     r   	test_tiffr.   B   s    !u r"   c                 (    | j                  d      ryy)ztest for the SGI image library.s   rgbNr%   r    s     r   test_rgbr1   I       ||K  !r"   c                 f    t        |       dk\  r#| d   t        d      k(  r| d   dv r	| d   dv ryy	y	y	y	)
z/Verify if the image is a PBM (portable bitmap).r   r      P   s   14r,       	
pbmNlenordr    s     r   test_pbmr;   P   E    
1v{	!D	adem!
0B 1Cm r"   c                 f    t        |       dk\  r#| d   t        d      k(  r| d   dv r	| d   dv ryy	y	y	y	)
z0Verify if the image is a PGM (portable graymap).r   r   r4   r5   s   25r,   r6   pgmNr8   r    s     r   test_pgmr?   X   r<   r"   c                 f    t        |       dk\  r#| d   t        d      k(  r| d   dv r	| d   dv ryy	y	y	y	)
z/Verify if the image is a PPM (portable pixmap).r   r   r4   r5   s   36r,   r6   ppmNr8   r    s     r   test_ppmrB   `   r<   r"   c                 (    | j                  d      ryy)ztest for the Sun raster file.s   YjrastNr%   r    s     r   	test_rastrE   h   s    ||'( )r"   c                 (    | j                  d      ryy)z/Verify if the image is a X bitmap (X10 or X11).s   #define xbmNr%   r    s     r   test_xbmrH   o   r2   r"   c                 (    | j                  d      ryy)z"Verify if the image is a BMP file.s   BMbmpNr%   r    s     r   test_bmprK   v   s    ||E r"   c                 :    | j                  d      r
| dd dk(  ryyy)zVerify if the image is a WebP.s   RIFF      s   WEBPwebpNr%   r    s     r   	test_webprP   }   s&    ||G1RG!3 "4r"   c                 (    | j                  d      ryy)z-verify is the image ia a OpenEXR fileOpenEXR.s   v/1exrNr%   r    s     r   test_exrrS      s    ||'( )r"   c                  \   dd l } d}| j                  dd  r#| j                  d   dk(  r| j                  dd= d}	 | j                  dd  rt        | j                  dd  |d       y t        dg|d       y # t        $ r/ | j                  j                  d       | j                  d       Y y w xY w)Nr   r5   z-rr,   .z
[Interrupted]
)sysargvtestallKeyboardInterruptstderrwriteexit)rV   	recursives     r   testr^      s    I
xx|t+HHQqSM	88AB<CHHQRL)Q/SE9a( 

,-s   )A3 $A3 35B+*B+c                    dd l }dd l}| D ]  }|j                  j                  |      rwt	        |dz   d       |s|rWt	        d       dd l}|j                  |j                  j                  |j                  |      d            }t        ||d       t	        d       t	        |dz   d       |j                  j                          	 t	        t        |              y # t        $ r t	        d	       Y w xY w)
Nr   z/: )endzrecursing down:*z*** directory (use -r) ***:z*** not found ***)rV   ospathisdirprintglobjoinescaperX   stdoutflushr   OSError)listr]   toplevelrV   rd   filenamerh   namess           r   rX   rX      s     +77=="(T/s+H'(		"'',,t{{8/Dc"JKy!,23(S.c*JJ+d8n%+  +)*+s   C""C98C9__main__)N)__doc__rd   r   warnings__all___deprecated__name__r   r   r!   appendr'   r*   r.   r1   r;   r?   rB   rE   rH   rK   rP   rS   r^   rX   r   r"   r   <module>ry      sJ   B  (   Xg .2 	 Y 
 X 
 X 
 Y 
 X  X  X  X 
 Y 
 X 
 X 
 Y 
 X +* zF r"   