
    3*                       S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKrS\R                  l
        SSS/ 4           SS jjr\R                  " / SQS	9SS
 j5       r\R                  " SS	9SS j5       r\R                  " SS	9SS j5       rSS jr\R                  " 5       SS j5       r\R                  " 5       SS j5       r\R                  " 5       SS j5       r\R                  " SS	9SS j5       r\R                  " SS	9SS j5       r\R                  " SS	9\R,                  " SSS/5      SS j5       5       r\R                  " SS	9SS j5       r\R                  SS j5       rg)     )annotationsN)PathTzsocks,brotli,zstd,h2Fc                   U R                  SSSSS9R                  5       nUR                  S5      u  pgUS:w  a  UR                  SS	5      nU R	                  S
S5        U R	                  SU S35        U R                  SS5        U R                  SS5        U R                  SSS5        U R                  SSS5        SnUS:w  d  US:w  a  SnO[
        R                  S:X  a  SnSS0n	[        U R                  [        5      (       a@  SU R                  ;   a0  [        U R                  R                  S5      S   5      S:  a  SU	S'   U R                   " S/U(       a  SOSQSPSPS PS!PSPS"PU(       a  S#OSQS$PS%PU(       a  S&OSQS'S([        R                  ;   a  S)OS* 3PS+PS,PS-PS.PS/PS0PS1PUQU R                  =(       d    S2Q7S3U	06  g )4Npython-czIimport sys; print(sys.implementation.name, sys.version_info.releaselevel)Tsilent finalz,zstd -rzdev-requirements.txtz.[]pip	--versionz.import struct; print(struct.calcsize('P') * 8)-mzOpenSSL.debugcpythonFwin32PYTHONWARNINGSzalways::DeprecationWarning.      sysmonCOVERAGE_CORE)z-bb coveragerunz--parallel-modepytest)z--memrayz--hide-memray-summaryz-vz-ra)z--integrationz--color=GITHUB_ACTIONSyesautoz--tb=nativez--durations=10z--strict-configz--strict-markersz--disable-socketz--allow-unix-socketz/--allow-hosts=localhost,::1,127.0.0.0,240.0.0.0)ztest/env)r   stripsplitreplaceinstallsysplatform
isinstancer   strintosenvironposargs)
sessionextrasbyte_string_comparisonsintegrationpytest_extra_argssession_python_infoimplementation_namerelease_levelmemray_supportedpytest_session_envvarss
             .platform/gsutil/third_party/urllib3/noxfile.py
tests_implr9      sd    "++S	 & 
 eg  *=)B)B3)G&
 , OOD01OObN# KK{#KK+&KK$ PQKK$0i'=G+C 		   	6 	7>>3''7>>!$$S)!,-32:/ KK-(2 	 		
 	 	 	 	 3C	. 	 	 !,
 ,

