apify 2.3.0b3__tar.gz → 2.3.1__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 (196) hide show
  1. apify-2.3.1/.editorconfig +15 -0
  2. apify-2.3.1/.github/CODEOWNERS +4 -0
  3. apify-2.3.1/.github/workflows/build_and_deploy_docs.yaml +85 -0
  4. apify-2.3.1/.github/workflows/check_pr_title.yaml +14 -0
  5. apify-2.3.1/.github/workflows/pre_release.yaml +78 -0
  6. apify-2.3.1/.github/workflows/release.yaml +119 -0
  7. apify-2.3.1/.github/workflows/run_code_checks.yaml +30 -0
  8. apify-2.3.1/.github/workflows/update_new_issue.yaml +25 -0
  9. apify-2.3.1/.gitignore +49 -0
  10. apify-2.3.1/.markdownlint.yaml +5 -0
  11. apify-2.3.1/.pre-commit-config.yaml +14 -0
  12. apify-2.3.1/CHANGELOG.md +163 -0
  13. apify-2.3.1/CONTRIBUTING.md +160 -0
  14. apify-2.3.1/Makefile +52 -0
  15. apify-2.3.1/PKG-INFO +411 -0
  16. apify-2.3.1/docs/01_overview/01_introduction.mdx +59 -0
  17. apify-2.3.1/docs/01_overview/02_running_actors_locally.mdx +66 -0
  18. apify-2.3.1/docs/01_overview/03_actor_structure.mdx +35 -0
  19. apify-2.3.1/docs/01_overview/code/01_introduction.py +17 -0
  20. apify-2.3.1/docs/01_overview/code/actor_structure/__main__.py +6 -0
  21. apify-2.3.1/docs/01_overview/code/actor_structure/main.py +8 -0
  22. apify-2.3.1/docs/02_guides/01_beautifulsoup_httpx.mdx +30 -0
  23. apify-2.3.1/docs/02_guides/02_crawlee.mdx +37 -0
  24. apify-2.3.1/docs/02_guides/03_playwright.mdx +56 -0
  25. apify-2.3.1/docs/02_guides/04_selenium.mdx +46 -0
  26. apify-2.3.1/docs/02_guides/05_scrapy.mdx +107 -0
  27. apify-2.3.1/docs/02_guides/code/01_beautifulsoup_httpx.py +85 -0
  28. apify-2.3.1/docs/02_guides/code/02_crawlee_beautifulsoup.py +55 -0
  29. apify-2.3.1/docs/02_guides/code/02_crawlee_playwright.py +68 -0
  30. apify-2.3.1/docs/02_guides/code/03_playwright.py +94 -0
  31. apify-2.3.1/docs/02_guides/code/04_selenium.py +104 -0
  32. apify-2.3.1/docs/02_guides/code/scrapy_project/src/__main__.py +22 -0
  33. apify-2.3.1/docs/02_guides/code/scrapy_project/src/items.py +10 -0
  34. apify-2.3.1/docs/02_guides/code/scrapy_project/src/main.py +32 -0
  35. apify-2.3.1/docs/02_guides/code/scrapy_project/src/settings.py +9 -0
  36. apify-2.3.1/docs/02_guides/code/scrapy_project/src/spiders/__init__.py +3 -0
  37. apify-2.3.1/docs/02_guides/code/scrapy_project/src/spiders/title.py +68 -0
  38. apify-2.3.1/docs/03_concepts/01_actor_lifecycle.mdx +55 -0
  39. apify-2.3.1/docs/03_concepts/02_actor_input.mdx +18 -0
  40. apify-2.3.1/docs/03_concepts/03_storages.mdx +167 -0
  41. apify-2.3.1/docs/03_concepts/04_actor_events.mdx +81 -0
  42. apify-2.3.1/docs/03_concepts/05_proxy_management.mdx +108 -0
  43. apify-2.3.1/docs/03_concepts/06_interacting_with_other_actors.mdx +51 -0
  44. apify-2.3.1/docs/03_concepts/07_webhooks.mdx +31 -0
  45. apify-2.3.1/docs/03_concepts/08_access_apify_api.mdx +31 -0
  46. apify-2.3.1/docs/03_concepts/09_running_webserver.mdx +26 -0
  47. apify-2.3.1/docs/03_concepts/10_logging.mdx +84 -0
  48. apify-2.3.1/docs/03_concepts/11_configuration.mdx +34 -0
  49. apify-2.3.1/docs/03_concepts/code/01_context_manager.py +9 -0
  50. apify-2.3.1/docs/03_concepts/code/01_init_exit.py +16 -0
  51. apify-2.3.1/docs/03_concepts/code/01_reboot.py +7 -0
  52. apify-2.3.1/docs/03_concepts/code/01_status_message.py +14 -0
  53. apify-2.3.1/docs/03_concepts/code/02_input.py +9 -0
  54. apify-2.3.1/docs/03_concepts/code/03_dataset_exports.py +31 -0
  55. apify-2.3.1/docs/03_concepts/code/03_dataset_read_write.py +16 -0
  56. apify-2.3.1/docs/03_concepts/code/03_deleting_storages.py +13 -0
  57. apify-2.3.1/docs/03_concepts/code/03_kvs_iterating.py +18 -0
  58. apify-2.3.1/docs/03_concepts/code/03_kvs_public_url.py +11 -0
  59. apify-2.3.1/docs/03_concepts/code/03_kvs_read_write.py +25 -0
  60. apify-2.3.1/docs/03_concepts/code/03_opening_storages.py +16 -0
  61. apify-2.3.1/docs/03_concepts/code/03_rq.py +53 -0
  62. apify-2.3.1/docs/03_concepts/code/04_actor_events.py +38 -0
  63. apify-2.3.1/docs/03_concepts/code/05_apify_proxy.py +12 -0
  64. apify-2.3.1/docs/03_concepts/code/05_apify_proxy_config.py +15 -0
  65. apify-2.3.1/docs/03_concepts/code/05_custom_proxy.py +17 -0
  66. apify-2.3.1/docs/03_concepts/code/05_custom_proxy_function.py +28 -0
  67. apify-2.3.1/docs/03_concepts/code/05_proxy_actor_input.py +16 -0
  68. apify-2.3.1/docs/03_concepts/code/05_proxy_httpx.py +22 -0
  69. apify-2.3.1/docs/03_concepts/code/05_proxy_rotation.py +31 -0
  70. apify-2.3.1/docs/03_concepts/code/06_interacting_call.py +22 -0
  71. apify-2.3.1/docs/03_concepts/code/06_interacting_call_task.py +19 -0
  72. apify-2.3.1/docs/03_concepts/code/06_interacting_metamorph.py +24 -0
  73. apify-2.3.1/docs/03_concepts/code/06_interacting_start.py +13 -0
  74. apify-2.3.1/docs/03_concepts/code/07_webhook.py +16 -0
  75. apify-2.3.1/docs/03_concepts/code/07_webhook_preventing.py +17 -0
  76. apify-2.3.1/docs/03_concepts/code/08_actor_client.py +11 -0
  77. apify-2.3.1/docs/03_concepts/code/08_actor_new_client.py +14 -0
  78. apify-2.3.1/docs/03_concepts/code/09_webserver.py +49 -0
  79. apify-2.3.1/docs/03_concepts/code/10_log_config.py +12 -0
  80. apify-2.3.1/docs/03_concepts/code/10_logger_usage.py +23 -0
  81. apify-2.3.1/docs/03_concepts/code/11_config.py +16 -0
  82. apify-2.3.1/docs/04_upgrading/upgrading_to_v2.md +48 -0
  83. apify-2.3.1/docs/pyproject.toml +9 -0
  84. {apify-2.3.0b3 → apify-2.3.1}/pyproject.toml +52 -52
  85. apify-2.3.1/renovate.json +25 -0
  86. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_actor.py +55 -3
  87. apify-2.3.1/src/apify/_charging.py +318 -0
  88. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_configuration.py +10 -1
  89. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_models.py +59 -2
  90. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_utils.py +1 -1
  91. apify-2.3.1/src/apify/py.typed +0 -0
  92. apify-2.3.1/src/apify/scrapy/middlewares/py.typed +0 -0
  93. apify-2.3.1/src/apify/scrapy/pipelines/py.typed +0 -0
  94. apify-2.3.1/src/apify/scrapy/py.typed +0 -0
  95. apify-2.3.1/src/apify/storages/py.typed +0 -0
  96. apify-2.3.1/tests/integration/README.md +128 -0
  97. apify-2.3.1/tests/integration/__init__.py +0 -0
  98. apify-2.3.1/tests/integration/_utils.py +9 -0
  99. apify-2.3.1/tests/integration/actor_source_base/Dockerfile +15 -0
  100. apify-2.3.1/tests/integration/actor_source_base/requirements.txt +2 -0
  101. apify-2.3.1/tests/integration/actor_source_base/src/__init__.py +0 -0
  102. apify-2.3.1/tests/integration/actor_source_base/src/__main__.py +20 -0
  103. apify-2.3.1/tests/integration/actor_source_base/src/main.py +8 -0
  104. apify-2.3.1/tests/integration/conftest.py +415 -0
  105. apify-2.3.1/tests/integration/test_actor_api_helpers.py +470 -0
  106. apify-2.3.1/tests/integration/test_actor_charge.py +116 -0
  107. apify-2.3.1/tests/integration/test_actor_create_proxy_configuration.py +70 -0
  108. apify-2.3.1/tests/integration/test_actor_dataset.py +146 -0
  109. apify-2.3.1/tests/integration/test_actor_events.py +106 -0
  110. apify-2.3.1/tests/integration/test_actor_key_value_store.py +221 -0
  111. apify-2.3.1/tests/integration/test_actor_lifecycle.py +119 -0
  112. apify-2.3.1/tests/integration/test_actor_log.py +87 -0
  113. apify-2.3.1/tests/integration/test_actor_request_queue.py +88 -0
  114. apify-2.3.1/tests/integration/test_actor_scrapy.py +48 -0
  115. apify-2.3.1/tests/integration/test_fixtures.py +100 -0
  116. apify-2.3.1/tests/integration/test_request_queue.py +113 -0
  117. apify-2.3.1/tests/unit/__init__.py +0 -0
  118. apify-2.3.1/tests/unit/actor/__init__.py +0 -0
  119. apify-2.3.1/tests/unit/actor/test_actor_create_proxy_configuration.py +143 -0
  120. apify-2.3.1/tests/unit/actor/test_actor_dataset.py +64 -0
  121. apify-2.3.1/tests/unit/actor/test_actor_env_helpers.py +157 -0
  122. apify-2.3.1/tests/unit/actor/test_actor_helpers.py +176 -0
  123. apify-2.3.1/tests/unit/actor/test_actor_key_value_store.py +94 -0
  124. apify-2.3.1/tests/unit/actor/test_actor_lifecycle.py +207 -0
  125. apify-2.3.1/tests/unit/actor/test_actor_log.py +93 -0
  126. apify-2.3.1/tests/unit/actor/test_actor_non_default_instance.py +19 -0
  127. apify-2.3.1/tests/unit/actor/test_actor_request_queue.py +29 -0
  128. apify-2.3.1/tests/unit/actor/test_request_list.py +228 -0
  129. apify-2.3.1/tests/unit/conftest.py +207 -0
  130. apify-2.3.1/tests/unit/scrapy/__init__.py +0 -0
  131. apify-2.3.1/tests/unit/scrapy/middlewares/__init__.py +0 -0
  132. apify-2.3.1/tests/unit/scrapy/middlewares/test_apify_proxy.py +154 -0
  133. apify-2.3.1/tests/unit/scrapy/pipelines/__init__.py +0 -0
  134. apify-2.3.1/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +87 -0
  135. apify-2.3.1/tests/unit/scrapy/requests/__init__.py +0 -0
  136. apify-2.3.1/tests/unit/scrapy/requests/test_to_apify_request.py +94 -0
  137. apify-2.3.1/tests/unit/scrapy/requests/test_to_scrapy_request.py +130 -0
  138. apify-2.3.1/tests/unit/scrapy/utils/__init__.py +0 -0
  139. apify-2.3.1/tests/unit/scrapy/utils/test_apply_apify_settings.py +59 -0
  140. apify-2.3.1/tests/unit/scrapy/utils/test_get_basic_auth_header.py +27 -0
  141. apify-2.3.1/tests/unit/test_crypto.py +107 -0
  142. apify-2.3.1/tests/unit/test_platform_event_manager.py +204 -0
  143. apify-2.3.1/tests/unit/test_proxy_configuration.py +545 -0
  144. apify-2.3.1/uv.lock +2950 -0
  145. apify-2.3.1/website/.eslintrc.json +27 -0
  146. apify-2.3.1/website/babel.config.js +3 -0
  147. apify-2.3.1/website/build_api_reference.sh +4 -0
  148. apify-2.3.1/website/docusaurus.config.js +141 -0
  149. apify-2.3.1/website/generate_module_shortcuts.py +59 -0
  150. apify-2.3.1/website/package-lock.json +23741 -0
  151. apify-2.3.1/website/package.json +53 -0
  152. apify-2.3.1/website/sidebars.js +52 -0
  153. apify-2.3.1/website/src/css/custom.css +12 -0
  154. apify-2.3.1/website/src/pages/home_page_example.py +14 -0
  155. apify-2.3.1/website/src/pages/index.js +81 -0
  156. apify-2.3.1/website/src/pages/index.module.css +226 -0
  157. apify-2.3.1/website/static/.nojekyll +0 -0
  158. apify-2.3.1/website/static/img/docs-og.png +0 -0
  159. apify-2.3.1/website/tools/docs-prettier.config.js +12 -0
  160. apify-2.3.1/website/tools/utils/externalLink.js +40 -0
  161. apify-2.3.0b3/PKG-INFO +0 -213
  162. {apify-2.3.0b3 → apify-2.3.1}/LICENSE +0 -0
  163. {apify-2.3.0b3 → apify-2.3.1}/README.md +0 -0
  164. /apify-2.3.0b3/src/apify/apify_storage_client/py.typed → /apify-2.3.1/docs/01_overview/code/actor_structure/__init__.py +0 -0
  165. {apify-2.3.0b3/src/apify → apify-2.3.1/docs/01_overview/code/actor_structure}/py.typed +0 -0
  166. /apify-2.3.0b3/src/apify/scrapy/middlewares/py.typed → /apify-2.3.1/docs/02_guides/code/scrapy_project/src/__init__.py +0 -0
  167. {apify-2.3.0b3/src/apify/scrapy/pipelines → apify-2.3.1/docs/02_guides/code/scrapy_project/src}/py.typed +0 -0
  168. {apify-2.3.0b3/src/apify/scrapy → apify-2.3.1/docs/02_guides/code/scrapy_project/src/spiders}/py.typed +0 -0
  169. {apify-2.3.0b3 → apify-2.3.1}/src/apify/__init__.py +0 -0
  170. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_consts.py +0 -0
  171. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_crypto.py +0 -0
  172. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_platform_event_manager.py +0 -0
  173. {apify-2.3.0b3 → apify-2.3.1}/src/apify/_proxy_configuration.py +0 -0
  174. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/__init__.py +0 -0
  175. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_apify_storage_client.py +0 -0
  176. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_dataset_client.py +0 -0
  177. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_dataset_collection_client.py +0 -0
  178. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_key_value_store_client.py +0 -0
  179. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_key_value_store_collection_client.py +0 -0
  180. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_request_queue_client.py +0 -0
  181. {apify-2.3.0b3 → apify-2.3.1}/src/apify/apify_storage_client/_request_queue_collection_client.py +0 -0
  182. {apify-2.3.0b3/src/apify/storages → apify-2.3.1/src/apify/apify_storage_client}/py.typed +0 -0
  183. {apify-2.3.0b3 → apify-2.3.1}/src/apify/log.py +0 -0
  184. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/__init__.py +0 -0
  185. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/_actor_runner.py +0 -0
  186. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/_async_thread.py +0 -0
  187. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/_logging_config.py +0 -0
  188. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/middlewares/__init__.py +0 -0
  189. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
  190. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/pipelines/__init__.py +0 -0
  191. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
  192. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/requests.py +0 -0
  193. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/scheduler.py +0 -0
  194. {apify-2.3.0b3 → apify-2.3.1}/src/apify/scrapy/utils.py +0 -0
  195. {apify-2.3.0b3 → apify-2.3.1}/src/apify/storages/__init__.py +0 -0
  196. {apify-2.3.0b3 → apify-2.3.1}/src/apify/storages/_request_list.py +0 -0
