
    <eA                         d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
  ej        d          ZdZ G d de j                  Z G d d	ej                  Zed
k    r ej                     dS dS )    N)findfilewarnings_helper)TESTFNunlinkimghdr))
python.pngpng)z
python.gifgif)z
python.bmpbmp)z
python.ppmppm)z
python.pgmpgm)z
python.pbmpbm)z
python.jpgjpeg)zpython-raw.jpgr   )z
python.rasrast)z
python.sgirgb)zpython.tifftiff)z
python.xbmxbm)zpython.webpwebp)z
python.exrexrc                       e Zd Zd Zd ZdS )UnseekableIOc                     t           j        NioUnsupportedOperationselfs    '/usr/lib/python3.11/test/test_imghdr.pytellzUnseekableIO.tell       %%    c                     t           j        r   r   )r   argskwargss      r   seekzUnseekableIO.seek!   r!   r"   N)__name__
__module____qualname__r    r&    r"   r   r   r      s2        & & && & & & &r"   r   c                   l    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd ZdS )
TestImghdrc                     t          dd          | _        t          | j        d          5 }|                                | _        d d d            d S # 1 swxY w Y   d S )Nr   
imghdrdatasubdirrb)r   testfileopenreadtestdata)clsstreams     r   
setUpClasszTestImghdr.setUpClass%   s    \BBB#,%% 	)!;;==CL	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AAAc                 .    t          t                     d S r   )r   r   r   s    r   tearDownzTestImghdr.tearDown+   s    vr"   c           	         t           D ]B\  }}t          |d          }|                     t                              |          |           t          |d          5 }|                     t                              |          |           d d d            n# 1 swxY w Y   t          |d          5 }|                                }d d d            n# 1 swxY w Y   |                     t                              d |          |           |                     t                              d t          |                    |           Dd S )Nr.   r/   r1   )
TEST_FILESr   assertEqualr   whatr3   r4   	bytearray)r   filenameexpectedr7   datas        r   	test_datazTestImghdr.test_data.   s   ", 	K 	KHh>>>HV[[22H===h%% @  V!4!4h???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @h%% %{{}}% % % % % % % % % % % % % % %V[[t44h???V[[y??JJJJ	K 	Ks$   /BB	B	3CC	C	c           	         t           D ]\  }}|                     |          5  t          |d          }|                     t                              t          j        |                    |           d d d            n# 1 swxY w Y   d S )N)r@   r.   r/   )r<   subTestr   r=   r   r>   pathlibPath)r   r@   rA   s      r   test_pathlike_filenamez!TestImghdr.test_pathlike_filename9   s    ", 	P 	PHhx00 P P#H\BBB  W\(-C-C!D!DhOOOP P P P P P P P P P P P P P P	P 	Ps   ABB	B	c                     d }t           j                            |           |                     t           j        j                   |                     t                               d d          d           d S )Nc                 4    |                      d          rdS d S )N   eggsham)
startswith)hfiles     r   
test_jumboz1TestImghdr.test_register_test.<locals>.test_jumbo@   s%    ||G$$ u r"   rK   rL   )r   testsappend
addCleanuppopr=   r>   )r   rP   s     r   test_register_testzTestImghdr.test_register_test?   sj    	 	 	 	J'''()))T733U;;;;;r"   c                    t          t          d          5 }|                    d           |                                }|                    | j                   d d d            n# 1 swxY w Y   t          t          d          5 }|                    |           |                     t                              |          d           |                     |                                |           d d d            d S # 1 swxY w Y   d S )Nwbs   ababagalamagar1   r	   )	r3   r   writer    r5   r&   r=   r   r>   )r   r7   poss      r   test_file_poszTestImghdr.test_file_posG   s]   &$ 	(6LL)***++--CLL'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( &$ 	16KKV[[00%888V[[]]C000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s%   AA&&A*-A*A,C??DDc                    |                      t                    5  t                                           d d d            n# 1 swxY w Y   |                      t                    5  t                              d            d d d            n# 1 swxY w Y   |                      t                    5  t                              | j        d           d d d            n# 1 swxY w Y   |                      t                    5  t                              t          j        | j                             d d d            n# 1 swxY w Y   t          | j        d          5 }|                      t                    5  t                              |	                                           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N   r1   )
assertRaises	TypeErrorr   r>   AttributeErrorr2   osfsencoder3   fileno)r   fs     r   test_bad_argszTestImghdr.test_bad_argsQ   s   y)) 	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	* 	*KKq)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*~.. 	4 	4KKDM22333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4$-&& 	(!"">22 ( (AHHJJ'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s}   AAA&BBB2!CC#&C#2EE	E"G=-F6*G6F:	:G=F:	>GGGc                 l    dD ]0}|                      t                              d |                     1d S )N)s   PN
s   s   Ys   cutecats	   000000JFIs   GIF80)assertIsNoner   r>   )r   headers     r   test_invalid_headerszTestImghdr.test_invalid_headers^   sD    ! 	9 	9F fkk$778888	9 	9r"   c                    t          j                    5  t          j        dt                     t          D ]\  }}t          |d          }t          |d          5 }|                                                    d          }d d d            n# 1 swxY w Y   | 	                    t                    5  t                              t          j        |                     d d d            n# 1 swxY w Y   | 	                    t                    5  t                              d |           d d d            n# 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nignorer.   r/   r1   latin1)warningscatch_warningssimplefilterBytesWarningr<   r   r3   r4   decoder]   r^   r   r>   r   StringIO)r   r@   _r7   rB   s        r   test_string_datazTestImghdr.test_string_datag   s2   $&& 		, 		,!(L999) , ,!#H\BBB(D)) :V!;;==//99D: : : : : : : : : : : : : : :&&y11 3 3KKD 1 12223 3 3 3 3 3 3 3 3 3 3 3 3 3 3&&y11 , ,KKd+++, , , , , , , , , , , , , , ,,		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		,s~   A	E(BEBEBE6-C/#E/C33E6C37ED<0E<E  EE EEEc                     |                      t                    5  t                              d           d d d            d S # 1 swxY w Y   d S )Nmissing)r]   FileNotFoundErrorr   r>   r   s    r   test_missing_filezTestImghdr.test_missing_files   s    011 	# 	#KK	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AA
Ac                    t          | j        d          }|                                 |                     t                    5 }t
                              |           d d d            n# 1 swxY w Y   t          j        | j	                  }|                                 |                     t                    5 }t
                              |           d d d            d S # 1 swxY w Y   d S )Nr1   )
r3   r2   closer]   
ValueErrorr   r>   r   BytesIOr5   r   r7   cms      r   test_closed_filezTestImghdr.test_closed_filew   s=   dmT**z** 	 bKK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 DM**z** 	 bKK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   A++A/2A/=C%%C),C)c                    t          t          d          5 }|                    | j                   d d d            n# 1 swxY w Y   t	          t          d          5 }|                     t          j                  5  t          	                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrW   r1   )
r3   r   rX   r5   r   r]   r   r   r   r>   )r   r7   s     r   test_unseekablezTestImghdr.test_unseekable   sg   &$ 	(6LL'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(&$'' 	$6""2#:;; $ $F###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$sE   =AA B<=B$B<$B(	(B<+B(	,B<<C C c                 X   t          t          d          5 }|                    | j                   |                    d           |                     t                    5 }t                              |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrW   r   )	r3   r   rX   r5   r&   r]   OSErrorr   r>   r|   s      r   test_output_streamzTestImghdr.test_output_stream   s   &$ 	$6LL'''KKNNN""7++ $rF###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   A
B B;BB	BB	BB#&B#N)r'   r(   r)   classmethodr8   r:   rC   rH   rU   rZ   rd   rh   rs   rw   r~   r   r   r*   r"   r   r,   r,   $   s        ) ) [)
  	K 	K 	KP P P< < <1 1 1( ( (9 9 9
, 
, 
,# # #     $ $ $$ $ $ $ $r"   r,   __main__)r   r`   rF   unittestrl   test.supportr   r   test.support.os_helperr   r   import_deprecatedr   r<   FileIOr   TestCaser,   r'   mainr*   r"   r   <module>r      s   				 				    2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1	*	*8	4	4
"& & & & &29 & & &i$ i$ i$ i$ i$" i$ i$ i$V zHMOOOOO r"   