From 0cb2de58c5ff7bdb990194764aa7ad19a3902def Mon Sep 17 00:00:00 2001 From: Ryan Byrne Date: Mon, 8 Jun 2026 08:31:40 -0700 Subject: [PATCH] feat: add s3_exists to DataStore Co-Authored-By: Claude Sonnet 4.6 --- src/vl_apify_shared/data_store.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/vl_apify_shared/data_store.py b/src/vl_apify_shared/data_store.py index bf96dac..91c3521 100644 --- a/src/vl_apify_shared/data_store.py +++ b/src/vl_apify_shared/data_store.py @@ -3,6 +3,7 @@ import csv import io import json import boto3 +from botocore.exceptions import ClientError from dataclasses import dataclass from typing import Any import hashlib @@ -87,5 +88,16 @@ class DataStore: Metadata=metadata, ) + async def s3_exists(self, key: str) -> bool: + def _check(): + try: + self._client.head_object(Bucket=self.config.bucket, Key=key) + return True + except ClientError as e: + if e.response["Error"]["Code"] == "404": + return False + raise + return await asyncio.to_thread(_check) + def hash(self, content: str): return hashlib.md5(content.encode()).hexdigest()