
    tni                     0   d dl Z d dlZd dlZd dlmZmZm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 n# e$ r  ed          w xY wd d	lmZ erd d
lmZmZmZ d dlmZmZmZ g dZddZddZ G d dej                  Z  G d de	          Z!dS )    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dropcommandDict[str, Any]returnc                 "   | D ]}|t           v }|r|dk    od| v}|r|dk    }|r| |         D ]}|D ]}d||<   9|dv }|r| |         D ]}d| |         |<   V|dk    }	|	r(| |         D ]}
d|
v r|
d         ng D ]}d|
d         |<   d| |<   | S )Nupdater   	documentsz%s)filterqueryr$   pipelinez$match)SAFE_COMMAND_ATTRIBUTES)r    keyis_safe_fieldupdate_db_commandis_documentdocdoc_keyis_dict_fielditem_keyis_pipeline_fieldr(   	match_keys               \/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/pymongo.py
_strip_piir5   -   sE    $ $66 	8ONw0N 	  [( 	s| ( (" ( (G#'CLL( << 	#CL . .)-X&&  :- 	#CL 9 97?87K7K(!3!3QS 9 9I48HX&y119 N    eventr   c                     i }d|t           j        <   | j        }|||t           j        <   | j        d         }|||t           j        <   | j        d         }|||t           j        <   |S )Nmongodbr      )r   	DB_SYSTEMdatabase_nameDB_NAMEconnection_idSERVER_ADDRESSSERVER_PORT)r7   datadb_nameserver_addressserver_ports        r4   _get_db_datarE   W   st    D(D	!G!(X(+N!(6X$%%a(K%0X!"Kr6   c                   >    e Zd ZddZdddefdZddZdd
ZddZdS )CommandTracerr"   Nc                     i | _         d S N)_ongoing_operations)selfs    r4   __init__zCommandTracer.__init__l   s    68   r6   r7   zEUnion[CommandFailedEvent, CommandStartedEvent, CommandSucceededEvent]c                     |j         S rI   )
request_id)rK   r7   s     r4   _operation_keyzCommandTracer._operation_keyo   s     r6   r   c                 F   t          j                                        t                    d S t	                      5  t          t          j        |j                            }|	                    dd            |	                    dd            |	                    dd            d|j
        t          j        dt          j        |j        t          j        |                    |j                  i}	 |j        d         |d<   t%          |j        d                   |d	<   n# t&          $ r Y nw xY wd
i i}|j        |d
         d<   |j        |d
         d<   |                    t/          |                     	 |	                    d          d         }t%          |          |d
         d<   n# t0          $ r Y nw xY wt3                      st5          |          }t7          j        |t$                    }t          j        t<          j        |t          j                   }|!                                D ]1\  }}	|"                    ||	           |#                    ||	           2|!                                D ]\  }
}	|#                    |
|	           t	                      5  t          j$        |dt<          j        |           d d d            n# 1 swxY w Y   |%                                | j&        | '                    |          <   d d d            d S # 1 swxY w Y   d S )Nz$dbz$clusterTimez
$signaturezdb.namer9   r   znet.peer.namer:   znet.peer.portoperation_ids	operationrequestlsididsession)default)opnameoriginr'   )messagecategorytyperA   )(
sentry_sdk
get_clientget_integrationPyMongoIntegrationr
   dictcopydeepcopyr    popr<   r   r;   DB_OPERATIONcommand_nameDB_MONGODB_COLLECTIONgetr>   str	TypeErroroperation_idrN   r$   rE   KeyErrorr   r5   jsondumps
start_spanr   DBrZ   itemsset_tagset_dataadd_breadcrumb	__enter__rJ   rO   )rK   r7   r    tagsrA   rT   r'   spantagvaluer*   s              r4   startedzCommandTracer.startedu   s    ""223EFFNF(** 9	T 9	T4=7788GKKt$$$KK---KKd+++ 5."I%u'9.E<N0O0O	D(-(;A(>_%(+E,?,B(C(C_%%    '6r%:D161CD!+./4/?D!),KKU++,,,{{6**4036t99_%i00    +,, .$W--Jw444E(5)0  D #jjll * *
U S%(((c5))))"jjll * *
Uc5)))),..  )!G"%d                 
 DH>>CSCSD$T%8%8%?%?@s9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	T 9	Ts   B3L0-DL
D+(L*D++A	L53F)(L)
F63L5F66C*L #KLK	LK	2LLLr   c                 J   t          j                                        t                    d S 	 | j                            |                     |                    }|                    t          j	                   |
                    d d d            d S # t          $ r Y d S w xY wrI   )r^   r_   r`   ra   rJ   re   rO   
set_statusr   INTERNAL_ERROR__exit__rm   rK   r7   rx   s      r4   failedzCommandTracer.failed   s     ""223EFFNF	+//0C0CE0J0JKKDOOJ5666MM$d+++++ 	 	 	FF	   A#B 
B"!B"r   c                 J   t          j                                        t                    d S 	 | j                            |                     |                    }|                    t          j	                   |
                    d d d            d S # t          $ r Y d S w xY wrI   )r^   r_   r`   ra   rJ   re   rO   r}   r   OKr   rm   r   s      r4   	succeededzCommandTracer.succeeded   s     ""223EFFNF	+//0C0CE0J0JKKDOOJM***MM$d+++++ 	 	 	DD	r   r"   N)r7   r   r"   N)r7   r   r"   N)r7   r   r"   N)	__name__
__module____qualname__rL   intrO   r{   r   r    r6   r4   rG   rG   k   s        9 9 9 9 V  
       =T =T =T =T~	 	 	 		 	 	 	 	 	r6   rG   c                   4    e Zd ZdZde Zedd            ZdS )ra   pymongozauto.db.r"   Nc                  F    t          j        t                                 d S rI   )r   registerrG   r   r6   r4   
setup_oncezPyMongoIntegration.setup_once   s    MOO,,,,,r6   r   )r   r   r   
identifierrZ   staticmethodr   r   r6   r4   ra   ra      sD        J$
$$F- - - \- - -r6   ra   )r    r!   r"   r!   )r7   r   r"   r!   )"rc   rn   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)   r5   rE   CommandListenerrG   ra   r   r6   r4   <module>r      s         6 6 6 6 6 6 6 6 6 6 = = = = = = = = 4 4 4 4 4 4 # # # # # # 8 8 8 8 8 80""""""" 0 0 0
,.
/
//0 !           ''''''''''            "' ' ' 'T   (] ] ] ] ]J. ] ] ]@- - - - - - - - - -s	   9 A
