§
    Ètºfä  ã                   óü   — d Z ddl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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mZmZmZ d
dlmZmZ d
dlm Z m!Z!m"Z"m#Z#  ed¬¦  «         G d„ d¦  «        ¦   «         Z$dS )z
Twisted application runner.
é    )Úkill)ÚSIGTERM)Ústderr)ÚAnyÚCallableÚMappingÚTextIO)ÚFactoryÚattribÚattrs)ÚNamedConstant)ÚIReactorCore)ÚFileLogObserverÚFilteringLogObserverÚLoggerÚLogLevelÚLogLevelFilterPredicateÚglobalLogBeginnerÚtextFileLogObserveré   )Ú
ExitStatusÚexit)ÚAlreadyRunningErrorÚInvalidPIDFileErrorÚIPIDFileÚnonePIDFileT)Úfrozenc                   óÔ  — e Zd ZdZ e¦   «         Z ee¬¦  «        Z ee	e
¬¦  «        Z eed¬¦  «        Z eeej        ¬¦  «        Z eee¬¦  «        Z eeegef         e¬¦  «        Z eed         d„ ¬¦  «        Z eeeef          ee¦  «        ¬¦  «        Z eed         d„ ¬¦  «        Z  eeeef          ee¦  «        ¬¦  «        Z!dd
„Z"dd„Z#dd„Z$dd„Z%dd„Z&dd„Z'd	S )ÚRunnera  
    Twisted application runner.

    @cvar _log: The logger attached to this class.

    @ivar _reactor: The reactor to start and run the application in.
    @ivar _pidFile: The file to store the running process ID in.
    @ivar _kill: Whether this runner should kill an existing running
        instance of the application.
    @ivar _defaultLogLevel: The default log level to start the logging
        system with.
    @ivar _logFile: A file stream to write logging output to.
    @ivar _fileLogObserverFactory: A factory for the file log observer to
        use when starting the logging system.
    @ivar _whenRunning: Hook to call after the reactor is running;
        this is where the application code that relies on the reactor gets
        called.
    @ivar _whenRunningArguments: Keyword arguments to pass to
        C{whenRunning} when it is called.
    @ivar _reactorExited: Hook to call after the reactor exits.
    @ivar _reactorExitedArguments: Keyword arguments to pass to
        C{reactorExited} when it is called.
    )Útype)r    ÚdefaultF).Nc                  ó   — d S ©N© ©Ú_s    úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/application/runner/_runner.pyú<lambda>zRunner.<lambda>C   s   € È€ ó    c                  ó   — d S r#   r$   r%   s    r'   r(   zRunner.<lambda>E   s   € È$€ r)   ÚreturnNc                 óB  — | j         }|                      ¦   «          	 |5  |                      ¦   «          |                      ¦   «          |                      ¦   «          ddd¦  «         dS # 1 swxY w Y   dS # t
          $ r t          t          j        d¦  «         Y dS w xY w)z#
        Run this command.
        NzAlready running.)	Ú_pidFileÚkillIfRequestedÚstartLoggingÚstartReactorÚreactorExitedr   r   r   Ú	EX_CONFIG)ÚselfÚpidFiles     r'   Úrunz
Runner.runH   sú   € ð ”-ˆà×ÒÑÔÐð		Øð %ð %Ø×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×"Ò"Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %øõ
 #ð 	ð 	ð 	Ý•Ô%Ð'9Ñ:Ô:Ð:àˆFˆFð	øøøs4   �A6 Ÿ=A)ÁA6 Á)A-Á-A6 Á0A-Á1A6 Á6$BÂBc                 óú  — | j         }| j        rì|t          u rt          t          j        d¦  «         dS 	 |                     ¦   «         }nQ# t          $ r t          t          j        d¦  «         Y dS t          $ r t          t          j
        d¦  «         Y dS w xY w|                      ¦   «          | j                             d|¬¦  «         t          |t          ¦  «         t          t          j        ¦  «         dS dS )zj
        If C{self._kill} is true, attempt to kill a running instance of the
        application.
        zNo PID file specified.NzUnable to read PID file.zInvalid PID file.zTerminating process: {pid})Úpid)r-   Ú_killr   r   r   ÚEX_USAGEÚreadÚOSErrorÚEX_IOERRr   Ú
