
    Yf                        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)dS )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                 R     t          | j        pd          j        di || _        dS )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     T/var/www/html/env/lib/python3.11/site-packages/twisted/application/twist/_options.py_update_docr'      s1    
 3&*++2<<V<<CKKK    c            	       8   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                    d  e            D                                  d	e	defdZde	ddfdZ eed                    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$dS ) r   z,
    Command line options for C{twist}.
    defaultr    Nc                 x    t          j        |            | j        | d<   | j        | d<   t          | d<   d| _        d S )NreactorNamelogLevellogFiler"   )r   __init__defaultReactorNamedefaultLogLevelr   longdescselfs    r&   r/   zTwistOptions.__init__/   sC    "5]/Z Y r(   c                 0    t          j        |            dS )Nz plugin [plugin_options])r   getSynopsisr3   s    r&   r6   zTwistOptions.getSynopsis:   s    %d++EEEEr(   typing.NoReturnc                 F    t          t          j        t                      dS )z)
        Print version and exit.
        N)r   r   EX_OKr   r3   s    r&   opt_versionzTwistOptions.opt_version=   s     	Z'|,,,,,r(   namec                     	 |                      |          | d<   || d<   dS # 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   sd    	'"11$77DO #'D  	9 	9 	9777888	9s   ! >z, c              #   ,   K   | ]}d |j          d V  dS "N)	shortName).0rts     r&   	<genexpr>zTwistOptions.<genexpr>T   s0      JJ"-bl---JJJJJJr(   optionsc                 l    || 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   sB     4***000000g...!$'''r(   	levelNamec                 v    	 t          j        |          | d<   dS # 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   sY    
	@'5i@@D# 	@ 	@ 	@>9>>???	@s    8c              #   ,   K   | ]}d |j          d V  dS r@   )r;   )rC   constants     r&   rE   zTwistOptions.<genexpr>n   sA       
 
%-    
 
 
 
 
 
r(   )rG   r*   fileNamec                     |dk    rt           | d<   dS |dk    rt          | d<   dS 	 t          |d          | d<   dS # t          $ r+}t	          t
          j        d|d|            Y d}~dS 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   s     s??$DOFs??$DOF	&x55DOOO 	 	 	#<8<<<<        	s   ; 
A0 A++A0r%   c                     |                                 }|dk    rt          | d<   n#|dk    rt          | d<   nt          d|           || d<   dS )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   sj     V-@D)**v-@D)**<F<<==="[r(   c                     d| vrN| d         }t          |d          r%|                                rt          | d<   d| d<   dS t          | d<   d| d<   dS dS )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   sy    
 $4//9oGw)) +gnn.>.> +1D-.$*[!!!1D-.$*[!!! 0/r(   rG   c                     |                                   t          j        | |           d| vr |                     | d                   | d<   d S d S )NrF   r=   r,   )rd   r   parseOptionsr   )r4   rG   s     r&   rf   zTwistOptions.parseOptions   s]    %%'''T73333D  "11$}2EFFDOOO ! 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   s_    D  G$]33 1 1*0''%DOGC./iAAAr(   c              #      K   | j         }t          |          D ]0}||         }|fdt          dt          fd}|j        d ||j        fV  1d S )Nrk   r    c                 P    t          t          |                                           S N)r   r   rG   )rk   s    r&   rG   z)TwistOptions.subCommands.<locals>.options   s    GV^^%5%5666r(   )rh   sortedr   r   ri   description)r4   rh   r;   rk   rG   s        r&   subCommandszTwistOptions.subCommands   s       ,7OO 		F 		FDT]F
 17 7 7 77 7 7 7 7 >4&2DEEEEE		F 		Fr(   c                 Z    t          j        |            | j        t          d          d S )NzNo plugin specified.)r   postOptions
subCommandr   r3   s    r&   rs   zTwistOptions.postOptions   s2    D!!!?"3444 #"r(   )r    N)r    r7   rn   )%__name__
__module____qualname__r$   r0   r   infor1   r/   rj   r6   r:   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         #mO	 	 	 	FS F F F F- - - -' ' ' ' ' ' K		JJ8I8IJJJJJ   
	(3 	(< 	( 	( 	( 	(@s @t @ @ @ @ K		 
 
1G1G1I1I
 
 
 
 
  $   S T    (#S #T # # # #  K+ + + +G GHXc]$; Gt G G G G Bm!34 B B B XB F	%T8]OW,D#EsJK	LF F F XF5 5 5 5 5 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 O O O O O O O O O O O O O O O % % % % % % 4 4 4 4 4 4            & % % % % % 4 4 4 4 4 4 4 4 E E E E E E E E E E + + + + + + + + # # # # # #=X~s3T9: =c =d = = = =h5 h5 h5 h5 h57 h5 h5 h5 h5 h5r(   