ϪfdZddlZddlmZmZddlmZddlmZmZm Z m Z m Z m Z m Z ddlmZddlmZddlmZmZmZmZdd lmZdd lmZmZd d lmZmZmZd d l m!Z!m"Z"d dl#m$Z$e%Z&dede'gdfde'ddfdZ(GddeZ)y)z$ Command line options for C{twist}. N)stderrstdout)dedent)CallableIterableMappingOptionalSequenceTuplecast)version) IReactorCore)InvalidLogLevelErrorLogLeveljsonFileLogObservertextFileLogObserver) getPlugins)Options UsageError) NoSuchReactorgetReactorTypesinstallReactor) ExitStatusexit) IServiceMakeropt TwistOptionskwargsreturnc `t|jxsdjdi||_y)z Update the docstring of a method that implements an option. The string is dedented and the given keyword arguments are substituted. N)r__doc__format)rrs D/usr/lib/python3/dist-packages/twisted/application/twist/_options.py _update_docr's) 3&*+22zTwistOptions.TsJ"Abll^1-Joptionscb||jk(rddlm}tt|St |S)z& Install the reactor. r)r<)r0twisted.internetr<r rr)r4r:r<s r&rzTwistOptions.installReactorWs- 4** * 0 g. .!$' 'r( levelNamecl tj||d<y#t$rtd|wxYw)z[ Set default log level. (options: {options}; default: "{default}") r-zInvalid log level: N)r levelWithNamerr)r4rJs r& opt_log_levelzTwistOptions.opt_log_levelbsA  @'55i@D # @29+>? ? @s3c#<K|]}d|jdywr?)r:)rBconstants r&rDzTwistOptions.ns" %-a a  rE)rGr*fileNamec|dk(r t|d<y|dk(r t|d<y t|d|d<y#t$r*}t t j d|d|Yd}~yd}~wwxYw)zM Log to file. ("-" for stdout, "+" for stderr; default: "-") -r.N+azUnable to open log file z: )rropenFileOSErrorrrEX_IOERR)r4rPes r& opt_log_filezTwistOptions.opt_log_filetsu s?$DO  s?$DO  &x5DO  ##*8,b<   s0 A# AA#r%c|j}|dk(r t|d<n|dk(r t|d<ntd|||d<y)z Log file format. (options: "text", "json"; default: "text" if the log file is a tty, otherwise "json") textfileLogObserverFactoryjsonzInvalid log format: logFormatN)lowerrrr)r4r%s r&opt_log_formatzTwistOptions.opt_log_formatsR  V -@D) * v -@D) *3F8<= ="[r(cd|vr?|d}t|dr|jrt|d<d|d<yt|d<d|d<yy)zm Set C{fileLogObserverFactory} to the default appropriate for the chosen C{logFile}. r\r.isattyr[r^r]N)hasattrrbrr)r4r.s r&selectDefaultLogObserverz%TwistOptions.selectDefaultLogObserversW $4 /9oGw)gnn.>1D-.$*[!1D-.$*[! 0r(rGc|jtj||d|vr|j|d|d<yy)NrFr<r,)rdr parseOptionsr)r4rGs r&rfzTwistOptions.parseOptionssD %%'T73 D "11$}2EFDO !r(cd|vr*i}ttD]}|||j<||d<ttt tf|dS)Nplugins)rrtapnamer rstr)r4rhplugins r&rhzTwistOptions.pluginssU D G$]3 1*0' 1%DOGC./iAAr(c#K|j}t|D]5}||}|fdtdtfd}|jd||j f7yw)Nrkr c>tt|jSN)r rrG)rks r&rGz)TwistOptions.subCommands..optionssGV^^%566r()rhsortedrrri description)r4rhr:rkrGs r& subCommandszTwistOptions.subCommandssb,,7O FDT]F 17 7  77 7>>4&2D2DE E FsAAc\tj||j tdy)NzNo plugin specified.)r postOptions subCommandrr3s r&rszTwistOptions.postOptionss+D! ?? "34 4 #r()r N)r ztyping.NoReturnrn)%__name__ __module__ __qualname__r$r0rinfor1r/rjr6r9r=r'joinrrrrM iterconstantsr:rYr`rdr r rfpropertyrrrhrr rrrqrsr#r(r&rr's#mmO FSF- ' ' ' J8IJJ (3 (< (@s@t@  1G1G1G1I   $$ ST(#S#T#  +GHXc]$;GtGBm!34BB F %T8]OW,D#EsJK L F F5r()*r$typingsysrrtextwraprrrrr r r r twisted.copyrightr twisted.internet.interfacesrtwisted.loggerrrrrtwisted.pluginrtwisted.python.usagerrreactorsrrr runner._exitrrserviceropenrUrjr'rr#r(r&rs~ OOO%4 &4EE+# =X~s3T9:=c=d=h57h5r(