§
     @gÝ/  ã                   ó†  — d dl Z d dlZd dlZd dl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mZmZmZmZmZmZ d dlZd dlmZ er$d dlmZ d dlmZ d dlmZ d d	lmZ eeeeef         Z ej!        ej"        fZ#ej        d
k    re#ej$        fz  Z# ej%        d¦  «        Z& G d„ d¦  «        Z' G d„ d¦  «        Z(dS )é    N)Ú
formatdate)Ú	FrameType)ÚTYPE_CHECKINGÚListÚOptionalÚSequenceÚSetÚTupleÚUnion)ÚConfig)ÚH11Protocol)ÚHttpToolsProtocol)ÚWebSocketProtocol)Ú
WSProtocolÚwin32zuvicorn.errorc                   ó   — e Zd ZdZdd„ZdS )ÚServerStatezP
    Shared servers state that is available between all protocol instances.
    ÚreturnNc                 ón   — d| _         t          ¦   «         | _        t          ¦   «         | _        g | _        d S )Nr   )Útotal_requestsÚsetÚconnectionsÚtasksÚdefault_headers)Úselfs    úB/var/www/piapp/venv/lib/python3.11/site-packages/uvicorn/server.pyÚ__init__zServerState.__init__*   s/   € ØˆÔÝ-0©U¬UˆÔÝ(+©¬ˆŒ
Ø:<ˆÔÐÐó    ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r   %   s2   € € € € € ðð ð=ð =ð =ð =ð =ð =r   r   c                   ó\  — e Zd Zdeddfd„Zddeeej                          ddfd„Zddeeej                          ddfd„Z	ddeeej                          ddfd„Z
d	eej                 ddfd
„Zdd„Zdedefd„Zddeeej                          ddfd„Zdd„Zdd„Zdedee         ddfd„ZdS )ÚServerÚconfigr   Nc                 ór   — || _         t          ¦   «         | _        d| _        d| _        d| _        d| _        d S )NFg        )r'   r   Úserver_stateÚstartedÚshould_exitÚ
force_exitÚlast_notified)r   r'   s     r   r   zServer.__init__2   s9   € ØˆŒÝ'™MœMˆÔàˆŒØ ˆÔØˆŒØ ˆÔÐÐr   Úsocketsc                 ó„   — | j                              ¦   «          t          j        |                      |¬¦  «        ¦  «        S )N©r.   )r'   Úsetup_event_loopÚasyncioÚrunÚserve)r   r.   s     r   r3   z
Server.run;   s4   € ØŒ×$Ò$Ñ&Ô&Ð&ÝŒ{˜4Ÿ:š:¨g˜:Ñ6Ô6Ñ7Ô7Ð7r   c              ƒ   óz  K  — t          j        ¦   «         }| j        }|j        s|                     ¦   «          |                     |¦  «        | _        |                      ¦   «          d}dt          j	        dd¬¦  «        z   dz   }t                               ||d|i¬¦  «         |                      |¬	¦  «        ƒ d {V —† | j        rd S |                      ¦   «         ƒ d {V —† |                      |¬	¦  «        ƒ d {V —† d
}dt          j	        dd¬¦  «        z   dz   }t                               ||d|i¬¦  «         d S )NzStarted server process [%d]zStarted server process [z%dÚcyan)Úfgú]Úcolor_message©Úextrar0   zFinished server process [%d]zFinished server process [)ÚosÚgetpidr'   ÚloadedÚloadÚlifespan_classÚlifespanÚinstall_signal_handlersÚclickÚstyleÚloggerÚinfoÚstartupr+   Ú	main_loopÚshutdown)r   r.   Ú
process_idr'   Úmessager9   s         r   r4   zServer.serve?   s\  è è € Ý”Y‘[”[ˆ
à”ˆØŒ}ð 	Ø�KŠK‰MŒMˆMà×-Ò-¨fÑ5Ô5ˆŒà×$Ò$Ñ&Ô&Ð&à/ˆØ2µU´[ÀÈ&Ð5QÑ5QÔ5QÑQÐTWÑWˆÝ�Š�G˜Z°ÀÐ/OˆÑPÔPÐPà�lŠl 7ˆlÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔð 	ØˆFØ�nŠnÑÔÐÐÐÐÐÐÐØ�mŠm GˆmÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,à0ˆØ3µe´kÀ$È6Ð6RÑ6RÔ6RÑRÐUXÑXˆÝ�Š�G˜Z°ÀÐ/OˆÑPÔPÐPÐPÐPr   c              ƒ   ó0  ‡ ‡K  — ‰ j                              ¦   «         ƒ d {V —† ‰ j         j        r	d‰ _        d S ‰ j        Š	 ddt          t
          j                 dt
          j        fˆˆ fd„}t          j        ¦   «         }|�ždt          j
        dt          j
        fd„}g ‰ _        |D ]t}t          j        ¦   «         dk    }‰j        dk    r|r ||¦  «        }|                     ||‰j        ‰j        ¬	¦  «        ƒ d {V —†}‰ j                             |¦  «         Œu|}�n×‰j        �rt          j        ‰j        t          j        t          j        ¦  «        }|                     ||‰j        ‰j        ¬	¦  «        ƒ d {V —†}|j        €J ‚|j        }|g‰ _        �n^‰j        �¥d
}	t2          j                             ‰j        ¦  «        rt3          j        ‰j        ¦  «        j        }	|                     |‰j        ‰j        ‰j        ¬¦  «        ƒ d {V —†}t3          j        ‰j        |	¦  «         |j        €J ‚|j        }|g‰ _        n²	 |                     |‰j         ‰j!        ‰j        ‰j        ¬¦  «        ƒ d {V —†}nd# tD          $ rW}
tF           $                    |
¦  «         ‰ j          %                    ¦   «         ƒ d {V —† tM          j'        d¦  «         Y d }
~
nd }
~
ww xY w|j        €J ‚|j        }|g‰ _        |€‰  (                    |¦  «         n	 d‰ _)        d S )NTÚ_loopr   c                 óT   •— ‰                      ‰‰j        ‰j        j        | ¬¦  «        S )N)r'   r)   Ú	app_staterM   )Úhttp_protocol_classr)   rA   Ústate)rM   r'   r   s    €€r   Úcreate_protocolz'Server.startup.<locals>.create_protocol`   s6   ø€ ð ×-Ò-ØØ!Ô.Øœ-Ô-Øð	 .ñ ô ð r   Úsockc                 óp   — ddl m} |                      t          j        ¦   «         ¦  «        } ||¦  «        S )Nr   )Ú	fromshare)ÚsocketrU   Úsharer<   r=   )rS   rU   Ú	sock_datas      r   Ú_share_socketz%Server.startup.<locals>._share_socketq   s=   € ð
 -Ð,Ð,Ð,Ð,Ð,à ŸJšJ¥r¤y¡{¤{Ñ3Ô3�	Ø �y Ñ+Ô+Ð+r   ÚWindowsé   )rS   ÚsslÚbacklogi¶  )Úpathr\   r]   )ÚhostÚportr\   r]   ©N)*rA   rG   r+   r'   r   r2   ÚAbstractEventLoopÚProtocolÚget_running_looprV   Ú
