+
    Bi4                        R t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHt ^ RIH	t	H
t
 ^ RIt^RIHtHtHtHt R t]P$                  P'                  R]	]
.RR	.R
7      R 4       tR tR t]P$                  P'                  RRRRRRRR/3RRRRRRR/3RRRRRRR/3RRRRRRR/3.. R$OR
7      R 4       tR  tR! tR" tR# tR# )%z
Test the utility functions.
N)Path)TemporaryDirectory)ThreadPoolExecutorProcessPoolExecutor)	parse_urlmake_local_storagetemporary_fileunique_file_namec                     RR R2p \        V 4      ^8  g   Q h\        V 4      p\        V4      ^8X  g   Q hVR	R R8X  g   Q hVP                  R4      ^,          R,          R8X  g   Q hR# )
z8The file name should never be longer than 255 characterszhttps://www.something.com/dataz.txtNz
aaaaaa.txt-:N
   N
aaaaaaaaaa  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai)lenr	   split)urlfnames     T/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pooch/tests/test_utils.pytest_unique_name_longr      sq    *9+T
:Cs8c>>S!Eu:;,&&&;;sAs#|333    poolthreads	processes)idsc           	     J  a \         P                  oRV3R llpVP                  \         RV4       \         P                  P	                  \         P
                  R4      p\         P                  P                  V4      '       d   Q h V ! 4       ;_uu_ 4       p\        ^4       Uu. uF  qTP                  \        V4      NK  	  ppV F  pVP                  4        K  	  \         P                  P                  V4      '       g   Q h RRR4       \         P                  P                  V4      '       d   \        P                  ! V4       R# R# u upi   + '       g   i     LT; i  \         P                  P                  T4      '       d   \        P                  ! T4       i i ; i)z*Try to create the cache folder in parallelc                F   < \         P                  ! R4       S! WR7       R# )zDelay before calling makedirsg      ?)exist_okN)timesleep)pathr   makedirss   &&r   mockmakedirs6test_make_local_storage_parallel.<locals>.mockmakedirs9   s    

3)r   r    test_parallel_cacheNF)osr    setattrr   joincurdirexistsrangesubmitr   resultshutilrmtree)	r   monkeypatchr!   
data_cacheexecutorifuturesfuturer    s	   &&      @r    test_make_local_storage_parallelr5   &   s   " {{H*
 J5bii)>?Jww~~j))))
&VVxINqIQA 2J?   " "77>>*----  77>>*%%MM*% & V 77>>*%%MM*% &s<   E$ E$E?EEE$ EE!	E$ $>F"c                   R	R lp\         P                  P                  \         P                  R4      p\         P                  P	                  V4      '       d   Q hV P                  \         RV4       \        P                  ! \        4      ;_uu_ 4       p\        VRR7       R\        V4      9   g   Q hR\        V4      9   g   Q h RRR4       R#   + '       g   i     R# ; i)
z9Should warn the user when can't create the local data dirc                    \        R4      hz-Raise an exception to mimic permission issuesz
Fake errorPermissionError)r   r   s   &&r   r!   Atest_local_storage_makedirs_permissionerror.<locals>.mockmakedirsS       l++r   test_permissionr    SOME_VARIABLEr   envz!Pooch could not create data cache'SOME_VARIABLE'Nr$   )r%   r   r'   r(   r)   r&   pytestraisesr:   r   str)r/   r!   r0   errors   &   r   +test_local_storage_makedirs_permissionerrorrF   P   s    , bii):;Jww~~j))))J5		'	'5	
 3c%j@@@ CJ... 
(	'	'	's   2CC"	c           	     .   R p\        4       ;_uu_ 4       p\        P                  ! \        P                  P	                  VR4      4       \        P                  P                  V4      '       g   Q hV P                  \        RV4       \        P                  ! \        4      ;_uu_ 4       p\        VRR7       R\        V4      9   g   Q hR\        V4      9   g   Q h RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	z;Should warn the user when can't write to the local data dirc                     \        R4      hr8   r9   )kwargss   ,r   mocktempfile@test_local_storage_newfile_permissionerror.<locals>.mocktempfilej   r<   r   z1.0NamedTemporaryFiler>   r?   z#Pooch could not write to data cacherA   N)r   r%   r    r   r'   r)   r&   tempfilerB   rC   r:   r   rD   )r/   rJ   r0   rE   s   &   r   *test_local_storage_newfile_permissionerrorrN   e   s    
, 
		
