o
     JAf                     @   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locationZ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   ExifZjpegNr   r   r   r   r   r   	test_jpeg%      r   c                 C      |  drdS d S )Ns   PNG

Z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   GIF89aZ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   IIZtiffr   r   r   r   r   	test_tiff9   r   r"   c                 C      |  drdS dS )zSGI image librarys   Z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!       	
ZpbmNlenordr   r   r   r   test_pbmG   
   (r.   c                 C   r&   )
zPGM (portable graymap)r'   r   r(   r)   s   25r!   r*   ZpgmNr+   r   r   r   r   test_pgmO   r/   r0   c                 C   r&   )
zPPM (portable pixmap)r'   r   r(   r)   s   36r!   r*   ZppmNr+   r   r   r   r   test_ppmW   r/   r1   c                 C   r#   )zSun raster files   YjZrastNr   r   r   r   r   	test_rast_   r%   r2   c                 C   r#   )zX bitmap (X10 or X11)s   #define ZxbmNr   r   r   r   r   test_xbmf   r%   r3   c                 C   r   )Ns   BMZbmpr   r   r   r   r   test_bmpm   r   r4   c                 C   s&   |  dr| dd dkrdS d S d S )Ns   RIFF      s   WEBPZwebpr   r   r   r   r   	test_webps   s   r7   c                 C   r   )Ns   v/1Zexrr   r   r   r   r   test_exry   r   r8   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)r:   	recursiver   r   r   test   s   rB   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 ***)r:   ospathisdirprintglobjoinescaper<   stdoutflushr   OSError)listrA   Ztoplevelr:   rG   filenamerK   namesr   r   r   r<      s&   

r<   __main__)N)__doc__rG   r   __all__r   r   r   appendr   r    r"   r$   r.   r0   r1   r2   r3   r4   r7   r8   rB   r<   __name__r   r   r   r   <module>   sH    














