0i4ddlmZmZddlmZmZmZddlmZm Z ddl m Z m Z m Z  ddlmZddlmZddlmZdd lmZerdd lmZdd lmZdd lmZdd lmZGddeZe edZe edZdZ dZ!dZ"y#e$r edwxYw)) SPANSTATUSSPANDATA)_check_minimum_version Integration DidNotEnable)add_query_sourcerecord_sql_queries)capture_internal_exceptionsensure_integration_enabled parse_version)Engine)listen) __version__zSQLAlchemy not installed.) TYPE_CHECKING)Any)ContextManager)Optional)Spanc*eZdZdZdeZedZy)SqlalchemyIntegration sqlalchemyzauto.db.ctt}tt|t t dt t t dtt t dty)Nbefore_cursor_executeafter_cursor_execute handle_error) r SQLALCHEMY_VERSIONrrrr _before_cursor_execute_after_cursor_execute _handle_error)versions Q/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations/sqlalchemy.py setup_oncez SqlalchemyIntegration.setup_oncesB 234g>v.0FGv-/DEv~}5N)__name__ __module__ __qualname__ identifierorigin staticmethodr"r#r!rrs%J | $F66r#rct||||xr$|jxr|jjxsd|tj}||_|j }|t||||_yy)N) paramstyle executemany span_origin) r dialectr,rr(_sentry_sql_span_manager __enter__ _set_db_data_sentry_sql_span) conncursor statement parameterscontextr-argsctx_mgrspans r!rr*sy !MwM7??3M3MUQU)00 G(/G$    D T4 #' r#ct|dd}|d|_|jdddt|dd}|t5t |dddyy#1swYyxYw)Nr0r3)getattrr0__exit__r r)r4r5r6r7r8r9r:r;s r!rr@sjg94@G+/(tT* 7. 5D  ( * T "+ * * *s  AA"c|j}|yt|dd}||jtjt|dd}|d|_|j dddyy)Nr3r0)execution_contextr= set_statusrINTERNAL_ERRORr0r>)r8r9r@r;r:s r!rrOsw11  $&8$ ?D   112 ')CTJG592tT*r#cLt|}d|vryd|vryd|vryd|vryd|vryy)Nsqlitepostgres postgresqlmariadbmysqloracle)str)names r!_get_db_systemrLesD t9D4TD$4 r#cBt|jj}| |jtj ||jj y|jj j}| |jtj||jj j}| |jtj||jj j}|!|jtj|yy)N) rLenginerKset_datar DB_SYSTEMurldatabaseDB_NAMEhostSERVER_ADDRESSport SERVER_PORT)r;r4 db_systemdb_nameserver_address server_ports r!r2r2{st{{//0I h(()4 {{kkoo&&G h&&0[[__))N! h--~>++//&&K h**K8r#N)#sentry_sdk.constsrrsentry_sdk.integrationsrrrsentry_sdk.tracing_utilsrr sentry_sdk.utilsr r r sqlalchemy.enginer sqlalchemy.eventrrrr ImportErrortypingrrrrsentry_sdk.tracingrrrrrrLr2r*r#r!res2UUI 4('<!%' 6K 612(3(*12 #3 #+,,9[4 2 334s B B