apify 1.1.4b3__tar.gz → 1.1.5__tar.gz

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.

Files changed (38) hide show
  1. {apify-1.1.4b3 → apify-1.1.5}/LICENSE +1 -1
  2. {apify-1.1.4b3 → apify-1.1.5}/PKG-INFO +48 -4
  3. {apify-1.1.4b3 → apify-1.1.5}/README.md +3 -2
  4. {apify-1.1.4b3 → apify-1.1.5}/pyproject.toml +5 -99
  5. {apify-1.1.4b3 → apify-1.1.5}/src/apify/actor.py +0 -1
  6. {apify-1.1.4b3 → apify-1.1.5}/src/apify/consts.py +10 -9
  7. {apify-1.1.4b3 → apify-1.1.5}/src/apify/event_manager.py +1 -1
  8. {apify-1.1.4b3 → apify-1.1.5}/src/apify/log.py +17 -1
  9. {apify-1.1.4b3 → apify-1.1.5}/src/apify/storages/dataset.py +2 -1
  10. {apify-1.1.4b3 → apify-1.1.5}/src/apify.egg-info/PKG-INFO +48 -4
  11. {apify-1.1.4b3 → apify-1.1.5}/src/apify.egg-info/requires.txt +3 -5
  12. {apify-1.1.4b3 → apify-1.1.5}/setup.cfg +0 -0
  13. {apify-1.1.4b3 → apify-1.1.5}/src/apify/__init__.py +0 -0
  14. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_crypto.py +0 -0
  15. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/__init__.py +0 -0
  16. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/file_storage_utils.py +0 -0
  17. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/memory_storage_client.py +0 -0
  18. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/__init__.py +0 -0
  19. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/base_resource_client.py +0 -0
  20. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/base_resource_collection_client.py +0 -0
  21. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/dataset.py +0 -0
  22. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/dataset_collection.py +0 -0
  23. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/key_value_store.py +0 -0
  24. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/key_value_store_collection.py +0 -0
  25. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/request_queue.py +0 -0
  26. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_memory_storage/resource_clients/request_queue_collection.py +0 -0
  27. {apify-1.1.4b3 → apify-1.1.5}/src/apify/_utils.py +0 -0
  28. {apify-1.1.4b3 → apify-1.1.5}/src/apify/config.py +0 -0
  29. {apify-1.1.4b3 → apify-1.1.5}/src/apify/proxy_configuration.py +0 -0
  30. {apify-1.1.4b3 → apify-1.1.5}/src/apify/py.typed +0 -0
  31. {apify-1.1.4b3 → apify-1.1.5}/src/apify/storages/__init__.py +0 -0
  32. {apify-1.1.4b3 → apify-1.1.5}/src/apify/storages/base_storage.py +0 -0
  33. {apify-1.1.4b3 → apify-1.1.5}/src/apify/storages/key_value_store.py +0 -0
  34. {apify-1.1.4b3 → apify-1.1.5}/src/apify/storages/request_queue.py +0 -0
  35. {apify-1.1.4b3 → apify-1.1.5}/src/apify/storages/storage_client_manager.py +0 -0
  36. {apify-1.1.4b3 → apify-1.1.5}/src/apify.egg-info/SOURCES.txt +0 -0
  37. {apify-1.1.4b3 → apify-1.1.5}/src/apify.egg-info/dependency_links.txt +0 -0
  38. {apify-1.1.4b3 → apify-1.1.5}/src/apify.egg-info/top_level.txt +0 -0
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2022 Apify Technologies s.r.o.
189
+ Copyright 2023 Apify Technologies s.r.o.
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apify
3
- Version: 1.1.4b3
3
+ Version: 1.1.5
4
4
  Summary: Apify SDK for Python
5
5
  Author-email: "Apify Technologies s.r.o." <support@apify.com>
6
6
  License: Apache Software License
