Skip to content

Commit 4e3287a

Browse files
committed
Adapt to Crawlee v1 (p2)
1 parent 942290e commit 4e3287a

File tree

8 files changed

+44
-23
lines changed

8 files changed

+44
-23
lines changed

pyproject.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ keywords = [
3636
dependencies = [
3737
"apify-client>=1.9.2",
3838
"apify-shared>=1.3.0",
39+
"cachetools>=5.5.0",
3940
"crawlee@git+https://github.com/apify/crawlee-python.git@new-storage-clients",
4041
"cryptography>=42.0.0",
4142
"httpx>=0.27.0",
@@ -72,7 +73,8 @@ dev = [
7273
"pytest~=8.4.0",
7374
"respx~=0.22.0",
7475
"ruff~=0.11.0",
75-
"setuptools", # setuptools are used by pytest but not explicitly required
76+
"setuptools", # setuptools are used by pytest but not explicitly required
77+
"types-cachetools>=6.0.0.20250525",
7678
]
7779

7880
[tool.hatch.build.targets.wheel]

src/apify/apify_storage_client/_dataset_client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
from datetime import datetime
1616

1717
from apify_client.clients import DatasetClientAsync
18-
19-
from apify import Configuration
18+
from crawlee.configuration import Configuration
2019

2120
logger = getLogger(__name__)
2221

@@ -68,8 +67,8 @@ async def open(
6867
name: str | None,
6968
configuration: Configuration,
7069
) -> ApifyDatasetClient:
71-
token = configuration.token
72-
api_url = configuration.api_base_url
70+
token = getattr(configuration, 'token', None)
71+
api_url = getattr(configuration, 'api_base_url', 'https://api.apify.com')
7372

7473
# Otherwise, create a new one.
7574
apify_client_async = ApifyClientAsync(
@@ -100,7 +99,8 @@ async def open(
10099

101100
@override
102101
async def purge(self) -> None:
103-
# TODO: better
102+
# TODO: better?
103+
# https://github.com/apify/apify-sdk-python/issues/469
104104
async with self._lock:
105105
await self._api_client.delete()
106106

src/apify/apify_storage_client/_key_value_store_client.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
from datetime import datetime
2020

2121
from apify_client.clients import KeyValueStoreClientAsync
22-
23-
from apify import Configuration
22+
from crawlee.configuration import Configuration
2423

2524
logger = getLogger(__name__)
2625

@@ -70,8 +69,8 @@ async def open(
7069
name: str | None,
7170
configuration: Configuration,
7271
) -> ApifyKeyValueStoreClient:
73-
token = configuration.token
74-
api_url = configuration.api_base_url
72+
token = getattr(configuration, 'token', None)
73+
api_url = getattr(configuration, 'api_base_url', 'https://api.apify.com')
7574

7675
# Otherwise, create a new one.
7776
apify_client_async = ApifyClientAsync(
@@ -101,7 +100,8 @@ async def open(
101100

102101
@override
103102
async def purge(self) -> None:
104-
# TODO: better
103+
# TODO: better?
104+
# https://github.com/apify/apify-sdk-python/issues/469
105105
async with self._lock:
106106
await self._api_client.delete()
107107

@@ -147,7 +147,13 @@ async def iterate_keys(
147147
list_key_page = KeyValueStoreListKeysPage.model_validate(response)
148148

149149
for item in list_key_page.items:
150-
yield item
150+
# Convert KeyValueStoreKeyInfo to KeyValueStoreRecordMetadata
151+
record_metadata = KeyValueStoreRecordMetadata(
152+
key=item.key,
153+
size=item.size,
154+
content_type='application/octet-stream', # Content type not available from list_keys
155+
)
156+
yield record_metadata
151157
count += 1
152158

153159
# If we've reached the limit, stop yielding

src/apify/apify_storage_client/_request_queue_client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
from collections.abc import Sequence
2222

2323
from apify_client.clients import RequestQueueClientAsync
24-
25-
from apify import Configuration
24+
from crawlee.configuration import Configuration
2625

2726
logger = getLogger(__name__)
2827

@@ -101,8 +100,8 @@ async def open(
101100
configuration: Configuration,
102101
) -> ApifyRequestQueueClient:
103102
# Get API credentials
104-
token = configuration.token
105-
api_url = configuration.api_base_url
103+
token = getattr(configuration, 'token', None)
104+
api_url = getattr(configuration, 'api_base_url', 'https://api.apify.com')
106105

107106
# Create a new API client
108107
apify_client_async = ApifyClientAsync(
@@ -139,7 +138,8 @@ async def open(
139138

140139
@override
141140
async def purge(self) -> None:
142-
# TODO: better
141+
# TODO: better?
142+
# https://github.com/apify/apify-sdk-python/issues/469
143143
async with self._lock:
144144
await self._api_client.delete()
145145

src/apify/apify_storage_client/_storage_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class ApifyStorageClient(StorageClient):
1414
"""Apify storage client."""
1515

1616
@override
17-
async def open_dataset_client(
17+
async def create_dataset_client(
1818
self,
1919
*,
2020
id: str | None = None,
@@ -31,7 +31,7 @@ async def open_dataset_client(
3131
return client
3232

3333
@override
34-
async def open_key_value_store_client(
34+
async def create_kvs_client(
3535
self,
3636
*,
3737
id: str | None = None,
@@ -48,7 +48,7 @@ async def open_key_value_store_client(
4848
return client
4949

5050
@override
51-
async def open_request_queue_client(
51+
async def create_rq_client(
5252
self,
5353
*,
5454
id: str | None = None,

tests/unit/actor/test_actor_dataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async def test_open_dataset_uses_env_var(monkeypatch: pytest.MonkeyPatch) -> Non
4343
async with Actor:
4444
ddt = await Actor.open_dataset()
4545
assert ddt.metadata.id == default_dataset_id
46-
dataset = await memory_storage_client.open_dataset_client(id=ddt.metadata.id)
46+
dataset = await memory_storage_client.create_dataset_client(id=ddt.metadata.id)
4747
await dataset.drop()
4848

4949

tests/unit/actor/test_actor_key_value_store.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ async def test_get_input() -> None:
5252
input_key = 'INPUT'
5353
test_input = {'foo': 'bar'}
5454

55-
kvs_client = await memory_storage_client.open_key_value_store_client()
55+
kvs_client = await memory_storage_client.create_kvs_client()
5656

5757
await kvs_client.set_value(
5858
key=input_key,
@@ -79,7 +79,7 @@ async def test_get_input_with_encrypted_secrets(monkeypatch: pytest.MonkeyPatch)
7979
'secret': f'{ENCRYPTED_INPUT_VALUE_PREFIX}:{encrypted_secret["encrypted_password"]}:{encrypted_secret["encrypted_value"]}', # noqa: E501
8080
}
8181

82-
kvs_client = await memory_storage_client.open_key_value_store_client()
82+
kvs_client = await memory_storage_client.create_kvs_client()
8383

8484
await kvs_client.set_value(
8585
key=input_key,

uv.lock

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)