diff --git a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/__init__.py.j2 b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/__init__.py.j2 index 79ff49bf35c7..d9486113a57e 100644 --- a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/__init__.py.j2 +++ b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/__init__.py.j2 @@ -63,6 +63,23 @@ from .types.{{ proto.module_name }} import {{ enum.name }} api_core.check_python_version("{{package_path}}") api_core.check_dependency_versions("{{package_path}}") +_PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" +) + +api_core.warn_deprecation_for_versions_less_than( + "{{package_path}}", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, +) + {# Define __all__. This requires the full set of imported names, so we iterate over them again. diff --git a/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/__init__.py b/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/__init__.py index c4cff9be0634..4d5c5249fee8 100755 --- a/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/__init__.py @@ -121,6 +121,30 @@ api_core.check_python_version("google.cloud.asset_v1") api_core.check_dependency_versions("google.cloud.asset_v1") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.asset_v1", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'AssetServiceAsyncClient', 'AnalyzeIamPolicyLongrunningMetadata', diff --git a/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/__init__.py b/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/__init__.py index 9c0c65db39c0..cd0648260121 100755 --- a/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/__init__.py @@ -47,6 +47,30 @@ api_core.check_python_version("google.iam.credentials_v1") api_core.check_dependency_versions("google.iam.credentials_v1") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.iam.credentials_v1", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'IAMCredentialsAsyncClient', 'GenerateAccessTokenRequest', diff --git a/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/__init__.py b/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/__init__.py index e9481dc6afe7..c9c55adbd3a5 100755 --- a/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/__init__.py @@ -119,6 +119,30 @@ api_core.check_python_version("google.cloud.eventarc_v1") api_core.check_dependency_versions("google.cloud.eventarc_v1") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.eventarc_v1", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'EventarcAsyncClient', 'Channel', diff --git a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/__init__.py b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/__init__.py index 5e2f12d53746..7bcc8912c88d 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/__init__.py @@ -123,6 +123,30 @@ api_core.check_python_version("google.cloud.logging_v2") api_core.check_dependency_versions("google.cloud.logging_v2") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.logging_v2", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'ConfigServiceV2AsyncClient', 'LoggingServiceV2AsyncClient', diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/__init__.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/__init__.py index b58fac5882bb..d7e5e3cf1606 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/__init__.py @@ -123,6 +123,30 @@ api_core.check_python_version("google.cloud.logging_v2") api_core.check_dependency_versions("google.cloud.logging_v2") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.logging_v2", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'BaseConfigServiceV2AsyncClient', 'BaseMetricsServiceV2AsyncClient', diff --git a/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/__init__.py b/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/__init__.py index 365eb099e564..3867229a4c5b 100755 --- a/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/__init__.py @@ -65,6 +65,30 @@ api_core.check_python_version("google.cloud.redis_v1") api_core.check_dependency_versions("google.cloud.redis_v1") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.redis_v1", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'CloudRedisAsyncClient', 'CloudRedisClient', diff --git a/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/__init__.py b/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/__init__.py index 1b8d17cc75ca..d98a511a61cb 100755 --- a/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/__init__.py @@ -58,6 +58,30 @@ api_core.check_python_version("google.cloud.redis_v1") api_core.check_dependency_versions("google.cloud.redis_v1") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.redis_v1", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'CloudRedisAsyncClient', 'CloudRedisClient', diff --git a/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/__init__.py b/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/__init__.py index 08bda73fa39f..a28189c1c915 100755 --- a/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/__init__.py +++ b/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/__init__.py @@ -67,6 +67,30 @@ api_core.check_python_version("google.cloud.storagebatchoperations_v1") api_core.check_dependency_versions("google.cloud.storagebatchoperations_v1") +try: + from google.api_core._python_package_support import ( + warn_deprecation_for_versions_less_than, + ) + + _PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" + ) + + warn_deprecation_for_versions_less_than( + "google.cloud.storagebatchoperations_v1", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, + ) +except Exception: + pass + __all__ = ( 'StorageBatchOperationsAsyncClient', 'BucketList', diff --git a/packages/google-api-core/google/api_core/_python_package_support.py b/packages/google-api-core/google/api_core/_python_package_support.py index a6c35d8c1804..39e67a806688 100644 --- a/packages/google-api-core/google/api_core/_python_package_support.py +++ b/packages/google-api-core/google/api_core/_python_package_support.py @@ -30,14 +30,37 @@ # about deprecated and unsupported versions. DependencyConstraint = namedtuple( "DependencyConstraint", - ["package_name", "minimum_fully_supported_version", "recommended_version"], + [ + "package_name", + "minimum_fully_supported_version", + "recommended_version", + "message_template", + ], + defaults=(None, None), ) + +PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python packages will raise their minimum requirements " + "(including google-api-core, grpcio, and grpcio-status) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" +) + _PACKAGE_DEPENDENCY_WARNINGS = [ DependencyConstraint( "google.protobuf", minimum_fully_supported_version="6.33.5", recommended_version="6.x", - ) + ), + DependencyConstraint( + "grpcio", + minimum_fully_supported_version="1.83.0", + recommended_version="1.83.x", + message_template=PQC_GRPC_WARNING_TEMPLATE, + ), ] @@ -162,7 +185,7 @@ def warn_deprecation_for_versions_less_than( ) = _get_distribution_and_import_packages(consumer_import_package) recommendation = ( - " (we recommend {recommended_version})" if recommended_version else "" + f" (we recommend {recommended_version})" if recommended_version else "" ) message_template = message_template or _flatten_message( """ @@ -222,4 +245,5 @@ def check_dependency_versions( package_info.package_name, package_info.minimum_fully_supported_version, recommended_version=package_info.recommended_version, + message_template=package_info.message_template, ) diff --git a/packages/google-api-core/tests/unit/test_python_package_support.py b/packages/google-api-core/tests/unit/test_python_package_support.py index 42e8de673dea..b928fdec6a06 100644 --- a/packages/google-api-core/tests/unit/test_python_package_support.py +++ b/packages/google-api-core/tests/unit/test_python_package_support.py @@ -18,6 +18,7 @@ import pytest from google.api_core._python_package_support import ( + PQC_GRPC_WARNING_TEMPLATE, DependencyConstraint, DependencyVersion, check_dependency_versions, @@ -37,11 +38,10 @@ def test_get_dependency_version(mocker, version_string_to_test): parse_version_to_tuple(version_string_to_test), version_string_to_test ) assert get_dependency_version("some-package") == expected - mock_importlib.assert_called_once_with("some-package") # Test package not found - mock_importlib.side_effect = ImportError + mock_importlib.side_effect = Exception assert get_dependency_version("not-a-package") == DependencyVersion(None, "--") @@ -125,8 +125,40 @@ def test_check_dependency_versions_with_custom_warnings(mock_warn): assert mock_warn.call_count == 2 mock_warn.assert_any_call( - "my-consumer", "pkg1", "1.0.0", recommended_version="2.0.0" + "my-consumer", + "pkg1", + "1.0.0", + recommended_version="2.0.0", + message_template=None, + ) + mock_warn.assert_any_call( + "my-consumer", + "pkg2", + "2.0.0", + recommended_version="3.0.0", + message_template=None, + ) + + +@patch( + "google.api_core._python_package_support.warn_deprecation_for_versions_less_than" +) +def test_check_dependency_versions_default(mock_warn): + """Test check_dependency_versions with default package dependency warnings.""" + check_dependency_versions("my-consumer") + + assert mock_warn.call_count == 2 + mock_warn.assert_any_call( + "my-consumer", + "google.protobuf", + "6.33.5", + recommended_version="6.x", + message_template=None, ) mock_warn.assert_any_call( - "my-consumer", "pkg2", "2.0.0", recommended_version="3.0.0" + "my-consumer", + "grpcio", + "1.83.0", + recommended_version="1.83.x", + message_template=PQC_GRPC_WARNING_TEMPLATE, ) diff --git a/packages/google-auth/google/auth/_helpers.py b/packages/google-auth/google/auth/_helpers.py index 86c48c1e525c..3abc0b6cc9fd 100644 --- a/packages/google-auth/google/auth/_helpers.py +++ b/packages/google-auth/google/auth/_helpers.py @@ -534,3 +534,19 @@ def response_log(logger: logging.Logger, response: Any) -> None: if is_logging_enabled(logger): json_response = _parse_response(response) _response_log_base(logger, json_response) + + +def _parse_version_to_tuple(version_string): + """Safely converts a semantic version string to a comparable tuple of integers.""" + parts = [] + for part in version_string.split("."): + digits = "" + for c in part: + if not c.isdigit(): + break + digits += c + if digits: + parts.append(int(digits)) + else: + break + return tuple(parts) diff --git a/packages/google-auth/google/auth/transport/grpc.py b/packages/google-auth/google/auth/transport/grpc.py index 5930a07f1d08..0a4beaf46e57 100644 --- a/packages/google-auth/google/auth/transport/grpc.py +++ b/packages/google-auth/google/auth/transport/grpc.py @@ -17,7 +17,9 @@ from __future__ import absolute_import import logging +import warnings +from google.auth import _helpers from google.auth import exceptions from google.auth.transport import _mtls_helper from google.auth.transport import mtls @@ -30,6 +32,18 @@ "gRPC is not installed from please install the grpcio package to use the gRPC transport." ) from caught_exc +_grpc_ver_str = getattr(grpc, "__version__", None) +if _grpc_ver_str and _helpers._parse_version_to_tuple(_grpc_ver_str) < (1, 83, 0): + warnings.warn( + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "google-auth will raise its minimum requirements " + "to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography", + FutureWarning, + ) + _LOGGER = logging.getLogger(__name__) diff --git a/packages/google-auth/tests/test__helpers.py b/packages/google-auth/tests/test__helpers.py index e2d8e7b20c03..ad2de3eeca6e 100644 --- a/packages/google-auth/tests/test__helpers.py +++ b/packages/google-auth/tests/test__helpers.py @@ -697,3 +697,10 @@ def test_out_of_range(self): with pytest.raises((OverflowError, OSError, ValueError)): # Large enough to fail on most systems (Year 300,000+) _helpers.utcfromtimestamp(9999999999999) + + +def test_parse_version_to_tuple(): + assert _helpers._parse_version_to_tuple("1.83.0") == (1, 83, 0) + assert _helpers._parse_version_to_tuple("1.83.1rc1") == (1, 83, 1) + assert _helpers._parse_version_to_tuple("1.83.0dev0") == (1, 83, 0) + assert _helpers._parse_version_to_tuple("2.0") == (2, 0) diff --git a/packages/google-cloud-bigquery/google/cloud/bigquery/__init__.py b/packages/google-cloud-bigquery/google/cloud/bigquery/__init__.py index fa03156e2e26..b5adf219ad65 100644 --- a/packages/google-cloud-bigquery/google/cloud/bigquery/__init__.py +++ b/packages/google-cloud-bigquery/google/cloud/bigquery/__init__.py @@ -30,6 +30,8 @@ import sys import warnings +import google.api_core as api_core + from google.cloud.bigquery import version as bigquery_version __version__ = bigquery_version.__version__ @@ -132,6 +134,23 @@ FutureWarning, ) +_PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core and grpcio) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" +) + +api_core.warn_deprecation_for_versions_less_than( + "google.cloud.bigquery", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, +) + __all__ = [ "__version__", "Client", diff --git a/packages/google-cloud-ndb/google/cloud/ndb/__init__.py b/packages/google-cloud-ndb/google/cloud/ndb/__init__.py index 153ff9d1db7c..695ab7a96cfe 100644 --- a/packages/google-cloud-ndb/google/cloud/ndb/__init__.py +++ b/packages/google-cloud-ndb/google/cloud/ndb/__init__.py @@ -21,6 +21,7 @@ .. autodata:: __all__ """ +import google.api_core as api_core from google.cloud.ndb import version __version__: str = version.__version__ @@ -135,6 +136,26 @@ wait_any, ) +api_core.check_python_version("google.cloud.ndb") +api_core.check_dependency_versions("google.cloud.ndb") + +_PQC_GRPC_WARNING_TEMPLATE = ( + "Package {consumer_package} depends on {dependency_package}, currently installed at version {version_used_string}. " + "grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). " + "Support for non-PQC environments is deprecated. In October 2026, " + "Google Cloud Python client libraries will raise their minimum requirements " + "(including google-api-core) to enforce grpcio >= 1.83.0. " + "For more details on Google Cloud's post-quantum security migration, visit: " + "https://cloud.google.com/security/resources/post-quantum-cryptography" +) + +api_core.warn_deprecation_for_versions_less_than( + "google.cloud.ndb", + "grpcio", + "1.83.0", + message_template=_PQC_GRPC_WARNING_TEMPLATE, +) + __all__ = [ "__version__", "AutoBatcher",