@@ -22,8 +22,51 @@ Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Topic :: Software Development :: Libraries
23
23
  Requires-Python: >=3.8
24
24
  Description-Content-Type: text/markdown
25
- Provides-Extra: dev
26
25
  License-File: LICENSE
26
+ Requires-Dist: aiofiles>=22.1.0
27
+ Requires-Dist: aioshutil>=1.0
28
+ Requires-Dist: apify-client~=1.4.0
29
+ Requires-Dist: apify-shared~=1.0.2
30
+ Requires-Dist: colorama>=0.4.6
31
+ Requires-Dist: cryptography>=39.0.0
32
+ Requires-Dist: httpx>=0.24.1
33
+ Requires-Dist: psutil>=5.9.5
34
+ Requires-Dist: pyee>=9.0.0
35
+ Requires-Dist: sortedcollections>=2.0.1
36
+ Requires-Dist: typing-extensions>=4.1.0
37
+ Requires-Dist: websockets>=10.1
38
+ Provides-Extra: dev
39
+ Requires-Dist: autopep8~=2.0.2; extra == "dev"
40
+ Requires-Dist: build~=0.10.0; extra == "dev"
41
+ Requires-Dist: filelock~=3.12.0; extra == "dev"
42
+ Requires-Dist: flake8~=6.0.0; extra == "dev"
43
+ Requires-Dist: flake8-bugbear~=23.5.9; extra == "dev"
44
+ Requires-Dist: flake8-commas~=2.1.0; extra == "dev"
45
+ Requires-Dist: flake8-comprehensions~=3.12.0; extra == "dev"
46
+ Requires-Dist: flake8-datetimez~=20.10.0; extra == "dev"
47
+ Requires-Dist: flake8-docstrings~=1.7.0; extra == "dev"
48
+ Requires-Dist: flake8-encodings~=0.5.0; extra == "dev"
49
+ Requires-Dist: flake8-isort~=6.0.0; extra == "dev"
50
+ Requires-Dist: flake8-noqa~=1.3.1; extra == "dev"
51
+ Requires-Dist: flake8-pytest-style~=1.7.2; extra == "dev"
52
+ Requires-Dist: flake8-quotes~=3.3.2; extra == "dev"
53
+ Requires-Dist: flake8-simplify~=0.20.0; extra == "dev"
54
+ Requires-Dist: flake8-unused-arguments~=0.0.13; extra == "dev"
55
+ Requires-Dist: isort~=5.12.0; extra == "dev"
56
+ Requires-Dist: mypy~=1.3.0; extra == "dev"
57
+ Requires-Dist: pep8-naming~=0.13.3; extra == "dev"
58
+ Requires-Dist: pre-commit~=3.3.2; extra == "dev"
59
+ Requires-Dist: pydoc-markdown~=4.8.2; extra == "dev"
60
+ Requires-Dist: pytest~=7.3.1; extra == "dev"
61
+ Requires-Dist: pytest-asyncio~=0.21.0; extra == "dev"
62
+ Requires-Dist: pytest-only~=2.0.0; extra == "dev"
63
+ Requires-Dist: pytest-timeout~=2.1.0; extra == "dev"
64
+ Requires-Dist: pytest-xdist~=3.3.1; extra == "dev"
65
+ Requires-Dist: respx~=0.20.1; extra == "dev"
66
+ Requires-Dist: twine~=4.0.2; extra == "dev"
67
+ Requires-Dist: types-aiofiles~=23.1.0.3; extra == "dev"
68
+ Requires-Dist: types-colorama~=0.4.15.11; extra == "dev"
69
+ Requires-Dist: types-psutil~=5.9.5.12; extra == "dev"
27
70
 
28
71
  # Apify SDK for Python
29
72
 
@@ -46,9 +89,10 @@ import requests
46
89
 
47
90
  async def main():
48
91
  async with Actor:
49
- response = requests.get('https://apify.com')
92
+ input = await Actor.get_input()
93
+ response = requests.get(input['url'])
50
94
  soup = BeautifulSoup(response.content, 'html.parser')
51
- await Actor.push_data({ 'url': url, 'title': soup.title.string })
95
+ await Actor.push_data({ 'url': input['url'], 'title': soup.title.string })
52
96
  ```
53
97
 
54
98
  ## What are Actors?
@@ -19,9 +19,10 @@ import requests
19
19
 
20
20
  async def main():
21
21
  async with Actor:
22
- response = requests.get('https://apify.com')
22
+ input = await Actor.get_input()
23
+ response = requests.get(input['url'])
23
24
  soup = BeautifulSoup(response.content, 'html.parser')
24
- await Actor.push_data({ 'url': url, 'title': soup.title.string })
25
+ await Actor.push_data({ 'url': input['url'], 'title': soup.title.string })
25
26
  ```
26
27
 
27
28
  ## What are Actors?
@@ -1,186 +1,92 @@
1
1
  [project]
2
-
3
2
  name = "apify"
4
-
5
- version = "1.1.4b3"
3
+ version = "1.1.5"
6
4
  description = "Apify SDK for Python"
7
-
8
5
  readme = "README.md"
9
-
10
6
  license = {text = "Apache Software License"}
11
-
12
7
  authors = [
13
-
14
- { name = "Apify Technologies s.r.o.", email = "support@apify.com" },
15
-
8
+ {name = "Apify Technologies s.r.o.", email = "support@apify.com"},
16
9
  ]
17
-
18
10
  keywords = ["apify", "sdk", "actor", "scraping", "automation"]
19
11
 
20
-
21
-
22
12
  classifiers = [
23
-
24
13
  "Development Status :: 5 - Production/Stable",
25
-
26
14
  "Intended Audience :: Developers",
27
-
28
15
  "License :: OSI Approved :: Apache Software License",
29
-
30
16
  "Operating System :: OS Independent",
31
-
32
17
  "Programming Language :: Python :: 3.8",
33
-
34
18
  "Programming Language :: Python :: 3.9",
35
-
36
19
  "Programming Language :: Python :: 3.10",
37
-
38
20
  "Programming Language :: Python :: 3.11",
39
-
40
21
  "Topic :: Software Development :: Libraries",
41
-
42
22
  ]
43
23
 
44
-
45
-
46
24
  requires-python = ">=3.8"
47
-
48
25
  dependencies = [
49
-
50
26
  "aiofiles >= 22.1.0",
51
-
52
27
  "aioshutil >= 1.0",
53
-
54
- "apify-client == 1.4.0",
55
-
56
- "apify-shared == 1.0.2",
57
-
28
+ "apify-client ~= 1.4.0",
29
+ "apify-shared ~= 1.0.2",
58
30
  "colorama >= 0.4.6",
59
-
60
31
  "cryptography >= 39.0.0",
61
-
62
32
  "httpx >= 0.24.1",
63
-
64
33
  "psutil >= 5.9.5",
65
-
66
34
  "pyee >= 9.0.0",
67
-
68
35
  "sortedcollections >= 2.0.1",
69
-
70
36
  "typing-extensions >= 4.1.0",
71
-
72
37
  "websockets >= 10.1",
73
-
74
38
  ]
75
39
 
76
-
77
-
78
40
  [project.optional-dependencies]
