
    gh                     ,   S SK r S SKrS SKrS SKJrJrJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr   S SKJr  S S	KJr  \(       a  S S
KJrJrJr  S SKJrJrJr  / SQrS rS r " S S\R>                  5      r  " S S\	5      r!g! \ a	    \" S5      ef = f)    N)
SPANSTATUSSPANDATAOP)DidNotEnableIntegration)should_send_default_pii)Span)capture_internal_exceptions)
monitoringzPymongo not installed)TYPE_CHECKING)AnyDictUnion)CommandFailedEventCommandStartedEventCommandSucceededEvent)insertorderedfindlimitsingleBatch	aggregatecreateIndexesindexesdeletefindAndModifyrenameCollectiontodropc                 n   U  H  nU[         ;   nU(       a  M  US:H  =(       a    SU ;  nU(       a  M/  US:H  nU(       a  X    H  nU H  nSXV'   M	     M     MU  US;   nU(       a  X    H
  nSX   U'   M     Mu  US:H  n	U	(       a)  X    H  n
SU
;   a  U
S   O/  H  nSU
S   U'   M     M!     M  SX'   M     U $ )Nupdater   	documentsz%s)filterqueryr!   pipelinez$match)SAFE_COMMAND_ATTRIBUTES)commandkeyis_safe_fieldupdate_db_commandis_documentdocdoc_keyis_dict_fielditem_keyis_pipeline_fieldr%   	match_keys               b/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/pymongo.py
_strip_piir3   -   s    668ONw0N  [(|"G#'CL  # $  <<#L)-X& )  :-#L7?87K(!3QS!SI48HX&y1 "T )  I L N    c                    0 nSU[         R                  '   U R                  nUb  X![         R                  '   U R                  S   nUb  X1[         R
                  '   U R                  S   nUb  XA[         R                  '   U$ )Nmongodbr      )r   	DB_SYSTEMdatabase_nameDB_NAMEconnection_idSERVER_ADDRESSSERVER_PORT)eventdatadb_nameserver_addressserver_ports        r2   _get_db_datarC   X   s    D(D		!!G!(X((+N!(6X$$%%%a(K%0X!!"Kr4   c                   2    \ rS rSrS rS rS rS rS rSr	g)	CommandTracerm   c                     0 U l         g N_ongoing_operations)selfs    r2   __init__CommandTracer.__init__n   s
    #% r4   c                     UR                   $ rH   )
request_id)rK   r>   s     r2   _operation_keyCommandTracer._operation_keyr   s    r4   c                    [         R                  " 5       R                  [        5      c  g [	        5          [        [        R                  " UR                  5      5      nUR                  SS 5        UR                  SS 5        UR                  SS 5        SUR                  [        R                  S[        R                  UR                  [        R                  UR!                  UR                  5      0n UR"                  S   US'   [%        UR"                  S   5      US	'   S
0 0nUR(                  US
   S'   UR*                  US
   S'   UR-                  [/        U5      5         UR                  S5      S   n[%        U5      US
   S'   [3        5       (       d  [5        U5      n[6        R8                  " U[$        S9n[         R:                  " [<        R>                  U[        R@                  S9nURC                  5        H'  u  pURE                  X5        URG                  X5        M)     URC                  5        H  u  pURG                  X5        M     [	        5          [         RH                  " US[<        R>                  US9  S S S 5        URK                  5       U RL                  U RO                  U5      '   S S S 5        g ! [&         a     GNf = f! [0         a     GNUf = f! , (       d  f       Ne= f! , (       d  f       g = f)Nz$dbz$clusterTimez
$signaturezdb.namer6   r   znet.peer.namer7   znet.peer.portoperation_ids	operationrequestlsididsession)default)opnameoriginr$   )messagecategorytyper?   )(
sentry_sdk
get_clientget_integrationPyMongoIntegrationr
   dictcopydeepcopyr'   popr9   r   r8   DB_OPERATIONcommand_nameDB_MONGODB_COLLECTIONgetr;   str	TypeErroroperation_idrO   r!   rC   KeyErrorr   r3   jsondumps
start_spanr   DBr\   itemsset_tagset_dataadd_breadcrumb	__enter__rJ   rP   )rK   r>   r'   tagsr?   rV   r$   spantagvaluer(   s              r2   startedCommandTracer.startedv   s~     "223EFN(*4==78GKKt$KK-KKd+ 5..""I%%u'9'9..E<N<N0O	D(-(;(;A(>_%(+E,?,?,B(C_% $R(D161C1CD!+./4/?/?D!),KKU+,{{6*4036t9_%i0 +,,$W-JJw4E((55)00D #jjl
 S(c) + #jjl
c) + -.))!G"%%d /
 DH>>CSD$$T%8%8%?@s +*"    . /.i +*sn   CK67-K$AK6'%KCK6 &K%4K6
KK6KK6
K"K6!K""K6%
K3	/K66
Lc                 2   [         R                  " 5       R                  [        5      c  g  U R                  R                  U R                  U5      5      nUR                  [        R                  5        UR                  S S S 5        g ! [         a     g f = frH   )r`   ra   rb   rc   rJ   rg   rP   
set_statusr   INTERNAL_ERROR__exit__ro   rK   r>   rz   s      r2   failedCommandTracer.failed   sz      "223EFN	++//0C0CE0JKDOOJ556MM$d+ 		   AB	 	
BBc                 2   [         R                  " 5       R                  [        5      c  g  U R                  R                  U R                  U5      5      nUR                  [        R                  5        UR                  S S S 5        g ! [         a     g f = frH   )r`   ra   rb   rc   rJ   rg   rP   r   r   OKr   ro   r   s      r2   	succeededCommandTracer.succeeded   sx      "223EFN	++//0C0CE0JKDOOJMM*MM$d+ 		r   rI   N)
__name__
__module____qualname____firstlineno__rL   rP   r}   r   r   __static_attributes__ r4   r2   rE   rE   m   s    & >T@

r4   rE   c                   2    \ rS rSrSrS\ 3r\S 5       rSrg)rc      pymongozauto.db.c                  @    [         R                  " [        5       5        g rH   )r   registerrE   r   r4   r2   
setup_oncePyMongoIntegration.setup_once   s     	MO,r4   r   N)	r   r   r   r   
identifierr\   staticmethodr   r   r   r4   r2   rc   rc      s%    J
|$F- -r4   rc   )"re   rp   r`   sentry_sdk.constsr   r   r   sentry_sdk.integrationsr   r   sentry_sdk.scoper   sentry_sdk.tracingr	   sentry_sdk.utilsr
   r   r   ImportErrortypingr   r   r   r   pymongo.monitoringr   r   r   r&   r3   rC   CommandListenerrE   rc   r   r4   r2   <module>r      s       6 6 = 4 # 80" !''  "(V*_J.. _D- -E  0
.
//0s   B B