§
    øg÷  ã                  óì   — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m	Z	 d dl
mZ d dlmZmZ d dlZd dlmZ d dlmZ ej        ej        fZ ej        d	¦  «        Z G d
„ d¦  «        Zdd„ZdS )é    )ÚannotationsN)ÚPath)Úsocket)Ú	FrameType)ÚCallableÚIterator)Úget_subprocess)ÚConfigzuvicorn.errorc                  ó^   — e Zd Zdd	„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„Zdd„ZdS )Ú
BaseReloadÚconfigr
   Útargetú%Callable[[list[socket] | None], None]Úsocketsúlist[socket]ÚreturnÚNonec                ó¬   — || _         || _        || _        t          j        ¦   «         | _        t          j        ¦   «         | _        d| _	        d | _
        d S )NF)r   r   r   Ú	threadingÚEventÚshould_exitÚosÚgetpidÚpidÚis_restartingÚreloader_name)Úselfr   r   r   s       úP/var/www/html/env/lib/python3.11/site-packages/uvicorn/supervisors/basereload.pyÚ__init__zBaseReload.__init__   sL   € ð ˆŒØˆŒØˆŒÝ$œ?Ñ,Ô,ˆÔÝ”9‘;”;ˆŒØ"ˆÔØ)-ˆÔÐÐó    ÚsigÚintÚframeúFrameType | Nonec                óx   — t           j        dk    r| j        r	d| _        dS | j                             ¦   «          dS )zN
        A signal handler that is registered with the parent process.
        Úwin32FN)ÚsysÚplatformr   r   Úset)r   r!   r#   s      r   Úsignal_handlerzBaseReload.signal_handler)   sB   € õ Œ<˜7Ò"Ð" tÔ'9Ð"Ø!&ˆDÔÐÐàÔ× Ò Ñ"Ô"Ð"Ð"Ð"r    c                ó  — |                       ¦   «          | D ]_}|r[t                               d| j        d                     t          t          |¦  «        ¦  «        ¦  «         |                      ¦   «          Œ`|                      ¦   «          d S )Nz'%s detected changes in %s. Reloading...z, )	ÚstartupÚloggerÚwarningr   ÚjoinÚmapÚ_display_pathÚrestartÚshutdown)r   Úchangess     r   ÚrunzBaseReload.run2   s   € ØŠ‰ŒˆØð 	ð 	ˆGØð Ý—’Ø=ØÔ&Ø—I’Ic¥-°Ñ9Ô9Ñ:Ô:ñô ð ð
 —’‘”øàŠ‰Œˆˆˆr    c                ój   — | j                              | j        j        ¦  «        rt	          ¦   «         ‚d S ©N)r   Úwaitr   Úreload_delayÚStopIteration©r   s    r   ÚpausezBaseReload.pause?   s4   € ØÔ× Ò  ¤Ô!9Ñ:Ô:ð 	"Ý‘/”/Ð!ð	"ð 	"r    úIterator[list[Path] | None]c                ó   — | S r7   © r;   s    r   Ú__iter__zBaseReload.__iter__C   s   € Øˆr    úlist[Path] | Nonec                ó*   — |                       ¦   «         S r7   )Úshould_restartr;   s    r   Ú__next__zBaseReload.__next__F   s   € Ø×"Ò"Ñ$Ô$Ð$r    c                óô  — d| j         › d| j        › }d                     t          j        t          | j         ¦  «        dd¬¦  «        t          j        t          | j        ¦  «        dd¬¦  «        ¦  «        }t                               |d|i¬¦  «         t          D ]}t          j	        || j
        ¦  «         Œt          | j        | j        | j        ¬	¦  «        | _        | j                             ¦   «          d S )
