Skip to content

Commit c0cc147

Browse files
authored
feat: Expose apify_client.errors module (#468)
- Move apify_client._errors to apify_client.errors ### Issues - Closes: #158
1 parent 1df6792 commit c0cc147

File tree

15 files changed

+36
-30
lines changed

15 files changed

+36
-30
lines changed

src/apify_client/_http_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
import impit
1414
from apify_shared.utils import ignore_docs, is_content_type_json, is_content_type_text, is_content_type_xml
1515

16-
from apify_client._errors import ApifyApiError, InvalidResponseBodyError, is_retryable_error
1716
from apify_client._logging import log_context, logger_name
1817
from apify_client._statistics import Statistics
19-
from apify_client._utils import retry_with_exp_backoff, retry_with_exp_backoff_async
18+
from apify_client._utils import is_retryable_error, retry_with_exp_backoff, retry_with_exp_backoff_async
19+
from apify_client.errors import ApifyApiError, InvalidResponseBodyError
2020

2121
if TYPE_CHECKING:
2222
from collections.abc import Callable

src/apify_client/_utils.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@
99
from http import HTTPStatus
1010
from typing import TYPE_CHECKING, Any, TypeVar, cast
1111

12+
import impit
1213
from apify_shared.utils import is_file_or_bytes, maybe_extract_enum_member_value
1314

15+
from apify_client.errors import InvalidResponseBodyError
16+
1417
if TYPE_CHECKING:
1518
from collections.abc import Awaitable
1619

17-
from apify_client._errors import ApifyApiError
20+
from apify_client.errors import ApifyApiError
1821

1922
PARSE_DATE_FIELDS_MAX_DEPTH = 3
2023
PARSE_DATE_FIELDS_KEY_SUFFIX = 'At'
@@ -149,3 +152,16 @@ def encode_key_value_store_record_value(value: Any, content_type: str | None = N
149152
value = json.dumps(value, ensure_ascii=False, indent=2, allow_nan=False, default=str).encode('utf-8')
150153

151154
return (value, content_type)
155+
156+
157+
def is_retryable_error(exc: Exception) -> bool:
158+
"""Check if the given error is retryable."""
159+
return isinstance(
160+
exc,
161+
(
162+
InvalidResponseBodyError,
163+
impit.NetworkError,
164+
impit.TimeoutException,
165+
impit.RemoteProtocolError,
166+
),
167+
)

src/apify_client/clients/base/actor_job_base_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
from apify_shared.consts import ActorJobStatus
1010
from apify_shared.utils import ignore_docs, parse_date_fields
1111

12-
from apify_client._errors import ApifyApiError
1312
from apify_client._utils import catch_not_found_or_throw, pluck_data
1413
from apify_client.clients.base.resource_client import ResourceClient, ResourceClientAsync
14+
from apify_client.errors import ApifyApiError
1515

1616
DEFAULT_WAIT_FOR_FINISH_SEC = 999999
1717

src/apify_client/clients/base/resource_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
from apify_shared.utils import ignore_docs, parse_date_fields
66

7-
from apify_client._errors import ApifyApiError
87
from apify_client._utils import catch_not_found_or_throw, pluck_data
98
from apify_client.clients.base.base_client import BaseClient, BaseClientAsync
9+
from apify_client.errors import ApifyApiError
1010

1111

1212
@ignore_docs

src/apify_client/clients/resource_clients/dataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
from apify_shared.models import ListPage
99
from apify_shared.utils import filter_out_none_values_recursively, ignore_docs
1010

11-
from apify_client._errors import ApifyApiError
1211
from apify_client._utils import catch_not_found_or_throw, pluck_data
1312
from apify_client.clients.base import ResourceClient, ResourceClientAsync
13+
from apify_client.errors import ApifyApiError
1414

1515
if TYPE_CHECKING:
1616
from collections.abc import AsyncIterator, Iterator

src/apify_client/clients/resource_clients/key_value_store.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
from apify_shared.utils import filter_out_none_values_recursively, ignore_docs, parse_date_fields
1010

11-
from apify_client._errors import ApifyApiError
1211
from apify_client._utils import catch_not_found_or_throw, encode_key_value_store_record_value, pluck_data
1312
from apify_client.clients.base import ResourceClient, ResourceClientAsync
13+
from apify_client.errors import ApifyApiError
1414

1515
if TYPE_CHECKING:
1616
from collections.abc import AsyncIterator, Iterator

src/apify_client/clients/resource_clients/log.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313

1414
from apify_shared.utils import ignore_docs
1515

16-
from apify_client._errors import ApifyApiError
1716
from apify_client._utils import catch_not_found_or_throw
1817
from apify_client.clients.base import ResourceClient, ResourceClientAsync
18+
from apify_client.errors import ApifyApiError
1919

2020
if TYPE_CHECKING:
2121
from collections.abc import AsyncIterator, Iterator

src/apify_client/clients/resource_clients/request_queue.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
from apify_shared.utils import filter_out_none_values_recursively, ignore_docs, parse_date_fields
1212
from more_itertools import constrained_batches
1313

14-
from apify_client._errors import ApifyApiError
1514
from apify_client._utils import catch_not_found_or_throw, pluck_data
1615
from apify_client.clients.base import ResourceClient, ResourceClientAsync
16+
from apify_client.errors import ApifyApiError
1717

1818
if TYPE_CHECKING:
1919
from datetime import timedelta

src/apify_client/clients/resource_clients/schedule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
from apify_shared.utils import filter_out_none_values_recursively, ignore_docs
77

8-
from apify_client._errors import ApifyApiError
98
from apify_client._utils import catch_not_found_or_throw, pluck_data_as_list
109
from apify_client.clients.base import ResourceClient, ResourceClientAsync
10+
from apify_client.errors import ApifyApiError
1111

1212

1313
def _get_schedule_representation(

src/apify_client/clients/resource_clients/task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
parse_date_fields,
1111
)
1212

13-
from apify_client._errors import ApifyApiError
1413
from apify_client._utils import catch_not_found_or_throw, encode_webhook_list_to_base64, pluck_data
1514
from apify_client.clients.base import ResourceClient, ResourceClientAsync
1615
from apify_client.clients.resource_clients.run import RunClient, RunClientAsync
@@ -19,6 +18,7 @@
1918
WebhookCollectionClient,
2019
WebhookCollectionClientAsync,
2120
)
21+
from apify_client.errors import ApifyApiError
2222

2323
if TYPE_CHECKING:
2424
from apify_shared.consts import ActorJobStatus, MetaOrigin

0 commit comments

Comments
 (0)