'Pull the compressed, pickled struct data from cache and deserialize.'

def get(self, key, course_context=None):

    if (self.cache is None):
        return None
    with TIMER.timer('CourseStructureCache.get', course_context) as tagger:
        compressed_pickled_data = self.cache.get(key)
        tagger.tag(from_cache=str((compressed_pickled_data is not None)).lower())
        if (compressed_pickled_data is None):
            tagger.sample_rate = 1
            return None
        tagger.measure('compressed_size', len(compressed_pickled_data))
        pickled_data = zlib.decompress(compressed_pickled_data)
        tagger.measure('uncompressed_size', len(pickled_data))
        return pickle.loads(pickled_data)