@@ -0,0 +1,15 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 4
6
+ charset = utf-8
7
+ trim_trailing_whitespace = true
8
+ insert_final_newline = true
9
+ end_of_line = lf
10
+
11
+ [Makefile]
12
+ indent_style = tab
13
+
14
+ [{*.yaml, *.yml}]
15
+ indent_size = 2
@@ -0,0 +1,4 @@
1
+ # Documentation codeowner
2
+
3
+ /docs/*.md @TC-MO
4
+ /docs/*.mdx @TC-MO
@@ -0,0 +1,85 @@
1
+ name: Build and deploy docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ workflow_dispatch:
8
+
9
+ env:
10
+ NODE_VERSION: 22
11
+ PYTHON_VERSION: 3.13
12
+
13
+ jobs:
14
+ build_and_deploy_docs:
15
+ environment:
16
+ name: github-pages
17
+ permissions:
18
+ contents: write
19
+ pages: write
20
+ id-token: write
21
+ runs-on: ubuntu-latest
22
+
23
+ steps:
24
+ - name: Checkout repository
25
+ uses: actions/checkout@v4
26
+ with:
27
+ token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
28
+
29
+ - name: Set up Node
30
+ uses: actions/setup-node@v4
31
+ with:
32
+ node-version: ${{ env.NODE_VERSION }}
33
+ cache: npm
34
+ cache-dependency-path: website/package-lock.json
35
+
36
+ - name: Install Node dependencies
37
+ run: |
38
+ npm install
39
+ npm update @apify/docs-theme
40
+ working-directory: ./website
41
+
42
+ # We do this as early as possible to prevent conflicts if someone else would push something in the meantime
43
+ - name: Commit the updated package.json and lockfile
44
+ run: |
45
+ git config user.name 'GitHub Actions'
46
+ git config user.email 'github-actions[bot]@users.noreply.github.com'
47
+ git add website/package.json
48
+ git add website/package-lock.json
49
+ git diff-index --quiet HEAD || git commit -m 'chore: Automatic docs theme update [skip ci]' || true
50
+ git push
51
+
52
+ - name: Set up Python
53
+ uses: actions/setup-python@v5
54
+ with:
55
+ python-version: ${{ env.PYTHON_VERSION }}
56
+
57
+ - name: Set up uv package manager
58
+ uses: astral-sh/setup-uv@v5
59
+ with:
60
+ python-version: ${{ env.PYTHON_VERSION }}
61
+
62
+ - name: Install Python dependencies
63
+ run: make install-dev
64
+
65
+ - name: Build generated API reference
66
+ run: make build-api-reference
67
+
68
+ - name: Build Docusaurus docs
69
+ run: make build-docs
70
+
71
+ - name: Set up GitHub Pages
72
+ uses: actions/configure-pages@v5
73
+
74
+ - name: Upload GitHub Pages artifact
75
+ uses: actions/upload-pages-artifact@v3
76
+ with:
77
+ path: ./website/build
78
+
79
+ - name: Deploy artifact to GitHub Pages
80
+ uses: actions/deploy-pages@v4
81
+
82
+ - name: Invalidate CloudFront cache
83
+ run: gh workflow run invalidate.yaml --repo apify/apify-docs-private
84
+ env:
85
+ GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
@@ -0,0 +1,14 @@
1
+ name: Check PR title
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, edited, synchronize]
6
+
7
+ jobs:
8
+ check_pr_title:
9
+ name: Check PR title
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: amannn/action-semantic-pull-request@v5.5.3
13
+ env:
14
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,78 @@
1
+ name: Create a pre-release
2
+
3
+ on:
4
+ # Trigger a beta version release (pre-release) on push to the master branch.
5
+ push:
6
+ branches:
7
+ - master
8
+ tags-ignore:
9
+ - "**" # Ignore all tags to prevent duplicate builds when tags are pushed.
10
+
11
+ # Or it can be triggered manually.
12
+ workflow_dispatch:
13
+
14
+ jobs:
15
+ release_metadata:
16
+ if: "!startsWith(github.event.head_commit.message, 'docs') && !startsWith(github.event.head_commit.message, 'ci') && startsWith(github.repository, 'apify/')"
17
+ name: Prepare release metadata
18
+ runs-on: ubuntu-latest
19
+ outputs:
20
+ version_number: ${{ steps.release_metadata.outputs.version_number }}
21
+ tag_name: ${{ steps.release_metadata.outputs.tag_name }}
22
+ changelog: ${{ steps.release_metadata.outputs.changelog }}
23
+ existing_changelog_path: CHANGELOG.md
24
+ steps:
25
+ - uses: apify/workflows/git-cliff-release@main
26
+ id: release_metadata
27
+ name: Prepare release metadata
28
+ with:
29
+ release_type: prerelease
30
+
31
+ lint_check:
32
+ name: Lint check
33
+ uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
34
+
35
+ type_check:
36
+ name: Type check
37
+ uses: apify/workflows/.github/workflows/python_type_check.yaml@main
38
+
39
+ unit_tests:
40
+ name: Unit tests
41
+ uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
42
+
43
+ integration_tests:
44
+ name: Integration tests
45
+ uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
46
+ secrets: inherit
47
+
48
+ update_changelog:
49
+ name: Update changelog
50
+ needs: [release_metadata, lint_check, type_check, unit_tests, integration_tests]
51
+ uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
52
+ with:
53
+ version_number: ${{ needs.release_metadata.outputs.version_number }}
54
+ changelog: ${{ needs.release_metadata.outputs.changelog }}
55
+ secrets:
56
+ APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
57
+
58
+ publish_to_pypi:
59
+ name: Publish to PyPI
60
+ needs: [release_metadata, update_changelog]
61
+ runs-on: ubuntu-latest
62
+ permissions:
63
+ contents: write
64
+ id-token: write # Required for OIDC authentication.
65
+ environment:
66
+ name: pypi
67
+ url: https://pypi.org/project/apify
68
+ steps:
69
+ - name: Prepare distribution
70
+ uses: apify/workflows/prepare-pypi-distribution@main
71
+ with:
72
+ package_name: apify
73
+ is_prerelease: "yes"
74
+ version_number: ${{ needs.release_metadata.outputs.version_number }}
75
+ ref: ${{ needs.update_changelog.changelog_commitish }}
76
+ # Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
77
+ - name: Publish package to PyPI
78
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,119 @@
1
+ name: Create a release
2
+
3
+ on:
4
+ # Trigger a stable version release via GitHub's UI, with the ability to specify the type of release.
5
+ workflow_dispatch:
6
+ inputs:
7
+ release_type:
8
+ description: Release type
9
+ required: true
10
+ type: choice
11
+ default: auto
12
+ options:
13
+ - auto
14
+ - custom
15
+ - patch
16
+ - minor
17
+ - major
18
+ custom_version:
19
+ description: The custom version to bump to (only for "custom" type)
20
+ required: false
21
+ type: string
22
+ default: ""
23
+
24
+ jobs:
25
+ release_metadata:
26
+ name: Prepare release metadata
27
+ runs-on: ubuntu-latest
28
+ outputs:
29
+ version_number: ${{ steps.release_metadata.outputs.version_number }}
30
+ tag_name: ${{ steps.release_metadata.outputs.tag_name }}
31
+ changelog: ${{ steps.release_metadata.outputs.changelog }}
32
+ release_notes: ${{ steps.release_metadata.outputs.release_notes }}
33
+ steps:
34
+ - uses: apify/workflows/git-cliff-release@main
35
+ name: Prepare release metadata
36
+ id: release_metadata
37
+ with:
38
+ release_type: ${{ inputs.release_type }}
39
+ custom_version: ${{ inputs.custom_version }}
40
+ existing_changelog_path: CHANGELOG.md
41
+
42
+ lint_check:
43
+ name: Lint check
44
+ uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
45
+
46
+ type_check:
47
+ name: Type check
48
+ uses: apify/workflows/.github/workflows/python_type_check.yaml@main
49
+
50
+ unit_tests:
51
+ name: Unit tests
52
+ uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
53
+
54
+ integration_tests:
55
+ name: Integration tests
56
+ uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
57
+ secrets: inherit
58
+
59
+ update_changelog:
60
+ name: Update changelog
61
+ needs: [release_metadata, lint_check, type_check, unit_tests, integration_tests]
62
+ uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
63
+ with:
64
+ version_number: ${{ needs.release_metadata.outputs.version_number }}
65
+ changelog: ${{ needs.release_metadata.outputs.changelog }}
66
+ secrets:
67
+ APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
68
+
69
+ create_github_release:
70
+ name: Create github release
71
+ needs: [release_metadata, update_changelog]
72
+ runs-on: ubuntu-latest
73
+ env:
74
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75
+ steps:
76
+ - name: Create release
77
+ uses: softprops/action-gh-release@v2
78
+ with:
79
+ tag_name: ${{ needs.release_metadata.outputs.tag_name }}
80
+ name: ${{ needs.release_metadata.outputs.version_number }}
81
+ target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
82
+ body: ${{ needs.release_metadata.outputs.release_notes }}
83
+
84
+ publish_to_pypi:
85
+ name: Publish to PyPI
86
+ needs: [release_metadata, update_changelog]
87
+ runs-on: ubuntu-latest
88
+ permissions:
89
+ contents: write
90
+ id-token: write # Required for OIDC authentication.
91
+ environment:
92
+ name: pypi
93
+ url: https://pypi.org/project/apify
94
+ steps:
95
+ - name: Prepare distribution
96
+ uses: apify/workflows/prepare-pypi-distribution@main
97
+ with:
98
+ package_name: apify
99
+ is_prerelease: ""
100
+ version_number: ${{ needs.release_metadata.outputs.version_number }}
101
+ ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
102
+ # Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
103
+ - name: Publish package to PyPI
104
+ uses: pypa/gh-action-pypi-publish@release/v1
105
+
106
+ trigger_docker_build:
107
+ name: Trigger Docker image build
108
+ needs: [release_metadata, update_changelog]
109
+ runs-on: ubuntu-latest
110
+ steps:
111
+ - # Trigger building the Python Docker images in apify/apify-actor-docker repo
112
+ name: Trigger Docker image build
113
+ run: |
114
+ gh api -X POST "/repos/apify/apify-actor-docker/dispatches" \
115
+ -F event_type=build-python-images \
116
+ -F client_payload[release_tag]=latest \
117
+ -F client_payload[apify_version]=${{ needs.release_metadata.outputs.version_number }}
118
+ env:
119
+ GH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
@@ -0,0 +1,30 @@
1
+ name: Run code checks
2
+
3
+ on:
4
+ # Trigger code checks on opening a new pull request.
5
+ # Secrets are only made available to the integration tests job, with a manual approval
6
+ # step required for PRs from forks. This prevents their potential exposure.
7
+ pull_request:
8
+
9
+ jobs:
10
+ lint_check:
11
+ name: Lint check
12
+ uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
13
+
14
+ type_check:
15
+ name: Type check
16
+ uses: apify/workflows/.github/workflows/python_type_check.yaml@main
17
+
18
+ unit_tests:
19
+ name: Unit tests
20
+ uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
21
+
22
+ docs_check:
23
+ name: Docs check
24
+ uses: apify/workflows/.github/workflows/python_docs_check.yaml@main
25
+
26
+ integration_tests:
27
+ name: Integration tests
28
+ needs: [lint_check, type_check, unit_tests]
29
+ uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
30
+ secrets: inherit
@@ -0,0 +1,25 @@
1
+ name: Update new issue
2
+
3
+ on:
4
+ issues:
5
+ types:
6
+ - opened
7
+
8
+ jobs:
9
+ label_issues:
10
+ name: Label issues
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ issues: write
14
+
15
+ steps:
16
+ # Add the "t-tooling" label to all new issues
17
+ - uses: actions/github-script@v7
18
+ with:
19
+ script: |
20
+ github.rest.issues.addLabels({
21
+ issue_number: context.issue.number,
22
+ owner: context.repo.owner,
23
+ repo: context.repo.repo,
24
+ labels: ["t-tooling"]
25
+ })
apify-2.3.1/.gitignore ADDED
@@ -0,0 +1,49 @@
1
+ # Cache
2
+ __pycache__
3
+ .mypy_cache
4
+ .pytest_cache
5
+ .ruff_cache
6
+
7
+ # Virtual envs
8
+ .venv
9
+ .direnv
10
+ .envrc
11
+ .python-version
12
+
13
+ # Mise
14
+ mise.toml
15
+ .mise.toml
16
+
17
+ # Egg and build artifacts
18
+ *.egg-info/
19
+ *.egg
20
+ dist/
21
+ build/
22
+
23
+ # Coverage reports
24
+ .coverage*
25
+ htmlcov
26
+
27
+ # IDE, editors
28
+ .vscode
29
+ .idea
30
+ .DS_Store
31
+ .nvim.lua
32
+ Session.vim
33
+
34
+ # Docs
35
+ docs/changelog.md
36
+
37
+ # Website build artifacts, node dependencies
38
+ website/build
39
+ website/node_modules
40
+ website/.yarn
41
+ website/.docusaurus
42
+ website/api-typedoc-generated.json
43
+ website/apify-shared-docspec-dump.jsonl
44
+ website/docspec-dump.jsonl
45
+ website/module_shortcuts.json
46
+ website/typedoc-types*
47
+
48
+ # Default directory for memory storage
49
+ storage/
@@ -0,0 +1,5 @@
1
+ default: true
2
+ line-length:
3
+ line_length: 150
4
+ ul-style: dash
5
+ no-inline-html: false
@@ -0,0 +1,14 @@
1
+ repos:
2
+ - repo: local
3
+ hooks:
4
+ - id: lint-check
5
+ name: Lint check
6
+ entry: make lint
7
+ language: system
8
+ pass_filenames: false
9
+
10
+ - id: type-check
11
+ name: Type check
12
+ entry: make type-check
13
+ language: system
14
+ pass_filenames: false
@@ -0,0 +1,163 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [2.3.1](https://github.com/apify/apify-sdk-python/releases/tag/v2.3.1) (2025-02-25)
6
+
7
+ ### 🐛 Bug Fixes
8
+
9
+ - Allow None value in 'inputBodyLen' in ActorRunStats ([#413](https://github.com/apify/apify-sdk-python/pull/413)) ([1cf37f1](https://github.com/apify/apify-sdk-python/commit/1cf37f13f8db1313ac82276d13200af4aa2bf773)) by [@janbuchar](https://github.com/janbuchar)
10
+
11
+
12
+ ## [2.3.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.3.0) (2025-02-19)
13
+
14
+ ### 🚀 Features
15
+
16
+ - Add `rate_limit_errors` property for `ApifyStorageClient` ([#387](https://github.com/apify/apify-sdk-python/pull/387)) ([89c230a](https://github.com/apify/apify-sdk-python/commit/89c230a21a1a8698159975f97c73a724b9063278)) by [@Mantisus](https://github.com/Mantisus), closes [#318](https://github.com/apify/apify-sdk-python/issues/318)
17
+ - Unify Apify and Scrapy to use single event loop & remove `nest-asyncio` ([#390](https://github.com/apify/apify-sdk-python/pull/390)) ([96949be](https://github.com/apify/apify-sdk-python/commit/96949be4f7687ac9285992d1fb02ac6172307bdb)) by [@vdusek](https://github.com/vdusek), closes [#148](https://github.com/apify/apify-sdk-python/issues/148), [#176](https://github.com/apify/apify-sdk-python/issues/176), [#392](https://github.com/apify/apify-sdk-python/issues/392)
18
+ - Support pay-per-event via `Actor.charge` ([#393](https://github.com/apify/apify-sdk-python/pull/393)) ([78888c4](https://github.com/apify/apify-sdk-python/commit/78888c4d6258211cdbc5fd5b5cbadbf23c39d818)) by [@janbuchar](https://github.com/janbuchar), closes [#374](https://github.com/apify/apify-sdk-python/issues/374)
19
+
20
+ ### 🐛 Bug Fixes
21
+
22
+ - Fix RQ usage in Scrapy scheduler ([#385](https://github.com/apify/apify-sdk-python/pull/385)) ([3363478](https://github.com/apify/apify-sdk-python/commit/3363478dbf6eb35e45c237546fe0df5c104166f6)) by [@vdusek](https://github.com/vdusek)
23
+ - Make sure that Actor instances with non-default configurations are also accessible through the global Actor proxy after initialization ([#402](https://github.com/apify/apify-sdk-python/pull/402)) ([b956a02](https://github.com/apify/apify-sdk-python/commit/b956a02d0ba59e0cfde489cc13ca92d7f8f8c84f)) by [@janbuchar](https://github.com/janbuchar), closes [#397](https://github.com/apify/apify-sdk-python/issues/397)
24
+
25
+
26
+ ## [2.2.1](https://github.com/apify/apify-sdk-python/releases/tag/v2.2.1) (2025-01-17)
27
+
28
+ ### 🐛 Bug Fixes
29
+
30
+ - Better event listener type definitions ([#354](https://github.com/apify/apify-sdk-python/pull/354)) ([52a6dee](https://github.com/apify/apify-sdk-python/commit/52a6dee92cc0cc4fa032dfc8c312545bc5e07206)) by [@janbuchar](https://github.com/janbuchar), closes [#344](https://github.com/apify/apify-sdk-python/issues/344)
31
+
32
+
33
+ ## [2.2.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.2.0) (2025-01-10)
34
+
35
+ ### 🚀 Features
36
+
37
+ - Add new config variables to `Actor.config` ([#351](https://github.com/apify/apify-sdk-python/pull/351)) ([7b6478c](https://github.com/apify/apify-sdk-python/commit/7b6478c3fc239b454f733fbd98348dab7b3a1766)) by [@fnesveda](https://github.com/fnesveda)
38
+ - Upgrade to Crawlee v0.5 ([#355](https://github.com/apify/apify-sdk-python/pull/355)) ([826f4db](https://github.com/apify/apify-sdk-python/commit/826f4dbcc8cfd693d97e40c17faf91d225d7ffaf)) by [@vdusek](https://github.com/vdusek)
39
+
40
+ ### 🐛 Bug Fixes
41
+
42
+ - Better error message when attempting to use force_cloud without an Apify token ([#356](https://github.com/apify/apify-sdk-python/pull/356)) ([33245ce](https://github.com/apify/apify-sdk-python/commit/33245ceddb1fa0ed39548181fb57fb3e6b98f954)) by [@janbuchar](https://github.com/janbuchar)
43
+ - Allow calling `Actor.reboot()` from migrating handler, align reboot behavior with JS SDK ([#361](https://github.com/apify/apify-sdk-python/pull/361)) ([7ba0221](https://github.com/apify/apify-sdk-python/commit/7ba022121fe7b65470fec901295f74cebce72610)) by [@fnesveda](https://github.com/fnesveda)
44
+
45
+
46
+ ## [2.1.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.1.0) (2024-12-03)
47
+
48
+ ### 🚀 Features
49
+
50
+ - Handle request list user input ([#326](https://github.com/apify/apify-sdk-python/pull/326)) ([c14fb9a](https://github.com/apify/apify-sdk-python/commit/c14fb9a9527c8b699e32ed49d39ce0a69447f87c)) by [@Pijukatel](https://github.com/Pijukatel), closes [#310](https://github.com/apify/apify-sdk-python/issues/310)
51
+
52
+ ### 🐛 Bug Fixes
53
+
54
+ - Add upper bound of HTTPX version ([#347](https://github.com/apify/apify-sdk-python/pull/347)) ([e86dbce](https://github.com/apify/apify-sdk-python/commit/e86dbce69f6978cf2c15910213655e5d80f62a23)) by [@vdusek](https://github.com/vdusek)
55
+
56
+
57
+ ## [2.0.2](https://github.com/apify/apify-sdk-python/releases/tag/v2.0.2) (2024-11-12)
58
+
59
+ ### 🐛 Bug Fixes
60
+
61
+ - Fix CPU usage calculation ([#315](https://github.com/apify/apify-sdk-python/pull/315)) ([0521d91](https://github.com/apify/apify-sdk-python/commit/0521d911afbb8029ad29949f69c4f19166a01fc0)) by [@janbuchar](https://github.com/janbuchar)
62
+ - Set version constraint of the `websockets` dependency to <14.0.0 ([#322](https://github.com/apify/apify-sdk-python/pull/322)) ([15ad055](https://github.com/apify/apify-sdk-python/commit/15ad0550e7a5508adff3eb35511248c611a0f595)) by [@Pijukatel](https://github.com/Pijukatel)
63
+ - Fix Dataset.iter_items for apify_storage ([#321](https://github.com/apify/apify-sdk-python/pull/321)) ([2db1beb](https://github.com/apify/apify-sdk-python/commit/2db1beb2d56a7e7954cd76023d1273c7546d7cbf)) by [@Pijukatel](https://github.com/Pijukatel), closes [#320](https://github.com/apify/apify-sdk-python/issues/320)
64
+
65
+
66
+ ## [2.0.1](https://github.com/apify/apify-sdk-python/releases/tag/v2.0.1) (2024-10-25)
67
+
68
+ ### 🚀 Features
69
+
70
+ - Add standby URL, change default standby port ([#287](https://github.com/apify/apify-sdk-python/pull/287)) ([8cd2f2c](https://github.com/apify/apify-sdk-python/commit/8cd2f2cb9d1191dbc93bf1b8a2d70189881c64ad)) by [@jirimoravcik](https://github.com/jirimoravcik)
71
+ - Add crawlee version to system info print ([#304](https://github.com/apify/apify-sdk-python/pull/304)) ([c28f38f](https://github.com/apify/apify-sdk-python/commit/c28f38f4e205515e1b5d1ce97a2072be3a09d338)) by [@vdusek](https://github.com/vdusek)
72
+
73
+ ### 🐛 Bug Fixes
74
+
75
+ - Adjust tests of scrapy user data ([#284](https://github.com/apify/apify-sdk-python/pull/284)) ([26ffb15](https://github.com/apify/apify-sdk-python/commit/26ffb15797effcfad1a25c840dd3d17663e26ea3)) by [@janbuchar](https://github.com/janbuchar)
76
+ - Use HttpHeaders type in Scrapy integration ([#289](https://github.com/apify/apify-sdk-python/pull/289)) ([3e33e91](https://github.com/apify/apify-sdk-python/commit/3e33e9147bfd60554b9da41b032c0451f91ba27b)) by [@vdusek](https://github.com/vdusek)
77
+ - Allow empty timeout_at env variable ([#303](https://github.com/apify/apify-sdk-python/pull/303)) ([b67ec98](https://github.com/apify/apify-sdk-python/commit/b67ec989dfcc21756cc976c52edc25735a3f0501)) by [@janbuchar](https://github.com/janbuchar), closes [#596](https://github.com/apify/apify-sdk-python/issues/596)
78
+
79
+
80
+ ## [2.0.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.0.0) (2024-09-10)
81
+
82
+ ### 🚀 Features
83
+
84
+ - Better Actor API typing ([#256](https://github.com/apify/apify-sdk-python/pull/256)) ([abb87e7](https://github.com/apify/apify-sdk-python/commit/abb87e7f3c272f88a9a76292d8394fe93b98428a)) by [@janbuchar](https://github.com/janbuchar), closes [#243](https://github.com/apify/apify-sdk-python/issues/243)
85
+ - Expose Request from Crawlee ([#266](https://github.com/apify/apify-sdk-python/pull/266)) ([1f01278](https://github.com/apify/apify-sdk-python/commit/1f01278c77f261500bc74efd700c0583ac45fd82)) by [@vdusek](https://github.com/vdusek)
86
+ - Automatically configure logging ([#271](https://github.com/apify/apify-sdk-python/pull/271)) ([1906bb2](https://github.com/apify/apify-sdk-python/commit/1906bb216b8a3f1c2ad740c551ee019c2ba0696f)) by [@janbuchar](https://github.com/janbuchar)
87
+
88
+ ### 🐛 Bug Fixes
89
+
90
+ - Make apify.log public again ([#249](https://github.com/apify/apify-sdk-python/pull/249)) ([22677f5](https://github.com/apify/apify-sdk-python/commit/22677f57b2aff6c9bddbee305e5a62e39bbf5915)) by [@janbuchar](https://github.com/janbuchar)
91
+ - Dataset list response handling ([#257](https://github.com/apify/apify-sdk-python/pull/257)) ([0ea57d7](https://github.com/apify/apify-sdk-python/commit/0ea57d7c4788bff31f215c447c1881e56d6508bb)) by [@janbuchar](https://github.com/janbuchar)
92
+ - Ignore deprecated platform events ([#258](https://github.com/apify/apify-sdk-python/pull/258)) ([ed5ab3b](https://github.com/apify/apify-sdk-python/commit/ed5ab3b80c851a817aa87806c39cd8ef3e86fde5)) by [@janbuchar](https://github.com/janbuchar)
93
+ - Possible infinity loop in Apify-Scrapy proxy middleware ([#259](https://github.com/apify/apify-sdk-python/pull/259)) ([8647a94](https://github.com/apify/apify-sdk-python/commit/8647a94289423528f2940d9f7174f81682fbb407)) by [@vdusek](https://github.com/vdusek)
94
+ - Hotfix for batch_add_requests batch size limit ([#261](https://github.com/apify/apify-sdk-python/pull/261)) ([61d7a39](https://github.com/apify/apify-sdk-python/commit/61d7a392d182a752c91193170dca351f4cb0fbf3)) by [@janbuchar](https://github.com/janbuchar)
95
+
96
+ ### Refactor
97
+
98
+ - [**breaking**] Preparation for v2 release ([#210](https://github.com/apify/apify-sdk-python/pull/210)) ([2f9dcc5](https://github.com/apify/apify-sdk-python/commit/2f9dcc559414f31e3f4fc87e72417a36494b9c84)) by [@janbuchar](https://github.com/janbuchar), closes [#135](https://github.com/apify/apify-sdk-python/issues/135), [#137](https://github.com/apify/apify-sdk-python/issues/137), [#138](https://github.com/apify/apify-sdk-python/issues/138), [#147](https://github.com/apify/apify-sdk-python/issues/147), [#149](https://github.com/apify/apify-sdk-python/issues/149), [#237](https://github.com/apify/apify-sdk-python/issues/237)
99
+
100
+
101
+ ## [1.7.2](https://github.com/apify/apify-sdk-python/releases/tag/v1.7.2) (2024-07-08)
102
+
103
+ ### 🚀 Features
104
+
105
+ - Add actor standby port ([#220](https://github.com/apify/apify-sdk-python/pull/220)) ([6d0d87d](https://github.com/apify/apify-sdk-python/commit/6d0d87dcaedaf42d8eeb7d23c56f6b102434cbcb)) by [@jirimoravcik](https://github.com/jirimoravcik)
106
+
107
+
108
+ ## [1.7.1](https://github.com/apify/apify-sdk-python/releases/tag/v1.7.1) (2024-05-23)
109
+
110
+ ### 🐛 Bug Fixes
111
+
112
+ - Set a timeout for Actor cleanup ([#206](https://github.com/apify/apify-sdk-python/pull/206)) ([cfed57d](https://github.com/apify/apify-sdk-python/commit/cfed57d6cff4fd15fe4b25578573190d53b9942c)) by [@janbuchar](https://github.com/janbuchar), closes [#200](https://github.com/apify/apify-sdk-python/issues/200)
113
+
114
+
115
+ ## [1.1.2](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.2) (2023-08-02)
116
+
117
+ ### 🚀 Features
118
+
119
+ - Use Actor env vars ([#105](https://github.com/apify/apify-sdk-python/pull/105)) ([f0ba351](https://github.com/apify/apify-sdk-python/commit/f0ba35103eb9efbf39ea394d390430c849bf127c)) by [@jirimoravcik](https://github.com/jirimoravcik)
120
+
121
+
122
+ ## [1.1.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.0) (2023-05-23)
123
+
124
+ ### 🚀 Features
125
+
126
+ - Use test user token from organisation secrets ([#90](https://github.com/apify/apify-sdk-python/pull/90)) ([7826a38](https://github.com/apify/apify-sdk-python/commit/7826a382d7a3c0a1531b3a7bb73369e2801e6fa0)) by [@drobnikj](https://github.com/drobnikj)
127
+
128
+
129
+ ## [0.2.0](https://github.com/apify/apify-sdk-python/releases/tag/v0.2.0) (2023-03-06)
130
+
131
+ ### 🚀 Features
132
+
133
+ - Add chunking mechanism to push_data, cleanup TODOs ([#67](https://github.com/apify/apify-sdk-python/pull/67)) ([5f38d51](https://github.com/apify/apify-sdk-python/commit/5f38d51a57912071439ac88405311d2cb7044190)) by [@jirimoravcik](https://github.com/jirimoravcik)
134
+
135
+
136
+ ## [0.1.0](https://github.com/apify/apify-sdk-python/releases/tag/v0.1.0) (2023-02-09)
137
+
138
+ ### 🚀 Features
139
+
140
+ - Implement MemoryStorage and local storage clients ([#15](https://github.com/apify/apify-sdk-python/pull/15)) ([b7c9886](https://github.com/apify/apify-sdk-python/commit/b7c98869bdc749feadc7b5a0d105fce041506011)) by [@jirimoravcik](https://github.com/jirimoravcik)
141
+ - Implement Dataset, KeyValueStore classes, create storage management logic ([#21](https://github.com/apify/apify-sdk-python/pull/21)) ([d1b357c](https://github.com/apify/apify-sdk-python/commit/d1b357cd02f7357137fd9413b105a8ac48b1796b)) by [@jirimoravcik](https://github.com/jirimoravcik)
142
+ - Implement RequestQueue class ([#25](https://github.com/apify/apify-sdk-python/pull/25)) ([c6cad34](https://github.com/apify/apify-sdk-python/commit/c6cad3442d1a9a37c3eb3991cf45daed03e74ff5)) by [@jirimoravcik](https://github.com/jirimoravcik)
143
+ - Add test for get_env and is_at_home ([#29](https://github.com/apify/apify-sdk-python/pull/29)) ([cc45afb](https://github.com/apify/apify-sdk-python/commit/cc45afbf848db3626054c599cb3a5a2972a48748)) by [@drobnikj](https://github.com/drobnikj)
144
+ - Updating pull request toolkit config [INTERNAL] ([387143c](https://github.com/apify/apify-sdk-python/commit/387143ccf2c32a99c95e9931e5649e558d35daeb)) by [@mtrunkat](https://github.com/mtrunkat)
145
+ - Add documentation for `StorageManager` and `StorageClientManager`, open_* methods in `Actor` ([#34](https://github.com/apify/apify-sdk-python/pull/34)) ([3f6b942](https://github.com/apify/apify-sdk-python/commit/3f6b9426dc03fea40d80af2e4c8f04ecf2620e8a)) by [@jirimoravcik](https://github.com/jirimoravcik)
146
+ - Add tests for actor lifecycle ([#35](https://github.com/apify/apify-sdk-python/pull/35)) ([4674728](https://github.com/apify/apify-sdk-python/commit/4674728905be5076283ff3795332866e8bef6ee8)) by [@drobnikj](https://github.com/drobnikj)
147
+ - Add docs for `Dataset`, `KeyValueStore`, and `RequestQueue` ([#37](https://github.com/apify/apify-sdk-python/pull/37)) ([174548e](https://github.com/apify/apify-sdk-python/commit/174548e952b47ee519d1a05c0821a2c42c2fddf6)) by [@jirimoravcik](https://github.com/jirimoravcik)
148
+ - Docs string for memory storage clients ([#31](https://github.com/apify/apify-sdk-python/pull/31)) ([8f55d46](https://github.com/apify/apify-sdk-python/commit/8f55d463394307b004193efc43b67b44d030f6de)) by [@drobnikj](https://github.com/drobnikj)
149
+ - Add test for storage actor methods ([#39](https://github.com/apify/apify-sdk-python/pull/39)) ([b89bbcf](https://github.com/apify/apify-sdk-python/commit/b89bbcfdcae4f436a68e92f1f60628aea1036dde)) by [@drobnikj](https://github.com/drobnikj)
150
+ - Various fixes and improvements ([#41](https://github.com/apify/apify-sdk-python/pull/41)) ([5bae238](https://github.com/apify/apify-sdk-python/commit/5bae238821b3b63c73d0cbadf4b478511cb045d2)) by [@jirimoravcik](https://github.com/jirimoravcik)
151
+ - Add the rest unit tests for actor ([#40](https://github.com/apify/apify-sdk-python/pull/40)) ([72d92ea](https://github.com/apify/apify-sdk-python/commit/72d92ea080670ceecc234c149058d2ebe763e3a8)) by [@drobnikj](https://github.com/drobnikj)
152
+ - Decrypt input secrets if there are some ([#45](https://github.com/apify/apify-sdk-python/pull/45)) ([6eb1630](https://github.com/apify/apify-sdk-python/commit/6eb163077341218a3f9dcf566986d7464f6ab09e)) by [@drobnikj](https://github.com/drobnikj)
153
+ - Add a few integration tests ([#48](https://github.com/apify/apify-sdk-python/pull/48)) ([1843f48](https://github.com/apify/apify-sdk-python/commit/1843f48845e724e1c2682b8d09a6b5c48c57d9ec)) by [@drobnikj](https://github.com/drobnikj)
154
+ - Add integration tests for storages, proxy configuration ([#49](https://github.com/apify/apify-sdk-python/pull/49)) ([fd0566e](https://github.com/apify/apify-sdk-python/commit/fd0566ed3b8c85c7884f8bba3cf7394215fabed0)) by [@jirimoravcik](https://github.com/jirimoravcik)
155
+ - Unify datetime handling, remove utcnow() ([#52](https://github.com/apify/apify-sdk-python/pull/52)) ([09dd8ac](https://github.com/apify/apify-sdk-python/commit/09dd8ac9dc26afee777f497ed1d2733af1eef848)) by [@jirimoravcik](https://github.com/jirimoravcik)
156
+ - Separate ID and name params for `Actor.open_xxx` ([#56](https://github.com/apify/apify-sdk-python/pull/56)) ([a1e962e](https://github.com/apify/apify-sdk-python/commit/a1e962ebe74384baabb96fdbb4f0e0ed2f92e454)) by [@jirimoravcik](https://github.com/jirimoravcik)
157
+
158
+ ### 🐛 Bug Fixes
159
+
160
+ - Key error for storage name ([#28](https://github.com/apify/apify-sdk-python/pull/28)) ([83b30a9](https://github.com/apify/apify-sdk-python/commit/83b30a90df4d3b173302f1c6006b346091fced60)) by [@drobnikj](https://github.com/drobnikj)
161
+
162
+
163
+ <!-- generated by git-cliff -->