apify 2.6.1b6__tar.gz → 2.6.1b7__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 (210) hide show
  1. {apify-2.6.1b6 → apify-2.6.1b7}/.github/workflows/pre_release.yaml +8 -0
  2. {apify-2.6.1b6 → apify-2.6.1b7}/.github/workflows/release.yaml +8 -0
  3. {apify-2.6.1b6 → apify-2.6.1b7}/.github/workflows/run_code_checks.yaml +9 -1
  4. {apify-2.6.1b6 → apify-2.6.1b7}/CONTRIBUTING.md +1 -1
  5. {apify-2.6.1b6 → apify-2.6.1b7}/PKG-INFO +2 -3
  6. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/02_running_actors_locally.mdx +1 -1
  7. {apify-2.6.1b6 → apify-2.6.1b7}/pyproject.toml +4 -5
  8. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_actor.py +2 -1
  9. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_charging.py +2 -3
  10. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_models.py +1 -1
  11. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_platform_event_manager.py +5 -20
  12. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_utils.py +4 -1
  13. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/storages/_request_list.py +2 -2
  14. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/conftest.py +2 -2
  15. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_events.py +3 -1
  16. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_lifecycle.py +3 -1
  17. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/conftest.py +3 -22
  18. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/test_platform_event_manager.py +4 -1
  19. {apify-2.6.1b6 → apify-2.6.1b7}/uv.lock +5 -276
  20. {apify-2.6.1b6 → apify-2.6.1b7}/.editorconfig +0 -0
  21. {apify-2.6.1b6 → apify-2.6.1b7}/.github/CODEOWNERS +0 -0
  22. {apify-2.6.1b6 → apify-2.6.1b7}/.github/workflows/build_and_deploy_docs.yaml +0 -0
  23. {apify-2.6.1b6 → apify-2.6.1b7}/.github/workflows/check_pr_title.yaml +0 -0
  24. {apify-2.6.1b6 → apify-2.6.1b7}/.github/workflows/update_new_issue.yaml +0 -0
  25. {apify-2.6.1b6 → apify-2.6.1b7}/.gitignore +0 -0
  26. {apify-2.6.1b6 → apify-2.6.1b7}/.markdownlint.yaml +0 -0
  27. {apify-2.6.1b6 → apify-2.6.1b7}/.pre-commit-config.yaml +0 -0
  28. {apify-2.6.1b6 → apify-2.6.1b7}/CHANGELOG.md +0 -0
  29. {apify-2.6.1b6 → apify-2.6.1b7}/LICENSE +0 -0
  30. {apify-2.6.1b6 → apify-2.6.1b7}/Makefile +0 -0
  31. {apify-2.6.1b6 → apify-2.6.1b7}/README.md +0 -0
  32. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/01_introduction.mdx +0 -0
  33. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/03_actor_structure.mdx +0 -0
  34. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/code/01_introduction.py +0 -0
  35. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/code/actor_structure/__init__.py +0 -0
  36. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/code/actor_structure/__main__.py +0 -0
  37. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/code/actor_structure/main.py +0 -0
  38. {apify-2.6.1b6 → apify-2.6.1b7}/docs/01_overview/code/actor_structure/py.typed +0 -0
  39. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/01_beautifulsoup_httpx.mdx +0 -0
  40. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/02_crawlee.mdx +0 -0
  41. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/03_playwright.mdx +0 -0
  42. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/04_selenium.mdx +0 -0
  43. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/05_scrapy.mdx +0 -0
  44. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/01_beautifulsoup_httpx.py +0 -0
  45. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/02_crawlee_beautifulsoup.py +0 -0
  46. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/02_crawlee_playwright.py +0 -0
  47. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/03_playwright.py +0 -0
  48. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/04_selenium.py +0 -0
  49. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/__init__.py +0 -0
  50. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/__main__.py +0 -0
  51. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/items.py +0 -0
  52. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/main.py +0 -0
  53. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/py.typed +0 -0
  54. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/settings.py +0 -0
  55. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
  56. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/spiders/py.typed +0 -0
  57. {apify-2.6.1b6 → apify-2.6.1b7}/docs/02_guides/code/scrapy_project/src/spiders/title.py +0 -0
  58. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/01_actor_lifecycle.mdx +0 -0
  59. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/02_actor_input.mdx +0 -0
  60. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/03_storages.mdx +0 -0
  61. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/04_actor_events.mdx +0 -0
  62. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/05_proxy_management.mdx +0 -0
  63. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/06_interacting_with_other_actors.mdx +0 -0
  64. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/07_webhooks.mdx +0 -0
  65. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/08_access_apify_api.mdx +0 -0
  66. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/09_running_webserver.mdx +0 -0
  67. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/10_logging.mdx +0 -0
  68. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/11_configuration.mdx +0 -0
  69. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/12_pay_per_event.mdx +0 -0
  70. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/01_context_manager.py +0 -0
  71. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/01_init_exit.py +0 -0
  72. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/01_reboot.py +0 -0
  73. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/01_status_message.py +0 -0
  74. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/02_input.py +0 -0
  75. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_dataset_exports.py +0 -0
  76. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_dataset_read_write.py +0 -0
  77. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_deleting_storages.py +0 -0
  78. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_kvs_iterating.py +0 -0
  79. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_kvs_public_url.py +0 -0
  80. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_kvs_read_write.py +0 -0
  81. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_opening_storages.py +0 -0
  82. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/03_rq.py +0 -0
  83. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/04_actor_events.py +0 -0
  84. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_apify_proxy.py +0 -0
  85. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_apify_proxy_config.py +0 -0
  86. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_custom_proxy.py +0 -0
  87. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_custom_proxy_function.py +0 -0
  88. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_proxy_actor_input.py +0 -0
  89. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_proxy_httpx.py +0 -0
  90. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/05_proxy_rotation.py +0 -0
  91. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/06_interacting_call.py +0 -0
  92. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/06_interacting_call_task.py +0 -0
  93. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/06_interacting_metamorph.py +0 -0
  94. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/06_interacting_start.py +0 -0
  95. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/07_webhook.py +0 -0
  96. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/07_webhook_preventing.py +0 -0
  97. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/08_actor_client.py +0 -0
  98. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/08_actor_new_client.py +0 -0
  99. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/09_webserver.py +0 -0
  100. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/10_log_config.py +0 -0
  101. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/10_logger_usage.py +0 -0
  102. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/11_config.py +0 -0
  103. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/actor_charge.py +0 -0
  104. {apify-2.6.1b6 → apify-2.6.1b7}/docs/03_concepts/code/conditional_actor_charge.py +0 -0
  105. {apify-2.6.1b6 → apify-2.6.1b7}/docs/04_upgrading/upgrading_to_v2.md +0 -0
  106. {apify-2.6.1b6 → apify-2.6.1b7}/docs/pyproject.toml +0 -0
  107. {apify-2.6.1b6 → apify-2.6.1b7}/renovate.json +0 -0
  108. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/__init__.py +0 -0
  109. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_configuration.py +0 -0
  110. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_consts.py +0 -0
  111. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_crypto.py +0 -0
  112. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/_proxy_configuration.py +0 -0
  113. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/__init__.py +0 -0
  114. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_apify_storage_client.py +0 -0
  115. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_dataset_client.py +0 -0
  116. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_dataset_collection_client.py +0 -0
  117. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_key_value_store_client.py +0 -0
  118. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_key_value_store_collection_client.py +0 -0
  119. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_request_queue_client.py +0 -0
  120. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/_request_queue_collection_client.py +0 -0
  121. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/apify_storage_client/py.typed +0 -0
  122. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/log.py +0 -0
  123. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/py.typed +0 -0
  124. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/__init__.py +0 -0
  125. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/_actor_runner.py +0 -0
  126. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/_async_thread.py +0 -0
  127. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/_logging_config.py +0 -0
  128. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/extensions/__init__.py +0 -0
  129. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/extensions/_httpcache.py +0 -0
  130. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/middlewares/__init__.py +0 -0
  131. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
  132. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/middlewares/py.typed +0 -0
  133. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/pipelines/__init__.py +0 -0
  134. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
  135. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/pipelines/py.typed +0 -0
  136. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/py.typed +0 -0
  137. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/requests.py +0 -0
  138. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/scheduler.py +0 -0
  139. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/scrapy/utils.py +0 -0
  140. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/storages/__init__.py +0 -0
  141. {apify-2.6.1b6 → apify-2.6.1b7}/src/apify/storages/py.typed +0 -0
  142. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/README.md +0 -0
  143. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/__init__.py +0 -0
  144. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/_utils.py +0 -0
  145. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/actor_source_base/Dockerfile +0 -0
  146. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/actor_source_base/requirements.txt +0 -0
  147. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/actor_source_base/src/__init__.py +0 -0
  148. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/actor_source_base/src/__main__.py +0 -0
  149. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/actor_source_base/src/main.py +0 -0
  150. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_api_helpers.py +0 -0
  151. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_call_timeouts.py +0 -0
  152. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_charge.py +0 -0
  153. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_create_proxy_configuration.py +0 -0
  154. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_dataset.py +0 -0
  155. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_key_value_store.py +0 -0
  156. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_lifecycle.py +0 -0
  157. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_log.py +0 -0
  158. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_request_queue.py +0 -0
  159. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_actor_scrapy.py +0 -0
  160. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_fixtures.py +0 -0
  161. {apify-2.6.1b6 → apify-2.6.1b7}/tests/integration/test_request_queue.py +0 -0
  162. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/__init__.py +0 -0
  163. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/__init__.py +0 -0
  164. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
  165. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_dataset.py +0 -0
  166. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_env_helpers.py +0 -0
  167. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_helpers.py +0 -0
  168. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_key_value_store.py +0 -0
  169. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_log.py +0 -0
  170. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
  171. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_actor_request_queue.py +0 -0
  172. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_configuration.py +0 -0
  173. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/actor/test_request_list.py +0 -0
  174. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/__init__.py +0 -0
  175. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/extensions/__init__.py +0 -0
  176. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
  177. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/middlewares/__init__.py +0 -0
  178. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
  179. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/pipelines/__init__.py +0 -0
  180. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
  181. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/requests/__init__.py +0 -0
  182. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
  183. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
  184. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/utils/__init__.py +0 -0
  185. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
  186. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
  187. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/test_crypto.py +0 -0
  188. {apify-2.6.1b6 → apify-2.6.1b7}/tests/unit/test_proxy_configuration.py +0 -0
  189. {apify-2.6.1b6 → apify-2.6.1b7}/website/.eslintrc.json +0 -0
  190. {apify-2.6.1b6 → apify-2.6.1b7}/website/babel.config.js +0 -0
  191. {apify-2.6.1b6 → apify-2.6.1b7}/website/build_api_reference.sh +0 -0
  192. {apify-2.6.1b6 → apify-2.6.1b7}/website/docusaurus.config.js +0 -0
  193. {apify-2.6.1b6 → apify-2.6.1b7}/website/generate_module_shortcuts.py +0 -0
  194. {apify-2.6.1b6 → apify-2.6.1b7}/website/package-lock.json +0 -0
  195. {apify-2.6.1b6 → apify-2.6.1b7}/website/package.json +0 -0
  196. {apify-2.6.1b6 → apify-2.6.1b7}/website/sidebars.js +0 -0
  197. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/components/ApiLink.jsx +0 -0
  198. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/components/Gradients.jsx +0 -0
  199. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/components/Highlights.jsx +0 -0
  200. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/components/Highlights.module.css +0 -0
  201. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/components/RunnableCodeBlock.jsx +0 -0
  202. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/components/RunnableCodeBlock.module.css +0 -0
  203. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/css/custom.css +0 -0
  204. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/pages/home_page_example.py +0 -0
  205. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/pages/index.js +0 -0
  206. {apify-2.6.1b6 → apify-2.6.1b7}/website/src/pages/index.module.css +0 -0
  207. {apify-2.6.1b6 → apify-2.6.1b7}/website/static/.nojekyll +0 -0
  208. {apify-2.6.1b6 → apify-2.6.1b7}/website/static/img/docs-og.png +0 -0
  209. {apify-2.6.1b6 → apify-2.6.1b7}/website/tools/docs-prettier.config.js +0 -0
  210. {apify-2.6.1b6 → apify-2.6.1b7}/website/tools/utils/externalLink.js +0 -0
