Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storage: there is no way to remove labels from a bucket #3711

Closed
theacodes opened this issue Aug 1, 2017 · 22 comments
Closed

Storage: there is no way to remove labels from a bucket #3711

theacodes opened this issue Aug 1, 2017 · 22 comments
Assignees
Labels
api: storage Issues related to the Cloud Storage API. backend priority: p2 Moderately-important priority. Fix may not be included in next release.

Comments

@theacodes
Copy link
Contributor

Attempting to remove a label from a bucket does not appear to work:

    # {'example': 'label'}
    labels = bucket.labels

    if 'example' in labels:
        del labels['example']

    # {}
    bucket.labels = labels

    bucket.patch()

    # Still {'example': 'label'}
    pprint.pprint(bucket.labels)
@theacodes theacodes added api: storage Issues related to the Cloud Storage API. blocks-docs-samples labels Aug 1, 2017
@tseaver tseaver self-assigned this Aug 1, 2017
@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

After stopping inside the patch call with the empty labels:

(Pdb) pp update_properties
{'labels': {}}

stepping over the API call leaves an api_response:

(Pdb) pp api_response
{'acl': [{'bucket': 'test-bucket-patch-1501616216661',
          'entity': 'project-owners-455332057385',
          'etag': 'CAM=',
          'id': 'test-bucket-patch-1501616216661/project-owners-455332057385',
          'kind': 'storage#bucketAccessControl',
          'projectTeam': {'projectNumber': '455332057385', 'team': 'owners'},
          'role': 'OWNER',
          'selfLink': 'https://www.googleapis.com/storage/v1/b/test-bucket-patch-1501616216661/acl/project-owners-455332057385'},
         {'bucket': 'test-bucket-patch-1501616216661',
          'entity': 'project-editors-455332057385',
          'etag': 'CAM=',
          'id': 'test-bucket-patch-1501616216661/project-editors-455332057385',
          'kind': 'storage#bucketAccessControl',
          'projectTeam': {'projectNumber': '455332057385', 'team': 'editors'},
          'role': 'OWNER',
          'selfLink': 'https://www.googleapis.com/storage/v1/b/test-bucket-patch-1501616216661/acl/project-editors-455332057385'},
         {'bucket': 'test-bucket-patch-1501616216661',
          'entity': 'project-viewers-455332057385',
          'etag': 'CAM=',
          'id': 'test-bucket-patch-1501616216661/project-viewers-455332057385',
          'kind': 'storage#bucketAccessControl',
          'projectTeam': {'projectNumber': '455332057385', 'team': 'viewers'},
          'role': 'READER',
          'selfLink': 'https://www.googleapis.com/storage/v1/b/test-bucket-patch-1501616216661/acl/project-viewers-455332057385'}],
 'defaultObjectAcl': [{'entity': 'project-owners-455332057385',
                       'etag': 'CAM=',
                       'kind': 'storage#objectAccessControl',
                       'projectTeam': {'projectNumber': '455332057385',
                                       'team': 'owners'},
                       'role': 'OWNER'},
                      {'entity': 'project-editors-455332057385',
                       'etag': 'CAM=',
                       'kind': 'storage#objectAccessControl',
                       'projectTeam': {'projectNumber': '455332057385',
                                       'team': 'editors'},
                       'role': 'OWNER'},
                      {'entity': 'project-viewers-455332057385',
                       'etag': 'CAM=',
                       'kind': 'storage#objectAccessControl',
                       'projectTeam': {'projectNumber': '455332057385',
                                       'team': 'viewers'},
                       'role': 'READER'}],
 'etag': 'CAM=',
 'id': 'test-bucket-patch-1501616216661',
 'kind': 'storage#bucket',
 'labels': {'test-label': 'label-value'},
 'location': 'US',
 'metageneration': '3',
 'name': 'test-bucket-patch-1501616216661',
 'owner': {'entity': 'project-owners-455332057385'},
 'projectNumber': '455332057385',
 'selfLink': 'https://www.googleapis.com/storage/v1/b/test-bucket-patch-1501616216661',
 'storageClass': 'STANDARD',
 'timeCreated': '2017-08-01T19:37:45.519Z',
 'updated': '2017-08-01T19:38:34.487Z'}

@tseaver tseaver added the backend label Aug 1, 2017
@theacodes
Copy link
Contributor Author

@tseaver I'm not sure how to process your last comment. Are you saying we're sending the right stuff to the server?

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

If I tweak the code to assign a different, non-empty mapping:

bucket.labels = {'another-label': 'another-value'}
bucket.patch()

It passes the new value:

(Pdb) p update_properties
{'labels': {'another-label': 'another-value'}}

But the back-end returns the union of the two:

(Pdb) pp api_response['labels']
{'another-label': 'another-value', 'test-label': 'label-value'}

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

@jonparrott Yes, we are: we send along {'labels': {}} as the payload for the patch API.

@theacodes
Copy link
Contributor Author

@frankyn can you figure out who to talk to about the backend? :)

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

This is the (failing) system test I'm using to check out the payload (by adding pdb).

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

@dhermes Maybe this is the usecase which finally justifies wrapping the buckets.update API. ;)

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

What a hoot! My guess was right! If I hack in an update method:

diff --git a/storage/google/cloud/storage/_helpers.py b/storage/google/cloud/storage/_helpers.py
index 88f9b8d..56a75c6 100644
--- a/storage/google/cloud/storage/_helpers.py
+++ b/storage/google/cloud/storage/_helpers.py
@@ -147,6 +147,22 @@ class _PropertyMixin(object):
             query_params={'projection': 'full'}, _target_object=self)
         self._set_properties(api_response)
 
