From 3817154d0fd1096c6d0eff365d88a5654837f58f Mon Sep 17 00:00:00 2001 From: Danny Hermes Date: Sat, 28 Mar 2015 13:51:24 -0700 Subject: [PATCH] Removing _PropertyMixin.properties public property. The blob/bucket metadata was never actually accessed via the public properties `properties`. --- gcloud/storage/_helpers.py | 11 +---------- gcloud/storage/blob.py | 28 ++++++++++++++-------------- gcloud/storage/bucket.py | 22 +++++++++++----------- gcloud/storage/test__helpers.py | 14 +------------- gcloud/storage/test_blob.py | 4 ++-- gcloud/storage/test_bucket.py | 6 +++--- 6 files changed, 32 insertions(+), 53 deletions(-) diff --git a/gcloud/storage/_helpers.py b/gcloud/storage/_helpers.py index 11cad2481e282..c65f4ecf02bd8 100644 --- a/gcloud/storage/_helpers.py +++ b/gcloud/storage/_helpers.py @@ -49,15 +49,6 @@ def __init__(self, name=None): self._properties = {} self._changes = set() - @property - def properties(self): - """Return a copy of properties. - - :rtype: dict - :returns: Copy of properties. - """ - return self._properties.copy() - @property def batch(self): """Return a context manager which defers/batches updates. @@ -155,7 +146,7 @@ def _scalar_property(fieldname): """ def _getter(self): """Scalar property getter.""" - return self.properties[fieldname] + return self._properties[fieldname] def _setter(self, value): """Scalar property setter.""" diff --git a/gcloud/storage/blob.py b/gcloud/storage/blob.py index ed8491474a5f4..8bc66f235f7c4 100644 --- a/gcloud/storage/blob.py +++ b/gcloud/storage/blob.py @@ -250,7 +250,7 @@ def download_to_filename(self, filename): mtime = time.mktime( datetime.datetime.strptime( - self.properties['updated'], + self._properties['updated'], '%Y-%m-%dT%H:%M:%S.%fz').timetuple() ) os.utime(file_obj.name, (mtime, mtime)) @@ -489,7 +489,7 @@ def component_count(self): :rtype: integer """ - return self.properties['componentCount'] + return self._properties['componentCount'] @property def etag(self): @@ -500,7 +500,7 @@ def etag(self): :rtype: string """ - return self.properties['etag'] + return self._properties['etag'] @property def generation(self): @@ -510,7 +510,7 @@ def generation(self): :rtype: integer """ - return self.properties['generation'] + return self._properties['generation'] @property def id(self): @@ -520,7 +520,7 @@ def id(self): :rtype: string """ - return self.properties['id'] + return self._properties['id'] md5_hash = _scalar_property('md5Hash') """MD5 hash for this object. @@ -539,7 +539,7 @@ def media_link(self): :rtype: string """ - return self.properties['mediaLink'] + return self._properties['mediaLink'] @property def metadata(self): @@ -549,7 +549,7 @@ def metadata(self): :rtype: dict """ - return copy.deepcopy(self.properties['metadata']) + return copy.deepcopy(self._properties['metadata']) @metadata.setter def metadata(self, value): @@ -569,7 +569,7 @@ def metageneration(self): :rtype: integer """ - return self.properties['metageneration'] + return self._properties['metageneration'] @property def owner(self): @@ -580,7 +580,7 @@ def owner(self): :rtype: dict :returns: mapping of owner's role/ID. """ - return self.properties['owner'].copy() + return self._properties['owner'].copy() @property def self_link(self): @@ -590,7 +590,7 @@ def self_link(self): :rtype: string """ - return self.properties['selfLink'] + return self._properties['selfLink'] @property def size(self): @@ -600,7 +600,7 @@ def size(self): :rtype: integer """ - return self.properties['size'] + return self._properties['size'] @property def storage_class(self): @@ -612,7 +612,7 @@ def storage_class(self): :rtype: string :returns: Currently one of "STANDARD", "DURABLE_REDUCED_AVAILABILITY" """ - return self.properties['storageClass'] + return self._properties['storageClass'] @property def time_deleted(self): @@ -624,7 +624,7 @@ def time_deleted(self): :returns: timestamp in RFC 3339 format, or None if the object has a "live" version. """ - return self.properties.get('timeDeleted') + return self._properties.get('timeDeleted') @property def updated(self): @@ -635,7 +635,7 @@ def updated(self): :rtype: string :returns: timestamp in RFC 3339 format. """ - return self.properties['updated'] + return self._properties['updated'] class _UploadConfig(object): diff --git a/gcloud/storage/bucket.py b/gcloud/storage/bucket.py index 979b17353efd3..f00f021654cc9 100644 --- a/gcloud/storage/bucket.py +++ b/gcloud/storage/bucket.py @@ -463,7 +463,7 @@ def cors(self): :returns: A sequence of mappings describing each CORS policy. """ return [copy.deepcopy(policy) - for policy in self.properties.get('cors', ())] + for policy in self._properties.get('cors', ())] @cors.setter def cors(self, entries): @@ -499,7 +499,7 @@ def etag(self): :rtype: string """ - return self.properties['etag'] + return self._properties['etag'] @property def id(self): @@ -509,7 +509,7 @@ def id(self): :rtype: string """ - return self.properties['id'] + return self._properties['id'] @property def lifecycle_rules(self): @@ -555,7 +555,7 @@ def get_logging(self): (if logging is enabled), or None (if not). """ self.reload() - info = self.properties.get('logging') + info = self._properties.get('logging') if info is not None: return info.copy() @@ -590,7 +590,7 @@ def metageneration(self): :rtype: integer """ - return self.properties['metageneration'] + return self._properties['metageneration'] @property def owner(self): @@ -601,7 +601,7 @@ def owner(self): :rtype: dict :returns: mapping of owner's role/ID. """ - return self.properties['owner'].copy() + return self._properties['owner'].copy() @property def project_number(self): @@ -611,7 +611,7 @@ def project_number(self): :rtype: integer """ - return self.properties['projectNumber'] + return self._properties['projectNumber'] @property def self_link(self): @@ -621,7 +621,7 @@ def self_link(self): :rtype: string """ - return self.properties['selfLink'] + return self._properties['selfLink'] @property def storage_class(self): @@ -633,7 +633,7 @@ def storage_class(self): :rtype: string :returns: Currently one of "STANDARD", "DURABLE_REDUCED_AVAILABILITY" """ - return self.properties['storageClass'] + return self._properties['storageClass'] @property def time_created(self): @@ -644,7 +644,7 @@ def time_created(self): :rtype: string :returns: timestamp in RFC 3339 format. """ - return self.properties['timeCreated'] + return self._properties['timeCreated'] @property def versioning_enabled(self): @@ -656,7 +656,7 @@ def versioning_enabled(self): :rtype: boolean :returns: True if enabled, else False. """ - versioning = self.properties.get('versioning', {}) + versioning = self._properties.get('versioning', {}) return versioning.get('enabled', False) @versioning_enabled.setter diff --git a/gcloud/storage/test__helpers.py b/gcloud/storage/test__helpers.py index 215d7d325d428..52fab616b149f 100644 --- a/gcloud/storage/test__helpers.py +++ b/gcloud/storage/test__helpers.py @@ -60,18 +60,6 @@ def test_batch(self): self.assertEqual(kw[0]['data'], {'foo': 'Qux', 'bar': 'Baz'}) self.assertEqual(kw[0]['query_params'], {'projection': 'full'}) - def test_properties_no_fetch(self): - connection = _Connection({'foo': 'Foo'}) - derived = self._derivedClass(connection, '/path')() - self.assertEqual(derived.properties, {}) - derived.reload() - self.assertEqual(derived.properties, {'foo': 'Foo'}) - kw = connection._requested - self.assertEqual(len(kw), 1) - self.assertEqual(kw[0]['method'], 'GET') - self.assertEqual(kw[0]['path'], '/path') - self.assertEqual(kw[0]['query_params'], {'projection': 'noAcl'}) - def test_reload(self): connection = _Connection({'foo': 'Foo'}) derived = self._derivedClass(connection, '/path')() @@ -175,7 +163,7 @@ def test_getter(self): class Test(object): def __init__(self, **kw): - self.properties = kw.copy() + self._properties = kw.copy() do_re_mi = self._callFUT('solfege') test = Test(solfege='Latido') diff --git a/gcloud/storage/test_blob.py b/gcloud/storage/test_blob.py index a9f05119c06e3..f28bdfafab753 100644 --- a/gcloud/storage/test_blob.py +++ b/gcloud/storage/test_blob.py @@ -65,7 +65,7 @@ def test_ctor_explicit(self): self.assertTrue(blob.bucket is bucket) self.assertTrue(blob.connection is connection) self.assertEqual(blob.name, BLOB_NAME) - self.assertEqual(blob.properties, properties) + self.assertEqual(blob._properties, properties) self.assertFalse(blob._acl.loaded) self.assertTrue(blob._acl.blob is blob) @@ -294,7 +294,7 @@ def test_download_to_filename(self): mtime = os.path.getmtime(f.name) updatedTime = time.mktime( datetime.datetime.strptime( - blob.properties['updated'], + blob._properties['updated'], '%Y-%m-%dT%H:%M:%S.%fz').timetuple() ) self.assertEqual(wrote, b'abcdef') diff --git a/gcloud/storage/test_bucket.py b/gcloud/storage/test_bucket.py index 6aea085fbd230..c3f331a265b0d 100644 --- a/gcloud/storage/test_bucket.py +++ b/gcloud/storage/test_bucket.py @@ -886,7 +886,7 @@ def test_configure_website_defaults(self): connection = _Connection(patched) bucket = self._makeOne(NAME, connection) self.assertTrue(bucket.configure_website() is bucket) - self.assertEqual(bucket.properties, patched) + self.assertEqual(bucket._properties, patched) kw = connection._requested self.assertEqual(len(kw), 1) self.assertEqual(kw[0]['method'], 'PATCH') @@ -901,7 +901,7 @@ def test_configure_website_explicit(self): connection = _Connection(patched) bucket = self._makeOne(NAME, connection) self.assertTrue(bucket.configure_website('html', '404.html') is bucket) - self.assertEqual(bucket.properties, patched) + self.assertEqual(bucket._properties, patched) kw = connection._requested self.assertEqual(len(kw), 1) self.assertEqual(kw[0]['method'], 'PATCH') @@ -916,7 +916,7 @@ def test_disable_website(self): connection = _Connection(patched) bucket = self._makeOne(NAME, connection) self.assertTrue(bucket.disable_website() is bucket) - self.assertEqual(bucket.properties, patched) + self.assertEqual(bucket._properties, patched) kw = connection._requested self.assertEqual(len(kw), 1) self.assertEqual(kw[0]['method'], 'PATCH')