79
-
80
41
  dev = [
81
-
82
42
  "autopep8 ~= 2.0.2",
83
-
84
43
  "build ~= 0.10.0",
85
-
86
44
  "filelock ~= 3.12.0",
87
-
88
45
  "flake8 ~= 6.0.0",
89
-
90
46
  "flake8-bugbear ~= 23.5.9",
91
-
92
47
  "flake8-commas ~= 2.1.0",
93
-
94
48
  "flake8-comprehensions ~= 3.12.0",
95
-
96
49
  "flake8-datetimez ~= 20.10.0",
97
-
98
50
  "flake8-docstrings ~= 1.7.0",
99
-
100
51
  "flake8-encodings ~= 0.5.0",
101
-
102
52
  "flake8-isort ~= 6.0.0",
103
-
104
53
  "flake8-noqa ~= 1.3.1",
105
-
106
54
  "flake8-pytest-style ~= 1.7.2",
107
-
108
55
  "flake8-quotes ~= 3.3.2",
109
-
110
56
  "flake8-simplify ~= 0.20.0",
111
-
112
57
  "flake8-unused-arguments ~= 0.0.13",
113
-
114
58
  "isort ~= 5.12.0",
115
-
116
59
  "mypy ~= 1.3.0",
117
-
118
60
  "pep8-naming ~= 0.13.3",
119
-
120
61
  "pre-commit ~= 3.3.2",
121
-
62
+ "pydoc-markdown ~= 4.8.2",
122
63
  "pytest ~= 7.3.1",
123
-
124
64
  "pytest-asyncio ~= 0.21.0",
125
-
126
65
  "pytest-only ~= 2.0.0",
127
-
128
66
  "pytest-timeout ~= 2.1.0",
129
-
130
67
  "pytest-xdist ~= 3.3.1",
131
-
132
68
  "respx ~= 0.20.1",
133
-
134
- "sphinx ~= 6.1.3",
135
-
136
- "sphinx-autodoc-typehints ~= 1.22",
137
-
138
- "sphinx-markdown-builder == 0.5.4", # pinned to 0.5.4, because 0.5.5 has a formatting bug
139
-
140
69
  "twine ~= 4.0.2",
141
-
142
70
  "types-aiofiles ~= 23.1.0.3",
143
-
144
71
  "types-colorama ~= 0.4.15.11",
145
-
146
72
  "types-psutil ~= 5.9.5.12",
147
-
148
73
  ]
149
74
 
150
-
151
-
152
75
  [project.urls]
153
-
154
76
  "Homepage" = "https://docs.apify.com/sdk/python/"
155
-
156
77
  "Documentation" = "https://docs.apify.com/sdk/python/"
157
-
158
78
  "Source" = "https://github.com/apify/apify-sdk-python"
159
-
160
79
  "Issue tracker" = "https://github.com/apify/apify-sdk-python/issues"
161
-
162
80
  "Changelog" = "https://github.com/apify/apify-sdk-python/blob/master/CHANGELOG.md"
163
-
164
81
  "Apify Homepage" = "https://apify.com"
165
82
 
166
-
167
-
168
83
  [build-system]
169
-
170
84
  requires = ["setuptools>=64.0.0", "wheel"]
171
-
172
85
  build-backend = "setuptools.build_meta"
173
86
 
174
-
175
-
176
87
  [tool.setuptools.packages.find]
177
-
178
88
  where = ["src"]
179
-
180
89
  include = ["apify*"]
181
90
 
182
-
183
-
184
91
  [tool.setuptools.package-data]
185
-
186
92
  apify = ["py.typed"]
@@ -36,7 +36,6 @@ MainReturnType = TypeVar('MainReturnType')
36
36
 
37
37
  # This metaclass is needed so you can do `async with Actor: ...` instead of `async with Actor() as a: ...`
38
38
  # and have automatic `Actor.init()` and `Actor.exit()`
39
- # TODO: decide if this mumbo jumbo is worth it or not, or if it maybe breaks something
40
39
 
41
40
 
42
41
  class _ActorContextManager(type):
@@ -3,14 +3,14 @@ import warnings
3
3
  from enum import Enum
4
4
  from typing import Any
5
5
 
