Skip to content

Commit 75a0389

Browse files
committed
More tests
1 parent b8ce1f1 commit 75a0389

14 files changed

Lines changed: 604 additions & 75 deletions

scripts/check_async_docstrings.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616

1717
# Go through every Python file in that directory
1818
for client_source_path in clients_path.glob('**/*.py'):
19+
# Skip _http_clients package - sync and async are in separate files there
20+
if '_http_clients' in str(client_source_path):
21+
continue
22+
1923
with open(client_source_path, encoding='utf-8') as source_file:
2024
# Read the source file and parse the code using Red Baron
2125
red = RedBaron(source_code=source_file.read())
@@ -27,6 +31,8 @@
2731

2832
# Find the corresponding sync classes (same name, but without -Async)
2933
sync_class = red.find('ClassNode', name=async_class.name.replace('ClientAsync', 'Client'))
34+
if not sync_class:
35+
continue
3036

3137
# Go through all methods in the async class
3238
for async_method in async_class.find_all('DefNode'):

scripts/fix_async_docstrings.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111

1212
# Go through every Python file in that directory
1313
for client_source_path in clients_path.glob('**/*.py'):
14+
# Skip _http_clients package - sync and async are in separate files there
15+
if '_http_clients' in str(client_source_path):
16+
continue
17+
1418
with open(client_source_path, 'r+', encoding='utf-8') as source_file:
1519
# Read the source file and parse the code using Red Baron
1620
red = RedBaron(source_code=source_file.read())
@@ -22,6 +26,8 @@
2226

2327
# Find the corresponding sync classes (same name, but without -Async)
2428
sync_class = red.find('ClassNode', name=async_class.name.replace('ClientAsync', 'Client'))
29+
if not sync_class:
30+
continue
2531

2632
# Go through all methods in the async class
2733
for async_method in async_class.find_all('DefNode'):

