Skip to content

Commit

Permalink
Remove 'Bucket.__iter__' and 'Bucket.__contains__'.
Browse files Browse the repository at this point in the history
Both are 'sugar' over other methods, but do not allow passing an explicit
connection.

In addition, 'Bucket.__iter__' has scaling issues, which cannot be mitigated
using the filtering parameters accepted by 'Bucket.list_blobs'.
  • Loading branch information
tseaver committed May 14, 2015
1 parent f3d8799 commit 32526bf
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 60 deletions.
7 changes: 0 additions & 7 deletions gcloud/storage/bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,6 @@ def __init__(self, name=None):
def __repr__(self):
return '<Bucket: %s>' % self.name

def __iter__(self):
return iter(self.list_blobs())

def __contains__(self, blob_name):
blob = Blob(blob_name, bucket=self)
return blob.exists()

def exists(self, connection=None):
"""Determines whether or not this bucket exists.
Expand Down
53 changes: 0 additions & 53 deletions gcloud/storage/test_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,59 +106,6 @@ def test_ctor_explicit(self):
self.assertFalse(bucket._default_object_acl.loaded)
self.assertTrue(bucket._default_object_acl.bucket is bucket)

def test___iter___empty(self):
from gcloud.storage._testing import _monkey_defaults
NAME = 'name'
connection = _Connection({'items': []})
bucket = self._makeOne(NAME)
with _monkey_defaults(connection=connection):
blobs = list(bucket)
self.assertEqual(blobs, [])
kw, = connection._requested
self.assertEqual(kw['method'], 'GET')
self.assertEqual(kw['path'], '/b/%s/o' % NAME)
self.assertEqual(kw['query_params'], {'projection': 'noAcl'})

def test___iter___non_empty(self):
from gcloud.storage._testing import _monkey_defaults
NAME = 'name'
BLOB_NAME = 'blob-name'
connection = _Connection({'items': [{'name': BLOB_NAME}]})
bucket = self._makeOne(NAME)
with _monkey_defaults(connection=connection):
blobs = list(bucket)
blob, = blobs
self.assertTrue(blob.bucket is bucket)
self.assertEqual(blob.name, BLOB_NAME)
kw, = connection._requested
self.assertEqual(kw['method'], 'GET')
self.assertEqual(kw['path'], '/b/%s/o' % NAME)
self.assertEqual(kw['query_params'], {'projection': 'noAcl'})

def test___contains___miss(self):
from gcloud.storage._testing import _monkey_defaults
NAME = 'name'
NONESUCH = 'nonesuch'
connection = _Connection()
bucket = self._makeOne(NAME)
with _monkey_defaults(connection=connection):
self.assertFalse(NONESUCH in bucket)
kw, = connection._requested
self.assertEqual(kw['method'], 'GET')
self.assertEqual(kw['path'], '/b/%s/o/%s' % (NAME, NONESUCH))

def test___contains___hit(self):
from gcloud.storage._testing import _monkey_defaults
NAME = 'name'
BLOB_NAME = 'blob-name'
connection = _Connection({'name': BLOB_NAME})
bucket = self._makeOne(NAME)
with _monkey_defaults(connection=connection):
self.assertTrue(BLOB_NAME in bucket)
kw, = connection._requested
self.assertEqual(kw['method'], 'GET')
self.assertEqual(kw['path'], '/b/%s/o/%s' % (NAME, BLOB_NAME))

def test_exists_miss(self):
from gcloud.exceptions import NotFound

Expand Down

0 comments on commit 32526bf

Please sign in to comment.