Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions bigframes/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import google.api_core.exceptions
import google.api_core.retry
from google.cloud import bigquery_connection_v1, resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -161,7 +160,9 @@ def _ensure_iam_binding(
project = f"projects/{project_id}"
service_account = f"serviceAccount:{service_account_id}"
role = f"roles/{iam_role}"
request = iam_policy_pb2.GetIamPolicyRequest(resource=project)
request = {
"resource": project
} # Use a dictionary to avoid problematic google.iam namespace package.
policy = self._cloud_resource_manager_client.get_iam_policy(request=request)

# Check if the binding already exists, and if does, do nothing more
Expand All @@ -171,9 +172,15 @@ def _ensure_iam_binding(
return

# Create a new binding
new_binding = policy_pb2.Binding(role=role, members=[service_account])
new_binding = {
"role": role,
"members": [service_account],
} # Use a dictionary to avoid problematic google.iam namespace package.
policy.bindings.append(new_binding)
request = iam_policy_pb2.SetIamPolicyRequest(resource=project, policy=policy)
request = {
"resource": project,
"policy": policy,
} # Use a dictionary to avoid problematic google.iam namespace package.
self._cloud_resource_manager_client.set_iam_policy(request=request)

# We would wait for the IAM policy change to take effect
Expand Down
2 changes: 0 additions & 2 deletions bigframes/functions/function.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@
from bigframes.session import Session

import google.api_core.exceptions
import google.api_core.retry
from google.cloud import bigquery
import google.iam.v1

import bigframes.core.compile.ibis_types
import bigframes.dtypes
Expand Down