SocketTypeÚserversÚplatformÚsystemÚworkersÚcreate_serverr\   r]   ÚappendÚfdÚfromfdÚAF_UNIXÚSOCK_STREAMr.   Úudsr<   r^   ÚexistsÚstatÚst_modeÚcreate_unix_serverÚchmodr_   r`   ÚOSErrorrE   ÚerrorrI   ÚsysÚexitÚ_log_started_messager*   )r   r.   rR   ÚlooprY   rS   Ú
is_windowsÚserverÚ	listenersÚ	uds_permsÚexcr'   s   `          @r   rG   zServer.startupX   sÝ  øøè è € ØŒm×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ=Ô$ð 	Ø#ˆDÔØˆFà”ˆð :>ð	ð 	Ý�GÔ5Ô6ð	åÔð	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô'Ñ)Ô)ˆð Ðð,ÝÔ'ð,åÔ"ð,ð ,ð ,ð ,ð >@ˆDŒLØð ,ð ,�Ý%œ_Ñ.Ô.°)Ò;�
Ø”> AÒ%Ð%¨*Ð%Ø(˜=¨Ñ.Ô.�DØ#×1Ò1Ø#¨$°F´JÈÌð  2ñ  ô  ð ð ð ð ð ð �ð ”×#Ò# FÑ+Ô+Ð+Ð+ØˆI‰IàŒYÐ"å”= ¤­F¬N½FÔ<NÑOÔOˆDØ×-Ò-Ø d°´
ÀFÄNð .ñ ô ð ð ð ð ð ð ˆFð ”>Ð-Ð-Ð-ØœˆIØ"˜8ˆDŒL‰LàŒZÐ#àˆIÝŒw�~Š~˜fœjÑ)Ô)ð 8ÝœG F¤JÑ/Ô/Ô7�	Ø×2Ò2Ø f¤j°f´jÈ&Ì.ð 3ñ ô ð ð ð ð ð ð ˆFõ ŒH�V”Z Ñ+Ô+Ð+Ø”>Ð-Ð-Ð-ØœˆIØ"˜8ˆDŒLˆLðØ#×1Ò1Ø#ØœØœØœ
Ø"œNð  2ñ  ô  ð ð ð ð ð ð ��øõ ð ð ð Ý—’˜SÑ!Ô!Ð!Ø”m×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ý”˜‘”������øøøøðøøøð
 ”>Ð-Ð-Ð-ØœˆIØ"˜8ˆDŒLàˆ?Ø×%Ò% iÑ0Ô0Ð0Ð0ð àˆŒˆˆs   É4I: É:
KÊAKËKr~   c                 ó  — | j         }|j        �7|d         }t                               d|                     ¦   «         ¦  «         d S |j        �"t                               d|j        ¦  «         d S d}|j        €dn|j        }d|v rd}|j        }|dk    r |d                              ¦   «         d         }|j        rd	nd
}d|› d�}dt          j
        |d¬¦  «        z   dz   }	t                               ||||d|	i¬¦  «         d S )Nr   z3Uvicorn running on socket %s (Press CTRL+C to quit)z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z
%s://%s:%dz0.0.0.0ú:z%s://[%s]:%dr[   ÚhttpsÚhttpzUvicorn running on z (Press CTRL+C to quit)T)Úboldr9   r:   )r'   rl   rE   rF   Úgetsocknamerp   r_   r`   r\   rC   rD   )
r   r~   r'   rS   Úaddr_formatr_   r`   Úprotocol_namerK   r9   s
             r   rz   zServer._log_started_message¹   sP  € Ø”ˆàŒ9Ð Ø˜Q”<ˆDÝ�KŠKØEØ× Ò Ñ"Ô"ñô ð ð ð ð
 ŒZÐ#Ý�KŠKØJÈFÌJñô ð ð ð ð
 'ˆKØ &¤Ð 3�9�9¸¼ˆDØ�dˆ{ˆ{à,�à”;ˆDØ�qŠyˆyØ  ”|×/Ò/Ñ1Ô1°!Ô4�à'-¤zÐ=˜G˜G°vˆMØP¨KÐPÐPÐPˆGà%Ý”+˜k°Ð5Ñ5Ô5ñ6à+ñ,ð õ
 �KŠKØØØØØ&¨Ð6ð ñ ô ð ð ð r   c              ƒ   óÎ   K  — d}|                       |¦  «        ƒ d {V —†}|sC|dz  }|dz  }t          j        d¦  «        ƒ d {V —† |                       |¦  «        ƒ d {V —†}|¯Ad S d S )Nr   r[   i / çš™™™™™¹?)Úon_tickr2   Úsleep)r   Úcounterr+   s      r   rH   zServer.main_loopâ   s¬   è è € ØˆØ ŸLšL¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1ˆØð 	6Ø�q‰LˆGØ Ñ&ˆGÝ”- Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø $§¢¨WÑ 5Ô 5Ð5Ð5Ð5Ð5Ð5Ð5ˆKð	 ð 	6ð 	6ð 	6ð 	6ð 	6r   r�   c              ƒ   óÔ  K  — |dz  dk    r­t          j         ¦   «         }t          |d¬¦  «                             ¦   «         }| j        j        rd|fg}ng }|| j        j        z   | j        _        | j        j        �>|| j	        z
  | j        j
        k    r&|| _	        | j                             ¦   «         ƒ d {V —† | j        rdS | j        j        �| j        j        | j        j        k    S dS )Né
   r   T)Úusegmts   dateF)Útimer   Úencoder'   Údate_headerÚencoded_headersr)   r   Úcallback_notifyr-   Útimeout_notifyr+   Úlimit_max_requestsr   )r   r�   Úcurrent_timeÚcurrent_dater“   s        r   r‹   zServer.on_tickë   s  è è € à�R‰<˜1ÒÐÝœ9™;œ;ˆLÝ% l¸4Ð@Ñ@Ô@×GÒGÑIÔIˆLàŒ{Ô&ð !Ø '¨Ð6Ð7��à �ð ˜dœkÔ9Ñ9ð ÔÔ-ð
 Œ{Ô*Ð6Ø $Ô"4Ñ4°t´{Ô7QÒQÐQØ)5�DÔ&Øœ+×5Ò5Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð Ôð 	Ø�4ØŒ;Ô)Ð5ØÔ$Ô3°t´{Ô7UÒUÐUØˆur   c              ƒ   ór  K  — t                                d¦  «         | j        D ]}|                     ¦   «          Œ|pg D ]}|                     ¦   «          Œ| j        D ]}|                     ¦   «         ƒ d {V —† Œt          | j        j        ¦  «        D ]}|                     ¦   «          Œt          j
        d¦  «        ƒ d {V —† 	 t          j        |                      ¦   «         | j        j        ¬¦  «        ƒ d {V —† n‘# t          j        $ r t                                dt#          | j        j        ¦  «        ¦  «         | j        j        D ]=}t&          j        dk     r|                     ¦   «          Œ'|                     d¬¦  «         Œ>Y nw xY w| j        s!| j                             ¦   «         ƒ d {V —† d S d S )NzShutting downrŠ   )Útimeoutz=Cancel %s running task(s), timeout graceful shutdown exceeded)é   é	   z2Task cancelled, timeout graceful shutdown exceeded)Úmsg)rE   rF   rf   ÚcloseÚwait_closedÚlistr)   r   rI   r2   rŒ   Úwait_forÚ_wait_tasks_to_completer'   Útimeout_graceful_shutdownÚTimeoutErrorrw   Úlenr   rx   Úversion_infoÚcancelr,   rA   )r   r.   r}   rS   Ú
connectionÚts         r   rI   zServer.shutdown  s.  è è € Ý�Š�OÑ$Ô$Ð$ð ”lð 	ð 	ˆFØ�LŠL‰NŒNˆNˆNØ�M˜rð 	ð 	ˆDØ�JŠJ‰LŒLˆLˆLØ”lð 	'ð 	'ˆFØ×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&õ ˜tÔ0Ô<Ñ=Ô=ð 	"ð 	"ˆJØ×ÒÑ!Ô!Ð!Ð!ÝŒm˜CÑ Ô Ð Ð Ð Ð Ð Ð Ð ð	WÝÔ"Ø×,Ò,Ñ.Ô.ØœÔ=ðñ ô ð ð ð ð ð ð ð ð øõ Ô#ð 		Wð 		Wð 		WÝ�LŠLØOÝ�DÔ%Ô+Ñ,Ô,ñô ð ð Ô&Ô,ð Wð W�ÝÔ# fÒ,Ð,Ø—H’H‘J”J�J�Jà—H’HÐ!U�HÑVÔVÐVÐVð	Wð Wð		Wøøøð Œð 	+Ø”-×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð	+ð 	+s   Ã8C> Ã>BFÆFc              ƒ   óÚ  K  — | j         j        rc| j        s\d}t                               |¦  «         | j         j        r4| j        s-t          j        d¦  «        ƒ d {V —† | j         j        r| j        ¯-| j         j        re| j        s`d}t                               |¦  «         | j         j        r:| j        s5t          j        d¦  «        ƒ d {V —† | j         j        r| j        ¯-d S d S d S d S d S d S )Nz8Waiting for connections to close. (CTRL+C to force quit)rŠ   z@Waiting for background tasks to complete. (CTRL+C to force quit))r)   r   r,   rE   rF   r2   rŒ   r   )r   rž   s     r   r£   zServer._wait_tasks_to_complete,  sD  è è € àÔÔ(ð 	)°´ð 	)ØLˆCÝ�KŠK˜ÑÔÐØÔ#Ô/ð )¸¼ð )Ý”m CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð Ô#Ô/ð )¸¼ð )ð ÔÔ"ð 	)¨4¬?ð 	)ØTˆCÝ�KŠK˜ÑÔÐØÔ#Ô)ð )°$´/ð )Ý”m CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð Ô#Ô)ð )°$´/ð )ð )ð )ð	)ð 	)ð 	)ð 	)ð)ð )ð )ð )ð )ð )r   c                 ó6  — t          j        ¦   «         t          j        ¦   «         urd S t          j        ¦   «         }	 t
          D ]}|                     || j        |d ¦  «         Œ d S # t          $ r( t
          D ]}t          j	        || j        ¦  «         ŒY d S w xY wra   )
Ú	threadingÚcurrent_threadÚmain_threadr2   Úget_event_loopÚHANDLED_SIGNALSÚadd_signal_handlerÚhandle_exitÚNotImplementedErrorÚsignal)r   r{   Úsigs      r   rB   zServer.install_signal_handlers;  sÅ   € ÝÔ#Ñ%Ô%­YÔ-BÑ-DÔ-DÐDÐDàˆFåÔ%Ñ'Ô'ˆð	5Ý&ð Jð J�Ø×'Ò'¨¨TÔ-=¸sÀDÑIÔIÐIÐIðJð Jøå"ð 	5ð 	5ð 	5å&ð 5ð 5�Ý”˜c 4Ô#3Ñ4Ô4Ð4Ð4ð5ð 5ð 5ð	5øøøs   ½'A& Á&.BÂBr¶   Úframec                 óT   — | j         r|t          j        k    r	d| _        d S d| _         d S )NT)r+   rµ   ÚSIGINTr,   )r   r¶   r·   s      r   r³   zServer.handle_exitJ  s2   € ØÔð 	$ ¥v¤}Ò 4Ð 4Ø"ˆDŒOˆOˆOà#ˆDÔÐÐr   ra   r   )r    r!   r"   r   r   r   r   rV   r3   r4   rG   r   re   rz   rH   ÚintÚboolr‹   rI   r£   rB   r   r³   r$   r   r   r&   r&   1   sÉ  € € € € € ð!˜vð !¨$ð !ð !ð !ð !ð8ð 8˜8 D¨¬Ô$7Ô8ð 8ÀDð 8ð 8ð 8ð 8ðQð Q 8¨D°´Ô,?Ô#@ð QÈDð Qð Qð Qð Qð2_ð _ X¨d°6´=Ô.AÔ%Bð _Èdð _ð _ð _ð _ðB'¨h°vÔ7HÔ.Ið 'Èdð 'ð 'ð 'ð 'ðR6ð 6ð 6ð 6ð Sð ¨Tð ð ð ð ð8#+ð #+ h¨t°F´MÔ/BÔ&Cð #+Ètð #+ð #+ð #+ð #+ðJ)ð )ð )ð )ð5ð 5ð 5ð 5ð$˜sð $¨8°IÔ+>ð $À4ð $ð $ð $ð $ð $ð $r   r&   ))r2   Úloggingr<   rg   rµ   rV   rx   r­   r‘   Úemail.utilsr   Útypesr   Útypingr   r   r   r   r	   r
   r   rC   Úuvicorn.configr   Úuvicorn.protocols.http.h11_implr   Ú%uvicorn.protocols.http.httptools_implr   Ú,uvicorn.protocols.websockets.websockets_implr   Ú)uvicorn.protocols.websockets.wsproto_implr   Ú	Protocolsr¹   ÚSIGTERMr±   ÚSIGBREAKÚ	getLoggerrE   r   r&   r$   r   r   ú<module>rÉ      sÛ  ðØ €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà €€€à !Ð !Ð !Ð !Ð !Ð !àð UØ;Ð;Ð;Ð;Ð;Ð;ØGÐGÐGÐGÐGÐGØNÐNÐNÐNÐNÐNØDÐDÐDÐDÐDÐDà�kÐ#4°jÐBSÐSÔT€Ið „MØ
„Nð€ð „<�7ÒÐØ˜œÐ)Ñ)€Oà	ˆÔ	˜?Ñ	+Ô	+€ð	=ð 	=ð 	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð]$ð ]$ð ]$ð ]$ð ]$ñ ]$ô ]$ð ]$ð ]$ð ]$r   