Skip to content

Commit e0f3f85

Browse files
committed
merge: merge origin/main into feat/gapic-centralization-api-core
2 parents dcce1e7 + 4b049c4 commit e0f3f85

41 files changed

Lines changed: 194 additions & 61 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/gapic-generator-tests.yml

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,8 @@ name: Gapic Generator Specialized Tests
55

66
on:
77
pull_request:
8-
paths:
9-
- 'packages/gapic-generator/**'
10-
- '.github/workflows/gapic-generator-tests.yml'
118
push:
129
branches: [main]
13-
paths:
14-
- 'packages/gapic-generator/**'
1510

1611
concurrency:
1712
group: gapic-gen-${{ github.head_ref || github.run_id }}
@@ -30,11 +25,8 @@ env:
3025
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
3126

3227
jobs:
28+
# Check if the gapic-generator was changed. If so, execute specialized tests
3329
check_changes:
34-
# We use a job-level 'if' with dorny/paths-filter because GitHub's top-level
35-
# 'on: pull_request: paths' can be bypassed during repository-wide migrations
36-
# or structural changes. This ensures these specialized (and heavy) matrix
37-
# jobs stay silent on PRs that do not touch the generator.
3830
runs-on: ubuntu-latest
3931
outputs:
4032
run_generator: ${{ steps.filter.outputs.generator }}
@@ -59,7 +51,7 @@ jobs:
5951
all_python: ${{ env.ALL_PYTHON }}
6052
latest_stable_python: ${{ env.LATEST_STABLE_PYTHON }}
6153
prerelease_python: ${{ env.PRERELEASE_PYTHON }}
62-
trimmed_python: $${{ env.TRIMMED_PYTHON }}
54+
trimmed_python: ${{ env.TRIMMED_PYTHON }}
6355
steps:
6456
- run: echo "Initializing config for gapic-generator"
6557

@@ -232,7 +224,6 @@ jobs:
232224
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
233225
with:
234226
persist-credentials: false
235-
236227
- name: Cache Bazel files
237228
id: cache-bazel
238229
uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5
@@ -247,3 +238,27 @@ jobs:
247238
# WORKSPACE file is located there.
248239
cd packages/gapic-generator
249240
bazelisk test //tests/integration/... --test_output=errors
241+
242+
# Final job to simplify branch protection rules.
243+
# This job will be reported as 'Success' if all its dependencies either
244+
# pass or are skipped due to path filtering.
245+
status:
246+
needs: [check_changes, python_config, showcase-unit, showcase-mypy, goldens, goldens-prerelease, fragment-snippet, integration]
247+
if: always()
248+
runs-on: ubuntu-latest
249+
steps:
250+
- name: Check all jobs for failure
251+
env:
252+
NEEDS_JSON: ${{ toJson(needs) }}
253+
run: |
254+
# 1. Print a human-readable list of each dependency job and its final status.
255+
echo "Job Results:"
256+
echo "$NEEDS_JSON" | jq -r 'to_entries[] | " - \(.key): \(.value.result)"'
257+
258+
# 2. Evaluate if any job actually failed or was cancelled.
259+
if echo "$NEEDS_JSON" | jq -e 'to_entries[].value | select(.result == "failure" or .result == "cancelled")' >/dev/null; then
260+
echo "Error: One or more required jobs failed or were cancelled."
261+
exit 1
262+
fi
263+
echo "All checks passed or were successfully skipped."
264+

