Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
B

©žx%>Ígã@s¼ddlmZmZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddl
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZGdd„deƒZdS)
é)Úabsolute_importÚunicode_literalsN)Úcontextmanager)ÚThread)Úreporter)ÚINFO)ÚInvocationError)Ú	Verbosity)Úget_unique_file)Úis_main_threadc@s‚eZdZdZdd„Zdd„Zdd„Zdd	„Zd
d„Zddd„Z	dd„Z
dd„Zedd„ƒZ
edd„ƒZdd„Zdd„Zdd„ZdS) ÚActionzMAction is an effort to group operations with the same goal (within reporting)cCsn||_||_||_|j dd¡d|_||_||_||_||_d|_	||_
|	|_|
|_||_
tƒrj| ¡dS)Nú ér)ÚnameÚargsÚmsgÚsplitÚactivityÚlog_dirÚgenerate_tox_logÚ	via_popenÚcommand_logÚ
_timed_reportÚpythonÚsuicide_timeoutÚinterrupt_timeoutÚterminate_timeoutrÚ_install_sigterm_handler)ÚselfrrrrrrÚpopenrrrr©r úˆ/build/wlanpi-profiler-SHjkbd/wlanpi-profiler-1.0.8/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/tox/action.pyÚ__init__szAction.__init__cCs:d |jd tt|jƒ¡¡}t |j|¡|_	|j	 
¡|S)Nz{} {}r
)ÚformatrÚjoinÚmapÚstrrrZtimed_operationrrÚ	__enter__)rrr r r!r'9s
zAction.__enter__cCs|j |||¡dS)N)rÚ__exit__)rÚtypeÚvalueÚ	tracebackr r r!r(@szAction.__exit__cCsD||_|r&tjd |j||¡ddntjd |j||¡dddS)Nz	{} {}: {}T)Úbold)rrZ
verbosity0r#rÚ
verbosity1)rrrr r r!ÚsetactivityCszAction.setactivitycCstjd |j||¡dddS)Nz	{} {}: {}T)r,)rr-r#r)rrrr r r!ÚinfoJszAction.infoNTFc
Cs|dkrtj ¡n|}dd„| ||¡Dƒ}
d dd„|
Dƒ¡}| |||||¡}d\}
}|¢\}}}}z¨yD|j|
||t|ƒ|dkrtj	 
¡n|dd	tjd
kr¦t
jndd}Wn(tk
rØ}z
|j}
Wdd}~XYn8X|dk	rê||ƒt ||||j¡| |||¡}|j}
Wd|dk	rJ| ¡rJ| d
¡ d¡}d |dd…¡}zž|
ræ|sæ|	rÚd |
¡}|dk	r’|d |¡7}| ¡s’|d7}t |¡|dk	rÚ| ¡rÚt ddtj¡t |¡t ddtj¡t||
|ƒ‚Wd|j  !|
||
¡XXWdQRX|S)z,this drives an interaction with a subprocessNcSsg|]}t|ƒ‘qSr )r&)Ú.0Úxr r r!ú
<listcomp>[sz Action.popen.<locals>.<listcomp>r
css|]}t |¡VqdS)N)ÚpipesÚquote)r0Úir r r!ú	<genexpr>\szAction.popen.<locals>.<genexpr>)NNTFÚwin32r)ÚstdoutÚstderrÚcwdÚenvÚuniversal_newlinesÚshellÚ
creationflagszUTF-8Ú
éz"invocation failed (exit code {:d})z
, logfile: {}z warning log file missingú=z	log startzlog end)"ÚpyÚpathÚlocalÚ
_rewrite_argsr$Ú_get_standard_streamsrr&ÚosÚenvironÚcopyÚsysÚplatformÚ
subprocessZCREATE_NEW_PROCESS_GROUPÚOSErrorÚerrnorZ	log_popenÚpidÚevaluate_cmdÚ
returncodeÚexistsÚ	read_textrr#ÚerrorÚ	separatorr	ZQUIETÚquietrrZadd_command)rrr:r;ÚredirectÚ	returnoutZ
ignore_retÚcapture_errÚcallbackZreport_failÚcmd_argsÚcmd_args_shellZ
stream_getterZ	exit_codeÚoutputZfinÚout_pathr9r8ÚprocessÚ	exceptionÚlinesrr r r!rMs`






zAction.popencCsdyÎ|jrÀ|sÀ|jdk	rtdƒ‚ttjdtjƒ}t ¡}x€| d¡}|rz| |¡d|ksht ¡|dkr´| 	¡t ¡}q8| 
¡dk	rž|jdk	rš|j ¡Pq8t d¡| 
dd¡q8W| ¡| ¡\}}Wntk
r^}	zpt d¡tƒ}
xVy6|
rt|j|fd}| ¡| ¡n
| |¡Wntk
rBwôYnXPqôW|	‚Wdd}	~	XYnX|S)	Nzstderr must not be piped hereÚbufferró
gš™™™™™¹?rzgot KeyboardInterrupt signal)Útargetr)rr9Ú
ValueErrorÚgetattrrJr8ÚtimeÚreadÚwriteÚflushÚpollÚcloseÚsleepÚseekÚcommunicateÚKeyboardInterruptrrTrrÚhandle_interruptÚstartr$)rÚinput_file_handlerr_rWÚbufZ	last_timeÚdataÚoutÚ_r`Úmain_threadZstopperr r r!rP•sH









