Ë
    S>{ik   ã                   ó¢  — d dl Z d dlZd dlZd dlZd dlmZm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mZmZmZmZmZm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 d dlmZ d dlmZm Z  	 d dl!m"Z"  ejJ                  «       dejL                  dd z  ejN                  dœZ( G d„ de
«      Z)d„ Z*dd„Z+d„ Z,d„ Z-y# e#$ r	 d dl$m"Z" Y ŒUw xY w)é    N)ÚOPÚSPANDATA)ÚHub)ÚIntegration)Úadd_global_event_processor)ÚEnvironHeadersÚshould_propagate_trace)ÚSENSITIVE_DATA_SUBSTITUTEÚcapture_internal_exceptionsÚis_sentry_urlÚloggerÚ	safe_reprÚ	parse_url)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚDict)ÚOptional)ÚList)ÚEventÚHint)ÚHTTPConnectionz%s.%s.%sé   )ÚnameÚversionÚbuildc                   ó    — e Zd ZdZed„ «       Zy)ÚStdlibIntegrationÚstdlibc                  óD   — t        «        t        «        t        d„ «       } y )Nc                 óª   — t         j                  j                  t        «      �/| j	                  di «      }t        |t        «      rd|vr	t        |d<   | S )NÚcontextsÚruntime)r   ÚcurrentÚget_integrationr   Ú
setdefaultÚ
isinstanceÚdictÚ_RUNTIME_CONTEXT)ÚeventÚhintr"   s      ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/stdlib.pyÚadd_python_runtime_contextz@StdlibIntegration.setup_once.<locals>.add_python_runtime_context6   sL   € ô �{‰{×*Ñ*Ô+<Ó=ÐIØ ×+Ñ+¨J¸Ó;�Ü˜h¬Ô-°)À8Ñ2KÜ*:�H˜YÑ'àˆLó    )Ú_install_httplibÚ_install_subprocessr   )r-   s    r,   Ú
setup_oncezStdlibIntegration.setup_once0   s"   € ô 	ÔÜÔä	#ñ	ó 
$ñ	r.   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚstaticmethodr1   © r.   r,   r   r   -   s   „ Ø€Jàñó ñr.   r   c                  óˆ   ‡‡— t         j                  Št         j                  Šˆfd„} ˆfd„}| t         _        |t         _        y )Nc                 ó  •— t         j                  }| j                  }| j                  }| j                  }|j                  t        «      �t        ||«      r ‰| ||g|¢­i |¤ŽS |}	|	�|	j                  d«      s$|dk(  xr dxs d›d|›||k7  xr d|z  xs d›|›�}	d }
t        «       5  t        |	d¬	«      }
d d d «       |j                  t        j                  |›d
|
r|
j                  nt        ›�¬«      }|j!                  t"        j$                  |«       |
�p|j!                  d|
j                  «       |j!                  t"        j&                  |
j(                  «       |j!                  t"        j*                  |
j,                  «        ‰| ||g|¢­i |¤Ž}t/        ||	«      rR|j1                  |«      D ]>  \  }}t3        j4                  dj7                  |||	¬«      «       | j9                  ||«       Œ@ || _        |S # 1 sw Y   �ŒIxY w)N)zhttp://zhttps://i»  ÚhttpsÚhttpz://z:%sÚ F)Úsanitizeú ©ÚopÚdescriptionÚurlzJ[Tracing] Adding `{key}` header {value} to outgoing request to {real_url}.)ÚkeyÚvalueÚreal_url)r   r$   ÚhostÚportÚdefault_portr%   r   r   Ú
startswithr   r   Ú
start_spanr   ÚHTTP_CLIENTrB   r
   Úset_datar   ÚHTTP_METHODÚ
