Ë
    ojÒ  ã                   ó  — d Z ddlZddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZmZmZmZ dd	lmZ dd
lmZmZ ddlmZmZmZ ddl m!Z!m"Z" ddl#m$Z$ e%Z&dede'gdf   de'ddfd„Z( G d„ de«      Z)y)z$
Command line options for C{twist}.
é    N)ÚstderrÚstdout)Údedent)ÚCallableÚIterableÚMappingÚOptionalÚSequenceÚTupleÚcast)Úversion)ÚIReactorCore)ÚInvalidLogLevelErrorÚLogLevelÚjsonFileLogObserverÚtextFileLogObserver)Ú
getPlugins)ÚOptionsÚ
UsageErroré   )ÚNoSuchReactorÚgetReactorTypesÚinstallReactor)Ú
ExitStatusÚexit)ÚIServiceMakerÚoptÚTwistOptionsÚkwargsÚreturnc                 ó`   —  t        | j                  xs d«      j                  di |¤Ž| _        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)r   r   s     úD/usr/lib/python3/dist-packages/twisted/application/twist/_options.pyÚ_update_docr'      s)   € ð
 3”&˜Ÿ™Ò*¨Ó+×2Ñ2Ñ<°VÑ<€C…Kó    c            	       óê  — e Zd ZdZdZej                  Zdd„Zde	fd„Z
dd„Zde	ddfd	„Z eed
j                  d„  e«       D «       «      ¬«       de	defd„Zde	ddfd„Z eed
j                  d„  ej&                  «       D «       «      ej(                  ¬«       de	ddfd„Zde	ddfd„Z ee«       dd„Zddeee	      ddfd„Zedee	ef   fd„«       Zedee e	de!ege"f   e	f      fd„«       Z#dd„Z$y)r   z,
    Command line options for C{twist}.
    Údefaultr    Nc                 óŠ   — t        j                  | «       | j                  | d<   | j                  | d<   t        | d<   d| _        y )NÚreactorNameÚlogLevelÚlogFiler"   )r   Ú__init__ÚdefaultReactorNameÚdefaultLogLevelr   Úlongdesc©Úselfs    r&   r/   zTwistOptions.__init__/   sB   € Ü×Ñ˜Ôà"×5Ñ5ˆˆ]ÑØ×/Ñ/ˆˆZÑÜ ˆˆY‰ð ˆ�r(   c                 ó2   — t        j                  | «      › d�S )Nz plugin [plugin_options])r   ÚgetSynopsisr3   s    r&   r6   zTwistOptions.getSynopsis:   s   € Ü×%Ñ% dÓ+Ð,Ð,DÐEÐEr(   c                 óB   — t        t        j                  t        › «       y)z)
        Print version and exit.
        N)r   r   ÚEX_OKr   r3   s    r&   Úopt_versionzTwistOptions.opt_version=   s   € ô 	ŒZ×Ñ¤' Õ,r(   Únamec                 ón   — 	 | j                  |«      | d<   || d<   y# t        $ r t        d|› �«      ‚w xY w)zN
        The name of the reactor to use.
        (options: {options})
        Úreactorr,   zUnknown reactor: N)r   r   r   )r4   r:   s     r&   Úopt_reactorzTwistOptions.opt_reactorC   sK   € ð	'Ø"×1Ñ1°$Ó7ˆD�‰Oð #'ˆD�Òøô ò 	9ÜÐ0°°Ð7Ó8Ð8ð	9ús   ‚ œ4z, c              #   ó<   K  — | ]  }d |j                   › d �–— Œ y­w©ú"N)Ú	shortName)Ú.0Úrts     r&   ú	<genexpr>zTwistOptions.<genexpr>T   s   è ø€ ÒJ°"˜A˜bŸl™l˜^¨1Ô-ÑJùó   ‚©Úoptionsc                 ób   — || j                   k(  rddlm} t        t        |«      S t        |«      S )z&
        Install the reactor.
        r   )r<   )r0   Útwisted.internetr<   r   r   r   )r4   r:   r<   s      r&   r   zTwistOptions.installReactorW   s-   € ð �4×*Ñ*Ò*Ý0äœ gÓ.Ð.ä! $Ó'Ð'r(   Ú	levelNamec                 ól   — 	 t        j                  |«      | d<   y# t        $ r t        d|› �«      ‚w xY w)z[
        Set default log level.
        (options: {options}; default: "{default}")
        r-   zInvalid log level: N)r   ÚlevelWithNamer   r   )r4   rJ   s     r&   Úopt_log_levelzTwistOptions.opt_log_levelb   sA   € ð
	@Ü'×5Ñ5°iÓ@ˆD�ÒøÜ#ò 	@ÜÐ2°9°+Ð>Ó?Ð?ð	@ús   ‚ ›3c              #   ó<   K  — | ]  }d |j                   › d �–— Œ y­wr?   )r:   )rB   Úconstants     r&   rD   zTwistOptions.<genexpr>n   s"   è ø€ ò 
Ø%-ˆa�—‘ˆ˜aÔ ñ
ùrE   )rG   r*   ÚfileNamec                 óÌ   — |dk(  r
t         | d<   y|dk(  r
t        | d<   y	 t        |d«      | d<   y# t        $ r*}t	        t
        j                  d|›d|› �«       Y d}~yd}~ww xY w)zM
        Log to file. ("-" for stdout, "+" for stderr; default: "-")
        ú-r.   Nú+ÚazUnable to open log file z: )r   r   ÚopenFileÚOSErrorr   r   ÚEX_IOERR)r4   rP   Úes      r&   Úopt_log_filezTwistOptions.opt_log_filet   su   € ð �sŠ?Ü$ˆD�‰OØà�sŠ?Ü$ˆD�‰OØð	Ü& x°Ó5ˆD�ŠOøÜò 	ÜÜ×#Ñ#Ø*¨8¨,°b¸¸Ð<÷ñ ûð	ús    0 °	A#¹ AÁA#r%   c                 ó†   — |j                  «       }|dk(  r
t        | d<   n|dk(  r
t        | d<   nt        d|› �«      ‚|| d<   y)zˆ
        Log file format.
        (options: "text", "json"; default: "text" if the log file is a tty,
        otherwise "json")
        ÚtextÚfileLogObserverFactoryÚjsonzInvalid log format: Ú	logFormatN)Úlowerr   r   r   )r4   r%   s     r&   Úopt_log_formatzTwistOptions.opt_log_formatˆ   sR   € ð —‘“ˆà�VÒÜ-@ˆDÐ)Ò*Ø�vÒÜ-@ˆDÐ)Ò*äÐ3°F°8Ð<Ó=Ð=Ø"ˆˆ[Òr(   c                 óŠ   — d| vr?| d   }t        |d«      r|j                  «       rt        | d<   d| d<   yt        | d<   d| d<   yy)zm
        Set C{fileLogObserverFactory} to the default appropriate for the
        chosen C{logFile}.
        r\   r.   Úisattyr[   r^   r]   N)Úhasattrrb   r   r   )r4   r.   s     r&   ÚselectDefaultLogObserverz%TwistOptions.selectDefaultLogObserverš   sW   € ð
 $¨4Ñ/Ø˜9‘oˆGä�w Ô)¨g¯n©nÔ.>Ü1D�Ð-Ñ.Ø$*��[Ò!ä1D�Ð-Ñ.Ø$*��[Ò!ð 0r(   rG   c                 óŠ   — | j                  «        t        j                  | |¬«       d| vr| j                  | d   «      | d<   y y )NrF   r<   r,   )rd   r   ÚparseOptionsr   )r4   rG   s     r&   rf   zTwistOptions.parseOptions©   sD   € Ø×%Ñ%Ô'ä×Ñ˜T¨7Õ3à˜DÑ Ø"×1Ñ1°$°}Ñ2EÓFˆD�ŠOð !r(   c                 óž   — d| vr*i }t        t        «      D ]  }|||j                  <   Œ || d<   t        t        t
        t        f   | d   «      S )NÚplugins)r   r   Útapnamer   r   Ústr)r4   rh   Úplugins      r&   rh   zTwistOptions.plugins±   sU   € à˜DÑ ØˆGÜ$¤]Ó3ò 1�Ø*0�˜Ÿ™Ò'ð1à%ˆD�‰Oä”GœC¤Ð.Ñ/°°i±ÓAÐAr(   c              #   óª   K  — | j                   }t        |«      D ]5  }||   }|fdt        dt        fd„}|j                  d ||j
                  f–— Œ7 y ­w)Nrk   r    c                 ó>   — t        t        | j                  «       «      S ©N)r   r   rG   )rk   s    r&   rG   z)TwistOptions.subCommands.<locals>.optionsÆ   s   € ÜœG V§^¡^Ó%5Ó6Ð6r(   )rh   Úsortedr   r   ri   Údescription)r4   rh   r:   rk   rG   s        r&   ÚsubCommandszTwistOptions.subCommands»   sb   è ø€ ð —,‘,ˆÜ˜7“Oò 		FˆDØ˜T‘]ˆFð
 17ñ 7¤ð 7¼7ó 7ð —>‘> 4¨°&×2DÑ2DÐEÓEñ		Fùs   ‚AAc                 ó\   — t        j                  | «       | j                  €t        d«      ‚y )NzNo plugin specified.)r   ÚpostOptionsÚ
subCommandr   r3   s    r&   rs   zTwistOptions.postOptionsË   s+   € Ü×Ñ˜DÔ!à�?‰?Ð"ÜÐ3Ó4Ð4ð #r(   )r    N)r    ztyping.NoReturnrn   )%Ú__name__Ú
__module__Ú__qualname__r$   r0   r   Úinfor1   r/   rj   r6   r9   r=   r'   Újoinr   r   r   rM   Úiterconstantsr:   rY   r`   rd   r	   r
   rf   Úpropertyr   r   rh   r   r   r   r   rq   rs   r#   r(   r&   r   r   '   s‰  „ ñð #ÐØ—m‘m€Oó	ðF˜Só Fó-ð' ð '¨ó 'ñ ØØ—	‘	ÑJ¹Ó8IÔJÓJõð
	( 3ð 	(¨<ó 	(ð@ sð @¨tó @ñ ØØ—	‘	ñ 
Ø1G°×1GÑ1GÓ1Iô
ó 
ð  ×$Ñ$õð Sð ¨Tó ð(# Sð #¨Tó #ñ  �Ôó+ñG H¨X°c©]Ñ$;ð GÀtó Gð ðB˜  mÐ!3Ñ4ò Bó ðBð ðFà	�%˜˜T 8¨]¨O¸WÐ,DÑ#EÀsÐJÑKÑ	LòFó ðFô5r(   )*r$   ÚtypingÚsysr   r   Útextwrapr   r   r   r   r	   r
   r   r   Útwisted.copyrightr   Útwisted.internet.interfacesr   Útwisted.loggerr   r   r   r   Útwisted.pluginr   Útwisted.python.usager   r   Úreactorsr   r   r   Úrunner._exitr   r   Úservicer   ÚopenrU   rj   r'   r   r#   r(   r&   ú<module>rˆ      s~   ðñ
ó ß Ý ß O× OÑ Oå %Ý 4÷ó õ &ß 4ß EÑ Eß +Ý #à€ð=�X˜~¨sÐ3°TÐ9Ñ:ð =Àcð =Èdó =ôh5�7õ h5r(   