@@ -31,19 +31,27 @@ jobs:
31
31
  lint_check:
32
32
  name: Lint check
33
33
  uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
34
+ with:
35
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
34
36
 
35
37
  type_check:
36
38
  name: Type check
37
39
  uses: apify/workflows/.github/workflows/python_type_check.yaml@main
40
+ with:
41
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
38
42
 
39
43
  unit_tests:
40
44
  name: Unit tests
41
45
  uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
46
+ with:
47
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
42
48
 
43
49
  integration_tests:
44
50
  name: Integration tests
45
51
  uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
46
52
  secrets: inherit
53
+ with:
54
+ python-versions: '["3.10", "3.13"]'
47
55
 
48
56
  update_changelog:
49
57
  name: Update changelog
@@ -42,19 +42,27 @@ jobs:
42
42
  lint_check:
43
43
  name: Lint check
44
44
  uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
45
+ with:
46
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
45
47
 
46
48
  type_check:
47
49
  name: Type check
48
50
  uses: apify/workflows/.github/workflows/python_type_check.yaml@main
51
+ with:
52
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
49
53
 
50
54
  unit_tests:
51
55
  name: Unit tests
52
56
  uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
57
+ with:
58
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
53
59
 
54
60
  integration_tests:
55
61
  name: Integration tests
