Ë
    ëÿæiO  ã                   ó@
  — d Z ddlZddlZddlmZ ddl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mZmZmZmZmZmZmZ ddlmZ d	d
lmZmZmZmZmZm Z m!Z!m"Z"  e«       Z# e«       Z$ e «       Z% e!«       Z& e"«       Z'ejP                  jS                  edu d¬«      ejP                  jU                  de#dz   e%g«      d„ «       «       Z+ejP                  jS                  e
du d¬«      d„ «       Z,d„ Z-ejP                  j\                  d„ «       Z/ejP                  j\                  d„ «       Z0ejP                  j\                  ejP                  jU                  d ejb                  edejP                  jd                  ¬«      edfedfgg d¢¬«      d„ «       «       Z3ejP                  j\                  ejP                  jU                  d ejb                  e$ejP                  jd                  ¬«      e%e'gg d¢¬«      d„ «       «       Z4ejP                  j\                  d„ «       Z5ejP                  j\                  ejP                  jd                  d„ «       «       Z6ejP                  j\                  ejP                  jd                  ejP                  jU                  d d!d"g«      d#„ «       «       «       Z7ejP                  j\                  d$„ «       Z8ejP                  j\                  ejP                  jS                  e
du d%¬«      d&„ «       «       Z9ejP                  j\                  ejP                  jS                  e
du d%¬«      d'„ «       «       Z:ejP                  jS                  e
dud(¬«      d)„ «       Z;ejP                  jS                  edud*¬«      ejP                  jU                  d+eeeg«      d,„ «       «       Z<ejP                  j\                  ejP                  jS                  edu d¬«      ejP                  jU                  d-e#ef ejb                  e$eejP                  jd                  ¬«      gd.d/g¬«      d0„ «       «       «       Z=ejP                  j\                  ejP                  jS                  edu d¬«      d1„ «       «       Z>ejP                  j\                  ejP                  jS                  edu d¬«      ejP                  jS                  e
du d¬«      d2„ «       «       «       Z?ejP                  j\                  d3„ «       Z@ G d4„ d5«      ZA G d6„ d7«      ZBy# e	$ r dZY �Œîw xY w# e	$ r dZ
Y �Œ÷w xY w)8zK
Test the downloader classes and functions separately from the Pooch core.
é    N)ÚTemporaryDirectory)Ú	HTTPErroré   )ÚPooch)
ÚHTTPDownloaderÚFTPDownloaderÚSFTPDownloaderÚDOIDownloaderÚchoose_downloaderÚFigshareRepositoryÚZenodoRepositoryÚDataverseRepositoryÚ
doi_to_urlÚREQUESTS_HEADERS)ÚUnzipé   )Úpooch_test_urlÚcheck_large_dataÚcheck_tiny_dataÚdata_over_ftpÚpooch_test_figshare_urlÚpooch_test_zenodo_urlÚ pooch_test_zenodo_with_slash_urlÚpooch_test_dataverse_urlzrequires tqdm)ÚreasonÚurlútiny-data.txtc                 ó>   — t        | d¬«      }|j                  du sJ ‚y)úDThe progressbar keyword argument must pass through choose_downloaderT©ÚprogressbarN©r   r!   ©r   Ú
downloaders     úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pooch/tests/test_downloaders.pyÚtest_progressbar_kwarg_passedr&   ?   s$   € ô # 3°DÔ9€JØ×!Ñ! TÑ)Ð)Ñ)ó    zrequires paramikoc                  óB   — d} t        | d¬«      }|j                  du sJ ‚y)r   ú/sftp://test.rebex.net/pub/example/pocketftp.pngTr    Nr"   r#   s     r%   Ú"test_progressbar_kwarg_passed_sftpr*   M   s)   € ð <€CÜ" 3°DÔ9€JØ×!Ñ! TÑ)Ð)Ñ)r'   c                  óè   — t        j                  t        «      5  t        d«       ddd«       t        j                  t        «      5  t        d«       ddd«       y# 1 sw Y   Œ7xY w# 1 sw Y   yxY w)z6Should raise ValueError when protocol is not supportedzhttpup://some-invalid-url.comNzdoii:XXX/XXX/file)ÚpytestÚraisesÚ
ValueErrorr   © r'   r%   Útest_unsupported_protocolr0   U   sM   € ä	�‰”zÕ	"ÜÐ9Ô:÷ 
#ô 
�‰”zÕ	"ÜÐ-Ô.÷ 
#Ð	"÷ 
#Ð	"ú÷ 
#Ð	"ús   šAÁA(ÁA%Á(A1c                  ó¸   — t        j                  t        «      5 }  t        «       ddd¬«       ddd«       dt	         j
                  «      v sJ ‚y# 1 sw Y   Œ#xY w)z/Should fail if data repository is not supportedz%doi:10.21105/joss.01943/file_name.txtN)r   Úoutput_fileÚpoochz(Invalid data repository 'joss.theoj.org')r,   r-   r.   r
   ÚstrÚvalue©Úexcs    r%   Útest_invalid_doi_repositoryr8   ^   sL   € ô 
