Ë
    ëÿæi]+  ã                   ó˜  — d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
mZmZ dd	lmZmZmZmZ  e«       Z e«       Zej(                  j*                  ej(                  j-                  d
g d¢g d¢¬«      d„ «       «       Zej(                  j*                  d„ «       Zej(                  j*                  ej(                  j-                  dddgddg¬«      ej(                  j-                  dddgfdddgfddgfddgfdddgfgg d¢¬«      ej(                  j-                  de
dfedfgd d!g¬«      d"„ «       «       «       «       Zej(                  j*                  ej(                  j-                  de
dfedfg«      d#„ «       «       Zej(                  j*                  ej(                  j-                  de
dfedfg«      d$„ «       «       Zd%„ Zd&„ Zej(                  j*                  ej(                  j-                  de
dfedfg«      d'„ «       «       Zej(                  j*                  ej(                  j-                  de
dfedfg«      d(„ «       «       Zy))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           	      ó  — t        | |¬«      }t        «       5 }t        |«      }|€!t        |dj	                  d|dg«      z  «      }nt        ||z  «      }t        |t        t        ¬«      }t        «       5 }|j                  d|z   |¬«      }	|j                  «       }
|
j                  «       }t        |«      d	k(  sJ ‚|d
   j                  «       d
   dk(  sJ ‚|d   j                  d«      sJ ‚| |d   v sJ ‚	 ddd«       	|k(  sJ ‚t        |	«       t        «       5 }|j                  d|z   |¬«      }	|j                  «       dk(  sJ ‚	 ddd«       |	|k(  sJ ‚t        |	«       ddd«       y# 1 sw Y   ŒuxY w# 1 sw Y   Œ0xY w# 1 sw Y   yxY w)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               úp/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pooch/tests/test_processors.pyÚtest_decompressr:      s„  € ô  &¨tÔ4€IÜ	Ô	 Ü�KÓ ˆØˆ<Ü˜D 3§8¡8¨_¸cÀ8Ð,LÓ#MÑMÓN‰Iä˜D 4™KÓ(ˆIä˜¬¼(ÔCˆäŒ]˜hØ—I‘IÐ.°Ñ4À	�IÓJˆEØ×$Ñ$Ó&ˆDØ—O‘OÓ%ˆEÜ�u“: ’?Ð"�?Ø˜‘8—>‘>Ó# AÑ&¨-Ò7Ð7Ð7Ø˜‘9×'Ñ'¨Ô8Ð8Ð8Ø˜U 2™YÑ&Ð&Ñ&÷ ð ˜	Ò!Ð!Ð!Ü˜ÔäŒ]˜hØ—I‘IÐ.°Ñ4À	�IÓJˆEØ×$Ñ$Ó&¨"Ò,Ð,Ñ,÷ ð ˜	Ò!Ð!Ð!Ü˜Ô÷1 
Ð	÷ ˆ]ú÷ ˆ]ú÷) 
Ð	ús=   ˜AFÁ5BE+Ã7$FÄ,E7ÅFÅ+E4	Å0FÅ7F 	Å<FÆFc            	      ój  — t        «       5 } t        | «      }t        |t        t        ¬«      }t        j                  t        «      5 }t        j                  «       5  |j                  dt        d¬«      ¬«       ddd«       ddd«       j                  j                  d   j                  d«      sJ ‚d	|j                  j                  d   vsJ ‚t        j                  t        «      5 }t        j                  «       5  |j                  dt        d
¬«      ¬«       ddd«       ddd«       |j                  j                  d   j                  d«      sJ ‚d	|j                  j                  d   vsJ ‚t        j                  t        «      5 }t        j                  «       5  |j                  dt        d¬«      ¬«       ddd«       ddd«       |j                  j                  d   j                  d«      sJ ‚d	|j                  j                  d   v sJ ‚t        j                  t        «      5 }t        j                  «       5  |j                  dt        d¬«      ¬«       ddd«       ddd«       |j                  j                  d   j                  d«      sJ ‚d	|j                  j                  d   v sJ ‚	 ddd«       y# 1 sw Y   �ŒLxY w# 1 sw Y   �ŒQx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   Œ°xY w# 1 sw Y   Œ´xY w# 1 sw Y   yxY w)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   sm  € ô 
Ô	 Ü�KÓ ˆÜ˜¬¼(ÔCˆä�]‰]œ:Ô&¨)Ü×(Ñ(Õ*Ø—	‘	˜/´ZÀvÔ5N�	ÔO÷ +÷ 'ð �‰×#Ñ# AÑ&×1Ñ1Ð2VÔWÐWÐWØ"¨)¯/©/×*>Ñ*>¸qÑ*AÑAÐAÐAä�]‰]œ:Ô&¨)Ü×(Ñ(Õ*Ø—	‘	˜/´ZÀuÔ5M�	ÔN÷ +÷ 'ð �‰×#Ñ# AÑ&×1Ñ1Ð2TÔUÐUÐUØ"¨)¯/©/×*>Ñ*>¸qÑ*AÑAÐAÐAä�]‰]œ:Ô&¨)Ü×(Ñ(Õ*Ø—	‘	˜/´ZÀuÔ5M�	ÔN÷ +÷ 'ð �‰×#Ñ# AÑ&×1Ñ1Ð2TÔUÐUÐUØ" i§o¡o×&:Ñ&:¸1Ñ&=Ñ=Ð=Ð=Ü�]‰]œ:Ô&¨)Ü×(Ñ(Õ*Ø—	‘	˜+´À6Ô1J�	ÔK÷ +÷ 'ð �‰×#Ñ# AÑ&×1Ñ1Ð2VÔWÐWÐWØ" i§o¡o×&:Ñ&:¸1Ñ&=Ñ=Ð=Ñ=÷3 
Ð	÷
 +Ñ*ú÷ 'Ñ&ú÷ +Ñ*ú÷ 'Ñ&ú÷ +Ñ*ú÷ 'Ñ&ú÷ +Ð*ú÷ 'Ð&ú÷+ 
Ð	úsÏ   ‹;L)ÁKÁKÁ9KÂA(L)Ã)K*Ã>KÄK*Ä$A(L)ÆLÆ!K7Æ?LÇA(L)È/LÉLÉ"LÉ*AL)ËKËKËK	ËL)ËK'Ë"K*Ë*K4	Ë/L)Ë7LË<LÌL	Ì	L)ÌLÌLÌL&	Ì"L)Ì)L2Ú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                 óŠ  —  | ||¬«      }|€||z   |j                   z   }t        «       5 }t        |«      }t        ||||z  | j                  «      \  }}t        |t        t        ¬«      }	t        «       5 }
|	j                  ||z   |¬«      }t        |«      |k(  sJ ‚t        |
|«       ddd«       D ]  }t        |«       Œ t        «       5 }
|	j                  ||z   |¬«      }t        |«      |k(  sJ ‚t        |
g «       ddd«       |D ]  }t        |«       Œ 	 ddd«       y# 1 sw Y   Œ|xY w# 1 sw Y   Œ1xY w# 1 sw Y   yxY w)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   s8  € ñ<  ¨¸[ÔI€IØÐØ 	Ñ)¨I×,<Ñ,<Ñ<ˆÜ	Ô	 Ü�D‹zˆÜ#EØ�W˜d [Ñ0°/×2JÑ2Jó$
Ñ ˆ
�Lô ˜¬¼(ÔCˆäŒ]˜hØ—Y‘Y˜w¨Ñ2¸i�YÓHˆFÜ�v“; *Ò,Ð,Ð,Ü˜ ,Ô/÷ ó ˆEÜ˜EÕ"ð ô Œ]˜hØ—Y‘Y˜w¨Ñ2¸i�YÓHˆFÜ�v“; *Ò,Ð,Ð,Ü˜ "Ô%÷ ó ˆEÜ˜EÕ"ñ ÷' 
Ð	÷ ˆ]ú÷ ˆ]ú÷ 
Ð	ús<   ©A
D9Á33D!Â&$D9Ã
3D-Ã=D9Ä!D*	Ä&D9Ä-D6	Ä2D9Ä9Ec                 óþ  — t        «       5 }t        t        |«      t        t        ¬«      } | dg¬«      }|j                  d|z   |¬«      }t        |«      dk(  sJ ‚t        |d   «        | ddg¬«      }|j                  d|z   |¬«      }t        |«      d	k(  sJ ‚t        |d   «       t        |d   «       |j                  d|z   |¬«      }t        |«      dk(  sJ ‚t        |d   «       d
d
d
«       y
# 1 sw Y   y
xY w)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Ó*´WÄxÔPˆñ %Ð.CÐ-DÔEˆ
Ø—Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ !Ò#Ð#Ð#Ü˜
 1™Ô&ñ %Ø*Ð,HÐIô