6
- from apify_shared.consts import BOOL_ENV_VARS as _BOOL_ENV_VARS
7
- from apify_shared.consts import DATETIME_ENV_VARS as _DATETIME_ENV_VARS
8
- from apify_shared.consts import FLOAT_ENV_VARS as _FLOAT_ENV_VARS
9
- from apify_shared.consts import INTEGER_ENV_VARS as _INTEGER_ENV_VARS
10
- from apify_shared.consts import STRING_ENV_VARS as _STRING_ENV_VARS
11
- from apify_shared.consts import ActorEventTypes as _ActorEventTypes
12
- from apify_shared.consts import ActorExitCodes as _ActorExitCodes
13
- from apify_shared.consts import ApifyEnvVars as _ApifyEnvVars
6
+ from apify_shared.consts import BOOL_ENV_VARS as _BOOL_ENV_VARS # noqa: F401
7
+ from apify_shared.consts import DATETIME_ENV_VARS as _DATETIME_ENV_VARS # noqa: F401
8
+ from apify_shared.consts import FLOAT_ENV_VARS as _FLOAT_ENV_VARS # noqa: F401
9
+ from apify_shared.consts import INTEGER_ENV_VARS as _INTEGER_ENV_VARS # noqa: F401
10
+ from apify_shared.consts import STRING_ENV_VARS as _STRING_ENV_VARS # noqa: F401
11
+ from apify_shared.consts import ActorEventTypes as _ActorEventTypes # noqa: F401
12
+ from apify_shared.consts import ActorExitCodes as _ActorExitCodes # noqa: F401
13
+ from apify_shared.consts import ApifyEnvVars as _ApifyEnvVars # noqa: F401
14
14
 
