
    XIg"                         d dl Z d dlZd dlZddlmZ d dlZddlmZ  G d d      Z	 G d d      Z
 G d	 d
ej                        Z G d de	ee j                        Z G d de
ee j                        Zy)    N   )warnings_helper)utilc                       e Zd ZdZdZy)StringAnchorMixindata01data02N)__name__
__module____qualname__anchor01anchor02     f/var/www/html/answerous/venv/lib/python3.12/site-packages/importlib_resources/tests/test_functional.pyr   r      s    HHr   r   c                   ,    e Zd Zed        Zed        Zy)ModuleAnchorMixinc                 ,    t        j                  d      S )Nr   	importlibimport_moduleselfs    r   r   zModuleAnchorMixin.anchor01       &&x00r   c                 ,    t        j                  d      S Nr	   r   r   s    r   r   zModuleAnchorMixin.anchor02   r   r   N)r
   r   r   propertyr   r   r   r   r   r   r      s(    1 1 1 1r   r   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z ej                  e      d        Zd Z xZS )FunctionalAPIBasec                 D    t         |           | j                  d       y r   )supersetUpload_fixture)r   	__class__s    r   r"   zFunctionalAPIBase.setUp    s    (#r   c              #   p   K   dD ]!  }| j                  |      5  | ddd       # y# 1 sw Y   .xY ww)zAYield various names of a text file in anchor02, each in a subTest))subdirectory	subsubdirresource.txt)z#subdirectory/subsubdir/resource.txt)zsubdirectory/subsubdirr(   )
path_partsN)subTestr   r)   s     r   _gen_resourcetxt_path_partsz-FunctionalAPIBase._gen_resourcetxt_path_parts$   sF     
 	!J
 4 !  ! !	!
! !s   6*63	6c                 B    | j                  |t        |       d |       y)zqAssert that `string` ends with `suffix`.

        Used to ignore an architecture-specific UTF-16 byte-order mark.N)assertEquallen)r   stringsuffixs      r   assertEndsWithz FunctionalAPIBase.assertEndsWith.   s!     	V/8r   c           	         | j                  t        j                  | j                  d      d       | j                  t        j                  | j                  dddd      d       | j                         D ]5  }| j                  t        j                  | j                  g|d	did       7 | j                  t              5  t        j                  | j                         d d d        | j                  t              5  t        j                  | j                  d
       d d d        | j                  t              5  t        j                  | j                  d       d d d        | j                  t        j                  | j                  dd      d       | j                  t        j                  | j                  dd      dj                  d      j                  d             y # 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w)N
utf-8.fileHello, UTF-8 world!
r&   r'   r(   utf-8encoding
a resourcer8   no-such-fileutf-16.filebinary.filelatin1 backslashreplaceerrorsHello, UTF-16 world!
	utf-16-le)r.   	resources	read_textr   r   r,   assertRaisesOSErrorUnicodeDecodeErrorr2   encodedecoder+   s     r   test_read_textz FunctionalAPIBase.test_read_text4   s   |<#	
 	  		
 ::< 	J##MM %
 	 w' 	/.	/w' 	?~>	?12 	>}=	>!
 	
 	)
 %++K8??) @ 		
	/ 	/	? 	?	> 	>s$    G*?!G7=!H*G47H Hc                     | j                  t        j                  | j                  d      d       | j	                         D ]2  }| j                  t        j                  | j
                  g| d       4 y Nr4   s   Hello, UTF-8 world!
s
   a resource)r.   rD   read_binaryr   r,   r   r+   s     r   test_read_binaryz"FunctionalAPIBase.test_read_binaryg   si    !!$-->$	
 ::< 	J%%dmmAjA	r   c                 .   t        j                  | j                  d      5 }| j                  |j	                         d       d d d        | j                         D ]N  }t        j                  | j                  g|ddi5 }| j                  |j	                         d       d d d        P | j                  t              5  t        j                  | j                         d d d        | j                  t              5  t        j                  | j                  d       d d d        t        j                  | j                  d      5 }| j                  t              5  |j	                          d d d        d d d        t        j                  | j                  dd	
      5 }| j                  |j	                         d       d d d        t        j                  | j                  dd      5 }| j                  |j	                         dj                  d      j                  d             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr4   r5   r8   r6   r9   r:   r;   r<   r=   r7   r>   r?   r@   rB   rC   )rD   	open_textr   r.   readr,   r   rF   rG   rH   r2   rI   rJ   r   fr)   s      r   test_open_textz FunctionalAPIBase.test_open_textr   sE     = 	@QVVX'>?	@::< 	9J$$ ! 9   <89 9	9 w' 	/.	/w' 	?~>	?  > 	!""#56 	   MM
 	; QVVX'9:	;   MM%
 
	 (//<CC- D 
	 
	1	@ 	@9 9	/ 	/	? 	? 	 		; 	;
	 
	sl   !H3 !I   I=!II3I'-I3!I?*A J3H= I
	II$'I0	,I33I<?JJc                    t        j                  | j                  d      5 }| j                  |j	                         d       d d d        | j                         D ]K  }t        j                  | j                  g| 5 }| j                  |j	                         d       d d d        M y # 1 sw Y   hxY w# 1 sw Y   dxY wrM   )rD   open_binaryr   r.   rR   r,   r   rS   s      r   test_open_binaryz"FunctionalAPIBase.test_open_binary   s    ""4==,? 	A1QVVX'?@	A::< 	:J&& :   =9	: :	:	A 	A: :s   !B)=!B5)B25B>	c                 ,   t        j                  | j                  d      5 }t        t	        |      d      5 }| j                  |j                         d       d d d        d d d        t        j                  | j                        5 }t        t        j                  j                  |d      d      5 }| j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr4   r6   r7   r5   )	rD   pathr   openstrr.   rR   osjoin)r   rZ   rT   s      r   	test_pathzFunctionalAPIBase.test_path   s    ^^DMM<8 	DDc$i'2 Da  +BCD	D ^^DMM* 	Ddbggll46I DQ  +BCD	D 	DD D	D 	DD D	D 	DsF   C2!C&C2,D
