From f0bdfefcd12dbccc5235594e0117b59d175d8092 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 19 Nov 2025 04:20:28 +0000 Subject: [PATCH 1/3] chore(librarian): onboard to librarian --- .github/.OwlBot.lock.yaml | 17 - .github/.OwlBot.yaml | 28 - .github/auto-approve.yml | 3 - .github/release-please.yml | 12 - .github/release-trigger.yml | 2 - .github/sync-repo-settings.yaml | 58 -- .../generator-input/.repo-metadata.json | 80 +++ .../generator-input/librarian.py | 129 ++-- .librarian/generator-input/noxfile.py | 569 ++++++++++++++++++ .librarian/generator-input/setup.py | 104 ++++ .librarian/state.yaml | 38 ++ .release-please-manifest.json | 3 - release-please-config.json | 22 - 13 files changed, 833 insertions(+), 232 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/generator-input/.repo-metadata.json rename owlbot.py => .librarian/generator-input/librarian.py (70%) create mode 100644 .librarian/generator-input/noxfile.py create mode 100644 .librarian/generator-input/setup.py create mode 100644 .librarian/state.yaml delete mode 100644 .release-please-manifest.json delete mode 100644 release-please-config.json diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml deleted file mode 100644 index 9a7846675..000000000 --- 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:4a9e5d44b98e8672e2037ee22bc6b4f8e844a2d75fcb78ea8a4b38510112abc6 -# created: 2025-10-07 diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot.yaml deleted file mode 100644 index fe2f7841a..000000000 --- a/.github/.OwlBot.yaml +++ /dev/null @@ -1,28 +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 - -deep-remove-regex: - - /owl-bot-staging - -deep-copy-regex: - - source: /google/bigtable/admin/(v.*)/.*-py/(.*) - dest: /owl-bot-staging/bigtable_admin/$1/$2 - - source: /google/bigtable/(v.*)/.*-py/(.*) - dest: /owl-bot-staging/bigtable/$1/$2 - -begin-after-commit-hash: a21f1091413a260393548c1b2ac44b7347923f08 - diff --git a/.github/auto-approve.yml b/.github/auto-approve.yml deleted file mode 100644 index 311ebbb85..000000000 --- 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 593e83f9f..000000000 --- a/.github/release-please.yml +++ /dev/null @@ -1,12 +0,0 @@ -releaseType: python -handleGHRelease: true -# NOTE: this section is generated by synthtool.languages.python -# See https://github.com/googleapis/synthtool/blob/master/synthtool/languages/python.py -manifest: true -branches: -- branch: v1 - handleGHRelease: true - releaseType: python -- branch: v0 - handleGHRelease: true - releaseType: python diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml deleted file mode 100644 index 0bbdd8e4c..000000000 --- a/.github/release-trigger.yml +++ /dev/null @@ -1,2 +0,0 @@ -enabled: true -multiScmName: python-bigtable diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml deleted file mode 100644 index 14e32d6fc..000000000 --- a/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# Whether or not rebase-merging is enabled on this repository. -# Defaults to `true` -rebaseMergeAllowed: true - -# Whether or not squash-merging is enabled on this repository. -# Defaults to `true` -squashMergeAllowed: true - -# Whether or not PRs are merged with a merge commit on this repository. -# Defaults to `false` -mergeCommitAllowed: false - -# Rules for main branch protection -branchProtectionRules: -# Identifies the protection rule pattern. Name of the branch to be protected. -# Defaults to `main` -- pattern: main - # Can admins overwrite branch protection. - # Defaults to `true` - isAdminEnforced: true - # Number of approving reviews required to update matching branches. - # Defaults to `1` - requiredApprovingReviewCount: 1 - # Are reviews from code owners required to update matching branches. - # Defaults to `false` - requiresCodeOwnerReviews: true - # Require up to date branches - requiresStrictStatusChecks: false - # List of required status check contexts that must pass for commits to be accepted to matching branches. - requiredStatusCheckContexts: - - 'Kokoro' - - 'Kokoro system' - - 'cla/google' - - 'OwlBot Post Processor' - - 'lint' - - 'mypy' - - 'docs' - - 'docfx' - - 'unit-3.9' - - 'unit-3.10' - - 'unit-3.11' - - 'unit-3.12' - - 'unit-3.13' - - 'unit-3.14' -# List of explicit permissions to add (additive only) -permissionRules: - # Team slug to add to repository permissions - - team: yoshi-admins - # Access level required, one of push|pull|admin|maintain|triage - permission: admin - # Team slug to add to repository permissions - - team: yoshi-python-admins - # Access level required, one of push|pull|admin|maintain|triage - permission: admin - # Team slug to add to repository permissions - - team: yoshi-python - # Access level required, one of push|pull|admin|maintain|triage - permission: push diff --git a/.librarian/generator-input/.repo-metadata.json b/.librarian/generator-input/.repo-metadata.json new file mode 100644 index 000000000..9de4b5f92 --- /dev/null +++ b/.librarian/generator-input/.repo-metadata.json @@ -0,0 +1,80 @@ +{ + "name": "bigtable", + "name_pretty": "Cloud Bigtable", + "product_documentation": "https://cloud.google.com/bigtable", + "client_documentation": "https://cloud.google.com/python/docs/reference/bigtable/latest", + "issue_tracker": "https://issuetracker.google.com/savedsearches/559777", + "release_level": "stable", + "language": "python", + "library_type": "GAPIC_COMBO", + "repo": "googleapis/python-bigtable", + "distribution_name": "google-cloud-bigtable", + "api_id": "bigtable.googleapis.com", + "requires_billing": true, + "samples": [ + { + "name": "Hello World in Cloud Bigtable", + "description": "Demonstrates how to connect to Cloud Bigtable and run some basic operations. More information available at: https://cloud.google.com/bigtable/docs/samples-python-hello", + "file": "main.py", + "runnable": true, + "custom_content": "
usage: main.py [-h] [--table TABLE] project_id instance_id
Demonstrates how to connect to Cloud Bigtable and run some basic operations.
Prerequisites: - Create a Cloud Bigtable cluster.
https://cloud.google.com/bigtable/docs/creating-cluster - Set your Google
Application Default Credentials.
https://developers.google.com/identity/protocols/application-default-
credentials


positional arguments:
  project_id     Your Cloud Platform project ID.
  instance_id    ID of the Cloud Bigtable instance to connect to.


optional arguments:
  -h, --help     show this help message and exit
  --table TABLE  Table to create and destroy. (default: Hello-Bigtable)
", + "override_path": "hello" + }, + { + "name": "Hello World using HappyBase", + "description": "This sample demonstrates using the Google Cloud Client Library HappyBase package, an implementation of the HappyBase API to connect to and interact with Cloud Bigtable. More information available at: https://cloud.google.com/bigtable/docs/samples-python-hello-happybase", + "file": "main.py", + "runnable": true, + "custom_content": "
usage: main.py [-h] [--table TABLE] project_id instance_id
Demonstrates how to connect to Cloud Bigtable and run some basic operations.
Prerequisites: - Create a Cloud Bigtable cluster.
https://cloud.google.com/bigtable/docs/creating-cluster - Set your Google
Application Default Credentials.
https://developers.google.com/identity/protocols/application-default-
credentials


positional arguments:
  project_id     Your Cloud Platform project ID.
  instance_id    ID of the Cloud Bigtable instance to connect to.


optional arguments:
  -h, --help     show this help message and exit
  --table TABLE  Table to create and destroy. (default: Hello-Bigtable)
", + "override_path": "hello_happybase" + }, + { + "name": "cbt Command Demonstration", + "description": "This page explains how to use the cbt command to connect to a Cloud Bigtable instance, perform basic administrative tasks, and read and write data in a table. More information about this quickstart is available at https://cloud.google.com/bigtable/docs/quickstart-cbt", + "file": "instanceadmin.py", + "runnable": true, + "custom_content": "
usage: instanceadmin.py [-h] [run] [dev-instance] [del-instance] [add-cluster] [del-cluster] project_id instance_id cluster_id
Demonstrates how to connect to Cloud Bigtable and run some basic operations.
Prerequisites: - Create a Cloud Bigtable cluster.
https://cloud.google.com/bigtable/docs/creating-cluster - Set your Google
Application Default Credentials.
https://developers.google.com/identity/protocols/application-default-
credentials


