def _get()

in mozci/util/cache_stores.py [0:0]


    def _get(self, key):
        import botocore

        # Copy the object onto itself to extend its expiration.
        try:
            head = self._client.head_object(Bucket=self._bucket, Key=self._key(key))

            # Change its metadata, or Amazon will complain.
            metadata = head["Metadata"]
            metadata["id"] = "1" if "id" in metadata and metadata["id"] == "0" else "0"

            self._client.copy_object(
                Bucket=self._bucket,
                CopySource={"Bucket": self._bucket, "Key": self._key(key)},
                Key=self._key(key),
                Metadata=metadata,
                MetadataDirective="REPLACE",
            )
        except botocore.exceptions.ClientError as ex:
            if ex.response["Error"]["Code"] == "404":
                return None
            raise

        response = self._client.get_object(Bucket=self._bucket, Key=self._key(key))
        data = response["Body"].read()
        try:
            return self.unserialize(data)
        except Exception:
            # The object is broken, let's delete it.
            self.forget(key)
            return None