@@ -279,7 +279,7 @@ def test_executemany_comment(self):
279279        connect_module  =  mock .MagicMock ()
280280        connect_module .__name__  =  "test" 
281281        connect_module .__version__  =  mock .MagicMock ()
282-         connect_module .__libpq_version__  =  123 
282+         connect_module .pq . version . return_value  =  123 
283283        connect_module .apilevel  =  123 
284284        connect_module .threadsafety  =  123 
285285        connect_module .paramstyle  =  "test" 
@@ -312,7 +312,7 @@ def test_executemany_comment_stmt_enabled(self):
312312        connect_module  =  mock .MagicMock ()
313313        connect_module .__name__  =  "test" 
314314        connect_module .__version__  =  mock .MagicMock ()
315-         connect_module .__libpq_version__  =  123 
315+         connect_module .pq . version . return_value  =  123 
316316        connect_module .apilevel  =  123 
317317        connect_module .threadsafety  =  123 
318318        connect_module .paramstyle  =  "test" 
@@ -420,7 +420,7 @@ def test_executemany_comment_stmt_enabled_matches_db_statement_attribute(
420420    ):
421421        connect_module  =  mock .MagicMock ()
422422        connect_module .__version__  =  mock .MagicMock ()
423-         connect_module .__libpq_version__  =  123 
423+         connect_module .pq . version . return_value  =  123 
424424        connect_module .apilevel  =  123 
425425        connect_module .threadsafety  =  123 
426426        connect_module .paramstyle  =  "test" 
@@ -456,12 +456,12 @@ def test_executemany_comment_stmt_enabled_matches_db_statement_attribute(
456456        ).group ()
457457        self .assertEqual (cursor_span_id , db_statement_span_id )
458458
459-     def  test_compatible_build_version_psycopg_psycopg2_libpq (self ):
459+     def  test_compatible_build_version_psycopg2_libpq (self ):
460460        connect_module  =  mock .MagicMock ()
461461        connect_module .__name__  =  "test" 
462462        connect_module .__version__  =  mock .MagicMock ()
463-         connect_module .pq  =  mock . MagicMock () 
464-         connect_module .pq . __build_version__  =  123 
463+         connect_module .pq . version . side_effect  =  AttributeError 
464+         connect_module .__libpq_version__  =  123 
465465        connect_module .apilevel  =  123 
466466        connect_module .threadsafety  =  123 
467467        connect_module .paramstyle  =  "test" 
@@ -490,14 +490,47 @@ def test_compatible_build_version_psycopg_psycopg2_libpq(self):
490490            "Select 1;" ,
491491        )
492492
493-     def  test_compatible_build_version_psycopg_psycopg2_libpq_stmt_enabled (
493+     def  test_compatible_build_version_psycopg_libpq (self ):
494+         connect_module  =  mock .MagicMock ()
495+         connect_module .__name__  =  "test" 
496+         connect_module .__version__  =  mock .MagicMock ()
497+         connect_module .pq .version .return_value  =  123 
498+         connect_module .apilevel  =  123 
499+         connect_module .threadsafety  =  123 
500+         connect_module .paramstyle  =  "test" 
501+ 
502+         db_integration  =  dbapi .DatabaseApiIntegration (
503+             "instrumenting_module_test_name" ,
504+             "postgresql" ,
505+             enable_commenter = True ,
506+             commenter_options = {"db_driver" : False , "dbapi_level" : False },
507+             connect_module = connect_module ,
508+         )
509+         mock_connection  =  db_integration .wrapped_connection (
510+             mock_connect , {}, {}
511+         )
512+         cursor  =  mock_connection .cursor ()
513+         cursor .executemany ("Select 1;" )
514+         self .assertRegex (
515+             cursor .query ,
516+             r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
517+         )
518+         spans_list  =  self .memory_exporter .get_finished_spans ()
519+         self .assertEqual (len (spans_list ), 1 )
520+         span  =  spans_list [0 ]
521+         self .assertEqual (
522+             span .attributes [SpanAttributes .DB_STATEMENT ],
523+             "Select 1;" ,
524+         )
525+ 
526+     def  test_no_libpq_version_when_we_dont_instrument_the_root_module (
494527        self ,
495528    ):
496529        connect_module  =  mock .MagicMock ()
497530        connect_module .__name__  =  "test" 
498531        connect_module .__version__  =  mock .MagicMock ()
499-         connect_module .pq  =  mock . MagicMock () 
500-         connect_module .pq . __build_version__  =  123 
532+         connect_module .pq . version . side_effect  =  AttributeError 
533+         connect_module .__libpq_version__  =  None 
501534        connect_module .apilevel  =  123 
502535        connect_module .threadsafety  =  123 
503536        connect_module .paramstyle  =  "test" 
@@ -517,20 +550,21 @@ def test_compatible_build_version_psycopg_psycopg2_libpq_stmt_enabled(
517550        cursor .executemany ("Select 1;" )
518551        self .assertRegex (
519552            cursor .query ,
520-             r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123, traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
553+             r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
521554        )
522555        spans_list  =  self .memory_exporter .get_finished_spans ()
523556        self .assertEqual (len (spans_list ), 1 )
524557        span  =  spans_list [0 ]
525558        self .assertRegex (
526559            span .attributes [SpanAttributes .DB_STATEMENT ],
527-             r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123, traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
560+             r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
528561        )
529562
530563    def  test_executemany_psycopg2_integration_comment (self ):
531564        connect_module  =  mock .MagicMock ()
532565        connect_module .__name__  =  "psycopg2" 
533566        connect_module .__version__  =  "1.2.3" 
567+         connect_module .pq .version .side_effect  =  AttributeError 
534568        connect_module .__libpq_version__  =  123 
535569        connect_module .apilevel  =  123 
536570        connect_module .threadsafety  =  123 
@@ -564,6 +598,7 @@ def test_executemany_psycopg2_integration_comment_stmt_enabled(self):
564598        connect_module  =  mock .MagicMock ()
565599        connect_module .__name__  =  "psycopg2" 
566600        connect_module .__version__  =  "1.2.3" 
601+         connect_module .pq .version .side_effect  =  AttributeError 
567602        connect_module .__libpq_version__  =  123 
568603        connect_module .apilevel  =  123 
569604        connect_module .threadsafety  =  123 
@@ -598,8 +633,7 @@ def test_executemany_psycopg_integration_comment(self):
598633        connect_module  =  mock .MagicMock ()
599634        connect_module .__name__  =  "psycopg" 
600635        connect_module .__version__  =  "1.2.3" 
601-         connect_module .pq  =  mock .MagicMock ()
602-         connect_module .pq .__build_version__  =  123 
636+         connect_module .pq .version .return_value  =  123 
603637        connect_module .apilevel  =  123 
604638        connect_module .threadsafety  =  123 
605639        connect_module .paramstyle  =  "test" 
@@ -632,8 +666,7 @@ def test_executemany_psycopg_integration_comment_stmt_enabled(self):
632666        connect_module  =  mock .MagicMock ()
633667        connect_module .__name__  =  "psycopg" 
634668        connect_module .__version__  =  "1.2.3" 
635-         connect_module .pq  =  mock .MagicMock ()
636-         connect_module .pq .__build_version__  =  123 
669+         connect_module .pq .version .return_value  =  123 
637670        connect_module .apilevel  =  123 
638671        connect_module .threadsafety  =  123 
639672        connect_module .paramstyle  =  "test" 
@@ -887,8 +920,7 @@ def test_executemany_pymysql_integration_comment_stmt_enabled(self):
887920    def  test_executemany_flask_integration_comment (self ):
888921        connect_module  =  mock .MagicMock ()
889922        connect_module .__name__  =  "test" 
890-         connect_module .__version__  =  mock .MagicMock ()
891-         connect_module .__libpq_version__  =  123 
923+         connect_module .pq .version .return_value  =  123 
892924        connect_module .apilevel  =  123 
893925        connect_module .threadsafety  =  123 
894926        connect_module .paramstyle  =  "test" 
@@ -904,7 +936,7 @@ def test_executemany_flask_integration_comment(self):
904936        sqlcommenter_context  =  context .set_value (
905937            "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {"flask" : 1 }, current_context 
906938        )
907-         context .attach (sqlcommenter_context )
939+         token   =   context .attach (sqlcommenter_context )
908940
909941        mock_connection  =  db_integration .wrapped_connection (
910942            mock_connect , {}, {}
@@ -923,16 +955,13 @@ def test_executemany_flask_integration_comment(self):
923955            "Select 1;" ,
924956        )
925957
926-         clear_context  =  context .set_value (
927-             "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {}, current_context 
928-         )
929-         context .attach (clear_context )
958+         context .detach (token )
930959
931960    def  test_executemany_flask_integration_comment_stmt_enabled (self ):
932961        connect_module  =  mock .MagicMock ()
933962        connect_module .__name__  =  "test" 
934963        connect_module .__version__  =  mock .MagicMock ()
935-         connect_module .__libpq_version__  =  123 
964+         connect_module .pq . version . return_value  =  123 
936965        connect_module .apilevel  =  123 
937966        connect_module .threadsafety  =  123 
938967        connect_module .paramstyle  =  "test" 
@@ -949,7 +978,7 @@ def test_executemany_flask_integration_comment_stmt_enabled(self):
949978        sqlcommenter_context  =  context .set_value (
950979            "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {"flask" : 1 }, current_context 
951980        )
952-         context .attach (sqlcommenter_context )
981+         token   =   context .attach (sqlcommenter_context )
953982
954983        mock_connection  =  db_integration .wrapped_connection (
955984            mock_connect , {}, {}
@@ -968,10 +997,7 @@ def test_executemany_flask_integration_comment_stmt_enabled(self):
968997            r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',flask=1,libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
969998        )
970999
971-         clear_context  =  context .set_value (
972-             "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {}, current_context 
973-         )
974-         context .attach (clear_context )
1000+         context .detach (token )
9751001
9761002    def  test_callproc (self ):
9771003        db_integration  =  dbapi .DatabaseApiIntegration (
@@ -1096,7 +1122,7 @@ def test_non_string_sql_conversion(self):
10961122        connect_module  =  mock .MagicMock ()
10971123        connect_module .__name__  =  "test" 
10981124        connect_module .__version__  =  "1.0" 
1099-         connect_module .__libpq_version__  =  123 
1125+         connect_module .pq . version . return_value  =  123 
11001126        connect_module .apilevel  =  "2.0" 
11011127        connect_module .threadsafety  =  1 
11021128        connect_module .paramstyle  =  "test" 
0 commit comments