HTTP_QUERYÚqueryÚHTTP_FRAGMENTÚfragmentr	   Úiter_trace_propagation_headersr   ÚdebugÚformatÚ	putheaderÚ_sentrysdk_span)ÚselfÚmethodrB   ÚargsÚkwargsÚhubrF   rG   rH   rE   Ú
parsed_urlÚspanÚrvrC   rD   Úreal_putrequests                  €r,   Ú
putrequestz$_install_httplib.<locals>.putrequestF   sû  ø€ ä�k‰kˆà�y‰yˆØ�y‰yˆØ×(Ñ(ˆà×ÑÔ0Ó1Ð9¼]È3ÐPTÔ=UÙ" 4¨°ÐF°tÒF¸vÑFÐFàˆØÐ 8×#6Ñ#6Ð7NÔ#Oà Ñ#Ò/¨Ò9°6Ñ9ÙØ˜Ñ$Ò5¨°©Ò;¸Ð;Ùð	ˆHð ˆ
Ü(Ó*ñ 	=Ü" 8°eÔ<ˆJ÷	=ð �~‰~Ü�~‰~â©�z—~’~Ô9RÐRðTð ó 
ˆð 	�‰”h×*Ñ*¨FÔ3ØÐ!Ø�M‰M˜% §¡Ô0Ø�M‰Mœ(×-Ñ-¨z×/?Ñ/?Ô@Ø�M‰Mœ(×0Ñ0°*×2EÑ2EÔFá˜T 6¨3Ð@°Ò@¸Ñ@ˆä! # xÔ0Ø!×@Ñ@ÀÓFò +‘
��UÜ—‘Ø`×gÑgØ u°xð hó ôð
 —‘˜s EÕ*ð+ð  $ˆÔàˆ	÷9	=ñ 	=ús   Â*G?Ç?H	c                 óö   •— t        | dd «      }|€ ‰| g|¢­i |¤ŽS  ‰| g|¢­i |¤Ž}|j                  t        |j                  «      «       |j	                  d|j
                  «       |j                  «        |S )NrV   Úreason)ÚgetattrÚset_http_statusÚintÚstatusrL   rb   Úfinish)rW   rY   rZ   r]   r^   Úreal_getresponses        €r,   Úgetresponsez%_install_httplib.<locals>.getresponsey   sv   ø€ ä�tÐ.°Ó5ˆàˆ<Ù# DÐ:¨4Ò:°6Ñ:Ð:á˜dÐ4 TÒ4¨VÑ4ˆà×ÑœS §¡›^Ô,Ø�‰�h §	¡	Ô*Ø�‰Œàˆ	r.   )r   r`   ri   )r`   ri   rh   r_   s     @@r,   r/   r/   A   s7   ù€ ä$×/Ñ/€OÜ%×1Ñ1Ðô1ôfð !+„NÔØ!,„NÕr.   c                 ó°   — ||v r||   }|� ||«      }|�|||<   |S |t        | «      k  r| |   }|� ||«      }|�|| |<   |S |xr  |d«      }|�|||<   |S )a?  
    given (*args, **kwargs) of a function call, retrieve (and optionally set a
    default for) an argument by either name or position.

    This is useful for wrapping functions with complex type signatures and
    extracting a few arguments without needing to redefine that function's
    entire type signature.
    N)Úlen)rY   rZ   r   ÚpositionÚsetdefault_callbackr^   s         r,   Ú_init_argumentrn   Œ   sš   € ð ˆv�~Ø�D‰\ˆØÐ*Ù$ RÓ(ˆBØˆ>ØˆF�4‰Lð €Ið 
”C˜“IÒ	Ø�(‰^ˆØÐ*Ù$ RÓ(ˆBØˆ>ØˆD�‰Nð €Ið	 !Ò>Ñ%8¸Ó%>ˆØˆ>ØˆF�4‰Là€Ir.   c                  óB  ‡‡‡— t         j                  j                  Šˆfd„} | t         j                  _        t         j                  j                  Šˆfd„}|t         j                  _        t         j                  j                  Šˆfd„}|t         j                  _        y )Nc           	      ó.  •— t         j                  }|j                  t        «      € ‰| g|¢­i |¤ŽS t	        |«      }t        ||dd«      xs g }t        ||dd«      }d }t        |t        t        f«      r@t        |«      dk  r2t        «       5  dj                  t        t        |«      «      }d d d «       |€t        |«      }d }|j                  t        j                   |¬«      5 }|j#                  |«      D ]=  \  }	}
|€t        ||dd	d
„ «      }|
|d|	j%                  «       j'                  dd«      z   <   Œ? |r|j)                  d|«        ‰| g|¢­i |¤Ž}|j+                  d| j,                  «       |cd d d «       S # 1 sw Y   ŒÒxY w# 1 sw Y   y xY w)NrY   r   Úcwdé	   éd   r>   r?   Úenvé
   c                 ó<   — t        | xs t        j                  «      S ©N)r(   ÚosÚenviron)Úxs    r,   ú<lambda>zH_install_subprocess.<locals>.sentry_patched_popen_init.<locals>.<lambda>Ò   s   € ´D¸º¼b¿j¹jÓ4I€ r.   ÚSUBPROCESS_ú-Ú_zsubprocess.cwdúsubprocess.pid)r   r$   r%   r   Úlistrn   r'   Útuplerk   r   ÚjoinÚmapÚstrr   rJ   r   Ú
SUBPROCESSrR   ÚupperÚreplacerL   Úset_tagÚpid)rW   ÚaÚkwr[   rY   rq   rA   rt   r]   ÚkÚvr^   Úold_popen_inits               €r,   Úsentry_patched_popen_initz6_install_subprocess.<locals>.sentry_patched_popen_init¯   s˜  ø€ ô �k‰kˆØ×ÑÔ0Ó1Ð9Ù! $Ð1¨Ò1¨bÑ1Ð1ô �‹Gˆä˜a  V¨QÓ/Ò5°2ˆÜ˜Q  E¨1Ó-ˆð ˆä�dœT¤5˜MÔ*¬s°4«y¸3ªÜ,Ó.ñ 7Ø!Ÿh™h¤s¬3°£~Ó6�÷7ð ÐÜ# D›/ˆKàˆà�^‰^œrŸ}™}¸+ˆ^ÓFð 	È$Ø×:Ñ:¸4Ó@ò E‘��1Ø�;Ü(Ø˜2˜u bÑ*Ió�Cð DE��M A§G¡G£I×$5Ñ$5°c¸3Ó$?Ñ?Ò@ðEñ Ø—‘Ð.°Ô4á Ð/ qÒ/¨BÑ/ˆBà�L‰LÐ)¨4¯8©8Ô4Ø÷	ñ 	÷7ð 7ú÷	ð 	ús   Â E?Ã&BFÅ?FÆFc                 ó"  •— t         j                  }|j                  t        «      € ‰| g|¢­i |¤ŽS |j	                  t
        j                  ¬«      5 }|j                  d| j                  «        ‰| g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY w©N)r@   r   )	r   r$   r%   r   rJ   r   ÚSUBPROCESS_WAITrˆ   r‰   )rW   rŠ   r‹   r[   r]   Úold_popen_waits        €r,   Úsentry_patched_popen_waitz6_install_subprocess.<locals>.sentry_patched_popen_waitâ   sƒ   ø€ ä�k‰kˆà×ÑÔ0Ó1Ð9Ù! $Ð1¨Ò1¨bÑ1Ð1à�^‰^œr×1Ñ1ˆ^Ó2ð 	2°dØ�L‰LÐ)¨4¯8©8Ô4Ù! $Ð1¨Ò1¨bÑ1÷	2÷ 	2ò 	2úó   Á(BÂBc                 ó"  •— t         j                  }|j                  t        «      € ‰| g|¢­i |¤ŽS |j	                  t
        j                  ¬«      5 }|j                  d| j                  «        ‰| g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY wr‘   )	r   r$   r%   r   rJ   r   ÚSUBPROCESS_COMMUNICATErˆ   r‰   )rW   rŠ   r‹   r[   r]   Úold_popen_communicates        €r,   Ú sentry_patched_popen_communicatez=_install_subprocess.<locals>.sentry_patched_popen_communicateñ   sƒ   ø€ ä�k‰kˆà×ÑÔ0Ó1Ð9Ù(¨Ð8°Ò8°RÑ8Ð8à�^‰^œr×8Ñ8ˆ^Ó9ð 	9¸TØ�L‰LÐ)¨4¯8©8Ô4Ù(¨Ð8°Ò8°RÑ8÷	9÷ 	9ò 	9úr•   )Ú
subprocessÚPopenÚ__init__ÚwaitÚcommunicate)r�   r”   r™   r˜   rŽ   r“   s      @@@r,   r0   r0   «   sx   ú€ ä×%Ñ%×.Ñ.€Nô-ð^ !:„J×ÑÔä×%Ñ%×*Ñ*€Nô	2ð 6„J×ÑÔä&×,Ñ,×8Ñ8Ðô	9ð $D„J×ÑÕ r.   c                  ó8   — t        t        j                  d¬«      S )Nr|   )Úprefix)r   rx   ry   r7   r.   r,   Ú"get_subprocess_traceparent_headersr¡   ÿ   s   € äœ"Ÿ*™*¨]Ô;Ð;r.   rw   ).rx   rš   ÚsysÚplatformÚsentry_sdk.constsr   r   Úsentry_sdk.hubr   Úsentry_sdk.integrationsr   Úsentry_sdk.scoper   Úsentry_sdk.tracing_utilsr   r	   Úsentry_sdk.utilsr
   r   r   r   r   r   Úsentry_sdk._typesr   Útypingr   r   r   r   r   r   r   Úhttplibr   ÚImportErrorÚhttp.clientÚpython_implementationÚversion_infor   r)   r   r/   rn   r0   r¡   r7   r.   r,   ú<module>r±      sº   ðÛ 	Û Û 
Û ß *å Ý /Ý 7ß K÷÷ õ ,áÝÝÝÝÝç-ð+Ý&ð +ˆH×*Ñ*Ó,Ø˜S×-Ñ-¨b¨qÐ1Ñ2Ø�[‰[ñÐ ô˜ô ò(H-óVò>QDóh<øð{ ò +ß*ð+ús   Á2C  Ã CÃC