4!C>D
&C/	+C22C;>D	D

Dc                    t         j                  }| j                   || j                  d             | j	                   || j                  d             | j	                   || j                               | j	                   || j                  d             | j                         D ]$  }| j                   || j                  g|        & y )Nr4   no_such_filer&   )rD   is_resource
assertTruer   assertFalser,   r   )r   rb   r)   s      r   test_is_resourcez"FunctionalAPIBase.test_is_resource   s    ++DMM<@AT]]NCDT]]34T]]NCD::< 	EJOOKC
CD	Er   c           	         t        j                  dt        f      5  t        j                  | j
                        }d d d        | j                  t              h d       | j                  t              5  t        j                  dt        f      5  t        t        j                  | j
                  d             d d d        d d d        | j                         D ]m  }| j                  t              5  t        j                  dt        f      5  t        t        j                  | j
                  g|        d d d        d d d        o t        j                  dt        f      5  t        j                  | j
                  d      }d d d        | j                  t        |      dh       y # 1 sw Y   sxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w)Nz.*contents.*>   r&   r4   r<   r;   r4   r&   r<   )r   check_warningsDeprecationWarningrD   contentsr   assertGreaterEqualsetrF   rG   listr,   )r   cr)   s      r   test_contentszFunctionalAPIBase.test_contents   s   ++^=O,PQ 	2""4==1A	2FH	
 w' 	B)G)GI
 * 	B ##DMM<@A		B 	B ::< 	EJ""7+ E_-K-K"M . E Y''C
CD	E E E	E ++^=O,PQ 	B""4==.AA	BFO	
)	2 	2	B 	B 	B 	BE E E E
	B 	Bs_    F-6G*F:<G4G*G:G'!G,-F7:G	?GGGGG)	,G5)categoryc                 j   t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  fD ]  }| j                  |      5  | j                  t              5   |d        d d d        | j                  t        t        f      5   |d       d d d        | j                  t              5   |d       d d d        d d d         y # 1 sw Y   fxY w# 1 sw Y   FxY w# 1 sw Y   ,xY w# 1 sw Y   xY w)Nfunci  z$missing module$)rD   rE   rN   rQ   rW   rZ   rb   ri   r*   rF   	TypeErrorAttributeErrorModuleNotFoundErrorr   rr   s     r   test_common_errorsz$FunctionalAPIBase.test_common_errors   s    !!!!NN!!
 	-D 4( 	-&&y1 J &&	>'BC J &&':; -+,-	- 	-	-  - -	- 	-sT   D)	D #D)	DD))	D2D)D
D)DD)D&"D))D2	c           	         t         j                  t         j                  fD ]P  }| j                  |      5  | j	                  t
              5   || j                  ddd       d d d        d d d        R y # 1 sw Y   xY w# 1 sw Y   ixY w)Nrq   r&   r'   r(   )rD   rE   rQ   r*   rF   rs   r   rv   s     r   test_text_errorsz"FunctionalAPIBase.test_text_errors   s    
 	D 4( &&y1 &#&	 		  s#   BA5"B5A>:BB
	)r
   r   r   r"   r,   r2   rK   rO   rU   rX   r_   re   rn   r   ignore_warningsrh   rw   ry   __classcell__)r$   s   @r   r   r      sa    $!91
f	#J:DE
4 %_$$.@A- B-*r   r   c                       e Zd Zy)FunctionalAPITest_StringAnchorNr
   r   r   r   r   r   r}   r}          
 	r   r}   c                       e Zd Zy)FunctionalAPITest_ModuleAnchorNr~   r   r   r   r   r      r   r   r   )unittestr]   r   compat.py39r   importlib_resourcesrD    r   r   r   	DiskSetupr   TestCaser}   r   r   r   r   <module>r      sp     	  ( '  
1 1P Pf				r   