From 64fb26a6b08c11e6b95b9fc2bb7c86d7b1d420b8 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Tue, 21 Apr 2026 07:10:54 +0000 Subject: [PATCH 1/6] chore: reformat google-cloud-firestore --- .../google/cloud/firestore_v1/base_pipeline.py | 5 ++--- .../google/cloud/firestore_v1/pipeline_source.py | 4 ++-- .../google/cloud/firestore_v1/pipeline_stages.py | 2 +- .../google-cloud-firestore/tests/system/test__helpers.py | 8 ++++---- .../tests/unit/v1/test_pipeline_stages.py | 4 +++- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/google-cloud-firestore/google/cloud/firestore_v1/base_pipeline.py b/packages/google-cloud-firestore/google/cloud/firestore_v1/base_pipeline.py index 8b864d2f03f5..e0699b59004f 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_v1/base_pipeline.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_v1/base_pipeline.py @@ -14,8 +14,7 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Sequence, TypeVar, Type - +from typing import TYPE_CHECKING, Sequence, Type, TypeVar from google.cloud.firestore_v1 import pipeline_stages as stages from google.cloud.firestore_v1 import pipeline_types as types @@ -26,8 +25,8 @@ BooleanExpression, Expression, Field, - Selectable, FunctionExpression, + Selectable, _PipelineValueExpression, ) from google.cloud.firestore_v1.types.pipeline import ( diff --git a/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_source.py b/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_source.py index faa0ed4b32bd..0dd524c7b97c 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_source.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_source.py @@ -14,11 +14,11 @@ from __future__ import annotations -from typing import Generic, TypeVar, TYPE_CHECKING +from typing import TYPE_CHECKING, Generic, TypeVar from google.cloud.firestore_v1 import pipeline_stages as stages from google.cloud.firestore_v1._helpers import DOCUMENT_PATH_DELIMITER -from google.cloud.firestore_v1.base_pipeline import _BasePipeline, SubPipeline +from google.cloud.firestore_v1.base_pipeline import SubPipeline, _BasePipeline if TYPE_CHECKING: # pragma: NO COVER from google.cloud.firestore_v1.async_client import AsyncClient diff --git a/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_stages.py b/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_stages.py index 8c6160172e58..e72523dc9dae 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_stages.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_stages.py @@ -20,10 +20,10 @@ from google.cloud.firestore_v1._helpers import encode_value from google.cloud.firestore_v1.base_vector_query import DistanceMeasure from google.cloud.firestore_v1.pipeline_expressions import ( + CONSTANT_TYPE, AggregateFunction, AliasedExpression, BooleanExpression, - CONSTANT_TYPE, Expression, Field, Selectable, diff --git a/packages/google-cloud-firestore/tests/system/test__helpers.py b/packages/google-cloud-firestore/tests/system/test__helpers.py index 603be70705d0..83dd476602f2 100644 --- a/packages/google-cloud-firestore/tests/system/test__helpers.py +++ b/packages/google-cloud-firestore/tests/system/test__helpers.py @@ -1,14 +1,14 @@ +import contextlib +import datetime import os import re import time -import datetime -import contextlib +from google.api_core.exceptions import AlreadyExists from test_utils.system import EmulatorCreds, unique_resource_id -from google.cloud.firestore_v1.base_client import _FIRESTORE_EMULATOR_HOST from google.cloud.firestore import SERVER_TIMESTAMP -from google.api_core.exceptions import AlreadyExists +from google.cloud.firestore_v1.base_client import _FIRESTORE_EMULATOR_HOST FIRESTORE_CREDS = os.environ.get("FIRESTORE_APPLICATION_CREDENTIALS") FIRESTORE_PROJECT = os.environ.get("GCLOUD_PROJECT") diff --git a/packages/google-cloud-firestore/tests/unit/v1/test_pipeline_stages.py b/packages/google-cloud-firestore/tests/unit/v1/test_pipeline_stages.py index 064c41c37b70..c926285f462c 100644 --- a/packages/google-cloud-firestore/tests/unit/v1/test_pipeline_stages.py +++ b/packages/google-cloud-firestore/tests/unit/v1/test_pipeline_stages.py @@ -22,9 +22,9 @@ from google.cloud.firestore_v1.base_vector_query import DistanceMeasure from google.cloud.firestore_v1.pipeline_expressions import ( Constant, + DocumentMatches, Field, Ordering, - DocumentMatches, ) from google.cloud.firestore_v1.types.document import Value from google.cloud.firestore_v1.vector import Vector @@ -531,6 +531,7 @@ def test_ctor(self): def test_ctor_extended_types(self): import datetime + from google.cloud.firestore_v1._helpers import GeoPoint from google.cloud.firestore_v1.vector import Vector @@ -568,6 +569,7 @@ def test_repr(self): def test_to_pb_constant_types(self): import datetime + from google.cloud.firestore_v1._helpers import GeoPoint from google.cloud.firestore_v1.vector import Vector From a5279141e0577b916573a51fc790ed3098d3fe85 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Tue, 21 Apr 2026 07:20:03 +0000 Subject: [PATCH 2/6] chore: regenerate google-cloud-firestore with legacylibrarian --- .librarian/state.yaml | 2 +- packages/google-cloud-firestore/README.rst | 4 +- .../google-cloud-firestore/docs/README.rst | 4 +- .../google/cloud/firestore/__init__.py | 36 --------------- .../cloud/firestore_admin_v1/types/field.py | 35 ++++++++++++--- .../firestore_admin_v1/types/operation.py | 10 +++++ .../google/cloud/firestore_v1/__init__.py | 44 +------------------ packages/google-cloud-firestore/mypy.ini | 10 ++--- packages/google-cloud-firestore/noxfile.py | 4 +- .../test_firestore_admin.py | 2 +- 10 files changed, 51 insertions(+), 100 deletions(-) diff --git a/.librarian/state.yaml b/.librarian/state.yaml index 8a115ad86e8e..1401269c7180 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -2312,7 +2312,7 @@ libraries: tag_format: '{id}-v{version}' - id: google-cloud-firestore version: 2.27.0 - last_generated_commit: 59d5f2b46924714af627ac29ea6de78641a00835 + last_generated_commit: a78b5838b801428bfe5b85758727a46d830b7f39 apis: - path: google/firestore/admin/v1 service_config: firestore_v1.yaml diff --git a/packages/google-cloud-firestore/README.rst b/packages/google-cloud-firestore/README.rst index 5947f7aa97eb..cbb1eaa2650f 100644 --- a/packages/google-cloud-firestore/README.rst +++ b/packages/google-cloud-firestore/README.rst @@ -61,14 +61,14 @@ Supported Python Versions Our client libraries are compatible with all current `active`_ and `maintenance`_ versions of Python. -Python >= 3.7, including 3.14 +Python >= 3.9, including 3.14 .. _active: https://devguide.python.org/devcycle/#in-development-main-branch .. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches Unsupported Python Versions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Python <= 3.6 +Python <= 3.8 If you are using an `end-of-life`_ version of Python, we recommend that you update as soon as possible to an actively supported version. diff --git a/packages/google-cloud-firestore/docs/README.rst b/packages/google-cloud-firestore/docs/README.rst index 5947f7aa97eb..cbb1eaa2650f 100644 --- a/packages/google-cloud-firestore/docs/README.rst +++ b/packages/google-cloud-firestore/docs/README.rst @@ -61,14 +61,14 @@ Supported Python Versions Our client libraries are compatible with all current `active`_ and `maintenance`_ versions of Python. -Python >= 3.7, including 3.14 +Python >= 3.9, including 3.14 .. _active: https://devguide.python.org/devcycle/#in-development-main-branch .. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches Unsupported Python Versions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Python <= 3.6 +Python <= 3.8 If you are using an `end-of-life`_ version of Python, we recommend that you update as soon as possible to an actively supported version. diff --git a/packages/google-cloud-firestore/google/cloud/firestore/__init__.py b/packages/google-cloud-firestore/google/cloud/firestore/__init__.py index 04d0cc825cdf..51bd42a5b09f 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore/__init__.py +++ b/packages/google-cloud-firestore/google/cloud/firestore/__init__.py @@ -30,8 +30,6 @@ AsyncClient, AsyncCollectionReference, AsyncDocumentReference, - AsyncPipeline, - AsyncPipelineStream, AsyncQuery, AsyncTransaction, AsyncWriteBatch, @@ -45,31 +43,15 @@ ExistsOption, ExplainOptions, FieldFilter, - FindNearestOptions, GeoPoint, Increment, LastUpdateOption, Maximum, Minimum, Or, - Ordering, - Pipeline, - PipelineDataType, - PipelineExplainOptions, - PipelineResult, - PipelineSnapshot, - PipelineSource, - PipelineStream, Query, ReadAfterWriteError, - SampleOptions, - SearchOptions, - SubPipeline, - TimeGranularity, - TimePart, - TimeUnit, Transaction, - UnnestOptions, Watch, WriteBatch, WriteOption, @@ -86,8 +68,6 @@ "AsyncClient", "AsyncCollectionReference", "AsyncDocumentReference", - "AsyncPipeline", - "AsyncPipelineStream", "AsyncQuery", "async_transactional", "AsyncTransaction", @@ -103,34 +83,18 @@ "ExistsOption", "ExplainOptions", "FieldFilter", - "FindNearestOptions", "GeoPoint", "Increment", "LastUpdateOption", "Maximum", "Minimum", "Or", - "Ordering", - "Pipeline", - "PipelineDataType", - "PipelineExplainOptions", - "PipelineResult", - "PipelineSnapshot", - "PipelineSource", - "PipelineStream", "Query", "ReadAfterWriteError", "SERVER_TIMESTAMP", - "SampleOptions", - "SearchOptions", - "SubPipeline", - "TimeGranularity", - "TimePart", - "TimeUnit", "Transaction", "transactional", "types", - "UnnestOptions", "Watch", "WriteBatch", "WriteOption", diff --git a/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/field.py b/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/field.py index 4ead1b809e2d..044548eda0f4 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/field.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/field.py @@ -17,6 +17,7 @@ from typing import MutableMapping, MutableSequence +import google.protobuf.duration_pb2 as duration_pb2 # type: ignore import proto # type: ignore from google.cloud.firestore_admin_v1.types import index @@ -123,19 +124,34 @@ class TtlConfig(proto.Message): r"""The TTL (time-to-live) configuration for documents that have this ``Field`` set. - Storing a timestamp value into a TTL-enabled field will be treated - as the document's absolute expiration time. For Enterprise edition - databases, the timestamp value may also be stored in an array value - in the TTL-enabled field. + A timestamp stored in a TTL-enabled field will be used to determine + the expiration time of the document. The expiration time is the sum + of the timestamp value and the ``expiration_offset``. - Timestamp values in the past indicate that the document is eligible - for immediate expiration. Using any other data type or leaving the - field absent will disable expiration for the individual document. + For Enterprise edition databases, the timestamp value may + alternatively be stored in an array value in the TTL-enabled field. + + An expiration time in the past indicates that the document is + eligible for immediate expiration. Using any other data type or + leaving the field absent will disable expiration for the individual + document. Attributes: state (google.cloud.firestore_admin_v1.types.Field.TtlConfig.State): Output only. The state of the TTL configuration. + expiration_offset (google.protobuf.duration_pb2.Duration): + Optional. The offset, relative to the timestamp value from + the TTL-enabled field, used to determine the document's + expiration time. + + ``expiration_offset.seconds`` must be between 0 and + 2,147,483,647 inclusive. Values more precise than seconds + are rejected. + + If unset, defaults to 0, in which case the expiration time + is the same as the timestamp value from the TTL-enabled + field. """ class State(proto.Enum): @@ -172,6 +188,11 @@ class State(proto.Enum): number=1, enum="Field.TtlConfig.State", ) + expiration_offset: duration_pb2.Duration = proto.Field( + proto.MESSAGE, + number=3, + message=duration_pb2.Duration, + ) name: str = proto.Field( proto.STRING, diff --git a/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/operation.py b/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/operation.py index 1e14f2fec08f..2592cc043a8e 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/operation.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_admin_v1/types/operation.py @@ -17,6 +17,7 @@ from typing import MutableMapping, MutableSequence +import google.protobuf.duration_pb2 as duration_pb2 # type: ignore import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore import proto # type: ignore @@ -210,6 +211,10 @@ class TtlConfigDelta(proto.Message): change_type (google.cloud.firestore_admin_v1.types.FieldOperationMetadata.TtlConfigDelta.ChangeType): Specifies how the TTL configuration is changing. + expiration_offset (google.protobuf.duration_pb2.Duration): + The offset, relative to the timestamp value + in the TTL-enabled field, used determine the + document's expiration time. """ class ChangeType(proto.Enum): @@ -233,6 +238,11 @@ class ChangeType(proto.Enum): number=1, enum="FieldOperationMetadata.TtlConfigDelta.ChangeType", ) + expiration_offset: duration_pb2.Duration = proto.Field( + proto.MESSAGE, + number=3, + message=duration_pb2.Duration, + ) start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, diff --git a/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py b/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py index 1d87bacc4e85..71768ae8360e 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py @@ -33,7 +33,6 @@ from google.cloud.firestore_v1.async_client import AsyncClient from google.cloud.firestore_v1.async_collection import AsyncCollectionReference from google.cloud.firestore_v1.async_document import AsyncDocumentReference -from google.cloud.firestore_v1.async_pipeline import AsyncPipeline from google.cloud.firestore_v1.async_query import AsyncQuery from google.cloud.firestore_v1.async_transaction import ( AsyncTransaction, @@ -41,36 +40,13 @@ ) from google.cloud.firestore_v1.base_aggregation import CountAggregation from google.cloud.firestore_v1.base_document import DocumentSnapshot -from google.cloud.firestore_v1.base_pipeline import SubPipeline from google.cloud.firestore_v1.base_query import And, FieldFilter, Or from google.cloud.firestore_v1.batch import WriteBatch from google.cloud.firestore_v1.client import Client from google.cloud.firestore_v1.collection import CollectionReference from google.cloud.firestore_v1.document import DocumentReference -from google.cloud.firestore_v1.pipeline import Pipeline -from google.cloud.firestore_v1.pipeline_result import ( - AsyncPipelineStream, - PipelineResult, - PipelineSnapshot, - PipelineStream, -) -from google.cloud.firestore_v1.pipeline_source import PipelineSource -from google.cloud.firestore_v1.pipeline_types import ( - FindNearestOptions, - Ordering, - PipelineDataType, - SampleOptions, - SearchOptions, - TimeGranularity, - TimePart, - TimeUnit, - UnnestOptions, -) from google.cloud.firestore_v1.query import CollectionGroup, Query -from google.cloud.firestore_v1.query_profile import ( - ExplainOptions, - PipelineExplainOptions, -) +from google.cloud.firestore_v1.query_profile import ExplainOptions from google.cloud.firestore_v1.transaction import Transaction, transactional from google.cloud.firestore_v1.transforms import ( DELETE_FIELD, @@ -139,8 +115,6 @@ "AsyncClient", "AsyncCollectionReference", "AsyncDocumentReference", - "AsyncPipeline", - "AsyncPipelineStream", "AsyncQuery", "async_transactional", "AsyncTransaction", @@ -156,34 +130,18 @@ "ExistsOption", "ExplainOptions", "FieldFilter", - "FindNearestOptions", "GeoPoint", "Increment", "LastUpdateOption", "Maximum", "Minimum", "Or", - "Ordering", - "Pipeline", - "PipelineDataType", - "PipelineExplainOptions", - "PipelineResult", - "PipelineSnapshot", - "PipelineSource", - "PipelineStream", "Query", "ReadAfterWriteError", "SERVER_TIMESTAMP", - "SampleOptions", - "SearchOptions", - "SubPipeline", - "TimeGranularity", - "TimePart", - "TimeUnit", "Transaction", "transactional", "types", - "UnnestOptions", "Watch", "WriteBatch", "WriteOption", diff --git a/packages/google-cloud-firestore/mypy.ini b/packages/google-cloud-firestore/mypy.ini index f16b72c620ba..e0e0da2e9e40 100644 --- a/packages/google-cloud-firestore/mypy.ini +++ b/packages/google-cloud-firestore/mypy.ini @@ -3,13 +3,13 @@ python_version = 3.14 namespace_packages = True ignore_missing_imports = False +# TODO(https://github.com/googleapis/gapic-generator-python/issues/2563): +# Dependencies that historically lacks py.typed markers +[mypy-google.iam.*] +ignore_missing_imports = True + # Helps mypy navigate the 'google' namespace more reliably in 3.10+ explicit_package_bases = True # Performance: reuse results from previous runs to speed up 'nox' incremental = True - -# TODO(https://github.com/googleapis/gapic-generator-python/issues/2563): -# Dependencies that historically lacks py.typed markers -[mypy-google.iam.*] -ignore_missing_imports = True diff --git a/packages/google-cloud-firestore/noxfile.py b/packages/google-cloud-firestore/noxfile.py index a7275f9c46e6..588dd7c0058d 100644 --- a/packages/google-cloud-firestore/noxfile.py +++ b/packages/google-cloud-firestore/noxfile.py @@ -71,7 +71,7 @@ SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ALL_PYTHON SYSTEM_TEST_STANDARD_DEPENDENCIES = [ "mock", - "pytest>9.0", + "pytest", "google-cloud-testutils", ] SYSTEM_TEST_EXTERNAL_DEPENDENCIES: List[str] = [ @@ -399,7 +399,6 @@ def system(session): session.run( "py.test", "--quiet", - "-s", f"--junitxml=system_{session.python}_sponge_log.xml", system_test_path, *session.posargs, @@ -408,7 +407,6 @@ def system(session): session.run( "py.test", "--quiet", - "-s", f"--junitxml=system_{session.python}_sponge_log.xml", system_test_folder_path, *session.posargs, diff --git a/packages/google-cloud-firestore/tests/unit/gapic/firestore_admin_v1/test_firestore_admin.py b/packages/google-cloud-firestore/tests/unit/gapic/firestore_admin_v1/test_firestore_admin.py index 5541cbda77fe..899a0e57d3c9 100644 --- a/packages/google-cloud-firestore/tests/unit/gapic/firestore_admin_v1/test_firestore_admin.py +++ b/packages/google-cloud-firestore/tests/unit/gapic/firestore_admin_v1/test_firestore_admin.py @@ -20831,7 +20831,7 @@ def test_update_field_rest_call_success(request_type): "ancestor_field": "ancestor_field_value", "reverting": True, }, - "ttl_config": {"state": 1}, + "ttl_config": {"state": 1, "expiration_offset": {"seconds": 751, "nanos": 543}}, } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency From fc3c0d223c644bd83794bd2c4362eb980093ebef Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Tue, 21 Apr 2026 07:20:38 +0000 Subject: [PATCH 3/6] chore: enable librarian generation of google-cloud-firestore --- librarian.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/librarian.yaml b/librarian.yaml index 9bbc855bf06c..83303f1b9ebf 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -2069,7 +2069,6 @@ libraries: - docs/firestore_v1/transaction.rst - docs/firestore_v1/transforms.rst - docs/firestore_v1/types.rst - skip_generate: true python: library_type: GAPIC_COMBO opt_args_by_api: From 9e26a17d1f92dbf55b8750bc3cc58fd2587b8127 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Tue, 21 Apr 2026 07:21:04 +0000 Subject: [PATCH 4/6] chore: regenerate google-cloud-firestore with librarian --- .../.repo-metadata.json | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/google-cloud-firestore/.repo-metadata.json b/packages/google-cloud-firestore/.repo-metadata.json index b1c39b9a0b07..858bcca32701 100644 --- a/packages/google-cloud-firestore/.repo-metadata.json +++ b/packages/google-cloud-firestore/.repo-metadata.json @@ -1,18 +1,16 @@ { - "name": "firestore", - "name_pretty": "Cloud Firestore API", - "product_documentation": "https://cloud.google.com/firestore", + "api_description": "is a fully-managed NoSQL document database for mobile, web, and server development from Firebase and Google Cloud Platform. It's backed by a multi-region replicated database that ensures once data is committed, it's durable even in the face of unexpected disasters. Not only that, but despite being a distributed database, it's also strongly consistent and offers seamless integration with other Firebase and Google Cloud Platform products, including Google Cloud Functions.", + "api_id": "firestore.googleapis.com", + "api_shortname": "firestore", "client_documentation": "https://cloud.google.com/python/docs/reference/firestore/latest", + "default_version": "v1", + "distribution_name": "google-cloud-firestore", "issue_tracker": "https://issuetracker.google.com/savedsearches/5337669", - "release_level": "stable", "language": "python", "library_type": "GAPIC_COMBO", - "repo": "googleapis/google-cloud-python", - "distribution_name": "google-cloud-firestore", - "api_id": "firestore.googleapis.com", - "requires_billing": true, - "default_version": "v1", - "codeowner_team": "@googleapis/api-firestore @googleapis/api-firestore-partners", - "api_shortname": "firestore", - "api_description": "is a fully-managed NoSQL document database for mobile, web, and server development from Firebase and Google Cloud Platform. It's backed by a multi-region replicated database that ensures once data is committed, it's durable even in the face of unexpected disasters. Not only that, but despite being a distributed database, it's also strongly consistent and offers seamless integration with other Firebase and Google Cloud Platform products, including Google Cloud Functions." -} + "name": "firestore", + "name_pretty": "Cloud Firestore API", + "product_documentation": "https://cloud.google.com/firestore", + "release_level": "stable", + "repo": "googleapis/google-cloud-python" +} \ No newline at end of file From ed7a0956219eb10f03b6f3360992d25187d0ff61 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Wed, 22 Apr 2026 07:16:38 +0000 Subject: [PATCH 5/6] chore: update post-processing script for Firestore --- .../firestore-integration.yaml | 80 ++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/.librarian/generator-input/client-post-processing/firestore-integration.yaml b/.librarian/generator-input/client-post-processing/firestore-integration.yaml index fbaa66ebec56..c57d748c8378 100644 --- a/.librarian/generator-input/client-post-processing/firestore-integration.yaml +++ b/.librarian/generator-input/client-post-processing/firestore-integration.yaml @@ -69,6 +69,7 @@ replacements: from google.cloud.firestore_v1.async_client import AsyncClient from google.cloud.firestore_v1.async_collection import AsyncCollectionReference from google.cloud.firestore_v1.async_document import AsyncDocumentReference + from google.cloud.firestore_v1.async_pipeline import AsyncPipeline from google.cloud.firestore_v1.async_query import AsyncQuery from google.cloud.firestore_v1.async_transaction import ( AsyncTransaction, @@ -76,13 +77,36 @@ replacements: ) from google.cloud.firestore_v1.base_aggregation import CountAggregation from google.cloud.firestore_v1.base_document import DocumentSnapshot + from google.cloud.firestore_v1.base_pipeline import SubPipeline from google.cloud.firestore_v1.base_query import And, FieldFilter, Or from google.cloud.firestore_v1.batch import WriteBatch from google.cloud.firestore_v1.client import Client from google.cloud.firestore_v1.collection import CollectionReference from google.cloud.firestore_v1.document import DocumentReference + from google.cloud.firestore_v1.pipeline import Pipeline + from google.cloud.firestore_v1.pipeline_result import ( + AsyncPipelineStream, + PipelineResult, + PipelineSnapshot, + PipelineStream, + ) + from google.cloud.firestore_v1.pipeline_source import PipelineSource + from google.cloud.firestore_v1.pipeline_types import ( + FindNearestOptions, + Ordering, + PipelineDataType, + SampleOptions, + SearchOptions, + TimeGranularity, + TimePart, + TimeUnit, + UnnestOptions, + ) from google.cloud.firestore_v1.query import CollectionGroup, Query - from google.cloud.firestore_v1.query_profile import ExplainOptions + from google.cloud.firestore_v1.query_profile import ( + ExplainOptions, + PipelineExplainOptions, + ) from google.cloud.firestore_v1.transaction import Transaction, transactional from google.cloud.firestore_v1.transforms import ( DELETE_FIELD, @@ -151,6 +175,8 @@ replacements: "AsyncClient", "AsyncCollectionReference", "AsyncDocumentReference", + "AsyncPipeline", + "AsyncPipelineStream", "AsyncQuery", "async_transactional", "AsyncTransaction", @@ -166,18 +192,34 @@ replacements: "ExistsOption", "ExplainOptions", "FieldFilter", + "FindNearestOptions", "GeoPoint", "Increment", "LastUpdateOption", "Maximum", "Minimum", "Or", + "Ordering", + "Pipeline", + "PipelineDataType", + "PipelineExplainOptions", + "PipelineResult", + "PipelineSnapshot", + "PipelineSource", + "PipelineStream", "Query", "ReadAfterWriteError", "SERVER_TIMESTAMP", + "SampleOptions", + "SearchOptions", + "SubPipeline", + "TimeGranularity", + "TimePart", + "TimeUnit", "Transaction", "transactional", "types", + "UnnestOptions", "Watch", "WriteBatch", "WriteOption", @@ -206,6 +248,8 @@ replacements: AsyncClient, AsyncCollectionReference, AsyncDocumentReference, + AsyncPipeline, + AsyncPipelineStream, AsyncQuery, AsyncTransaction, AsyncWriteBatch, @@ -219,15 +263,31 @@ replacements: ExistsOption, ExplainOptions, FieldFilter, + FindNearestOptions, GeoPoint, Increment, LastUpdateOption, Maximum, Minimum, Or, + Ordering, + Pipeline, + PipelineDataType, + PipelineExplainOptions, + PipelineResult, + PipelineSnapshot, + PipelineSource, + PipelineStream, Query, ReadAfterWriteError, + SampleOptions, + SearchOptions, + SubPipeline, + TimeGranularity, + TimePart, + TimeUnit, Transaction, + UnnestOptions, Watch, WriteBatch, WriteOption, @@ -244,6 +304,8 @@ replacements: "AsyncClient", "AsyncCollectionReference", "AsyncDocumentReference", + "AsyncPipeline", + "AsyncPipelineStream", "AsyncQuery", "async_transactional", "AsyncTransaction", @@ -259,18 +321,34 @@ replacements: "ExistsOption", "ExplainOptions", "FieldFilter", + "FindNearestOptions", "GeoPoint", "Increment", "LastUpdateOption", "Maximum", "Minimum", "Or", + "Ordering", + "Pipeline", + "PipelineDataType", + "PipelineExplainOptions", + "PipelineResult", + "PipelineSnapshot", + "PipelineSource", + "PipelineStream", "Query", "ReadAfterWriteError", "SERVER_TIMESTAMP", + "SampleOptions", + "SearchOptions", + "SubPipeline", + "TimeGranularity", + "TimePart", + "TimeUnit", "Transaction", "transactional", "types", + "UnnestOptions", "Watch", "WriteBatch", "WriteOption", From 2f6be2f3e42a2efe0f678a76e3b090de19d7b09c Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Wed, 22 Apr 2026 07:17:13 +0000 Subject: [PATCH 6/6] chore: regenerate google-cloud-firestore with librarian --- .../google/cloud/firestore/__init__.py | 36 +++++++++++++++ .../google/cloud/firestore_v1/__init__.py | 44 ++++++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/packages/google-cloud-firestore/google/cloud/firestore/__init__.py b/packages/google-cloud-firestore/google/cloud/firestore/__init__.py index 51bd42a5b09f..04d0cc825cdf 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore/__init__.py +++ b/packages/google-cloud-firestore/google/cloud/firestore/__init__.py @@ -30,6 +30,8 @@ AsyncClient, AsyncCollectionReference, AsyncDocumentReference, + AsyncPipeline, + AsyncPipelineStream, AsyncQuery, AsyncTransaction, AsyncWriteBatch, @@ -43,15 +45,31 @@ ExistsOption, ExplainOptions, FieldFilter, + FindNearestOptions, GeoPoint, Increment, LastUpdateOption, Maximum, Minimum, Or, + Ordering, + Pipeline, + PipelineDataType, + PipelineExplainOptions, + PipelineResult, + PipelineSnapshot, + PipelineSource, + PipelineStream, Query, ReadAfterWriteError, + SampleOptions, + SearchOptions, + SubPipeline, + TimeGranularity, + TimePart, + TimeUnit, Transaction, + UnnestOptions, Watch, WriteBatch, WriteOption, @@ -68,6 +86,8 @@ "AsyncClient", "AsyncCollectionReference", "AsyncDocumentReference", + "AsyncPipeline", + "AsyncPipelineStream", "AsyncQuery", "async_transactional", "AsyncTransaction", @@ -83,18 +103,34 @@ "ExistsOption", "ExplainOptions", "FieldFilter", + "FindNearestOptions", "GeoPoint", "Increment", "LastUpdateOption", "Maximum", "Minimum", "Or", + "Ordering", + "Pipeline", + "PipelineDataType", + "PipelineExplainOptions", + "PipelineResult", + "PipelineSnapshot", + "PipelineSource", + "PipelineStream", "Query", "ReadAfterWriteError", "SERVER_TIMESTAMP", + "SampleOptions", + "SearchOptions", + "SubPipeline", + "TimeGranularity", + "TimePart", + "TimeUnit", "Transaction", "transactional", "types", + "UnnestOptions", "Watch", "WriteBatch", "WriteOption", diff --git a/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py b/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py index 71768ae8360e..1d87bacc4e85 100644 --- a/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py +++ b/packages/google-cloud-firestore/google/cloud/firestore_v1/__init__.py @@ -33,6 +33,7 @@ from google.cloud.firestore_v1.async_client import AsyncClient from google.cloud.firestore_v1.async_collection import AsyncCollectionReference from google.cloud.firestore_v1.async_document import AsyncDocumentReference +from google.cloud.firestore_v1.async_pipeline import AsyncPipeline from google.cloud.firestore_v1.async_query import AsyncQuery from google.cloud.firestore_v1.async_transaction import ( AsyncTransaction, @@ -40,13 +41,36 @@ ) from google.cloud.firestore_v1.base_aggregation import CountAggregation from google.cloud.firestore_v1.base_document import DocumentSnapshot +from google.cloud.firestore_v1.base_pipeline import SubPipeline from google.cloud.firestore_v1.base_query import And, FieldFilter, Or from google.cloud.firestore_v1.batch import WriteBatch from google.cloud.firestore_v1.client import Client from google.cloud.firestore_v1.collection import CollectionReference from google.cloud.firestore_v1.document import DocumentReference +from google.cloud.firestore_v1.pipeline import Pipeline +from google.cloud.firestore_v1.pipeline_result import ( + AsyncPipelineStream, + PipelineResult, + PipelineSnapshot, + PipelineStream, +) +from google.cloud.firestore_v1.pipeline_source import PipelineSource +from google.cloud.firestore_v1.pipeline_types import ( + FindNearestOptions, + Ordering, + PipelineDataType, + SampleOptions, + SearchOptions, + TimeGranularity, + TimePart, + TimeUnit, + UnnestOptions, +) from google.cloud.firestore_v1.query import CollectionGroup, Query -from google.cloud.firestore_v1.query_profile import ExplainOptions +from google.cloud.firestore_v1.query_profile import ( + ExplainOptions, + PipelineExplainOptions, +) from google.cloud.firestore_v1.transaction import Transaction, transactional from google.cloud.firestore_v1.transforms import ( DELETE_FIELD, @@ -115,6 +139,8 @@ "AsyncClient", "AsyncCollectionReference", "AsyncDocumentReference", + "AsyncPipeline", + "AsyncPipelineStream", "AsyncQuery", "async_transactional", "AsyncTransaction", @@ -130,18 +156,34 @@ "ExistsOption", "ExplainOptions", "FieldFilter", + "FindNearestOptions", "GeoPoint", "Increment", "LastUpdateOption", "Maximum", "Minimum", "Or", + "Ordering", + "Pipeline", + "PipelineDataType", + "PipelineExplainOptions", + "PipelineResult", + "PipelineSnapshot", + "PipelineSource", + "PipelineStream", "Query", "ReadAfterWriteError", "SERVER_TIMESTAMP", + "SampleOptions", + "SearchOptions", + "SubPipeline", + "TimeGranularity", + "TimePart", + "TimeUnit", "Transaction", "transactional", "types", + "UnnestOptions", "Watch", "WriteBatch", "WriteOption",