56
62
  uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
57
63
  secrets: inherit
64
+ with:
65
+ python-versions: '["3.10", "3.13"]'
58
66
 
59
67
  update_changelog:
60
68
  name: Update changelog
@@ -10,14 +10,20 @@ jobs:
10
10
  lint_check:
11
11
  name: Lint check
12
12
  uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
13
+ with:
14
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
13
15
 
14
16
  type_check:
15
17
  name: Type check
16
18
  uses: apify/workflows/.github/workflows/python_type_check.yaml@main
19
+ with:
20
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
17
21
 
18
22
  unit_tests:
19
23
  name: Unit tests
20
24
  uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
25
+ with:
26
+ python-versions: '["3.10", "3.11", "3.12", "3.13"]'
21
27
 
22
28
  docs_check:
23
29
  name: Docs check
@@ -26,5 +32,7 @@ jobs:
26
32
  integration_tests:
27
33
  name: Integration tests
28
34
  needs: [lint_check, type_check, unit_tests]
29
- uses: apify/workflows/.github/workflows/python_integration_tests.yaml@fix-integration-tests-from-forks
35
+ uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
30
36
  secrets: inherit
37
+ with:
38
+ python-versions: '["3.10", "3.13"]'
@@ -4,7 +4,7 @@ Here you'll find a contributing guide to get started with development.
4
4
 