:5GH 	 	  	!" 	#$ 	%& 	'( 	:)* 
+, //
'Z-. #/    )	z3.8z3.9z3.103.113.12z3.13zpypy3.8zpypy3.9zpypy3.10)r   c                    [        U 5        g )Nr9   r.   s    r8   testr@   d   s     wr:   3c                    [        U SS9  g)zRun integration testsT)r1   Nr>   r?   s    r8   test_integrationrC   u   s     wD)r:   c                <    U R                  S5        [        U SSS9  g)zgCheck that if 'brotlipy' is installed instead of 'brotli' or
'brotlicffi' that we still don't blow up.
brotlipysocksF)r/   r0   N)r%   r9   r?   s    r8   test_brotlipyrG   {   s    
 OOJwwFr:   c           
     $   UR                  S5      S   nUR                  S5      (       a  USS n[        R                  R	                  U5      (       d  U R                  SSSS	US
S9  gU R                  SSUSSSS
S9  U R                  SSUSS
S9  g)z[We either clone the target repository or if already exist
simply reset the state and pull.
/z.gitNgitclonez--depth1Texternal-Cresetz--hardHEADpull)r#   endswithr+   pathisdirr   )r.   git_urlexpected_directorys      r8   	git_clonerZ      s     !s+B/""6**/477==+,,E7IsGdK4+WhQU 	 	
 	E4!3VdKr:   c                   [         R                  " 5       nU R                  5       nU R                  U5        [	        U S5        U R                  S5        U R                  SSSSS9  U R                  SS	5        U R                  U5        U R                  S
SS9  U R                  U S35        U R                  SSS5        U R                  SS5        g )Nz https://github.com/boto/botocorebotocorerL   	rev-parserS   TrO   r   zscripts/ci/installr   Fr   z	/botocorer   *import urllib3; print(urllib3.__version__)zscripts/ci/run-testsr+   getcwd
create_tmpcdrZ   chdirr   r%   r.   roottmp_dirs      r8   downstream_botocorerg      s    99;D  "GJJwg9:MM*KK{FTK:KK./JJtOOCO&JJ')$%KK$ LMKK01r:   c                   [         R                  " 5       nU R                  5       nU R                  U5        [	        U S5        U R                  S5        U R                  SSSSS9  U R                  SS	S
9  U R                  SSS	S
9  U R                  U5        U R                  SS	S
9  U R                  U S35        U R                  SSS5        U R                  SS5        g )Nzhttps://github.com/psf/requestsrequestsrL   r]   rS   TrO   z.[socks]Fr   r   zrequirements-dev.txtr   z	/requestsr   r   r^   r   testsr_   rd   s      r8   downstream_requestsrk      s    99;D  "GJJwg89MM*KK{FTK:OOJuO-OOD0O?JJtOOCO&JJ')$%KK$ LMKK'"r:   c                    [        U 5        g)zRun code formatters.N)lintr?   s    r8   formatrn      s     	Mr:   r<   c                b    U R                  S5        U R                  SSS5        [        U 5        g )Nz
pre-commitr   z--all-files)r%   r   mypyr?   s    r8   rm   rm      s%    OOL!KKe]3Mr:   r;   c                    U R                  S5        U R                  SSS5        U R                  SSSSS9  U R                  S	5        U R                  SSS
5        g )Nbuildr   r   cpz6test/contrib/emscripten/templates/pyodide-console.htmlzdist/index.htmlTrO   distzhttp.server)r%   r   rb   r?   s    r8   pyodideconsoleru      s[     OOGKK$(KK@	   JJvKK$.r:   runnerfirefoxchromec           
        U R                  SS5        U R                  SSS5        SnS[        R                  ;   a   [	        [        R                  S   5      S-  nO[
        R                  " [        U R                  SS	S
SS95      R                  5       n[	        U R                  5      SU 3-  nUR                  5       (       d[  [        S5        U R                  SSU SU S3SU S35        UR                  SS9  U R                  SSU S3S[        U5      SS5        UnUc   eUR                  5       (       d   eUS:X  a  [
        R                  " [        U R                  SS	SSS95      R                  5       n[	        U5      R                   SU R                  S    3U R                  S'   [        U SSS [        U5      S!/S"9  gUS#:X  a  [
        R                  " [        U R                  SS	S$SS95      R                  5       n[	        U5      R                   SU R                  S    3U R                  S'   [        U SS%S [        U5      S!/S"9  g[!        S&U 35      e)'z2Test on Emscripten with Pyodide & Chrome / Firefoxr   zemscripten-requirements.txtr   r   rr   NPYODIDE_ROOTrt   r   z5import pyodide_build;print(pyodide_build.__version__)Tr   zpyodide-z Fetching pyodide build artifactswgetz5https://github.com/pyodide/pyodide/releases/download/z	/pyodide-z.tar.bz2z-O)parentstarz-xjfrQ   z--strip-componentsrN   rx   z_from webdriver_manager.chrome import ChromeDriverManager;print(ChromeDriverManager().install()):PATHz--rtzchrome-no-hostz
--dist-dirr@   )r2   rw   z^from webdriver_manager.firefox import GeckoDriverManager;print(GeckoDriverManager().install())zfirefox-no-hostzUnknown runner: )r%   r   r+   r,   r   typingcastr)   r"   	cache_direxistsprintmkdirparentr!   r9   
ValueError)r.   rv   dist_dirpyodide_versionpyodide_artifacts_pathdrivers         r8   
emscriptenr      s    OOD78KK$(H# 

>23f< !++KKG	  
 %' 	 "&g&7&7!8XoEV;W!W%,,..45KKGGXXabqarrz{)*(3	 #(((6KK)*(3*+$ *??KKq	  
 %' 	 "&f!4!4 5Qw{{67J6KLF H		
 
9	KKp	  
 %' 	 "&f!4!4 5Qw{{67J6KLF!H		
 +F8455r:   c                ~    U R                  SS5        U R                  SS5        U R                  SSSSSSS	SS
5	        g)z	Run mypy.r   zmypy-requirements.txtrp   r   z-pdummyserverr   noxfileurllib3r@   N)r%   r   r?   s    r8   rp   rp   @  sH     OOD12KK$KK
r:   c                   U R                  SS5        U R                  S5        U R                  S5        [        R                  R	                  S5      (       a  [
        R                  " S5        U R                  SSSS	S
S5        g )Nr   zdocs/requirements.txtz.[socks,brotli,zstd]docs_buildzsphinx-buildz-bhtmlz-Wr   z_build/html)r%   rc   r+   rV   r   shutilrmtreer   r?   s    r8   r   r   R  s_    OOD12OO*+MM&	ww~~hhKKfdCGr:   )r.   nox.Sessionr/   r)   r0   boolr1   r   r2   z	list[str]returnNone)r.   r   r   r   )r.   r   rX   r)   r   r   )r.   r   rv   r)   r   r   )
__future__r   r+   r   r&   r   pathlibr   noxoptionserror_on_missing_interpretersr9   r.   r@   rC   rG   rZ   rg   rk   rn   rm   ru   parametrizer   rp   r   r   r:   r8   <module>r      s   " 	  
   
,0 )
 ) %*#%SSS
 "S S !S 
Sl 
 C* *
 CG GL$ 2 2$ # #&  
 F  F/ /$ FIx01]6 2 ]6@ F " H Hr:   