o
    f                     @   s4  d Z ddlmZ dgZd%ddZg Zdd Zee dd	 Zee d
d Z	ee	 dd Z
ee
 dd Zee dd Zee dd Zee dd Zee dd Zee dd Zee dd Zee dd Zee dd Zee d d! Zd"d# Zed$kre  dS dS )&z<Recognize image file formats based on their first few bytes.    )PathLikewhatNc                 C   s   d }zE|d u r't | ttfrt| d}|d}n|  }| d}| | tD ]}|||}|r>|  W |r=|  S S q)W |rF|  d S |rO|  w w )Nrb    )	
isinstancestrr   openreadtellseektestsclose)filehflocationtfres r   /usr/lib/python3.10/imghdr.pyr      s&   



c                 C   s   | dd dv r
dS dS )z JPEG data in JFIF or Exif format   
   )s   JFIFs   ExifjpegNr   r   r   r   r   r   	test_jpeg%      r   c                 C      |  drdS d S )Ns   PNG

png
startswithr   r   r   r   test_png,      
r    c                 C      | dd dv r
dS dS )zGIF ('87 and '89 variants)Nr   )s   GIF87as   GIF89agifr   r   r   r   r   test_gif2   r   r$   c                 C   r"   )z-TIFF (can be in Motorola or Intel byte order)N   )s   MMs   IItiffr   r   r   r   r   	test_tiff9   r   r'   c                 C      |  drdS dS )zSGI image librarys   rgbNr   r   r   r   r   test_rgb@      
r*   c                 C   H   t | dkr| d tdkr| d dv r | d dv r"dS d	S d	S d	S d	S )
zPBM (portable bitmap)   r      P   s   14r%       	
pbmNlenordr   r   r   r   test_pbmG   
   (r5   c                 C   r,   )
zPGM (portable graymap)r-   r   r.   r/   s   25r%   r0   pgmNr2   r   r   r   r   test_pgmO   r6   r8   c                 C   r,   )
zPPM (portable pixmap)r-   r   r.   r/   s   36r%   r0   ppmNr2   r   r   r   r   test_ppmW   r6   r:   c                 C   r(   )zSun raster files   YjrastNr   r   r   r   r   	test_rast_   r+   r<   c                 C   r(   )zX bitmap (X10 or X11)s   #define xbmNr   r   r   r   r   test_xbmf   r+   r>   c                 C   r   )Ns   BMbmpr   r   r   r   r   test_bmpm   r!   r@   c                 C   s&   |  dr| dd dkrdS d S d S )Ns   RIFF      s   WEBPwebpr   r   r   r   r   	test_webps   s   rD   c                 C   r   )Ns   v/1exrr   r   r   r   r   test_exry   r!   rF   c                  C   s   dd l } d}| jdd  r| jd dkr| jdd= d}z| jdd  r2t| jdd  |d W d S tdg|d W d S  tyP   | jd | d Y d S w )Nr   r/   z-rr%   .z
[Interrupted]
)sysargvtestallKeyboardInterruptstderrwriteexit)rH   	recursiver   r   r   test   s   rP   c              	   C   s   dd l }dd l}| D ]W}|j|r?t|d dd |s|r:td dd l}||j||d}t||d q
td q
t|d dd |j	
  ztt| W q
 tya   td	 Y q
w d S )
Nr   z/: )endzrecursing down:*z*** directory (use -r) ***:z*** not found ***)rH   ospathisdirprintglobjoinescaperJ   stdoutflushr   OSError)listrO   toplevelrH   rU   filenamerY   namesr   r   r   rJ      s&   

rJ   __main__)N)__doc__rU   r   __all__r   r   r   appendr    r$   r'   r*   r5   r8   r:   r<   r>   r@   rD   rF   rP   rJ   __name__r   r   r   r   <module>   sH    