positional arguments:
  project_id     Your Cloud Platform project ID.
  instance_id    ID of the Cloud Bigtable instance to connect to.


optional arguments:
  -h, --help     show this help message and exit
  --table TABLE  Table to create and destroy. (default: Hello-Bigtable)
", + "override_path": "instanceadmin" + }, + { + "name": "Metric Scaler", + "description": "This sample demonstrates how to use Stackdriver Monitoring to scale Cloud Bigtable based on CPU usage.", + "file": "metricscaler.py", + "runnable": true, + "custom_content": "
usage: metricscaler.py [-h] [--high_cpu_threshold HIGH_CPU_THRESHOLD] [--low_cpu_threshold LOW_CPU_THRESHOLD] [--short_sleep SHORT_SLEEP] [--long_sleep LONG_SLEEP] bigtable_instance bigtable_cluster
usage: metricscaler.py [-h] [--high_cpu_threshold HIGH_CPU_THRESHOLD]
                       [--low_cpu_threshold LOW_CPU_THRESHOLD]
                       [--short_sleep SHORT_SLEEP] [--long_sleep LONG_SLEEP]
                       bigtable_instance bigtable_cluster


Scales Cloud Bigtable clusters based on CPU usage.


positional arguments:
  bigtable_instance     ID of the Cloud Bigtable instance to connect to.
  bigtable_cluster      ID of the Cloud Bigtable cluster to connect to.


optional arguments:
  -h, --help            show this help message and exit
  --high_cpu_threshold HIGH_CPU_THRESHOLD
                        If Cloud Bigtable CPU usage is above this threshold,
                        scale up
  --low_cpu_threshold LOW_CPU_THRESHOLD
                        If Cloud Bigtable CPU usage is below this threshold,
                        scale down
  --short_sleep SHORT_SLEEP
                        How long to sleep in seconds between checking metrics
                        after no scale operation
  --long_sleep LONG_SLEEP
                        How long to sleep in seconds between checking metrics
                        after a scaling operation
", + "override_path": "metricscaler" + }, + { + "name": "Quickstart", + "description": "Demonstrates of Cloud Bigtable. This sample creates a Bigtable client, connects to an instance and then to a table, then closes the connection.", + "file": "main.py", + "runnable": true, + "custom_content": "
usage: main.py [-h] [--table TABLE] project_id instance_id 


positional arguments:
  project_id     Your Cloud Platform project ID.
  instance_id    ID of the Cloud Bigtable instance to connect to.


optional arguments:
  -h, --help     show this help message and exit
  --table TABLE  Existing table used in the quickstart. (default: my-table)
", + "override_path": "quickstart" + }, + { + "name": "Quickstart using HappyBase", + "description": "Demonstrates of Cloud Bigtable using HappyBase. This sample creates a Bigtable client, connects to an instance and then to a table, then closes the connection.", + "file": "main.py", + "runnable": true, + "custom_content": "
usage: main.py [-h] [--table TABLE] project_id instance_id
usage: main.py [-h] [--table TABLE] project_id instance_id


positional arguments:
  project_id     Your Cloud Platform project ID.
  instance_id    ID of the Cloud Bigtable instance to connect to.


optional arguments:
  -h, --help     show this help message and exit
  --table TABLE  Existing table used in the quickstart. (default: my-table)usage: tableadmin.py [-h] [run] [delete] [--table TABLE] project_id instance_id


Demonstrates how to connect to Cloud Bigtable and run some basic operations.
Prerequisites: - Create a Cloud Bigtable cluster.
https://cloud.google.com/bigtable/docs/creating-cluster - Set your Google
Application Default Credentials.
https://developers.google.com/identity/protocols/application-default-
credentials


positional arguments:
  project_id     Your Cloud Platform project ID.
  instance_id    ID of the Cloud Bigtable instance to connect to.


optional arguments:
  -h, --help     show this help message and exit
  --table TABLE  Table to create and destroy. (default: Hello-Bigtable)
