diff --git a/.librarian/generator-input/client-post-processing/pubsub-integration.yaml b/.librarian/generator-input/client-post-processing/pubsub-integration.yaml index f71a623a4b8e..f91859f425ec 100644 --- a/.librarian/generator-input/client-post-processing/pubsub-integration.yaml +++ b/.librarian/generator-input/client-post-processing/pubsub-integration.yaml @@ -382,7 +382,7 @@ replacements: - "packages/google-cloud-pubsub/setup.py" before: '([ \t]+)("grpc-google-iam-v1.*",\n)\]\nextras = \{\}' after: |- - \g<1>\g<2>\g<1>"grpcio-status >= 1.44.0", + \g<1>\g<2>\g<1>"grpcio-status >= 1.51.3", \g<1>"opentelemetry-api >= 1.27.0", \g<1>"opentelemetry-sdk >= 1.27.0", ] @@ -511,3 +511,27 @@ replacements: \g<1>"pubsub_v1/**", \g<1>"_build", count: 1 + + - paths: + - "packages/google-cloud-pubsub/testing/constraints-3.10.txt" + before: 'grpc-google-iam-v1==0\.14\.0\n(?!grpcio-status)' + after: |- + grpc-google-iam-v1==0.14.0 + grpcio-status==1.51.3 + opentelemetry-api==1.27.0 + opentelemetry-sdk==1.27.0 + count: 1 + + - paths: + - "packages/google-cloud-pubsub/testing/constraints-3.10.txt" + before: 'grpcio==1.44.0' + after: 'grpcio==1.51.3' + count: 1 + + - paths: + - "packages/google-cloud-pubsub/setup.py" + before: '"grpcio-status >= 1\.44\.0",' + after: '"grpcio-status >= 1.51.3",' + count: 1 + + diff --git a/librarian.yaml b/librarian.yaml index 51c51b3ccc83..a93d463f50cd 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -1662,7 +1662,6 @@ libraries: version: 2.38.0 apis: - path: google/pubsub/v1 - skip_generate: true python: library_type: GAPIC_COMBO opt_args_by_api: diff --git a/packages/google-cloud-pubsub/docs/conf.py b/packages/google-cloud-pubsub/docs/conf.py index ad9bd9317be5..5655c8a097d0 100644 --- a/packages/google-cloud-pubsub/docs/conf.py +++ b/packages/google-cloud-pubsub/docs/conf.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -83,7 +83,7 @@ # General information about the project. project = "google-cloud-pubsub" -copyright = "2025, Google, LLC" +copyright = "2026, Google, LLC" author = "Google APIs" # The version info for the project you're documenting, acts as replacement for diff --git a/packages/google-cloud-pubsub/google/pubsub_v1/__init__.py b/packages/google-cloud-pubsub/google/pubsub_v1/__init__.py index 27f974a4070d..b766bd04eff7 100644 --- a/packages/google-cloud-pubsub/google/pubsub_v1/__init__.py +++ b/packages/google-cloud-pubsub/google/pubsub_v1/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,13 +21,7 @@ __version__ = package_version.__version__ -if sys.version_info >= (3, 8): # pragma: NO COVER - from importlib import metadata -else: # pragma: NO COVER - # TODO(https://github.com/googleapis/python-api-core/issues/835): Remove - # this code path once we drop support for Python 3.7 - import importlib_metadata as metadata - +from importlib import metadata from .services.publisher import PublisherAsyncClient, PublisherClient from .services.schema_service import SchemaServiceAsyncClient, SchemaServiceClient @@ -116,28 +110,17 @@ # An older version of api_core is installed which does not define the # functions above. We do equivalent checks manually. try: - import sys import warnings _py_version_str = sys.version.split()[0] _package_label = "google.pubsub_v1" - if sys.version_info < (3, 9): + if sys.version_info < (3, 10): warnings.warn( "You are using a non-supported Python version " + f"({_py_version_str}). Google will not post any further " + f"updates to {_package_label} supporting this Python version. " + "Please upgrade to the latest Python version, or at " - + f"least to Python 3.9, and then update {_package_label}.", - FutureWarning, - ) - if sys.version_info[:2] == (3, 9): - warnings.warn( - f"You are using a Python version ({_py_version_str}) " - + f"which Google will stop supporting in {_package_label} in " - + "January 2026. Please " - + "upgrade to the latest Python version, or at " - + "least to Python 3.10, before then, and " - + f"then update {_package_label}.", + + f"least to Python 3.10, and then update {_package_label}.", FutureWarning, ) diff --git a/packages/google-cloud-pubsub/noxfile.py b/packages/google-cloud-pubsub/noxfile.py index 0071c6b0f230..55b1085590cc 100644 --- a/packages/google-cloud-pubsub/noxfile.py +++ b/packages/google-cloud-pubsub/noxfile.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,7 +31,6 @@ LINT_PATHS.append("samples") ALL_PYTHON = [ - "3.9", "3.10", "3.11", "3.12", @@ -439,7 +438,6 @@ def docs(session): 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", diff --git a/packages/google-cloud-pubsub/setup.py b/packages/google-cloud-pubsub/setup.py index e15ae204c9ae..be01fa27e926 100644 --- a/packages/google-cloud-pubsub/setup.py +++ b/packages/google-cloud-pubsub/setup.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,7 @@ release_status = "Development Status :: 5 - Production/Stable" dependencies = [ - "google-api-core[grpc] >= 2.11.0, <3.0.0", + "google-api-core[grpc] >= 2.17.1, <3.0.0", # Exclude incompatible versions of `google-auth` # See https://github.com/googleapis/google-cloud-python/issues/12364 "google-auth >= 2.14.1, <3.0.0,!=2.24.0,!=2.25.0", @@ -48,7 +48,7 @@ "proto-plus >= 1.25.0, <2.0.0; python_version >= '3.13'", "protobuf >= 4.25.8, < 8.0.0", "grpc-google-iam-v1 >= 0.14.0, <1.0.0", - "grpcio-status >= 1.33.2", + "grpcio-status >= 1.51.3", "opentelemetry-api >= 1.27.0", "opentelemetry-sdk >= 1.27.0", ] @@ -74,7 +74,7 @@ long_description=readme, author="Google LLC", author_email="googleapis-packages@google.com", - license="Apache 2.0", + license="Apache-2.0", url=url, classifiers=[ release_status, @@ -82,7 +82,6 @@ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -93,7 +92,7 @@ ], platforms="Posix; MacOS X; Windows", packages=packages, - python_requires=">=3.9", + python_requires=">=3.10", install_requires=dependencies, extras_require=extras, include_package_data=True, diff --git a/packages/google-cloud-pubsub/testing/constraints-3.10.txt b/packages/google-cloud-pubsub/testing/constraints-3.10.txt index 1cd0c5a2c3d4..aa2a4f1e90a4 100644 --- a/packages/google-cloud-pubsub/testing/constraints-3.10.txt +++ b/packages/google-cloud-pubsub/testing/constraints-3.10.txt @@ -1,11 +1,15 @@ -# -*- coding: utf-8 -*- -# This constraints file is required for unit tests. -# List all library dependencies and extras in this file. -google-api-core -google-auth -grpcio -proto-plus -protobuf -# cryptography is a direct dependency of google-auth -cryptography -grpc-google-iam-v1 +# This constraints file is used to check that lower bounds +# are correct in setup.py +# List all library dependencies and extras in this file, +# pinning their versions to their lower bounds. +# For example, if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0", +# then this file should have google-cloud-foo==1.14.0 +google-api-core==2.17.1 +google-auth==2.14.1 +grpcio==1.51.3 +proto-plus==1.22.3 +protobuf==4.25.8 +grpc-google-iam-v1==0.14.0 +grpcio-status==1.51.3 +opentelemetry-api==1.27.0 +opentelemetry-sdk==1.27.0 \ No newline at end of file diff --git a/packages/google-cloud-pubsub/testing/constraints-3.9.txt b/packages/google-cloud-pubsub/testing/constraints-3.9.txt deleted file mode 100644 index dcb9a9b3d8ed..000000000000 --- a/packages/google-cloud-pubsub/testing/constraints-3.9.txt +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -# This constraints file is used to check that lower bounds -# are correct in setup.py -# List all library dependencies and extras in this file, -# pinning their versions to their lower bounds. -# For example, if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0", -# then this file should have google-cloud-foo==1.14.0 -google-api-core==2.21.0 -google-auth==2.35.0 -# TODO(https://github.com/googleapis/gapic-generator-python/issues/2453) -# Add the minimum supported version of grpcio to constraints files -proto-plus==1.22.3 -protobuf==4.25.8 -grpc-google-iam-v1==0.14.0 diff --git a/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_publisher.py b/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_publisher.py index 372555526f1f..6cdb9c081b3f 100644 --- a/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_publisher.py +++ b/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_publisher.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,18 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import os - -# try/except added for compatibility with python < 3.8 -try: - from unittest import mock - from unittest.mock import AsyncMock # pragma: NO COVER -except ImportError: # pragma: NO COVER - import mock - import json import math +import os from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock import grpc import pytest @@ -3120,11 +3114,7 @@ async def test_list_topics_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_topics(request={}) - ).pages: + async for page_ in (await client.list_topics(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -3672,11 +3662,7 @@ async def test_list_topic_subscriptions_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_topic_subscriptions(request={}) - ).pages: + async for page_ in (await client.list_topic_subscriptions(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -4221,11 +4207,7 @@ async def test_list_topic_snapshots_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_topic_snapshots(request={}) - ).pages: + async for page_ in (await client.list_topic_snapshots(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -4898,7 +4880,7 @@ def test_create_topic_rest_required_fields(request_type=pubsub.Topic): expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_create_topic_rest_unset_required_fields(): @@ -5068,7 +5050,7 @@ def test_update_topic_rest_required_fields(request_type=pubsub.UpdateTopicReques expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_update_topic_rest_unset_required_fields(): @@ -5253,7 +5235,7 @@ def test_publish_rest_required_fields(request_type=pubsub.PublishRequest): expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_publish_rest_unset_required_fields(): @@ -5438,7 +5420,7 @@ def test_get_topic_rest_required_fields(request_type=pubsub.GetTopicRequest): expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_get_topic_rest_unset_required_fields(): @@ -5619,7 +5601,7 @@ def test_list_topics_rest_required_fields(request_type=pubsub.ListTopicsRequest) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_topics_rest_unset_required_fields(): @@ -5876,7 +5858,7 @@ def test_list_topic_subscriptions_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_topic_subscriptions_rest_unset_required_fields(): @@ -6135,7 +6117,7 @@ def test_list_topic_snapshots_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_topic_snapshots_rest_unset_required_fields(): @@ -6376,7 +6358,7 @@ def test_delete_topic_rest_required_fields(request_type=pubsub.DeleteTopicReques expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_delete_topic_rest_unset_required_fields(): @@ -6554,7 +6536,7 @@ def test_detach_subscription_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_detach_subscription_rest_unset_required_fields(): diff --git a/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_schema_service.py b/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_schema_service.py index 3c3786070158..59323f8b1adf 100644 --- a/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_schema_service.py +++ b/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_schema_service.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,18 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import os - -# try/except added for compatibility with python < 3.8 -try: - from unittest import mock - from unittest.mock import AsyncMock # pragma: NO COVER -except ImportError: # pragma: NO COVER - import mock - import json import math +import os from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock import grpc import pytest @@ -2512,11 +2506,7 @@ async def test_list_schemas_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_schemas(request={}) - ).pages: + async for page_ in (await client.list_schemas(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -3058,11 +3048,7 @@ async def test_list_schema_revisions_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_schema_revisions(request={}) - ).pages: + async for page_ in (await client.list_schema_revisions(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -5100,7 +5086,7 @@ def test_create_schema_rest_required_fields(request_type=gp_schema.CreateSchemaR expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_create_schema_rest_unset_required_fields(): @@ -5288,7 +5274,7 @@ def test_get_schema_rest_required_fields(request_type=schema.GetSchemaRequest): expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_get_schema_rest_unset_required_fields(): @@ -5470,7 +5456,7 @@ def test_list_schemas_rest_required_fields(request_type=schema.ListSchemasReques expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_schemas_rest_unset_required_fields(): @@ -5729,7 +5715,7 @@ def test_list_schema_revisions_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_schema_revisions_rest_unset_required_fields(): @@ -5977,7 +5963,7 @@ def test_commit_schema_rest_required_fields(request_type=gp_schema.CommitSchemaR expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_commit_schema_rest_unset_required_fields(): @@ -6168,7 +6154,7 @@ def test_rollback_schema_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_rollback_schema_rest_unset_required_fields(): @@ -6362,7 +6348,7 @@ def test_delete_schema_revision_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_delete_schema_revision_rest_unset_required_fields(): @@ -6536,7 +6522,7 @@ def test_delete_schema_rest_required_fields(request_type=schema.DeleteSchemaRequ expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_delete_schema_rest_unset_required_fields(): @@ -6711,7 +6697,7 @@ def test_validate_schema_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_validate_schema_rest_unset_required_fields(): @@ -6901,7 +6887,7 @@ def test_validate_message_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_validate_message_rest_unset_required_fields(): diff --git a/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_subscriber.py b/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_subscriber.py index 2368c649c2f0..ca250e0b68c4 100644 --- a/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_subscriber.py +++ b/packages/google-cloud-pubsub/tests/unit/gapic/pubsub_v1/test_subscriber.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,18 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import os - -# try/except added for compatibility with python < 3.8 -try: - from unittest import mock - from unittest.mock import AsyncMock # pragma: NO COVER -except ImportError: # pragma: NO COVER - import mock - import json import math +import os from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock import grpc import pytest @@ -2951,11 +2945,7 @@ async def test_list_subscriptions_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_subscriptions(request={}) - ).pages: + async for page_ in (await client.list_subscriptions(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -5608,11 +5598,7 @@ async def test_list_snapshots_async_pages(): RuntimeError, ) pages = [] - # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` - # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 - async for page_ in ( # pragma: no branch - await client.list_snapshots(request={}) - ).pages: + async for page_ in (await client.list_snapshots(request={})).pages: pages.append(page_) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token @@ -6938,7 +6924,7 @@ def test_create_subscription_rest_required_fields(request_type=pubsub.Subscripti expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_create_subscription_rest_unset_required_fields(): @@ -7130,7 +7116,7 @@ def test_get_subscription_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_get_subscription_rest_unset_required_fields(): @@ -7307,7 +7293,7 @@ def test_update_subscription_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_update_subscription_rest_unset_required_fields(): @@ -7508,7 +7494,7 @@ def test_list_subscriptions_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_subscriptions_rest_unset_required_fields(): @@ -7754,7 +7740,7 @@ def test_delete_subscription_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_delete_subscription_rest_unset_required_fields(): @@ -7939,7 +7925,7 @@ def test_modify_ack_deadline_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_modify_ack_deadline_rest_unset_required_fields(): @@ -8128,7 +8114,7 @@ def test_acknowledge_rest_required_fields(request_type=pubsub.AcknowledgeRequest expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_acknowledge_rest_unset_required_fields(): @@ -8317,7 +8303,7 @@ def test_pull_rest_required_fields(request_type=pubsub.PullRequest): expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_pull_rest_unset_required_fields(): @@ -8520,7 +8506,7 @@ def test_modify_push_config_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_modify_push_config_rest_unset_required_fields(): @@ -8704,7 +8690,7 @@ def test_get_snapshot_rest_required_fields(request_type=pubsub.GetSnapshotReques expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_get_snapshot_rest_unset_required_fields(): @@ -8885,7 +8871,7 @@ def test_list_snapshots_rest_required_fields(request_type=pubsub.ListSnapshotsRe expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_list_snapshots_rest_unset_required_fields(): @@ -9135,7 +9121,7 @@ def test_create_snapshot_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_create_snapshot_rest_unset_required_fields(): @@ -9317,7 +9303,7 @@ def test_update_snapshot_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_update_snapshot_rest_unset_required_fields(): @@ -9501,7 +9487,7 @@ def test_delete_snapshot_rest_required_fields( expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_delete_snapshot_rest_unset_required_fields(): @@ -9674,7 +9660,7 @@ def test_seek_rest_required_fields(request_type=pubsub.SeekRequest): expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] - assert expected_params == actual_params + assert sorted(expected_params) == sorted(actual_params) def test_seek_rest_unset_required_fields():