
    lh                         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 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 Zd Z G d dej>                        Z  G d de	      Z!y# e$ r	  ed      w xY w)    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                    | D ]  }|t         v }|r|dk(  xr d| v}|r|dk(  }|r| |   D ]  }|D ]  }d||<   	  :|dv }|r| |   D ]
  }d| |   |<    S|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)commandkeyis_safe_fieldupdate_db_commandis_documentdocdoc_keyis_dict_fielditem_keyis_pipeline_fieldr%   	match_keys               q/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/pymongo.py
_strip_piir3   -   s    $668ONw0N  [(s| (" (G#'CL((  <<#CL .)-X&.  :-#CL 97?87K(!3QS 9I48HX&y199  I$L N    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)eventdatadb_nameserver_addressserver_ports        r2   _get_db_datarC   X   s    D(D		!!G!(X((+N!(6X$$%%%a(K%0X!!"Kr4   c                   *    e Zd Zd Zd Zd Zd Zd Zy)CommandTracerc                     i | _         y N)_ongoing_operations)selfs    r2   __init__zCommandTracer.__init__n   s
    #% r4   c                     |j                   S rG   )
request_id)rI   r>   s     r2   _operation_keyzCommandTracer._operation_keyr   s    r4   c                    t        j                         j                  t              y t	               5  t        t        j                  |j                              }|j                  dd        |j                  dd        |j                  dd        d|j                  t        j                  dt        j                  |j                  t        j                  |j!                  |j                        i}	 |j"                  d   |d<   t%        |j"                  d         |d	<   d
i i}|j(                  |d
   d<   |j*                  |d
   d<   |j-                  t/        |             	 |j                  d      d   }t%        |      |d
   d<   t3               st5        |      }t7        j8                  |t$              }t        j:                  t<        j>                  |t        j@                        }|jC                         D ])  \  }}	|jE                  ||	       |jG                  ||	       + |jC                         D ]  \  }
}	|jG                  |
|	        t	               5  t        jH                  |dt<        j>                  |       d d d        |jK                         | jL                  | jO                  |      <   d d d        y # t&        $ r Y w xY w# t0        $ r Y Uw xY w# 1 sw Y   ^xY w# 1 sw Y   y xY w)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_idrL   r!   rC   KeyErrorr   r3   jsondumps
start_spanr   DBrX   itemsset_tagset_dataadd_breadcrumb	__enter__rH   rM   )rI   r>   r'   tagsr?   rR   r$   spantagvaluer(   s              r2   startedzCommandTracer.startedv   s     "223EFN(* 9	T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 *
U S%(c5)* #jjl *
Uc5)* -. ))!G"%%d
 DH>>CSD$$T%8%8%?@s9	T 9	T"    . i9	T 9	Tsn   C K.4-K!AK.$%K	CK.(K"4K.	KK.KK.	KK.KK."K+	'K..K7c                 ,   t        j                         j                  t              y 	 | j                  j                  | j                  |            }|j                  t        j                         |j                  d d d        y # t        $ r Y y w xY wrG   )r\   r]   r^   r_   rH   rc   rM   
set_statusr   INTERNAL_ERROR__exit__rk   rI   r>   rv   s      r2   failedzCommandTracer.failed   sz      "223EFN	++//0C0CE0JKDOOJ556MM$d+ 		   AB 	BBc                 ,   t        j                         j                  t              y 	 | j                  j                  | j                  |            }|j                  t        j                         |j                  d d d        y # t        $ r Y y w xY wrG   )r\   r]   r^   r_   rH   rc   rM   r{   r   OKr}   rk   r~   s      r2   	succeededzCommandTracer.succeeded   sx      "223EFN	++//0C0CE0JKDOOJMM*MM$d+ 		r   N)__name__
__module____qualname__rJ   rM   ry   r   r    r4   r2   rE   rE   m   s    & >T@

r4   rE   c                   *    e Zd ZdZde Zed        Zy)r_   pymongozauto.db.c                  >    t        j                  t                      y rG   )r   registerrE   r   r4   r2   
setup_oncezPyMongoIntegration.setup_once   s     	MO,r4   N)r   r   r   
identifierrX   staticmethodr   r   r4   r2   r_   r_      s%    J
|$F- -r4   r_   )"ra   rl   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   r_   r   r4   r2   <module>r      s       6 6 = 4 # 80" !''  "(V*_J.. _D- -E  0
.
//0s   A? ?B