�‰”zÔ	" càŒ‹Ø7ÀTÐQUõ	
÷ 
#ð
 6¼¸S¿Y¹Y»ÑGÐGÑG÷ 
#Ð	"ús   šAÁAc                  óx   — t        j                  t        «      5  t        d¬«       ddd«       y# 1 sw Y   yxY w)z#Should fail if the DOI is not foundÚNOTAREALDOI)ÚdoiN)r,   r-   r   r   r/   r'   r%   Útest_doi_url_not_foundr<   i   s$   € ô 
�‰”yÕ	!Ü�}Õ%÷ 
"×	!Ñ	!ús   š0°9zrepository,doiz10.6084/m9.figshare.14763051.v1)Úmarksz10.5281/zenodo.4924875z10.11588/data/TKCFEF)ÚfigshareÚzenodoÚ	dataverse)Úidsc                 óð   — t        j                  t        «      5 }t        |«      }| j	                  ||«      }|j                  d¬«       ddd«       dt        j                  «      v sJ ‚y# 1 sw Y   Œ#xY w)z3Should fail if the file is not found in the archivezbla.txt©Ú	file_nameNzFile 'bla.txt' not found)r,   r-   r.   r   Ú
initializeÚdownload_urlr4   r5   )Ú
repositoryr;   r7   r   Úrepos        r%   Ú test_figshare_url_file_not_foundrI   p   sd   € ô  
�‰”zÔ	" cÜ˜‹oˆØ×$Ñ$ S¨#Ó.ˆØ×Ñ IÐÔ.÷ 
#ð &¬¨S¯Y©Y«Ñ7Ð7Ñ7÷	 
#Ð	"ús   š0A,Á,A5c                 óÆ   — t        «       5 }t        «       }t        j                  j	                  |d«      } || dz   |d«       t        |«       ddd«       y# 1 sw Y   yxY w)zTest the DOI downloaderr   N)r   r
   ÚosÚpathÚjoinr   )r   Úlocal_storer$   Úoutfiles       r%   Útest_doi_downloaderrP   ‡   sL   € ô 
Ô	 Ü"“_ˆ
Ü—'‘'—,‘,˜{¨OÓ<ˆÙ�3˜Ñ(¨'°4Ô8Ü˜Ô ÷	 
×	Ñ	ús   ‹AAÁA c                  ó0  — t        «       5 } t        dz   }t        «       }t        j                  j                  | d«      } |||d«        t        «       |dd¬«      }|D �cg c]	  }d|v sŒ|‘Œ c}\  }t        |«       ddd«       yc c}w # 1 sw Y   yxY w)zf
    Test the Zenodo downloader when the path contains a forward slash

    Related to issue #336
    z!santisoler/pooch-test-data-v1.zipztest-data.zipNÚdownload)Úactionr3   r   )r   ÚZENODOURL_W_SLASHr
   rK   rL   rM   r   r   )rN   Úbase_urlr$   rO   ÚfnamesÚfÚfnames          r%   Ú*test_zenodo_downloader_with_slash_in_fnamerY   —   s�   € ô 