src/apify_client/_apify_client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from apify_client._client_classes import ClientRegistry, ClientRegistryAsync
3+
from apify_client._client_registry import ClientRegistry, ClientRegistryAsync
44
from apify_client._config import ClientConfig
55
from apify_client._http_clients import HttpClient, HttpClientAsync
66
from apify_client._resource_clients import (
@@ -100,7 +100,7 @@ def __init__(
100100
self._http_client = HttpClient(config=self._config, statistics=self._statistics)
101101

102102
# Create client classes config for dependency injection
103-
self._client_classes = ClientRegistry(
103+
self._client_registry = ClientRegistry(
104104
actor_client=ActorClient,
105105
actor_version_client=ActorVersionClient,
106106
actor_version_collection_client=ActorVersionCollectionClient,
@@ -125,7 +125,7 @@ def _base_kwargs(self) -> dict:
125125
'base_url': self._config.base_url,
126126
'public_base_url': self._config.public_base_url,
127127
'http_client': self._http_client,
128-
'client_classes': self._client_classes,
128+
'client_registry': self._client_registry,
129129
}
130130

131131
def actor(self, actor_id: str) -> ActorClient:
@@ -308,7 +308,7 @@ def __init__(
308308
self._http_client = HttpClientAsync(config=self._config, statistics=self._statistics)
309309

310310
# Create async client classes config for dependency injection
311-
self._client_classes = ClientRegistryAsync(
311+
self._client_registry = ClientRegistryAsync(
312312
actor_client=ActorClientAsync,
313313
actor_version_client=ActorVersionClientAsync,
314314
actor_version_collection_client=ActorVersionCollectionClientAsync,
@@ -333,7 +333,7 @@ def _base_kwargs(self) -> dict:
333333
'base_url': self._config.base_url,
334334
'public_base_url': self._config.public_base_url,
335335
'http_client': self._http_client,
336-
'client_classes': self._client_classes,
336+
'client_registry': self._client_registry,
337337
}
338338

339339
def actor(self, actor_id: str) -> ActorClientAsync:

src/apify_client/_resource_clients/_resource_client.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from apify_client.errors import ApifyApiError, ApifyClientError
1414

1515
if TYPE_CHECKING:
16-
from apify_client._client_classes import ClientRegistry, ClientRegistryAsync
16+
from apify_client._client_registry import ClientRegistry, ClientRegistryAsync
1717
from apify_client._http_clients import HttpClient, HttpClientAsync
1818

1919

@@ -31,7 +31,7 @@ def __init__(
3131
public_base_url: str,
3232
http_client: HttpClient,
3333
resource_path: str,
34-
client_classes: ClientRegistry,
34+
client_registry: ClientRegistry,
3535
resource_id: str | None = None,
3636
params: dict | None = None,
3737
) -> None:
@@ -42,7 +42,7 @@ def __init__(
4242
public_base_url: Public CDN base URL.
4343
http_client: HTTP client for making requests.
4444
resource_path: Resource endpoint path (e.g., 'actors', 'datasets').
45-
client_classes: Bundle of client classes for dependency injection.
45+
client_registry: Bundle of client classes for dependency injection.
4646
resource_id: Optional resource ID for single-resource clients.
4747
params: Optional default parameters for all requests.
4848
"""
@@ -55,7 +55,7 @@ def __init__(
5555
self._default_params = params or {}
5656
self._resource_path = resource_path
5757
self._resource_id = resource_id
58-
self._client_classes = client_classes
58+
self._client_registry = client_registry
5959

6060
@property
6161
def _resource_url(self) -> str:
@@ -69,14 +69,14 @@ def _resource_url(self) -> str:
6969
def _base_client_kwargs(self) -> dict[str, Any]:
7070
"""Base kwargs for creating nested/child clients.
7171
72-
Returns dict with base_url, public_base_url, http_client, and client_classes. Caller adds
72+
Returns dict with base_url, public_base_url, http_client, and client_registry. Caller adds
7373
resource_path, resource_id, and params as needed.
7474
"""
7575
return {
7676
'base_url': self._resource_url,
7777
'public_base_url': self._public_base_url,
7878
'http_client': self._http_client,
79-
'client_classes': self._client_classes,
79+
'client_registry': self._client_registry,
8080
}
8181

8282
def _build_url(
@@ -209,7 +209,7 @@ def __init__(
209209
public_base_url: str,
210210
http_client: HttpClientAsync,
211211
resource_path: str,
212-
client_classes: ClientRegistryAsync,
212+
client_registry: ClientRegistryAsync,
213213
resource_id: str | None = None,
214214
params: dict | None = None,
215215
) -> None:
@@ -220,7 +220,7 @@ def __init__(
220220
public_base_url: Public CDN base URL.
221221
http_client: HTTP client for making requests.
222222
resource_path: Resource endpoint path (e.g., 'actors', 'datasets').
223-
client_classes: Bundle of client classes for dependency injection.
223+
client_registry: Bundle of client classes for dependency injection.
224224
resource_id: Optional resource ID for single-resource clients.
225225
params: Optional default parameters for all requests.
226226
"""
@@ -233,7 +233,7 @@ def __init__(
233233
self._default_params = params or {}
234234
self._resource_path = resource_path
235235
self._resource_id = resource_id
236-
self._client_classes = client_classes
236+
self._client_registry = client_registry
237237

238238
@property
239239
def _resource_url(self) -> str:
@@ -247,14 +247,14 @@ def _resource_url(self) -> str:
247247
def _base_client_kwargs(self) -> dict[str, Any]:
248248
"""Base kwargs for creating nested/child clients.
249249
250-
Returns dict with base_url, public_base_url, http_client, and client_classes. Caller adds
250+
Returns dict with base_url, public_base_url, http_client, and client_registry. Caller adds
251251
resource_path, resource_id, and params as needed.
252252
"""
253253
return {
254254
'base_url': self._resource_url,
255255
'public_base_url': self._public_base_url,
256256
'http_client': self._http_client,
257-
'client_classes': self._client_classes,
257+
'client_registry': self._client_registry,
258258
}
259259

260260
def _build_url(

src/apify_client/_resource_clients/actor.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -443,12 +443,12 @@ def call(
443443
webhooks=webhooks,
444444
force_permission_level=force_permission_level,
445445
)
446-
run_client = self._client_classes.run_client(
446+
run_client = self._client_registry.run_client(
447447
resource_id=started_run.id,
448448
base_url=self._base_url,
449449
public_base_url=self._public_base_url,
450450
http_client=self._http_client,
451-
client_classes=self._client_classes,
451+
client_registry=self._client_registry,
452452
)
453453

454454
if not logger:
@@ -506,14 +506,14 @@ def build(
506506

507507
def builds(self) -> BuildCollectionClient:
508508
"""Retrieve a client for the builds of this Actor."""
509-
return self._client_classes.build_collection_client(
509+
return self._client_registry.build_collection_client(
510510
resource_path='builds',
511511
**self._base_client_kwargs,
512512
)
513513

514514
def runs(self) -> RunCollectionClient:
515515
"""Retrieve a client for the runs of this Actor."""
516-
return self._client_classes.run_collection_client(
516+
return self._client_registry.run_collection_client(
517517
resource_path='runs',
518518
**self._base_client_kwargs,
519519
)
@@ -541,12 +541,12 @@ def default_build(
541541
response = self._http_client.call(url=self._build_url('builds/default'), method='GET', params=request_params)
542542
response_as_dict = response_to_dict(response)
543543

544-
return self._client_classes.build_client(
544+
return self._client_registry.build_client(
545545
resource_id=response_as_dict['data']['id'],
546546
base_url=self._base_url,
547547
public_base_url=self._public_base_url,
548548
http_client=self._http_client,
549-
client_classes=self._client_classes,
549+
client_registry=self._client_registry,
550550
)
551551

552552
def last_run(
@@ -566,7 +566,7 @@ def last_run(
566566
Returns:
567567
The resource client for the last run of this Actor.
568568
"""
569-
return self._client_classes.run_client(
569+
return self._client_registry.run_client(
570570
resource_id='last',
571571
resource_path='runs',
572572
params=self._build_params(
@@ -578,7 +578,7 @@ def last_run(
578578

579579
def versions(self) -> ActorVersionCollectionClient:
580580
"""Retrieve a client for the versions of this Actor."""
581-
return self._client_classes.actor_version_collection_client(**self._base_client_kwargs)
581+
return self._client_registry.actor_version_collection_client(**self._base_client_kwargs)
582582

583583
def version(self, version_number: str) -> ActorVersionClient:
584584
"""Retrieve the client for the specified version of this Actor.
@@ -589,14 +589,14 @@ def version(self, version_number: str) -> ActorVersionClient:
589589
Returns:
590590
The resource client for the specified Actor version.
591591
"""
592-
return self._client_classes.actor_version_client(
592+
return self._client_registry.actor_version_client(
593593
resource_id=version_number,
594594
**self._base_client_kwargs,
595595
)
596596

597597
def webhooks(self) -> WebhookCollectionClient:
598598
"""Retrieve a client for webhooks associated with this Actor."""
599-
return self._client_classes.webhook_collection_client(**self._base_client_kwargs)
599+
return self._client_registry.webhook_collection_client(**self._base_client_kwargs)
600600

601601
def validate_input(
602602
self, run_input: Any = None, *, build_tag: str | None = None, content_type: str | None = None
@@ -922,12 +922,12 @@ async def call(
922922
force_permission_level=force_permission_level,
923923
)
924924

925-
run_client = self._client_classes.run_client(
925+
run_client = self._client_registry.run_client(
926926
resource_id=started_run.id,
927927
base_url=self._base_url,
928928
public_base_url=self._public_base_url,
929929
http_client=self._http_client,
930-
client_classes=self._client_classes,
930+
client_registry=self._client_registry,
931931
)
932932

933933
if not logger:
@@ -989,14 +989,14 @@ async def build(
989989

990990
def builds(self) -> BuildCollectionClientAsync:
991991
"""Retrieve a client for the builds of this Actor."""
992-
return self._client_classes.build_collection_client(
992+
return self._client_registry.build_collection_client(
993993
resource_path='builds',
994994
**self._base_client_kwargs,
995995
)
996996

997997
def runs(self) -> RunCollectionClientAsync:
998998
"""Retrieve a client for the runs of this Actor."""
999-
return self._client_classes.run_collection_client(
999+
return self._client_registry.run_collection_client(
10001000
resource_path='runs',
10011001
**self._base_client_kwargs,
10021002
)
@@ -1028,12 +1028,12 @@ async def default_build(
10281028
)
10291029
response_as_dict = response_to_dict(response)
10301030

1031-
return self._client_classes.build_client(
1031+
return self._client_registry.build_client(
10321032
resource_id=response_as_dict['data']['id'],
10331033
base_url=self._base_url,
10341034
public_base_url=self._public_base_url,
10351035
http_client=self._http_client,
1036-
client_classes=self._client_classes,
1036+
client_registry=self._client_registry,
10371037
)
10381038

10391039
def last_run(
@@ -1053,7 +1053,7 @@ def last_run(
10531053
Returns:
10541054
The resource client for the last run of this Actor.
10551055
"""
1056-
return self._client_classes.run_client(
1056+
return self._client_registry.run_client(
10571057
resource_id='last',
10581058
resource_path='runs',
10591059
params=self._build_params(
@@ -1065,7 +1065,7 @@ def last_run(
10651065

10661066
def versions(self) -> ActorVersionCollectionClientAsync:
10671067
"""Retrieve a client for the versions of this Actor."""
1068-
return self._client_classes.actor_version_collection_client(**self._base_client_kwargs)
1068+
return self._client_registry.actor_version_collection_client(**self._base_client_kwargs)
10691069

10701070
def version(self, version_number: str) -> ActorVersionClientAsync:
10711071
"""Retrieve the client for the specified version of this Actor.
@@ -1076,14 +1076,14 @@ def version(self, version_number: str) -> ActorVersionClientAsync:
10761076
Returns:
10771077
The resource client for the specified Actor version.
10781078
"""
1079-
return self._client_classes.actor_version_client(
1079+
return self._client_registry.actor_version_client(
10801080
resource_id=version_number,
10811081
**self._base_client_kwargs,
10821082
)
10831083

10841084
def webhooks(self) -> WebhookCollectionClientAsync:
10851085
"""Retrieve a client for webhooks associated with this Actor."""
1086-
return self._client_classes.webhook_collection_client(**self._base_client_kwargs)
1086+
return self._client_registry.webhook_collection_client(**self._base_client_kwargs)
10871087

10881088
async def validate_input(
10891089
self, run_input: Any = None, *, build_tag: str | None = None, content_type: str | None = None

src/apify_client/_resource_clients/actor_version.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def delete(self) -> None:
148148

149149
def env_vars(self) -> ActorEnvVarCollectionClient:
150150
"""Retrieve a client for the environment variables of this Actor version."""
151-
return self._client_classes.actor_env_var_collection_client(**self._base_client_kwargs)
151+
return self._client_registry.actor_env_var_collection_client(**self._base_client_kwargs)
152152

153153
def env_var(self, env_var_name: str) -> ActorEnvVarClient:
154154
"""Retrieve the client for the specified environment variable of this Actor version.
@@ -159,7 +159,7 @@ def env_var(self, env_var_name: str) -> ActorEnvVarClient:
159159
Returns:
160160
The resource client for the specified Actor environment variable.
161161
"""
162-
return self._client_classes.actor_env_var_client(
162+
return self._client_registry.actor_env_var_client(
163163
resource_id=env_var_name,
164164
**self._base_client_kwargs,
165165
)
@@ -273,7 +273,7 @@ async def delete(self) -> None:
273273

274274
def env_vars(self) -> ActorEnvVarCollectionClientAsync:
275275
"""Retrieve a client for the environment variables of this Actor version."""
276-
return self._client_classes.actor_env_var_collection_client(**self._base_client_kwargs)
276+
return self._client_registry.actor_env_var_collection_client(**self._base_client_kwargs)
277277

278278
def env_var(self, env_var_name: str) -> ActorEnvVarClientAsync:
279279
"""Retrieve the client for the specified environment variable of this Actor version.
@@ -284,7 +284,7 @@ def env_var(self, env_var_name: str) -> ActorEnvVarClientAsync:
284284
Returns:
285285
The resource client for the specified Actor environment variable.
286286
"""
287-
return self._client_classes.actor_env_var_client(
287+
return self._client_registry.actor_env_var_client(
288288
resource_id=env_var_name,
289289
**self._base_client_kwargs,
290290
)

src/apify_client/_resource_clients/build.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def log(self) -> LogClient:
119119
Returns:
120120
A client allowing access to the log of this Actor build.
121121
"""
122-
return self._client_classes.log_client(
122+
return self._client_registry.log_client(
123123
resource_path='log',
124124
**self._base_client_kwargs,
125125
)
@@ -233,7 +233,7 @@ def log(self) -> LogClientAsync:
233233
Returns:
234234
A client allowing access to the log of this Actor build.
235235
"""
236-
return self._client_classes.log_client(
236+
return self._client_registry.log_client(
237237
resource_path='log',
238238
**self._base_client_kwargs,
239239
)

0 commit comments

Comments
 (0)