BGGLLU34ww~~j))))H&:LI]]?++u# 9CJFFF$E
222 , 
	 ,+ 
		s$   BD+2C0	D0D ;DD	z
url,outputzhttp://127.0.0.1:8080/test.ncprotocolhttpnetlocz127.0.0.1:8080r   z/test.nczftp://127.0.0.1:8080/test.ncftpz+doi:10.6084/m9.figshare.923450.v1/dike.jsondoiz10.6084/m9.figshare.923450.v1z
/dike.jsonz<doi:10.5281/zenodo.7632643/santisoler/pooch-test-data-v1.zipz10.5281/zenodo.7632643z"/santisoler/pooch-test-data-v1.zipc                *    \        V 4      V8X  g   Q hR# )zParse URL into 3 componentsN)r   )r   outputs   &&r   test_parse_urlrV   }   s    @ S>V###r   c                     \         P                  ! \        4      ;_uu_ 4        \        R4       RRR4       R#   + '       g   i     R# ; i)z:Should fail if we forget to not include // in the DOI linkzdoi://XXX/XXX/fname.txtN)rB   rC   
ValueErrorr    r   r   test_parse_url_invalid_doirZ      s)    	z	"	"+, 
#	"	"	"s	   9A
	c            	        \        4       ;_uu_ 4       p \        V 4      P                  4       '       g   Q h\        V RRR7      ;_uu_ 4       pVP	                  R4       RRR4       \        V RR7      ;_uu_ 4       pVP                  4       P                  4       R8X  g   Q h RRR4       RRR4       \        X 4      P                  4       '       d   Q hR#   + '       g   i     L; i  + '       g   i     LN; i  + '       g   i     LY; i)z8Make sure the file is writable and cleaned up in the endwutf-8encodingMehN)r   r   r)   openwritereadstrip)tmpoutfileinfiles      r   test_temporary_filerh      s    			SCy!!!!#sW--MM%  .#((F;;=&&(E111 )	 
 Cy!!!!!	 .-((	 
	s;   8C:C	C::&C'	!C:C$C:'C72C::D
	c                    \        4       ;_uu_ 4       p \        V 4      ;_uu_ 4       p\        V4      P                  4       '       g   Q hW9   g   Q h\	        VRRR7      ;_uu_ 4       pVP                  R4       RRR4       \	        VRR7      ;_uu_ 4       pVP                  4       P                  4       R8X  g   Q h RRR4       RRR4       \        X4      P                  4       '       d   Q h RRR4       R#   + '       g   i     L; i  + '       g   i     LW; i  + '       g   i     Lb; i  + '       g   i     R# ; i)zIMake sure the file is writable and cleaned up in the end when given a dirr\   r]   r^   r`   N)r   r   r   r)   ra   rb   rc   rd   )r   re   rf   rg   s       r   test_temporary_file_pathrj      s    			D!!S9##%%%%;;c311We$ 2cG,,{{}**,555 - " 9##%%%%% 
	 21,, "! 
		sS   D2A D	'C99D	&D=D	)D29D	D	DD	D/*D22E	c                     \        4       ;_uu_ 4       p \        V 4      P                  4       '       g   Q h\        R4      h  + '       g   i     R# ; i  \         d&    \        X 4      P                  4       '       d   Q h R# i ; i)zHMake sure the file is writable and cleaned up when there is an exceptionzNooooooooo!N)r   r   r)   rX   )re   s    r   test_temporary_file_exceptionrl      sn    &9##%%%%]++   &9##%%%%%&s(   A -AA	A A ,BB)rP   rR   rS   zzenodo-doi-with-slash)__doc__r%   r-   r   pathlibr   rM   r   concurrent.futuresr   r   rB   utilsr   r   r   r	   r   markparametrizer5   rF   rN   rV   rZ   rh   rj   rl   rY   r   r   <module>rs      s9   
     ' F  4 
,-	K   
"&
"&J/*30  ,+;VZP	

 +*:FJO	

 :E9	
 LE2<	
#4 	89  <$=<$
-"
&&r   