From 16b581c5f60d42fc714247ac36263d263ce047c1 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Mon, 3 Nov 2014 14:54:30 -0500 Subject: [PATCH 1/3] Document how 'NotFoundError' propagates. Describe suppressing it via 'bucket.delete_keys([key], on_error=lambda k:None'. Fixes #160. --- gcloud/storage/bucket.py | 14 +++++++++++--- gcloud/storage/key.py | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gcloud/storage/bucket.py b/gcloud/storage/bucket.py index 72b10ec93359..027b00943233 100644 --- a/gcloud/storage/bucket.py +++ b/gcloud/storage/bucket.py @@ -189,7 +189,11 @@ def delete_key(self, key): :rtype: :class:`gcloud.storage.key.Key` :returns: The key that was just deleted. - :raises: :class:`gcloud.storage.exceptions.NotFoundError` + :raises: :class:`gcloud.storage.exceptions.NotFoundError` (to suppress + the exception, call ``delete_keys``, passing a no-op + ``on_error`` callback, e.g.:: + + >>> bucket.delete_keys([key], on_error=lambda *key: pass) """ key = self.new_key(key) self.connection.api_request(method='DELETE', path=key.path) @@ -204,8 +208,12 @@ def delete_keys(self, keys, on_error=None): :param keys: A list of key names or Key objects to delete. :type on_error: a callable taking (key) - :param on_error: If not ``None``, called once for each key which - raises a ``NotFoundError``. + :param on_error: If not ``None``, called once for each key raising + :class:`gcloud.storage.exceptions.NotFoundError`; + otherwise, the exception is propagated. + + :raises: :class:`gcloud.storage.exceptions.NotFoundError` (if + `on_error` is not passed). """ for key in keys: try: diff --git a/gcloud/storage/key.py b/gcloud/storage/key.py index 217f98ee29e3..96949539f391 100644 --- a/gcloud/storage/key.py +++ b/gcloud/storage/key.py @@ -165,6 +165,7 @@ def delete(self): :rtype: :class:`Key` :returns: The key that was just deleted. + :raises: :class:`gcloud.storage.exceptions.NotFoundError`. """ return self.bucket.delete_key(self) From 9cc2052c58df05f00030eccb3017536a819ff3e4 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Mon, 3 Nov 2014 16:56:47 -0500 Subject: [PATCH 2/3] Typo: no star-arg required. --- gcloud/storage/bucket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcloud/storage/bucket.py b/gcloud/storage/bucket.py index 027b00943233..2b8af9114f37 100644 --- a/gcloud/storage/bucket.py +++ b/gcloud/storage/bucket.py @@ -193,7 +193,7 @@ def delete_key(self, key): the exception, call ``delete_keys``, passing a no-op ``on_error`` callback, e.g.:: - >>> bucket.delete_keys([key], on_error=lambda *key: pass) + >>> bucket.delete_keys([key], on_error=lambda key: pass) """ key = self.new_key(key) self.connection.api_request(method='DELETE', path=key.path) From 7441438f6940d45f53294031bbb6baac6ec10ba7 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Mon, 3 Nov 2014 17:00:09 -0500 Subject: [PATCH 3/3] Note source of exception. Incorporates feedback from @dhermes. --- gcloud/storage/key.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcloud/storage/key.py b/gcloud/storage/key.py index 96949539f391..16e495d9aa4a 100644 --- a/gcloud/storage/key.py +++ b/gcloud/storage/key.py @@ -165,7 +165,9 @@ def delete(self): :rtype: :class:`Key` :returns: The key that was just deleted. - :raises: :class:`gcloud.storage.exceptions.NotFoundError`. + :raises: :class:`gcloud.storage.exceptions.NotFoundError` + (propagated from + :meth:`gcloud.storage.bucket.Bucket.delete_key`). """ return self.bucket.delete_key(self)