Ë
    õ�Dj"  ã                   ó~  — d dl Z d dlZd dlZd dlZd dlm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mZ d dlmZ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"  ejF                  «       dejH                  dd z  ejJ                  dœZ& G d„ de«      Z'd„ Z(dd„Z)d„ Z*d„ Z+y)é    N)ÚHTTPConnection)ÚOPÚSPANDATA)ÚIntegration)Úadd_global_event_processor)ÚEnvironHeadersÚshould_propagate_trace)ÚSENSITIVE_DATA_SUBSTITUTEÚcapture_internal_exceptionsÚensure_integration_enabledÚis_sentry_urlÚloggerÚ	safe_reprÚ	parse_url)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚDict)ÚOptional)ÚList)ÚEventÚHintz%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)Ú
sentry_sdkÚ
get_clientÚget_integrationr   Ú
setdefaultÚ
isinstanceÚdictÚ_RUNTIME_CONTEXT)ÚeventÚhintr"   s      úbC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/stdlib.pyÚadd_python_runtime_contextz@StdlibIntegration.setup_once.<locals>.add_python_runtime_context2   sQ   € ô ×$Ñ$Ó&×6Ñ6Ô7HÓIÐUØ ×+Ñ+¨J¸Ó;�Ü˜h¬Ô-°)À8Ñ2KÜ*:�H˜YÑ'àˆLó    )Ú_install_httplibÚ_install_subprocessr   )r.   s    r-   Ú
setup_oncezStdlibIntegration.setup_once,   s"   € ô 	ÔÜÔä	#ñ	ó 
$ñ	r/   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚstaticmethodr2   © r/   r-   r   r   )   s   „ Ø€Jàñó ñr/   r   c                  óˆ   ‡‡— t         j                  Št         j                  Šˆfd„} ˆfd„}| t         _        |t         _        y )Nc                 óP  •— | j                   }| j                  }| j                  }t        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 «       t        j                  t        j                  |›d
|
r|
j                  nt        ›�d¬«      }|j!                  t"        j$                  |«       |
�p|j!                  d|
j                  «       |j!                  t"        j&                  |
j(                  «       |j!                  t"        j*                  |
j,                  «        ‰| ||g|¢­i |¤Ž}t/        ||	«      ret        j0                  «       j3                  |¬«      D ]>  \  }}t5        j6                  dj9                  |||	¬«      «       | j;                  ||«       Œ@ || _        |S # 1 sw Y   �ŒaxY w)N)zhttp://zhttps://i»  ÚhttpsÚhttpz://z:%sÚ F)Úsanitizeú zauto.http.stdlib.httplib©Úopr   ÚoriginÚurl©ÚspanzJ[Tracing] Adding `{key}` header {value} to outgoing request to {real_url}.)ÚkeyÚvalueÚreal_url)ÚhostÚportÚdefault_portr$   r%   r&   r   r   Ú
startswithr   r   Ú
start_spanr   ÚHTTP_CLIENTrC   r
   Úset_datar   ÚHTTP_METHODÚ
