Skip to content

Commit fe8190b

Browse files
committed
test: Intercept add_and_trim_labels
1 parent 80514f6 commit fe8190b

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

tests/unit/session/test_read_gbq_colab.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,38 @@
2828
def 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

Comments
 (0)