Skip to content

Commit

Permalink
feat: add AppendRowsStream to use write API from v1 endpoint (#309)
Browse files Browse the repository at this point in the history
This is just a duplicate of the class in the v1beta2 endpoint.

I see for reads we tried to be clever by using the v1 version from the v1beta2 endpoint, but it would be harder to do with the write API. The `initial_request_template` parameter means that we need to make sure for certain that we are using the generated types for the correct endpoint.

Since "beta" is clearly in the endpoint and import name, I think leaving the v1beta2 writer module as-is, with additional features and fixes only added to v1 makes some sense. Alternatively, we could add some tests to ensure these classes stay in sync?
  • Loading branch information
tswast committed Sep 27, 2021
1 parent a778080 commit 9fc3c08
Show file tree
Hide file tree
Showing 8 changed files with 604 additions and 9 deletions.
4 changes: 4 additions & 0 deletions google/cloud/bigquery_storage_v1/__init__.py
Expand Up @@ -30,6 +30,10 @@ class BigQueryReadClient(client.BigQueryReadClient):
__doc__ = client.BigQueryReadClient.__doc__


class BigQueryWriteClient(client.BigQueryWriteClient):
__doc__ = client.BigQueryWriteClient.__doc__


__all__ = (
# google.cloud.bigquery_storage_v1
"__version__",
Expand Down
5 changes: 5 additions & 0 deletions google/cloud/bigquery_storage_v1/client.py
Expand Up @@ -25,6 +25,7 @@

from google.cloud.bigquery_storage_v1 import reader
from google.cloud.bigquery_storage_v1.services import big_query_read
from google.cloud.bigquery_storage_v1.services import big_query_write


_SCOPES = (
Expand Down Expand Up @@ -135,3 +136,7 @@ def read_rows(
offset,
{"retry": retry, "timeout": timeout, "metadata": metadata},
)


class BigQueryWriteClient(big_query_write.BigQueryWriteClient):
__doc__ = big_query_write.BigQueryWriteClient.__doc__
17 changes: 17 additions & 0 deletions google/cloud/bigquery_storage_v1/exceptions.py
@@ -0,0 +1,17 @@
# 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
#
# 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.


class StreamClosedError(Exception):
"""Operation not supported while stream is closed."""

0 comments on commit 9fc3c08

Please sign in to comment.