15
15
  DEPRECATED_NAMES = [
16
16
  'BOOL_ENV_VARS',
@@ -61,4 +61,5 @@ BASE64_REGEXP = '[-A-Za-z0-9+/]*={0,3}'
61
61
  ENCRYPTED_INPUT_VALUE_PREFIX = 'ENCRYPTED_VALUE'
62
62
  ENCRYPTED_INPUT_VALUE_REGEXP = re.compile(f'^{ENCRYPTED_INPUT_VALUE_PREFIX}:({BASE64_REGEXP}):({BASE64_REGEXP})$')
63
63
 
64
- MAX_PAYLOAD_SIZE_BYTES = 9437184 # 9MB
64
+ # 9MB
65
+ MAX_PAYLOAD_SIZE_BYTES = 9437184
@@ -34,7 +34,7 @@ class EventManager:
34
34
  _connected_to_platform_websocket: Optional[asyncio.Future] = None
35
35
 
36
36
  def __init__(self, config: Configuration) -> None:
37
- """Crate an instance of EventManager.
37
+ """Create an instance of the EventManager.
38
38
 
39
39
  Args:
40
40
  config (Configuration): The actor configuration to be used in this event manager.
@@ -17,6 +17,7 @@ logger_name = __name__.split('.')[0]
17
17
  # Logger used throughout the library
18
18
  logger = logging.getLogger(logger_name)
19
19
 
20
+ _LOG_NAME_COLOR = Fore.LIGHTBLACK_EX
20
21
 
21
22
  _LOG_LEVEL_COLOR = {
22
23
  logging.DEBUG: Fore.BLUE,
@@ -54,6 +55,15 @@ class ActorLogFormatter(logging.Formatter):
54
55
  # and extract all the extra ones not present in the empty log record
55
56
  empty_record = logging.LogRecord('dummy', 0, 'dummy', 0, 'dummy', None, None)
56
57
 
58
+ def __init__(self, include_logger_name: bool = False, *args: tuple, **kwargs: dict) -> None:
59
+ """Create an instance of the ActorLogFormatter.
60
+
61
+ Args:
62
+ include_logger_name: Include logger name at the beginning of the log line. Defaults to False.
63
+ """
64
+ super().__init__(*args, **kwargs) # type: ignore
65
+ self.include_logger_name = include_logger_name
66
+
57
67
  def _get_extra_fields(self, record: logging.LogRecord) -> Dict[str, Any]:
58
68
  extra_fields: Dict[str, Any] = {}
59
69
  for key, value in record.__dict__.items():
@@ -72,6 +82,8 @@ class ActorLogFormatter(logging.Formatter):
72
82
  - then has the stringified extra log fields
73
83
  - then, if an exception is a part of the log record, prints the formatted exception.
74
84
  """
85
+ logger_name_string = f'{_LOG_NAME_COLOR}[{record.name}]{Style.RESET_ALL} '
86
+
75
87
  # Colorize the log level, and shorten it to 6 chars tops
76
88
  level_color_code = _LOG_LEVEL_COLOR.get(record.levelno, '')
77
89
  level_short_alias = _LOG_LEVEL_SHORT_ALIAS.get(record.levelno, record.levelname)
@@ -97,4 +109,8 @@ class ActorLogFormatter(logging.Formatter):
97
109
  log_string = super().format(record)
98
110
  log_string = textwrap.indent(log_string, _LOG_MESSAGE_INDENT).lstrip()
99
111
 
100
- return f'{level_string}{log_string}{extra_string}{exception_string}'
112
+ if self.include_logger_name:
113
+ # Include logger name at the beginning of the log line
114
+ return f'{logger_name_string}{level_string}{log_string}{extra_string}{exception_string}'
115
+ else:
116
+ return f'{level_string}{log_string}{extra_string}{exception_string}'
@@ -17,7 +17,8 @@ from ..consts import MAX_PAYLOAD_SIZE_BYTES
17
17
  from .base_storage import BaseStorage
18
18
  from .key_value_store import KeyValueStore
19
19
 
20
- SAFETY_BUFFER_PERCENT = 0.01 / 100 # 0.01%
20
+ # 0.01%
21
+ SAFETY_BUFFER_PERCENT = 0.01 / 100
21
22
  EFFECTIVE_LIMIT_BYTES = MAX_PAYLOAD_SIZE_BYTES - math.ceil(MAX_PAYLOAD_SIZE_BYTES * SAFETY_BUFFER_PERCENT)
22
23
 
23
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apify
3
- Version: 1.1.4b3
3
+ Version: 1.1.5
4
4
  Summary: Apify SDK for Python
5
5
  Author-email: "Apify Technologies s.r.o." <support@apify.com>
6
6
  License: Apache Software License
@@ -22,8 +22,51 @@ Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Topic :: Software Development :: Libraries
23
23
  Requires-Python: >=3.8
24
24
  Description-Content-Type: text/markdown
25
- Provides-Extra: dev
26
25
  License-File: LICENSE
26
+ Requires-Dist: aiofiles>=22.1.0
27
+ Requires-Dist: aioshutil>=1.0
28
+ Requires-Dist: apify-client~=1.4.0
29
+ Requires-Dist: apify-shared~=1.0.2
30
+ Requires-Dist: colorama>=0.4.6
31
+ Requires-Dist: cryptography>=39.0.0
32
+ Requires-Dist: httpx>=0.24.1
33
+ Requires-Dist: psutil>=5.9.5
34
+ Requires-Dist: pyee>=9.0.0
35
+ Requires-Dist: sortedcollections>=2.0.1
36
+ Requires-Dist: typing-extensions>=4.1.0
37
+ Requires-Dist: websockets>=10.1
38
+ Provides-Extra: dev
39
+ Requires-Dist: autopep8~=2.0.2; extra == "dev"
40
+ Requires-Dist: build~=0.10.0; extra == "dev"
41
+ Requires-Dist: filelock~=3.12.0; extra == "dev"
42
+ Requires-Dist: flake8~=6.0.0; extra == "dev"
43
+ Requires-Dist: flake8-bugbear~=23.5.9; extra == "dev"
44
+ Requires-Dist: flake8-commas~=2.1.0; extra == "dev"
45
+ Requires-Dist: flake8-comprehensions~=3.12.0; extra == "dev"
46
+ Requires-Dist: flake8-datetimez~=20.10.0; extra == "dev"
47
+ Requires-Dist: flake8-docstrings~=1.7.0; extra == "dev"
48
+ Requires-Dist: flake8-encodings~=0.5.0; extra == "dev"
49
+ Requires-Dist: flake8-isort~=6.0.0; extra == "dev"
50
+ Requires-Dist: flake8-noqa~=1.3.1; extra == "dev"
51
+ Requires-Dist: flake8-pytest-style~=1.7.2; extra == "dev"
52
+ Requires-Dist: flake8-quotes~=3.3.2; extra == "dev"
53
+ Requires-Dist: flake8-simplify~=0.20.0; extra == "dev"
54
+ Requires-Dist: flake8-unused-arguments~=0.0.13; extra == "dev"
55
+ Requires-Dist: isort~=5.12.0; extra == "dev"
56
+ Requires-Dist: mypy~=1.3.0; extra == "dev"
57
+ Requires-Dist: pep8-naming~=0.13.3; extra == "dev"
58
+ Requires-Dist: pre-commit~=3.3.2; extra == "dev"
59
+ Requires-Dist: pydoc-markdown~=4.8.2; extra == "dev"
60
+ Requires-Dist: pytest~=7.3.1; extra == "dev"
61
+ Requires-Dist: pytest-asyncio~=0.21.0; extra == "dev"
62
+ Requires-Dist: pytest-only~=2.0.0; extra == "dev"
63
+ Requires-Dist: pytest-timeout~=2.1.0; extra == "dev"
64
+ Requires-Dist: pytest-xdist~=3.3.1; extra == "dev"
65
+ Requires-Dist: respx~=0.20.1; extra == "dev"
66
+ Requires-Dist: twine~=4.0.2; extra == "dev"
67
+ Requires-Dist: types-aiofiles~=23.1.0.3; extra == "dev"
68
+ Requires-Dist: types-colorama~=0.4.15.11; extra == "dev"
69
+ Requires-Dist: types-psutil~=5.9.5.12; extra == "dev"
27
70
 
28
71
  # Apify SDK for Python
29
72
 
@@ -46,9 +89,10 @@ import requests
46
89
 
47
90
  async def main():
48
91
  async with Actor:
49
- response = requests.get('https://apify.com')
92
+ input = await Actor.get_input()
93
+ response = requests.get(input['url'])
50
94
  soup = BeautifulSoup(response.content, 'html.parser')
51
- await Actor.push_data({ 'url': url, 'title': soup.title.string })
95
+ await Actor.push_data({ 'url': input['url'], 'title': soup.title.string })
52
96
  ```
53
97
 
54
98
  ## What are Actors?
@@ -1,7 +1,7 @@
1
1
  aiofiles>=22.1.0
2
2
  aioshutil>=1.0
3
- apify-client==1.4.0
4
- apify-shared==1.0.2
3
+ apify-client~=1.4.0
4
+ apify-shared~=1.0.2
5
5
  colorama>=0.4.6
6
6
  cryptography>=39.0.0
7
7
  httpx>=0.24.1
@@ -32,15 +32,13 @@ isort~=5.12.0
32
32
  mypy~=1.3.0
33
33
  pep8-naming~=0.13.3
34
34
  pre-commit~=3.3.2
35
+ pydoc-markdown~=4.8.2
35
36
  pytest~=7.3.1
36
37
  pytest-asyncio~=0.21.0
37
38
  pytest-only~=2.0.0
38
39
  pytest-timeout~=2.1.0
39
40
  pytest-xdist~=3.3.1
40
41
  respx~=0.20.1
41
- sphinx~=6.1.3
42
- sphinx-autodoc-typehints~=1.22
43
- sphinx-markdown-builder==0.5.4
44
42
  twine~=4.0.2
45
43
  types-aiofiles~=23.1.0.3
46
44
  types-colorama~=0.4.15.11
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes