apify 2.6.1b11__py3-none-any.whl → 2.7.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of apify might be problematic. Click here for more details.
- apify/_actor.py +40 -5
- apify/_charging.py +13 -6
- apify/_configuration.py +1 -1
- apify/_crypto.py +0 -6
- apify/_models.py +6 -6
- apify/_platform_event_manager.py +15 -16
- apify/_proxy_configuration.py +2 -5
- apify/_utils.py +13 -1
- apify/apify_storage_client/_apify_storage_client.py +1 -1
- apify/log.py +0 -2
- apify/storages/_request_list.py +1 -1
- {apify-2.6.1b11.dist-info → apify-2.7.0b1.dist-info}/METADATA +1 -1
- {apify-2.6.1b11.dist-info → apify-2.7.0b1.dist-info}/RECORD +15 -15
- {apify-2.6.1b11.dist-info → apify-2.7.0b1.dist-info}/WHEEL +0 -0
- {apify-2.6.1b11.dist-info → apify-2.7.0b1.dist-info}/licenses/LICENSE +0 -0
apify/_actor.py
CHANGED
|
@@ -13,7 +13,7 @@ from pydantic import AliasChoices
|
|
|
13
13
|
|
|
14
14
|
from apify_client import ApifyClientAsync
|
|
15
15
|
from apify_shared.consts import ActorEnvVars, ActorExitCodes, ApifyEnvVars
|
|
16
|
-
from apify_shared.utils import
|
|
16
|
+
from apify_shared.utils import maybe_extract_enum_member_value
|
|
17
17
|
from crawlee import service_locator
|
|
18
18
|
from crawlee.events import (
|
|
19
19
|
Event,
|
|
@@ -54,9 +54,46 @@ MainReturnType = TypeVar('MainReturnType')
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
@docs_name('Actor')
|
|
57
|
-
@docs_group('
|
|
57
|
+
@docs_group('Actor')
|
|
58
58
|
class _ActorType:
|
|
59
|
-
"""The class
|
|
59
|
+
"""The core class for building Actors on the Apify platform.
|
|
60
|
+
|
|
61
|
+
Actors are serverless programs running in the cloud that can perform anything from simple actions
|
|
62
|
+
(such as filling out a web form or sending an email) to complex operations (such as crawling an
|
|
63
|
+
entire website or removing duplicates from a large dataset). They are packaged as Docker containers
|
|
64
|
+
which accept well-defined JSON input, perform an action, and optionally produce well-defined output.
|
|
65
|
+
|
|
66
|
+
### References
|
|
67
|
+
|
|
68
|
+
- Apify platform documentation: https://docs.apify.com/platform/actors
|
|
69
|
+
- Actor whitepaper: https://whitepaper.actor/
|
|
70
|
+
|
|
71
|
+
### Usage
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
import asyncio
|
|
75
|
+
|
|
76
|
+
import httpx
|
|
77
|
+
from apify import Actor
|
|
78
|
+
from bs4 import BeautifulSoup
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
async def main() -> None:
|
|
82
|
+
async with Actor:
|
|
83
|
+
actor_input = await Actor.get_input()
|
|
84
|
+
async with httpx.AsyncClient() as client:
|
|
85
|
+
response = await client.get(actor_input['url'])
|
|
86
|
+
soup = BeautifulSoup(response.content, 'html.parser')
|
|
87
|
+
data = {
|
|
88
|
+
'url': actor_input['url'],
|
|
89
|
+
'title': soup.title.string if soup.title else None,
|
|
90
|
+
}
|
|
91
|
+
await Actor.push_data(data)
|
|
92
|
+
|
|
93
|
+
if __name__ == '__main__':
|
|
94
|
+
asyncio.run(main())
|
|
95
|
+
```
|
|
96
|
+
"""
|
|
60
97
|
|
|
61
98
|
_is_rebooting = False
|
|
62
99
|
_is_any_instance_initialized = False
|
|
@@ -108,7 +145,6 @@ class _ActorType:
|
|
|
108
145
|
|
|
109
146
|
self._is_initialized = False
|
|
110
147
|
|
|
111
|
-
@ignore_docs
|
|
112
148
|
async def __aenter__(self) -> Self:
|
|
113
149
|
"""Initialize the Actor.
|
|
114
150
|
|
|
@@ -120,7 +156,6 @@ class _ActorType:
|
|
|
120
156
|
await self.init()
|
|
121
157
|
return self
|
|
122
158
|
|
|
123
|
-
@ignore_docs
|
|
124
159
|
async def __aexit__(
|
|
125
160
|
self,
|
|
126
161
|
_exc_type: type[BaseException] | None,
|
apify/_charging.py
CHANGED
|
@@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Protocol
|
|
|
8
8
|
|
|
9
9
|
from pydantic import TypeAdapter
|
|
10
10
|
|
|
11
|
-
from apify_shared.utils import ignore_docs
|
|
12
11
|
from crawlee._utils.context import ensure_context
|
|
13
12
|
|
|
14
13
|
from apify._models import ActorRun, PricingModel
|
|
@@ -26,9 +25,18 @@ if TYPE_CHECKING:
|
|
|
26
25
|
run_validator = TypeAdapter[ActorRun | None](ActorRun | None)
|
|
27
26
|
|
|
28
27
|
|
|
29
|
-
@docs_group('
|
|
28
|
+
@docs_group('Charging')
|
|
30
29
|
class ChargingManager(Protocol):
|
|
31
|
-
"""Provides fine-grained access to pay-per-event functionality.
|
|
30
|
+
"""Provides fine-grained access to pay-per-event functionality.
|
|
31
|
+
|
|
32
|
+
The ChargingManager allows you to charge for specific events in your Actor when using
|
|
33
|
+
the pay-per-event pricing model. This enables precise cost control and transparent
|
|
34
|
+
billing for different operations within your Actor.
|
|
35
|
+
|
|
36
|
+
### References
|
|
37
|
+
|
|
38
|
+
- Apify platform documentation: https://docs.apify.com/platform/actors/publishing/monetize
|
|
39
|
+
"""
|
|
32
40
|
|
|
33
41
|
async def charge(self, event_name: str, count: int = 1) -> ChargeResult:
|
|
34
42
|
"""Charge for a specified number of events - sub-operations of the Actor.
|
|
@@ -57,7 +65,7 @@ class ChargingManager(Protocol):
|
|
|
57
65
|
"""
|
|
58
66
|
|
|
59
67
|
|
|
60
|
-
@docs_group('
|
|
68
|
+
@docs_group('Charging')
|
|
61
69
|
@dataclass(frozen=True)
|
|
62
70
|
class ChargeResult:
|
|
63
71
|
"""Result of the `ChargingManager.charge` method."""
|
|
@@ -72,7 +80,7 @@ class ChargeResult:
|
|
|
72
80
|
"""How many events of each known type can still be charged within the limit."""
|
|
73
81
|
|
|
74
82
|
|
|
75
|
-
@docs_group('
|
|
83
|
+
@docs_group('Charging')
|
|
76
84
|
@dataclass
|
|
77
85
|
class ActorPricingInfo:
|
|
78
86
|
"""Result of the `ChargingManager.get_pricing_info` method."""
|
|
@@ -90,7 +98,6 @@ class ActorPricingInfo:
|
|
|
90
98
|
"""Price of every known event type."""
|
|
91
99
|
|
|
92
100
|
|
|
93
|
-
@ignore_docs
|
|
94
101
|
class ChargingManagerImplementation(ChargingManager):
|
|
95
102
|
"""Implementation of the `ChargingManager` Protocol - this is only meant to be instantiated internally."""
|
|
96
103
|
|
apify/_configuration.py
CHANGED
|
@@ -25,7 +25,7 @@ def _transform_to_list(value: Any) -> list[str] | None:
|
|
|
25
25
|
return value if isinstance(value, list) else str(value).split(',')
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
@docs_group('
|
|
28
|
+
@docs_group('Configuration')
|
|
29
29
|
class Configuration(CrawleeConfiguration):
|
|
30
30
|
"""A class for specifying the configuration of an Actor.
|
|
31
31
|
|
apify/_crypto.py
CHANGED
|
@@ -12,7 +12,6 @@ from cryptography.hazmat.primitives import hashes, serialization
|
|
|
12
12
|
from cryptography.hazmat.primitives.asymmetric import padding, rsa
|
|
13
13
|
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
|
14
14
|
|
|
15
|
-
from apify_shared.utils import ignore_docs
|
|
16
15
|
from crawlee._utils.crypto import crypto_random_object_id
|
|
17
16
|
|
|
18
17
|
from apify._consts import ENCRYPTED_INPUT_VALUE_REGEXP, ENCRYPTED_JSON_VALUE_PREFIX, ENCRYPTED_STRING_VALUE_PREFIX
|
|
@@ -22,7 +21,6 @@ ENCRYPTION_IV_LENGTH = 16
|
|
|
22
21
|
ENCRYPTION_AUTH_TAG_LENGTH = 16
|
|
23
22
|
|
|
24
23
|
|
|
25
|
-
@ignore_docs
|
|
26
24
|
def public_encrypt(value: str, *, public_key: rsa.RSAPublicKey) -> dict:
|
|
27
25
|
"""Encrypts the given value using AES cipher and the password for encryption using the public key.
|
|
28
26
|
|
|
@@ -66,7 +64,6 @@ def public_encrypt(value: str, *, public_key: rsa.RSAPublicKey) -> dict:
|
|
|
66
64
|
}
|
|
67
65
|
|
|
68
66
|
|
|
69
|
-
@ignore_docs
|
|
70
67
|
def private_decrypt(
|
|
71
68
|
encrypted_password: str,
|
|
72
69
|
encrypted_value: str,
|
|
@@ -118,7 +115,6 @@ def private_decrypt(
|
|
|
118
115
|
return decipher_bytes.decode('utf-8')
|
|
119
116
|
|
|
120
117
|
|
|
121
|
-
@ignore_docs
|
|
122
118
|
def load_private_key(private_key_file_base64: str, private_key_password: str) -> rsa.RSAPrivateKey:
|
|
123
119
|
private_key = serialization.load_pem_private_key(
|
|
124
120
|
base64.b64decode(private_key_file_base64.encode('utf-8')),
|
|
@@ -138,7 +134,6 @@ def _load_public_key(public_key_file_base64: str) -> rsa.RSAPublicKey:
|
|
|
138
134
|
return public_key
|
|
139
135
|
|
|
140
136
|
|
|
141
|
-
@ignore_docs
|
|
142
137
|
def decrypt_input_secrets(private_key: rsa.RSAPrivateKey, input_data: Any) -> Any:
|
|
143
138
|
"""Decrypt input secrets."""
|
|
144
139
|
if not isinstance(input_data, dict):
|
|
@@ -180,7 +175,6 @@ def encode_base62(num: int) -> str:
|
|
|
180
175
|
return res
|
|
181
176
|
|
|
182
177
|
|
|
183
|
-
@ignore_docs
|
|
184
178
|
def create_hmac_signature(secret_key: str, message: str) -> str:
|
|
185
179
|
"""Generate an HMAC signature and encodes it using Base62. Base62 encoding reduces the signature length.
|
|
186
180
|
|
apify/_models.py
CHANGED
|
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
|
|
|
16
16
|
from typing import TypeAlias
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
@docs_group('
|
|
19
|
+
@docs_group('Actor')
|
|
20
20
|
class Webhook(BaseModel):
|
|
21
21
|
__model_config__ = ConfigDict(populate_by_name=True)
|
|
22
22
|
|
|
@@ -35,14 +35,14 @@ class Webhook(BaseModel):
|
|
|
35
35
|
] = None
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
@docs_group('
|
|
38
|
+
@docs_group('Actor')
|
|
39
39
|
class ActorRunMeta(BaseModel):
|
|
40
40
|
__model_config__ = ConfigDict(populate_by_name=True)
|
|
41
41
|
|
|
42
42
|
origin: Annotated[MetaOrigin, Field()]
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
@docs_group('
|
|
45
|
+
@docs_group('Actor')
|
|
46
46
|
class ActorRunStats(BaseModel):
|
|
47
47
|
__model_config__ = ConfigDict(populate_by_name=True)
|
|
48
48
|
|
|
@@ -63,7 +63,7 @@ class ActorRunStats(BaseModel):
|
|
|
63
63
|
compute_units: Annotated[float, Field(alias='computeUnits')]
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
@docs_group('
|
|
66
|
+
@docs_group('Actor')
|
|
67
67
|
class ActorRunOptions(BaseModel):
|
|
68
68
|
__model_config__ = ConfigDict(populate_by_name=True)
|
|
69
69
|
|
|
@@ -74,7 +74,7 @@ class ActorRunOptions(BaseModel):
|
|
|
74
74
|
max_total_charge_usd: Annotated[Decimal | None, Field(alias='maxTotalChargeUsd')] = None
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
@docs_group('
|
|
77
|
+
@docs_group('Actor')
|
|
78
78
|
class ActorRunUsage(BaseModel):
|
|
79
79
|
__model_config__ = ConfigDict(populate_by_name=True)
|
|
80
80
|
|
|
@@ -92,7 +92,7 @@ class ActorRunUsage(BaseModel):
|
|
|
92
92
|
proxy_serps: Annotated[float | None, Field(alias='PROXY_SERPS')] = None
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
@docs_group('
|
|
95
|
+
@docs_group('Actor')
|
|
96
96
|
class ActorRun(BaseModel):
|
|
97
97
|
__model_config__ = ConfigDict(populate_by_name=True)
|
|
98
98
|
|
apify/_platform_event_manager.py
CHANGED
|
@@ -27,17 +27,10 @@ if TYPE_CHECKING:
|
|
|
27
27
|
|
|
28
28
|
from apify._configuration import Configuration
|
|
29
29
|
|
|
30
|
-
|
|
31
30
|
__all__ = ['EventManager', 'LocalEventManager', 'PlatformEventManager']
|
|
32
31
|
|
|
33
32
|
|
|
34
|
-
@docs_group('
|
|
35
|
-
class PersistStateEvent(BaseModel):
|
|
36
|
-
name: Literal[Event.PERSIST_STATE]
|
|
37
|
-
data: Annotated[EventPersistStateData, Field(default_factory=lambda: EventPersistStateData(is_migrating=False))]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
@docs_group('Data structures')
|
|
33
|
+
@docs_group('Event data')
|
|
41
34
|
class SystemInfoEventData(BaseModel):
|
|
42
35
|
mem_avg_bytes: Annotated[float, Field(alias='memAvgBytes')]
|
|
43
36
|
mem_current_bytes: Annotated[float, Field(alias='memCurrentBytes')]
|
|
@@ -64,31 +57,37 @@ class SystemInfoEventData(BaseModel):
|
|
|
64
57
|
)
|
|
65
58
|
|
|
66
59
|
|
|
67
|
-
@docs_group('
|
|
60
|
+
@docs_group('Events')
|
|
61
|
+
class PersistStateEvent(BaseModel):
|
|
62
|
+
name: Literal[Event.PERSIST_STATE]
|
|
63
|
+
data: Annotated[EventPersistStateData, Field(default_factory=lambda: EventPersistStateData(is_migrating=False))]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
@docs_group('Events')
|
|
68
67
|
class SystemInfoEvent(BaseModel):
|
|
69
68
|
name: Literal[Event.SYSTEM_INFO]
|
|
70
69
|
data: SystemInfoEventData
|
|
71
70
|
|
|
72
71
|
|
|
73
|
-
@docs_group('
|
|
72
|
+
@docs_group('Events')
|
|
74
73
|
class MigratingEvent(BaseModel):
|
|
75
74
|
name: Literal[Event.MIGRATING]
|
|
76
75
|
data: Annotated[EventMigratingData, Field(default_factory=EventMigratingData)]
|
|
77
76
|
|
|
78
77
|
|
|
79
|
-
@docs_group('
|
|
78
|
+
@docs_group('Events')
|
|
80
79
|
class AbortingEvent(BaseModel):
|
|
81
80
|
name: Literal[Event.ABORTING]
|
|
82
81
|
data: Annotated[EventAbortingData, Field(default_factory=EventAbortingData)]
|
|
83
82
|
|
|
84
83
|
|
|
85
|
-
@docs_group('
|
|
84
|
+
@docs_group('Events')
|
|
86
85
|
class ExitEvent(BaseModel):
|
|
87
86
|
name: Literal[Event.EXIT]
|
|
88
87
|
data: Annotated[EventExitData, Field(default_factory=EventExitData)]
|
|
89
88
|
|
|
90
89
|
|
|
91
|
-
@docs_group('
|
|
90
|
+
@docs_group('Events')
|
|
92
91
|
class EventWithoutData(BaseModel):
|
|
93
92
|
name: Literal[
|
|
94
93
|
Event.SESSION_RETIRED,
|
|
@@ -101,13 +100,13 @@ class EventWithoutData(BaseModel):
|
|
|
101
100
|
data: Any = None
|
|
102
101
|
|
|
103
102
|
|
|
104
|
-
@docs_group('
|
|
103
|
+
@docs_group('Events')
|
|
105
104
|
class DeprecatedEvent(BaseModel):
|
|
106
105
|
name: Literal['cpuInfo']
|
|
107
106
|
data: Annotated[dict[str, Any], Field(default_factory=dict)]
|
|
108
107
|
|
|
109
108
|
|
|
110
|
-
@docs_group('
|
|
109
|
+
@docs_group('Events')
|
|
111
110
|
class UnknownEvent(BaseModel):
|
|
112
111
|
name: str
|
|
113
112
|
data: Annotated[dict[str, Any], Field(default_factory=dict)]
|
|
@@ -120,7 +119,7 @@ event_data_adapter = TypeAdapter[EventMessage | DeprecatedEvent | UnknownEvent](
|
|
|
120
119
|
)
|
|
121
120
|
|
|
122
121
|
|
|
123
|
-
@docs_group('
|
|
122
|
+
@docs_group('Event managers')
|
|
124
123
|
class PlatformEventManager(EventManager):
|
|
125
124
|
"""A class for managing Actor events.
|
|
126
125
|
|
apify/_proxy_configuration.py
CHANGED
|
@@ -10,7 +10,6 @@ from urllib.parse import urljoin, urlparse
|
|
|
10
10
|
import httpx
|
|
11
11
|
|
|
12
12
|
from apify_shared.consts import ApifyEnvVars
|
|
13
|
-
from apify_shared.utils import ignore_docs
|
|
14
13
|
from crawlee.proxy_configuration import ProxyConfiguration as CrawleeProxyConfiguration
|
|
15
14
|
from crawlee.proxy_configuration import ProxyInfo as CrawleeProxyInfo
|
|
16
15
|
from crawlee.proxy_configuration import _NewUrlFunction
|
|
@@ -28,7 +27,6 @@ COUNTRY_CODE_REGEX = re.compile(r'^[A-Z]{2}$')
|
|
|
28
27
|
SESSION_ID_MAX_LENGTH = 50
|
|
29
28
|
|
|
30
29
|
|
|
31
|
-
@ignore_docs
|
|
32
30
|
def is_url(url: str) -> bool:
|
|
33
31
|
"""Check if the given string is a valid URL."""
|
|
34
32
|
try:
|
|
@@ -69,7 +67,7 @@ def _check(
|
|
|
69
67
|
raise ValueError(f'{error_str} does not match pattern {pattern.pattern!r}')
|
|
70
68
|
|
|
71
69
|
|
|
72
|
-
@docs_group('
|
|
70
|
+
@docs_group('Configuration')
|
|
73
71
|
@dataclass
|
|
74
72
|
class ProxyInfo(CrawleeProxyInfo):
|
|
75
73
|
"""Provides information about a proxy connection that is used for requests."""
|
|
@@ -89,7 +87,7 @@ class ProxyInfo(CrawleeProxyInfo):
|
|
|
89
87
|
"""
|
|
90
88
|
|
|
91
89
|
|
|
92
|
-
@docs_group('
|
|
90
|
+
@docs_group('Configuration')
|
|
93
91
|
class ProxyConfiguration(CrawleeProxyConfiguration):
|
|
94
92
|
"""Configures a connection to a proxy server with the provided options.
|
|
95
93
|
|
|
@@ -104,7 +102,6 @@ class ProxyConfiguration(CrawleeProxyConfiguration):
|
|
|
104
102
|
|
|
105
103
|
_configuration: Configuration
|
|
106
104
|
|
|
107
|
-
@ignore_docs
|
|
108
105
|
def __init__(
|
|
109
106
|
self,
|
|
110
107
|
*,
|
apify/_utils.py
CHANGED
|
@@ -30,7 +30,19 @@ def is_running_in_ipython() -> bool:
|
|
|
30
30
|
return getattr(builtins, '__IPYTHON__', False)
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
# The order of the rendered API groups is defined in the website/docusaurus.config.js file.
|
|
34
|
+
GroupName = Literal[
|
|
35
|
+
'Actor',
|
|
36
|
+
'Charging',
|
|
37
|
+
'Configuration',
|
|
38
|
+
'Event data',
|
|
39
|
+
'Event managers',
|
|
40
|
+
'Events',
|
|
41
|
+
'Request loaders',
|
|
42
|
+
'Storage clients',
|
|
43
|
+
'Storage data',
|
|
44
|
+
'Storages',
|
|
45
|
+
]
|
|
34
46
|
|
|
35
47
|
|
|
36
48
|
def docs_group(group_name: GroupName) -> Callable: # noqa: ARG001
|
apify/log.py
CHANGED
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
|
|
5
|
-
from apify_shared.utils import ignore_docs
|
|
6
5
|
from crawlee._log_config import CrawleeLogFormatter, configure_logger, get_configured_log_level
|
|
7
6
|
|
|
8
7
|
# Name of the logger used throughout the library (resolves to 'apify')
|
|
@@ -12,7 +11,6 @@ logger_name = __name__.split('.')[0]
|
|
|
12
11
|
logger = logging.getLogger(logger_name)
|
|
13
12
|
|
|
14
13
|
|
|
15
|
-
@ignore_docs
|
|
16
14
|
class ActorLogFormatter(CrawleeLogFormatter): # noqa: D101 (Inherited from parent class)
|
|
17
15
|
pass
|
|
18
16
|
|
apify/storages/_request_list.py
CHANGED
|
@@ -38,7 +38,7 @@ class _SimpleUrlInput(_RequestDetails):
|
|
|
38
38
|
url_input_adapter = TypeAdapter(list[_RequestsFromUrlInput | _SimpleUrlInput])
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
@docs_group('
|
|
41
|
+
@docs_group('Request loaders')
|
|
42
42
|
class RequestList(CrawleeRequestList):
|
|
43
43
|
"""Extends crawlee RequestList.
|
|
44
44
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
apify/__init__.py,sha256=HpgKg2FZWJuSPfDygzJ62psylhw4NN4tKFnoYUIhcd4,838
|
|
2
|
-
apify/_actor.py,sha256=
|
|
3
|
-
apify/_charging.py,sha256=
|
|
4
|
-
apify/_configuration.py,sha256=
|
|
2
|
+
apify/_actor.py,sha256=ENvNcPnFaFuQs43GejTCBTuiYIQJISoBdBALT9asYB0,53074
|
|
3
|
+
apify/_charging.py,sha256=mJ-BueULWZxqvbdM_WGbsb-V3vTJ8Gw38k81eGwJhVY,12481
|
|
4
|
+
apify/_configuration.py,sha256=JbGIY4hQ_y6pRTHxdgl5hmqIUjJdYddLdqGGCEvE-fc,11914
|
|
5
5
|
apify/_consts.py,sha256=CjhyEJ4Mi0lcIrzfqz8dN7nPJWGjCeBrrXQy1PZ6zRI,440
|
|
6
|
-
apify/_crypto.py,sha256=
|
|
7
|
-
apify/_models.py,sha256=
|
|
8
|
-
apify/_platform_event_manager.py,sha256=
|
|
9
|
-
apify/_proxy_configuration.py,sha256=
|
|
10
|
-
apify/_utils.py,sha256=
|
|
11
|
-
apify/log.py,sha256
|
|
6
|
+
apify/_crypto.py,sha256=tqUs13QkemDtGzvU41pIA2HUEawpDlgzqbwKjm4I8kM,6852
|
|
7
|
+
apify/_models.py,sha256=EzU-inWeJ7T5HNVYEwnYb79W-q4OAPhtrYctfRYzpTE,7848
|
|
8
|
+
apify/_platform_event_manager.py,sha256=ffZgTk6BaErZInPhKTV1sDuDmp_YkplrwaEVVcI4xpo,7798
|
|
9
|
+
apify/_proxy_configuration.py,sha256=FiQsOY47-De-qHgLHj812E-6nO_6w2KMhQ81ogdsZ6Q,13030
|
|
10
|
+
apify/_utils.py,sha256=LcUbPFbu4prL-UYLbtmZNWfozisrpxbdM25batmbk58,2097
|
|
11
|
+
apify/log.py,sha256=-L3V_rsgtgA0OP-JXtqSAgInktKLCyOvR9y7TP1oosY,1235
|
|
12
12
|
apify/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
apify/apify_storage_client/__init__.py,sha256=-UbR68bFsDR6ln8OFs4t50eqcnY36hujO-SeOt-KmcA,114
|
|
14
|
-
apify/apify_storage_client/_apify_storage_client.py,sha256=
|
|
14
|
+
apify/apify_storage_client/_apify_storage_client.py,sha256=HMfx7CEH15NAtb7n_BSmROCWRrxXcDNoSCwXgbdJGGY,2744
|
|
15
15
|
apify/apify_storage_client/_dataset_client.py,sha256=9RxxhrJMic5QRJn2Vl4J-FnSlEigIpYW5Z_2B1dcRzM,5597
|
|
16
16
|
apify/apify_storage_client/_dataset_collection_client.py,sha256=gf5skMTkfpGhEscRy5bgo13vznxGZrSd7w9Ivh3Usyc,1516
|
|
17
17
|
apify/apify_storage_client/_key_value_store_client.py,sha256=OCFUAW0o-8KQvUpL8zmlZrpU3yRmDKdsO2529H2v40I,4002
|
|
@@ -36,9 +36,9 @@ apify/scrapy/pipelines/__init__.py,sha256=GWPeLN_Zwj8vRBWtXW6DaxdB7mvyQ7Jw5Tz1cc
|
|
|
36
36
|
apify/scrapy/pipelines/actor_dataset_push.py,sha256=XUUyznQTD-E3wYUUFt2WAOnWhbnRrY0WuedlfYfYhDI,846
|
|
37
37
|
apify/scrapy/pipelines/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
38
|
apify/storages/__init__.py,sha256=FW-z6ubuPnHGM-Wp15T8mR5q6lnpDGrCW-IkgZd5L30,177
|
|
39
|
-
apify/storages/_request_list.py,sha256=
|
|
39
|
+
apify/storages/_request_list.py,sha256=4kXCtHe1GwPtwjT6OND-YKE1xkkxv7vEJ6zYQTZNzqs,6047
|
|
40
40
|
apify/storages/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
-
apify-2.
|
|
42
|
-
apify-2.
|
|
43
|
-
apify-2.
|
|
44
|
-
apify-2.
|
|
41
|
+
apify-2.7.0b1.dist-info/METADATA,sha256=GtiMrHjXba6QJPYml9xzDmk63UGa1QEHYEAdB8KrdTg,21724
|
|
42
|
+
apify-2.7.0b1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
43
|
+
apify-2.7.0b1.dist-info/licenses/LICENSE,sha256=AsFjHssKjj4LGd2ZCqXn6FBzMqcWdjQre1byPPSypVw,11355
|
|
44
|
+
apify-2.7.0b1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|