5
5
  ## Environment
6
6
 
7
- For local development, it is required to have Python 3.9 (or a later version) installed.
7
+ For local development, it is required to have Python 3.10 (or a later version) installed.
8
8
 
9
9
  We use [uv](https://docs.astral.sh/uv/) for project management. Install it and set up your IDE accordingly.
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apify
3
- Version: 2.6.1b6
3
+ Version: 2.6.1b7
4
4
  Summary: Apify SDK for Python
5
5
  Project-URL: Apify Homepage, https://apify.com
6
6
  Project-URL: Changelog, https://docs.apify.com/sdk/python/docs/changelog
@@ -219,13 +219,12 @@ Classifier: Environment :: Console
219
219
  Classifier: Intended Audience :: Developers
220
220
  Classifier: License :: OSI Approved :: Apache Software License
221
221
  Classifier: Operating System :: OS Independent
222
- Classifier: Programming Language :: Python :: 3.9
223
222
  Classifier: Programming Language :: Python :: 3.10
224
223
  Classifier: Programming Language :: Python :: 3.11
225
224
  Classifier: Programming Language :: Python :: 3.12
226
225
  Classifier: Programming Language :: Python :: 3.13
227
226
  Classifier: Topic :: Software Development :: Libraries
228
- Requires-Python: >=3.9
227
+ Requires-Python: >=3.10
229
228
  Requires-Dist: apify-client>=1.11.0
230
229
  Requires-Dist: apify-shared>=1.3.0
231
230
  Requires-Dist: crawlee~=0.6.0
@@ -11,7 +11,7 @@ In this page, you'll learn how to create and run Apify Actors locally on your co
11
11
 
12
12
  ## Requirements
13
13
 
14
- The Apify SDK requires Python version 3.9 or above to run Python Actors locally.
14
+ The Apify SDK requires Python version 3.10 or above to run Python Actors locally.
15
15
 
16
16
  ## Creating your first Actor
17
17
 
@@ -4,19 +4,18 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "apify"
7
- version = "2.6.1b6"
7
+ version = "2.6.1b7"
8
8
  description = "Apify SDK for Python"
9
9
  authors = [{ name = "Apify Technologies s.r.o.", email = "support@apify.com" }]
10
10
  license = { file = "LICENSE" }
11
11
  readme = "README.md"
12
- requires-python = ">=3.9"
12
+ requires-python = ">=3.10"
13
13
  classifiers = [
14
14
  "Development Status :: 5 - Production/Stable",
15
15
  "Environment :: Console",
16
16
  "Intended Audience :: Developers",
17
17
  "License :: OSI Approved :: Apache Software License",
18
18
  "Operating System :: OS Independent",
19
- "Programming Language :: Python :: 3.9",
20
19
  "Programming Language :: Python :: 3.10",
21
20
  "Programming Language :: Python :: 3.11",
22
21
  "Programming Language :: Python :: 3.12",
@@ -188,7 +187,7 @@ asyncio_mode = "auto"
188
187
  timeout = 1200
189
188
 
190
189
  [tool.mypy]
191
- python_version = "3.9"
190
+ python_version = "3.10"
192
191
  plugins = ["pydantic.mypy"]
193
192
  files = ["src", "tests", "docs", "website"]
194
193
  check_untyped_defs = true
@@ -215,7 +214,7 @@ module = [
215
214
  ignore_missing_imports = true
216
215
 
217
216
  [tool.basedpyright]
218
- pythonVersion = "3.9"
217
+ pythonVersion = "3.10"
219
218
  typeCheckingMode = "standard"
220
219
  include = ["src", "tests", "docs", "website"]
221
220
 
@@ -5,7 +5,7 @@ import os
5
5
  import sys
6
6
  from contextlib import suppress
7
7
  from datetime import datetime, timedelta, timezone
8
- from typing import TYPE_CHECKING, Any, Callable, Literal, TypeVar, cast, overload
8
+ from typing import TYPE_CHECKING, Any, Literal, TypeVar, cast, overload
9
9
 
10
10
  from lazy_object_proxy import Proxy
11
11
  from more_itertools import flatten
@@ -39,6 +39,7 @@ from apify.storages import Dataset, KeyValueStore, RequestQueue
39
39
 
40
40
  if TYPE_CHECKING:
41
41
  import logging
42
+ from collections.abc import Callable
42
43
  from types import TracebackType
43
44
 
44
45
  from typing_extensions import Self
@@ -4,7 +4,7 @@ import math
4
4
  from dataclasses import dataclass
5
5
  from datetime import datetime, timezone
6
6
  from decimal import Decimal
7
- from typing import TYPE_CHECKING, Protocol, Union
7
+ from typing import TYPE_CHECKING, Protocol
8
8
 
9
9
  from pydantic import TypeAdapter
10
10
 
@@ -23,8 +23,7 @@ if TYPE_CHECKING:
23
23
 
24
24
  from apify._configuration import Configuration
25
25
 
26
-
27
- run_validator: TypeAdapter[ActorRun | None] = TypeAdapter(Union[ActorRun, None])
26
+ run_validator = TypeAdapter[ActorRun | None](ActorRun | None)
28
27
 
29
28
 
30
29
  @docs_group('Interfaces')
@@ -13,7 +13,7 @@ from crawlee._utils.urls import validate_http_url
13
13
  from apify._utils import docs_group
14
14
 
15
15
  if TYPE_CHECKING:
16
- from typing_extensions import TypeAlias
16
+ from typing import TypeAlias
17
17
 
18
18
 
19
19
  @docs_group('Data structures')
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  from datetime import datetime
5
- from typing import TYPE_CHECKING, Annotated, Any, Literal, Union
5
+ from typing import TYPE_CHECKING, Annotated, Any, Literal
6
6
 
7
7
  import websockets.asyncio.client
8
8
  from pydantic import BaseModel, Discriminator, Field, TypeAdapter
@@ -113,25 +113,10 @@ class UnknownEvent(BaseModel):
113
113
  data: Annotated[dict[str, Any], Field(default_factory=dict)]
114
114
 
115
115
 
116
- EventMessage = Union[
117
- PersistStateEvent,
118
- SystemInfoEvent,
119
- MigratingEvent,
120
- AbortingEvent,
121
- ExitEvent,
122
- EventWithoutData,
123
- ]
124
-
125
-
126
- event_data_adapter: TypeAdapter[EventMessage | DeprecatedEvent | UnknownEvent] = TypeAdapter(
127
- Union[
128
- Annotated[
129
- EventMessage,
130
- Discriminator('name'),
131
- ],
132
- DeprecatedEvent,
133
- UnknownEvent,
134
- ]
116
+ EventMessage = PersistStateEvent | SystemInfoEvent | MigratingEvent | AbortingEvent | ExitEvent | EventWithoutData
117
+
118
+ event_data_adapter = TypeAdapter[EventMessage | DeprecatedEvent | UnknownEvent](
119
+ Annotated[EventMessage, Discriminator('name')] | DeprecatedEvent | UnknownEvent
135
120
  )
136
121
 
137
122
 
@@ -3,7 +3,10 @@ from __future__ import annotations
3
3
  import builtins
4
4
  import sys
5
5
  from importlib import metadata
6
- from typing import Callable, Literal
6
+ from typing import TYPE_CHECKING, Literal
7
+
8
+ if TYPE_CHECKING:
9
+ from collections.abc import Callable
7
10
 
8
11
 
9
12
  def get_system_info() -> dict:
@@ -4,7 +4,7 @@ import asyncio
4
4
  import re
5
5
  from asyncio import Task
6
6
  from functools import partial
7
- from typing import Annotated, Any, Union
7
+ from typing import Annotated, Any
8
8
 
9
9
  from pydantic import BaseModel, Field, TypeAdapter
10
10
 
@@ -35,7 +35,7 @@ class _SimpleUrlInput(_RequestDetails):
35
35
  url: str
36
36
 
37
37
 
38
- url_input_adapter = TypeAdapter(list[Union[_RequestsFromUrlInput, _SimpleUrlInput]])
38
+ url_input_adapter = TypeAdapter(list[_RequestsFromUrlInput | _SimpleUrlInput])
39
39
 
40
40
 
41
41
  @docs_group('Classes')
@@ -7,7 +7,7 @@ import subprocess
7
7
  import sys
8
8
  import textwrap
9
9
  from pathlib import Path
10
- from typing import TYPE_CHECKING, Any, Callable, Protocol
10
+ from typing import TYPE_CHECKING, Any, Protocol
11
11
 
12
12
  import pytest
13
13
  from filelock import FileLock
@@ -22,7 +22,7 @@ from ._utils import generate_unique_resource_name
22
22
  from apify._models import ActorRun
23
23
 
24
24
  if TYPE_CHECKING:
25
- from collections.abc import Awaitable, Coroutine, Iterator, Mapping
25
+ from collections.abc import Awaitable, Callable, Coroutine, Iterator, Mapping
26
26
  from decimal import Decimal
27
27
 
28
28
  from apify_client.clients.resource_clients import ActorClientAsync
@@ -16,9 +16,11 @@ async def test_emit_and_capture_interval_events(
16
16
  run_actor: RunActorFunction,
17
17
  ) -> None:
18
18
  async def main() -> None:
19
+ # TC003 - TYPE_CHECKING section is problematic for our integration tests.
19
20
  import os
21
+ from collections.abc import Callable # noqa: TC003
20
22
  from datetime import datetime
21
- from typing import Any, Callable
23
+ from typing import Any
22
24
 
23
25
  from apify_shared.consts import ActorEventTypes, ApifyEnvVars
24
26
  from crawlee.events._types import Event, EventSystemInfoData
@@ -5,7 +5,7 @@ import contextlib
5
5
  import json
6
6
  import sys
7
7
  from datetime import datetime, timezone
8
- from typing import TYPE_CHECKING, Any, Callable, cast
8
+ from typing import TYPE_CHECKING, Any, cast
9
9
  from unittest.mock import AsyncMock, Mock
10
10
 
11
11
  import pytest
@@ -19,6 +19,8 @@ from apify import Actor
19
19
  from apify._actor import _ActorType
20
20
 
21
21
  if TYPE_CHECKING:
22
+ from collections.abc import Callable
23
+
22
24
  from lazy_object_proxy import Proxy
23
25
 
24
26
 
@@ -4,8 +4,7 @@ import asyncio
4
4
  import inspect
5
5
  import os
6
6
  from collections import defaultdict
7
- from copy import deepcopy
8
- from typing import TYPE_CHECKING, Any, Callable, get_type_hints
7
+ from typing import TYPE_CHECKING, Any, get_type_hints
9
8
 
10
9
  import pytest
11
10
 
@@ -19,6 +18,7 @@ from crawlee.storages import _creation_management
19
18
  import apify._actor
20
19
 
21
20
  if TYPE_CHECKING:
21
+ from collections.abc import Callable
22
22
  from pathlib import Path
23
23
 
24
24
 
@@ -125,26 +125,7 @@ class ApifyClientAsyncPatcher:
125
125
  if not client_method:
126
126
  raise ValueError(f'ApifyClientAsync does not contain method "{method}"!')
127
127
 
128
- try:
129
- # Try to get the return type of the client method using `typing.get_type_hints()`
130
- client_method_return_type = get_type_hints(client_method)['return']
131
- except TypeError:
132
- # There is a known issue with `typing.get_type_hints()` on Python 3.9. It raises a `TypeError`
133
- # when `|` (Union) is used in the type hint, even with `from __future__ import annotations`. Since we
134
- # only need the return type, we attempt the following workaround.
135
-
136
- # 1. Create a deep copy of the client method object
137
- client_method_copied = deepcopy(client_method)
138
-
139
- # 2. Restrict the annotations to only include the return type
140
- client_method_copied.__annotations__ = {'return': client_method.__annotations__['return']}
141
-
142
- # 3. Try to get the return type again using `typing.get_type_hints()`
143
- client_method_return_type = get_type_hints(client_method_copied)['return']
144
-
145
- # TODO: Remove this fallback once we drop support for Python 3.9
146
- # https://github.com/apify/apify-sdk-python/issues/151
147
-
128
+ client_method_return_type = get_type_hints(client_method)['return']
148
129
  original_submethod = getattr(client_method_return_type, submethod, None)
149
130
 
150
131
  if not original_submethod:
@@ -4,7 +4,7 @@ import asyncio
4
4
  import json
5
5
  import logging
6
6
  from collections import defaultdict
7
- from typing import Any, Callable
7
+ from typing import TYPE_CHECKING, Any
8
8
  from unittest.mock import Mock
9
9
 
10
10
  import pytest
@@ -17,6 +17,9 @@ from crawlee.events._types import Event
17
17
  from apify import Configuration
18
18
  from apify._platform_event_manager import PlatformEventManager, SystemInfoEventData
19
19
 
20
+ if TYPE_CHECKING:
21
+ from collections.abc import Callable
22
+
20
23
 
21
24
  @pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
22
25
  async def test_lifecycle_local(caplog: pytest.LogCaptureFixture) -> None: