§
    AxÅjß
  ã                   ó€  — d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ  eej                             d	d
¦  «        ¦  «        Ze                     de¦  «        Z eej                             dd¦  «        ¦  «        Ze                     de¦  «        Z e¦   «         Zde	fd„Z	 dde	fd„Zdd„Zd„ ZdS )z2
    This module is used to handle HTTP requests.
é    N)ÚClientError)ÚFibonacciRetryÚRetryClient)ÚClientSession)ÚRunPodLoggeré   )Ú	WORKER_IDÚRUNPOD_WEBHOOK_POST_OUTPUTÚJOB_DONE_URLz$RUNPOD_POD_IDÚRUNPOD_WEBHOOK_POST_STREAMÚJOB_STREAM_URLÚclient_sessionc              ƒ   ó  K  — t          d¬¦  «        }t          | |¬¦  «        }|dddœddœ} |j        |fi |¤Ž4 ƒd	{V —†}|                     ¦   «         ƒ d	{V —† d	d	d	¦  «        ƒd	{V —† d	S # 1 ƒd	{V —†swxY w Y   d	S )
z4
    Wrapper for transmitting results via POST.
    é   )Úattempts)r   Úretry_optionszutf-8z!application/x-www-form-urlencoded)ÚcharsetzContent-TypeT)ÚdataÚheadersÚraise_for_statusN)r   r   ÚpostÚtext)r   ÚurlÚjob_datar   Úretry_clientÚkwargsÚclient_responses          úRC:\Projects\Historical\venv\Lib\site-packages\runpod/serverless/modules/rp_http.pyÚ	_transmitr      sS  è è € õ #¨AÐ.Ñ.Ô.€MÝØ%°]ðñ ô €Lð
 àØ?ð
ð 
ð !ðð €Fð !ˆ|Ô  Ð/Ð/¨Ð/Ð/ð %ð %ð %ð %ð %ð %ð %°?Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ÁA/Á/
A9Á<A9FÚsessionc              ƒ   ó:  K  — 	 |d         | j         d<   t          j        |d¬¦  «        }|rdnd}|                     d|d         ¦  «        d|› �z   }t	          | ||¦  «        ƒ d	{V —† t
                               |› |d         ¦  «         nx# t          $ r.}t
                               d
|› �|d         ¦  «         Y d	}~nEd	}~wt          t          f$ r.}t
                               d|› �|d         ¦  «         Y d	}~nd	}~ww xY w|t          k    r=|                     dd	¦  «        dk    r%t
                               d|d         ¦  «         d	S d	S d	S # |t          k    r<|                     dd	¦  «        dk    r#t
                               d|d         ¦  «         w w w xY w)zR
    A helper function to handle the result, either for sending or streaming.
    ÚidzX-Request-IDF)Úensure_asciiÚtrueÚfalsez$IDz
&isStream=Nz Failed to return job results. | z$Error while returning job result. | ÚstatusÚIN_PROGRESSz	Finished.)r   ÚjsonÚdumpsÚreplacer   ÚlogÚdebugr   ÚerrorÚ	TypeErrorÚRuntimeErrorr   ÚgetÚinfo)	r    r   ÚjobÚurl_templateÚlog_messageÚ	is_streamÚserialized_job_datar   Úerrs	            r   Ú_handle_resultr8   3   sè  è è € ð-Ø*-¨d¬)ˆŒ˜Ñ'å"œj¨ÀÐFÑFÔFÐà'Ð4�F�F¨Wˆ	Ø×"Ò" 5¨#¨d¬)Ñ4Ô4Ð7OÀIÐ7OÐ7OÑOˆå˜ Ð&9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ý�	Š	�[Ð" C¨¤IÑ.Ô.Ð.Ð.øåð Gð Gð GÝ�	Š	Ð:°SÐ:Ð:¸CÀ¼IÑFÔFÐFÐFÐFÐFÐFÐFøøøøå•|Ð$ð Kð Kð KÝ�	Š	Ð>¸Ð>Ð>ÀÀDÄ	ÑJÔJÐJÐJÐJÐJÐJÐJøøøøðKøøøð �LÒ(Ð(Ø—’˜X tÑ,Ô,°Ò=Ð=å�HŠH�[ # d¤)Ñ,Ô,Ð,Ð,Ð,ð )Ð(Ø=Ð=øð �LÒ(Ð(Ø—’˜X tÑ,Ô,°Ò=Ð=å�HŠH�[ # d¤)Ñ,Ô,Ð,Ð,ð )Ø=øøøsC   „BB ÂE Â
DÂ$B?Â:E Â?DÃ$C<Ã7E Ã<DÄE ÅA
Fc              ƒ   óJ   K  — t          | ||t          d|¬¦  «        ƒ d{V —† dS )z!
    Return the job results.
    zResults sent.)r5   N)r8   r   )r    r   r2   r5   s       r   Úsend_resultr:   S   sT   è è € õ Ø�˜3¥¨oÈðñ ô ð ð ð ð ð ð ð ð ð ó    c              ƒ   óF   K  — t          | ||t          d¦  «        ƒ d{V —† dS )z(
    Return the stream job results.
    zIntermediate results sent.N)r8   r   )r    r   r2   s      r   Ústream_resultr=   \   sN   è è € õ Ø�˜3¥Ð0Lñô ð ð ð ð ð ð ð ð ð r;   )F)Ú__doc__r(   ÚosÚaiohttpr   Úaiohttp_retryr   r   Úrunpod.http_clientr   Ú#runpod.serverless.modules.rp_loggerr   Úworker_stater	   ÚstrÚenvironr0   ÚJOB_DONE_URL_TEMPLATEr*   r   ÚJOB_STREAM_URL_TEMPLATEr   r+   r   r8   r:   r=   © r;   r   ú<module>rJ      s|  ððð ð €€€Ø 	€	€	€	à Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø <Ð <Ð <Ð <Ð <Ð <à #Ð #Ð #Ð #Ð #Ð #à˜Ø„J‡N‚NÐ/°Ñ@Ô@ñô Ð ð %×,Ò,Ð-=¸yÑIÔI€à˜#Ø„J‡N‚NÐ/Ð1AÑBÔBñô Ð ð )×0Ò0Ð1AÀ9ÑMÔM€à€l�n„n€ð% Mð %ð %ð %ð %ð. QVð-ð -Øð-ð -ð -ð -ð@ð ð ð ðð ð ð ð r;   