
     
3j]+                        S r SSKJr  SSKJr  SSKrSSKrSSKJr  SSK	J
r
JrJr  SS	KJrJrJrJr  \" 5       r\" 5       r\R(                  R*                  \R(                  R-                  S
/ SQ/ SQS9S 5       5       r\R(                  R*                  S 5       r\R(                  R*                  \R(                  R-                  SSS/SS/S9\R(                  R-                  SSS/4SSS/4SS/4SS/4SSS/4// SQS9\R(                  R-                  S\
S4\S4/S S!/S9S" 5       5       5       5       r\R(                  R*                  \R(                  R-                  S\
S4\S4/5      S# 5       5       r\R(                  R*                  \R(                  R-                  S\
S4\S4/5      S$ 5       5       rS% rS& r\R(                  R*                  \R(                  R-                  S\
S4\S4/5      S' 5       5       r\R(                  R*                  \R(                  R-                  S\
S4\S4/5      S( 5       5       rg))z
Test the processor hooks
    )Path)TemporaryDirectoryN   )Pooch)UnzipUntar
Decompress   )pooch_test_urlpooch_test_registrycheck_tiny_datacapture_logzmethod,ext,name))autoxzN)lzmar   N)r   r   N)bzip2bz2N)gzipgzN)r   r   zdifferent-name.txt)r   r   r   r   r   name)idsc           	      6   [        XS9n[        5        n[        U5      nUc!  [        USR	                  SUS/5      -  5      nO[        XR-  5      n[        U[        [        S9n[        5        nUR                  SU-   US9n	UR                  5       n
U
R                  5       n[        U5      S	:X  d   eUS
   R                  5       S
   S:X  d   eUS   R                  S5      (       d   eXS   ;   d   e SSS5        W	U:X  d   e[        U	5        [        5        nUR                  SU-   US9n	UR                  5       S:X  d   e SSS5        X:X  d   e[        U	5        SSS5        g! , (       d  f       Ny= f! , (       d  f       N:= f! , (       d  f       g= f)z=Check that decompression after download works for all formats)methodr   N.tiny-data.txtdecomppathbase_urlregistryztiny-data.txt.	processorr   r   DownloadingDecompressing )r	   r   r   strjoinr   BASEURLREGISTRYr   fetchgetvalue
splitlineslensplit
startswithr   )r   extr   r"   local_storer   	true_pathpuplog_filefnamelogsliness               U/home/wildlama/miniconda3/lib/python3.13/site-packages/pooch/tests/test_processors.pytest_decompressr:      s    &4I		K <D388_c8,L#MMNIDK(I(C]hII.4	IJE$$&DOO%Eu:?"?8>>#A&-7779''88882Y&&&  	!!!]hII.4	IJE$$&",,,  !!!1 
	 ] ]) 
	s=   AF
.BE(5%F
*E9F
(
E6	2F
9
F	F


Fc            
         [        5        n [        U 5      n[        U[        [        S9n[
        R                  " [        5       n[        R                  " 5          UR                  S[        SS9S9  SSS5        SSS5        WR                  R                  S   R                  S5      (       d   eS	UR                  R                  S   ;  d   e[
        R                  " [        5       n[        R                  " 5          UR                  S[        S
S9S9  SSS5        SSS5        UR                  R                  S   R                  S5      (       d   eS	UR                  R                  S   ;  d   e[
        R                  " [        5       n[        R                  " 5          UR                  S[        SS9S9  SSS5        SSS5        UR                  R                  S   R                  S5      (       d   eS	UR                  R                  S   ;   d   e[
        R                  " [        5       n[        R                  " 5          UR                  S[        SS9S9  SSS5        SSS5        UR                  R                  S   R                  S5      (       d   eS	UR                  R                  S   ;   d   e SSS5        g! , (       d  f       GNa= f! , (       d  f       GNk= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN]= f! , (       d  f       GNg= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)zGShould fail if method='auto' and no extension is given in the file namer   r   r   )r   r!   Nr   z"Unrecognized file extension '.txt'zpooch.Unzip/Untarblaz Invalid compression method 'bla'zipz Invalid compression method 'zip'z	store.zipz"Unrecognized file extension '.zip')r   r   r   r)   r*   pytestraises
ValueErrorwarningscatch_warningsr+   r	   valueargsr0   )r2   r   r4   	exceptions       r9   test_decompress_failsrF   E   sy    
	K (C]]:&)((*		/Zv5N	O + ' ##A&112VWWWW")//*>*>q*AAAA]]:&)((*		/Zu5M	N + ' ##A&112TUUUU")//*>*>q*AAAA]]:&)((*		/Zu5M	N + ' ##A&112TUUUU"ioo&:&:1&====]]:&)((*		+61J	K + ' ##A&112VWWWW"ioo&:&:1&====3 
	
 +* '& +* '& +* '& +* '&+ 
	s   9MKK2K:A0M*L K0L A0ML&&L>L&A0M6M	L8$M	,AM
KK
K-	(M0
K?:L
L	M
L#L&&
L5	0M8
MM		
M	M
M(target_pathsome_custom_pathdefault_pathcustom_pathzarchive,members	tiny-datar   )storeNrL   store/tiny-data.txtstore/subdir/tiny-data.txtzstore/subdir)single_filearchive_allarchive_filearchive_subdir_filearchive_subdirarchive_multiplezprocessor_class,extensionz.zipz.tar.gzr   r   c                    U " XBS9nUc  X1-   UR                   -   n[        5        n[        U5      n[        X4Xb-  U R                  5      u  px[        U[        [        S9n	[        5        n
U	R                  X1-   US9n[        U5      U:X  d   e[        X5        SSS5        W H  n[        U5        M     [        5        n
U	R                  X1-   US9n[        U5      U:X  d   e[        U
/ 5        SSS5        U H  n[        U5        M     SSS5        g! , (       d  f       N= f! , (       d  f       N<= f! , (       d  f       g= f)zGTests the behaviour of processors for unpacking archives (Untar, Unzip))membersextract_dirNr   r!   )suffixr   r   "_unpacking_expected_paths_and_logs__name__r   r)   r*   r   r+   set_check_logsr   )processor_class	extensionrG   archiverV   r"   r   
true_pathsexpected_logr4   r5   fnamesr6   s                r9   test_unpackingrc   d   s(   <  II)I,<,<<		Dz#Ed0/2J2J$
 
 (C]hYYw2iYHFv;*,,,/  EE"  ]hYYw2iYHFv;*,,,"%  EE" ' 
	 ] ] 
	s<   AD5)/D&D5>0D$.D5
D!	D5$
D2	.D55
Ec                    [        5        n[        [        U5      [        [        S9nU " S/S9nUR                  SU-   US9n[        U5      S:X  d   e[        US   5        U " SS/S9nUR                  SU-   US9n[        U5      S	:X  d   e[        US   5        [        US   5        UR                  SU-   US9n[        U5      S:X  d   e[        US   5        S
S
S
5        g
! , (       d  f       g
= f)zHTest that multiple subsequent calls to a processor yield correct resultsr   rM   rV   rL   r!   r
   r   rN   r   Nr   r   r   r)   r*   r+   r.   r   )	r]   r^   r2   r4   
processor1
filenames1
processor2
filenames2
filenames3s	            r9   test_multiple_unpackingrl      s     
	k*WxP %.C-DE
YYw2jYI
:!###
1& %*,HI

 YYw2jYI
:!###
1&
1& YYw2jYI
:!###
1&- 
		s   CC$$
C2c                     [        5        n[        [        U5      [        [        S9nU " S/S9nUR                  SU-   US9n[        U5      S:X  d   e[        US   5        SSS5        g! , (       d  f       g= f)	zDTest that unpack members can also be specifed both with a leading ./r   z./store/tiny-data.txtre   rL   r!   r
   r   Nrf   )r]   r^   r2   r4   rg   rh   s         r9   $test_unpack_members_with_leading_dotrn      sp     
	k*WxP %.E-FG
YYw2jYI
:!###
1& 
		s   AA**
A8c                     U R                  5       R                  5       n[        U5      [        U5      :X  d   e[        X!5       H  u  p4UR	                  U5      (       a  M   e   g)z;
Assert that the lines in the log match the expected ones.
N)r,   r-   r.   r=   r0   )r5   expected_linesr8   lineexpected_lines        r9   r\   r\      sY     **,Eu:^,,,,"59}----  :    c                    S/nU S:X  a#  [        US-  5      1nUR                  S5        XT4$ U S:X  aD  UcA  [        US-  S-  5      [        US-  S-  S-  5      1nUR                  U US    S35        XT4$ U S:X  a  Ub  / nU Hp  nU[        UR                  S	5      6 -  n[        U5      R	                  S5      (       d  US-  nUR                  [        U5      5        UR                  S
U S35        Mr     [        U5      nWU4$ )zc
Generate the appropriate expected paths and log message depending on the
parameters for the test.
r#   rK   r   zExtracting 'tiny-data.txt'rL   subdirr$   zing contents/zExtracting '')r'   appendr   r/   endswithr[   )r_   rV   r   r   	log_linesr`   memberr3   s           r9   rY   rY      s9   
 I+$012
56     
G	w01w)O;<

 	D6$r(<89    
G	 3
FtV\\#%677Iy>**?;;%7	c)n-|F8156  _
y  rs   c                 2   [        5        n[        [        U5      [        [        S9nU " S/S9nUR                  SU-   US9n[        U5      S:X  d   eU " 5       nUR                  SU-   US9n[        U5      S:  d   e SSS5        g! , (       d  f       g= f)zl
Test that calling with valid members then without them works.
https://github.com/fatiando/pooch/issues/364
r   rM   re   rL   r!   r
   Nr   r   r   r)   r*   r+   r.   r]   r^   r2   r4   rg   rh   ri   rj   s           r9   &test_unpacking_members_then_no_membersr      s     
	k*WxP %.C-DE
YYw2jYI
:!### %&
YYw2jYI
:""" 
		   A3B
Bc                 2   [        5        n[        [        U5      [        [        S9nU " S/S9nUR                  SU-   US9n[        U5      S:X  d   eU " 5       nUR                  SU-   US9n[        U5      S:  d   e SSS5        g! , (       d  f       g= f)zn
Test that calling with invalid members then without them works.
https://github.com/fatiando/pooch/issues/364
r   znot-a-valid-file.csvre   rL   r!   r   Nr}   r~   s           r9   ,test_unpacking_wrong_members_then_no_membersr     s     
	k*WxP %.D-EF
YYw2jYI
:!### %&
YYw2jYI
:""" 
		r   ) __doc__pathlibr   tempfiler   rA   r>   r&   r   
processorsr   r   r	   utilsr   r   r   r   r*   r)   marknetworkparametrizer:   rF   rc   rl   rn   r\   rY   r   r    rs   r9   <module>r      s    '    1 1 T T  

  	4   < > >< D,-NM3R   	'(	()*	/01	>"#	(.9:	  & V_ui()	'  
#' 8#8 V_ui()'	 
'8 V_ui()
'	 

'.!6 V_ui()#	 
#& V_ui()#	 
#rs   