zAction.evaluate_cmdcCs¶d t ¡|j¡}| ||j¡dkr²| d| d¡¡| tj	dkrJt
jnt
j¡| ||j
¡dkr²| d| d¡¡| ¡| ||j¡dkr²| d| d¡¡| ¡| ¡dS)z?A three level stop mechanism for children - INT -> TERM -> KILLzfrom {} {{}} pid {}NrpÚSIGINTr7ÚSIGTERMÚSIGKILL)r#rGÚgetpidrOÚ_waitrr/Úsend_signalrJrKÚsignalZCTRL_C_EVENTryrÚ	terminaterÚkillro)rr_rr r r!rqÆszAction.handle_interruptcCsltjdkr4y|j|dWqdtjk
r0YqdXn0d}x*| ¡dkrb|dkrbt |¡||8}q:W| ¡S)N)r@r@)Útimeoutg{®Gáz„?r)rJÚversion_infororLÚTimeoutExpiredrkrgrm)r_r‚Údelayr r r!r}Ôs

zAction._waitccsØd}}}|rtjnd}	|js$|r¼| |j¡}| d¡|}| d¡f}d |j dd¡|j dd¡t	|ƒ dd¡| dd¡¡}
| 
|
¡| ¡| ¡|||	|fVdSQRXWdQRX|rÆtj
}|||	|fVdS)NÚwtÚrbz$action: {}, msg: {}
cwd: {}
cmd: {}
r?r
)rLÚSTDOUTrÚget_log_pathrÚopenr#Úreplacerr&rirjrhÚPIPE)rrYr\rWrXr:r8r^rsr9rr r r!rFäs$

zAction._get_standard_streamscCst|j|dd}|S)Nz.log)ÚprefixÚsuffix)r
r)rZactionidZlog_filer r r!r‰ýszAction.get_log_pathc	CsÐd}tjr8tj t|dƒ¡d ¡}|dkr8t|jƒ}|dkrT|d}|dd…}|g}xp|D]h}|rºtj t|ƒ¡rºt	j 
|¡}| ¡rº| |¡dk	rº| 
|¡}t| d¡ƒdkrº|}| t|ƒ¡q`W|S)Nrrz.pyz..é)rZIS_WINrGrCÚsplitextr&ÚlowerrÚisabsrBrDrRÚcommonZbestrelpathÚlenrÚappend)	rr:rÚ
executableÚextÚnew_argsÚargZarg_pathZ
potential_argr r r!rEs$


zAction._rewrite_argscCsdd„}t tj|¡dS)z0Handle sigterm as if it were a keyboardinterruptcSst d¡tƒ‚dS)Nz/Got SIGTERM, handling it as a KeyboardInterrupt)rrTrp)ÚsignumÚframer r r!Úsigterm_handler!s
z8Action._install_sigterm_handler.<locals>.sigterm_handlerN)rrz)rrœr r r!rszAction._install_sigterm_handler)NNTFFTNT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"r'r(r.r/rrPrqÚstaticmethodr}rrFr‰rErr r r r!rs* 
>1r)Ú
__future__rrrGr3rrLrJrgÚ
contextlibrÚ	threadingrrBZtoxrZ
tox.constantsrZ
tox.exceptionrZtox.reporterr	Z
tox.util.lockr
Ztox.util.stdlibrÚobjectrr r r r!Ú<module>s