ˆ
ð —Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ !Ò#Ð#Ð#Ü˜
 1™Ô&Ü˜
 1™Ô&ð —Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ !Ò#Ð#Ð#Ü˜
 1™Ô&÷- 
×	Ñ	ús   ‹CC3Ã3C<c                 óü   — t        «       5 }t        t        |«      t        t        ¬«      } | dg¬«      }|j                  d|z   |¬«      }t        |«      dk(  sJ ‚t        |d   «       ddd«       y# 1 sw Y   yxY w)	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Ó*´WÄxÔPˆñ %Ð.EÐ-FÔGˆ
Ø—Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ !Ò#Ð#Ð#Ü˜
 1™Ô&÷ 
×	Ñ	ús   ‹AA2Á2A;c                 óÀ   — | j                  «       j                  «       }t        |«      t        |«      k(  sJ ‚t        ||«      D ]  \  }}|j	                  |«      rŒJ ‚ y)zC
    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\   Ï   sZ   € ð ×ÑÓ×*Ñ*Ó,€EÜˆu‹:œ˜^Ó,Ò,Ð,Ð,Ü" 5¨.Ö9ÑˆˆmØ�‰˜}Õ-Ð-Ð-ñ  :ó    c                 óú  — dg}| dk(  r$t        |dz  «      h}|j                  d«       ||fS | dk(  rD|€Bt        |dz  dz  «      t        |dz  dz  dz  «      h}|j                  |› |d   › d�«       ||fS | dk(  r~|�|g }|D ]j  }|t        |j                  d	«      Ž z  }t        |«      j	                  d«      s|dz  }|j                  t        |«      «       |j                  d