", + "override_path": "tableadmin" + } + ], + "default_version": "v2", + "codeowner_team": "@googleapis/api-bigtable @googleapis/api-bigtable-partners", + "api_shortname": "bigtable" +} diff --git a/owlbot.py b/.librarian/generator-input/librarian.py similarity index 70% rename from owlbot.py rename to .librarian/generator-input/librarian.py index 6b2e1ea4f..fab63566f 100644 --- a/owlbot.py +++ b/.librarian/generator-input/librarian.py @@ -26,46 +26,6 @@ common = gcp.CommonTemplates() -# This is a customized version of the s.get_staging_dirs() function from synthtool to -# cater for copying 2 different folders from googleapis-gen -# which are bigtable and bigtable/admin. -# Source https://github.com/googleapis/synthtool/blob/master/synthtool/transforms.py#L280 -def get_staging_dirs( - default_version: Optional[str] = None, sub_directory: Optional[str] = None -) -> List[Path]: - """Returns the list of directories, one per version, copied from - https://github.com/googleapis/googleapis-gen. Will return in lexical sorting - order with the exception of the default_version which will be last (if specified). - - Args: - default_version (str): the default version of the API. The directory for this version - will be the last item in the returned list if specified. - sub_directory (str): if a `sub_directory` is provided, only the directories within the - specified `sub_directory` will be returned. - - Returns: the empty list if no file were copied. - """ - - staging = Path("owl-bot-staging") - - if sub_directory: - staging /= sub_directory - - if staging.is_dir(): - # Collect the subdirectories of the staging directory. - versions = [v.name for v in staging.iterdir() if v.is_dir()] - # Reorder the versions so the default version always comes last. - versions = [v for v in versions if v != default_version] - versions.sort() - if default_version is not None: - versions += [default_version] - dirs = [staging / v for v in versions] - for dir in dirs: - s._tracked_paths.add(dir) - return dirs - else: - return [] - # This library ships clients for two different APIs, # BigTable and BigTable Admin bigtable_default_version = "v2" @@ -80,16 +40,52 @@ def get_staging_dirs( is_fresh_admin_v2_copy = False is_fresh_admin_docs_copy = False -for library in get_staging_dirs(bigtable_default_version, "bigtable"): - s.move(library / "google/cloud/bigtable_v2", excludes=["**/gapic_version.py"]) +for library in s.get_staging_dirs(bigtable_default_version): + # ---------------------------------------------------------------------------- + # Always supply app_profile_id in routing headers: https://github.com/googleapis/python-bigtable/pull/1109 + # TODO: remove after backend no longer requires empty strings + # ---------------------------------------------------------------------------- + for file in ["async_client.py", "client.py"]: + s.replace( + library / f"google/cloud/bigtable_v2/services/bigtable/{file}", + "if request.app_profile_id:", + "if True: # always attach app_profile_id, even if empty string" + ) + # fix tests + s.replace( + library / "tests/unit/gapic/bigtable_v2/test_bigtable.py", + 'assert \(\n\s*gapic_v1\.routing_header\.to_grpc_metadata\(expected_headers\) in kw\["metadata"\]\n.*', + """ + # assert the expected headers are present, in any order + routing_string = next(iter([m[1] for m in kw["metadata"] if m[0] == 'x-goog-request-params'])) + assert all([f"{k}={v}" in routing_string for k,v in expected_headers.items()]) + """ + ) + s.replace( + library / "tests/unit/gapic/bigtable_v2/test_bigtable.py", + 'expected_headers = {"name": "projects/sample1/instances/sample2"}', + 'expected_headers = {"name": "projects/sample1/instances/sample2", "app_profile_id": ""}' + ) + s.replace( + library / "tests/unit/gapic/bigtable_v2/test_bigtable.py", + """expected_headers = \{ + "table_name": "projects/sample1/instances/sample2/tables/sample3" + \}""", + """expected_headers = { + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "" + }""" + ) + + s.move(library / "google/cloud/bigtable_v2") s.move(library / "tests") s.move(library / "scripts") -for library in get_staging_dirs(bigtable_admin_default_version, "bigtable_admin"): +for library in s.get_staging_dirs(bigtable_admin_default_version): is_fresh_admin_copy = \ - s.move(library / "google/cloud/bigtable_admin", excludes=["**/gapic_version.py"]) + s.move(library / "google/cloud/bigtable_admin") is_fresh_admin_v2_copy = \ - s.move(library / "google/cloud/bigtable_admin_v2", excludes=["**/gapic_version.py"]) + s.move(library / "google/cloud/bigtable_admin_v2") s.move(library / "tests") s.move(library / "samples") s.move(library / "scripts") @@ -114,48 +110,7 @@ def get_staging_dirs( default_python_version="3.13", ) -s.move(templated_files, excludes=[".coveragerc", "README.rst", ".github/release-please.yml", "noxfile.py", "renovate.json"]) - - -# ---------------------------------------------------------------------------- -# Always supply app_profile_id in routing headers: https://github.com/googleapis/python-bigtable/pull/1109 -# TODO: remove after backend no longer requires empty strings -# ---------------------------------------------------------------------------- -for file in ["async_client.py", "client.py"]: - s.replace( - f"google/cloud/bigtable_v2/services/bigtable/{file}", - "if request.app_profile_id:", - "if True: # always attach app_profile_id, even if empty string" - ) -# fix tests -s.replace( - "tests/unit/gapic/bigtable_v2/test_bigtable.py", - 'assert \(\n\s*gapic_v1\.routing_header\.to_grpc_metadata\(expected_headers\) in kw\["metadata"\]\n.*', - """ - # assert the expected headers are present, in any order - routing_string = next(iter([m[1] for m in kw["metadata"] if m[0] == 'x-goog-request-params'])) - assert all([f"{k}={v}" in routing_string for k,v in expected_headers.items()]) - """ -) -s.replace( - "tests/unit/gapic/bigtable_v2/test_bigtable.py", - 'expected_headers = {"name": "projects/sample1/instances/sample2"}', - 'expected_headers = {"name": "projects/sample1/instances/sample2", "app_profile_id": ""}' -) -s.replace( - "tests/unit/gapic/bigtable_v2/test_bigtable.py", - """ - expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" - } - """, - """ - expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "" - } - """ -) +s.move(templated_files, excludes=[".coveragerc", "README.rst", ".github/**", ".kokoro/**", "noxfile.py", "renovate.json"]) # ---------------------------------------------------------------------------- # Samples templates diff --git a/.librarian/generator-input/noxfile.py b/.librarian/generator-input/noxfile.py new file mode 100644 index 000000000..16c8a6327 --- /dev/null +++ b/.librarian/generator-input/noxfile.py @@ -0,0 +1,569 @@ +# -*- 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! + +from __future__ import absolute_import + +import os +import pathlib +import re +import shutil +from typing import Dict, List +import warnings + +import nox + +FLAKE8_VERSION = "flake8==6.1.0" +BLACK_VERSION = "black[jupyter]==23.3.0" +ISORT_VERSION = "isort==5.11.0" +LINT_PATHS = ["google", "tests", "noxfile.py", "setup.py"] + +DEFAULT_PYTHON_VERSION = "3.13" + +UNIT_TEST_PYTHON_VERSIONS: List[str] = [ + "3.7", + "3.8", + "3.9", + "3.10", + "3.11", + "3.12", + "3.13", + "3.14", +] +UNIT_TEST_STANDARD_DEPENDENCIES = [ + "mock", + "asyncmock", + "pytest", + "pytest-cov", + "pytest-asyncio", + BLACK_VERSION, + "autoflake", +] +UNIT_TEST_EXTERNAL_DEPENDENCIES: List[str] = [] +UNIT_TEST_LOCAL_DEPENDENCIES: List[str] = [] +UNIT_TEST_DEPENDENCIES: List[str] = [] +UNIT_TEST_EXTRAS: List[str] = [] +UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} + +SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.14"] +SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [ + "mock", + "pytest", + "google-cloud-testutils", +] +SYSTEM_TEST_EXTERNAL_DEPENDENCIES: List[str] = [ + "pytest-asyncio==0.21.2", + BLACK_VERSION, + "pyyaml==6.0.2", +] +SYSTEM_TEST_LOCAL_DEPENDENCIES: List[str] = [] +SYSTEM_TEST_DEPENDENCIES: List[str] = [] +SYSTEM_TEST_EXTRAS: List[str] = [] +SYSTEM_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} + +CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute() + +# 'docfx' is excluded since it only needs to run in 'docs-presubmit' +nox.options.sessions = [ + "unit-3.9", + "unit-3.10", + "unit-3.11", + "unit-3.12", + "unit-3.13", + "unit-3.14", + "system_emulated", + "system", + "mypy", + "cover", + "lint", + "lint_setup_py", + "blacken", + "docs", + "format", +] + +# Error if a python version is missing +nox.options.error_on_missing_interpreters = True + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def lint(session): + """Run linters. + + Returns a failure if the linters find linting errors or sufficiently + serious code quality issues. + """ + session.install(FLAKE8_VERSION, BLACK_VERSION) + session.run( + "black", + "--check", + *LINT_PATHS, + ) + session.run("flake8", "google", "tests") + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def blacken(session): + """Run black. Format code to uniform standard.""" + session.install(BLACK_VERSION) + session.run( + "black", + *LINT_PATHS, + ) + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def format(session): + """ + Run isort to sort imports. Then run black + to format code to uniform standard. + """ + session.install(BLACK_VERSION, ISORT_VERSION) + # Use the --fss option to sort imports using strict alphabetical order. + # See https://pycqa.github.io/isort/docs/configuration/options.html#force-sort-within-sections + session.run( + "isort", + "--fss", + *LINT_PATHS, + ) + session.run( + "black", + *LINT_PATHS, + ) + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def mypy(session): + """Verify type hints are mypy compatible.""" + session.install("-e", ".") + session.install( + "mypy", "types-setuptools", "types-protobuf", "types-mock", "types-requests" + ) + session.install("google-cloud-testutils") + session.run("mypy", "-p", "google.cloud.bigtable.data") + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def lint_setup_py(session): + """Verify that setup.py is valid (including RST check).""" + session.install("setuptools", "docutils", "pygments") + session.run("python", "setup.py", "check", "--restructuredtext", "--strict") + + +def install_unittest_dependencies(session, *constraints): + standard_deps = UNIT_TEST_STANDARD_DEPENDENCIES + UNIT_TEST_DEPENDENCIES + session.install(*standard_deps, *constraints) + + if UNIT_TEST_EXTERNAL_DEPENDENCIES: + warnings.warn( + "'unit_test_external_dependencies' is deprecated. Instead, please " + "use 'unit_test_dependencies' or 'unit_test_local_dependencies'.", + DeprecationWarning, + ) + session.install(*UNIT_TEST_EXTERNAL_DEPENDENCIES, *constraints) + + if UNIT_TEST_LOCAL_DEPENDENCIES: + session.install(*UNIT_TEST_LOCAL_DEPENDENCIES, *constraints) + + if UNIT_TEST_EXTRAS_BY_PYTHON: + extras = UNIT_TEST_EXTRAS_BY_PYTHON.get(session.python, []) + elif UNIT_TEST_EXTRAS: + extras = UNIT_TEST_EXTRAS + else: + extras = [] + + if extras: + session.install("-e", f".[{','.join(extras)}]", *constraints) + else: + session.install("-e", ".", *constraints) + + +@nox.session(python=UNIT_TEST_PYTHON_VERSIONS) +@nox.parametrize( + "protobuf_implementation", + ["python", "upb", "cpp"], +) +def unit(session, protobuf_implementation): + # Install all test dependencies, then install this package in-place. + py_version = tuple([int(v) for v in session.python.split(".")]) + if protobuf_implementation == "cpp" and py_version >= (3, 11): + session.skip("cpp implementation is not supported in python 3.11+") + + constraints_path = str( + CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" + ) + install_unittest_dependencies(session, "-c", constraints_path) + + # TODO(https://github.com/googleapis/synthtool/issues/1976): + # Remove the 'cpp' implementation once support for Protobuf 3.x is dropped. + # The 'cpp' implementation requires Protobuf<4. + if protobuf_implementation == "cpp": + session.install("protobuf<4") + + # Run py.test against the unit tests. + session.run( + "py.test", + "--quiet", + f"--junitxml=unit_{session.python}_sponge_log.xml", + "--cov=google", + "--cov=tests/unit", + "--cov-append", + "--cov-config=.coveragerc", + "--cov-report=", + "--cov-fail-under=0", + os.path.join("tests", "unit"), + *session.posargs, + env={ + "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, + }, + ) + + +def install_systemtest_dependencies(session, *constraints): + # Use pre-release gRPC for system tests. + # Exclude version 1.52.0rc1 which has a known issue. + # See https://github.com/grpc/grpc/issues/32163 + session.install("--pre", "grpcio!=1.52.0rc1") + + session.install(*SYSTEM_TEST_STANDARD_DEPENDENCIES, *constraints) + + if SYSTEM_TEST_EXTERNAL_DEPENDENCIES: + session.install(*SYSTEM_TEST_EXTERNAL_DEPENDENCIES, *constraints) + + if SYSTEM_TEST_LOCAL_DEPENDENCIES: + session.install("-e", *SYSTEM_TEST_LOCAL_DEPENDENCIES, *constraints) + + if SYSTEM_TEST_DEPENDENCIES: + session.install("-e", *SYSTEM_TEST_DEPENDENCIES, *constraints) + + if SYSTEM_TEST_EXTRAS_BY_PYTHON: + extras = SYSTEM_TEST_EXTRAS_BY_PYTHON.get(session.python, []) + elif SYSTEM_TEST_EXTRAS: + extras = SYSTEM_TEST_EXTRAS + else: + extras = [] + + if extras: + session.install("-e", f".[{','.join(extras)}]", *constraints) + else: + session.install("-e", ".", *constraints) + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def system_emulated(session): + import subprocess + import signal + + try: + subprocess.call(["gcloud", "--version"]) + except OSError: + session.skip("gcloud not found but required for emulator support") + + # Currently, CI/CD doesn't have beta component of gcloud. + subprocess.call(["gcloud", "components", "install", "beta", "bigtable"]) + + hostport = "localhost:8789" + session.env["BIGTABLE_EMULATOR_HOST"] = hostport + + p = subprocess.Popen( + ["gcloud", "beta", "emulators", "bigtable", "start", "--host-port", hostport] + ) + + try: + system(session) + finally: + # Stop Emulator + os.killpg(os.getpgid(p.pid), signal.SIGKILL) + + +@nox.session(python=SYSTEM_TEST_PYTHON_VERSIONS) +@nox.parametrize("client_type", ["async", "sync", "legacy"]) +def conformance(session, client_type): + # install dependencies + constraints_path = str( + CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" + ) + install_unittest_dependencies(session, "-c", constraints_path) + with session.chdir("test_proxy"): + # download the conformance test suite + session.run( + "bash", + "-e", + "run_tests.sh", + external=True, + env={"CLIENT_TYPE": client_type}, + ) + + +@nox.session(python=SYSTEM_TEST_PYTHON_VERSIONS) +def system(session): + """Run the system test suite.""" + constraints_path = str( + CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" + ) + system_test_path = os.path.join("tests", "system.py") + system_test_folder_path = os.path.join("tests", "system") + + # Check the value of `RUN_SYSTEM_TESTS` env var. It defaults to true. + if os.environ.get("RUN_SYSTEM_TESTS", "true") == "false": + session.skip("RUN_SYSTEM_TESTS is set to false, skipping") + # Install pyopenssl for mTLS testing. + if os.environ.get("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true": + session.install("pyopenssl") + + system_test_exists = os.path.exists(system_test_path) + system_test_folder_exists = os.path.exists(system_test_folder_path) + # Sanity check: only run tests if found. + if not system_test_exists and not system_test_folder_exists: + session.skip("System tests were not found") + + install_systemtest_dependencies(session, "-c", constraints_path) + + # Run py.test against the system tests. + if system_test_exists: + session.run( + "py.test", + "--quiet", + f"--junitxml=system_{session.python}_sponge_log.xml", + system_test_path, + *session.posargs, + ) + if system_test_folder_exists: + session.run( + "py.test", + "--quiet", + f"--junitxml=system_{session.python}_sponge_log.xml", + system_test_folder_path, + *session.posargs, + ) + + +@nox.session(python=DEFAULT_PYTHON_VERSION) +def cover(session): + """Run the final coverage report. + + This outputs the coverage report aggregating coverage from the unit + test runs (not system test runs), and then erases coverage data. + """ + session.install("coverage", "pytest-cov") + session.run("coverage", "report", "--show-missing", "--fail-under=99") + + session.run("coverage", "erase") + + +@nox.session(python="3.10") +def docs(session): + """Build the docs for this library.""" + + session.install("-e", ".") + session.install( + # We need to pin to specific versions of the `sphinxcontrib-*` packages + # which still support sphinx 4.x. + # See https://github.com/googleapis/sphinx-docfx-yaml/issues/344 + # and https://github.com/googleapis/sphinx-docfx-yaml/issues/345. + "sphinxcontrib-applehelp==1.0.4", + "sphinxcontrib-devhelp==1.0.2", + "sphinxcontrib-htmlhelp==2.0.1", + "sphinxcontrib-qthelp==1.0.3", + "sphinxcontrib-serializinghtml==1.1.5", + "sphinx==4.5.0", + "alabaster", + "recommonmark", + ) + + shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True) + session.run( + "sphinx-build", + "-W", # warnings as errors + "-T", # show full traceback on exception + "-N", # no colors + "-b", + "html", + "-d", + os.path.join("docs", "_build", "doctrees", ""), + os.path.join("docs", ""), + os.path.join("docs", "_build", "html", ""), + ) + + +@nox.session(python="3.10") +def docfx(session): + """Build the docfx yaml files for this library.""" + + session.install("-e", ".") + session.install( + # We need to pin to specific versions of the `sphinxcontrib-*` packages + # which still support sphinx 4.x. + # See https://github.com/googleapis/sphinx-docfx-yaml/issues/344 + # and https://github.com/googleapis/sphinx-docfx-yaml/issues/345. + "sphinxcontrib-applehelp==1.0.4", + "sphinxcontrib-devhelp==1.0.2", + "sphinxcontrib-htmlhelp==2.0.1", + "sphinxcontrib-qthelp==1.0.3", + "sphinxcontrib-serializinghtml==1.1.5", + "gcp-sphinx-docfx-yaml", + "alabaster", + "recommonmark", + ) + + shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True) + session.run( + "sphinx-build", + "-T", # show full traceback on exception + "-N", # no colors + "-D", + ( + "extensions=sphinx.ext.autodoc," + "sphinx.ext.autosummary," + "docfx_yaml.extension," + "sphinx.ext.intersphinx," + "sphinx.ext.coverage," + "sphinx.ext.napoleon," + "sphinx.ext.todo," + "sphinx.ext.viewcode," + "recommonmark" + ), + "-b", + "html", + "-d", + os.path.join("docs", "_build", "doctrees", ""), + os.path.join("docs", ""), + os.path.join("docs", "_build", "html", ""), + ) + # Customization: Add extra sections to the table of contents for the Classic vs Async clients + session.install("pyyaml") + session.run("python", "docs/scripts/patch_devsite_toc.py") + + +@nox.session(python="3.14") +@nox.parametrize( + "protobuf_implementation", + ["python", "upb", "cpp"], +) +def prerelease_deps(session, protobuf_implementation): + """Run all tests with prerelease versions of dependencies installed.""" + + py_version = tuple([int(v) for v in session.python.split(".")]) + if protobuf_implementation == "cpp" and py_version >= (3, 11): + session.skip("cpp implementation is not supported in python 3.11+") + + # Install all dependencies + session.install("-e", ".[all, tests, tracing]") + unit_deps_all = UNIT_TEST_STANDARD_DEPENDENCIES + UNIT_TEST_EXTERNAL_DEPENDENCIES + session.install(*unit_deps_all) + system_deps_all = ( + SYSTEM_TEST_STANDARD_DEPENDENCIES + SYSTEM_TEST_EXTERNAL_DEPENDENCIES + ) + session.install(*system_deps_all) + + # Because we test minimum dependency versions on the minimum Python + # version, the first version we test with in the unit tests sessions has a + # constraints file containing all dependencies and extras. + with open( + CURRENT_DIRECTORY + / "testing" + / f"constraints-{UNIT_TEST_PYTHON_VERSIONS[0]}.txt", + encoding="utf-8", + ) as constraints_file: + constraints_text = constraints_file.read() + + # Ignore leading whitespace and comment lines. + constraints_deps = [ + match.group(1) + for match in re.finditer( + r"^\s*(\S+)(?===\S+)", constraints_text, flags=re.MULTILINE + ) + ] + + session.install(*constraints_deps) + + prerel_deps = [ + "protobuf", + # dependency of grpc + "six", + "grpc-google-iam-v1", + "googleapis-common-protos", + "grpcio", + "grpcio-status", + "google-api-core", + "google-auth", + "proto-plus", + "google-cloud-testutils", + # dependencies of google-cloud-testutils" + "click", + ] + + for dep in prerel_deps: + session.install("--pre", "--no-deps", "--upgrade", dep) + + # Remaining dependencies + other_deps = [ + "requests", + ] + session.install(*other_deps) + + # Print out prerelease package versions + session.run( + "python", "-c", "import google.protobuf; print(google.protobuf.__version__)" + ) + session.run("python", "-c", "import grpc; print(grpc.__version__)") + session.run("python", "-c", "import google.auth; print(google.auth.__version__)") + + session.run( + "py.test", + "tests/unit", + env={ + "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, + }, + ) + + system_test_path = os.path.join("tests", "system.py") + system_test_folder_path = os.path.join("tests", "system") + + # Only run system tests if found. + if os.path.exists(system_test_path): + session.run( + "py.test", + "--verbose", + f"--junitxml=system_{session.python}_sponge_log.xml", + system_test_path, + *session.posargs, + env={ + "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, + }, + ) + if os.path.exists(system_test_folder_path): + session.run( + "py.test", + "--verbose", + f"--junitxml=system_{session.python}_sponge_log.xml", + system_test_folder_path, + *session.posargs, + env={ + "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, + }, + ) + + +@nox.session(python="3.10") +def generate_sync(session): + """ + Re-generate sync files for the library from CrossSync-annotated async source + """ + session.install(BLACK_VERSION) + session.install("autoflake") + session.run("python", ".cross_sync/generate.py", ".") diff --git a/.librarian/generator-input/setup.py b/.librarian/generator-input/setup.py new file mode 100644 index 000000000..cac533db6 --- /dev/null +++ b/.librarian/generator-input/setup.py @@ -0,0 +1,104 @@ +# Copyright 2018 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. + +import io +import os + +import setuptools + + +package_root = os.path.abspath(os.path.dirname(__file__)) + +# Package metadata. + +name = "google-cloud-bigtable" +description = "Google Cloud Bigtable API client library" + +version = {} +with open(os.path.join(package_root, "google/cloud/bigtable/gapic_version.py")) as fp: + exec(fp.read(), version) +version = version["__version__"] + + +# Should be one of: +# 'Development Status :: 3 - Alpha' +# 'Development Status :: 4 - Beta' +# 'Development Status :: 5 - Production/Stable' +release_status = "Development Status :: 5 - Production/Stable" +dependencies = [ + "google-api-core[grpc] >= 2.17.0, <3.0.0", + "google-cloud-core >= 1.4.4, <3.0.0", + "google-auth >= 2.23.0, <3.0.0,!=2.24.0,!=2.25.0", + "grpc-google-iam-v1 >= 0.12.4, <1.0.0", + "proto-plus >= 1.22.3, <2.0.0", + "proto-plus >= 1.25.0, <2.0.0; python_version>='3.13'", + "protobuf>=3.20.2,<7.0.0,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5", + "google-crc32c>=1.5.0, <2.0.0dev", +] +extras = {"libcst": "libcst >= 0.2.5"} + + +# Setup boilerplate below this line. + +package_root = os.path.abspath(os.path.dirname(__file__)) + +readme_filename = os.path.join(package_root, "README.rst") +with io.open(readme_filename, encoding="utf-8") as readme_file: + readme = readme_file.read() + +# Only include packages under the 'google' namespace. Do not include tests, +# benchmarks, etc. +packages = [ + package + for package in setuptools.find_namespace_packages() + if package.startswith("google") +] + +setuptools.setup( + name=name, + version=version, + description=description, + long_description=readme, + author="Google LLC", + author_email="googleapis-packages@google.com", + license="Apache 2.0", + url="https://github.com/googleapis/python-bigtable", + classifiers=[ + release_status, + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Operating System :: OS Independent", + "Topic :: Internet", + ], + platforms="Posix; MacOS X; Windows", + packages=packages, + install_requires=dependencies, + extras_require=extras, + scripts=[ + "scripts/fixup_bigtable_v2_keywords.py", + "scripts/fixup_admin_v2_keywords.py", + ], + python_requires=">=3.7", + include_package_data=True, + zip_safe=False, +) diff --git a/.librarian/state.yaml b/.librarian/state.yaml new file mode 100644 index 000000000..d4ad67735 --- /dev/null +++ b/.librarian/state.yaml @@ -0,0 +1,38 @@ +image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:8e2c32496077054105bd06c54a59d6a6694287bc053588e24debe6da6920ad91 +libraries: + - id: google-cloud-bigtable + version: 2.34.0 + last_generated_commit: d300b151a973ce0425ae4ad07b3de957ca31bec6 + apis: + - path: google/bigtable/v2 + - path: google/bigtable/admin/v2 + source_roots: + - . + preserve_regex: [] + remove_regex: + - ^.pre-commit-config.yaml + - ^.repo-metadata.json + - ^.trampolinerc + - ^docs/admin_client/bigtable + - ^docs/admin_client/services_.rst + - ^docs/admin_client/types_.rst + - ^docs/summary_overview.md + - ^google/cloud/bigtable_v2 + - ^google/cloud/bigtable_admin/ + - ^google/cloud/bigtable_admin_v2/services + - ^google/cloud/bigtable_admin_v2/types + - ^google/cloud/bigtable_admin_v2/__init__.py + - ^google/cloud/bigtable_admin_v2/gapic + - ^google/cloud/bigtable_admin_v2/py.typed + - ^samples/AUTHORING_GUIDE.md + - ^samples/CONTRIBUTING.md + - ^samples/generated_samples + - ^tests/unit/gapic + - ^noxfile.py + - ^scripts/fixup_bigtable + - ^setup.py + - ^SECURITY.md + - ^tests/__init__.py + - ^tests/unit/__init__.py + - ^tests/unit/gapic + tag_format: v{version} diff --git a/.release-please-manifest.json b/.release-please-manifest.json deleted file mode 100644 index 7887ba932..000000000 --- a/.release-please-manifest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - ".": "2.34.0" -} \ No newline at end of file diff --git a/release-please-config.json b/release-please-config.json deleted file mode 100644 index 33d5a7e21..000000000 --- a/release-please-config.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": -"https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", - "packages": { - ".": { - "release-type": "python", - "extra-files": [ - "google/cloud/bigtable/gapic_version.py", - "google/cloud/bigtable_admin/gapic_version.py", - "google/cloud/bigtable_v2/gapic_version.py", - "google/cloud/bigtable_admin_v2/gapic_version.py" - ] - } - }, - "release-type": "python", - "plugins": [ - { - "type": "sentence-case" - } - ], - "initial-version": "2.13.2" -} From c0feee6a6895f621ec21deb4d6f392070be7935f Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 19 Nov 2025 04:25:00 +0000 Subject: [PATCH 2/3] run librarian generate --- .librarian/state.yaml | 4 +- google/cloud/bigtable_admin/gapic_version.py | 2 +- .../cloud/bigtable_admin_v2/gapic_version.py | 2 +- google/cloud/bigtable_v2/gapic_version.py | 2 +- noxfile.py | 2 +- ...pet_metadata_google.bigtable.admin.v2.json | 2 +- tests/unit/gapic/bigtable_v2/test_bigtable.py | 729 +++++------------- 7 files changed, 215 insertions(+), 528 deletions(-) diff --git a/.librarian/state.yaml b/.librarian/state.yaml index d4ad67735..90228f2a2 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -2,10 +2,12 @@ image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-li libraries: - id: google-cloud-bigtable version: 2.34.0 - last_generated_commit: d300b151a973ce0425ae4ad07b3de957ca31bec6 + last_generated_commit: 5400ccce473c439885bd6bf2924fd242271bfcab apis: - path: google/bigtable/v2 + service_config: bigtable_v2.yaml - path: google/bigtable/admin/v2 + service_config: bigtableadmin_v2.yaml source_roots: - . preserve_regex: [] diff --git a/google/cloud/bigtable_admin/gapic_version.py b/google/cloud/bigtable_admin/gapic_version.py index 4800b0559..b31b170e1 100644 --- a/google/cloud/bigtable_admin/gapic_version.py +++ b/google/cloud/bigtable_admin/gapic_version.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2022 Google LLC +# 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. diff --git a/google/cloud/bigtable_admin_v2/gapic_version.py b/google/cloud/bigtable_admin_v2/gapic_version.py index 4800b0559..b31b170e1 100644 --- a/google/cloud/bigtable_admin_v2/gapic_version.py +++ b/google/cloud/bigtable_admin_v2/gapic_version.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2022 Google LLC +# 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. diff --git a/google/cloud/bigtable_v2/gapic_version.py b/google/cloud/bigtable_v2/gapic_version.py index 4800b0559..b31b170e1 100644 --- a/google/cloud/bigtable_v2/gapic_version.py +++ b/google/cloud/bigtable_v2/gapic_version.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2022 Google LLC +# 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. diff --git a/noxfile.py b/noxfile.py index a182bafba..16c8a6327 100644 --- a/noxfile.py +++ b/noxfile.py @@ -30,7 +30,7 @@ FLAKE8_VERSION = "flake8==6.1.0" BLACK_VERSION = "black[jupyter]==23.3.0" ISORT_VERSION = "isort==5.11.0" -LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] +LINT_PATHS = ["google", "tests", "noxfile.py", "setup.py"] DEFAULT_PYTHON_VERSION = "3.13" diff --git a/samples/generated_samples/snippet_metadata_google.bigtable.admin.v2.json b/samples/generated_samples/snippet_metadata_google.bigtable.admin.v2.json index 66b5c8f67..8b4f59fbd 100644 --- a/samples/generated_samples/snippet_metadata_google.bigtable.admin.v2.json +++ b/samples/generated_samples/snippet_metadata_google.bigtable.admin.v2.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-bigtable-admin", - "version": "0.0.0" + "version": "2.34.0" }, "snippets": [ { diff --git a/tests/unit/gapic/bigtable_v2/test_bigtable.py b/tests/unit/gapic/bigtable_v2/test_bigtable.py index 24db8e269..0af518159 100644 --- a/tests/unit/gapic/bigtable_v2/test_bigtable.py +++ b/tests/unit/gapic/bigtable_v2/test_bigtable.py @@ -6851,15 +6851,11 @@ def test_read_rows_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_2_grpc(): @@ -6881,12 +6877,9 @@ def test_read_rows_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_3_grpc(): @@ -6916,15 +6909,11 @@ def test_read_rows_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_4_grpc(): @@ -6951,16 +6940,10 @@ def test_read_rows_routing_parameters_request_4_grpc(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_1_grpc(): @@ -6986,15 +6969,11 @@ def test_sample_row_keys_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_2_grpc(): @@ -7016,12 +6995,9 @@ def test_sample_row_keys_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_3_grpc(): @@ -7051,15 +7027,11 @@ def test_sample_row_keys_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_4_grpc(): @@ -7086,16 +7058,10 @@ def test_sample_row_keys_routing_parameters_request_4_grpc(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_1_grpc(): @@ -7121,15 +7087,11 @@ def test_mutate_row_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_2_grpc(): @@ -7151,12 +7113,9 @@ def test_mutate_row_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_3_grpc(): @@ -7186,15 +7145,11 @@ def test_mutate_row_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_1_grpc(): @@ -7220,15 +7175,11 @@ def test_mutate_rows_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_2_grpc(): @@ -7250,12 +7201,9 @@ def test_mutate_rows_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_3_grpc(): @@ -7285,15 +7233,11 @@ def test_mutate_rows_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_1_grpc(): @@ -7321,15 +7265,11 @@ def test_check_and_mutate_row_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_2_grpc(): @@ -7353,12 +7293,9 @@ def test_check_and_mutate_row_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_3_grpc(): @@ -7390,15 +7327,11 @@ def test_check_and_mutate_row_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_1_grpc(): @@ -7421,16 +7354,10 @@ def test_ping_and_warm_routing_parameters_request_1_grpc(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_2_grpc(): @@ -7452,12 +7379,9 @@ def test_ping_and_warm_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_1_grpc(): @@ -7485,15 +7409,11 @@ def test_read_modify_write_row_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_2_grpc(): @@ -7519,12 +7439,9 @@ def test_read_modify_write_row_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_3_grpc(): @@ -7556,15 +7473,11 @@ def test_read_modify_write_row_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_1_grpc(): @@ -7589,16 +7502,10 @@ def test_prepare_query_routing_parameters_request_1_grpc(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_2_grpc(): @@ -7620,12 +7527,9 @@ def test_prepare_query_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_1_grpc(): @@ -7650,16 +7554,10 @@ def test_execute_query_routing_parameters_request_1_grpc(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_2_grpc(): @@ -7681,12 +7579,9 @@ def test_execute_query_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_transport_kind_grpc_asyncio(): @@ -8024,15 +7919,11 @@ async def test_read_rows_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8059,12 +7950,9 @@ async def test_read_rows_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8099,15 +7987,11 @@ async def test_read_rows_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8139,16 +8023,10 @@ async def test_read_rows_routing_parameters_request_4_grpc_asyncio(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8179,15 +8057,11 @@ async def test_sample_row_keys_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8214,12 +8088,9 @@ async def test_sample_row_keys_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8254,15 +8125,11 @@ async def test_sample_row_keys_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8294,16 +8161,10 @@ async def test_sample_row_keys_routing_parameters_request_4_grpc_asyncio(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8333,15 +8194,11 @@ async def test_mutate_row_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8367,12 +8224,9 @@ async def test_mutate_row_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8406,15 +8260,11 @@ async def test_mutate_row_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8445,15 +8295,11 @@ async def test_mutate_rows_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8480,12 +8326,9 @@ async def test_mutate_rows_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8520,15 +8363,11 @@ async def test_mutate_rows_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8562,15 +8401,11 @@ async def test_check_and_mutate_row_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8600,12 +8435,9 @@ async def test_check_and_mutate_row_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8643,15 +8475,11 @@ async def test_check_and_mutate_row_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8680,16 +8508,10 @@ async def test_ping_and_warm_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8715,12 +8537,9 @@ async def test_ping_and_warm_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8752,15 +8571,11 @@ async def test_read_modify_write_row_routing_parameters_request_1_grpc_asyncio() assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8790,12 +8605,9 @@ async def test_read_modify_write_row_routing_parameters_request_2_grpc_asyncio() assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8831,15 +8643,11 @@ async def test_read_modify_write_row_routing_parameters_request_3_grpc_asyncio() assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8870,16 +8678,10 @@ async def test_prepare_query_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8907,12 +8709,9 @@ async def test_prepare_query_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8942,16 +8741,10 @@ async def test_execute_query_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8978,12 +8771,9 @@ async def test_execute_query_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_transport_kind_rest(): @@ -10631,15 +10421,11 @@ def test_read_rows_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_2_rest(): @@ -10660,12 +10446,9 @@ def test_read_rows_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_3_rest(): @@ -10694,15 +10477,11 @@ def test_read_rows_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_4_rest(): @@ -10728,16 +10507,10 @@ def test_read_rows_routing_parameters_request_4_rest(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_1_rest(): @@ -10762,15 +10535,11 @@ def test_sample_row_keys_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_2_rest(): @@ -10791,12 +10560,9 @@ def test_sample_row_keys_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_3_rest(): @@ -10825,15 +10591,11 @@ def test_sample_row_keys_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_4_rest(): @@ -10859,16 +10621,10 @@ def test_sample_row_keys_routing_parameters_request_4_rest(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_1_rest(): @@ -10893,15 +10649,11 @@ def test_mutate_row_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_2_rest(): @@ -10922,12 +10674,9 @@ def test_mutate_row_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_3_rest(): @@ -10956,15 +10705,11 @@ def test_mutate_row_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_1_rest(): @@ -10989,15 +10734,11 @@ def test_mutate_rows_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_2_rest(): @@ -11018,12 +10759,9 @@ def test_mutate_rows_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_3_rest(): @@ -11052,15 +10790,11 @@ def test_mutate_rows_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_1_rest(): @@ -11087,15 +10821,11 @@ def test_check_and_mutate_row_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_2_rest(): @@ -11118,12 +10848,9 @@ def test_check_and_mutate_row_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_3_rest(): @@ -11154,15 +10881,11 @@ def test_check_and_mutate_row_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_1_rest(): @@ -11184,16 +10907,10 @@ def test_ping_and_warm_routing_parameters_request_1_rest(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_2_rest(): @@ -11214,12 +10931,9 @@ def test_ping_and_warm_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_1_rest(): @@ -11246,15 +10960,11 @@ def test_read_modify_write_row_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_2_rest(): @@ -11279,12 +10989,9 @@ def test_read_modify_write_row_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_3_rest(): @@ -11315,15 +11022,11 @@ def test_read_modify_write_row_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "", + "table_name": "projects/sample1/instances/sample2/tables/sample3" } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_1_rest(): @@ -11347,16 +11050,10 @@ def test_prepare_query_routing_parameters_request_1_rest(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_2_rest(): @@ -11377,12 +11074,9 @@ def test_prepare_query_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_1_rest(): @@ -11406,16 +11100,10 @@ def test_execute_query_routing_parameters_request_1_rest(): assert args[0] == request_msg - expected_headers = { - "name": "projects/sample1/instances/sample2", - "app_profile_id": "", - } - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + expected_headers = {"name": "projects/sample1/instances/sample2"} + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_2_rest(): @@ -11436,12 +11124,9 @@ def test_execute_query_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - - # assert the expected headers are present, in any order - routing_string = next( - iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + assert ( + gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] ) - assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_transport_grpc_default(): From 76818e15a9cea55911c1f7f6a62f3093413a44ba Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 19 Nov 2025 22:14:27 +0000 Subject: [PATCH 3/3] fix replacements in librarian.py --- .librarian/generator-input/librarian.py | 112 ++- .librarian/state.yaml | 2 +- tests/unit/gapic/bigtable_v2/test_bigtable.py | 651 ++++++++++++------ 3 files changed, 495 insertions(+), 270 deletions(-) diff --git a/.librarian/generator-input/librarian.py b/.librarian/generator-input/librarian.py index fab63566f..5b943d24b 100644 --- a/.librarian/generator-input/librarian.py +++ b/.librarian/generator-input/librarian.py @@ -26,11 +26,6 @@ common = gcp.CommonTemplates() -# This library ships clients for two different APIs, -# BigTable and BigTable Admin -bigtable_default_version = "v2" -bigtable_admin_default_version = "v2" - # These flags are needed because certain post-processing operations # append things after a certain line of text, and can infinitely loop # in a Github PR. We use these flags to only do those operations @@ -40,48 +35,8 @@ is_fresh_admin_v2_copy = False is_fresh_admin_docs_copy = False -for library in s.get_staging_dirs(bigtable_default_version): - # ---------------------------------------------------------------------------- - # Always supply app_profile_id in routing headers: https://github.com/googleapis/python-bigtable/pull/1109 - # TODO: remove after backend no longer requires empty strings - # ---------------------------------------------------------------------------- - for file in ["async_client.py", "client.py"]: - s.replace( - library / f"google/cloud/bigtable_v2/services/bigtable/{file}", - "if request.app_profile_id:", - "if True: # always attach app_profile_id, even if empty string" - ) - # fix tests - s.replace( - library / "tests/unit/gapic/bigtable_v2/test_bigtable.py", - 'assert \(\n\s*gapic_v1\.routing_header\.to_grpc_metadata\(expected_headers\) in kw\["metadata"\]\n.*', - """ - # assert the expected headers are present, in any order - routing_string = next(iter([m[1] for m in kw["metadata"] if m[0] == 'x-goog-request-params'])) - assert all([f"{k}={v}" in routing_string for k,v in expected_headers.items()]) - """ - ) - s.replace( - library / "tests/unit/gapic/bigtable_v2/test_bigtable.py", - 'expected_headers = {"name": "projects/sample1/instances/sample2"}', - 'expected_headers = {"name": "projects/sample1/instances/sample2", "app_profile_id": ""}' - ) - s.replace( - library / "tests/unit/gapic/bigtable_v2/test_bigtable.py", - """expected_headers = \{ - "table_name": "projects/sample1/instances/sample2/tables/sample3" - \}""", - """expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3", - "app_profile_id": "" - }""" - ) - +for library in s.get_staging_dirs("v2"): s.move(library / "google/cloud/bigtable_v2") - s.move(library / "tests") - s.move(library / "scripts") - -for library in s.get_staging_dirs(bigtable_admin_default_version): is_fresh_admin_copy = \ s.move(library / "google/cloud/bigtable_admin") is_fresh_admin_v2_copy = \ @@ -112,21 +67,58 @@ s.move(templated_files, excludes=[".coveragerc", "README.rst", ".github/**", ".kokoro/**", "noxfile.py", "renovate.json"]) + +s.shell.run(["nox", "-s", "blacken"], hide_output=False) + +# ---------------------------------------------------------------------------- +# Always supply app_profile_id in routing headers: https://github.com/googleapis/python-bigtable/pull/1109 +# TODO: remove after backend no longer requires empty strings +# ---------------------------------------------------------------------------- +for file in ["async_client.py", "client.py"]: + s.replace( + f"google/cloud/bigtable_v2/services/bigtable/{file}", + "if request.app_profile_id:", + "if True: # always attach app_profile_id, even if empty string" + ) +# fix tests +s.replace( + "tests/unit/gapic/bigtable_v2/test_bigtable.py", + 'assert \(\n\s*gapic_v1\.routing_header\.to_grpc_metadata\(expected_headers\) in kw\["metadata"\]\n.*', + """# assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) + ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()])""" +) +s.replace( + "tests/unit/gapic/bigtable_v2/test_bigtable.py", + 'expected_headers = {"name": "projects/sample1/instances/sample2"}', + """expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + }""" +) +s.replace( + "tests/unit/gapic/bigtable_v2/test_bigtable.py", + """ + expected_headers = { + "table_name": "projects/sample1/instances/sample2/tables/sample3" + } +""", + """ + expected_headers = { + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", + } +""" +) + # ---------------------------------------------------------------------------- # Samples templates # ---------------------------------------------------------------------------- python.py_samples(skip_readmes=True) -s.replace( - "samples/beam/noxfile.py", - """INSTALL_LIBRARY_FROM_SOURCE \= os.environ.get\("INSTALL_LIBRARY_FROM_SOURCE", False\) in \( - "True", - "true", -\)""", - """# todo(kolea2): temporary workaround to install pinned dep version -INSTALL_LIBRARY_FROM_SOURCE = False""") - # -------------------------------------------------------------------------- # Admin Overlay work # -------------------------------------------------------------------------- @@ -144,9 +136,8 @@ def add_overlay_to_init_py(init_py_location, import_statements, should_add): add_overlay_to_init_py( "google/cloud/bigtable_admin_v2/__init__.py", - """from .overlay import * # noqa: F403 -__all__ += overlay.__all__ # noqa: F405 -""", + """from .overlay import * # noqa: F403\n +__all__ += overlay.__all__ # noqa: F405""", is_fresh_admin_v2_copy, ) @@ -155,8 +146,7 @@ def add_overlay_to_init_py(init_py_location, import_statements, should_add): """import google.cloud.bigtable_admin_v2.overlay # noqa: F401 from google.cloud.bigtable_admin_v2.overlay import * # noqa: F401, F403 -__all__ += google.cloud.bigtable_admin_v2.overlay.__all__ -""", +__all__ += google.cloud.bigtable_admin_v2.overlay.__all__""", is_fresh_admin_copy, ) @@ -274,5 +264,3 @@ def add_overlay_to_init_py(init_py_location, import_statements, should_add): r"class GcRule\(proto\.Message\)\:", "class GcRule(oneof_message.OneofMessage):", ) - -s.shell.run(["nox", "-s", "blacken"], hide_output=False) diff --git a/.librarian/state.yaml b/.librarian/state.yaml index 90228f2a2..049e7b1cf 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -2,7 +2,7 @@ image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-li libraries: - id: google-cloud-bigtable version: 2.34.0 - last_generated_commit: 5400ccce473c439885bd6bf2924fd242271bfcab + last_generated_commit: a17b84add8318f780fcc8a027815d5fee644b9f7 apis: - path: google/bigtable/v2 service_config: bigtable_v2.yaml diff --git a/tests/unit/gapic/bigtable_v2/test_bigtable.py b/tests/unit/gapic/bigtable_v2/test_bigtable.py index 0af518159..9922999d6 100644 --- a/tests/unit/gapic/bigtable_v2/test_bigtable.py +++ b/tests/unit/gapic/bigtable_v2/test_bigtable.py @@ -6851,11 +6851,14 @@ def test_read_rows_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_2_grpc(): @@ -6877,9 +6880,11 @@ def test_read_rows_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_3_grpc(): @@ -6909,11 +6914,14 @@ def test_read_rows_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_4_grpc(): @@ -6940,10 +6948,15 @@ def test_read_rows_routing_parameters_request_4_grpc(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_1_grpc(): @@ -6969,11 +6982,14 @@ def test_sample_row_keys_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_2_grpc(): @@ -6995,9 +7011,11 @@ def test_sample_row_keys_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_3_grpc(): @@ -7027,11 +7045,14 @@ def test_sample_row_keys_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_4_grpc(): @@ -7058,10 +7079,15 @@ def test_sample_row_keys_routing_parameters_request_4_grpc(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_1_grpc(): @@ -7087,11 +7113,14 @@ def test_mutate_row_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_2_grpc(): @@ -7113,9 +7142,11 @@ def test_mutate_row_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_3_grpc(): @@ -7145,11 +7176,14 @@ def test_mutate_row_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_1_grpc(): @@ -7175,11 +7209,14 @@ def test_mutate_rows_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_2_grpc(): @@ -7201,9 +7238,11 @@ def test_mutate_rows_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_3_grpc(): @@ -7233,11 +7272,14 @@ def test_mutate_rows_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_1_grpc(): @@ -7265,11 +7307,14 @@ def test_check_and_mutate_row_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_2_grpc(): @@ -7293,9 +7338,11 @@ def test_check_and_mutate_row_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_3_grpc(): @@ -7327,11 +7374,14 @@ def test_check_and_mutate_row_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_1_grpc(): @@ -7354,10 +7404,15 @@ def test_ping_and_warm_routing_parameters_request_1_grpc(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_2_grpc(): @@ -7379,9 +7434,11 @@ def test_ping_and_warm_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_1_grpc(): @@ -7409,11 +7466,14 @@ def test_read_modify_write_row_routing_parameters_request_1_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_2_grpc(): @@ -7439,9 +7499,11 @@ def test_read_modify_write_row_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_3_grpc(): @@ -7473,11 +7535,14 @@ def test_read_modify_write_row_routing_parameters_request_3_grpc(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_1_grpc(): @@ -7502,10 +7567,15 @@ def test_prepare_query_routing_parameters_request_1_grpc(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_2_grpc(): @@ -7527,9 +7597,11 @@ def test_prepare_query_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_1_grpc(): @@ -7554,10 +7626,15 @@ def test_execute_query_routing_parameters_request_1_grpc(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_2_grpc(): @@ -7579,9 +7656,11 @@ def test_execute_query_routing_parameters_request_2_grpc(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_transport_kind_grpc_asyncio(): @@ -7919,11 +7998,14 @@ async def test_read_rows_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -7950,9 +8032,11 @@ async def test_read_rows_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -7987,11 +8071,14 @@ async def test_read_rows_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8023,10 +8110,15 @@ async def test_read_rows_routing_parameters_request_4_grpc_asyncio(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8057,11 +8149,14 @@ async def test_sample_row_keys_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8088,9 +8183,11 @@ async def test_sample_row_keys_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8125,11 +8222,14 @@ async def test_sample_row_keys_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8161,10 +8261,15 @@ async def test_sample_row_keys_routing_parameters_request_4_grpc_asyncio(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8194,11 +8299,14 @@ async def test_mutate_row_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8224,9 +8332,11 @@ async def test_mutate_row_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8260,11 +8370,14 @@ async def test_mutate_row_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8295,11 +8408,14 @@ async def test_mutate_rows_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8326,9 +8442,11 @@ async def test_mutate_rows_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8363,11 +8481,14 @@ async def test_mutate_rows_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8401,11 +8522,14 @@ async def test_check_and_mutate_row_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8435,9 +8559,11 @@ async def test_check_and_mutate_row_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8475,11 +8601,14 @@ async def test_check_and_mutate_row_routing_parameters_request_3_grpc_asyncio(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8508,10 +8637,15 @@ async def test_ping_and_warm_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8537,9 +8671,11 @@ async def test_ping_and_warm_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8571,11 +8707,14 @@ async def test_read_modify_write_row_routing_parameters_request_1_grpc_asyncio() assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8605,9 +8744,11 @@ async def test_read_modify_write_row_routing_parameters_request_2_grpc_asyncio() assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8643,11 +8784,14 @@ async def test_read_modify_write_row_routing_parameters_request_3_grpc_asyncio() assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8678,10 +8822,15 @@ async def test_prepare_query_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8709,9 +8858,11 @@ async def test_prepare_query_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8741,10 +8892,15 @@ async def test_execute_query_routing_parameters_request_1_grpc_asyncio(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) @pytest.mark.asyncio @@ -8771,9 +8927,11 @@ async def test_execute_query_routing_parameters_request_2_grpc_asyncio(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_transport_kind_rest(): @@ -10421,11 +10579,14 @@ def test_read_rows_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_2_rest(): @@ -10446,9 +10607,11 @@ def test_read_rows_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_3_rest(): @@ -10477,11 +10640,14 @@ def test_read_rows_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_rows_routing_parameters_request_4_rest(): @@ -10507,10 +10673,15 @@ def test_read_rows_routing_parameters_request_4_rest(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_1_rest(): @@ -10535,11 +10706,14 @@ def test_sample_row_keys_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_2_rest(): @@ -10560,9 +10734,11 @@ def test_sample_row_keys_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_3_rest(): @@ -10591,11 +10767,14 @@ def test_sample_row_keys_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_sample_row_keys_routing_parameters_request_4_rest(): @@ -10621,10 +10800,15 @@ def test_sample_row_keys_routing_parameters_request_4_rest(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_1_rest(): @@ -10649,11 +10833,14 @@ def test_mutate_row_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_2_rest(): @@ -10674,9 +10861,11 @@ def test_mutate_row_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_row_routing_parameters_request_3_rest(): @@ -10705,11 +10894,14 @@ def test_mutate_row_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_1_rest(): @@ -10734,11 +10926,14 @@ def test_mutate_rows_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_2_rest(): @@ -10759,9 +10954,11 @@ def test_mutate_rows_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_mutate_rows_routing_parameters_request_3_rest(): @@ -10790,11 +10987,14 @@ def test_mutate_rows_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_1_rest(): @@ -10821,11 +11021,14 @@ def test_check_and_mutate_row_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_2_rest(): @@ -10848,9 +11051,11 @@ def test_check_and_mutate_row_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_check_and_mutate_row_routing_parameters_request_3_rest(): @@ -10881,11 +11086,14 @@ def test_check_and_mutate_row_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_1_rest(): @@ -10907,10 +11115,15 @@ def test_ping_and_warm_routing_parameters_request_1_rest(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_ping_and_warm_routing_parameters_request_2_rest(): @@ -10931,9 +11144,11 @@ def test_ping_and_warm_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_1_rest(): @@ -10960,11 +11175,14 @@ def test_read_modify_write_row_routing_parameters_request_1_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_2_rest(): @@ -10989,9 +11207,11 @@ def test_read_modify_write_row_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_read_modify_write_row_routing_parameters_request_3_rest(): @@ -11022,11 +11242,14 @@ def test_read_modify_write_row_routing_parameters_request_3_rest(): assert args[0] == request_msg expected_headers = { - "table_name": "projects/sample1/instances/sample2/tables/sample3" + "table_name": "projects/sample1/instances/sample2/tables/sample3", + "app_profile_id": "", } - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_1_rest(): @@ -11050,10 +11273,15 @@ def test_prepare_query_routing_parameters_request_1_rest(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_prepare_query_routing_parameters_request_2_rest(): @@ -11074,9 +11302,11 @@ def test_prepare_query_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_1_rest(): @@ -11100,10 +11330,15 @@ def test_execute_query_routing_parameters_request_1_rest(): assert args[0] == request_msg - expected_headers = {"name": "projects/sample1/instances/sample2"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + expected_headers = { + "name": "projects/sample1/instances/sample2", + "app_profile_id": "", + } + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_execute_query_routing_parameters_request_2_rest(): @@ -11124,9 +11359,11 @@ def test_execute_query_routing_parameters_request_2_rest(): assert args[0] == request_msg expected_headers = {"app_profile_id": "sample1"} - assert ( - gapic_v1.routing_header.to_grpc_metadata(expected_headers) in kw["metadata"] + # assert the expected headers are present, in any order + routing_string = next( + iter([m[1] for m in kw["metadata"] if m[0] == "x-goog-request-params"]) ) + assert all([f"{k}={v}" in routing_string for k, v in expected_headers.items()]) def test_transport_grpc_default():