
    3*                       d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZdej                  _
        dddg f	 	 	 	 	 	 	 	 	 	 	 ddZ ej                  g d	      dd
       Z ej                  d	      dd       Z ej                  d	      dd       ZddZ ej                         dd       Z ej                         dd       Z ej                         dd       Z ej                  d	      dd       Z ej                  d	      dd       Z ej                  d	       ej,                  dddg      dd              Z ej                  d	      dd       Zej                  dd       Zy)     )annotationsN)PathTzsocks,brotli,zstd,h2Fc                ^   | j                  dddd      j                         }|j                  d      \  }}|dk7  r|j                  dd	      }| j	                  d
d       | j	                  d| d       | j                  dd       | j                  dd       | j                  ddd       | j                  ddd       d}|dk7  s|dk7  rd}nt
        j                  dk(  rd}ddi}	t        | j                  t              r=d| j                  v r/t        | j                  j                  d      d         dk\  rd|	d<    | j                   dg|rdndddd d!dd"|rd#ndd$d%|rd&ndd'd(t        j                  v rd)nd* d+d,d-d.d/d0d1|| j                  xs d2d3|	i y )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      se    "++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:/ GKK-(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                    t        |        y )Nr9   r.   s    r8   testr@   d   s     wr:   3c                    t        | d       y)zRun integration testsT)r1   Nr>   r?   s    r8   test_integrationrC   u   s     wD)r:   c                B    | j                  d       t        | dd       y)zoCheck 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           	     "   |j                  d      d   }|j                  d      r|dd }t        j                  j	                  |      s| j                  dddd	|d
       y| j                  dd|dddd
       | j                  dd|dd
       y)zcWe 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                   t        j                         }| j                         }| j                  |       t	        | d       | j                  d       | j                  dddd       | j                  dd	       | j                  |       | j                  d
d       | j                  | d       | j                  ddd       | j                  dd       y )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                   t        j                         }| j                         }| j                  |       t	        | d       | j                  d       | j                  dddd       | j                  dd	
       | j                  ddd	
       | j                  |       | j                  dd	
       | j                  | d       | j                  ddd       | j                  dd       y )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                    t        |        y)zRun code formatters.N)lintr?   s    r8   formatrn      s     	Mr:   r<   c                b    | j                  d       | j                  ddd       t        |        y )Nz
pre-commitr   z--all-files)r%   r   mypyr?   s    r8   rm   rm      s%    OOL!KKe]3Mr:   r;   c                    | j                  d       | j                  ddd       | j                  dddd       | j                  d	       | j                  ddd
       y )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           	        | j                  dd       | j                  ddd       d}dt        j                  v r t	        t        j                  d         dz  }nt        j                  t        | j                  dd	d
d            j                         }t	        | j                        d| z  }|j                         s^t        d       | j                  dd| d| dd| d       |j                  d       | j                  dd| ddt        |      dd       |}|J |j                         sJ |dk(  rt        j                  t        | j                  dd	dd            j                         }t	        |      j                   d| j                  d    | j                  d<   t        | ddd t        |      d!g"       y|d#k(  rt        j                  t        | j                  dd	d$d            j                         }t	        |      j                   d| j                  d    | j                  d<   t        | dd%d t        |      d!g"       yt!        d&|       )'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                ~    | j                  dd       | j                  dd       | j                  ddddddd	dd
	       y)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                    | j                  dd       | j                  d       | j                  d       t        j                  j	                  d      rt        j                  d       | j                  dddd	d
d       y )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:   