Browse Source

ref: upgrade protobuf (#39268)

for dependabot here: https://github.com/getsentry/getsentry/pull/8387
anthony sottile 2 years ago
parent
commit
56fb605b0e

+ 7 - 0
mypy.ini

@@ -205,3 +205,10 @@ ignore_missing_imports = True
 # TODO: these cause type errors when followed
 [mypy-snuba_sdk.*]
 follow_imports = skip
+
+# this package marks itself as typed but has no annotations
+[mypy-google.cloud.bigtable.*]
+follow_imports = skip
+# https://github.com/googleapis/python-api-core/pull/453
+[mypy-google.api_core.retry]
+follow_imports = skip

+ 9 - 9
requirements-base.txt

@@ -14,15 +14,15 @@ Django>=2.2.28
 djangorestframework>=3.12.4
 drf-spectacular>=0.22.1
 email-reply-parser>=0.5.12
-google-api-core>=1.32.0
-google-auth>=1.24.0
-google-cloud-bigtable>=1.6.1
-google-cloud-core>=1.5.0
-googleapis-common-protos>=1.56.2
-google-cloud-pubsub>=2.2.0
-google-cloud-storage>=1.35.0
-google-cloud-functions>=1.8.0
-google-cloud-spanner>=3.17.0
+google-api-core>=2.10.1
+google-auth>=1.35.0
+google-cloud-bigtable>=2.11.3
+google-cloud-core>=2.3.2
+google-cloud-functions>=1.8.1
+google-cloud-pubsub>=2.13.6
+google-cloud-spanner>=3.20.0
+google-cloud-storage>=2.5.0
+googleapis-common-protos>=1.56.4
 google-crc32c>=1.3.0
 isodate>=0.6.1
 jsonschema>=3.2.0

+ 13 - 14
requirements-dev-frozen.txt

@@ -44,19 +44,20 @@ filelock==3.7.0
 flake8==5.0.2
 flake8-bugbear==22.7.1
 freezegun==1.1.0
-google-api-core==1.32.0
+google-api-core==2.10.1
 google-auth==1.35.0
-google-cloud-bigtable==1.6.1
-google-cloud-core==1.5.0
-google-cloud-functions==1.8.0
-google-cloud-pubsub==2.2.0
-google-cloud-spanner==3.17.0
-google-cloud-storage==1.35.0
+google-cloud-bigtable==2.11.3
+google-cloud-core==2.3.2
+google-cloud-functions==1.8.1
+google-cloud-pubsub==2.13.6
+google-cloud-spanner==3.20.0
+google-cloud-storage==2.5.0
 google-crc32c==1.3.0
-google-resumable-media==1.3.3
-googleapis-common-protos==1.56.2
+google-resumable-media==2.3.3
+googleapis-common-protos==1.56.4
 grpc-google-iam-v1==0.12.4
-grpcio==1.47.0
+grpcio==1.48.1
+grpcio-status==1.48.1
 h11==0.13.0
 hiredis==0.3.1
 honcho==1.1.0
@@ -70,7 +71,6 @@ jmespath==0.10.0
 jsonschema==3.2.0
 kombu==4.6.11
 lazy-object-proxy==1.7.1
-libcst==0.4.3
 lxml==4.6.5
 maxminddb==2.0.3
 mccabe==0.7.0
@@ -104,8 +104,8 @@ platformdirs==2.5.2
 pluggy==0.13.1
 pre-commit==2.18.1
 progressbar2==3.41.0
-proto-plus==1.20.4
-protobuf==3.19.0
+proto-plus==1.22.1
+protobuf==4.21.6
 psycopg2-binary==2.8.6
 py==1.11.0
 pyasn1==0.4.5
@@ -174,7 +174,6 @@ types-redis==4.3.13
 types-requests==2.28.8
 types-urllib3==1.26.22
 typing-extensions==3.10.0.2
-typing-inspect==0.7.1
 ua-parser==0.10.0
 unidiff==0.7.4
 uritemplate==4.1.1

+ 13 - 15
requirements-frozen.txt

@@ -30,19 +30,20 @@ djangorestframework==3.12.4
 drf-spectacular==0.22.1
 email-reply-parser==0.5.12
 fido2==0.9.2
-google-api-core==1.32.0
+google-api-core==2.10.1
 google-auth==1.35.0
-google-cloud-bigtable==1.6.1
-google-cloud-core==1.5.0
-google-cloud-functions==1.8.0
-google-cloud-pubsub==2.2.0
-google-cloud-spanner==3.17.0
-google-cloud-storage==1.35.0
+google-cloud-bigtable==2.11.3
+google-cloud-core==2.3.2
+google-cloud-functions==1.8.1
+google-cloud-pubsub==2.13.6
+google-cloud-spanner==3.20.0
+google-cloud-storage==2.5.0
 google-crc32c==1.3.0
-google-resumable-media==1.3.3
-googleapis-common-protos==1.56.2
+google-resumable-media==2.3.3
+googleapis-common-protos==1.56.4
 grpc-google-iam-v1==0.12.4
-grpcio==1.47.0
+grpcio==1.48.1
+grpcio-status==1.48.1
 h11==0.13.0
 hiredis==0.3.1
 idna==2.10
@@ -51,14 +52,12 @@ isodate==0.6.1
 jmespath==0.10.0
 jsonschema==3.2.0
 kombu==4.6.11
-libcst==0.4.3
 lxml==4.6.5
 maxminddb==2.0.3
 milksnake==0.1.5
 mistune==2.0.4
 mmh3==3.0.0
 msgpack==1.0.4
-mypy-extensions==0.4.3
 natsort==8.1.0
 oauthlib==3.1.0
 outcome==1.2.0
@@ -69,8 +68,8 @@ phabricator==0.7.0
 phonenumberslite==8.12.0
 pillow==9.2.0
 progressbar2==3.41.0
-proto-plus==1.20.4
-protobuf==3.19.0
+proto-plus==1.22.1
+protobuf==4.21.6
 psycopg2-binary==2.8.6
 pyasn1==0.4.5
 pyasn1-modules==0.2.4
@@ -116,7 +115,6 @@ toronado==0.1.0
 trio==0.21.0
 trio-websocket==0.9.2
 typing-extensions==3.10.0.2
-typing-inspect==0.7.1
 ua-parser==0.10.0
 unidiff==0.7.4
 uritemplate==4.1.1

+ 1 - 1
src/sentry/analytics/pubsub.py

@@ -5,7 +5,7 @@ __all__ = ("PubSubAnalytics",)
 import logging
 
 from google.auth.exceptions import GoogleAuthError
-from google.cloud import pubsub_v1
+from google.cloud import pubsub_v1  # type: ignore[attr-defined]
 
 from sentry.utils.json import dumps
 

+ 1 - 1
src/sentry/sentry_metrics/indexer/cloudspanner/cloudspanner.py

@@ -4,7 +4,7 @@ from typing import Any, Mapping, Optional, Sequence, Set
 
 import google.api_core.exceptions
 from django.conf import settings
-from google.cloud import spanner
+from google.cloud import spanner  # type: ignore[attr-defined]
 
 from sentry.sentry_metrics.configuration import IndexerStorage, UseCaseKey, get_ingest_config
 from sentry.sentry_metrics.indexer.base import (

+ 1 - 1
src/sentry/utils/kvstore/bigtable.py

@@ -8,7 +8,7 @@ from typing import Any, Iterator, Mapping, Optional, Sequence, Tuple, cast
 from django.utils import timezone
 from google.api_core import exceptions, retry
 from google.cloud import bigtable
-from google.cloud.bigtable.row_data import PartialRowData
+from google.cloud.bigtable.row import PartialRowData
 from google.cloud.bigtable.row_set import RowSet
 from google.cloud.bigtable.table import Table
 

+ 1 - 10
tests/sentry/nodestore/bigtable/test_backend.py

@@ -3,7 +3,6 @@ from contextlib import contextmanager
 from unittest import mock
 
 import pytest
-from google.oauth2.credentials import Credentials
 from google.rpc.status_pb2 import Status
 
 from sentry.nodestore.bigtable.backend import BigtableKVStorage, BigtableNodeStorage
@@ -78,15 +77,7 @@ def get_temporary_bigtable_nodestorage() -> BigtableNodeStorage:
             "Bigtable is not available, set BIGTABLE_EMULATOR_HOST enironment variable to enable"
         )
 
-    # The bigtable emulator requires _something_ to be passed as credentials,
-    # even if they're totally bogus ones.
-    ns = BigtableNodeStorage(
-        project="test",
-        credentials=Credentials.from_authorized_user_info(
-            {key: "invalid" for key in ["client_id", "refresh_token", "client_secret"]}
-        ),
-    )
-
+    ns = BigtableNodeStorage(project="test")
     ns.bootstrap()
 
     try:

+ 3 - 19
tests/sentry/utils/kvstore/test_bigtable.py

@@ -3,36 +3,20 @@ import os
 from typing import Optional
 
 import pytest
-from google.oauth2.credentials import Credentials
 
 from sentry.utils.kvstore.bigtable import BigtableKVStorage
 
 
-def get_credentials() -> Credentials:
+def create_store(request, compression: Optional[str] = None) -> BigtableKVStorage:
     if "BIGTABLE_EMULATOR_HOST" not in os.environ:
         pytest.skip(
             "Bigtable is not available, set BIGTABLE_EMULATOR_HOST environment variable to enable"
         )
-
-    # The bigtable emulator requires _something_ to be passed as credentials,
-    # even if they're totally bogus ones.
-    return Credentials.from_authorized_user_info(
-        {key: "invalid" for key in ["client_id", "refresh_token", "client_secret"]}
-    )
-
-
-credentials = pytest.fixture(get_credentials)
-
-
-def create_store(
-    request, credentials: Credentials, compression: Optional[str] = None
-) -> BigtableKVStorage:
     store = BigtableKVStorage(
         project="test",
         instance="test",
         table_name="test",
         compression=compression,
-        client_options={"credentials": credentials},
     )
     store.bootstrap()
     request.addfinalizer(store.destroy)
@@ -40,8 +24,8 @@ def create_store(
 
 
 @pytest.fixture
-def store_factory(request, credentials: Credentials):
-    return functools.partial(create_store, request, credentials)
+def store_factory(request):
+    return functools.partial(create_store, request)
 
 
 @pytest.mark.parametrize(

+ 2 - 2
tests/sentry/utils/kvstore/test_common.py

@@ -22,10 +22,10 @@ class Properties:
 @pytest.fixture(params=["bigtable", "cache/default", "memory", "memory+cachewrapper", "redis"])
 def properties(request) -> Properties:
     if request.param == "bigtable":
-        from tests.sentry.utils.kvstore.test_bigtable import create_store, get_credentials
+        from tests.sentry.utils.kvstore.test_bigtable import create_store
 
         return Properties(
-            create_store(request, get_credentials()),
+            create_store(request),
             keys=(f"{i}" for i in itertools.count()),
             values=(f"{i}".encode() for i in itertools.count()),
         )