'Return a cache bucket for the given template.  All arguments are
mandatory but filename may be `None`.'

def get_bucket(self, environment, name, filename, source):

    key = self.get_cache_key(name, filename)
    checksum = self.get_source_checksum(source)
    bucket = Bucket(environment, key, checksum)
    self.load_bytecode(bucket)
    return bucket
