Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2167 commits
Select commit Hold shift + click to select a range
2e7da69
refactor: add struct_op and sql_scalar_op for the sqlglot compiler (#…
chelsea-lin Oct 27, 2025
ac98938
refactor: add rowkey to the sqlglot compiler (#2202)
chelsea-lin Oct 28, 2025
9b85dff
chore: Migrate minimum_op operator to SQLGlot (#2205)
jialuoo Oct 29, 2025
d169beb
chore: Migrate round_op operator to SQLGlot (#2204)
jialuoo Oct 29, 2025
d348b5e
fix: Improve error handling in blob operations (#2194)
shuoweil Oct 29, 2025
22594e7
refactor: update geo "spec" and split geo ops in ibis compiler (#2208)
tswast Oct 29, 2025
a9a6bdd
feat: support INFORMATION_SCHEMA views in `read_gbq` (#1895)
tswast Oct 30, 2025
5e6e344
docs: update bq_dataframes_llm_output_schema.ipynb (#2004)
ccarpentiere Oct 31, 2025
1d727a7
feat: add bigframes.bigquery.st_simplify (#2210)
tswast Oct 31, 2025
0bbc1ed
refactor: ExecuteResult is reusable, sampleable (#2159)
TrevorBergeron Oct 31, 2025
ac39b01
refactor: rename _apply_unary_ops to _apply_ops_to_sql (#2214)
jialuoo Oct 31, 2025
9567b08
refactor: move main merge logic from df to reshape package (#2217)
sycai Oct 31, 2025
a8072e6
feat: Add Series.dt.day_name (#2218)
TrevorBergeron Oct 31, 2025
78870d8
feat: Polars engine supports std, var (#2215)
TrevorBergeron Oct 31, 2025
319c1ef
fix: Correct connection normalization in blob system tests (#2222)
shuoweil Nov 3, 2025
cc012ac
chore(main): release 2.28.0 (#2199)
release-please[bot] Nov 4, 2025
e706b34
fix: support results with STRUCT and ARRAY columns containing JSON su…
shuoweil Nov 4, 2025
c58dd12
Refactor: Remove duplicate _has_json_arrow_type from loader.py (#2221)
shuoweil Nov 4, 2025
f0eef96
fix: simplify UnsupportedTypeError message (#2212)
tswast Nov 4, 2025
c037df0
refactor: fix remap variable errors for InNode (#2201)
chelsea-lin Nov 4, 2025
613f990
chore: Migrate maximum_op operator to SQLGlot (#2223)
jialuoo Nov 4, 2025
290a63d
refactor: add agg_ops.StdOp, VarOp and PopVarOp for the sqlglot compi…
chelsea-lin Nov 4, 2025
2ad2c02
feat: add DataFrame.resample and Series.resample (#2213)
tswast Nov 4, 2025
6d8f75a
chore: Migrate coalesce_op operator to SQLGlot (#2211)
jialuoo Nov 4, 2025
b463e43
docs: update notebook for JSON subfields support in to_pandas_batches…
shuoweil Nov 4, 2025
85381b0
feat: add bigframes.bigquery.st_regionstats to join raster data from …
tswast Nov 5, 2025
476cac6
chore: Add cleanup step for old UDFs in anonymous dataset (#2171)
jialuoo Nov 6, 2025
6007895
feat: support left_index and right_index for merge (#2220)
sycai Nov 6, 2025
778d1d1
test: re-enable Multimodal tests (#2235)
GarrettWu Nov 6, 2025
6ba8851
docs: switch API reference docs to pydata theme (#2237)
tswast Nov 6, 2025
01a8b93
fix: Correctly iterate over null struct values in ManagedArrowTable (…
chelsea-lin Nov 7, 2025
8b6b789
chore: Migrate arctan2_op operator to SQLGlot (#2226)
jialuoo Nov 10, 2025
bf6f852
chore: Migrate geo_st_difference_op operator to SQLGlot (#2240)
jialuoo Nov 10, 2025
3c917b1
chore: Migrate cosine_distance_op operator to SQLGlot (#2236)
jialuoo Nov 10, 2025
4918685
chore: make labels tests more robust to test order (#2246)
tswast Nov 10, 2025
bef4db1
feat: SQL Cell no longer escapes formatted string values (#2245)
google-labs-jules[bot] Nov 10, 2025
a69afc4
chore(main): release 2.29.0 (#2242)
release-please[bot] Nov 10, 2025
8d85ebf
feat: Add bigframes.pandas.crosstab (#2231)
TrevorBergeron Nov 10, 2025
5a59f59
fix: do not warn with DefaultIndexWarning in partial ordering mode (#…
tswast Nov 10, 2025
40c5b0d
refactor: make sqlglot compile_sql a top-level function (#2244)
chelsea-lin Nov 10, 2025
677af52
feat: Preserve source names better for more readable sql (#2243)
TrevorBergeron Nov 11, 2025
d98e6a9
chore: Migrate fillna_op operator to SQLGlot (#2247)
jialuoo Nov 12, 2025
96dae14
chore: Migrate euclidean_distance_op operator to SQLGlot (#2238)
jialuoo Nov 12, 2025
4567568
refactor: read table with system time for sqlglot compiler (#2252)
chelsea-lin Nov 12, 2025
5cfe8d7
feat: Support builtins funcs for df.agg (#2256)
TrevorBergeron Nov 12, 2025
50c2062
feat: Support mixed scalar-analytic expressions (#2239)
TrevorBergeron Nov 13, 2025
38933d9
feat: pivot_table supports fill_value arg (#2257)
TrevorBergeron Nov 13, 2025
3e4a90e
Refactor: Simplify fillna_op implementation (#2261)
jialuoo Nov 13, 2025
76380a8
chore: Migrate manhattan_distance_op operator to SQLGlot (#2254)
jialuoo Nov 13, 2025
35e2a4e
chore(librarian): onboard to librarian (#2233)
parthea Nov 13, 2025
61f62e5
chore: Migrate geo_st_intersection_op operator to SQLGlot (#2262)
jialuoo Nov 13, 2025
cf4f6a4
refactor: Simplify InNode definition (#2264)
TrevorBergeron Nov 14, 2025
c6d72c9
Refactor: Use sge.func for ML.DISTANCE (#2270)
jialuoo Nov 14, 2025
45891dc
Chore: Migrate geo_st_geogpoint_op operator to SQLGlot (#2266)
jialuoo Nov 14, 2025
33b2aaf
fix: calling info() on empty dataframes no longer leads to errors (#2…
sycai Nov 14, 2025
2f96633
refactor: add ToArrayOp and ArrayReduceOp to the sqlglot compiler (#2…
chelsea-lin Nov 14, 2025
90ad0ff
chore: Bound sqlglot version below 28 (#2275)
TrevorBergeron Nov 18, 2025
4681dd1
feat: use end user credentials for `bigframes.bigquery.ai` functions …
sycai Nov 18, 2025
88a995d
fix: Improve Anywidget pagination and display for unknown row counts …
shuoweil Nov 18, 2025
582a4a9
test: Update test_remote_function_max_instances to expect 0 default (…
TrevorBergeron Nov 18, 2025
4bc3b0a
docs: update docs and tests for Gemini 2.5 models (#2279)
GarrettWu Nov 19, 2025
f29de93
fix: Pass credentials properly for read api instantiation (#2280)
TrevorBergeron Nov 19, 2025
c4bba06
refactor: Remove never_skip_nulls param from window node def (#2273)
TrevorBergeron Nov 19, 2025
7b2a2fe
deps: fix missing CTEs in sqlglot v28 and relax version dependency (#…
chelsea-lin Nov 20, 2025
1b9a025
refactor: add agg_ops.CutOp to the sqlglot compiler (#2268)
chelsea-lin Nov 20, 2025
525d4ff
chore: Migrate GeoStDistanceOp operator to SQLGlot (#2282)
jialuoo Nov 20, 2025
02009a0
docs: use autosummary to split documentation pages (#2251)
tswast Nov 20, 2025
2e2b0cf
refactor: WindowOpNode can create multiple cols (#2284)
TrevorBergeron Nov 21, 2025
38d7052
Fix: Anywidget Table Pagination for Small DataFrames & Improve Displa…
shuoweil Nov 21, 2025
7276a95
refactor: add agg_ops.QcutOp to the sqlglot compiler (#2269)
chelsea-lin Nov 24, 2025
5bbd7c8
feat: add bigquery.json_keys (#2286)
chelsea-lin Nov 24, 2025
25fd63b
refactor: switch RowNumber to 0-based indexing in sqlglot compiler (#…
chelsea-lin Nov 25, 2025
d25fd9c
Chore: Migrate unsafe_pow_op operator to SQLGlot (#2281)
jialuoo Nov 25, 2025
bb5a8fd
refactor: add agg_ops.ProductOp and NuniqueOp to the sqlglot compiler…
chelsea-lin Nov 25, 2025
dd8d171
docs: update API reference to new `dataframes.bigquery.dev` location …
tswast Nov 25, 2025
bf4fc84
docs: fix LogisticRegression docs rendering (#2295)
GarrettWu Nov 25, 2025
2ab20ed
feat: Implement single-column sorting for interactive table widget (#…
shuoweil Nov 26, 2025
3654fcf
chore: Migrate pow_op operator to SQLGlot (#2291)
jialuoo Nov 26, 2025
adf2dd1
feat: Add agg/aggregate methods to windows (#2288)
TrevorBergeron Nov 26, 2025
e4ae9c4
fix: Fix issue with stream upload batch size upload limit (#2290)
TrevorBergeron Nov 26, 2025
6c612e9
refactor: fix ops.StrftimeOp, ops.ToDatetimeOp, ops.ToTimestampOp in …
chelsea-lin Nov 26, 2025
ab62fc1
refactor: fix agg_ops.DiffOp for Datetime and Timestamp (#2296)
chelsea-lin Nov 26, 2025
875e9f7
refactor: fix some string ops in the sqlglot compiler. (#2299)
chelsea-lin Dec 1, 2025
3bf5605
fix: Update max_instances default to reflect actual value (#2302)
jialuoo Dec 2, 2025
4cbaa88
chore: fix librarian release current version (#2305)
GarrettWu Dec 2, 2025
e814882
docs: Add Google Analytics configuration to conf.py (#2301)
tswast Dec 2, 2025
503e031
refactor: Migrate DataFrame display to use IPython's _repr_mimebundle…
shuoweil Dec 2, 2025
4e77332
feat: Allow drop_duplicates over unordered dataframe (#2303)
TrevorBergeron Dec 3, 2025
1b82e68
fix: Fix reset_index level=0 bugs (#2307)
TrevorBergeron Dec 3, 2025
be79099
chore: release 2.30.0 (#2308)
GarrettWu Dec 3, 2025
c0d412b
feat: add 'weekday' property to DatatimeMethod (#2304)
sycai Dec 3, 2025
25b2aca
feat: add `bigframes.bigquery.ml` methods (#2300)
google-labs-jules[bot] Dec 3, 2025
fd08e98
Fix: Defer TableWidget import to prevent ZMQ port conflicts (#2309)
shuoweil Dec 4, 2025
df646ba
chore: Migrate DatetimeToIntegerLabelOp operator to SQLGlot (#2306)
jialuoo Dec 5, 2025
caefdc5
chore: fix pytest crash on pandas 3.0 due to missing SettingWithCopyW…
google-labs-jules[bot] Dec 8, 2025
9715780
chore: fix unit tests on pandas 3.0 (#2317)
tswast Dec 9, 2025
24c2b76
fix: cache DataFrames to temp tables in bigframes.bigquery.ml methods…
tswast Dec 9, 2025
e58cd20
revert: DataFrame display uses IPython's `_repr_mimebundle_` (#2316)
shuoweil Dec 9, 2025
45462a4
chore: Move long-running LLM tests to the large directory (#2323)
google-labs-jules[bot] Dec 10, 2025
5e1741d
chore: librarian release pull request: 20251210T234907Z (#2324)
TrevorBergeron Dec 11, 2025
9a3301e
feat: add fit_predict method to ml unsupervised models (#2320)
GarrettWu Dec 11, 2025
e4f5645
fix: Fix pd.timedelta handling in polars comipler with polars 1.36 (#…
TrevorBergeron Dec 11, 2025
4be4535
fix: Correct DataFrame widget rendering in Colab (#2319)
shuoweil Dec 12, 2025
af851d2
fix: Improve strictness of nan vs None usage (#2326)
TrevorBergeron Dec 12, 2025
277fe33
test: Fix penguins_linear_model_w_global_explain fixture (#2327)
TrevorBergeron Dec 12, 2025
aed3e14
feat: Display custom single index column in anywidget mode (#2311)
shuoweil Dec 12, 2025
e5625ff
test: Make tests work with pandas 3.0 (#2329)
TrevorBergeron Dec 12, 2025
1354937
chore: Add conventional-pre-commit hook (#2322)
tswast Dec 12, 2025
352cc16
docs: Add time series analysis notebook (#2328)
shuoweil Dec 15, 2025
f1b9cb4
feat: Auto-plan complex reduction expressions (#2298)
TrevorBergeron Dec 15, 2025
780b645
refactor: fix some string ops in the sqlglot compiler (part 2) (#2332)
chelsea-lin Dec 16, 2025
0f065c6
refactor: fix some string ops in the sqlglot compiler (part 3) (#2336)
chelsea-lin Dec 17, 2025
e7453fb
Revert "fix: Update max_instances default to reflect actual value (#2…
TrevorBergeron Dec 17, 2025
5338296
docs: update supported pandas APIs documentation links (#2330)
google-labs-jules[bot] Dec 18, 2025
84f2893
chore: make `test_read_gbq_colab_includes_label` more robust to pytho…
tswast Dec 18, 2025
06a1bd0
refactor: Handle special float values and None consistently in sqlglo…
chelsea-lin Dec 19, 2025
dc7f7f8
perf: Improve write api throughput using multiple streams (#2345)
TrevorBergeron Dec 19, 2025
84f175d
refactor: fix SQLGlot doctests on the window, ai, to_json ops (#2341)
chelsea-lin Dec 19, 2025
719f76d
perf: Fragmentize multiple col expressions as one (#2333)
TrevorBergeron Dec 20, 2025
6d35c8e
tests: fix `test_get_formatted_time` from the `humanize` package upgr…
chelsea-lin Dec 22, 2025
8a788bc
refactor: Anywidget Table Styling and Hover Enhancements (#2353)
shuoweil Dec 23, 2025
6c74f9a
refactor: fix group_by compiler with dtype convertions (#2350)
chelsea-lin Dec 23, 2025
238277e
refactor: support sql_predicate when compile readtable in sqlglot (#2…
chelsea-lin Dec 23, 2025
31cbd26
docs: generate sitemap.xml for better search indexing (#2351)
tswast Dec 23, 2025
15ca917
feat: Refactor TableWidget and to_pandas_batches (#2250)
shuoweil Dec 23, 2025
a6712c1
fix: bigframes.ml fit with eval data in partial mode avoids join on n…
google-labs-jules[bot] Dec 23, 2025
1c9f521
feat: display series in anywidget mode (#2346)
shuoweil Dec 23, 2025
4de2609
chore: make api method logging session-scoped (#2347)
google-labs-jules[bot] Dec 23, 2025
5a68f5d
refactor: move inline styles to table_widget.css and use cla… (#2357)
shuoweil Dec 29, 2025
3a36dc5
refactor: use CSS classes in HTML tables (#2358)
shuoweil Dec 29, 2025
965a79b
fix(deps): vendor sqlglot bigquery dialect and remove package depende…
chelsea-lin Jan 2, 2026
6312565
feat: Enable multi-column sorting in anywidget mode (#2360)
shuoweil Jan 2, 2026
fe05a0a
refactor: fix str.extract, blob ops and geo ops compiler (#2362)
chelsea-lin Jan 3, 2026
b2f83ed
chore: create a release (#2363)
tswast Jan 5, 2026
c49595e
feat: Configure Biome for Consistent Code Style (#2364)
shuoweil Jan 5, 2026
d154071
refactor: fix and, or and xor ops on NULL scalar (#2361)
chelsea-lin Jan 6, 2026
759d1f8
chore: remove error message for sqlglot version (#2367)
chelsea-lin Jan 7, 2026
3ffe30c
refactor: fix isin, explode and geo ops for sqlglot compiler (#2366)
chelsea-lin Jan 7, 2026
1abdab0
fix: implement retry logic for cloud function endpoint fetching (#2369)
jialuoo Jan 7, 2026
1a45b03
feat: Add dark mode to anywidget mode (#2365)
shuoweil Jan 7, 2026
5642ec1
chore: remove language from sitemap paths (#2373)
tswast Jan 9, 2026
189c22e
refactor: fix window and numeric/comparison ops for sqlglot compiler …
chelsea-lin Jan 10, 2026
99ccbc6
chore: Migrate BinaryRemoteFunctionOp operator to SQLGlot (#2371)
jialuoo Jan 12, 2026
62a22cc
feat: Add max_columns control for anywidget mode (#2374)
shuoweil Jan 12, 2026
17055a7
test: remove deprecated claude-3-opus tests (#2375)
GarrettWu Jan 12, 2026
edd966b
refactor: move log_adapter.py under logging/ directory (#2376)
sycai Jan 12, 2026
a15557c
feat: Stabilize interactive table height to prevent notebook layout s…
shuoweil Jan 13, 2026
989b496
refactor: adds null literal checks when sqlglot compiling eq and nq o…
chelsea-lin Jan 15, 2026
b00226b
refactor: fix some aggregation ops in the sqlglot compiler (#2382)
chelsea-lin Jan 15, 2026
670b04e
chore: Migrate IntegerLabelToDatetimeOp operator to SQLGlot (#2310)
jialuoo Jan 15, 2026
79ea7e1
chore: Migrate RemoteFunctionOp operator to SQLGlot (#2377)
jialuoo Jan 15, 2026
5209349
feat: Add BigQuery ObjectRef functions to `bigframes.bigquery.obj` (#…
tswast Jan 15, 2026
ea1a001
fix: Throw if write api commit op has stream_errors (#2385)
TrevorBergeron Jan 15, 2026
db33833
chore: define type logging bit masks (#2384)
sycai Jan 16, 2026
7eb5bbb
perf: Avoid requery for some result downsample methods (#2219)
TrevorBergeron Jan 16, 2026
1ebbf12
refactor: fix math numeric_ops for test_series_ufuncs (#2386)
chelsea-lin Jan 21, 2026
561b498
chore: Migrate NaryRemoteFunctionOp operator to SQLGlot (#2387)
jialuoo Jan 21, 2026
d1779b0
chore: deflake the ai generate doc test by skipping it (#2393)
sycai Jan 21, 2026
2f419e8
chore: Add a function to traverse BFET and encode type usage (#2390)
sycai Jan 22, 2026
b33a265
feat: add bigquery.ml.transform function (#2394)
GarrettWu Jan 22, 2026
ed5b118
chore: librarian update image pull request: 20260122T223041Z (#2398)
chelsea-lin Jan 22, 2026
bf54d16
chore: librarian release pull request: 20260122T231714Z (#2402)
chelsea-lin Jan 22, 2026
039c936
feat: add bigquery.ml.generate_text function (#2403)
GarrettWu Jan 26, 2026
1fe63c4
refactor: fix several small presubmit test failures on the SQLGlot co…
chelsea-lin Jan 27, 2026
663ab52
feat: add deprecation warnings for .blob accessor and read_gbq_object…
shuoweil Jan 27, 2026
28f97f2
refactor: fix test_concat_dataframe by de-deuplicating merged ctes in…
chelsea-lin Jan 29, 2026
4e96e44
fix: broken job url (#2411)
jbandoro Jan 29, 2026
f10eed1
feat: add bigquery.create_external_table method (#2415)
GarrettWu Jan 29, 2026
dc89b23
chore: Ignore ai ops in doctests (#2420)
TrevorBergeron Jan 30, 2026
c4eed0a
deps: Remove direct ipywidgets requirement (#2416)
TrevorBergeron Jan 30, 2026
204d865
feat: add bigquery.ml.generate_embedding function (#2422)
GarrettWu Jan 30, 2026
1f1412d
chore: Clean up nox test dependency installs (#2421)
TrevorBergeron Jan 31, 2026
879f235
chore: move bigquery/table.py to bigquery/_operations/table.py (#2423)
GarrettWu Feb 2, 2026
d127a8b
feat: add `bigframes.pandas.options.experiments.sql_compiler` for swi…
chelsea-lin Feb 2, 2026
d0bebee
chore: remove redundant assertions (#2427)
GarrettWu Feb 2, 2026
58a69db
chore: attach type usage to job labels (#2407)
sycai Feb 3, 2026
6a1ddd1
feat: Suppress redundant "Completed" status in progress callback (#2419)
shuoweil Feb 3, 2026
a9a935f
chore: librarian release pull request:20260202T232430Z (#2428)
shuoweil Feb 3, 2026
f6b0cb5
feat: add bigframe.bigquery.load_data function (#2426)
GarrettWu Feb 3, 2026
a557099
feat: add `bigframes.bigquery.ai.generate_embedding` (#2343)
google-labs-jules[bot] Feb 4, 2026
4475fd7
test: skip blob test (#2431)
shuoweil Feb 4, 2026
aa29a00
test: add system tests for bigquery.ml.create_model (#2432)
GarrettWu Feb 5, 2026
a62a7d1
feat: Add a bigframes cell magic for ipython (#2395)
TrevorBergeron Feb 5, 2026
964abf6
feat: add bigquery.ai.generate_text function (#2433)
sycai Feb 5, 2026
5d0ffb8
deps: Drop support for python 3.9 (#2418)
TrevorBergeron Feb 5, 2026
3f0a223
docs: fix cast method shown on public docs (#2436)
GarrettWu Feb 5, 2026
a8f049f
fix: always display the results in the `%%bqsql` cell magics output (…
tswast Feb 6, 2026
7017e82
feat: Disable progress bars in Anywidget mode to reduce notebook clut…
shuoweil Feb 6, 2026
7d239b6
Revert "feat: Disable progress bars in Anywidget mode to reduce noteb…
tswast Feb 6, 2026
fa6f9bc
fix: exlcude gcsfs 2026.2.0 (#2445)
shuoweil Feb 6, 2026
9054fda
tests: Fix global session dependence of astype tests (#2443)
TrevorBergeron Feb 6, 2026
15b2abf
feat: Disable progress bars in Anywidget mode (#2444)
shuoweil Feb 6, 2026
73b3e93
feat: Add bigframes.pandas.col with basic operators (#2405)
TrevorBergeron Feb 6, 2026
3243541
feat: remove redundant "started." messages from progress output (#2440)
tswast Feb 7, 2026
6b81a58
fix: suppress JSONDtypeWarning in Anywidget mode and clean up progres…
shuoweil Feb 7, 2026
2f8fc72
chore: librarian release pull request: 20260207T015024Z (#2446)
shuoweil Feb 7, 2026
b5a394b
docs: Add EXIF metadata extraction example to multimodal notebook (#2…
shuoweil Feb 9, 2026
d766f14
docs: use direct API for audio transcription (#2447)
shuoweil Feb 9, 2026
51fe640
refactor: Define sql nodes and transform (#2438)
TrevorBergeron Feb 10, 2026
bc60fc8
docs: Update multimodal notebook to use public runtime helpers (#2451)
shuoweil Feb 11, 2026
7b57ec6
refactor: add brackets on sqlglot `NOT` expression (#2450)
chelsea-lin Feb 11, 2026
348f22d
feat: add bigquery.ai.generate_table function (#2453)
GarrettWu Feb 11, 2026
ac05f59
feat: Initial support for biglake iceberg tables (#2409)
TrevorBergeron Feb 11, 2026
620ed1b
refactor: Enable `SELECT *` optimization in the sqlglot compiler (#2430)
chelsea-lin Feb 11, 2026
3b336e0
refactor: ensure only valid IDs are propagated in identifier remappin…
chelsea-lin Feb 11, 2026
7caf8ce
docs: fix generate_text and generate_table input docs (#2455)
GarrettWu Feb 12, 2026
046b82f
chore: librarian update image pull request: 20260210T185352Z (#2449)
tswast Feb 12, 2026
6e9d60e
docs: use direct API for pdf chunk and pdf extract (#2452)
shuoweil Feb 12, 2026
c2eda3e
docs: update multimodal dataframe notebook to use public APIs (#2456)
shuoweil Feb 13, 2026
8c8fe53
refactor: migrate compile_random_sample for sqlglot (#2454)
chelsea-lin Feb 13, 2026
9660357
chore: Update project links for pypi (#2459)
TrevorBergeron Feb 17, 2026
0addff9
refactor: add table aliases to prevent ambiguity in SQLGlotIR (#2458)
chelsea-lin Feb 17, 2026
0ce08bd
chore: librarian release pull request: 20260217T233413Z (#2461)
sycai Feb 18, 2026
9ae0c8a
docs: Add code examples to configuration docstrings (#2352)
google-labs-jules[bot] Feb 18, 2026
6d85df3
chore: replace old partner teams with updated names (#2462)
suztomo Feb 18, 2026
9c33ed4
feat: Update bigquery.ai.generate_table output_schema to allow Mappin…
GarrettWu Feb 18, 2026
0d77a49
refactor: Decorator to take docs rather than inheritance (#2467)
TrevorBergeron Feb 19, 2026
5ee88ab
chore: fix udf text dedent format (#2468)
GarrettWu Feb 19, 2026
004e3c6
fix: allow IsInOp with same dtypes regardless nullable (#2466)
chelsea-lin Feb 20, 2026
7efdf35
feat: add dt.tz_localize() (#2469)
sycai Feb 20, 2026
9a6bd4f
docs: Skip inherited methods, use autosummary only for big classes (#…
TrevorBergeron Feb 20, 2026
5b143c3
docs: Move readme content to new User Guide section (#2464)
TrevorBergeron Feb 20, 2026
86d9216
docs: add bigframes default connection warning (#2471)
GarrettWu Feb 23, 2026
222cddb
feat: Support pd.col expressions with .loc and getitem (#2473)
TrevorBergeron Feb 23, 2026
79d47c3
docs: use direct API for image (#2465)
shuoweil Feb 23, 2026
afe8c7c
chore: deprecate Claude 3.5 in the codebase (#2472)
sycai Feb 23, 2026
267d86d
docs: add code sample and docstring for bpd.options.experiments.sql_c…
tswast Feb 24, 2026
f6e45d2
test: Fix prerelease and pandas 3.0 test compat (#2457)
TrevorBergeron Feb 24, 2026
3d89348
feat: add support for Python 3.14 (#2232)
parthea Feb 24, 2026
e79e449
chore: Migrate gsutil usage to gcloud storage (#2412)
bhandarivijay-png Feb 25, 2026
514eb5f
tests: remove gemini 2.0 exp model tests, move llm tests to large sui…
GarrettWu Feb 26, 2026
a3bd839
feat: add display.render_mode to control DataFrame/Series visualizati…
shuoweil Feb 26, 2026
cbfc415
chore: modularize GEMINI.md file (#2479)
GarrettWu Feb 26, 2026
660ba94
docs: Fix recall_score doc example (#2477)
TrevorBergeron Feb 27, 2026
1ac793b
fix: upload local data through write API if nested JSONs detected (#2…
chelsea-lin Feb 27, 2026
62d8641
tests: add multimodal snippets tests (#2476)
GarrettWu Feb 27, 2026
5ee7992
refactor: remove the googlesql module (#2482)
chelsea-lin Mar 2, 2026
88178f2
chore: clean up remaining python 3.9 support codes (#2486)
chelsea-lin Mar 2, 2026
d875e13
feat: Support pd.col simple aggregates (#2480)
TrevorBergeron Mar 2, 2026
3c9d3f7
feat: Add cloud_function_cpus option to remote_function (#2475)
TrevorBergeron Mar 2, 2026
6a37760
chore: librarian update image pull request: 20260303T000950Z (#2487)
chelsea-lin Mar 3, 2026
72b1c96
chore: librarian release pull request: 20260303T181914Z (#2489)
chelsea-lin Mar 4, 2026
c62cfd9
test: align remote function ingress with new GCP policies (#2490)
chelsea-lin Mar 4, 2026
24bb505
refactor: decouple SQL building logic from sqlglot_ir (#2491)
chelsea-lin Mar 4, 2026
e8f57ba
feat: Add str, dt accessors to pd.col Expression objects (#2488)
TrevorBergeron Mar 4, 2026
d03d1da
feat: add bigquery.ml.get_insights function (#2493)
GarrettWu Mar 5, 2026
10f6992
chore(deps): bump @tootallnate/once and jest-environment-jsdom in /te…
dependabot[bot] Mar 6, 2026
b0bdc17
Merge remote-tracking branch 'remote.googleapis/python-bigquery-dataf…
parthea Mar 9, 2026
ca38589
Trigger owlbot post-processor
parthea Mar 9, 2026
2d9061b
build: bigframes migration: adjust owlbot-related files
parthea Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Empty file.
38 changes: 38 additions & 0 deletions packages/bigframes/.coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
#
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Generated by synthtool. DO NOT EDIT!
[run]
branch = True
omit =
google/__init__.py
google/cloud/__init__.py

[report]
fail_under = 35
show_missing = True
exclude_lines =
# Re-enable the standard pragma
pragma: NO COVER
# Ignore debug-only repr
def __repr__
# Ignore abstract methods
raise NotImplementedError
omit =
*/gapic/*.py
*/proto/*.py
*/site-packages/*.py
google/cloud/__init__.py
33 changes: 33 additions & 0 deletions packages/bigframes/.flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
#
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Generated by synthtool. DO NOT EDIT!
[flake8]
ignore = E203, E231, E266, E501, W503
exclude =
# Exclude generated code.
**/proto/**
**/gapic/**
**/services/**
**/types/**
*_pb2.py

# Standard linting exemptions.
**/.nox/**
__pycache__,
.git,
*.pyc,
conf.py
8 changes: 8 additions & 0 deletions packages/bigframes/.gemini/common/constraints.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## Constraints

- Only add git commits. Do not change git history.
- Follow the spec file for development.
- Check off items in the "Acceptance
criteria" and "Detailed steps" sections with `[x]`.
- Please do this as they are completed.
- Refer back to the spec after each step.
9 changes: 9 additions & 0 deletions packages/bigframes/.gemini/common/docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Documentation

If a method or property is implementing the same interface as a third-party
package such as pandas or scikit-learn, place the relevant docstring in the
corresponding `third_party/bigframes_vendored/package_name` directory, not in
the `bigframes` directory. Implementations may be placed in the `bigframes`
directory, though.

@../tools/test_docs.md
67 changes: 67 additions & 0 deletions packages/bigframes/.gemini/tasks/scalar_op.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
## Adding a scalar operator

For an example, see commit
[c5b7fdae74a22e581f7705bc0cf5390e928f4425](https://github.com/googleapis/python-bigquery-dataframes/commit/c5b7fdae74a22e581f7705bc0cf5390e928f4425).

To add a new scalar operator, follow these steps:

1. **Define the operation dataclass:**
- In `bigframes/operations/`, find the relevant file (e.g., `geo_ops.py` for geography functions) or create a new one.
- Create a new dataclass inheriting from `base_ops.UnaryOp` for unary
operators, `base_ops.BinaryOp` for binary operators, `base_ops.TernaryOp`
for ternary operators, or `base_ops.NaryOp for operators with many
arguments. Note that these operators are counting the number column-like
arguments. A function that takes only a single column but several literal
values would still be a `UnaryOp`.
- Define the `name` of the operation and any parameters it requires.
- Implement the `output_type` method to specify the data type of the result.

2. **Export the new operation:**
- In `bigframes/operations/__init__.py`, import your new operation dataclass and add it to the `__all__` list.

3. **Implement the user-facing function (pandas-like):**

- Identify the canonical function from pandas / geopandas / awkward array /
other popular Python package that this operator implements.
- Find the corresponding class in BigFrames. For example, the implementation
for most geopandas.GeoSeries methods is in
`bigframes/geopandas/geoseries.py`. Pandas Series methods are implemented
in `bigframes/series.py` or one of the accessors, such as `StringMethods`
in `bigframes/operations/strings.py`.
- Create the user-facing function that will be called by users (e.g., `length`).
- If the SQL method differs from pandas or geopandas in a way that can't be
made the same, raise a `NotImplementedError` with an appropriate message and
link to the feedback form.
- Add the docstring to the corresponding file in
`third_party/bigframes_vendored`, modeled after pandas / geopandas.

4. **Implement the user-facing function (SQL-like):**

- In `bigframes/bigquery/_operations/`, find the relevant file (e.g., `geo.py`) or create a new one.
- Create the user-facing function that will be called by users (e.g., `st_length`).
- This function should take a `Series` for any column-like inputs, plus any other parameters.
- Inside the function, call `series._apply_unary_op`,
`series._apply_binary_op`, or similar passing the operation dataclass you
created.
- Add a comprehensive docstring with examples.
- In `bigframes/bigquery/__init__.py`, import your new user-facing function and add it to the `__all__` list.

5. **Implement the compilation logic:**
- In `bigframes/core/compile/scalar_op_compiler.py`:
- If the BigQuery function has a direct equivalent in Ibis, you can often reuse an existing Ibis method.
- If not, define a new Ibis UDF using `@ibis_udf.scalar.builtin` to map to the specific BigQuery function signature.
- Create a new compiler implementation function (e.g., `geo_length_op_impl`).
- Register this function to your operation dataclass using `@scalar_op_compiler.register_unary_op` or `@scalar_op_compiler.register_binary_op`.
- This implementation will translate the BigQuery DataFrames operation into the appropriate Ibis expression.

6. **Add Tests:**
- Add system tests in the `tests/system/` directory to verify the end-to-end
functionality of the new operator. Test various inputs, including edge cases
and `NULL` values.

Where possible, run the same test code against pandas or GeoPandas and
compare that the outputs are the same (except for dtypes if BigFrames
differs from pandas).
- If you are overriding a pandas or GeoPandas property, add a unit test to
ensure the correct behavior (e.g., raising `NotImplementedError` if the
functionality is not supported).
18 changes: 18 additions & 0 deletions packages/bigframes/.gemini/tools/style_nox.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## Code Style with nox

- We use the automatic code formatter `black`. You can run it using
the nox session `format`. This will eliminate many lint errors. Run via:

```bash
nox -r -s format
```

- PEP8 compliance is required, with exceptions defined in the linter configuration.
If you have ``nox`` installed, you can test that you have not introduced
any non-compliant code via:

```
nox -r -s lint
```

- When writing tests, use the idiomatic "pytest" style.
10 changes: 10 additions & 0 deletions packages/bigframes/.gemini/tools/test_docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Testing code samples

Code samples are very important for accurate documentation. We use the "doctest"
framework to ensure the samples are functioning as expected. After adding a code
sample, please ensure it is correct by running doctest. To run the samples
doctests for just a single method, refer to the following example:

```bash
pytest --doctest-modules bigframes/pandas/__init__.py::bigframes.pandas.cut
```
28 changes: 28 additions & 0 deletions packages/bigframes/.gemini/tools/test_nox.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Testing with nox

Use `nox` to instrument our tests.

- To test your changes, run unit tests with `nox`:

```bash
nox -r -s unit
```

- To run a single unit test:

```bash
nox -r -s unit-3.14 -- -k <name of test>
```

- Ignore this step if you lack access to Google Cloud resources. To run system
tests, you can execute::

# Run all system tests
$ nox -r -s system

# Run a single system test
$ nox -r -s system-3.14 -- -k <name of test>

- The codebase must have better coverage than it had previously after each
change. You can test coverage via `nox -s unit system cover` (takes a long
time). Omit `system` if you lack access to cloud resources.
9 changes: 9 additions & 0 deletions packages/bigframes/.gemini/tools/test_pytest.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Testing with pytest

Use `pytest` to instrument our tests.

- To test your changes, run `pytest`:

```bash
pytest <test_file>::<test_case>
```
70 changes: 70 additions & 0 deletions packages/bigframes/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
*.py[cod]
*.sw[op]

# C extensions
*.so

# Packages
*.egg
*.egg-info
dist
build
eggs
.eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
__pycache__

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.nox
.cache
.pytest_cache


# Mac
.DS_Store

# JetBrains
.idea

# VS Code
.vscode

# emacs
*~

# Built documentation
docs/_build
bigquery/docs/generated
docs.metadata

# Virtual environment
env/
venv/

# Test logs
coverage.xml
*sponge_log.xml

# System test environment variables.
system_tests/local_test_setup
tests/js/node_modules/

# Make sure a generated file isn't accidentally committed.
pylintrc
pylintrc.test
dummy.pkl
.mypy_cache/

# Gemini
GEMINI.md
7 changes: 7 additions & 0 deletions packages/bigframes/.isort.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[settings]
profile=black
force_sort_within_sections=True
lexicographical=True
single_line_exclusions=('typing',)
order_by_type=False
group_by_package=True
11 changes: 11 additions & 0 deletions packages/bigframes/.librarian/state.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:160860d189ff1c2f7515638478823712fa5b243e27ccc33a2728669fa1e2ed0c
libraries:
- id: bigframes
version: 2.37.0
last_generated_commit: ""
apis: []
source_roots:
- .
preserve_regex: []
remove_regex: []
tag_format: v{version}
59 changes: 59 additions & 0 deletions packages/bigframes/.pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
default_install_hook_types:
- pre-commit
- commit-msg

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
exclude: "^tests/unit/core/compile/sqlglot/.*snapshots"
- id: check-yaml
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
name: isort (python)
- repo: https://github.com/psf/black
rev: 23.7.0
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 7.1.2
hooks:
- id: flake8
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.15.0
hooks:
- id: mypy
additional_dependencies: [types-requests, types-tabulate, types-PyYAML, pandas-stubs<=2.2.3.241126]
exclude: "^third_party"
args: ["--check-untyped-defs", "--explicit-package-bases", "--ignore-missing-imports"]
- repo: https://github.com/biomejs/pre-commit
rev: v2.2.4
hooks:
- id: biome-check
files: '\.(js|css)$'
- repo: https://github.com/compilerla/conventional-pre-commit
rev: fdde5f0251edbfc554795afdd6df71826d6602f3
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
args: []
16 changes: 16 additions & 0 deletions packages/bigframes/.repo-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "bigframes",
"name_pretty": "A unified Python API in BigQuery",
"product_documentation": "https://cloud.google.com/bigquery",
"client_documentation": "https://cloud.google.com/python/docs/reference/bigframes/latest",
"issue_tracker": "https://github.com/googleapis/python-bigquery-dataframes/issues",
"release_level": "preview",
"language": "python",
"library_type": "INTEGRATION",
"repo": "googleapis/python-bigquery-dataframes",
"distribution_name": "bigframes",
"api_id": "bigquery.googleapis.com",
"default_version": "",
"codeowner_team": "@googleapis/bigquery-dataframe-team",
"api_shortname": "bigquery"
}
Loading
Loading