Ë
    ojò  ã                   ó˜   — d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
mZ ddlmZmZ dd	lmZ dd
lmZmZmZ ddlmZ  G d„ d«      Zy)z
Run a Twisted application.
é    N)ÚSequence)Ú_exitWithSignal)ÚIReactorCoreÚ_ISupportsExitSignalCapturing)ÚOptionsÚ
UsageErroré   )Ú
ExitStatusÚexit)ÚRunner)ÚApplicationÚIServiceÚIServiceMakeré   )ÚTwistOptionsc                   ó¾   — e Zd ZdZedee   defd„«       Zede	de
defd„«       Zeded	edd
fd„«       Zededd
fd„«       Zeej$                  fdee   dd
fd„«       Zy
)ÚTwistz$
    Run a Twisted application.
    ÚargvÚreturnc                 ó²   — t        «       }	 |j                  | dd «       |S # t        $ r+}t        t        j
                  d|› d|› �«       Y d}~|S d}~ww xY w)z€
        Parse command line options.

        @param argv: Command line arguments.
        @return: The parsed options.
        r   NzError: z

)r   ÚparseOptionsr   r   r
   ÚEX_USAGE)r   ÚoptionsÚes      úB/usr/lib/python3/dist-packages/twisted/application/twist/_twist.pyr   zTwist.options   se   € ô “.ˆð	BØ× Ñ   a b Ô*ð ˆøô ò 	BÜ”×$Ñ$¨°¨s°$°w°iÐ&@×AÐAàˆûð	Bús   Œ" ¢	A« AÁAÚpluginr   c                 ó†   — | j                  |«      }t        | j                  «      }|j                  |«       t	        |«      S )a
  
        Create the application service.

        @param plugin: The name of the plugin that implements the service
            application to run.
        @param options: Options to pass to the application.
        @return: The created application service.
        )ÚmakeServicer   ÚtapnameÚsetServiceParentr   )r   r   ÚserviceÚapplications       r   r!   zTwist.service+   s;   € ð ×$Ñ$ WÓ-ˆÜ! &§.¡.Ó1ˆØ× Ñ  Ô-ä˜Ó$Ð$ó    Úreactorr!   Nc                 ó^   — |j                  «        | j                  dd|j                  «       y)z¦
        Start the application service.

        @param reactor: The reactor to run the service with.
        @param service: The application service to run.
        ÚbeforeÚshutdownN)ÚstartServiceÚaddSystemEventTriggerÚstopService)r$   r!   s     r   r(   zTwist.startService;   s*   € ð 	×ÑÔð 	×%Ñ% h°
¸G×<OÑ<OÕPr#   ÚtwistOptionsc                 óÔ   — t        | d   | d   | d   | d   ¬«      }|j                  «        | d   }t        j                  |«      r#|j                  �t        |j                  «       yyy)z�
        Run the application service.

        @param twistOptions: Command line options to convert to runner
            arguments.
        r$   ÚlogLevelÚlogFileÚfileLogObserverFactory)r$   ÚdefaultLogLevelr.   r/   N)r   Úrunr   Ú
providedByÚ_exitSignalr   )r+   Úrunnerr$   s      r   r1   z	Twist.runH   sv   € ô Ø  Ñ+Ø(¨Ñ4Ø  Ñ+Ø#/Ð0HÑ#Iô	
ˆð 	�
‰
ŒØ˜yÑ)ˆÜ(×3Ñ3°GÔ<Ø×"Ñ"Ð.Ü × 3Ñ 3Õ4ð /ð =r#   c                 óê   — | j                  |«      }|d   }|j                  }|€J ‚| j                  |j                  |   |j                  ¬«      }| j                  ||«       | j                  |«       y)zÄ
        Executable entry point for L{Twist}.
        Processes options and run a twisted reactor with a service.

        @param argv: Command line arguments.
        @type argv: L{list}
        r$   N)r   r   )r   Ú
subCommandr!   ÚpluginsÚ
subOptionsr(   r1   )Úclsr   r   r$   r6   r!   s         r   Úmainz
Twist.main\   s{   € ð —+‘+˜dÓ#ˆà˜)Ñ$ˆð ×'Ñ'ˆ
ØÐ%Ð%Ð%Ø—+‘+Ø—?‘? :Ñ.Ø×&Ñ&ð ó 
ˆð
 	×Ñ˜ 'Ô*Ø�‰�Õr#   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   Ústrr   r   r   r   r   r!   r   r(   r1   ÚclassmethodÚsysr   r:   © r#   r   r   r      sÓ   „ ñð ð�h˜s‘mð ¨ò ó ðð  ð%˜ð %°ð %¸Hò %ó ð%ð ð
Q˜lð 
Q°Xð 
QÀ$ò 
Qó ð
Qð ð5˜,ð 5¨4ò 5ó ð5ð& Ø(+¯©ñ ˜ ™ð °Tò ó ñr#   r   )r>   rB   Útypingr   Útwisted.application.appr   Útwisted.internet.interfacesr   r   Útwisted.python.usager   r   Úrunner._exitr
   r   Úrunner._runnerr   r!   r   r   r   Ú_optionsr   r   rC   r#   r   ú<module>rK      s6   ðñ
ó Ý å 3ß Sß 4ß +Ý #ß :Ñ :Ý "÷]ò ]r#   