NzStarted reloader process [z] using z&Started reloader process [{}] using {}ÚcyanT©ÚfgÚboldÚcolor_message©Úextra©r   r   r   )r   r   ÚformatÚclickÚstyleÚstrr-   ÚinfoÚHANDLED_SIGNALSÚsignalr*   r	   r   r   r   ÚprocessÚstart)r   ÚmessagerJ   r!   s       r   r,   zBaseReload.startupI   sè   € ØU¨t¬xÐUÐUÀÔASÐUÐUˆØ@×GÒGÝŒK˜DœH™œ¨&°tÐ<Ñ<Ô<ÝŒK˜DÔ.Ñ/Ô/°FÀÐFÑFÔFñ
ô 
ˆõ 	ŠG O°]Ð#CˆÑDÔDÐDå"ð 	4ð 	4ˆCÝŒM˜#˜tÔ2Ñ3Ô3Ð3Ð3å%¨T¬[ÀÄÐVZÔVbÐcÑcÔcˆŒØŒ×ÒÑÔÐÐÐr    c                ó†  — t           j        dk    r?d| _        | j        j        €J ‚t          j        | j        j        t          j        ¦  «         n| j         	                    ¦   «          | j         
                    ¦   «          t          | j        | j        | j        ¬¦  «        | _        | j                             ¦   «          d S )Nr&   TrM   )r'   r(   r   rU   r   r   ÚkillrT   ÚCTRL_C_EVENTÚ	terminater/   r	   r   r   r   rV   r;   s    r   r2   zBaseReload.restartW   s¥   € ÝŒ<˜7Ò"Ð"Ø!%ˆDÔØ”<Ô#Ð/Ð/Ð/ÝŒGD”LÔ$¥fÔ&9Ñ:Ô:Ð:Ð:àŒL×"Ò"Ñ$Ô$Ð$ØŒ×ÒÑÔÐå%¨T¬[ÀÄÐVZÔVbÐcÑcÔcˆŒØŒ×ÒÑÔÐÐÐr    c                óÞ  — t           j        dk    r| j                             ¦   «          n| j                             ¦   «          | j                             ¦   «          | j        D ]}|                     ¦   «          Œdt          | j
        ¦  «        › d}d                     t          j        t          | j
        ¦  «        dd¬¦  «        ¦  «        }t                               |d|i¬	¦  «         d S )
Nr&   zStopping reloader process [ú]zStopping reloader process [{}]rF   TrG   rJ   rK   )r'   r(   r   r)   rU   r[   r/   r   ÚcloserQ   r   rN   rO   rP   r-   rR   )r   ÚsockrW   rJ   s       r   r3   zBaseReload.shutdownc   sØ   € ÝŒ<˜7Ò"Ð"ØÔ× Ò Ñ"Ô"Ð"Ð"àŒL×"Ò"Ñ$Ô$Ð$ØŒ×ÒÑÔÐà”Lð 	ð 	ˆDØJŠJ‰LŒLˆLˆLà@µ°D´H±´Ð@Ð@Ð@ˆØ8×?Ò?ÅÄÍCÐPTÔPXÉMÌMÐ^dÐkoÐ@pÑ@pÔ@pÑqÔqˆÝŠG O°]Ð#CˆÑDÔDÐDÐDÐDr    c                ó    — t          d¦  «        ‚)Nz2Reload strategies should override should_restart())ÚNotImplementedErrorr;   s    r   rC   zBaseReload.should_restartq   s   € Ý!Ð"VÑWÔWÐWr    N)r   r
   r   r   r   r   r   r   )r!   r"   r#   r$   r   r   )r   r   )r   r=   )r   rA   )Ú__name__Ú
__module__Ú__qualname__r   r*   r5   r<   r@   rD   r,   r2   r3   rC   r?   r    r   r   r      sæ   € € € € € ð.ð .ð .ð .ð#ð #ð #ð #ðð ð ð ð"ð "ð "ð "ðð ð ð ð%ð %ð %ð %ðð ð ð ð
ð 
ð 
ð 
ðEð Eð Eð EðXð Xð Xð Xð Xð Xr    r   Úpathr   r   rQ   c                ó„   — 	 d|                       t          j        ¦   «         ¦  «        › dS # t          $ r	 d| › dcY S w xY w)Nú')Úrelative_tor   ÚcwdÚ
ValueError)re   s    r   r1   r1   u   s[   € ðØ24×#Ò#¥D¤H¡J¤JÑ/Ô/Ð2Ð2Ð2Ð2øÝð ð ð Ø4ˆ{ˆ{ˆ{ÐÐÐðøøøs   ‚), ¬?¾?)re   r   r   rQ   )Ú
__future__r   Úloggingr   rT   r'   r   Úpathlibr   r   Útypesr   Útypingr   r   rO   Úuvicorn._subprocessr	   Úuvicorn.configr
   ÚSIGINTÚSIGTERMrS   Ú	getLoggerr-   r   r1   r?   r    r   ú<module>ru      s@  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à .Ð .Ð .Ð .Ð .Ð .Ø !Ð !Ð !Ð !Ð !Ð !ð „MØ
„Nð€ð
 
ˆÔ	˜?Ñ	+Ô	+€ðXXð XXð XXð XXð XXñ XXô XXð XXðvð ð ð ð ð r    