EX_DATAERRr/   Ú_logÚinfor   r   ÚEX_OK)r3   r4   r7   s      r'   r.   zRunner.killIfRequested[   s  € ð
 ”-ˆàŒ:ð 	Ø�+Ð%Ð%Ý•ZÔ(Ð*BÑCÔCÐCà�ð	Ø—l’l‘n”n��øÝð ð ð Ý•ZÔ(Ð*DÑEÔEÐEà��Ý&ð ð ð Ý•ZÔ*Ð,?Ñ@Ô@Ð@à��ðøøøð
 ×ÒÑÔÐØŒI�NŠNÐ7¸SˆNÑAÔAÐAå�•gÑÔÐå•Ô!Ñ"Ô"Ð"àˆFð1	ð 	s   µA
 Á
$BÁ1#BÂBc                 ó®   — | j         }| j        } ||¦  «        }t          | j        ¬¦  «        }t	          ||g¦  «        }t          j        |g¦  «         dS )z=
        Start the L{twisted.logger} logging system.
        )ÚdefaultLogLevelN)Ú_logFileÚ_fileLogObserverFactoryr   Ú_defaultLogLevelr   r   ÚbeginLoggingTo)r3   ÚlogFileÚfileLogObserverFactoryÚfileLogObserverÚlogLevelPredicateÚfilteringObservers         r'   r/   zRunner.startLogging|   sp   € ð ”-ˆà!%Ô!=Ðà0Ð0°Ñ9Ô9ˆå3Ø Ô1ð
ñ 
ô 
Ðõ 1°ÐCTÐBUÑVÔVÐåÔ(Ð*;Ð)<Ñ=Ô=Ð=Ð=Ð=r)   c                 óª   — | j                              | j        ¦  «         | j                             d¦  «         | j                              ¦   «          dS )z’
        Register C{self._whenRunning} with the reactor so that it is called
        once the reactor is running, then start the reactor.
        zStarting reactor...N)Ú_reactorÚcallWhenRunningÚwhenRunningr>   r?   r5   ©r3   s    r'   r0   zRunner.startReactorŽ   sL   € ð
 	Œ×%Ò% dÔ&6Ñ7Ô7Ð7àŒ	�ŠÐ,Ñ-Ô-Ð-ØŒ×ÒÑÔÐÐÐr)   c                 ó*   —  | j         di | j        ¤Ž dS )z—
        Call C{self._whenRunning} with C{self._whenRunningArguments}.

        @note: This method is called after the reactor starts running.
        Nr$   )Ú_whenRunningÚ_whenRunningArgumentsrP   s    r'   rO   zRunner.whenRunning˜   s&   € ð 	ˆÔÐ7Ð7˜DÔ6Ð7Ð7Ð7Ð7Ð7r)   c                 ó*   —  | j         di | j        ¤Ž dS )z’
        Call C{self._reactorExited} with C{self._reactorExitedArguments}.

        @note: This method is called after the reactor exits.
        Nr$   )Ú_reactorExitedÚ_reactorExitedArgumentsrP   s    r'   r1   zRunner.reactorExited    s&   € ð 	ˆÔÐ;Ð;˜dÔ:Ð;Ð;Ð;Ð;Ð;r)   )r+   N)(Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r>   r   r   rM   r   r   r-   Úboolr8   r   r   r?   rE   r	   r   rC   r   r   r   rD   rR   r   Ústrr   r
   ÚdictrS   rU   rV   r5   r.   r/   r0   rO   r1   r$   r)   r'   r   r      sº  € € € € € ðð ð0 ˆ6‰8Œ8€Dàˆv˜<Ð(Ñ(Ô(€HØˆv˜8¨[Ð9Ñ9Ô9€HØˆF˜ eÐ,Ñ,Ô,€EØ�v =¸(¼-ÐHÑHÔHÐØˆv˜6¨6Ð2Ñ2Ô2€HØ$˜fØ�v�h Ð/Ô0Ð:Mðñ ô Ðð �6˜x¨	Ô2Ð<LÐ<LÐMÑMÔM€LØ"˜F¨°°S°Ô(9À7À7È4Á=Ä=ÐQÑQÔQÐØ�V ¨)Ô!4Ð>NÐ>NÐOÑOÔO€NØ$˜f¨'°#°s°(Ô*;ÀWÀWÈTÁ]Ä]ÐSÑSÔSÐðð ð ð ð&ð ð ð ðB>ð >ð >ð >ð$ð ð ð ð8ð 8ð 8ð 8ð<ð <ð <ð <ð <ð <r)   r   N)%rZ   Úosr   Úsignalr   Úsysr   Útypingr   r   r   r	   Úattrr
   r   r   Ú
constantlyr   Útwisted.internet.interfacesr   Útwisted.loggerr   r   r   r   r   r   r   Ú_exitr   r   Ú_pidfiler   r   r   r   r   r$   r)   r'   ú<module>rh      s›  ðð
ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $à 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uð €ˆdÐÑÔðF<ð F<ð F<ð F<ð F<ñ F<ô F<ñ ÔðF<ð F<ð F<r)   