From f1d0aef268a1a279f02777a16cdb0330e609adf9 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 5 Nov 2025 10:57:19 +0000 Subject: [PATCH 1/2] chore(librarian): onboard to librarian --- .github/.OwlBot.lock.yaml | 17 ---- .github/.OwlBot.yaml | 18 ----- .github/auto-approve.yml | 3 - .github/release-please.yml | 10 --- .github/release-trigger.yml | 2 - .github/sync-repo-settings.yaml | 52 ------------ .librarian/state.yaml | 10 +++ owlbot.py | 137 -------------------------------- 8 files changed, 10 insertions(+), 239 deletions(-) delete mode 100644 .github/.OwlBot.lock.yaml delete mode 100644 .github/.OwlBot.yaml delete mode 100644 .github/auto-approve.yml delete mode 100644 .github/release-please.yml delete mode 100644 .github/release-trigger.yml delete mode 100644 .github/sync-repo-settings.yaml create mode 100644 .librarian/state.yaml delete mode 100644 owlbot.py diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml deleted file mode 100644 index 51b21a62b7..0000000000 --- a/.github/.OwlBot.lock.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2025 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. -docker: - image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:a7aef70df5f13313ddc027409fc8f3151422ec2a57ac8730fce8fa75c060d5bb -# created: 2025-04-10T17:00:10.042601326Z diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot.yaml deleted file mode 100644 index c379bd3092..0000000000 --- a/.github/.OwlBot.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2021 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. - -docker: - image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - -begin-after-commit-hash: 92006bb3cdc84677aa93c7f5235424ec2b157146 diff --git a/.github/auto-approve.yml b/.github/auto-approve.yml deleted file mode 100644 index 311ebbb853..0000000000 --- a/.github/auto-approve.yml +++ /dev/null @@ -1,3 +0,0 @@ -# https://github.com/googleapis/repo-automation-bots/tree/main/packages/auto-approve -processes: - - "OwlBotTemplateChanges" diff --git a/.github/release-please.yml b/.github/release-please.yml deleted file mode 100644 index 7c2b8d9e8a..0000000000 --- a/.github/release-please.yml +++ /dev/null @@ -1,10 +0,0 @@ -releaseType: python -handleGHRelease: true -extraFiles: - - bigframes/version.py - - third_party/bigframes_vendored/version.py - -branches: - - branch: v1 - handleGHRelease: true - releaseType: python diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml deleted file mode 100644 index 4fbd4aa427..0000000000 --- a/.github/release-trigger.yml +++ /dev/null @@ -1,2 +0,0 @@ -enabled: true -multiScmName: python-bigquery-dataframes diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml deleted file mode 100644 index 80bfd5f951..0000000000 --- a/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,52 +0,0 @@ -# https://github.com/googleapis/repo-automation-bots/tree/main/packages/sync-repo-settings -# Rules for main branch protection -branchProtectionRules: -# Identifies the protection rule pattern. Name of the branch to be protected. -# Defaults to `main` -- pattern: main - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - 'OwlBot Post Processor' - - 'conventionalcommits.org' - - 'cla/google' - - 'docs' - - 'lint' - - 'mypy' - - 'unit (3.9)' - - 'unit (3.10)' - - 'unit (3.11)' - - 'unit (3.12)' - - 'cover' - - 'Kokoro presubmit' - - 'Kokoro windows' -- pattern: v1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - 'OwlBot Post Processor' - - 'conventionalcommits.org' - - 'cla/google' - - 'docs' - - 'lint' - - 'mypy' - - 'unit (3.9)' - - 'unit (3.10)' - - 'unit (3.11)' - - 'unit (3.12)' - - 'cover' - - 'Kokoro presubmit' - - 'Kokoro windows' -permissionRules: - - team: actools-python - permission: admin - - team: actools - permission: admin - - team: api-bigquery-dataframe - permission: push - - team: yoshi-python - permission: push - - team: python-samples-owners - permission: push - - team: python-samples-reviewers - permission: push diff --git a/.librarian/state.yaml b/.librarian/state.yaml new file mode 100644 index 0000000000..ce2bffc148 --- /dev/null +++ b/.librarian/state.yaml @@ -0,0 +1,10 @@ +image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:39628f6e89c9cad27973b9a39a50f7052bec0435ee58c7027b4fa6b655943e31 +libraries: + - id: bigframes + version: 2.28.0 + apis: [] + source_roots: + - . + preserve_regex: [] + remove_regex: [] + tag_format: v{version} diff --git a/owlbot.py b/owlbot.py deleted file mode 100644 index 33dd33a84f..0000000000 --- a/owlbot.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright 2021 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. - -"""This script is used to synthesize generated parts of this library.""" - -import pathlib -import re -import textwrap - -from synthtool import gcp -import synthtool as s -from synthtool.languages import python - -REPO_ROOT = pathlib.Path(__file__).parent.absolute() - -common = gcp.CommonTemplates() - -# ---------------------------------------------------------------------------- -# Add templated files -# ---------------------------------------------------------------------------- -templated_files = common.py_library( - default_python_version="3.10", - unit_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13"], - system_test_python_versions=["3.9", "3.11", "3.12", "3.13"], - cov_level=35, - intersphinx_dependencies={ - "pandas": "https://pandas.pydata.org/pandas-docs/stable/", - "pydata-google-auth": "https://pydata-google-auth.readthedocs.io/en/latest/", - }, -) -s.move( - templated_files, - excludes=[ - # Need a combined LICENSE for all vendored packages. - "LICENSE", - "docs/conf.py", - # Multi-processing note isn't relevant, as bigframes is responsible for - # creating clients, not the end user. - "docs/multiprocessing.rst", - "noxfile.py", - ".pre-commit-config.yaml", - "README.rst", - "CONTRIBUTING.rst", - ".github/release-trigger.yml", - ".github/release-please.yml", - # BigQuery DataFrames manages its own Kokoro cluster for presubmit & continuous tests. - ".kokoro/build.sh", - ".kokoro/continuous/common.cfg", - ".kokoro/presubmit/common.cfg", - # Temporary workaround to update docs job to use python 3.10 - ".github/workflows/docs.yml", - ], -) - -# ---------------------------------------------------------------------------- -# Fixup files -# ---------------------------------------------------------------------------- - -# Encourage sharring all relevant versions in bug reports. -assert 1 == s.replace( # bug_report.md - [".github/ISSUE_TEMPLATE/bug_report.md"], - re.escape("#### Steps to reproduce\n"), - textwrap.dedent( - """ - ```python - import sys - import bigframes - import google.cloud.bigquery - import pandas - import pyarrow - import sqlglot - - print(f"Python: {sys.version}") - print(f"bigframes=={bigframes.__version__}") - print(f"google-cloud-bigquery=={google.cloud.bigquery.__version__}") - print(f"pandas=={pandas.__version__}") - print(f"pyarrow=={pyarrow.__version__}") - print(f"sqlglot=={sqlglot.__version__}") - ``` - - #### Steps to reproduce - """, - ), -) - -# Make sure build includes all necessary files. -assert 1 == s.replace( # MANIFEST.in - ["MANIFEST.in"], - re.escape("recursive-include google"), - "recursive-include third_party/bigframes_vendored *\nrecursive-include bigframes", -) - -# Include JavaScript files for display widgets -assert 1 == s.replace( # MANIFEST.in - ["MANIFEST.in"], - re.escape("recursive-include bigframes *.json *.proto py.typed"), - "recursive-include bigframes *.json *.proto *.js py.typed", -) - -# Include JavaScript and CSS files for display widgets -assert 1 == s.replace( # MANIFEST.in - ["MANIFEST.in"], - re.escape("recursive-include bigframes *.json *.proto *.js py.typed"), - "recursive-include bigframes *.json *.proto *.js *.css py.typed", -) - -# Don't omit `*/core/*.py` when counting test coverages -assert 1 == s.replace( # .coveragerc - [".coveragerc"], - re.escape(" */core/*.py\n"), - "", -) - -# ---------------------------------------------------------------------------- -# Samples templates -# ---------------------------------------------------------------------------- - -python.py_samples(skip_readmes=True) - -# ---------------------------------------------------------------------------- -# Final cleanup -# ---------------------------------------------------------------------------- - -s.shell.run(["nox", "-s", "format"], hide_output=False) -for noxfile in REPO_ROOT.glob("samples/**/noxfile.py"): - s.shell.run(["nox", "-s", "format"], cwd=noxfile.parent, hide_output=False) From fcf4f314a7252e2766e2869fa38bd1348c1b3068 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Fri, 7 Nov 2025 18:44:49 +0000 Subject: [PATCH 2/2] chore: create a release --- .librarian/state.yaml | 3 ++- CHANGELOG.md | 21 +++++++++++++++++++++ bigframes/version.py | 4 ++-- third_party/bigframes_vendored/version.py | 4 ++-- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.librarian/state.yaml b/.librarian/state.yaml index ce2bffc148..c1c8219f4b 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -1,7 +1,8 @@ image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:39628f6e89c9cad27973b9a39a50f7052bec0435ee58c7027b4fa6b655943e31 libraries: - id: bigframes - version: 2.28.0 + version: 2.29.0 + last_generated_commit: "" apis: [] source_roots: - . diff --git a/CHANGELOG.md b/CHANGELOG.md index 1df3ad0f70..2fa61d30b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,27 @@ [1]: https://pypi.org/project/bigframes/#history +## [2.29.0](https://github.com/googleapis/google-cloud-python/compare/bigframes-v2.28.0...bigframes-v2.29.0) (2025-11-07) + + +### Documentation + +* switch API reference docs to pydata theme (#2237) ([9b86dcf87929648bf5ab565dfd46a23b639f01ac](https://github.com/googleapis/google-cloud-python/commit/9b86dcf87929648bf5ab565dfd46a23b639f01ac)) +* update notebook for JSON subfields support in to_pandas_batches() (#2138) ([5663d2a18064589596558af109e915f87d426eb0](https://github.com/googleapis/google-cloud-python/commit/5663d2a18064589596558af109e915f87d426eb0)) + + +### Features + +* support left_index and right_index for merge (#2220) ([da9ba267812c01ffa6fa0b09943d7a4c63b8f187](https://github.com/googleapis/google-cloud-python/commit/da9ba267812c01ffa6fa0b09943d7a4c63b8f187)) +* add bigframes.bigquery.st_regionstats to join raster data from Earth Engine (#2228) ([10ec52f30a0a9c61b9eda9cf4f9bd6aa0cd95db5](https://github.com/googleapis/google-cloud-python/commit/10ec52f30a0a9c61b9eda9cf4f9bd6aa0cd95db5)) +* add DataFrame.resample and Series.resample (#2213) ([c9ca02c5194c8b8e9b940eddd2224efd2ff0d5d9](https://github.com/googleapis/google-cloud-python/commit/c9ca02c5194c8b8e9b940eddd2224efd2ff0d5d9)) + + +### Bug Fixes + +* simplify UnsupportedTypeError message (#2212) ([6c9a18d7e67841c6fe6c1c6f34f80b950815141f](https://github.com/googleapis/google-cloud-python/commit/6c9a18d7e67841c6fe6c1c6f34f80b950815141f)) +* support results with STRUCT and ARRAY columns containing JSON subfields in `to_pandas_batches()` (#2216) ([3d8b17fa5eb9bbfc9e151031141a419f2dc3acb4](https://github.com/googleapis/google-cloud-python/commit/3d8b17fa5eb9bbfc9e151031141a419f2dc3acb4)) + ## [2.28.0](https://github.com/googleapis/python-bigquery-dataframes/compare/v2.27.0...v2.28.0) (2025-11-03) diff --git a/bigframes/version.py b/bigframes/version.py index cf7562a306..d07e9644df 100644 --- a/bigframes/version.py +++ b/bigframes/version.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2.28.0" +__version__ = "2.29.0" # {x-release-please-start-date} -__release_date__ = "2025-11-03" +__release_date__ = "2025-11-07" # {x-release-please-end} diff --git a/third_party/bigframes_vendored/version.py b/third_party/bigframes_vendored/version.py index cf7562a306..d07e9644df 100644 --- a/third_party/bigframes_vendored/version.py +++ b/third_party/bigframes_vendored/version.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2.28.0" +__version__ = "2.29.0" # {x-release-please-start-date} -__release_date__ = "2025-11-03" +__release_date__ = "2025-11-07" # {x-release-please-end}