|› d�«       Œl t        |«      }|fS )zo
    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   Ù   s:  € ð
 �€IØ�+ÒÜ˜$ Ñ0Ó1Ð2ˆ
Ø×ÑÐ5Ô6ð  �yÐ Ð ð 
�GÒ	  ä��w‘ Ñ0Ó1Ü��w‘ Ñ)¨OÑ;Ó<ð
ˆ
ð 	×Ñ˜D˜6 $ r¡( ¨<Ð8Ô9ð �yÐ Ð ð 
�GÒ	 Ð 3Øˆ
ÛˆFØœt V§\¡\°#Ó%6Ð7Ñ7ˆIÜ�y“>×*Ñ*¨?Ô;Ø%¨Ñ7�	Ø×Ñœc )›nÔ-Ø×Ñ˜|¨F¨8°1Ð5Õ6ð ô ˜“_ˆ
Ø�yÐ Ð rs   c                 ó<  — t        «       5 }t        t        |«      t        t        ¬«      } | dg¬«      }|j                  d|z   |¬«      }t        |«      dk(  sJ ‚ | «       }|j                  d|z   |¬«      }t        |«      dkD  sJ ‚	 ddd«       y# 1 sw Y   yxY w)zx
    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Ó*´WÄxÔPˆñ %Ð.CÐ-DÔEˆ
Ø—Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ !Ò#Ð#Ð#ñ %Ó&ˆ
Ø—Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ Ò"Ð"Ñ"÷ 
×	Ñ	úó   ‹A=BÂBc                 ó<  — t        «       5 }t        t        |«      t        t        ¬«      } | dg¬«      }|j                  d|z   |¬«      }t        |«      dk(  sJ ‚ | «       }|j                  d|z   |¬«      }t        |«      dkD  sJ ‚	 ddd«       y# 1 sw Y   yxY w)zz
    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Ó*´WÄxÔPˆñ %Ð.DÐ-EÔFˆ
Ø—Y‘Y˜w¨Ñ2¸j�YÓIˆ
Ü�:‹ !Ò#Ð#Ð#ñ %Ó&ˆ
Ø—Y‘Y˜w¨Ñ2¸j�YÓ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Ð,Ð-°NÀMÐ3Rð ó ð ‡�×ÑØà	�Ð'Ð(ØØ	Ð(Ð)Ð*Ø	Ð/Ð0Ð1Ø	�>Ð"Ð#Ø	Ð(¨.Ð9Ð:ðò	ð ó ð& ‡�×ÑØØˆV€_�u˜iÐ(Ð)Ø	�'Ðð ó ñ
#óó'óó ð8#ð8 ‡�×ÑØ‡�×ÑØØˆV€_�u˜iÐ(Ð)óñ'ó	ó ð
'ð8 ‡�×ÑØ‡�×ÑØØˆV€_�u˜iÐ(Ð)óñ
'ó	ó ð

'ò.ò!ð6 ‡�×ÑØ‡�×ÑØØˆV€_�u˜iÐ(Ð)óñ#ó	ó ð
#ð& ‡�×ÑØ‡�×ÑØØˆV€_�u˜iÐ(Ð)óñ#ó	ó ñ
#rs   