Shuowei Li
90d · built 2026-07-24
90-day totals
- Commits
- 26
- Grow
- 1.1
- Maintenance
- 10.8
- Fixes
- 1.6
- Total ETV
- 13.4
30-day trajectory
Last 30 days vs. the 30 days before. Up arrows on Growth and ETV mean improvement; up arrow on Fixes share means more time on fixes (worse).
↓-25.0 %
vs 12 prior
↑+37.6 pp
recent vs prior
↑+5.4 pp
recent vs prior
Daily performance
Daily ETV, stacked by Growth, Maintenance and Fixes.
Work-mix over time
Share of Growth / Maintenance / Fixes over a rolling 7-day window. Reads as 'where is effort flowing right now'.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
| Repo | Commits | ETV |
|---|---|---|
| google-cloud-python | 25 | 13.4 |
Most impactful commits
Top 20 by ETV in the 90-day window.
- 9.6ETVfeat: set up Angular infrastructure for TableWidget (#16934) Initialized an Angular workspace within bigframes/display/table_widget_angular and configured a custom build pipeline using esbuild to generate a single-file ESM output. This establishes the infrastructure required for the planned Angular hybrid approach for TableWidget. Verified at: screen/8uAnJEYQr9nx655 Fixes #<505414691> 🦕github.com-googleapis-google-cloud-python · 4d20bab8 · 2026-05-28
- 1.2ETVfix: Respect display.progress_bar=None in background threads (#16715) Fixes extraneous progress bar output during asynchronous query executions (such as Colab SQL cells and visualization plugins) when `display.progress_bar = None` is set via `option_context`. Previously, background query callbacks evaluated thread-local display options within the background worker thread, falling back to default settings (`"auto"`). ### Changes * **`EventEnvelope`**: Introduced a dataclass wrapping query execution events with the initiating thread's active `progress_bar` configuration. * **Query Initiation**: Updated `start_query_with_job` and `start_query_job_optional` to capture the calling thread's display options and emit events wrapped in an `EventEnvelope`. * **Event Listeners**: Updated `progress_callback` and `metrics.on_event` to unwrap `EventEnvelope` and respect the preserved option context, successfully suppressing extraneous output in background execution threads. Verified at here: before: screen/48zpTTWWjZ5wF9Y after: screen/7RS7exRrxgPDEqb Fixes #<461829560> 🦕github.com-googleapis-google-cloud-python · 07dd3315 · 2026-05-18
- 0.9ETVfeat: support interactive execution of deferred DataFrames in TableWidget (#17486) This PR introduces support for deferred execution rendering in TableWidget (the anywidget-based interactive table viewer for Jupyter notebooks). Users can now view dry-run estimations (e.g., query size/cost) and trigger execution directly from the notebook output. Verified at: vs code: go/scrcast/NjcyODQxMDY2MjQzNjg2NHxlNjJhY2Y0NS1hMg colab notebook: go/scrcast/NTk1NzEyMTg0NDcwNzMyOHxjZGQ1ZjQ0NS05NQ Fixes #<460865443> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>github.com-googleapis-google-cloud-python · 421eebdb · 2026-06-25
- 0.6ETVfeat: support automatic per-cell execution history filtering and isolated callbacks (#17144) This change introduces scoped query tracking and event callback management for BigQuery DataFrames within interactive notebook environments (Jupyter/Colab). Key Changes - Jupyter Cell Scoping: Resolves and carries the active IPython cell execution count (cell_execution_count) through TableWidget, ExecutionSpec, query executors, and final JobMetadata. - Execution History Filtering: Adds events, job_ids, and all_cells parameters to session.execution_history(). When all_cells=False, it filters query logs down to the current active notebook cell. - Scoped Callback Support: Adds a callback parameter to _read_gbq_colab that automatically subscribes to the query progress publisher during execution and automatically unsubscribes upon completion. - Robustness Fixes: 1. Instantiates expected schema/columns in _ExecutionHistory even when the dataframe is empty to prevent indexing errors. 2. Converts custom option mappings to native Python dicts when assigning query labels to avoid validation errors in the underlying BigQuery client. 3. Captures and propagates query_id in BigQueryFinishedEvent. Verified at: [go/scrcast/NjQzOTAzMTUwMzA2MDk5MnwzZWQ2MTMzYS0xYg](http://goto.google.com/scrcast/NjQzOTAzMTUwMzA2MDk5MnwzZWQ2MTMzYS0xYg) Colab notebook test: screen/7d6Yt3C28BUAKEH Fixes #<513337964> 🦕github.com-googleapis-google-cloud-python · 7d440111 · 2026-06-03
- 0.3ETVfeat!: complete deprecation and cleanup of multimodal blob APIs (#16618) This PR deprecates and cleans up experimental Multimodal Blob APIs in BigQuery DataFrames to focus on core supported features. Key Changes: - Removed public APIs: from_glob_path and read_gbq_object_table were removed from module exports and Session class. - Exposed internal API: Added _from_glob_path as an internal API in the module to support existing notebooks. Fixes #<478952827> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>github.com-googleapis-google-cloud-python · 3624f3bb · 2026-05-14
- 0.2ETVfix: preserve aliases on cast columns and fix star selection in sqlglot (#17394) (#17455) ** This branch is under testing, not ready for review ** This PR resolves a regression introduced when switching to the default `sqlglot` compiler, where cast columns lost their aliases during type-coercion and were auto-named by BigQuery as `f0_`, `f1_`, etc. (fixes #17394). Before: screen/7FibgBYoY6EN8hR After: screen/AWsDt8aocqyzjup Fixes #<521420846> 🦕github.com-googleapis-google-cloud-python · 145034a3 · 2026-06-12
- 0.1ETVfix: cast JSON and nested struct columns to string for anywidget rendering (#17189) This Pull Request resolves visualization crashes when rendering DataFrames or Series containing raw JSON and nested JSON struct structures. It ensures that these columns are safely pre-serialized into clean, flat JSON string format on the database level prior to visual layout rendering. Verified at: screen/424ojbuqyBPinTb Fixes #<514763826> 🦕github.com-googleapis-google-cloud-python · 994a22d6 · 2026-05-20
- 0.1ETVfeat: support gemini-3.x models in loader and update default model to gemini-3.5-flash (#17557) ** STILL IN CLEAN UP STAGE" - Updated the default model in BQML `GeminiTextGenerator` to `gemini-3.5-flash` (instead of `gemini-2.5-pro`). - Registered `gemini-3.1-flash-lite` and `gemini-3.5-flash` endpoints in BQML model loader to prevent `KeyError` during model loading. - Updated all related docstrings, deprecation notes, warnings, and tests to align with the new defaults. - Updated Gemini model references across all sample notebooks to `gemini-3.5-flash` and fixed notebook formatting syntax to pass pre-commit checks. Fixes #<519302924> 🦕github.com-googleapis-google-cloud-python · 3619b29e · 2026-06-25
- 0.1ETVfix: nameless column to_frame bug for pandas 3.0 (#17371) Fixes #<519726816> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>github.com-googleapis-google-cloud-python · b23bfa4c · 2026-06-05
- 0.1ETVRevert "feat: support gemini-3.x models in loader and update default … (#17602) This reverts PR: https://github.com/googleapis/google-cloud-python/pull/17409 Fixes #<issue_number_goes_here> 🦕github.com-googleapis-google-cloud-python · 1f93a2b8 · 2026-06-30
- 0.1ETVfix: emit bracketed inline array syntax for scalar subquery expressions (#17716) Fixes a SQLGlot transpilation bug in BigQuery array generation where single-element arrays containing scalar subqueries wrapped in expressions (e.g., `COALESCE(CAST(...))` or `ROUND(...)`) produced invalid BigQuery SQL syntax `ARRAY(COALESCE(...))`, causing BigQuery `400 Syntax error: Unexpected identifier "COALESCE"` errors on `.cache()`. Verified at: before: screen/9AmutJHVDJuafwm after: screen/u7aW9tTLB8ybUFW Fixes #<534824500> 🦕github.com-googleapis-google-cloud-python · ce5fd500 · 2026-07-16
- 0.1ETVfix: avoid invalid CAST(NULL AS NULL) in SQLGlot compiler (#17487) This PR resolves a compilation crash caused by the SQLGlot compiler attempting to generate an invalid CAST(NULL AS NULL) statement in BigQuery, which triggers a syntax/validation error (e.g., Unexpected keyword NULL). Fixes #<524701452> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>github.com-googleapis-google-cloud-python · 3b79caa8 · 2026-06-18
- 0.0ETVtest: catch expected UserWarning in test_repr_mimebundle_selection_logic (#17717) Assert expected `UserWarning` during the fallback path test in `test_repr_mimebundle_selection_logic`. When testing fallback behavior on `anywidget` failure, `html.repr_mimebundle` emits a warning (`Anywidget mode is not available or failed to load`). This change uses `pytest.warns(UserWarning, match=...)` to handle the warning cleanly in unit tests. Fixes #<534917716> 🦕github.com-googleapis-google-cloud-python · 5d3ca449 · 2026-07-16
- 0.0ETVchore(bigframes): document release procedure using legacylibrarian (#17436) Fixes #<522923981> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>github.com-googleapis-google-cloud-python · 08cc1f65 · 2026-06-12
- 0.0ETVfeat: support gemini-3.x models (#17615) Add support for Gemini 3.1 Flash Lite and 3.5 Flash in BigQuery DataFrames. Fixes #<529825668> 🦕github.com-googleapis-google-cloud-python · 5d0efa3c · 2026-07-01
- 0.0ETVdocs: add project ID to pandas-gbq run sample (#17692) Fixes #<522958409> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>github.com-googleapis-google-cloud-python · bd5d1a4b · 2026-07-13
- 0.0ETVdocs: make landing page quickstart runnable (#17687) docs: make landing page quickstart runnable Fixes #<522955836> 🦕github.com-googleapis-google-cloud-python · fc423c80 · 2026-07-10
- 0.0ETVtest: allow libcst build on Python 3.15 in import-profiler workflow (#17726) This PR resolves a CI failure in the `import-profiler` workflow when building Rust-based dependencies (such as `libcst`) on Python 3.15 (`3.15.0-beta.3`). `pyo3` currently rejects Python 3.15 builds by default because Python 3.15 is newer than PyO3 0.26.0's maximum recognized version (3.14). Setting `PYO3_USE_ABI3_FORWARD_COMPATIBILITY="1"` allows building `libcst` against Python 3.15 using PyO3's stable ABI forward compatibility mode. This matches the existing workaround configuration in [.github/workflows/gapic-generator-tests.yml](file:///.github/workflows/gapic-generator-tests.yml#L25). Fixes #<535231604> 🦕github.com-googleapis-google-cloud-python · 8ed6b71b · 2026-07-15
- 0.0ETVchore: fix 'multimodel' typo to 'multimodal' (#17038) Corrects the typo "multimodel" to "multimodal" across the codebase. This includes internal method names, comments, test functions, and GCS paths in system tests. This aligns the naming with the standard term for models supporting multiple data modalities. Fixes #<issue_number_goes_here> 🦕github.com-googleapis-google-cloud-python · fbcebd8b · 2026-05-12
- 0.0ETVchore: librarian release pull request: 20260608T235726Z (#17403) PR created by the Librarian CLI to initialize a release. Merging this PR will auto trigger a release. Librarian Version: v0.16.0 Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:234b9d1f2ddb057ed7ac6a38db0bf8163d839c65c6cf88ade52530cddebce59e <details><summary>bigframes: v2.42.0</summary> ## [v2.42.0](https://github.com/googleapis/google-cloud-python/compare/bigframes-v2.41.0...bigframes-v2.42.0) (2026-06-08) ### Features * Add ai_generate functions to the dataframe bq accessor (#17302) ([6b62cb6f](https://github.com/googleapis/google-cloud-python/commit/6b62cb6f)) * support automatic per-cell execution history filtering and isolated callbacks (#17144) ([7d440111](https://github.com/googleapis/google-cloud-python/commit/7d440111)) * create `Series.bigquery.function_name` accessors for array and AEAD functions (#17279) ([d01a4ba3](https://github.com/googleapis/google-cloud-python/commit/d01a4ba3)) ### Bug Fixes * include pyopenssl as a dependency (#17362) ([1f6205ee](https://github.com/googleapis/google-cloud-python/commit/1f6205ee)) * Fix IsInOp literal bug with sqlglot (#17356) ([a3d93afe](https://github.com/googleapis/google-cloud-python/commit/a3d93afe)) * nameless column to_frame bug for pandas 3.0 (#17371) ([b23bfa4c](https://github.com/googleapis/google-cloud-python/commit/b23bfa4c)) </details>github.com-googleapis-google-cloud-python · 7141356e · 2026-06-09