2828def test_read_gbq_colab_includes_label ():
2929 """Make sure we can tell direct colab usage apart from regular read_gbq usage."""
3030 import bigframes .core .log_adapter as log_adapter
31+ import bigframes .session ._io .bigquery as bq_io
3132
32- # Store the original get_and_reset_api_methods
33- original_get_and_reset = log_adapter . get_and_reset_api_methods
33+ # Store the original add_and_trim_labels
34+ original_add_and_trim = bq_io . add_and_trim_labels
3435
35- # Create a wrapper that preserves methods for the test
36- preserved_methods = []
36+ # Track API methods
37+ tracked_methods = []
3738
38- def debug_get_and_reset (dry_run = False ):
39- methods = original_get_and_reset (dry_run )
40- if methods and "session-read_gbq_colab" in methods :
41- # Preserve the methods for later use in job labeling
42- preserved_methods .extend (methods )
43- print (f"Preserved methods for job labeling: { methods } " )
44- return methods
39+ def debug_add_api_method (name ):
40+ tracked_methods .append (name )
4541
46- log_adapter .get_and_reset_api_methods = debug_get_and_reset
42+ log_adapter .add_api_method = debug_add_api_method
43+
44+ def intercept_add_and_trim_labels (job_config ):
45+ # Ensure tracked methods are available before creating labels
46+ if tracked_methods and "session-read_gbq_colab" in tracked_methods :
47+ # Temporarily restore the methods for label creation
48+ original_methods = list (log_adapter ._api_methods )
49+ log_adapter ._api_methods .clear ()
50+ log_adapter ._api_methods .extend (tracked_methods )
51+
52+ # Call the original function
53+ original_add_and_trim (job_config )
54+
55+ # Restore original state
56+ log_adapter ._api_methods .clear ()
57+ log_adapter ._api_methods .extend (original_methods )
58+ else :
59+ original_add_and_trim (job_config )
60+
61+ # Monkey patch add_and_trim_labels
62+ bq_io .add_and_trim_labels = intercept_add_and_trim_labels
4763
4864 # Clear any existing call stack and API methods
4965 log_adapter ._call_stack .clear ()
@@ -56,10 +72,6 @@ def debug_get_and_reset(dry_run=False):
5672
5773 _ = session ._read_gbq_colab ("SELECT 'read-gbq-colab-test'" )
5874
59- # Restore the preserved methods before checking job configs
60- if preserved_methods :
61- log_adapter ._api_methods .extend (preserved_methods )
62-
6375 configs = session ._job_configs # type: ignore
6476
6577 label_values = []
0 commit comments