From d887714284f10c0ae57f2cd6d442378131c2c21f Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Fri, 17 Apr 2026 23:20:32 +0000 Subject: [PATCH 1/9] fix: Respect display.progress_bar=None in background threads --- packages/bigframes/bigframes/core/events.py | 28 +++++++++++++--- .../bigframes/bigframes/formatting_helpers.py | 5 ++- .../session/_io/bigquery/__init__.py | 32 ++++++++++++++----- .../tests/unit/test_formatting_helpers.py | 25 +++++++++++++++ 4 files changed, 77 insertions(+), 13 deletions(-) diff --git a/packages/bigframes/bigframes/core/events.py b/packages/bigframes/bigframes/core/events.py index 0724cc5414bb..54bb58acd595 100644 --- a/packages/bigframes/bigframes/core/events.py +++ b/packages/bigframes/bigframes/core/events.py @@ -125,15 +125,21 @@ class BigQuerySentEvent(ExecutionRunning): location: Optional[str] = None job_id: Optional[str] = None request_id: Optional[str] = None + progress_bar: Optional[str] = "fallback_to_global" @classmethod - def from_bqclient(cls, event: google.cloud.bigquery._job_helpers.QuerySentEvent): + def from_bqclient( + cls, + event: google.cloud.bigquery._job_helpers.QuerySentEvent, + progress_bar: Optional[str] = "fallback_to_global", + ): return cls( query=event.query, billing_project=event.billing_project, location=event.location, job_id=event.job_id, request_id=event.request_id, + progress_bar=progress_bar, ) @@ -146,15 +152,21 @@ class BigQueryRetryEvent(ExecutionRunning): location: Optional[str] = None job_id: Optional[str] = None request_id: Optional[str] = None + progress_bar: Optional[str] = "fallback_to_global" @classmethod - def from_bqclient(cls, event: google.cloud.bigquery._job_helpers.QueryRetryEvent): + def from_bqclient( + cls, + event: google.cloud.bigquery._job_helpers.QueryRetryEvent, + progress_bar: Optional[str] = "fallback_to_global", + ): return cls( query=event.query, billing_project=event.billing_project, location=event.location, job_id=event.job_id, request_id=event.request_id, + progress_bar=progress_bar, ) @@ -171,10 +183,13 @@ class BigQueryReceivedEvent(ExecutionRunning): created: Optional[datetime.datetime] = None started: Optional[datetime.datetime] = None ended: Optional[datetime.datetime] = None + progress_bar: Optional[str] = "fallback_to_global" @classmethod def from_bqclient( - cls, event: google.cloud.bigquery._job_helpers.QueryReceivedEvent + cls, + event: google.cloud.bigquery._job_helpers.QueryReceivedEvent, + progress_bar: Optional[str] = "fallback_to_global", ): return cls( billing_project=event.billing_project, @@ -186,6 +201,7 @@ def from_bqclient( created=event.created, started=event.started, ended=event.ended, + progress_bar=progress_bar, ) @@ -204,10 +220,13 @@ class BigQueryFinishedEvent(ExecutionRunning): created: Optional[datetime.datetime] = None started: Optional[datetime.datetime] = None ended: Optional[datetime.datetime] = None + progress_bar: Optional[str] = "fallback_to_global" @classmethod def from_bqclient( - cls, event: google.cloud.bigquery._job_helpers.QueryFinishedEvent + cls, + event: google.cloud.bigquery._job_helpers.QueryFinishedEvent, + progress_bar: Optional[str] = "fallback_to_global", ): return cls( billing_project=event.billing_project, @@ -221,6 +240,7 @@ def from_bqclient( created=event.created, started=event.started, ended=event.ended, + progress_bar=progress_bar, ) diff --git a/packages/bigframes/bigframes/formatting_helpers.py b/packages/bigframes/bigframes/formatting_helpers.py index cef14d39a3f6..834675de0d64 100644 --- a/packages/bigframes/bigframes/formatting_helpers.py +++ b/packages/bigframes/bigframes/formatting_helpers.py @@ -152,7 +152,10 @@ def progress_callback( # This will allow cleanup to continue. return - progress_bar = bigframes._config.options.display.progress_bar + # Prioritize progress_bar set on the event, falling back to thread-local option. + progress_bar = getattr(event, "progress_bar", "fallback_to_global") + if progress_bar == "fallback_to_global": + progress_bar = bigframes._config.options.display.progress_bar if progress_bar == "auto": progress_bar = "notebook" if in_ipython() else "terminal" diff --git a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py index 780ba55c50db..7a7332073cd0 100644 --- a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py +++ b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py @@ -245,15 +245,27 @@ def add_and_trim_labels(job_config, session=None): def create_bq_event_callback(publisher): + import bigframes._config + + progress_bar = bigframes._config.options.display.progress_bar + def publish_bq_event(event): if isinstance(event, google.cloud.bigquery._job_helpers.QueryFinishedEvent): - bf_event = bigframes.core.events.BigQueryFinishedEvent.from_bqclient(event) + bf_event = bigframes.core.events.BigQueryFinishedEvent.from_bqclient( + event, progress_bar=progress_bar + ) elif isinstance(event, google.cloud.bigquery._job_helpers.QueryReceivedEvent): - bf_event = bigframes.core.events.BigQueryReceivedEvent.from_bqclient(event) + bf_event = bigframes.core.events.BigQueryReceivedEvent.from_bqclient( + event, progress_bar=progress_bar + ) elif isinstance(event, google.cloud.bigquery._job_helpers.QueryRetryEvent): - bf_event = bigframes.core.events.BigQueryRetryEvent.from_bqclient(event) + bf_event = bigframes.core.events.BigQueryRetryEvent.from_bqclient( + event, progress_bar=progress_bar + ) elif isinstance(event, google.cloud.bigquery._job_helpers.QuerySentEvent): - bf_event = bigframes.core.events.BigQuerySentEvent.from_bqclient(event) + bf_event = bigframes.core.events.BigQuerySentEvent.from_bqclient( + event, progress_bar=progress_bar + ) else: bf_event = bigframes.core.events.BigQueryUnknownEvent(event) @@ -275,7 +287,8 @@ def start_query_with_client( query_with_job: Literal[True], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: + ... @overload @@ -291,7 +304,8 @@ def start_query_with_client( query_with_job: Literal[False], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: + ... @overload @@ -308,7 +322,8 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: + ... @overload @@ -325,7 +340,8 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: + ... def start_query_with_client( diff --git a/packages/bigframes/tests/unit/test_formatting_helpers.py b/packages/bigframes/tests/unit/test_formatting_helpers.py index ec681b36ab05..67be9398d241 100644 --- a/packages/bigframes/tests/unit/test_formatting_helpers.py +++ b/packages/bigframes/tests/unit/test_formatting_helpers.py @@ -212,3 +212,28 @@ def test_get_job_url(): job_id=job_id, location=location, project_id=project_id ) assert actual_url == expected_url + + +def test_progress_callback_respects_event_progress_bar(): + event = bfevents.BigQuerySentEvent( + query="SELECT * FROM my_table", + progress_bar=None, + ) + + with mock.patch("bigframes._config.options.display.progress_bar", "terminal"): + with mock.patch("bigframes.formatting_helpers.in_ipython", return_value=False): + with mock.patch("builtins.print") as mock_print: + formatting_helpers.progress_callback(event) + mock_print.assert_not_called() + + +def test_progress_callback_falls_back_to_global(): + event = bfevents.BigQuerySentEvent( + query="SELECT * FROM my_table", + ) + + with mock.patch("bigframes._config.options.display.progress_bar", "terminal"): + with mock.patch("bigframes.formatting_helpers.in_ipython", return_value=False): + with mock.patch("builtins.print") as mock_print: + formatting_helpers.progress_callback(event) + mock_print.assert_called_once() From 42e4a5094d5daed5fc4b8a82680f428d78a5fa14 Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Fri, 17 Apr 2026 23:48:07 +0000 Subject: [PATCH 2/9] refactor: Refactor BQ event progress bar config --- packages/bigframes/bigframes/core/events.py | 19 +++++++----- .../bigframes/bigframes/formatting_helpers.py | 6 ++-- .../session/_io/bigquery/__init__.py | 31 +++++++------------ 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/packages/bigframes/bigframes/core/events.py b/packages/bigframes/bigframes/core/events.py index 54bb58acd595..2b42d4bb3bff 100644 --- a/packages/bigframes/bigframes/core/events.py +++ b/packages/bigframes/bigframes/core/events.py @@ -27,6 +27,9 @@ import bigframes.session.executor +_FALLBACK_TO_GLOBAL = "fallback_to_global" + + class Subscriber: def __init__(self, callback: Callable[[Event], None], *, publisher: Publisher): self._publisher = publisher @@ -125,13 +128,13 @@ class BigQuerySentEvent(ExecutionRunning): location: Optional[str] = None job_id: Optional[str] = None request_id: Optional[str] = None - progress_bar: Optional[str] = "fallback_to_global" + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL @classmethod def from_bqclient( cls, event: google.cloud.bigquery._job_helpers.QuerySentEvent, - progress_bar: Optional[str] = "fallback_to_global", + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL, ): return cls( query=event.query, @@ -152,13 +155,13 @@ class BigQueryRetryEvent(ExecutionRunning): location: Optional[str] = None job_id: Optional[str] = None request_id: Optional[str] = None - progress_bar: Optional[str] = "fallback_to_global" + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL @classmethod def from_bqclient( cls, event: google.cloud.bigquery._job_helpers.QueryRetryEvent, - progress_bar: Optional[str] = "fallback_to_global", + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL, ): return cls( query=event.query, @@ -183,13 +186,13 @@ class BigQueryReceivedEvent(ExecutionRunning): created: Optional[datetime.datetime] = None started: Optional[datetime.datetime] = None ended: Optional[datetime.datetime] = None - progress_bar: Optional[str] = "fallback_to_global" + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL @classmethod def from_bqclient( cls, event: google.cloud.bigquery._job_helpers.QueryReceivedEvent, - progress_bar: Optional[str] = "fallback_to_global", + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL, ): return cls( billing_project=event.billing_project, @@ -220,13 +223,13 @@ class BigQueryFinishedEvent(ExecutionRunning): created: Optional[datetime.datetime] = None started: Optional[datetime.datetime] = None ended: Optional[datetime.datetime] = None - progress_bar: Optional[str] = "fallback_to_global" + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL @classmethod def from_bqclient( cls, event: google.cloud.bigquery._job_helpers.QueryFinishedEvent, - progress_bar: Optional[str] = "fallback_to_global", + progress_bar: Optional[str] = _FALLBACK_TO_GLOBAL, ): return cls( billing_project=event.billing_project, diff --git a/packages/bigframes/bigframes/formatting_helpers.py b/packages/bigframes/bigframes/formatting_helpers.py index 834675de0d64..3d4082578f5a 100644 --- a/packages/bigframes/bigframes/formatting_helpers.py +++ b/packages/bigframes/bigframes/formatting_helpers.py @@ -153,8 +153,10 @@ def progress_callback( return # Prioritize progress_bar set on the event, falling back to thread-local option. - progress_bar = getattr(event, "progress_bar", "fallback_to_global") - if progress_bar == "fallback_to_global": + progress_bar = getattr( + event, "progress_bar", bigframes.core.events._FALLBACK_TO_GLOBAL + ) + if progress_bar == bigframes.core.events._FALLBACK_TO_GLOBAL: progress_bar = bigframes._config.options.display.progress_bar if progress_bar == "auto": diff --git a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py index 7a7332073cd0..a9787ba12bb8 100644 --- a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py +++ b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py @@ -249,26 +249,19 @@ def create_bq_event_callback(publisher): progress_bar = bigframes._config.options.display.progress_bar - def publish_bq_event(event): - if isinstance(event, google.cloud.bigquery._job_helpers.QueryFinishedEvent): - bf_event = bigframes.core.events.BigQueryFinishedEvent.from_bqclient( - event, progress_bar=progress_bar - ) - elif isinstance(event, google.cloud.bigquery._job_helpers.QueryReceivedEvent): - bf_event = bigframes.core.events.BigQueryReceivedEvent.from_bqclient( - event, progress_bar=progress_bar - ) - elif isinstance(event, google.cloud.bigquery._job_helpers.QueryRetryEvent): - bf_event = bigframes.core.events.BigQueryRetryEvent.from_bqclient( - event, progress_bar=progress_bar - ) - elif isinstance(event, google.cloud.bigquery._job_helpers.QuerySentEvent): - bf_event = bigframes.core.events.BigQuerySentEvent.from_bqclient( - event, progress_bar=progress_bar - ) - else: - bf_event = bigframes.core.events.BigQueryUnknownEvent(event) + event_map = { + google.cloud.bigquery._job_helpers.QueryFinishedEvent: bigframes.core.events.BigQueryFinishedEvent, + google.cloud.bigquery._job_helpers.QueryReceivedEvent: bigframes.core.events.BigQueryReceivedEvent, + google.cloud.bigquery._job_helpers.QueryRetryEvent: bigframes.core.events.BigQueryRetryEvent, + google.cloud.bigquery._job_helpers.QuerySentEvent: bigframes.core.events.BigQuerySentEvent, + } + def publish_bq_event(event): + bf_event = bigframes.core.events.BigQueryUnknownEvent(event) + for bq_type, bf_type in event_map.items(): + if isinstance(event, bq_type): + bf_event = bf_type.from_bqclient(event, progress_bar=progress_bar) + break publisher.publish(bf_event) return publish_bq_event From d6757bc61c5a31c4850e0730ab7aec0f628ad83d Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Fri, 17 Apr 2026 23:54:59 +0000 Subject: [PATCH 3/9] Refactor BQ event progress bar config and add system test --- .../tests/system/small/test_progress_bar.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/bigframes/tests/system/small/test_progress_bar.py b/packages/bigframes/tests/system/small/test_progress_bar.py index bc247f6078ce..a179e18332af 100644 --- a/packages/bigframes/tests/system/small/test_progress_bar.py +++ b/packages/bigframes/tests/system/small/test_progress_bar.py @@ -104,6 +104,23 @@ def test_progress_bar_load_jobs( assert_loading_msg_exist(capsys.readouterr().out, pattern="Load") +def test_progress_bar_uniqueness_check(session: bf.Session, capsys): + # Ensure strictly_ordered is True (default) to trigger uniqueness check + assert session._strictly_ordered + + capsys.readouterr() # clear output + + with bf.option_context("display.progress_bar", "terminal"): + # Read a table and specify a non-unique index_col to trigger the check. + # We use a public table to make it a "real" test. + session.read_gbq_table( + "bigquery-public-data.ml_datasets.penguins", + index_col="island", + ) + + assert_loading_msg_exist(capsys.readouterr().out) + + def assert_loading_msg_exist(capstdout: str, pattern=job_load_message_regex): num_loading_msg = 0 lines = capstdout.split("\n") From 3e8ddde0bc6f79dd76c9befb94dffc11d3eb8ce3 Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Fri, 17 Apr 2026 23:59:22 +0000 Subject: [PATCH 4/9] refactor: refactor code --- .../bigframes/session/_io/bigquery/__init__.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py index a9787ba12bb8..afef219f2f23 100644 --- a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py +++ b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py @@ -280,8 +280,7 @@ def start_query_with_client( query_with_job: Literal[True], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... @overload @@ -297,8 +296,7 @@ def start_query_with_client( query_with_job: Literal[False], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... @overload @@ -315,8 +313,7 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... @overload @@ -333,8 +330,7 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... def start_query_with_client( From 96aaff385992f5e0a3dad00bd440ed4068b3543c Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Mon, 20 Apr 2026 18:32:33 +0000 Subject: [PATCH 5/9] docs: add ignore --- .../bigframes/session/_io/bigquery/__init__.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py index afef219f2f23..fb87c611d7bb 100644 --- a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py +++ b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py @@ -260,7 +260,7 @@ def publish_bq_event(event): bf_event = bigframes.core.events.BigQueryUnknownEvent(event) for bq_type, bf_type in event_map.items(): if isinstance(event, bq_type): - bf_event = bf_type.from_bqclient(event, progress_bar=progress_bar) + bf_event = bf_type.from_bqclient(event, progress_bar=progress_bar) # type: ignore break publisher.publish(bf_event) @@ -280,7 +280,8 @@ def start_query_with_client( query_with_job: Literal[True], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: + ... @overload @@ -296,7 +297,8 @@ def start_query_with_client( query_with_job: Literal[False], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: + ... @overload @@ -313,7 +315,8 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: + ... @overload @@ -330,7 +333,8 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: + ... def start_query_with_client( From bfba71905e23671e24ad5ebfebc5807010c448f5 Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Mon, 20 Apr 2026 19:04:01 +0000 Subject: [PATCH 6/9] format file --- .pre-commit-config.yaml | 6 +++--- packages/bigframes/bigframes/core/events.py | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5405cc8ff1f3..f0d84681dfc3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,16 +16,16 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v6.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 26.3.1 hooks: - id: black - repo: https://github.com/pycqa/flake8 - rev: 3.9.2 + rev: 7.3.0 hooks: - id: flake8 diff --git a/packages/bigframes/bigframes/core/events.py b/packages/bigframes/bigframes/core/events.py index 2b42d4bb3bff..579621a107f0 100644 --- a/packages/bigframes/bigframes/core/events.py +++ b/packages/bigframes/bigframes/core/events.py @@ -22,16 +22,18 @@ import google.cloud.bigquery._job_helpers import google.cloud.bigquery.job.query +from google.cloud.bigquery.job.query import QueryPlanEntry import google.cloud.bigquery.table import bigframes.session.executor - _FALLBACK_TO_GLOBAL = "fallback_to_global" class Subscriber: - def __init__(self, callback: Callable[[Event], None], *, publisher: Publisher): + def __init__( + self, callback: Callable[[Event], None], *, publisher: Publisher + ): # noqa: E501 self._publisher = publisher self._callback = callback self._subscriber_id = uuid.uuid4() @@ -182,7 +184,7 @@ class BigQueryReceivedEvent(ExecutionRunning): job_id: Optional[str] = None statement_type: Optional[str] = None state: Optional[str] = None - query_plan: Optional[list[google.cloud.bigquery.job.query.QueryPlanEntry]] = None + query_plan: Optional[list[QueryPlanEntry]] = None created: Optional[datetime.datetime] = None started: Optional[datetime.datetime] = None ended: Optional[datetime.datetime] = None From 4ffd647d8eb08a56e93288addcf06f6d7e330c31 Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Mon, 20 Apr 2026 22:52:36 +0000 Subject: [PATCH 7/9] format file --- packages/bigframes/bigframes/core/events.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bigframes/bigframes/core/events.py b/packages/bigframes/bigframes/core/events.py index 579621a107f0..220e0e9a535f 100644 --- a/packages/bigframes/bigframes/core/events.py +++ b/packages/bigframes/bigframes/core/events.py @@ -22,8 +22,8 @@ import google.cloud.bigquery._job_helpers import google.cloud.bigquery.job.query -from google.cloud.bigquery.job.query import QueryPlanEntry import google.cloud.bigquery.table +from google.cloud.bigquery.job.query import QueryPlanEntry import bigframes.session.executor From ffbc3974718c460ba1e4211c29c8e3ba9f4037d6 Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Mon, 20 Apr 2026 22:53:44 +0000 Subject: [PATCH 8/9] Roll back .pre-commit-config.yaml changes --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f0d84681dfc3..5405cc8ff1f3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,16 +16,16 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 + rev: v4.0.1 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - repo: https://github.com/psf/black - rev: 26.3.1 + rev: 22.3.0 hooks: - id: black - repo: https://github.com/pycqa/flake8 - rev: 7.3.0 + rev: 3.9.2 hooks: - id: flake8 From a6c42aff42e449fdedf438c49d727238948a9b4a Mon Sep 17 00:00:00 2001 From: Shuowei Li Date: Wed, 22 Apr 2026 18:39:57 +0000 Subject: [PATCH 9/9] chore: format files --- packages/bigframes/bigframes/core/events.py | 4 +--- .../bigframes/session/_io/bigquery/__init__.py | 12 ++++-------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/bigframes/bigframes/core/events.py b/packages/bigframes/bigframes/core/events.py index 220e0e9a535f..6471cce58733 100644 --- a/packages/bigframes/bigframes/core/events.py +++ b/packages/bigframes/bigframes/core/events.py @@ -31,9 +31,7 @@ class Subscriber: - def __init__( - self, callback: Callable[[Event], None], *, publisher: Publisher - ): # noqa: E501 + def __init__(self, callback: Callable[[Event], None], *, publisher: Publisher): # noqa: E501 self._publisher = publisher self._callback = callback self._subscriber_id = uuid.uuid4() diff --git a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py index fb87c611d7bb..703cb4704fec 100644 --- a/packages/bigframes/bigframes/session/_io/bigquery/__init__.py +++ b/packages/bigframes/bigframes/session/_io/bigquery/__init__.py @@ -280,8 +280,7 @@ def start_query_with_client( query_with_job: Literal[True], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... @overload @@ -297,8 +296,7 @@ def start_query_with_client( query_with_job: Literal[False], publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... @overload @@ -315,8 +313,7 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, bigquery.QueryJob]: ... @overload @@ -333,8 +330,7 @@ def start_query_with_client( job_retry: google.api_core.retry.Retry, publisher: bigframes.core.events.Publisher, session=None, -) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: - ... +) -> Tuple[google.cloud.bigquery.table.RowIterator, Optional[bigquery.QueryJob]]: ... def start_query_with_client(