
    2in#                     D   S SK r S SKrS SKrS SKrSSKJr  SSKJr   " S S5      r	 " S S5      r
 " S	 S
5      r " S S\	\\R                  \R                  5      r " S S\
\\R                  \R                  5      r " S S\	\\R                   \R                  5      rg)    N   )util)warnings_helperc                       \ rS rSrSrSrSrg)StringAnchorMixin   data01data02 N)__name__
__module____qualname____firstlineno__anchor01anchor02__static_attributes__r       c/home/james-whalen/.local/lib/python3.13/site-packages/importlib_resources/tests/test_functional.pyr   r      s    HHr   r   c                   4    \ rS rSr\S 5       r\S 5       rSrg)ModuleAnchorMixin   c                 .    [         R                  " S5      $ )Nr	   	importlibimport_moduleselfs    r   r   ModuleAnchorMixin.anchor01       &&x00r   c                 .    [         R                  " S5      $ Nr
   r   r   s    r   r   ModuleAnchorMixin.anchor02   r   r   r   N)r   r   r   r   propertyr   r   r   r   r   r   r   r      s(    1 1 1 1r   r   c                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS r\R                  " \S9S 5       rS rSrU =r$ )FunctionalAPIBase   c                 D   > [         TU ]  5         U R                  S5        g r!   )supersetUpload_fixture)r   	__class__s    r   r)   FunctionalAPIBase.setUp   s    (#r   c              #   z   #    S H  nU R                  US9   Uv   SSS5        M!     g! , (       d  f       M3  = f7f)zAYield various names of a text file in anchor02, each in a subTest))subdirectory	subsubdirresource.txt)z#subdirectory/subsubdir/resource.txt)zsubdirectory/subsubdirr0   )
path_partsN)subTestr   r1   s     r   _gen_resourcetxt_path_parts-FunctionalAPIBase._gen_resourcetxt_path_parts   s7     
J
 4   54

 54s   ;);
8	;c                 B    U R                  U[        U5      * S U5        g)ziAssert that `string` ends with `suffix`.

