o
    …9jà  ã                   @   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r˜eƒ  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   Y¦j•Ú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    














ÿ