.release-please-bulk-manifest.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
"packages/google-analytics-data": "0.23.0",
1313
"packages/google-api-core": "2.31.0",
1414
"packages/google-apps-card": "0.7.0",
15-
"packages/google-apps-chat": "0.10.1",
15+
"packages/google-apps-chat": "0.10.2",
1616
"packages/google-apps-events-subscriptions": "0.6.0",
1717
"packages/google-apps-meet": "0.5.0",
1818
"packages/google-apps-script-type": "0.8.0",
1919
"packages/google-area120-tables": "0.15.0",
20-
"packages/google-auth": "2.55.2",
20+
"packages/google-auth": "2.56.0",
2121
"packages/google-auth-httplib2": "0.4.0",
2222
"packages/google-auth-oauthlib": "1.4.0",
2323
"packages/google-backstory": "0.1.0",
@@ -31,7 +31,7 @@
3131
"packages/google-cloud-api-gateway": "1.16.0",
3232
"packages/google-cloud-api-keys": "0.9.0",
3333
"packages/google-cloud-apigee-connect": "1.16.0",
34-
"packages/google-cloud-apigee-registry": "0.10.0",
34+
"packages/google-cloud-apigee-registry": "0.10.1",
3535
"packages/google-cloud-apihub": "0.7.0",
3636
"packages/google-cloud-apiregistry": "0.3.0",
3737
"packages/google-cloud-appengine-admin": "1.18.0",
@@ -68,7 +68,7 @@
6868
"packages/google-cloud-bigtable": "2.40.0",
6969
"packages/google-cloud-billing": "1.20.0",
7070
"packages/google-cloud-billing-budgets": "1.21.0",
71-
"packages/google-cloud-binary-authorization": "1.18.0",
71+
"packages/google-cloud-binary-authorization": "1.19.0",
7272
"packages/google-cloud-build": "3.38.0",
7373
"packages/google-cloud-capacityplanner": "0.5.0",
7474
"packages/google-cloud-certificate-manager": "1.14.0",
@@ -113,7 +113,7 @@
113113
"packages/google-cloud-dms": "1.16.0",
114114
"packages/google-cloud-dns": "0.37.0",
115115
"packages/google-cloud-documentai": "3.15.0",
116-
"packages/google-cloud-documentai-toolbox": "0.17.0",
116+
"packages/google-cloud-documentai-toolbox": "0.17.1",
117117
"packages/google-cloud-domains": "1.14.0",
118118
"packages/google-cloud-edgecontainer": "0.8.1",
119119
"packages/google-cloud-edgenetwork": "0.5.1",
@@ -154,7 +154,7 @@
154154
"packages/google-cloud-managedkafka-schemaregistry": "0.4.1",
155155
"packages/google-cloud-media-translation": "0.14.1",
156156
"packages/google-cloud-memcache": "1.16.0",
157-
"packages/google-cloud-memorystore": "0.5.1",
157+
"packages/google-cloud-memorystore": "0.5.2",
158158
"packages/google-cloud-migrationcenter": "0.4.1",
159159
"packages/google-cloud-modelarmor": "0.7.1",
160160
"packages/google-cloud-monitoring": "2.31.0",
@@ -210,7 +210,7 @@
210210
"packages/google-cloud-source-context": "1.11.0",
211211
"packages/google-cloud-spanner": "3.69.0",
212212
"packages/google-cloud-speech": "2.40.0",
213-
"packages/google-cloud-storage": "3.12.1",
213+
"packages/google-cloud-storage": "3.13.0",
214214
"packages/google-cloud-storage-control": "1.12.0",
215215
"packages/google-cloud-storage-transfer": "1.21.0",
216216
"packages/google-cloud-storagebatchoperations": "0.8.0",
@@ -240,7 +240,7 @@
240240
"packages/google-cloud-workloadmanager": "0.2.1",
241241
"packages/google-cloud-workstations": "0.8.1",
242242
"packages/google-developer-knowledge": "0.1.0",
243-
"packages/google-devicesandservices-health": "0.1.0",
243+
"packages/google-devicesandservices-health": "0.1.1",
244244
"packages/google-geo-type": "0.7.0",
245245
"packages/google-maps-addressvalidation": "0.7.0",
246246
"packages/google-maps-areainsights": "0.5.0",

librarian.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ libraries:
146146
python:
147147
default_version: v1
148148
- name: google-apps-chat
149-
version: 0.10.1
149+
version: 0.10.2
150150
apis:
151151
- path: google/chat/v1
152152
python:
@@ -227,7 +227,7 @@ libraries:
227227
metadata_name_override: area120tables
228228
default_version: v1alpha1
229229
- name: google-auth
230-
version: 2.55.2
230+
version: 2.56.0
231231
python:
232232
library_type: AUTH
233233
- name: google-auth-httplib2
@@ -348,7 +348,7 @@ libraries:
348348
metadata_name_override: apigeeconnect
349349
default_version: v1
350350
- name: google-cloud-apigee-registry
351-
version: 0.10.0
351+
version: 0.10.1
352352
skip_generate: true
353353
- name: google-cloud-apihub
354354
version: 0.7.0
@@ -670,7 +670,7 @@ libraries:
670670
metadata_name_override: billingbudgets
671671
default_version: v1
672672
- name: google-cloud-binary-authorization
673-
version: 1.18.0
673+
version: 1.19.0
674674
apis:
675675
- path: google/cloud/binaryauthorization/v1
676676
- path: google/cloud/binaryauthorization/v1beta1
@@ -1045,7 +1045,7 @@ libraries:
10451045
metadata_name_override: documentai
10461046
default_version: v1
10471047
- name: google-cloud-documentai-toolbox
1048-
version: 0.17.0
1048+
version: 0.17.1
10491049
python:
10501050
library_type: OTHER
10511051
metadata_name_override: documentai-toolbox
@@ -1429,7 +1429,7 @@ libraries:
14291429
metadata_name_override: memcache
14301430
default_version: v1
14311431
- name: google-cloud-memorystore
1432-
version: 0.5.1
1432+
version: 0.5.2
14331433
apis:
14341434
- path: google/cloud/memorystore/v1
14351435
- path: google/cloud/memorystore/v1beta
@@ -1956,7 +1956,7 @@ libraries:
19561956
metadata_name_override: speech
19571957
default_version: v1
19581958
- name: google-cloud-storage
1959-
version: 3.12.1
1959+
version: 3.13.0
19601960
apis:
19611961
- path: google/storage/v2
19621962
python:
@@ -2234,7 +2234,7 @@ libraries:
22342234
- python-gapic-name=developer_knowledge
22352235
default_version: v1
22362236
- name: google-devicesandservices-health
2237-
version: 0.1.0
2237+
version: 0.1.1
22382238
apis:
22392239
- path: google/devicesandservices/health/v4
22402240
copyright_year: "2026"