Used to ignore an architecture-specific UTF-16 byte-order mark.N)assertEquallen)r   stringsuffixs      r   assertEndsWith FunctionalAPIBase.assertEndsWith)   s!     	V/8r   c           
      l   U R                  [        R                  " U R                  S5      S5        U R                  [        R                  " U R                  SSSSS9S5        U R                  5        H7  nU R                  [        R                  " U R                  /UQ7S	S06S5        M9     U R                  [        5         [        R                  " U R                  5        S S S 5        U R                  [        [        R                  R                  45         [        R                  " U R                  S
5        S S S 5        U R                  [        5         [        R                  " U R                  S5        S S S 5        U R                  [        R                  " U R                  SSS9S5        U R                  [        R                  " U R                  SSS9SR                  S5      R                  SS95        g ! , (       d  f       GN$= f! , (       d  f       N= f! , (       d  f       N= f)N
utf-8.fileHello, UTF-8 world!
r.   r/   r0   utf-8encoding
a resourcerB   no-such-fileutf-16.filebinary.filelatin1 backslashreplaceerrorsHello, UTF-16 world!
	utf-16-le)r7   	resources	read_textr   r   r4   assertRaisesOSErrorabcTraversalErrorUnicodeDecodeErrorr;   encodedecoder3   s     r   test_read_text FunctionalAPIBase.test_read_text/   s   |<#	
 	  		
 ::<J##MM %
  = w'. ()E)EFG~> H12}= 3!
 	
 	)
 %++K8??) @ 		
 ('GG22s$   !H"H"H%
H
H"%
H3c                     U R                  [        R                  " U R                  S5      S5        U R	                  5        H4  nU R                  [        R                  " U R
                  /UQ76 S5        M6     g Nr>   s   Hello, UTF-8 world!
s
   a resource)r7   rN   read_binaryr   r4   r   r3   s     r   test_read_binary"FunctionalAPIBase.test_read_binaryb   sd    !!$-->$	
 ::<J%%dmmAjA =r   c                    [         R                  " U R                  S5       nU R                  UR	                  5       S5        S S S 5        U R                  5        HP  n[         R                  " U R                  /UQ7SS06 nU R                  UR	                  5       S5        S S S 5        MR     U R                  [        5         [         R                  " U R                  5        S S S 5        U R                  [        [         R                  R                  45         [         R                  " U R                  S5        S S S 5        [         R                  " U R                  S5       nU R                  [        5         UR	                  5         S S S 5        S S S 5        [         R                  " U R                  SS	S
9 nU R                  UR	                  5       S5        S S S 5        [         R                  " U R                  SSS9 nU R                  UR	                  5       SR                  S5      R                  SS95        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GNM= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr>   r?   rB   r@   rC   rD   rE   rF   rG   rA   rH   rI   rJ   rL   rM   )rN   	open_textr   r7   readr4   r   rP   rQ   rR   rS   rT   r;   rU   rV   r   fr1   s      r   test_open_text FunctionalAPIBase.test_open_textm   s     =QVVX'>? >::<J$$ !   <8  = w'. ()E)EFG~> H  >!""#56 7 ?   MM
 QVVX'9:
   MM%
 (//<CC- D 
 
1 >=  ('GG 76 ?>
 

 
sk   !I!I!I2"J'J(=JJ(>!J:=K
I
I/	2
J
J
J%	 J((
J7:
K
Kc                    [         R                  " U R                  S5       nU R                  UR	                  5       S5        S S S 5        U R                  5        HM  n[         R                  " U R                  /UQ76  nU R                  UR	                  5       S5        S S S 5        MO     g ! , (       d  f       Np= f! , (       d  f       Mr  = frZ   )rN   open_binaryr   r7   r`   r4   r   ra   s      r   test_open_binary"FunctionalAPIBase.test_open_binary   s    ""4==,?1QVVX'?@ @::<J&&   =9	  = @? s   !B-?!B>-
B;>
C	c                 L   [         R                  " U R                  S5       n[        [	        U5      SS9 nU R                  UR                  5       S5        S S S 5        S S S 5        [         R                  " U R                  5       n[        [        R                  R                  US5      SS9 nU R                  UR                  5       S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr>   r@   rA   r?   )	rN   pathr   openstrr7   r`   osjoin)r   rj   rb   s      r   	test_pathFunctionalAPIBase.test_path   s    ^^DMM<8Dc$i'2a  +BC 3 9 ^^DMM*dbggll46IQ  +BC J +* 32 98 JI +*sF   C3!C"C3)D0!DD"
C0	,C33
D
D	D
D#c                    [         R                  nU R                  U" U R                  S5      5        U R	                  U" U R                  S5      5        U R	                  U" U R                  5      5        U R	                  U" U R                  S5      5        U R                  5        H%  nU R                  U" U R                  /UQ76 5        M'     g )Nr>   no_such_filer.   )rN   is_resource
assertTruer   assertFalser4   r   )r   rs   r1   s      r   test_is_resource"FunctionalAPIBase.test_is_resource   s    ++DMM<@AT]]NCDT]]34T]]NCD::<JOOKC
CD =r   c           	      x   [         R                  " S[        45         [        R                  " U R
                  5      nS S S 5        U R                  [        W5      1 Sk5        U R                  [        5         [         R                  " S[        45         [        [        R                  " U R
                  S5      5        S S S 5        S S S 5        U R                  5        H  nU R                  [        [        R                  R                  45         [         R                  " S[        45         [        [        R                  " U R
                  /UQ76 5        S S S 5        S S S 5        M     [         R                  " S[        45         [        R                  " U R
                  S5      nS S S 5        U R                  [        U5      S15        g ! , (       d  f       GN= f! , (       d  f       GN*= f! , (       d  f       GN4= f! , (       d  f       N= f! , (       d  f       GMH  = f! , (       d  f       N= f)Nz.*contents.*>   r.   r>   rF   rE   r>   r.   rF   )r   check_warningsDeprecationWarningrN   contentsr   assertGreaterEqualsetrP   rQ   listr4   rR   rS   )r   cr1   s      r   test_contentsFunctionalAPIBase.test_contents   s   ++^=O,PQ""4==1A RFH	

 g&**", 
 ##DMM<@A ' ::<J!!7IMM,H,H"IJ.."&0 
 Y''C
CD KJ = ++^=O,PQ""4==.AA RFO	
5 RQ  '&  KJ RQs_   !G8G5+G# G5H/+HH
"H+
G #
G2	-G55
H
HH
H(	+
H9)categoryc                    [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  4 H  nU R                  US9   U R                  [        5         U" S 5        S S S 5        U R                  [        [        45         U" S5        S S S 5        U R                  [        5         U" S5        S S S 5        S S S 5        M     g ! , (       d  f       Nm= f! , (       d  f       NR= f! , (       d  f       N== f! , (       d  f       M  = f)Nfunci  z$missing module$)rN   rO   r[   r_   rf   rj   rs   r{   r2   rP   	TypeErrorAttributeErrorModuleNotFoundErrorr   r   s     r   test_common_errors$FunctionalAPIBase.test_common_errors   s     !!!!NN!!
D 4(&&y1J 2 &&	>'BCJ D &&':;+, < )(
 21 DC <; )(sT   >D7	D#D7 	D	D7&	D&/D7
DD7
D#D7&
D40D77
E	c           	      .   [         R                  [         R                  4 HN  nU R                  US9   U R	                  [
        5         U" U R                  SSS5        S S S 5        S S S 5        MP     g ! , (       d  f       N= f! , (       d  f       Ms  = f)Nr   r.   r/   r0   )rN   rO   r_   r2   rP   r   r   r   s     r   test_text_errors"FunctionalAPIBase.test_text_errors   su    
D 4(&&y1&#&	 2 )(	
 21 )(s#   B	A4B4
B>B
B	r   )r   r   r   r   r)   r4   r;   rW   r\   rc   rg   ro   rv   r   r   ignore_warningsrz   r   r   r   __classcell__)r+   s   @r   r%   r%      se    $!91
f	#J:DE
@ $$.@A- B-* r   r%   c                       \ rS rSrSrg)#FunctionalAPITest_StringAnchor_Disk   r   Nr   r   r   r   r   r   r   r   r   r           	r   r   c                       \ rS rSrSrg)#FunctionalAPITest_ModuleAnchor_Disk   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)%FunctionalAPITest_StringAnchor_Memoryi  r   Nr   r   r   r   r   r     r   r   r   )r   rm   unittestimportlib_resourcesrN    r   compat.py39r   r   r   r%   	DiskSetupTestCaser   r   MemorySetupr   r   r   r   <module>r      s     	  '  ( 
1 1V Vr	NN			NN					r   