From 255ca6846c6e4dbce768b21237f284b3449c2646 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Tue, 29 Aug 2017 02:51:45 -0700 Subject: [PATCH 1/5] Auto-update dependencies. --- appengine/flexible/cloudsql_postgresql/requirements.txt | 2 +- appengine/flexible/datastore/requirements.txt | 2 +- appengine/flexible/django_cloudsql/requirements.txt | 2 +- appengine/flexible/storage/requirements.txt | 2 +- .../standard/endpoints-frameworks-v2/echo/requirements.txt | 2 +- auth/cloud-client/requirements.txt | 2 +- bigquery/cloud-client/requirements.txt | 2 +- bigtable/hello/requirements.txt | 4 ++-- bigtable/hello_happybase/requirements.txt | 4 ++-- bigtable/metricscaler/requirements.txt | 4 ++-- .../requirements.txt | 2 +- codelabs/flex_and_vision/requirements.txt | 6 +++--- container_engine/django_tutorial/requirements.txt | 2 +- datastore/cloud-client/requirements.txt | 2 +- dns/api/requirements.txt | 2 +- error_reporting/requirements.txt | 2 +- iot/api-client/scripts/requirements.txt | 2 +- language/cloud-client/v1/requirements.txt | 2 +- language/cloud-client/v1beta2/requirements.txt | 2 +- language/sentiment/requirements.txt | 2 +- logging/cloud-client/requirements.txt | 2 +- monitoring/api/v3/cloud-client/requirements.txt | 2 +- spanner/cloud-client/requirements.txt | 2 +- speech/cloud-client/requirements.txt | 2 +- storage/cloud-client/requirements.txt | 4 ++-- testing/requirements.txt | 2 +- translate/cloud-client/requirements.txt | 2 +- video/cloud-client/analyze/requirements.txt | 2 +- video/cloud-client/faces/requirements.txt | 2 +- video/cloud-client/labels/requirements.txt | 2 +- video/cloud-client/quickstart/requirements.txt | 2 +- video/cloud-client/shotchange/requirements.txt | 2 +- vision/cloud-client/crop_hints/requirements.txt | 2 +- vision/cloud-client/detect/requirements.txt | 2 +- vision/cloud-client/document_text/requirements.txt | 2 +- vision/cloud-client/face_detection/requirements.txt | 2 +- vision/cloud-client/quickstart/requirements.txt | 2 +- vision/cloud-client/web/requirements.txt | 2 +- 38 files changed, 44 insertions(+), 44 deletions(-) diff --git a/appengine/flexible/cloudsql_postgresql/requirements.txt b/appengine/flexible/cloudsql_postgresql/requirements.txt index 5ad51753ad83..7165d20ad126 100644 --- a/appengine/flexible/cloudsql_postgresql/requirements.txt +++ b/appengine/flexible/cloudsql_postgresql/requirements.txt @@ -1,4 +1,4 @@ Flask==0.12.2 Flask-SQLAlchemy==2.2 gunicorn==19.7.1 -psycopg2==2.7.3 +psycopg2==2.7.3.1 diff --git a/appengine/flexible/datastore/requirements.txt b/appengine/flexible/datastore/requirements.txt index e47b0c86985e..627538bd1312 100644 --- a/appengine/flexible/datastore/requirements.txt +++ b/appengine/flexible/datastore/requirements.txt @@ -1,3 +1,3 @@ Flask==0.12.2 -google-cloud-datastore==1.2.0 +google-cloud-datastore==1.3.0 gunicorn==19.7.1 diff --git a/appengine/flexible/django_cloudsql/requirements.txt b/appengine/flexible/django_cloudsql/requirements.txt index db0d5ff3cba3..97a4dfad9613 100644 --- a/appengine/flexible/django_cloudsql/requirements.txt +++ b/appengine/flexible/django_cloudsql/requirements.txt @@ -2,4 +2,4 @@ Django==1.11.4 mysqlclient==1.3.10 wheel==0.29.0 gunicorn==19.7.1 -psycopg2==2.7.3 +psycopg2==2.7.3.1 diff --git a/appengine/flexible/storage/requirements.txt b/appengine/flexible/storage/requirements.txt index aad4da111b08..a0191bc6f92e 100644 --- a/appengine/flexible/storage/requirements.txt +++ b/appengine/flexible/storage/requirements.txt @@ -1,3 +1,3 @@ Flask==0.12.2 -google-cloud-storage==1.3.2 +google-cloud-storage==1.4.0 gunicorn==19.7.1 diff --git a/appengine/standard/endpoints-frameworks-v2/echo/requirements.txt b/appengine/standard/endpoints-frameworks-v2/echo/requirements.txt index 958d45f2a96b..b7222a65ba59 100644 --- a/appengine/standard/endpoints-frameworks-v2/echo/requirements.txt +++ b/appengine/standard/endpoints-frameworks-v2/echo/requirements.txt @@ -1,2 +1,2 @@ -google-endpoints==2.2.0 +google-endpoints==2.2.1 google-endpoints-api-management==1.1.3 diff --git a/auth/cloud-client/requirements.txt b/auth/cloud-client/requirements.txt index 7384854568bd..7292101f37b2 100644 --- a/auth/cloud-client/requirements.txt +++ b/auth/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-storage==1.3.2 +google-cloud-storage==1.4.0 diff --git a/bigquery/cloud-client/requirements.txt b/bigquery/cloud-client/requirements.txt index fe1ea7ea253e..e72d04ef4e70 100644 --- a/bigquery/cloud-client/requirements.txt +++ b/bigquery/cloud-client/requirements.txt @@ -1,3 +1,3 @@ -google-cloud-bigquery==0.26.0 +google-cloud-bigquery==0.27.0 google-auth-oauthlib==0.1.0 pytz==2017.2 diff --git a/bigtable/hello/requirements.txt b/bigtable/hello/requirements.txt index 180100bc697c..6aaa931d7a59 100644 --- a/bigtable/hello/requirements.txt +++ b/bigtable/hello/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-bigtable==0.26.0 -google-cloud-core==0.26.0 +google-cloud-bigtable==0.27.0 +google-cloud-core==0.27.0 diff --git a/bigtable/hello_happybase/requirements.txt b/bigtable/hello_happybase/requirements.txt index e28cd8fff4bb..05aee4625480 100644 --- a/bigtable/hello_happybase/requirements.txt +++ b/bigtable/hello_happybase/requirements.txt @@ -1,3 +1,3 @@ google-cloud-happybase==0.26.0 -google-cloud-bigtable==0.26.0 -google-cloud-core==0.26.0 +google-cloud-bigtable==0.27.0 +google-cloud-core==0.27.0 diff --git a/bigtable/metricscaler/requirements.txt b/bigtable/metricscaler/requirements.txt index 3c11c022efac..53956e1d93c5 100644 --- a/bigtable/metricscaler/requirements.txt +++ b/bigtable/metricscaler/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-bigtable==0.26.0 -google-cloud-monitoring==0.26.0 +google-cloud-bigtable==0.27.0 +google-cloud-monitoring==0.27.0 diff --git a/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt b/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt index ee207b8f7196..1dd63f011ac1 100644 --- a/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt +++ b/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt @@ -1 +1 @@ -google-cloud-datastore==1.2.0 +google-cloud-datastore==1.3.0 diff --git a/codelabs/flex_and_vision/requirements.txt b/codelabs/flex_and_vision/requirements.txt index 0269986f13eb..503d62f73ab0 100644 --- a/codelabs/flex_and_vision/requirements.txt +++ b/codelabs/flex_and_vision/requirements.txt @@ -1,5 +1,5 @@ Flask==0.12.2 gunicorn==19.7.1 -google-cloud-vision==0.26.0 -google-cloud-storage==1.3.2 -google-cloud-datastore==1.2.0 +google-cloud-vision==0.27.0 +google-cloud-storage==1.4.0 +google-cloud-datastore==1.3.0 diff --git a/container_engine/django_tutorial/requirements.txt b/container_engine/django_tutorial/requirements.txt index db0d5ff3cba3..97a4dfad9613 100644 --- a/container_engine/django_tutorial/requirements.txt +++ b/container_engine/django_tutorial/requirements.txt @@ -2,4 +2,4 @@ Django==1.11.4 mysqlclient==1.3.10 wheel==0.29.0 gunicorn==19.7.1 -psycopg2==2.7.3 +psycopg2==2.7.3.1 diff --git a/datastore/cloud-client/requirements.txt b/datastore/cloud-client/requirements.txt index ee207b8f7196..1dd63f011ac1 100644 --- a/datastore/cloud-client/requirements.txt +++ b/datastore/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-datastore==1.2.0 +google-cloud-datastore==1.3.0 diff --git a/dns/api/requirements.txt b/dns/api/requirements.txt index 07f37d8ac5c2..516197bca28d 100644 --- a/dns/api/requirements.txt +++ b/dns/api/requirements.txt @@ -1 +1 @@ -google-cloud-dns==0.26.0 +google-cloud-dns==0.27.0 diff --git a/error_reporting/requirements.txt b/error_reporting/requirements.txt index 2f62dcf473fd..71fd34fc979c 100644 --- a/error_reporting/requirements.txt +++ b/error_reporting/requirements.txt @@ -1 +1 @@ -google-cloud-error-reporting==0.26.0 +google-cloud-error-reporting==0.27.0 diff --git a/iot/api-client/scripts/requirements.txt b/iot/api-client/scripts/requirements.txt index 65c3daf96ff6..6b4c47db9052 100644 --- a/iot/api-client/scripts/requirements.txt +++ b/iot/api-client/scripts/requirements.txt @@ -1 +1 @@ -google-cloud-pubsub==0.27.0 +google-cloud-pubsub==0.28.2 diff --git a/language/cloud-client/v1/requirements.txt b/language/cloud-client/v1/requirements.txt index 743bbe792126..0aa7a714776c 100644 --- a/language/cloud-client/v1/requirements.txt +++ b/language/cloud-client/v1/requirements.txt @@ -1 +1 @@ -google-cloud-language==0.27.0 +google-cloud-language==0.28.0 diff --git a/language/cloud-client/v1beta2/requirements.txt b/language/cloud-client/v1beta2/requirements.txt index 743bbe792126..0aa7a714776c 100644 --- a/language/cloud-client/v1beta2/requirements.txt +++ b/language/cloud-client/v1beta2/requirements.txt @@ -1 +1 @@ -google-cloud-language==0.27.0 +google-cloud-language==0.28.0 diff --git a/language/sentiment/requirements.txt b/language/sentiment/requirements.txt index 743bbe792126..0aa7a714776c 100644 --- a/language/sentiment/requirements.txt +++ b/language/sentiment/requirements.txt @@ -1 +1 @@ -google-cloud-language==0.27.0 +google-cloud-language==0.28.0 diff --git a/logging/cloud-client/requirements.txt b/logging/cloud-client/requirements.txt index 0cf479d75d8c..4a49685280c6 100644 --- a/logging/cloud-client/requirements.txt +++ b/logging/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-logging==1.2.0 +google-cloud-logging==1.3.0 diff --git a/monitoring/api/v3/cloud-client/requirements.txt b/monitoring/api/v3/cloud-client/requirements.txt index b9ea3f2dadad..787dfe7eef8b 100644 --- a/monitoring/api/v3/cloud-client/requirements.txt +++ b/monitoring/api/v3/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-monitoring==0.26.0 +google-cloud-monitoring==0.27.0 diff --git a/spanner/cloud-client/requirements.txt b/spanner/cloud-client/requirements.txt index 5d62b084e92c..ce3842239d1d 100644 --- a/spanner/cloud-client/requirements.txt +++ b/spanner/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-spanner==0.26.0 +google-cloud-spanner==0.27.0 diff --git a/speech/cloud-client/requirements.txt b/speech/cloud-client/requirements.txt index 2ac93cf8eb44..360ca34607dc 100644 --- a/speech/cloud-client/requirements.txt +++ b/speech/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-speech==0.28.0 +google-cloud-speech==0.29.0 diff --git a/storage/cloud-client/requirements.txt b/storage/cloud-client/requirements.txt index d31cb7cb20c6..3769a9db7097 100644 --- a/storage/cloud-client/requirements.txt +++ b/storage/cloud-client/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-storage==1.3.2 -google-cloud-pubsub==0.27.0 +google-cloud-storage==1.4.0 +google-cloud-pubsub==0.28.2 diff --git a/testing/requirements.txt b/testing/requirements.txt index ad9fbcb6b9b1..9d2bf7113087 100644 --- a/testing/requirements.txt +++ b/testing/requirements.txt @@ -13,5 +13,5 @@ responses==0.7.0 WebTest==2.0.28 webapp2==2.5.2 google-api-python-client==1.6.2 -google-cloud-core==0.26.0 +google-cloud-core==0.27.0 gcp-devrel-py-tools==0.0.11 diff --git a/translate/cloud-client/requirements.txt b/translate/cloud-client/requirements.txt index c0e0d9c666d7..8715cc0eec27 100644 --- a/translate/cloud-client/requirements.txt +++ b/translate/cloud-client/requirements.txt @@ -1 +1 @@ -google-cloud-translate==1.1.0 +google-cloud-translate==1.2.0 diff --git a/video/cloud-client/analyze/requirements.txt b/video/cloud-client/analyze/requirements.txt index b2aa05b67223..28c02728605f 100644 --- a/video/cloud-client/analyze/requirements.txt +++ b/video/cloud-client/analyze/requirements.txt @@ -1 +1 @@ -google-cloud-videointelligence==0.25.0 +google-cloud-videointelligence==0.26.0 diff --git a/video/cloud-client/faces/requirements.txt b/video/cloud-client/faces/requirements.txt index b2aa05b67223..28c02728605f 100644 --- a/video/cloud-client/faces/requirements.txt +++ b/video/cloud-client/faces/requirements.txt @@ -1 +1 @@ -google-cloud-videointelligence==0.25.0 +google-cloud-videointelligence==0.26.0 diff --git a/video/cloud-client/labels/requirements.txt b/video/cloud-client/labels/requirements.txt index b2aa05b67223..28c02728605f 100644 --- a/video/cloud-client/labels/requirements.txt +++ b/video/cloud-client/labels/requirements.txt @@ -1 +1 @@ -google-cloud-videointelligence==0.25.0 +google-cloud-videointelligence==0.26.0 diff --git a/video/cloud-client/quickstart/requirements.txt b/video/cloud-client/quickstart/requirements.txt index b2aa05b67223..28c02728605f 100644 --- a/video/cloud-client/quickstart/requirements.txt +++ b/video/cloud-client/quickstart/requirements.txt @@ -1 +1 @@ -google-cloud-videointelligence==0.25.0 +google-cloud-videointelligence==0.26.0 diff --git a/video/cloud-client/shotchange/requirements.txt b/video/cloud-client/shotchange/requirements.txt index b2aa05b67223..28c02728605f 100644 --- a/video/cloud-client/shotchange/requirements.txt +++ b/video/cloud-client/shotchange/requirements.txt @@ -1 +1 @@ -google-cloud-videointelligence==0.25.0 +google-cloud-videointelligence==0.26.0 diff --git a/vision/cloud-client/crop_hints/requirements.txt b/vision/cloud-client/crop_hints/requirements.txt index a31d4427b8b7..23ab250dd691 100644 --- a/vision/cloud-client/crop_hints/requirements.txt +++ b/vision/cloud-client/crop_hints/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-vision==0.26.0 +google-cloud-vision==0.27.0 pillow==4.2.1 diff --git a/vision/cloud-client/detect/requirements.txt b/vision/cloud-client/detect/requirements.txt index 1991be8b964d..06dcedd493ad 100644 --- a/vision/cloud-client/detect/requirements.txt +++ b/vision/cloud-client/detect/requirements.txt @@ -1 +1 @@ -google-cloud-vision==0.26.0 +google-cloud-vision==0.27.0 diff --git a/vision/cloud-client/document_text/requirements.txt b/vision/cloud-client/document_text/requirements.txt index a31d4427b8b7..23ab250dd691 100644 --- a/vision/cloud-client/document_text/requirements.txt +++ b/vision/cloud-client/document_text/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-vision==0.26.0 +google-cloud-vision==0.27.0 pillow==4.2.1 diff --git a/vision/cloud-client/face_detection/requirements.txt b/vision/cloud-client/face_detection/requirements.txt index fb17f8c24916..f795b8f0ec3b 100644 --- a/vision/cloud-client/face_detection/requirements.txt +++ b/vision/cloud-client/face_detection/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-vision==0.26.0 +google-cloud-vision==0.27.0 Pillow==4.2.1 diff --git a/vision/cloud-client/quickstart/requirements.txt b/vision/cloud-client/quickstart/requirements.txt index 1991be8b964d..06dcedd493ad 100644 --- a/vision/cloud-client/quickstart/requirements.txt +++ b/vision/cloud-client/quickstart/requirements.txt @@ -1 +1 @@ -google-cloud-vision==0.26.0 +google-cloud-vision==0.27.0 diff --git a/vision/cloud-client/web/requirements.txt b/vision/cloud-client/web/requirements.txt index 1991be8b964d..06dcedd493ad 100644 --- a/vision/cloud-client/web/requirements.txt +++ b/vision/cloud-client/web/requirements.txt @@ -1 +1 @@ -google-cloud-vision==0.26.0 +google-cloud-vision==0.27.0 From eeaa07a98aa81b2f3187872351d207d34108638c Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Tue, 29 Aug 2017 09:36:18 -0700 Subject: [PATCH 2/5] Fix storage notification poll sample Change-Id: I6afbc79d15e050531555e4c8e51066996717a0f3 --- storage/cloud-client/notification_polling.py | 32 +++++++++---------- .../cloud-client/notification_polling_test.py | 18 +++++++---- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/storage/cloud-client/notification_polling.py b/storage/cloud-client/notification_polling.py index 481a98e6697d..0580eaea57de 100644 --- a/storage/cloud-client/notification_polling.py +++ b/storage/cloud-client/notification_polling.py @@ -46,14 +46,14 @@ import argparse import json -import sys +import time -from google.cloud import pubsub +from google.cloud import pubsub_v1 def summarize(message): # [START parse_message] - data = message.data + data = message.data.decode('utf-8') attributes = message.attributes event_type = attributes['eventType'] @@ -87,24 +87,24 @@ def summarize(message): # [END parse_message] -def poll_notifications(subscription_id): +def poll_notifications(project, subscription_name): """Polls a Cloud Pub/Sub subscription for new GCS events for display.""" # [BEGIN poll_notifications] - client = pubsub.Client() - subscription = pubsub.subscription.Subscription( - subscription_id, client=client) + subscriber = pubsub_v1.SubscriberClient() + subscription_path = subscriber.subscription_path( + project, subscription_name) - if not subscription.exists(): - sys.stderr.write('Cannot find subscription {0}\n'.format(sys.argv[1])) - return + def callback(message): + print('Received message:\n{1}'.format(summarize(message))) + message.ack() - print('Polling for messages. Press ctrl+c to exit.') + subscriber.subscribe(subscription_path, callback=callback) + + # The subscriber is non-blocking, so we must keep the main thread from + # exiting to allow it to process messages in the background. + print('Listening for messages on {}'.format(subscription_path)) while True: - pulled = subscription.pull(max_messages=100) - for ack_id, message in pulled: - print('Received message {0}:\n{1}'.format( - message.message_id, summarize(message))) - subscription.acknowledge([ack_id]) + time.sleep(60) # [END poll_notifications] diff --git a/storage/cloud-client/notification_polling_test.py b/storage/cloud-client/notification_polling_test.py index e21e5b60c137..b816bd9df48e 100644 --- a/storage/cloud-client/notification_polling_test.py +++ b/storage/cloud-client/notification_polling_test.py @@ -13,7 +13,8 @@ # limitations under the License. -from google.cloud.pubsub.message import Message +from google.cloud.pubsub_v1.subscriber.message import Message +import mock from notification_polling import summarize @@ -31,12 +32,15 @@ def test_parse_json_message(): 'notificationConfig': ('projects/_/buckets/mybucket/' 'notificationConfigs/5'), 'payloadFormat': 'JSON_API_V1'} - data = ('{' - ' "size": 12345,' - ' "contentType": "text/html",' - ' "metageneration": 1' - '}') - message = Message(data, MESSAGE_ID, attributes=attributes) + data = (b'{' + b' "size": 12345,' + b' "contentType": "text/html",' + b' "metageneration": 1' + b'}') + message = Message( + mock.Mock(data=data, attributes=attributes), + MESSAGE_ID, + mock.Mock()) assert summarize(message) == ( '\tEvent type: OBJECT_FINALIZE\n' '\tBucket ID: mybucket\n' From 812eab1fa78a5340ddc7ede23955415b0fd26710 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Tue, 29 Aug 2017 12:44:01 -0700 Subject: [PATCH 3/5] Fix spanner samples Change-Id: I40069222c60d57e8f3d3878167591af9130895cb --- spanner/cloud-client/quickstart.py | 7 ++- spanner/cloud-client/snippets.py | 92 ++++++++++++++++-------------- 2 files changed, 54 insertions(+), 45 deletions(-) diff --git a/spanner/cloud-client/quickstart.py b/spanner/cloud-client/quickstart.py index 43cbf4d7ab8a..75125839d20e 100644 --- a/spanner/cloud-client/quickstart.py +++ b/spanner/cloud-client/quickstart.py @@ -36,10 +36,11 @@ def run_quickstart(): database = instance.database(database_id) # Execute a simple SQL statement. - results = database.execute_sql('SELECT 1') + with database.snapshot() as snapshot: + results = snapshot.execute_sql('SELECT 1') - for row in results: - print(row) + for row in results: + print(row) # [END spanner_quickstart] diff --git a/spanner/cloud-client/snippets.py b/spanner/cloud-client/snippets.py index d4d43bd21448..7e6dd79db3a3 100644 --- a/spanner/cloud-client/snippets.py +++ b/spanner/cloud-client/snippets.py @@ -94,11 +94,12 @@ def query_data(instance_id, database_id): instance = spanner_client.instance(instance_id) database = instance.database(database_id) - results = database.execute_sql( - 'SELECT SingerId, AlbumId, AlbumTitle FROM Albums') + with database.snapshot() as snapshot: + results = snapshot.execute_sql( + 'SELECT SingerId, AlbumId, AlbumTitle FROM Albums') - for row in results: - print(u'SingerId: {}, AlbumId: {}, AlbumTitle: {}'.format(*row)) + for row in results: + print(u'SingerId: {}, AlbumId: {}, AlbumTitle: {}'.format(*row)) def read_data(instance_id, database_id): @@ -107,14 +108,15 @@ def read_data(instance_id, database_id): instance = spanner_client.instance(instance_id) database = instance.database(database_id) - keyset = spanner.KeySet(all_=True) - results = database.read( - table='Albums', - columns=('SingerId', 'AlbumId', 'AlbumTitle',), - keyset=keyset,) + with database.snapshot() as snapshot: + keyset = spanner.KeySet(all_=True) + results = snapshot.read( + table='Albums', + columns=('SingerId', 'AlbumId', 'AlbumTitle',), + keyset=keyset,) - for row in results: - print(u'SingerId: {}, AlbumId: {}, AlbumTitle: {}'.format(*row)) + for row in results: + print(u'SingerId: {}, AlbumId: {}, AlbumTitle: {}'.format(*row)) def query_data_with_new_column(instance_id, database_id): @@ -130,11 +132,13 @@ def query_data_with_new_column(instance_id, database_id): instance = spanner_client.instance(instance_id) database = instance.database(database_id) - results = database.execute_sql( - 'SELECT SingerId, AlbumId, MarketingBudget FROM Albums') + with database.snapshot() as snapshot: + results = snapshot.execute_sql( + 'SELECT SingerId, AlbumId, MarketingBudget FROM Albums') - for row in results: - print(u'SingerId: {}, AlbumId: {}, MarketingBudget: {}'.format(*row)) + for row in results: + print( + u'SingerId: {}, AlbumId: {}, MarketingBudget: {}'.format(*row)) def add_index(instance_id, database_id): @@ -183,16 +187,18 @@ def query_data_with_index( 'start_title': type_pb2.Type(code=type_pb2.STRING), 'end_title': type_pb2.Type(code=type_pb2.STRING) } - results = database.execute_sql( - "SELECT AlbumId, AlbumTitle, MarketingBudget " - "FROM Albums@{FORCE_INDEX=AlbumsByAlbumTitle} " - "WHERE AlbumTitle >= @start_title AND AlbumTitle < @end_title", - params=params, param_types=param_types) - for row in results: - print( - u'AlbumId: {}, AlbumTitle: {}, ' - 'MarketingBudget: {}'.format(*row)) + with database.snapshot() as snapshot: + results = snapshot.execute_sql( + "SELECT AlbumId, AlbumTitle, MarketingBudget " + "FROM Albums@{FORCE_INDEX=AlbumsByAlbumTitle} " + "WHERE AlbumTitle >= @start_title AND AlbumTitle < @end_title", + params=params, param_types=param_types) + + for row in results: + print( + u'AlbumId: {}, AlbumTitle: {}, ' + 'MarketingBudget: {}'.format(*row)) def read_data_with_index(instance_id, database_id): @@ -209,15 +215,16 @@ def read_data_with_index(instance_id, database_id): instance = spanner_client.instance(instance_id) database = instance.database(database_id) - keyset = spanner.KeySet(all_=True) - results = database.read( - table='Albums', - columns=('AlbumId', 'AlbumTitle'), - keyset=keyset, - index='AlbumsByAlbumTitle') + with database.snapshot() as snapshot: + keyset = spanner.KeySet(all_=True) + results = snapshot.read( + table='Albums', + columns=('AlbumId', 'AlbumTitle'), + keyset=keyset, + index='AlbumsByAlbumTitle') - for row in results: - print('AlbumId: {}, AlbumTitle: {}'.format(*row)) + for row in results: + print('AlbumId: {}, AlbumTitle: {}'.format(*row)) def add_storing_index(instance_id, database_id): @@ -252,17 +259,18 @@ def read_data_with_storing_index(instance_id, database_id): instance = spanner_client.instance(instance_id) database = instance.database(database_id) - keyset = spanner.KeySet(all_=True) - results = database.read( - table='Albums', - columns=('AlbumId', 'AlbumTitle', 'MarketingBudget'), - keyset=keyset, - index='AlbumsByAlbumTitle2') + with database.snapshot() as snapshot: + keyset = spanner.KeySet(all_=True) + results = snapshot.read( + table='Albums', + columns=('AlbumId', 'AlbumTitle', 'MarketingBudget'), + keyset=keyset, + index='AlbumsByAlbumTitle2') - for row in results: - print( - u'AlbumId: {}, AlbumTitle: {}, ' - 'MarketingBudget: {}'.format(*row)) + for row in results: + print( + u'AlbumId: {}, AlbumTitle: {}, ' + 'MarketingBudget: {}'.format(*row)) def add_column(instance_id, database_id): From a1b338138d7920205b6738a6fcbf79c5e0f5a365 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Tue, 29 Aug 2017 14:24:41 -0700 Subject: [PATCH 4/5] Drop coverage because it's not useful Change-Id: Iae399a7083d7866c3c7b9162d0de244fbff8b522 --- .coveragerc | 12 ------------ nox.py | 5 +---- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index 2873cbd6afb3..000000000000 --- a/.coveragerc +++ /dev/null @@ -1,12 +0,0 @@ -[run] -omit = - lib/* - env/* - */.nox/* - */conftest.py - */google_appengine/* - -[report] -exclude_lines = - pragma: NO COVER - if __name__ == '__main__': diff --git a/nox.py b/nox.py index 08efe8769a6e..c02523d98785 100644 --- a/nox.py +++ b/nox.py @@ -133,10 +133,7 @@ def _setup_appengine_sdk(session): # -PYTEST_COMMON_ARGS = [ - '--cov', - '--cov-config', os.path.abspath('.coveragerc'), - '--cov-report', 'term'] +PYTEST_COMMON_ARGS = [] FLAKE8_COMMON_ARGS = [ '--show-source', '--builtin', 'gettext', '--max-complexity', '20', From 9f017aed1eac72d0d7a3bc12ceac13c810f001d8 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Tue, 29 Aug 2017 16:19:23 -0700 Subject: [PATCH 5/5] Try again to fix flaky logging test Change-Id: I6225c074701970c17c426677ef1935bb6d7e36b4 --- logging/cloud-client/snippets_test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/logging/cloud-client/snippets_test.py b/logging/cloud-client/snippets_test.py index 78093781c81b..480763cdbfdb 100644 --- a/logging/cloud-client/snippets_test.py +++ b/logging/cloud-client/snippets_test.py @@ -43,4 +43,6 @@ def test_write(): def test_delete(example_log): - snippets.delete_logger(TEST_LOGGER_NAME) + @eventually_consistent.call + def _(): + snippets.delete_logger(TEST_LOGGER_NAME)