packages/bigframes/testing/constraints-3.11.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ tornado==6.4.2
569569
tqdm==4.67.1
570570
traitlets==5.7.1
571571
traittypes==0.2.1
572-
transformers==5.3.0
572+
transformers==5.5.0
573573
treelite==4.4.1
574574
treescope==0.1.9
575575
triton==3.2.0

packages/google-api-core/google/api_core/exceptions.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,11 @@
1818
on :mod:`google.api_core`, including both HTTP and gRPC clients.
1919
"""
2020

21-
from __future__ import absolute_import
22-
from __future__ import unicode_literals
21+
from __future__ import absolute_import, unicode_literals
2322

2423
import http.client
25-
from typing import Optional, Dict
2624
import warnings
25+
from typing import Dict, Optional
2726

2827
from google.rpc import error_details_pb2
2928

@@ -657,9 +656,20 @@ def from_grpc_error(rpc_exc):
657656
grpc is not None and isinstance(rpc_exc, grpc.Call)
658657
) or _is_informative_grpc_error(rpc_exc):
659658
details, err_info = _parse_grpc_error_details(rpc_exc)
659+
message = rpc_exc.details()
660+
if (
661+
grpc is not None
662+
and rpc_exc.code() == grpc.StatusCode.UNIMPLEMENTED
663+
and "Received http2 header with status: 404" in message
664+
):
665+
message = (
666+
f"{message}. This usually indicates that the 'api_endpoint' "
667+
"configuration in ClientOptions is incorrect, contains a typo, "
668+
"or is an invalid regional endpoint for this service."
669+
)
660670
return from_grpc_status(
661671
rpc_exc.code(),
662-
rpc_exc.details(),
672+
message,
663673
errors=(rpc_exc,),
664674
details=details,
665675
response=rpc_exc,

packages/google-api-core/tests/unit/test_exceptions.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@
2525
except ImportError: # pragma: NO COVER
2626
grpc = rpc_status = None
2727

28-
from google.api_core import exceptions
2928
from google.protobuf import any_pb2, json_format
3029
from google.rpc import error_details_pb2, status_pb2
3130

31+
from google.api_core import exceptions
32+
3233

3334
def test_create_google_cloud_error():
3435
exception = exceptions.GoogleAPICallError("Testing")
@@ -393,3 +394,18 @@ def test_error_details_from_grpc_response_unknown_error():
393394
and exception.domain is None
394395
and exception.metadata is None
395396
)
397+
398+
399+
@pytest.mark.skipif(grpc is None, reason="No grpc")
400+
def test_from_grpc_error_misleading_404():
401+
message = "Received http2 header with status: 404"
402+
error = mock.create_autospec(grpc.Call, instance=True)
403+
error.code.return_value = grpc.StatusCode.UNIMPLEMENTED
404+
error.details.return_value = message
405+
406+
exception = exceptions.from_grpc_error(error)
407+
408+
assert isinstance(exception, exceptions.MethodNotImplemented)
409+
assert exception.grpc_status_code == grpc.StatusCode.UNIMPLEMENTED
410+
assert "Received http2 header with status: 404" in exception.message
411+
assert "api_endpoint" in exception.message

packages/google-apps-chat/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44

55
[1]: https://pypi.org/project/google-apps-chat/#history
66

7+
## [0.10.2](https://github.com/googleapis/google-cloud-python/compare/google-apps-chat-v0.10.1...google-apps-chat-v0.10.2) (2026-07-13)
8+
9+
10+
### Features
11+
12+
* update googleapis and regenerate ([#17678](https://github.com/googleapis/google-cloud-python/issues/17678)) ([670917c](https://github.com/googleapis/google-cloud-python/commit/670917c9cff5b93983bb75790170716e917b72bb))
13+
714
## [0.10.1](https://github.com/googleapis/google-cloud-python/compare/google-apps-chat-v0.10.0...google-apps-chat-v0.10.1) (2026-06-25)
815

916

packages/google-apps-chat/google/apps/chat/gapic_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515
#
16-
__version__ = "0.10.1" # {x-release-please-version}
16+
__version__ = "0.10.2" # {x-release-please-version}

packages/google-apps-chat/google/apps/chat_v1/gapic_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515
#
16-
__version__ = "0.10.1" # {x-release-please-version}
16+
__version__ = "0.10.2" # {x-release-please-version}

packages/google-apps-chat/samples/generated_samples/snippet_metadata_google.chat.v1.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
],
99
"language": "PYTHON",
1010
"name": "google-apps-chat",
11-
"version": "0.10.1"
11+
"version": "0.10.2"
1212
},
1313
"snippets": [
1414
{

0 commit comments

Comments
 (0)