+    def update(self, client=None):
+        """Sends all properties in a PUT request.
+
+        Updates the ``_properties`` with the response from the backend.
+
+        :type client: :class:`~google.cloud.storage.client.Client` or
+                      ``NoneType``
+        :param client: the client to use.  If not passed, falls back to the
+                       ``client`` stored on the current object.
+        """
+        client = self._require_client(client)
+        api_response = client._connection.api_request(
+            method='PUT', path=self.path, data=self._properties,
+            query_params={'projection': 'full'}, _target_object=self)
+        self._set_properties(api_response)
+
 
 def _scalar_property(fieldname):
     """Create a property descriptor around the :class:`_PropertyMixin` helpers.

and tweak the system test to use it:

diff --git a/storage/tests/system.py b/storage/tests/system.py
index dfe35e3..934f761 100644
--- a/storage/tests/system.py
+++ b/storage/tests/system.py
@@ -127,11 +127,13 @@ class TestStorageBuckets(unittest.TestCase):
 
         new_labels = {'another-label': 'another-value'}
         bucket.labels = new_labels
-        bucket.patch()
+        #bucket.patch()
+        bucket.update()
         self.assertEqual(bucket.labels, new_labels)
 
         bucket.labels = {}
-        bucket.patch()
+        #bucket.patch()
+        bucket.update()
         self.assertEqual(bucket.labels, {})

it passes!

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

Maybe something in the patch semantics docs would explain this?

@theacodes
Copy link
Contributor Author

I think it's definitely because of patch semantics. Adding bucket.update and using that in the sample instead of patch seems like a reasonable way to solve this.

@frankyn
Copy link
Member

frankyn commented Aug 1, 2017

After reviewing patch semantics, the issue I see here is the patch request is using the following:

{
"labels": {}
}

When it should be using:

{
"labels": null
}

To remove the data in that property. It's recommended that patch be used over update because it reduces the amount of data that's requested and sent. However, the python client library does a full projection of Bucket properties so it would be the same thing as an update..?

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

@jonparrott #3714 adds the update method for both Blob and Bucket.

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

@frankyn The back-end also merges existing labels with new labels under PATCH: is that expected behavior? If we wanted to clear an individual label using patch, would we need to pass it's value as null ? E.g.:

{
"labels": {"keep-me": "some-value", "delete-me": null}
}

@frankyn
Copy link
Member

frankyn commented Aug 1, 2017

Ah I see, I don't believe so given the following comment:

Note about arrays: Patch requests that contain arrays replace the existing array with the one you provide. You cannot modify, add, or delete items in an array in a piecemeal fashion.

I'll follow-up with the POC for Labels about this.

Thanks!

@frankyn
Copy link
Member

frankyn commented Aug 1, 2017

Disregard my last comment.. Object != Array, but I'll follow-up anyway to verify expected result.

@frankyn
Copy link
Member

frankyn commented Aug 1, 2017

@tseaver I got a prompt response. It's an expected result for this operation. The payload you presented above is also the expected way to remove a label from the object.

Delete all labels

{
"labels": null
}

Delete a specific label

{
"labels": {"keep-me": "some-value", "delete-me": null}
}

Add a new label

{
"labels": {"new-label": "merged-label"}
}

@tseaver
Copy link
Contributor

tseaver commented Aug 1, 2017

@jonparrott supporting those semantics (rather than "make arbitrary changes to the local copy and then call update", as illustrated in #3715) will need one of two strategies:

  • Add label-specific methods (add_label, remove_label, clear_labels), each of which makes a separate API call. Maybe that isn't too big a downside, given how low-volume such changes are likely to be.
  • Use some batch-like context manager which exposes the same kind of methods, and synthesizes from them a single "right" mapping to send in a single API call in its __exit__. More complex, higher bug potential, but more performant.

@theacodes
Copy link
Contributor Author

By update do you mean patch? I'm fine with not suggesting patch for label usage or going with (1).

@tseaver
Copy link
Contributor

tseaver commented Aug 2, 2017

By update do you mean patch?

Nope. The status quo (once #3714 / #3715 land) is to call update after re-assigning bucket.labels (because patch won't work).

@theacodes
Copy link
Contributor Author

Oh okay, sorry, I just misread.

I'm okay with the status quo of having to use update over patch for now. In terms of which behavior seems most appropriate it seems like (2) is the right long-term approach if we want to keep patch, but (1) is the right approach if we don't. @lukesneeringer should also chime in.

@lukesneeringer lukesneeringer added the priority: p2 Moderately-important priority. Fix may not be included in next release. label Aug 7, 2017
@lukesneeringer
Copy link
Contributor

Slight preference for (2), which I can knock out once #3714 and #3715 land.

@lukesneeringer
Copy link
Contributor

lukesneeringer commented Aug 7, 2017

There is a third option: The setter for bucket.labels can track the diff and do the right thing on a .patch() call.

tseaver added a commit that referenced this issue Aug 7, 2017
Turns out some properties (i.e., 'labels', see #3711) behave differently under 'patch semantics'[1], which makes 'update' useful.

[1] https://cloud.google.com/storage/docs/json_api/v1/how-tos/performance#patch

Closes #7311
lukesneeringer pushed a commit to lukesneeringer/google-cloud-python that referenced this issue Aug 7, 2017
Turns out some properties (i.e., 'labels', see googleapis#3711) behave differently
under 'patch semantics'[1], which makes 'update' useful.

[1] https://cloud.google.com/storage/docs/json_api/v1/how-tos/performance#patch
landrito pushed a commit to landrito/google-cloud-python that referenced this issue Aug 21, 2017
…is#3715)

Turns out some properties (i.e., 'labels', see googleapis#3711) behave differently under 'patch semantics'[1], which makes 'update' useful.

[1] https://cloud.google.com/storage/docs/json_api/v1/how-tos/performance#patch

Closes googleapis#7311
landrito pushed a commit to landrito/google-cloud-python that referenced this issue Aug 22, 2017
…is#3715)

Turns out some properties (i.e., 'labels', see googleapis#3711) behave differently under 'patch semantics'[1], which makes 'update' useful.

[1] https://cloud.google.com/storage/docs/json_api/v1/how-tos/performance#patch

Closes googleapis#7311
landrito pushed a commit to landrito/google-cloud-python that referenced this issue Aug 22, 2017
…is#3715)

Turns out some properties (i.e., 'labels', see googleapis#3711) behave differently under 'patch semantics'[1], which makes 'update' useful.

[1] https://cloud.google.com/storage/docs/json_api/v1/how-tos/performance#patch

Closes googleapis#7311
jwhitlock added a commit to jwhitlock/python-docs-samples that referenced this issue May 21, 2019
The Python client was fixed in
googleapis/google-cloud-python#3711
so the test now passes.
gguuss pushed a commit to GoogleCloudPlatform/python-docs-samples that referenced this issue Jul 24, 2019
cojenco pushed a commit to cojenco/python-storage that referenced this issue Oct 13, 2021
cojenco added a commit to googleapis/python-storage that referenced this issue Oct 19, 2021
* Renaming storage gcloud samples folder. (#418)

* Add gcloud-based storage usage samples. (#419)

* Refactor cloud client storage samples. (#421)

* Add more storage samples for the cloud client libraries. (#432)

* Auto-update dependencies. (#456)

* Fix import order lint errors

Change-Id: Ieaf7237fc6f925daec46a07d2e81a452b841198a

* Add storage acl samples

Change-Id: Ib44f9bb42bf0c0607e64905a26369f06ea5fb231

* Address review comments

Change-Id: I94973a839f38ef3d1ec657c3c79f666eca56728b

* Fix lint issue

Change-Id: Ie9cf585303931f200a763d691906ad56221105fd

* Auto-update dependencies. (#540)

* Auto-update dependencies. (#542)

* Move to google-cloud (#544)

* Add new "quickstart" samples (#547)

* Quickstart tests (#569)

* Add tests for quickstarts
* Update secrets

* Add basic readme generator (#580)

* Generate readmes for most service samples (#599)

* Update samples to support latest Google Cloud Python (#656)

* Edited upload/download to perform encryption properly (#667)

* Storage Encryption Key Rotation Sample using Veneer + Tests (#672)

* Auto-update dependencies. (#715)

* Adds storage Pub/Sub notification polling tutorial (#875)

* Remove cloud config fixture (#887)

* Remove cloud config fixture

* Fix client secrets

* Fix bigtable instance

* Auto-update dependencies. (#914)

* Auto-update dependencies.

* xfail the error reporting test

* Fix lint

* Re-generate all readmes

* Add bucket-level IAM samples (#919)

* Add bucket-level IAM samples
* Address review comments

* Auto-update dependencies. (#927)

* Fix README rst links (#962)

* Fix README rst links

* Update all READMEs

* Auto-update dependencies. (#1004)

* Auto-update dependencies.

* Fix natural language samples

* Fix pubsub iam samples

* Fix language samples

* Fix bigquery samples

* Add bucket label samples (#1045)

* Auto-update dependencies. (#1055)

* Auto-update dependencies.

* Explicitly use latest bigtable client

Change-Id: Id71e9e768f020730e4ca9514a0d7ebaa794e7d9e

* Revert language update for now

Change-Id: I8867f154e9a5aae00d0047c9caf880e5e8f50c53

* Remove pdb. smh

Change-Id: I5ff905fadc026eebbcd45512d4e76e003e3b2b43

* Auto-update dependencies. (#1057)

* Auto-update dependencies. (#1073)

* Auto-update dependencies. (#1093)

* Auto-update dependencies.

* Fix storage notification poll sample

Change-Id: I6afbc79d15e050531555e4c8e51066996717a0f3

* Fix spanner samples

Change-Id: I40069222c60d57e8f3d3878167591af9130895cb

* Drop coverage because it's not useful

Change-Id: Iae399a7083d7866c3c7b9162d0de244fbff8b522

* Try again to fix flaky logging test

Change-Id: I6225c074701970c17c426677ef1935bb6d7e36b4

* Auto-update dependencies. (#1097)

* Update all generated readme auth instructions (#1121)

Change-Id: I03b5eaef8b17ac3dc3c0339fd2c7447bd3e11bd2

* Fix TypeError when running Storage notification polling exmaple. (#1135)

* Adds storage Pub/Sub notification polling tutorial

* Fix formatting and add some tests

* Auto-generate README

* Simplify implementation, remove classes

* Simplified example, removed de-duping

* regenerate README

* Remove explicit project parameter.

* Fix notification TypeError on start.

* Fix linter error.

* Fix ordered list ordinals.

* Rerun nox readmegen.

* Add support for overwrite attributes (#1142)

* Add support for overwrite attributes, bug fixes

* Lint fix for overwrite line

* Switch variable to snake_case

* Handle case where attribute not set (#1143)

* Added Link to Python Setup Guide (#1158)

* Update Readme.rst to add Python setup guide

As requested in b/64770713.

This sample is linked in documentation https://cloud.google.com/bigtable/docs/scaling, and it would make more sense to update the guide here than in the documentation.

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update README.rst

* Update install_deps.tmpl.rst

* Updated readmegen scripts and re-generated related README files

* Fixed the lint error

* Auto-update dependencies. (#1138)

* storage requester pays samples (#1122)

* storage requester pays samples

* Added tests and fixed linting issues

* google-cloud-storage version update

* changed get_bucket to bucket for downloading

* small change

* Auto-update dependencies. (#1186)

* Auto-update dependencies. (#1234)

* Auto-update dependencies.

* Drop pytest-logcapture as it's no longer needed

Change-Id: Ia8b9e8aaf248e9770db6bc4842a4532df8383893

* Auto-update dependencies. (#1239)

* Added "Open in Cloud Shell" buttons to README files (#1254)

* Auto-update dependencies. (#1263)

* Auto-update dependencies. (#1272)

* Auto-update dependencies.

* Update requirements.txt

* Auto-update dependencies. (#1282)

* Auto-update dependencies.

* Fix storage acl sample

Change-Id: I413bea899fdde4c4859e4070a9da25845b81f7cf

* Auto-update dependencies. (#1320)

* Auto-update dependencies. (#1359)

* Auto-update dependencies. (#1377)

* Auto-update dependencies.

* Update requirements.txt

* Auto-update dependencies. (#1389)

* Auto-update dependencies.

* Regenerate the README files and fix the Open in Cloud Shell link for some samples (#1441)

* Update READMEs to fix numbering and add git clone (#1464)

* Fix typo. (#1509)

Fixes https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1485

* Storage: add KMS samples (#1510)

* Storage: add KMS samples

* Add CLOUD_KMS_KEY environment variable

* [Storage] Update kms samples (#1517)

* Storage: add KMS samples

* Add CLOUD_KMS_KEY environment variable

* Add region tags around samples

* Add more testing

* Fix tests and lint

* Remove leftover merge conflict. (#1657)

* Add region tag to upload_blob snippet (#1671)

* Bucket lock samples (#1588)

* [Storage] Add spacing in sample code. (#1735)

* Add spacing in sample code.

* remove whitespace

* Auto-update dependencies. (#1846)

ACK, merging.

* Update requirements.txt (#1944)

* Update requirements.txt

* Adding some rate limiting

* Auto-update dependencies. (#1980)

* Auto-update dependencies.

* Update requirements.txt

* Update requirements.txt

* storage: bucket policy only samples (#1976)

* humble beginnings

* Verified integration tests and updated README.rst

* Updating samples to reflect fixed surface

* Use release 1.14.0

* Add sleep to avoid bucket rate limit (#2136)

* feat(storage): Add snippets for v4 signed URLs (#2142)

* feat(storage): Add snippets for v4 signed URLs

* lint

* fix .format()

* add v4 command to switch statement

* fix region tag

* change if => elif to try to make func less complex

* move main to a function

* storage: add list buckets (#2149)

* Add list_buckets sample

* Allow for more if conditions

* Drop xfail for passing test_remove_bucket_label (#2173)

The Python client was fixed in
https://github.com/googleapis/google-cloud-python/issues/3711
so the test now passes.

* Update string reported in snippet and update test

* Update list blobs to use new client.list_blobs() method. (#2296)

* Update list blob samples

* Update requirements.txt

* Fix lint issues

* Use latest storage client

* [Storage] Add comment to clarify which package version is necessary (#2315)

* Add comment to clarify which package version

* Lint and add another comment to related sample

* Storage: HMAC key samples (#2372)

Add samples for HMAC key functionality: list, create, get, activate, deactivate, delete. Includes tests and version bump for client library.

* Remove required argument from list buckets sample (#2394)

* Remove required argument from list buckets sample

* Remove required argument from list buckets sample

* Fixup sample for list_hmac_keys (#2404)

Correct printed metadata to match canonical samples.

* Bucket metadata sample (#2414)

* Remove required argument from list buckets sample

* Bucket metadata sample

* Bucket metadata sample

* Adds updates for samples profiler ... vision (#2439)

* fix: add bucket-name as required arg to v4 snippets (#2502)

* [Storage] Support rename of BPO to UniformBucketLevelAccess (#2335)

* Update BPO -> UBLA

* Update BPO -> UBLA

* Fix region tag (#2515)

* Update documentation for prefix, delimiter search (#2537)

* Update documentation for prefix, delimiter search

* Remove whitespace.

* [Storage] Split samples (#2602)

* split bucket_lock samples and lint

* split samples

* blacken

* fix typos

* Add missing tests and lint

* lint

* fix typos

* fix typo

* typo

* remove README

* Auto-update dependencies. (#2005)

* Auto-update dependencies.

* Revert update of appengine/flexible/datastore.

* revert update of appengine/flexible/scipy

* revert update of bigquery/bqml

* revert update of bigquery/cloud-client

* revert update of bigquery/datalab-migration

* revert update of bigtable/quickstart

* revert update of compute/api

* revert update of container_registry/container_analysis

* revert update of dataflow/run_template

* revert update of datastore/cloud-ndb

* revert update of dialogflow/cloud-client

* revert update of dlp

* revert update of functions/imagemagick

* revert update of functions/ocr/app

* revert update of healthcare/api-client/fhir

* revert update of iam/api-client

* revert update of iot/api-client/gcs_file_to_device

* revert update of iot/api-client/mqtt_example

* revert update of language/automl

* revert update of run/image-processing

* revert update of vision/automl

* revert update testing/requirements.txt

* revert update of vision/cloud-client/detect

* revert update of vision/cloud-client/product_search

* revert update of jobs/v2/api_client

* revert update of jobs/v3/api_client

* revert update of opencensus

* revert update of translate/cloud-client

* revert update to speech/cloud-client

Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
Co-authored-by: Doug Mahugh <dmahugh@gmail.com>

* samples(storage): IAM conditions samples (#2730)

* docs(storage): use policy.bindings in Storage/IAM samples

* update view Bucket IAM to use policy.bindings

* update remove Bucket IAM to use policy.bindings

* blacken

* add IAM condition sample

* add conditional iam binding sample

* bump storage requirement to 1.25.0

* fix tests

* remove unused imports

* fix: Use unique resources for storage snippets. (#3029)

* fix: use unique buckets and blobs for acl tests
* fix: use unique buckets and blobs for snippets tests
* fix: reuse test_bucket within module to avoid exhausting quota
* fix: Due to retention policy, don't reuse fixture for bucket lock
* fix: randomize blob names to disperse file edits

* fix: Reuse HMAC key as we have a limit of 5 (#3037)

* fix: Reuse HMAC key as we have a limit of 5

* fix: harden storage test fixtures (#3039)

* fix: improve UBLA test fixtures
* fix: improve IAM test fixtures

* storage: Fix docs for signed URL generation (#3008)

Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com>
Co-authored-by: Christopher Wilcox <crwilcox@google.com>

* chore(deps): update dependency google-cloud-storage to v1.26.0 (#3046)

* chore(deps): update dependency google-cloud-storage to v1.26.0

* chore(deps): specify dependencies by python version

* chore: up other deps to try to remove errors

Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>
Co-authored-by: Leah Cole <coleleah@google.com>

* feat: add remove conditional binding sample (#3107)

* feat: add remove conditional binding sample

* fix iam test fixture

* fix silly mistake of removing all bindings

* fix ubla test

* address feedback

* revert changes to tests

* Simplify noxfile setup. (#2806)

* chore(deps): update dependency requests to v2.23.0

* Simplify noxfile and add version control.

* Configure appengine/standard to only test Python 2.7.

* Update Kokokro configs to match noxfile.

* Add requirements-test to each folder.

* Remove Py2 versions from everything execept appengine/standard.

* Remove conftest.py.

* Remove appengine/standard/conftest.py

* Remove 'no-sucess-flaky-report' from pytest.ini.

* Add GAE SDK back to appengine/standard tests.

* Fix typo.

* Roll pytest to python 2 version.

* Add a bunch of testing requirements.

* Remove typo.

* Add appengine lib directory back in.

* Add some additional requirements.

* Fix issue with flake8 args.

* Even more requirements.

* Readd appengine conftest.py.

* Add a few more requirements.

* Even more Appengine requirements.

* Add webtest for appengine/standard/mailgun.

* Add some additional requirements.

* Add workaround for issue with mailjet-rest.

* Add responses for appengine/standard/mailjet.

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* [storage] feat: add post policy sample (#3231)

* feat: add post policy sample

* use 1.27.0

* fix

* simplify iterator

Co-authored-by: Jonathan Lui <jonathanlui@google.com>

* Update dependency google-cloud-pubsub to v1.4.2 in Storage and Pub/Sub (#3343)

* Remove name attribute from the input (#3569)

If name='submit' is specified for the input type='submit' the endpoint returns the following error:

<Error>
<Code>InvalidPolicyDocument</Code>
<Message>
The content of the form does not meet the conditions specified in the policy document.
</Message>
<Details>Policy did not reference these fields: submit</Details>
</Error>

Co-authored-by: Takashi Matsuo <tmatsuo@google.com>

* [storage] fix: use unique blob name (#3568)

* [storage] fix: use unique blob name

fixes #3567

* add some comments

* chore(deps): update dependency google-cloud-storage to v1.28.0 (#3260)

Co-authored-by: Takashi Matsuo <tmatsuo@google.com>

* [storage] fix: use a different bucket for requester_pays_test (#3655)

* [storage] fix: use a different bucket for requester_pays_test

fixes #3654

* rename to README.md, added the envvar to the template

* add REQUESTER_PAYS_TEST_BUCKET env var

* just use REQUESTER_PAYS_TEST_BUCKET

* docs(storage): add samples for lifer cycle and versioning  (#3578)

* docs(storage): add samples for lifer cycle and versioning

* docs(storage): nits

* docs(storage): lint fix

Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore: some lint fixes (#3750)

* chore(deps): update dependency google-cloud-pubsub to v1.4.3 (#3725)

Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com>
Co-authored-by: Takashi Matsuo <tmatsuo@google.com>

* docs(storage): add samples  (#3687)

* chore(deps): update dependency google-cloud-storage to v1.28.1 (#3785)

* chore(deps): update dependency google-cloud-storage to v1.28.1

* [asset] testing: use uuid instead of time

Co-authored-by: Takashi Matsuo <tmatsuo@google.com>

* docs(storage): add samples for file archive generation and cors configuration (#3794)

* chore(deps): update dependency google-cloud-pubsub to v1.5.0 (#3781)

Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com>

* Replace GCLOUD_PROJECT with GOOGLE_CLOUD_PROJECT. (#4022)

* [storage] testing: use multiple projects (#4048)

* [storage] testing: use multiple projects

We still need to use the old project for some tests.

fixes #4033
fixes #4029

* remove print

* use uuid instead of time.time()

* lint fix

* chore(deps): update dependency google-cloud-storage to v1.29.0 (#4040)

* Update dependency google-cloud-pubsub to v1.6.0 (#4039)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [google-cloud-pubsub](https://github.com/googleapis/python-pubsub) | minor | `==1.5.0` -> `==1.6.0` |

---

### Release Notes

<details>
<summary>googleapis/python-pubsub</summary>

### [`v1.6.0`](https://github.com/googleapis/python-pubsub/blob/master/CHANGELOG.md#&#8203;160-httpswwwgithubcomgoogleapispython-pubsubcomparev150v160-2020-06-09)

[Compare Source](https://github.com/googleapis/python-pubsub/compare/v1.5.0...v1.6.0)

##### Features

-   Add flow control for message publishing ([#&#8203;96](https://www.github.com/googleapis/python-pubsub/issues/96)) ([06085c4](https://www.github.com/googleapis/python-pubsub/commit/06085c4083b9dccdd50383257799904510bbf3a0))

##### Bug Fixes

-   Fix PubSub incompatibility with api-core 1.17.0+ ([#&#8203;103](https://www.github.com/googleapis/python-pubsub/issues/103)) ([c02060f](https://www.github.com/googleapis/python-pubsub/commit/c02060fbbe6e2ca4664bee08d2de10665d41dc0b))

##### Documentation

-   Clarify that Schedulers shouldn't be used with multiple SubscriberClients ([#&#8203;100](https://github.com/googleapis/python-pubsub/pull/100)) ([cf9e87c](https://github.com/googleapis/python-pubsub/commit/cf9e87c80c0771f3fa6ef784a8d76cb760ad37ef))
-   Fix update subscription/snapshot/topic samples ([#&#8203;113](https://github.com/googleapis/python-pubsub/pull/113)) ([e62c38b](https://github.com/googleapis/python-pubsub/commit/e62c38bb33de2434e32f866979de769382dea34a))

##### Internal / Testing Changes

-   Re-generated service implementaton using synth: removed experimental notes from the RetryPolicy and filtering features in anticipation of GA, added DetachSubscription (experimental) ([#&#8203;114](https://github.com/googleapis/python-pubsub/pull/114)) ([0132a46](https://github.com/googleapis/python-pubsub/commit/0132a4680e0727ce45d5e27d98ffc9f3541a0962))
-   Incorporate will_accept() checks into publish() ([#&#8203;108](https://github.com/googleapis/python-pubsub/pull/108)) ([6c7677e](https://github.com/googleapis/python-pubsub/commit/6c7677ecb259672bbb9b6f7646919e602c698570))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* chore(deps): update dependency google-cloud-pubsub to v1.6.1 (#4242)

Co-authored-by: gcf-merge-on-green[bot] <60162190+gcf-merge-on-green[bot]@users.noreply.github.com>

* chore(deps): update dependency pytest to v5.4.3 (#4279)

* chore(deps): update dependency pytest to v5.4.3

* specify pytest for python 2 in appengine

Co-authored-by: Leah Cole <coleleah@google.com>

* chore(deps): update dependency mock to v4 (#4287)

* chore(deps): update dependency mock to v4

* specify mock version for appengine python 2

Co-authored-by: Leah Cole <coleleah@google.com>

* chore(deps): update dependency google-cloud-pubsub to v1.7.0 (#4290)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [google-cloud-pubsub](https://github.com/googleapis/python-pubsub) | minor | `==1.6.1` -> `==1.7.0` |

---

### Release Notes

<details>
<summary>googleapis/python-pubsub</summary>

### [`v1.7.0`](https://github.com/googleapis/python-pubsub/blob/master/CHANGELOG.md#&#8203;170-httpswwwgithubcomgoogleapispython-pubsubcomparev161v170-2020-07-13)

[Compare Source](https://github.com/googleapis/python-pubsub/compare/v1.6.1...v1.7.0)

##### New Features

-   Add support for server-side flow control. ([#&#8203;143](https://github.com/googleapis/python-pubsub/pull/143)) ([04e261c](https://www.github.com/googleapis/python-pubsub/commit/04e261c602a2919cc75b3efa3dab099fb2cf704c))

##### Dependencies

-   Update samples dependency `google-cloud-pubsub` to `v1.6.1`. ([#&#8203;144](https://github.com/googleapis/python-pubsub/pull/144)) ([1cb6746](https://github.com/googleapis/python-pubsub/commit/1cb6746b00ebb23dbf1663bae301b32c3fc65a88))

##### Documentation

-   Add pubsub/cloud-client samples from the common samples repo (with commit history). ([#&#8203;151](https://github.com/googleapis/python-pubsub/pull/151)) 
-   Add flow control section to publish overview. ([#&#8203;129](https://github.com/googleapis/python-pubsub/pull/129)) ([acc19eb](https://www.github.com/googleapis/python-pubsub/commit/acc19eb048eef067d9818ef3e310b165d9c6307e))
-   Add a link to Pub/Sub filtering language public documentation to `pubsub.proto`. ([#&#8203;121](https://github.com/googleapis/python-pubsub/pull/121)) ([8802d81](https://www.github.com/googleapis/python-pubsub/commit/8802d8126247f22e26057e68a42f5b5a82dcbf0d))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Renovate will not automatically rebase this PR, because other commits have been found.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* Fix mismatched storage region tags (#4194)

* Update dependency google-cloud-storage to v1.30.0

* Update dependency pytest to v6 (#4390)

* chore(deps): update dependency google-cloud-storage to v1.31.0 (#4564)

Co-authored-by: Takashi Matsuo <tmatsuo@google.com>

* chore: fix some more unmatched region tags (#4585)

fixes #4549

Co-authored-by: Dina Graves Portman <dinagraves@google.com>

* Update storage_get_metadata.py (#4615)

Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore(deps): update dependency google-cloud-storage to v1.31.1 (#4714)

* chore(deps): update dependency google-cloud-storage to v1.31.2 (#4750)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [google-cloud-storage](https://github.com/googleapis/python-storage) | patch | `==1.31.1` -> `==1.31.2` |

---

### Release Notes

<details>
<summary>googleapis/python-storage</summary>

### [`v1.31.2`](https://github.com/googleapis/python-storage/blob/master/CHANGELOG.md#&#8203;1312-httpswwwgithubcomgoogleapispython-storagecomparev1311v1312-2020-09-23)

[Compare Source](https://github.com/googleapis/python-storage/compare/v1.31.1...v1.31.2)

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/GoogleCloudPlatform/python-docs-samples).

* chore(deps): update dependency pytest to v6.1.1 (#4761)

* chore(deps): update dependency google-cloud-storage to v1.32.0 (#4871)

* chore(deps): update dependency pytest to v6.1.2 (#4921)

Co-authored-by: Charles Engelke <engelke@google.com>

* change pprint to print. (#4856)

* change pprint to print.

Line 57 had pprint.pprint.. changing it to print.

* Update storage_get_bucket_metadata.py

Removing pprint import

Co-authored-by: Dina Graves Portman <dinagraves@google.com>
Co-authored-by: Charles Engelke <engelke@google.com>

* chore(deps): update dependency google-cloud-storage to v1.33.0 (#4990)

* Add patch call (#5013)

I believe a call to `blob.patch()` is necessary to actually save the metadata back to GCS.

* fix: add a comment to draw attention to using get_blob, not blob (#5052)

* fix: add a comment to draw attention to using get_blob, not blob

* docs: further elaboration

* docs: add clarifying doc string to download file

* Update storage_download_file.py

* Update storage_download_file.py

* chore(deps): update dependency mock to v4.0.3 (#5062)

* fix(storage): Update comment, prefix should include delimiter (#5064)

* chore(deps): update dependency google-cloud-storage to v1.35.0 (#5074)

* chore(deps): update dependency pytest to v6.2.1 (#5076)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [pytest](https://docs.pytest.org/en/latest/) ([source](https://github.com/pytest-dev/pytest)) | minor | `==6.1.2` -> `==6.2.1` |

---

### Release Notes

<details>
<summary>pytest-dev/pytest</summary>

### [`v6.2.1`](https://github.com/pytest-dev/pytest/releases/6.2.1)

[Compare Source](https://github.com/pytest-dev/pytest/compare/6.2.0...6.2.1)

# pytest 6.2.1 (2020-12-15)

## Bug Fixes

-   [#&#8203;7678](https://github.com/pytest-dev/pytest/issues/7678): Fixed bug where `ImportPathMismatchError` would be raised for files compiled in
    the host and loaded later from an UNC mounted path (Windows).
-   [#&#8203;8132](https://github.com/pytest-dev/pytest/issues/8132): Fixed regression in `approx`: in 6.2.0 `approx` no longer raises
    `TypeError` when dealing with non-numeric types, falling back to normal comparison.
    Before 6.2.0, array types like tf.DeviceArray fell through to the scalar case,
    and happened to compare correctly to a scalar if they had only one element.
    After 6.2.0, these types began failing, because they inherited neither from
    standard Python number hierarchy nor from `numpy.ndarray`.

    `approx` now converts arguments to `numpy.ndarray` if they expose the array
    protocol and are not scalars. This treats array-like objects like numpy arrays,
    regardless of size.

### [`v6.2.0`](https://github.com/pytest-dev/pytest/releases/6.2.0)

[Compare Source](https://github.com/pytest-dev/pytest/compare/6.1.2...6.2.0)

# pytest 6.2.0 (2020-12-12)

## Breaking Changes

-   [#&#8203;7808](https://github.com/pytest-dev/pytest/issues/7808): pytest now supports python3.6+ only.

## Deprecations

-   [#&#8203;7469](https://github.com/pytest-dev/pytest/issues/7469): Directly constructing/calling the following classes/functions is now deprecated:

    -   `_pytest.cacheprovider.Cache`
    -   `_pytest.cacheprovider.Cache.for_config()`
    -   `_pytest.cacheprovider.Cache.clear_cache()`
    -   `_pytest.cacheprovider.Cache.cache_dir_from_config()`
    -   `_pytest.capture.CaptureFixture`
    -   `_pytest.fixtures.FixtureRequest`
    -   `_pytest.fixtures.SubRequest`
    -   `_pytest.logging.LogCaptureFixture`
    -   `_pytest.pytester.Pytester`
    -   `_pytest.pytester.Testdir`
    -   `_pytest.recwarn.WarningsRecorder`
    -   `_pytest.recwarn.WarningsChecker`
    -   `_pytest.tmpdir.TempPathFactory`
    -   `_pytest.tmpdir.TempdirFactory`

    These have always been considered private, but now issue a deprecation warning, which may become a hard error in pytest 7.0.0.

-   [#&#8203;7530](https://github.com/pytest-dev/pytest/issues/7530): The `--strict` command-line option has been deprecated, use `--strict-markers` instead.

    We have plans to maybe in the future to reintroduce `--strict` and make it an encompassing flag for all strictness
    related options (`--strict-markers` and `--strict-config` at the moment, more might be introduced in the future).

-   [#&#8203;7988](https://github.com/pytest-dev/pytest/issues/7988): The `@pytest.yield_fixture` decorator/function is now deprecated. Use pytest.fixture instead.

    `yield_fixture` has been an alias for `fixture` for a very long time, so can be search/replaced safely.

## Features

-   [#&#8203;5299](https://github.com/pytest-dev/pytest/issues/5299): pytest now warns about unraisable exceptions and unhandled thread exceptions that occur in tests on Python>=3.8.
    See unraisable for more information.
-   [#&#8203;7425](https://github.com/pytest-dev/pytest/issues/7425): New pytester fixture, which is identical to testdir but its methods return pathlib.Path when appropriate instead of `py.path.local`.

    This is part of the movement to use pathlib.Path objects internally, in order to remove the dependency to `py` in the future.

    Internally, the old Testdir &lt;\_pytest.pytester.Testdir> is now a thin wrapper around Pytester &lt;\_pytest.pytester.Pytester>, preserving the old interface.

-   [#&#8203;7695](https://github.com/pytest-dev/pytest/issues/7695): A new hook was added, pytest_markeval_namespace which should return a dictionary.
    This dictionary will be used to augment the "global" variables available to evaluate skipif/xfail/xpass markers.

    Pseudo example

    `conftest.py`:

    ```{.sourceCode .python}
    def pytest_markeval_namespace():
        return {"color": "red"}
    ```

    `test_func.py`:

    ```{.sourceCode .python}
    @&#8203;pytest.mark.skipif("color == 'blue'", reason="Color is not red")
    def test_func():
        assert False
    ```

-   [#&#8203;8006](https://github.com/pytest-dev/pytest/issues/8006): It is now possible to construct a ~pytest.MonkeyPatch object directly as `pytest.MonkeyPatch()`,
    in cases when the monkeypatch fixture cannot be used. Previously some users imported it
    from the private \_pytest.monkeypatch.MonkeyPatch namespace.

    Additionally, MonkeyPatch.context &lt;pytest.MonkeyPatch.context> is now a classmethod,
    and can be used as `with MonkeyPatch.context() as mp: ...`. This is the recommended way to use
    `MonkeyPatch` directly, since unlike the `monkeypatch` fixture, an instance created directly
    is not `undo()`-ed automatically.

## Improvements

-   [#&#8203;1265](https://github.com/pytest-dev/pytest/issues/1265): Added an `__str__` implementation to the ~pytest.pytester.LineMatcher class which is returned from `pytester.run_pytest().stdout` and similar. It returns the entire output, like the existing `str()` method.
-   [#&#8203;2044](https://github.com/pytest-dev/pytest/issues/2044): Verbose mode now shows the reason that a test was skipped in the test's terminal line after the "SKIPPED", "XFAIL" or "XPASS".
-   [#&#8203;7469](https://github.com/pytest-dev/pytest/issues/7469) The types of builtin pytest fixtures are now exported so they may be used in type annotations of test functions.
    The newly-exported types are:

    -   `pytest.FixtureRequest` for the request fixture.
    -   `pytest.Cache` for the cache fixture.
    -   `pytest.CaptureFixture[str]` for the capfd and capsys fixtures.
    -   `pytest.CaptureFixture[bytes]` for the capfdbinary and capsysbinary fixtures.
    -   `pytest.LogCaptureFixture` for the caplog fixture.
    -   `pytest.Pytester` for the pytester fixture.
    -   `pytest.Testdir` for the testdir fixture.
    -   `pytest.TempdirFactory` for the tmpdir_factory fixture.
    -   `pytest.TempPathFactory` for the tmp_path_factory fixture.
    -   `pytest.MonkeyPatch` for the monkeypatch fixture.
    -   `pytest.WarningsRecorder` for the recwarn fixture.

    Constructing them is not supported (except for MonkeyPatch); they are only meant for use in type annotations.
    Doing so will emit a deprecation warning, and may become a hard-error in pytest 7.0.

    Subclassing them is also not supported. This is not currently enforced at runtime, but is detected by type-checkers such as mypy.

-   [#&#8203;7527](https://github.com/pytest-dev/pytest/issues/7527): When a comparison between namedtuple &lt;collections.namedtuple> instances of the same type fails, pytest now shows the differing field names (possibly nested) instead of their indexes.
-   [#&#8203;7615](https://github.com/pytest-dev/pytest/issues/7615): Node.warn &lt;\_pytest.nodes.Node.warn> now permits any subclass of Warning, not just PytestWarning &lt;pytest.PytestWarning>.
-   [#&#8203;7701](https://github.com/pytest-dev/pytest/issues/7701): Improved reporting when using `--collected-only`. It will now show the number of collected tests in the summary stats.
-   [#&#8203;7710](https://github.com/pytest-dev/pytest/issues/7710): Use strict equality comparison for non-numeric types in pytest.approx instead of
    raising TypeError.

    This was the undocumented behavior before 3.7, but is now officially a supported feature.

-   [#&#8203;7938](https://github.com/pytest-dev/pytest/issues/7938): New `--sw-skip` argument which is a shorthand for `--stepwise-skip`.
-   [#&#8203;8023](https://github.com/pytest-dev/pytest/issues/8023): Added `'node_modules'` to default value for norecursedirs.
-   [#&#8203;8032](https://github.com/pytest-dev/pytest/issues/8032): doClassCleanups &lt;unittest.TestCase.doClassCleanups> (introduced in unittest in Python and 3.8) is now called appropriately.

## Bug Fixes

-   [#&#8203;4824](https://github.com/pytest-dev/pytest/issues/4824): Fixed quadratic behavior and improved performance of collection of items using autouse fixtures and xunit fixtures.
-   [#&#8203;7758](https://github.com/pytest-dev/pytest/issues/7758): Fixed an issue where some files in packages are getting lost from `--lf` even though they contain tests that failed. Regressed in pytest 5.4.0.
-   [#&#8203;7911](https://github.com/pytest-dev/pytest/issues/7911): Directories created by by tmp_path and tmpdir are now considered stale after 3 days without modification (previous value was 3 hours) to avoid deleting directories still in use in long running test suites.
-   [#&#8203;7913](https://github.com/pytest-dev/pytest/issues/7913): Fixed a crash or hang in pytester.spawn &lt;\_pytest.pytester.Pytester.spawn> when the readline module is involved.
-   [#&#8203;7951](https://github.com/pytest-dev/pytest/issues/7951): Fixed handling of recursive symlinks when collecting tests.
-   [#&#8203;7981](https://github.com/pytest-dev/pytest/issues/7981): Fixed symlinked directories not being followed during collection. Regressed in pytest 6.1.0.
-   [#&#8203;8016](https://github.com/pytest-dev/pytest/issues/8016): Fixed only one doctest being collected when using `pytest --doctest-modules path/to/an/__init__.py`.

## Improved Documentation

-   [#&#8203;7429](https://github.com/pytest-dev/pytest/issues/7429): Add more information and use cases about skipping doctests.
-   [#&#8203;7780](https://github.com/pytest-dev/pytest/issues/7780): Classes which should not be inherited from are now marked `final class` in the API reference.
-   [#&#8203;7872](https://github.com/pytest-dev/pytest/issues/7872): `_pytest.config.argparsing.Parser.addini()` accepts explicit `None` and `"string"`.
-   [#&#8203;7878](https://github.com/pytest-dev/pytest/issues/7878): In pull request section, ask to commit after editing changelog and authors file.

## Trivial/Internal Changes

-   [#&#8203;7802](https://github.com/pytest-dev/pytest/issues/7802): The `attrs` dependency requirement is now >=19.2.0 instead of >=17.4.0.
-   [#&#8203;8014](https://github.com/pytest-dev/pytest/issues/8014): .pyc files created by pytest's assertion rewriting now conform to the newer PEP-552 format on Python>=3.7.
    (These files are internal and only interpreted by pytest itself.)

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/GoogleCloudPlatform/python-docs-samples).

* chore(deps): update dependency google-cloud-pubsub to v2.2.0 (#4673)

* chore(deps): update dependency google-cloud-pubsub to v2.2.0

* run pubsub script on healthcare/api-client/v1/dicom

* iot pubsub fixes, fix lint

* revert some changes pubsub script made

* try using return_value for mock

* undo previous change

* try adding publish_time in mock

* move publish_time param

* make publish_time a float

* make publish_time a datetime

* try using object instead of datetime

* another attempt

* undo the black stuff that messed up lint

Co-authored-by: Leah Cole <coleleah@google.com>
Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore(Dockerfile): add Python 3.9 (#4968)

* chore(Dockerfile): add Python 3.9

* Add py3.9 kokoro dir

* fix typo

* Add GPG keys

* Add 3.9 to noxfiles

* Update composer dep to avoid deprecation spam

* fix(storage): add py-3.9 specific key

* update psycopg2-binary, only run test in py-3.9 build

* add libmemcached-dev to the Dockerfile

* disable appengine standard test in py-3.9 build

* disable py-3.9 build for appengine cloud_debugger

* skip py-3.9 build for composer/workflows

* skip tests with pyarrow for py-3.9 build

* avoid ReferenceError in iot builds

* skip some tests due to pip error

* add a temporary statement for debugging

* fix lint

* use correct constant

* disable 2.7 builds

* disable builds due to pip conflict

The conflict is between google-cloud-monitoring==2.0.0 and
opencensus-ext-stackdriver.

* remove temporary debugging statement

* really skip py-3.9 build for pubsub/streaming-analytics

* copyright year fix

* fix(storage): explicitly use the test project for the test bucket

* fix(storage): use correct cloud project

* fix: disable py-3.9 builds

- appengine/standard_python3/bigquery
- data-science-onramp/data-ingestion

* disable py-3.9 build

- dataflow/encryption-keys
- dataflow/flex-templates/streaming_beam

* disable type hint checks

Co-authored-by: Takashi Matsuo <tmatsuo@google.com>

* fix(storage): list all versions (#5325)

## Description
Add the `versions=True` variable to the `list_file_archived_generations function` to actually list all the versions instead of the last one only.
Fixes the incongruency between python and the other languages in the [Listing noncurrent object versions code samples](https://cloud.google.com/storage/docs/using-object-versioning#list).

## Checklist
- [x] I have followed [Sample Guidelines from AUTHORING_GUIDE.MD](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md)
- [x] README is updated to include [all relevant information](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#readme-file)
- [x] **Tests** pass:   `nox -s py-3.6` (see [Test Environment Setup](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#test-environment-setup))
- [x] **Lint** pass:   `nox -s lint` (see [Test Environment Setup](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#test-environment-setup))
- [ ] These samples need a new **API enabled** in testing projects to pass (let us know which ones)
- [ ] These samples need a new/updated **env vars** in testing projects set to pass (let us know which ones)
- [x] Please **merge** this PR for me once it is approved.
- [ ] This sample adds a new sample directory, and I updated the [CODEOWNERS file](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/.github/CODEOWNERS) with the codeowners for this sample

* docs: address sample feedback issues (#5329)

## Description

Fixes #5180, captures work from #5181 authored by @keegan2149, thank you!

## Checklist
- [x] I have followed [Sample Guidelines from AUTHORING_GUIDE.MD](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md)
- [x] README is updated to include [all relevant information](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#readme-file)
- [x] **Tests** pass:   `nox -s py-3.6` (see [Test Environment Setup](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#test-environment-setup))
- [x] **Lint** pass:   `nox -s lint` (see [Test Environment Setup](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#test-environment-setup))
- [x] Please **merge** this PR for me once it is approved.

* chore(deps): update dependency google-cloud-pubsub to v2.3.0 (#5347)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [google-cloud-pubsub](https://github.com/googleapis/python-pubsub) | `==2.2.0` -> `==2.3.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.3.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.3.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.3.0/compatibility-slim/2.2.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.3.0/confidence-slim/2.2.0)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/python-pubsub</summary>

### [`v2.3.0`](https://github.com/googleapis/python-pubsub/blob/master/CHANGELOG.md#&#8203;230-httpswwwgithubcomgoogleapispython-pubsubcomparev220v230-2021-02-08)

[Compare Source](https://github.com/googleapis/python-pubsub/compare/v2.2.0...v2.3.0)

##### Features

-   surface SchemaServiceClient in google.cloud.pubsub ([#&#8203;281](https://www.github.com/googleapis/python-pubsub/issues/281)) ([8751bcc](https://www.github.com/googleapis/python-pubsub/commit/8751bcc5eb782df55769b48253629a3bde3d4661))

##### Bug Fixes

-   client version missing from the user agent header ([#&#8203;275](https://www.github.com/googleapis/python-pubsub/issues/275)) ([b112f4f](https://www.github.com/googleapis/python-pubsub/commit/b112f4fcbf6f2bce8dcf37871bdc540b11f54fe3))
-   Don't open the google.cloud package by adding pubsub.py ([#&#8203;269](https://www.github.com/googleapis/python-pubsub/issues/269)) ([542d79d](https://www.github.com/googleapis/python-pubsub/commit/542d79d7c5fb7403016150ba477485756cd4097b))
-   flaky samples tests ([#&#8203;263](https://www.github.com/googleapis/python-pubsub/issues/263)) ([3d6a29d](https://www.github.com/googleapis/python-pubsub/commit/3d6a29de07cc09be663c90a3333f4cd33633994f))
-   Modify synth.py to update grpc transport options ([#&#8203;266](https://www.github.com/googleapis/python-pubsub/issues/266)) ([41dcd30](https://www.github.com/googleapis/python-pubsub/commit/41dcd30636168f3dd1248f1d99170d531fc9bcb8))
-   pass anonymous credentials for emulator ([#&#8203;250](https://www.github.com/googleapis/python-pubsub/issues/250)) ([8eed8e1](https://www.github.com/googleapis/python-pubsub/commit/8eed8e16019510dc8b20fb6b009d61a7ac532d26))
-   remove grpc send/recieve limits ([#&#8203;259](https://www.github.com/googleapis/python-pubsub/issues/259)) ([fd2840c](https://www.github.com/googleapis/python-pubsub/commit/fd2840c10f92b03da7f4b40ac69c602220757c0a))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/GoogleCloudPlatform/python-docs-samples).

* chore(deps): update dependency google-cloud-storage to v1.35.1 (#5321)

* chore(deps): update dependency google-cloud-pubsub to v2.4.0 (#5399)

* chore(deps): update dependency google-cloud-storage to v1.36.1 (#5353)

* chore(deps): update dependency google-cloud-storage to v1.36.1

* moving media transcoder separately

Co-authored-by: Leah Cole <coleleah@google.com>
Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore(deps): update dependency google-cloud-storage to v1.36.2 (#5520)

* chore(deps): update dependency google-cloud-storage to v1.37.0 (#5580)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [google-cloud-storage](https://github.com/googleapis/python-storage) | `==1.36.2` -> `==1.37.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-cloud-storage/1.37.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-cloud-storage/1.37.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-cloud-storage/1.37.0/compatibility-slim/1.36.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-cloud-storage/1.37.0/confidence-slim/1.36.2)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/python-storage</summary>

### [`v1.37.0`](https://github.com/googleapis/python-storage/blob/master/CHANGELOG.md#&#8203;1370-httpswwwgithubcomgoogleapispython-storagecomparev1362v1370-2021-03-24)

[Compare Source](https://github.com/googleapis/python-storage/compare/v1.36.2...v1.37.0)

##### Features

-   add blob.open() for file-like I/O ([#&#8203;385](https://www.github.com/googleapis/python-storage/issues/385)) ([440a0a4](https://www.github.com/googleapis/python-storage/commit/440a0a4ffe00b1f7c562b0e9c1e47dbadeca33e1)), closes [#&#8203;29](https://www.github.com/googleapis/python-storage/issues/29)

##### Bug Fixes

-   update user_project usage and documentation in bucket/client class methods ([#&#8203;396](https://www.github.com/googleapis/python-storage/issues/396)) ([1a2734b](https://www.github.com/googleapis/python-storage/commit/1a2734ba6d316ce51e4e141571331e86196462b9))

##### [1.36.2](https://www.github.com/googleapis/python-storage/compare/v1.36.1...v1.36.2) (2021-03-09)

##### Bug Fixes

-   update batch connection to request api endpoint info from client ([#&#8203;392](https://www.github.com/googleapis/python-storage/issues/392)) ([91fc6d9](https://www.github.com/googleapis/python-storage/commit/91fc6d9870a36308b15a827ed6a691e5b4669b62))

##### [1.36.1](https://www.github.com/googleapis/python-storage/compare/v1.36.0...v1.36.1) (2021-02-19)

##### Bug Fixes

-   allow metadata keys to be cleared ([#&#8203;383](https://www.github.com/googleapis/python-storage/issues/383)) ([79d27da](https://www.github.com/googleapis/python-storage/commit/79d27da9fe842e44a9091076ea0ef52c5ef5ff72)), closes [#&#8203;381](https://www.github.com/googleapis/python-storage/issues/381)
-   allow signed url version v4 without signed credentials ([#&#8203;356](https://www.github.com/googleapis/python-storage/issues/356)) ([3e69bf9](https://www.github.com/googleapis/python-storage/commit/3e69bf92496616c5de28094dd42260b35c3bf982))
-   correctly encode bytes for V2 signature ([#&#8203;382](https://www.github.com/googleapis/python-storage/issues/382)) ([f44212b](https://www.github.com/googleapis/python-storage/commit/f44212b7b91a67ca661898400fe632f9fb3ec8f6))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/GoogleCloudPlatform/python-docs-samples).

* chore(deps): update dependency google-cloud-pubsub to v2.4.1 (#5610)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [google-cloud-pubsub](https://github.com/googleapis/python-pubsub) | `==2.4.0` -> `==2.4.1` | [![age](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.4.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.4.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.4.1/compatibility-slim/2.4.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-cloud-pubsub/2.4.1/confidence-slim/2.4.0)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/python-pubsub</summary>

### [`v2.4.1`](https://github.com/googleapis/python-pubsub/blob/master/CHANGELOG.md#&#8203;241-httpswwwgithubcomgoogleapispython-pubsubcomparev240v241-2021-03-30)

[Compare Source](https://github.com/googleapis/python-pubsub/compare/v2.4.0...2.4.1)

##### Bug Fixes

-   Move `await_msg_callbacks` flag to `subscribe()` method, fixing a regression in Pub/Sub Lite client.
    ([#&#8203;320](https://www.github.com/googleapis/python-pubsub/issues/320)) ([d40d027](https://www.github.com/googleapis/python-pubsub/commit/d40d02713c8c189937ae5c21d099b88a3131a59f))
-   SSL error when using the client with the emulator. ([#&#8203;297](https://www.github.com/googleapis/python-pubsub/issues/297)) ([83db672](https://www.github.com/googleapis/python-pubsub/commit/83db67239d3521457138699109f766d574a0a2c4))

##### Implementation Changes

-   (samples) Bump the max_time to 10 minutes for a flaky test. ([#&#8203;311](https://www.github.com/googleapis/python-pubsub/issues/311)) ([e2678d4](https://www.github.com/googleapis/python-pubsub/commit/e2678d47c08e6b03782d2d744a4e630b933fdd51)), closes [#&#8203;291](https://www.github.com/googleapis/python-pubsub/issues/291)
-   (samples) Mark delivery attempts test as flaky. ([#&#8203;326](https://www.github.com/googleapis/python-pubsub/issues/326)) ([5a97ef1](https://www.github.com/googleapis/python-pubsub/commit/5a97ef1bb7512fe814a8f72a43b3e9698434cd8d))
-   (samples) Mitigate flakiness in subscriber_tests. ([#&#8203;304](https://www.github.com/googleapis/python-pubsub/issues/304)) ([271a385](https://www.github.com/googleapis/python-pubsub/commit/271a3856d835967f18f6becdae5ad53d585d0ccf))
-   (samples) Retry `InternalServerError` in dead letter policy test. ([#&#8203;329](https://www.github.com/googleapis/python-pubsub/issues/329)) ([34c9b11](https://www.github.com/googleapis/python-pubsub/commit/34c9b11ae697c280f32642c3101b7f7da971f589)), closes [#&#8203;321](https://www.github.com/googleapis/python-pubsub/issues/321)

##### Documentation

-   Remove EXPERIMENTAL tag for ordering keys in `types.py`. ([#&#8203;323](https://www.github.com/googleapis/python-pubsub/issues/323)) ([659cd7a](https://www.github.com/googleapis/python-pubsub/commit/659cd7ae2784245d4217fbc722dac04bd3222d32))
-   Remove EXPERIMENTAL tag from `Schema` service (via synth). ([#&#8203;307](https://www.github.com/googleapis/python-pubsub/issues/307)) ([ad85202](https://www.github.com/googleapis/python-pubsub/commit/ad852028836520db779c5cc33689ffd7e5458a7d))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/GoogleCloudPlatform/python-docs-samples).

* docs: update description of parameters in storage_upload_file (#5707)

* following Java's example https://github.com/googleapis/google-cloud-java/blob/b36db6a957bcfb7b6ccdb77fb12b4cc7fa22b807/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/objects/UploadObject.java#L33-L40

* samples(storage): update storage_set_bucket_public_iam to explicitly set role and member (#5708)

* chore: fix typo on noxfile (#5739)

* chore: add noxfile config

* chore: fix typo on noxfile

* Remove "chore: add noxfile config"

This reverts commit 61972125cbbf110941da1227afed53f169bad3a6.

* chore: fix the base noxfile_config

* fix(storage): retry flaky test (#5744)

Fixes #5684

* chore(deps): update dependency google-api-python-client to v2.3.0 (#5689)

* Update storage_list_files_with_prefix.py (#5747)

* chore(deps): update dependency google-cloud-storage to v1.38.0 (#5640)

Test failures are unrelated

* chore(deps): update dependency pytest to v6.2.4 (#5787)

Co-authored-by: Dan Lee <71398022+dandhlee@users.noreply.github.com>

* chore(deps): update dependency google-cloud-pubsub to v2.4.2 (#5810)

Co-authored-by: Dan Lee <71398022+dandhlee@users.noreply.github.com>

* chore(deps): update dependency google-cloud-pubsub to v2.5.0 (#5845)

* chore(deps): update dependency google-api-python-client to v2.4.0 (#5820)

* chore(deps): update dependency google-api-python-client to v2.5.0 (#5857)

Co-authored-by: Dan Lee <71398022+dandhlee@users.noreply.github.com>

* chore(deps): update dependency google-api-python-client to v2.6.0 (#5890)

Co-authored-by: Dan Lee <71398022+dandhlee@users.noreply.github.com>

* chore(deps): update dependency google-api-python-client to v2.7.0 (#6062)

* chore(deps): update dependency google-cloud-pubsub to v2.6.0 (#6233)

* public access prevention samples & tests (#4971)

* public access prevention samples & tests

* linted files

* respnded to PR comments

* updated docstring

* updated docstring

* refactored fixture code

* renamed samples

* updated location for constants

* updated location for constants

* updated samples to conform to sample guidelines

* added license

* updated headers

* Updating requirements

* used f strings

* linted files

* f string suggestions from code review

Co-authored-by: Dina Graves Portman <dinagraves@google.com>

Co-authored-by: Dina Graves Portman <dinagraves@google.com>

* chore(deps): update dependency google-api-python-client to v2.11.0 (#6101)

* chore(deps): update dependency google-cloud-pubsub to v2.6.1 (#6284)

* chore(deps): update dependency backoff to v1.11.0 (#6285)

Co-authored-by: Dina Graves Portman <dinagraves@google.com>

* chore(deps): update dependency google-cloud-storage to v1.41.0 (#6197)

* chore(deps): update dependency google-cloud-storage to v1.41.0

* revert dataflow flex templates

* revert all dataflow changes

* correct my mistake with dataflow stuff

* restore dataflow file

Co-authored-by: Leah Cole <coleleah@google.com>

* chore(deps): update dependency google-api-python-client to v2.12.0 (#6269)

* chore(deps): update dependency google-api-python-client to v2.12.0

* revert dataflow

* revert dataflow

Co-authored-by: Leah Cole <coleleah@google.com>

* chore(deps): update dependency google-cloud-pubsub to v2.7.0 (#6486)

Co-authored-by: Dan Lee <71398022+dandhlee@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>

* fix(storage): update service account email for acl tests (#6529)

* fix: update test email for acl tests. previous email was deleted in the project

* update to service account without project editor owner permissions

* update test email to avoid creating new service accounts

* docs(storage): update description in storage_download_file (#6553)

* Add storage move_blob sample and fix confusion with rename (#6554)

* Add storage move_blob sample and fix confusion with rename

* fix license heading issues

* Add descriptive comments to parameters

* Update storage/cloud-client/storage_move_file.py

* Apply suggestions from code review

Add print statement in except clause

Co-authored-by: cojenco <cathyo@google.com>
Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore(deps): update dependency backoff to v1.11.1 (#6571)

Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore(deps): update dependency google-api-python-client to v2.15.0 (#6574)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `==2.12.0` -> `==2.15.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/compatibility-slim/2.12.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/confidence-slim/2.12.0)](https://docs.renovatebot.com/merge-confidence/) |
| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `==2.11.0` -> `==2.15.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/compatibility-slim/2.11.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/confidence-slim/2.11.0)](https://docs.renovatebot.com/merge-confidence/) |
| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `==2.1.0` -> `==2.15.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/compatibility-slim/2.1.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-api-python-client/2.15.0/confidence-slim/2.1.0)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/google-api-python-client</summary>

### [`v2.15.0`](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md#&#8203;2150-httpswwwgithubcomgoogleapisgoogle-api-python-clientcomparev2141v2150-2021-07-27)

[Compare Source](https://github.com/googleapis/google-api-python-client/compare/v2.14.1...v2.15.0)

##### Features

-   **alertcenter:** update the api https://github.com/googleapis/google-api-python-client/commit/70810a52c85c6d0d6f00d7afb41c8608261eaebc ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **chat:** update the api https://github.com/googleapis/google-api-python-client/commit/a577cd0b71951176bbf849c1f7f139127205da54 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **cloudbuild:** update the api https://github.com/googleapis/google-api-python-client/commit/9066056a8b106d441fb7686fe84359484d0d58bc ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **content:** update the api https://github.com/googleapis/google-api-python-client/commit/b123349da33c11c0172a8efb3fadef685a30e6e1 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **displayvideo:** update the api https://github.com/googleapis/google-api-python-client/commit/c525d726ee6cffdd4bc7afd69080d5e52bae83a0 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **dns:** update the api https://github.com/googleapis/google-api-python-client/commit/13436ccd2b835fda5cb86952ac4ea991ee8651d8 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **eventarc:** update the api https://github.com/googleapis/google-api-python-client/commit/6be3394a64a5eb509f68ef779680fd36837708ee ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **file:** update the api https://github.com/googleapis/google-api-python-client/commit/817a0e636771445a988ef479bd52740f754b901a ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **monitoring:** update the api https://github.com/googleapis/google-api-python-client/commit/bd32149f308467f0f659119587afc77dcec65b14 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **people:** update the api https://github.com/googleapis/google-api-python-client/commit/aa6b47df40c5289f33aef6fb6aa007df2d038e20 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **retail:** update the api https://github.com/googleapis/google-api-python-client/commit/d39f06e2d77034bc837604a41dd52c577f158bf2 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **securitycenter:** update the api https://github.com/googleapis/google-api-python-client/commit/999fab5178208639c9eef289f9f441052ed832fc ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **speech:** update the api https://github.com/googleapis/google-api-python-client/commit/3b2c0fa62b2a0c86bba1e97f1b18f93250dbd551 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfdc5b3ac0a70ff1b014c4bc75f))
-   **sqladmin:** update the api https://github.com/googleapis/google-api-python-client/commit/cef24d829ab5be71563a2b668b8f6cf5dda2c8e4 ([a36e3b1](https://www.github.com/googleapis/google-api-python-client/commit/a36e3b130d609dfd…
parthea pushed a commit that referenced this issue Jun 4, 2023
* Data Labeling Beta samples [(#2096)](GoogleCloudPlatform/python-docs-samples#2096)

* add files

* upate create_annotation_spec_set and test

* add requirements.txt

* update create_instruction and test

* update import data and test

* add label image and test

* add label_text test

* add label_video_test

* add manage dataset and tests

* flake

* fix

* add README

* Adds updates including compute [(#2436)](GoogleCloudPlatform/python-docs-samples#2436)

* Adds updates including compute

* Python 2 compat pytest

* Fixing weird \r\n issue from GH merge

* Put asset tests back in

* Re-add pod operator test

* Hack parameter for k8s pod operator

* Update datalabeling samples to hit test endpoint. [(#2641)](GoogleCloudPlatform/python-docs-samples#2641)

* Auto-update dependencies. [(#2005)](GoogleCloudPlatform/python-docs-samples#2005)

* Auto-update dependencies.

* Revert update of appengine/flexible/datastore.

* revert update of appengine/flexible/scipy

* revert update of bigquery/bqml

* revert update of bigquery/cloud-client

* revert update of bigquery/datalab-migration

* revert update of bigtable/quickstart

* revert update of compute/api

* revert update of container_registry/container_analysis

* revert update of dataflow/run_template

* revert update of datastore/cloud-ndb

* revert update of dialogflow/cloud-client

* revert update of dlp

* revert update of functions/imagemagick

* revert update of functions/ocr/app

* revert update of healthcare/api-client/fhir

* revert update of iam/api-client

* revert update of iot/api-client/gcs_file_to_device

* revert update of iot/api-client/mqtt_example

* revert update of language/automl

* revert update of run/image-processing

* revert update of vision/automl

* revert update testing/requirements.txt

* revert update of vision/cloud-client/detect

* revert update of vision/cloud-client/product_search

* revert update of jobs/v2/api_client

* revert update of jobs/v3/api_client

* revert update of opencensus

* revert update of translate/cloud-client

* revert update to speech/cloud-client

Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
Co-authored-by: Doug Mahugh <dmahugh@gmail.com>

* Update datalabeling to match lint. [(#2642)](GoogleCloudPlatform/python-docs-samples#2642)

* datalabeling: ensure all tests use test endpoint [(#2918)](GoogleCloudPlatform/python-docs-samples#2918)

* datalabeling: ensure all tests use test endpoint

* requires an input csv for text input, slight print statement cleanup

Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>

* chore(deps): update dependency google-cloud-datalabeling to v0.4.0 [(#3081)](GoogleCloudPlatform/python-docs-samples#3081)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [google-cloud-datalabeling](https://github.com/googleapis/python-datalabeling) | minor | `==0.3.0` -> `==0.4.0` |

---

### Release Notes

<details>
<summary>googleapis/python-datalabeling</summary>

### [`v0.4.0`](https://github.com/googleapis/python-datalabeling/blob/master/CHANGELOG.md#&#8203;040-httpswwwgithubcomgoogleapispython-datalabelingcomparev030v040-2020-01-31)

[Compare Source](https://github.com/googleapis/python-datalabeling/compare/v0.3.0...v0.4.0)

##### Features

-   **datalabeling:** undeprecate resource name helper methods (via synth) ([#&#8203;10039](https://www.github.com/googleapis/python-datalabeling/issues/10039)) ([88f8090](https://www.github.com/googleapis/python-datalabeling/commit/88f809008ee6a709c02c78b1d93af779fab19adb))

##### Bug Fixes

-   **datalabeling:** deprecate resource name helper methods (via synth) ([#&#8203;9832](https://www.github.com/googleapis/python-datalabeling/issues/9832)) ([e5f9021](https://www.github.com/googleapis/python-datalabeling/commit/e5f902154ebe7fcb139aa405babfe9993fd51319))

</details>

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples).

* Simplify noxfile setup. [(#2806)](GoogleCloudPlatform/python-docs-samples#2806)

* chore(deps): update dependency requests to v2.23.0

* Simplify noxfile and add version control.

* Configure appengine/standard to only test Python 2.7.

* Update Kokokro configs to match noxfile.

* Add requirements-test to each folder.

* Remove Py2 versions from everything execept appengine/standard.

* Remove conftest.py.

* Remove appengine/standard/conftest.py

* Remove 'no-sucess-flaky-report' from pytest.ini.

* Add GAE SDK back to appengine/standard tests.

* Fix typo.

* Roll pytest to python 2 version.

* Add a bunch of testing requirements.

* Remove typo.

* Add appengine lib directory back in.

* Add some additional requirements.

* Fix issue with flake8 args.

* Even more requirements.

* Readd appengine conftest.py.

* Add a few more requirements.

* Even more Appengine requirements.

* Add webtest for appengine/standard/mailgun.

* Add some additional requirements.

* Add workaround for issue with mailjet-rest.

* Add responses for appengine/standard/mailjet.

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* testing: mark some tests as flaky [(#3288)](GoogleCloudPlatform/python-docs-samples#3288)

fixes #3138

* [datalabeling] testing: wrap rpcs with backoff [(#3443)](GoogleCloudPlatform/python-docs-samples#3443)

* wrap all the rpcs with backoff
* add a shared testing lib
* remove flaky

* [datalabeling] fix: clean up old datasets before the test [(#3707)](GoogleCloudPlatform/python-docs-samples#3707)

fixes #3710 
fixes #3711

* [datalabeling] testing: retry upon ServerError [(#3762)](GoogleCloudPlatform/python-docs-samples#3762)

fixes #3760

* Replace GCLOUD_PROJECT with GOOGLE_CLOUD_PROJECT. [(#4022)](GoogleCloudPlatform/python-docs-samples#4022)

* chore(deps): update dependency pytest to v5.4.3 [(#4279)](GoogleCloudPlatform/python-docs-samples#4279)

* chore(deps): update dependency pytest to v5.4.3

* specify pytest for python 2 in appengine

Co-authored-by: Leah Cole <coleleah@google.com>

* Update dependency pytest to v6 [(#4390)](GoogleCloudPlatform/python-docs-samples#4390)

* chore: update templates

* chore: fix docs error

* chore: skip unavailable samples

* chore: use staging endpoint for labeling tests

Co-authored-by: Rebecca Taylor <remilytaylor@gmail.com>
Co-authored-by: Gus Class <gguuss@gmail.com>
Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
Co-authored-by: DPEBot <dpebot@google.com>
Co-authored-by: Doug Mahugh <dmahugh@gmail.com>
Co-authored-by: Noah Negrey <nnegrey@users.noreply.github.com>
Co-authored-by: Leah E. Cole <6719667+leahecole@users.noreply.github.com>
Co-authored-by: WhiteSource Renovate <bot@renovateapp.com>
Co-authored-by: Takashi Matsuo <tmatsuo@google.com>
Co-authored-by: Leah Cole <coleleah@google.com>
Co-authored-by: Bu Sun Kim <busunkim@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: storage Issues related to the Cloud Storage API. backend priority: p2 Moderately-important priority. Fix may not be included in next release.
Projects
None yet
Development

No branches or pull requests

4 participants