HTTP_QUERYÚqueryÚHTTP_FRAGMENTÚfragmentr	   Úget_current_scopeÚiter_trace_propagation_headersr   ÚdebugÚformatÚ	putheaderÚ_sentrysdk_span)ÚselfÚmethodrC   ÚargsÚkwargsrI   rJ   rK   ÚclientrH   Ú
parsed_urlrE   ÚrvrF   rG   Úreal_putrequests                  €r-   Ú
putrequestz$_install_httplib.<locals>.putrequestB   s!  ø€ à�y‰yˆØ�y‰yˆØ×(Ñ(ˆä×&Ñ&Ó(ˆØ×!Ñ!Ô"3Ó4Ð<ÄØ�DôA
ñ # 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Ð@°Ò@¸Ñ@ˆä! &¨(Ô3ô ×-Ñ-Ó/×NÑNØð Oó ò+ñ ØØô —‘Ø`×gÑgØ u°xð hó ôð
 —‘˜s EÕ*ð+ð  $ˆÔàˆ	÷C	=ñ 	=ús   Â.HÈH%c                 ó"  •— t        | dd «      }|€ ‰| g|¢­i |¤ŽS 	  ‰| g|¢­i |¤Ž}|j                  t        |j                  «      «       |j	                  d|j
                  «       |j                  «        |S # |j                  «        w xY w)NrZ   Úreason)ÚgetattrÚset_http_statusÚintÚstatusrO   re   Úfinish)r[   r]   r^   rE   ra   Úreal_getresponses        €r-   Úgetresponsez%_install_httplib.<locals>.getresponse{   sˆ   ø€ ä�tÐ.°Ó5ˆàˆ<Ù# DÐ:¨4Ò:°6Ñ:Ð:ð	Ù! $Ð8¨Ò8°Ñ8ˆBà× Ñ ¤ R§Y¡Y£Ô0Ø�M‰M˜( B§I¡IÔ.à�K‰KŒMàˆ	øð �K‰K�Mús   žAA< Á<B)r   rc   rl   )rc   rl   rk   rb   s     @@r-   r0   r0   =   s7   ù€ ä$×/Ñ/€OÜ%×1Ñ1Ðô7ôrð" !+„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)r]   r^   r   ÚpositionÚsetdefault_callbackra   s         r-   Ú_init_argumentrq   �   sš   € ð ˆv�~Ø�D‰\ˆØÐ*Ù$ RÓ(ˆBØˆ>ØˆF�4‰Lð €Ið 
”C˜“IÒ	Ø�(‰^ˆØÐ*Ù$ RÓ(ˆBØˆ>ØˆD�‰Nð €Ið	 !Ò>Ñ%8¸Ó%>ˆØˆ>ØˆF�4‰Là€Ir/   c                  ó´  ‡‡‡— t         j                  j                  Št        t        ‰«      ˆfd„«       } | t         j                  _        t         j                  j
                  Št        t        ‰«      ˆfd„«       }|t         j                  _        t         j                  j                  Št        t        ‰«      ˆfd„«       }|t         j                  _        y )Nc           	      óü  •— 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 }t        j                  t        j                  |d¬«      5 }t        j                  «       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)Nr]   r   Úcwdé	   éd   r?   ú!auto.subprocess.stdlib.subprocessr@   rD   Úenvé
   c                 óD   — t        | �| «      S t        j                  «      S ©N)r)   ÚosÚenviron)Úxs    r-   ú<lambda>zH_install_subprocess.<locals>.sentry_patched_popen_init.<locals>.<lambda>Ü   s   € ¤$¨A¨M qÓ"J€ ¼r¿z¹zÓ"J€ r/   ÚSUBPROCESS_ú-Ú_zsubprocess.cwdúsubprocess.pid)Úlistrq   r(   Útuplern   r   ÚjoinÚmapÚstrr   r$   rM   r   Ú
SUBPROCESSrU   rV   ÚupperÚreplacerO   Úset_tagÚpid)r[   ÚaÚkwr]   rt   Údescriptionrx   rE   ÚkÚvra   Úold_popen_inits              €r-   Úsentry_patched_popen_initz6_install_subprocess.<locals>.sentry_patched_popen_init³   s‡  ø€ ô �‹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àˆä×"Ñ"Ü�}‰}ØØ6ô
ð 	ð Ü"×4Ñ4Ó6×UÑUØð Vó ò E‘��1ð �;Ü(ØØØØÙJó�Cð DE��M A§G¡G£I×$5Ñ$5°c¸3Ó$?Ñ?Ò@ðEñ Ø—‘Ð.°Ô4á Ð/ qÒ/¨BÑ/ˆBà�L‰LÐ)¨4¯8©8Ô4Ø÷1	ñ 	÷7ð 7ú÷	ð 	ús   Á E&Â:B"E2Å&E/Å2E;c                 óÊ   •— t        j                  t        j                  d¬«      5 }|j	                  d| j
                  «        ‰| g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY w©Nrw   )rA   rB   rƒ   )r$   rM   r   ÚSUBPROCESS_WAITrŒ   r�   )r[   rŽ   r�   rE   Úold_popen_waits       €r-   Úsentry_patched_popen_waitz6_install_subprocess.<locals>.sentry_patched_popen_waitì   s^   ø€ ô ×"Ñ"Ü×!Ñ!Ø6ô
ð 	2ð Ø�L‰LÐ)¨4¯8©8Ô4Ù! $Ð1¨Ò1¨bÑ1÷	2÷ 	2ò 	2úó   §(AÁA"c                 óÊ   •— t        j                  t        j                  d¬«      5 }|j	                  d| j
                  «        ‰| g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY wr–   )r$   rM   r   ÚSUBPROCESS_COMMUNICATErŒ   r�   )r[   rŽ   r�   rE   Úold_popen_communicates       €r-   Ú sentry_patched_popen_communicatez=_install_subprocess.<locals>.sentry_patched_popen_communicateú   s^   ø€ ô ×"Ñ"Ü×(Ñ(Ø6ô
ð 	9ð Ø�L‰LÐ)¨4¯8©8Ô4Ù(¨Ð8°Ò8°RÑ8÷	9÷ 	9ò 	9úrš   )Ú
subprocessÚPopenÚ__init__r   r   ÚwaitÚcommunicate)r”   r™   rž   r�   r“   r˜   s      @@@r-   r1   r1   ¯   s»   ú€ ä×%Ñ%×.Ñ.€NäÔ 1°>ÓBó2ó Cð2ðh !:„J×ÑÔä×%Ñ%×*Ñ*€NäÔ 1°>ÓBó2ó Cð2ð 6„J×ÑÔä&×,Ñ,×8Ñ8ÐäÔ 1Ð3HÓIó9ó Jð9ð $D„J×ÑÕ r/   c                  ó8   — t        t        j                  d¬«      S )Nr€   )Úprefix)r   r|   r}   r8   r/   r-   Ú"get_subprocess_traceparent_headersr¦     s   € äœ"Ÿ*™*¨]Ô;Ð;r/   r{   ),r|   rŸ   ÚsysÚplatformÚhttp.clientr   r$   Úsentry_sdk.constsr   r   Úsentry_sdk.integrationsr   Úsentry_sdk.scoper   Úsentry_sdk.tracing_utilsr   r	   Úsentry_sdk.utilsr
   r   r   r   r   r   r   Útypingr   r   r   r   r   r   Úsentry_sdk._typesr   r   Úpython_implementationÚversion_infor   r*   r   r0   rq   r1   r¦   r8   r/   r-   ú<module>r³      s¥   ðÛ 	Û Û 
Û Ý &ã ß *Ý /Ý 7ß K÷÷ ñ õ !áÝÝÝÝÝç-ð +ˆH×*Ñ*Ó,Ø˜S×-Ñ-¨b¨qÐ1Ñ2Ø�[‰[ñÐ ô˜ô ò(P-ófò>UDóp<r/   