Ô	 Ü$Ð'JÑJˆÜ"“_ˆ
Ü—'‘'—,‘,˜{¨OÓ<ˆÙ�8˜W dÔ+ð ”“˜¨¸4Ô@ˆÙ%Ó>™v˜!¨¸AÒ)=’A˜vÑ>‰ˆÜ˜Ô÷ 
Ð	ùò ?÷ 
Ð	ús$   ‹ABÁ 	BÁ*BÁ.BÂBÂBc                  ó`  — t         } | d| j                  d«       dz   } | dd }d|› d�}t        «       5 }t        «       }t        j
                  j                  |d«      }t        j                  t        |¬	«      5   || dz   |d«       ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)
zf
    Test if passing a Figshare url without a version warns about it, but still
    downloads it.
    NÚ.Ú/é   éÿÿÿÿzThe Figshare DOI 'z#' doesn't specify which version of r   ©Úmatch)
ÚFIGSHAREURLÚrindexr   r
   rK   rL   rM   r,   ÚwarnsÚUserWarning)r   r;   Úwarning_msgrN   r$   rO   s         r%   Ú!test_figshare_unspecified_versionrf   «   sž   € ô €Cà
Ð�—
‘
˜3“Ð
  3Ñ
&€Cà
ˆa�ˆ)€CØ& s eÐ+NÐO€KÜ	Ô	 Ü"“_ˆ
Ü—'‘'—,‘,˜{¨OÓ<ˆÜ�\‰\œ+¨[Ö9Ù�s˜_Ñ,¨g°tÔ<÷ :÷ 
Ð	÷ :Ð9ú÷ 
Ð	ús$   ³AB$Á9BÂB$ÂB!	ÂB$Â$B-zversion, missing, present)r   ú7LC08_L2SP_218074_20190114_20200829_02_T1-cropped.tar.gzúcropped-before.tar.gz)r   rh   rg   c                 óŒ   — d| › �}d|› d�}t        ||«      }|j                  D �cg c]  }|d   ‘Œ	 }}||v sJ ‚||vsJ ‚yc c}w )zG
    Test if setting the version in Figshare DOI works as expected
    z10.6084/m9.figshare.21665630.vúhttps://doi.org/r\   ÚnameN)r   Úapi_response)ÚversionÚmissingÚpresentr;   r   r>   ÚitemÚ	filenamess           r%   Ú&test_figshare_data_repository_versionsrr   ¿   sl   € ð. +¨7¨)Ð
4€CØ˜S˜E Ð
#€CÜ! # sÓ+€HØ*2×*?Ò*?Ó@Ñ*? $��f“Ð*?€IÐ@Ø�iÑÐÐØ˜)Ñ#Ð#Ñ#ùò As   ¦Ac                 ó  — t        | d«      5 }t        «       5 }t        | j                  ¬«      }t        j
                  j                  |d«      } |||d«       t        |«       ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)zTest ftp downloaderr   )ÚportN)r   r   r   Úserver_portrK   rL   rM   r   )Ú	ftpserverr   rN   r$   rO   s        r%   Útest_ftp_downloaderrw   Þ   sm   € ô 
�y /Ô	2°cÜÔ! [Ü&¨I×,AÑ,AÔBˆJÜ—g‘g—l‘l ;°Ó@ˆGÙ�s˜G TÔ*Ü˜GÔ$÷	 "÷ 
3Ð	2ß!Ð!ú÷ 
3Ð	2ús#   �B˜AA5Á$BÁ5A>	Á:BÂB
zrequires paramiko to run SFTPc                  óø   — t        «       5 } t        dd¬«      }d}t        j                  j	                  | d«      } |||d«       t        j                  j                  |«      sJ ‚	 ddd«       y# 1 sw Y   yxY w)zTest sftp downloaderÚdemoÚpassword©Úusernamerz   r)   úpocketftp.pngN)r   r	   rK   rL   rM   Úexists)rN   r$   r   rO   s       r%   Útest_sftp_downloaderr   é   s_   € ô 
Ô	 Ü#¨V¸jÔIˆ
Ø?ˆÜ—'‘'—,‘,˜{¨OÓ<ˆÙ�3˜ Ô&Ü�w‰w�~‰~˜gÔ&Ð&Ñ&÷ 
×	Ñ	ús   ‹AA0Á0A9c                  óR  — t        «       5 } t        dd¬«      }d}t        j                  j	                  | d«      }t        |d«      5 }t        j                  t        «      5   |||d«       dd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   yxY w)zFDownloader should fail when a file object rather than string is passedry   rz   r{   r)   r}   ÚwbN)	r   r	   rK   rL   rM   Úopenr,   r-   Ú	TypeError)rN   r$   r   rO   Úoutfile_objs        r%   Ú(test_sftp_downloader_fail_if_file_objectr…   õ   s‚   € ô 
Ô	 Ü#¨V¸jÔIˆ
Ø?ˆÜ—'‘'—,‘,˜{¨OÓ<ˆÜ�'˜4Ô  KÜ—‘œyÕ)Ù˜3 ¨TÔ2÷ *÷ !÷	 
Ð	÷
 *Ð)ú÷ !Ð ú÷	 
Ð	ús;   ‹<BÁBÁ!BÁ,BÁ4BÂBÂ
BÂB	ÂBÂB&zparamiko must be missingc                  ó¦   — t        j                  t        «      5 } t        «        ddd«       dt	         j
                  «      v sJ ‚y# 1 sw Y   Œ#xY w)z+test must fail if paramiko is not installedNz
'paramiko')r,   r-   r.   r	   r4   r5   r6   s    r%   Ú-test_sftp_downloader_fail_if_paramiko_missingr‡     s<   € ô 
�‰”zÔ	" cÜÔ÷ 
#àœ3˜sŸy™y›>Ñ)Ð)Ñ)÷ 
#Ð	"ús   šAÁAztqdm must be missingr$   c                 ó¤   — t        j                  t        «      5 } | d¬«       ddd«       dt        j                  «      v sJ ‚y# 1 sw Y   Œ#xY w)zFMake sure an error is raised if trying to use progressbar without tqdmTr    Nz'tqdm')r,   r-   r.   r4   r5   )r$   r7   s     r%   Ú!test_downloader_progressbar_failsr‰   
  s>   € ô 
�‰”zÔ	" cÙ˜tÕ$÷ 
#à”s˜3Ÿ9™9“~Ñ%Ð%Ñ%÷ 
#Ð	"ús   š
AÁAzurl,downloaderÚhttpr>   c                 ó¨  —  |d¬«      }t        «       5 }d}| |z   } t        j                  j                  ||«      } || |d«       |j	                  «       }|j
                  j                  d«      d   j                  «       }t        |«      dk(  sJ ‚t        j                  dk(  rd	}	nd
}	|dd |	k(  sJ ‚t        |«       ddd«       y# 1 sw Y   yxY w)z@Setup a downloader function that prints a progress bar for fetchTr    r   NÚr^   éO   Úwin32ú100%|####################õA   100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆé   )r   rK   rL   rM   Ú
readouterrÚerrÚsplitÚstripÚlenÚsysÚplatformr   )
r   r$   ÚcapsysrR   rN   rX   rO   ÚcapturedÚprintedÚprogresss
             r%   Útest_downloader_progressbarr�     sÄ   € ñ  dÔ+€HÜ	Ô	 ØˆØ�E‰kˆÜ—'‘'—,‘,˜{¨EÓ2ˆÙ��g˜tÔ$à×$Ñ$Ó&ˆØ—,‘,×$Ñ$ TÓ*¨2Ñ.×4Ñ4Ó6ˆÜ�7‹|˜rÒ!Ð!Ð!Ü�<‰<˜7Ò"Ø2‰HàZˆHà�s˜ˆ|˜xÒ'Ð'Ð'ä˜Ô ÷! 
×	Ñ	ús   ”B+CÃCc                 óø  — t        |d«      5 }t        d|j                  ¬«      }t        «       5 }t        j
                  j                  |d«      } |||d«       | j                  «       }|j                  j                  d«      d   j                  «       }t        |«      dk(  sJ ‚t        j                  dk(  rd	}nd
}|dd |k(  sJ ‚t        |«       ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)zESetup an FTP downloader function that prints a progress bar for fetchr   T)r!   rt   NrŒ   r^   r�   rŽ   r�   r�   r‘   )r   r   ru   r   rK   rL   rM   r’   r“   r”   r•   r–   r—   r˜   r   )	r™   rv   r   rR   rN   rO   rš   r›   rœ   s	            r%   Útest_downloader_progressbar_ftprŸ   3  sß   € ô 
�y /Ô	2°cÜ ¨T¸	×8MÑ8MÔNˆÜÔ! [Ü—g‘g—l‘l ;°Ó@ˆGÙ�S˜' 4Ô(ð ×(Ñ(Ó*ˆHØ—l‘l×(Ñ(¨Ó.¨rÑ2×8Ñ8Ó:ˆGÜ�w“< 2Ò%Ð%Ð%Ü�|‰|˜wÒ&Ø6‘à^�ð ˜3˜B�< 8Ò+Ð+Ð+ä˜GÔ$÷! "÷ 
3Ð	2ç!Ð!ú÷ 
3Ð	2ús#   �"C0¯B$C$ÃC0Ã$C-	Ã)C0Ã0C9c                 óÖ  — t        ddd¬«      }t        «       5 }d}t        j                  j	                  |d«      } |||d«       | j                  «       }|j                  j                  d«      d	   j                  «       }t        |«      d
k(  sJ ‚t        j                  dk(  rd}nd}|dd |k(  sJ ‚t        j                  j                  |«      sJ ‚	 ddd«       y# 1 sw Y   yxY w)zFSetup an SFTP downloader function that prints a progress bar for fetchTry   rz   )r!   r|   rz   r)   r}   NrŒ   r^   r�   rŽ   r�   r�   r‘   )r	   r   rK   rL   rM   r’   r“   r”   r•   r–   r—   r˜   r~   )r™   r$   rN   r   rO   rš   r›   rœ   s           r%   Ú test_downloader_progressbar_sftpr¡   L  sÍ   € ô
  ¨D¸6ÈJÔW€JÜ	Ô	 Ø?ˆÜ—'‘'—,‘,˜{¨OÓ<ˆÙ�3˜ Ô&à×$Ñ$Ó&ˆØ—,‘,×$Ñ$ TÓ*¨2Ñ.×4Ñ4Ó6ˆÜ�7‹|˜rÒ!Ð!Ð!Ü�<‰<˜7Ò"Ø2‰HàZˆHà�s˜ˆ|˜xÒ'Ð'Ð'ä�w‰w�~‰~˜gÔ&Ð&Ñ&÷ 
×	Ñ	ús   ™B<CÃC(c                 óŠ  —  G d„ d«      } |d¬«      }t        |¬«      }t        «       5 }d}t        |z   }t        j                  j                  |d«      } |||d«       | j                  «       }|j                  j                  d«      d   j                  «       }	d	}
|	|
k(  sJ ‚t        |«       ddd«       y# 1 sw Y   yxY w)
zASetup a downloader function with an arbitrary progress bar class.c                   ó>   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	d„ «       Z
y)	úEtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplayz&A minimalist replacement for tqdm.tqdmc                 ó    — d| _         || _        y )Nr   )ÚcountÚtotal)Úselfr§   s     r%   Ú__init__zNtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplay.__init__k  s   € ØˆDŒJØˆD�Jr'   c                 ó^   — t        | j                  «      dz   t        | j                  «      z   S )zrepresent current completionr\   )r4   r¦   r§   ©r¨   s    r%   Ú__repr__zNtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplay.__repr__o  s"   € ä�t—z‘z“? SÑ(¬3¨t¯z©z«?Ñ:Ð:r'   c                 óB   — t        d| › �t        j                  d¬«       y)zprint self.__repr__ to stderrrŒ   Ú )ÚfileÚendN©Úprintr—   Ústderrr«   s    r%   ÚrenderzLtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplay.renders  s   € ä�B�t�f�+¤C§J¡J°BÖ7r'   c                 ó2   — || _         | j                  «        y)zmodify completion and renderN)r¦   r´   )r¨   Úis     r%   ÚupdatezLtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplay.updatew  s   € àˆDŒJØ�K‰K�Mr'   c                 ó   — d| _         y)zset counter to 0r   N)r¦   r«   s    r%   ÚresetzKtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplay.reset|  s	   € àˆD�Jr'   c                  ó:   — t        dt        j                  ¬«       y)zprint a new empty liner®   )r¯   Nr±   r/   r'   r%   ÚclosezKtest_downloader_arbitrary_progressbar.<locals>.MinimalProgressDisplay.close€  s   € ô �"œ3Ÿ:™:Ö&r'   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r©   r¬   r´   r·   r¹   Ústaticmethodr»   r/   r'   r%   ÚMinimalProgressDisplayr¤   h  s2   „ Ù4ò	ò	;ò	8ò	ò
	ð 
ñ	'ó 
ñ	'r'   rÁ   N)r§   r    zlarge-data.txtrŒ   r^   z336/336)r   r   ÚBASEURLrK   rL   rM   r’   r“   r”   r•   r   )r™   rÁ   ÚpbarrR   rN   rX   r   rO   rš   r›   rœ   s              r%   Ú%test_downloader_arbitrary_progressbarrÄ   d  s²   € ÷'ñ 'ñ: "¨Ô-€DÜ¨$Ô/€HÜ	Ô	 Ø ˆÜ˜‰oˆÜ—'‘'—,‘,˜{Ð,<Ó=ˆÙ��g˜tÔ$à×$Ñ$Ó&ˆØ—,‘,×$Ñ$ TÓ*¨2Ñ.×4Ñ4Ó6ˆàˆØ˜(Ò"Ð"Ð"ô 	˜Ô!÷ 
×	Ñ	ús   ªBB9Â9Cc                   ó¤  — e Zd ZdZdZde› �Zde› �ZdZdZdZ	ddeeed	ed
e	› �deidœgdœZ
ddeeed	ee	deidœgdœZddeeed	ee	deidœd	ed
e	› �deidœgdœZej                  j                  dde
fdefdefg«      d„ «       Zej                  j                  dde
fdefg«      d„ «       Zej                  j                  de
eg«      d„ «       Zy)ÚTestZenodoAPISupportz0
    Test support for different Zenodo APIs
    i@â z10.0001/zenodo.rj   zmy-file.zipzMhttps://zenodo.org/api/files/513d7033-93a2-4eeb-821c-2fb0bbab0012/my-file.zipÚ 2942bfabb3d05332b66eb128e0842cffz 2021-20-19T08:00:00.000000+00:00z$513d7033-93a2-4eeb-821c-2fb0bbab0012úmd5:r¨   )ÚidÚkeyÚchecksumÚlinks)ÚcreatedÚmodifiedrÉ   r;   Údoi_urlÚfiles)rÉ   ÚfilenamerË   rÌ   zapi_version, api_responseÚlegacyÚnewÚinvalidc                 óv  — |j                  d| j                  › �«      j                  |«       t        | j                  | j
                  ¬«      }|j                  d«      |_        |dk7  r|j                  |k(  sJ ‚yd}t        j                  t        |¬«      5  |j                  }ddd«       y# 1 sw Y   yxY w)z@
        Test if the API version is correctly detected.
        ú/zenodo.©r;   Úarchive_urlr®   rÔ   z0Couldn't determine the version of the Zenodo APIr_   N)Úexpect_requestÚ
article_idÚrespond_with_jsonr   r;   rÏ   Úurl_forÚbase_api_urlÚapi_versionr,   r-   r.   )r¨   Ú
httpserverrÞ   rl   r$   Úmsgs         r%   Útest_api_versionz%TestZenodoAPISupport.test_api_versionã  s›   € ð 	×!Ñ! H¨T¯_©_Ð,=Ð">Ó?×QÑQØô	
ô &¨$¯(©(ÀÇÁÔMˆ
à",×"4Ñ"4°RÓ"8ˆ
Ôà˜)Ò#Ø×)Ñ)¨[Ò8Ð8Ñ8àDˆCÜ—‘œz°Ö5Ø(×4Ñ4�÷ 6×5Ñ5ús   ÂB/Â/B8c                 óz  — |j                  d| j                  › �«      j                  |«       t        | j                  | j
                  ¬«      }|j                  d«      |_        |j                  | j                  ¬«      }|dk(  r|| j                  k(  sJ ‚y	d| j                  › d| j                  › d�}||k(  sJ ‚y	)
zK
        Test if the download url is correct for each API version.
        rÖ   r×   r®   rC   rÒ   zhttps://zenodo.org/records/z/files/z?download=1N)rÙ   rÚ   rÛ   r   r;   rÏ   rÜ   rÝ   rF   rD   Úfile_url)r¨   rß   rÞ   rl   r$   rF   Úexpected_urls          r%   Útest_download_urlz&TestZenodoAPISupport.test_download_urlÿ  s½   € ð 	×!Ñ! H¨T¯_©_Ð,=Ð">Ó?×QÑQØô	
ô &¨$¯(©(ÀÇÁÔMˆ
à",×"4Ñ"4°RÓ"8ˆ
Ôà!×.Ñ.¸¿¹Ð.ÓHˆØ˜(Ò"Ø 4§=¡=Ò0Ð0Ñ0ð .Ø—?‘?Ð# 7¨4¯>©>Ð*:¸+ðGð ð   <Ò/Ð/Ñ/r'   rl   c                 ó\  — |j                  d| j                  › �«      j                  |«       t        d|¬«      }t	        | j
                  | j                  ¬«      }|j                  d«      |_        |j                  |«       |j                  | j                  d| j                  › �ik(  sJ ‚y)zX
        Test if population of registry is correctly done for each API version.
        rÖ   r®   )rU   rL   r×   rÈ   N)rÙ   rÚ   rÛ   r   r   r;   rÏ   rÜ   rÝ   Úpopulate_registryÚregistryrD   Úfile_checksum)r¨   rß   Útmp_pathrl   Úpuppyr$   s         r%   Útest_populate_registryz+TestZenodoAPISupport.test_populate_registry  s˜   € ð 	×!Ñ! H¨T¯_©_Ð,=Ð">Ó?×QÑQØô	
ô ˜r¨Ô1ˆä%¨$¯(©(ÀÇÁÔMˆ
à",×"4Ñ"4°RÓ"8ˆ
Ôà×$Ñ$ UÔ+Ø�~‰~ $§.¡.°D¸×9KÑ9KÐ8LÐ2MÐ!NÒNÐNÑNr'   N)r¼   r½   r¾   r¿   rÚ   r;   rÏ   rD   rã   ré   Úlegacy_api_responseÚnew_api_responseÚinvalid_api_responser,   ÚmarkÚparametrizerá   rå   rì   r/   r'   r%   rÆ   rÆ   —  s»  „ ñð €JØ˜J˜<Ð
(€CØ   Ð&€GØ€IàWð ð 7€Mð 6Ø6ØØØð =Ø Ø" = /Ð2à˜Hðñ	ð	
ñÐð& 6Ø6ØØØð =Ø%Ø)à˜Hðñ	ð	
ñÐð& 6Ø6ØØØð =Ø%Ø)à˜Hðñ	ð =Ø Ø" = /Ð2à˜Hðñ	ð
ñÐð4 ‡[�[×ÑØ#àÐ*Ð+ØÐ$Ð%ØÐ,Ð-ð	
óñ5óð5ð( ‡[�[×ÑØ#Ø
Ð'Ð	(¨5Ð2BÐ*CÐDóñ0ó	ð0ð. ‡[�[×ÑØØ	Ð.Ð/óñOó	ñOr'   rÆ   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚTestDOIDownloaderHeadersz+Test the headers argument in DOIDownloader.c                 ó„   — t        «       }|j                  t        k(  sJ ‚t        d¬«      }|j                  t        k(  sJ ‚y)z#Test the default value for headers.N©Úheaders)r
   rö   r   ©r¨   r$   s     r%   Útest_default_headersz-TestDOIDownloaderHeaders.test_default_headers4  s=   € ä"“_ˆ
Ø×!Ñ!Ô%5Ò5Ð5Ð5Ü"¨4Ô0ˆ
Ø×!Ñ!Ô%5Ò5Ð5Ñ5r'   c                 óJ   — t        ddi¬«      }ddi}|j                  |k(  sJ ‚y)zTest overwriting for headers.ÚcustomÚfieldrõ   N©r
   rö   )r¨   r$   Úexpected_headerss      r%   Útest_overwrite_headersz/TestDOIDownloaderHeaders.test_overwrite_headers;  s5   € ä"¨H°gÐ+>Ô?ˆ
à�gð
Ðð ×!Ñ!Ð%5Ò5Ð5Ñ5r'   c                 ó>   — t        i ¬«      }|j                  i k(  sJ ‚y)z&Test passing an emtpy dict to headers.rõ   Nrü   r÷   s     r%   Útest_headers_empty_dictz0TestDOIDownloaderHeaders.test_headers_empty_dictC  s    € ä"¨2Ô.ˆ
Ø×!Ñ! RÒ'Ð'Ñ'r'   N)r¼   r½   r¾   r¿   rø   rþ   r   r/   r'   r%   ró   ró   1  s   „ Ù5ò6ò6ó(r'   ró   )Cr¿   rK   r—   Útempfiler   r,   Úrequestsr   ÚtqdmÚImportErrorÚparamikor®   r   Údownloadersr   r   r	   r
   r   r   r   r   r   r   Ú
processorsr   Úutilsr   r   r   r   r   r   r   r   rÂ   ra   Ú	ZENODOURLrT   ÚDATAVERSEURLrð   Úskipifrñ   r&   r*   r0   Únetworkr8   r<   Úparamr>   rI   rP   rY   rf   rr   rw   r   r…   r‡   r‰   r�   rŸ   r¡   rÄ   rÆ   ró   r/   r'   r%   Ú<module>r     s|  ðñó 
Û 
Ý 'ã Ý ð
ÛðÛõ ÷÷ ÷ õ ÷	÷ 	ó 	ñ Ó
€Ù%Ó'€Ù!Ó#€	Ù4Ó6Ð Ù'Ó)€ð ‡�×Ñ�D˜D�L¨ÐÓ9Ø‡�×ÑØ	à�/Ñ!Øðóñ*óó :ð*ð ‡�×Ñ�H Ð$Ð-@ÐÓAñ*ó Bð*ò/ð ‡�×ÑñHó ðHð ‡�×Ññ&ó ð&ð ‡�×ÑØ‡�×ÑØàˆ�‰ØØ-Ø—+‘+×&Ñ&ô	
ð
 
Ð3Ð4Ø	Ð4Ð5ðò 	,ð ó ñ8óó ð8ð ‡�×ÑØ‡�×ÑØ	Ø€V‡\�\�+ V§[¡[×%9Ñ%9Ô:¸IÀ|ÐTÚ+ð ó ñ
!óó ð!ð ‡�×Ññó ðð& ‡�×ÑØ‡�×Ññ=ó ó ð=ð$ ‡�×ÑØ‡�×ÑØ‡�×ÑØð	
ð
	
ðóñ$óó ó ð"$ð ‡�×Ññ%ó ð%ð ‡�×ÑØ‡�×Ñ�H Ð$Ð-LÐÓMñ'ó Nó ð'ð ‡�×ÑØ‡�×Ñ�H Ð$Ð-LÐÓMñ3ó Nó ð3ð ‡�×Ñ�H DÐ(Ð1KÐÓLñ*ó Mð*ð ‡�×Ñ�D Ð$Ð-CÐÓDØ‡�×Ñ˜¨¸À~Ð'VÓWñ&ó Xó Eð&ð ‡�×ÑØ‡�×Ñ�D˜D�L¨ÐÓ9Ø‡�×ÑØà	�.Ð!Øˆ�‰�[ -°v·{±{×7KÑ7KÔLðð 
�Ðð ó ñ!óó :ó ð!ð, ‡�×ÑØ‡�×Ñ�D˜D�L¨ÐÓ9ñ%ó :ó ð%ð. ‡�×ÑØ‡�×Ñ�D˜D�L¨ÐÓ9Ø‡�×Ñ�H Ð$Ð-@ÐÓAñ'ó Bó :ó ð'ð* ‡�×Ññ/"ó ð/"÷dWOñ WO÷t(ò (øðw ò ØƒDðûð
 ò ØƒHðús"   œT ¡T ÔTÔTÔTÔT