apify 3.0.4b3__tar.gz → 3.0.4b4__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 (251) hide show
  1. {apify-3.0.4b3 → apify-3.0.4b4}/PKG-INFO +1 -1
  2. {apify-3.0.4b3 → apify-3.0.4b4}/pyproject.toml +1 -1
  3. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_actor.py +1 -7
  4. apify-3.0.4b4/tests/unit/actor/test_actor_log.py +107 -0
  5. {apify-3.0.4b3 → apify-3.0.4b4}/uv.lock +1 -1
  6. apify-3.0.4b3/tests/unit/actor/test_actor_log.py +0 -112
  7. {apify-3.0.4b3 → apify-3.0.4b4}/.editorconfig +0 -0
  8. {apify-3.0.4b3 → apify-3.0.4b4}/.github/CODEOWNERS +0 -0
  9. {apify-3.0.4b3 → apify-3.0.4b4}/.github/workflows/build_and_deploy_docs.yaml +0 -0
  10. {apify-3.0.4b3 → apify-3.0.4b4}/.github/workflows/check_pr_title.yaml +0 -0
  11. {apify-3.0.4b3 → apify-3.0.4b4}/.github/workflows/pre_release.yaml +0 -0
  12. {apify-3.0.4b3 → apify-3.0.4b4}/.github/workflows/release.yaml +0 -0
  13. {apify-3.0.4b3 → apify-3.0.4b4}/.github/workflows/run_code_checks.yaml +0 -0
  14. {apify-3.0.4b3 → apify-3.0.4b4}/.github/workflows/update_new_issue.yaml +0 -0
  15. {apify-3.0.4b3 → apify-3.0.4b4}/.gitignore +0 -0
  16. {apify-3.0.4b3 → apify-3.0.4b4}/.markdownlint.yaml +0 -0
  17. {apify-3.0.4b3 → apify-3.0.4b4}/.pre-commit-config.yaml +0 -0
  18. {apify-3.0.4b3 → apify-3.0.4b4}/CHANGELOG.md +0 -0
  19. {apify-3.0.4b3 → apify-3.0.4b4}/CONTRIBUTING.md +0 -0
  20. {apify-3.0.4b3 → apify-3.0.4b4}/LICENSE +0 -0
  21. {apify-3.0.4b3 → apify-3.0.4b4}/Makefile +0 -0
  22. {apify-3.0.4b3 → apify-3.0.4b4}/README.md +0 -0
  23. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/01_introduction.mdx +0 -0
  24. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/02_running_actors_locally.mdx +0 -0
  25. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/03_actor_structure.mdx +0 -0
  26. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/code/01_introduction.py +0 -0
  27. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/code/actor_structure/__init__.py +0 -0
  28. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/code/actor_structure/__main__.py +0 -0
  29. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/code/actor_structure/main.py +0 -0
  30. {apify-3.0.4b3 → apify-3.0.4b4}/docs/01_overview/code/actor_structure/py.typed +0 -0
  31. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/01_actor_lifecycle.mdx +0 -0
  32. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/02_actor_input.mdx +0 -0
  33. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/03_storages.mdx +0 -0
  34. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/04_actor_events.mdx +0 -0
  35. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/05_proxy_management.mdx +0 -0
  36. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/06_interacting_with_other_actors.mdx +0 -0
  37. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/07_webhooks.mdx +0 -0
  38. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/08_access_apify_api.mdx +0 -0
  39. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/09_running_webserver.mdx +0 -0
  40. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/10_logging.mdx +0 -0
  41. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/11_configuration.mdx +0 -0
  42. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/12_pay_per_event.mdx +0 -0
  43. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_class_context.py +0 -0
  44. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_class_manual.py +0 -0
  45. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_context_manager.py +0 -0
  46. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_error_handling_context.py +0 -0
  47. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_error_handling_manual.py +0 -0
  48. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_init_exit.py +0 -0
  49. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_instance_context.py +0 -0
  50. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_instance_manual.py +0 -0
  51. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_reboot.py +0 -0
  52. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/01_status_message.py +0 -0
  53. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/02_input.py +0 -0
  54. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_dataset_exports.py +0 -0
  55. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_dataset_read_write.py +0 -0
  56. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_deleting_storages.py +0 -0
  57. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_kvs_iterating.py +0 -0
  58. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_kvs_public_url.py +0 -0
  59. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_kvs_read_write.py +0 -0
  60. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_opening_storages.py +0 -0
  61. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/03_rq.py +0 -0
  62. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/04_actor_events.py +0 -0
  63. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_apify_proxy.py +0 -0
  64. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_apify_proxy_config.py +0 -0
  65. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_custom_proxy.py +0 -0
  66. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_custom_proxy_function.py +0 -0
  67. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_proxy_actor_input.py +0 -0
  68. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_proxy_httpx.py +0 -0
  69. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/05_proxy_rotation.py +0 -0
  70. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/06_interacting_call.py +0 -0
  71. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/06_interacting_call_task.py +0 -0
  72. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/06_interacting_metamorph.py +0 -0
  73. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/06_interacting_start.py +0 -0
  74. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/07_webhook.py +0 -0
  75. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/07_webhook_preventing.py +0 -0
  76. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/08_actor_client.py +0 -0
  77. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/08_actor_new_client.py +0 -0
  78. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/09_webserver.py +0 -0
  79. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/10_log_config.py +0 -0
  80. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/10_logger_usage.py +0 -0
  81. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/10_redirect_log.py +0 -0
  82. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/10_redirect_log_existing_run.py +0 -0
  83. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/11_config.py +0 -0
  84. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/actor_charge.py +0 -0
  85. {apify-3.0.4b3 → apify-3.0.4b4}/docs/02_concepts/code/conditional_actor_charge.py +0 -0
  86. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/01_beautifulsoup_httpx.mdx +0 -0
  87. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/02_parsel_impit.mdx +0 -0
  88. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/03_playwright.mdx +0 -0
  89. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/04_selenium.mdx +0 -0
  90. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/05_crawlee.mdx +0 -0
  91. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/06_scrapy.mdx +0 -0
  92. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/01_beautifulsoup_httpx.py +0 -0
  93. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/02_parsel_impit.py +0 -0
  94. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/03_playwright.py +0 -0
  95. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/04_selenium.py +0 -0
  96. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/05_crawlee_beautifulsoup.py +0 -0
  97. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/05_crawlee_parsel.py +0 -0
  98. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/05_crawlee_playwright.py +0 -0
  99. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/__init__.py +0 -0
  100. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/__main__.py +0 -0
  101. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/items.py +0 -0
  102. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/main.py +0 -0
  103. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/py.typed +0 -0
  104. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/settings.py +0 -0
  105. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
  106. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/spiders/py.typed +0 -0
  107. {apify-3.0.4b3 → apify-3.0.4b4}/docs/03_guides/code/scrapy_project/src/spiders/title.py +0 -0
  108. {apify-3.0.4b3 → apify-3.0.4b4}/docs/04_upgrading/upgrading_to_v2.md +0 -0
  109. {apify-3.0.4b3 → apify-3.0.4b4}/docs/04_upgrading/upgrading_to_v3.md +0 -0
  110. {apify-3.0.4b3 → apify-3.0.4b4}/docs/pyproject.toml +0 -0
  111. {apify-3.0.4b3 → apify-3.0.4b4}/renovate.json +0 -0
  112. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/__init__.py +0 -0
  113. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_charging.py +0 -0
  114. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_configuration.py +0 -0
  115. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_consts.py +0 -0
  116. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_crypto.py +0 -0
  117. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_models.py +0 -0
  118. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_proxy_configuration.py +0 -0
  119. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/_utils.py +0 -0
  120. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/events/__init__.py +0 -0
  121. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/events/_apify_event_manager.py +0 -0
  122. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/events/_types.py +0 -0
  123. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/events/py.typed +0 -0
  124. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/log.py +0 -0
  125. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/py.typed +0 -0
  126. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/request_loaders/__init__.py +0 -0
  127. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/request_loaders/_apify_request_list.py +0 -0
  128. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/request_loaders/py.typed +0 -0
  129. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/__init__.py +0 -0
  130. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/_actor_runner.py +0 -0
  131. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/_async_thread.py +0 -0
  132. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/_logging_config.py +0 -0
  133. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/extensions/__init__.py +0 -0
  134. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/extensions/_httpcache.py +0 -0
  135. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/middlewares/__init__.py +0 -0
  136. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
  137. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/middlewares/py.typed +0 -0
  138. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/pipelines/__init__.py +0 -0
  139. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
  140. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/pipelines/py.typed +0 -0
  141. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/py.typed +0 -0
  142. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/requests.py +0 -0
  143. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/scheduler.py +0 -0
  144. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/scrapy/utils.py +0 -0
  145. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/__init__.py +0 -0
  146. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/__init__.py +0 -0
  147. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_dataset_client.py +0 -0
  148. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_key_value_store_client.py +0 -0
  149. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_models.py +0 -0
  150. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_request_queue_client.py +0 -0
  151. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_request_queue_shared_client.py +0 -0
  152. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_request_queue_single_client.py +0 -0
  153. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_storage_client.py +0 -0
  154. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/_utils.py +0 -0
  155. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_apify/py.typed +0 -0
  156. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_file_system/__init__.py +0 -0
  157. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_file_system/_key_value_store_client.py +0 -0
  158. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_file_system/_storage_client.py +0 -0
  159. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_smart_apify/__init__.py +0 -0
  160. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/_smart_apify/_storage_client.py +0 -0
  161. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storage_clients/py.typed +0 -0
  162. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storages/__init__.py +0 -0
  163. {apify-3.0.4b3 → apify-3.0.4b4}/src/apify/storages/py.typed +0 -0
  164. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/README.md +0 -0
  165. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/__init__.py +0 -0
  166. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/_utils.py +0 -0
  167. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/__init__.py +0 -0
  168. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/actor_source_base/Dockerfile +0 -0
  169. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/actor_source_base/requirements.txt +0 -0
  170. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/actor_source_base/server.py +0 -0
  171. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/actor_source_base/src/__init__.py +0 -0
  172. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/actor_source_base/src/__main__.py +0 -0
  173. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/actor_source_base/src/main.py +0 -0
  174. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/conftest.py +0 -0
  175. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_api_helpers.py +0 -0
  176. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_call_timeouts.py +0 -0
  177. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_charge.py +0 -0
  178. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_create_proxy_configuration.py +0 -0
  179. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_dataset.py +0 -0
  180. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_events.py +0 -0
  181. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_key_value_store.py +0 -0
  182. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_lifecycle.py +0 -0
  183. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_log.py +0 -0
  184. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_request_queue.py +0 -0
  185. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_actor_scrapy.py +0 -0
  186. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_apify_storages.py +0 -0
  187. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_crawlers_with_storages.py +0 -0
  188. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/actor/test_fixtures.py +0 -0
  189. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/apify_api/__init__.py +0 -0
  190. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/apify_api/conftest.py +0 -0
  191. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/apify_api/test_apify_storages.py +0 -0
  192. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/apify_api/test_request_queue.py +0 -0
  193. {apify-3.0.4b3 → apify-3.0.4b4}/tests/integration/conftest.py +0 -0
  194. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/__init__.py +0 -0
  195. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/__init__.py +0 -0
  196. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
  197. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_dataset.py +0 -0
  198. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_env_helpers.py +0 -0
  199. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_helpers.py +0 -0
  200. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_key_value_store.py +0 -0
  201. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_lifecycle.py +0 -0
  202. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
  203. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_actor_request_queue.py +0 -0
  204. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_configuration.py +0 -0
  205. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/actor/test_request_list.py +0 -0
  206. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/conftest.py +0 -0
  207. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/events/__init__.py +0 -0
  208. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/events/test_apify_event_manager.py +0 -0
  209. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/__init__.py +0 -0
  210. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/extensions/__init__.py +0 -0
  211. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
  212. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/middlewares/__init__.py +0 -0
  213. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
  214. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/pipelines/__init__.py +0 -0
  215. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
  216. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/requests/__init__.py +0 -0
  217. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
  218. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
  219. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/utils/__init__.py +0 -0
  220. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
  221. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
  222. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/storage_clients/__init__.py +0 -0
  223. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/storage_clients/test_apify_request_queue_client.py +0 -0
  224. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/storage_clients/test_file_system.py +0 -0
  225. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/test_apify_storages.py +0 -0
  226. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/test_crypto.py +0 -0
  227. {apify-3.0.4b3 → apify-3.0.4b4}/tests/unit/test_proxy_configuration.py +0 -0
  228. {apify-3.0.4b3 → apify-3.0.4b4}/website/.eslintrc.json +0 -0
  229. {apify-3.0.4b3 → apify-3.0.4b4}/website/babel.config.js +0 -0
  230. {apify-3.0.4b3 → apify-3.0.4b4}/website/build_api_reference.sh +0 -0
  231. {apify-3.0.4b3 → apify-3.0.4b4}/website/docusaurus.config.js +0 -0
  232. {apify-3.0.4b3 → apify-3.0.4b4}/website/generate_module_shortcuts.py +0 -0
  233. {apify-3.0.4b3 → apify-3.0.4b4}/website/package-lock.json +0 -0
  234. {apify-3.0.4b3 → apify-3.0.4b4}/website/package.json +0 -0
  235. {apify-3.0.4b3 → apify-3.0.4b4}/website/sidebars.js +0 -0
  236. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/components/ApiLink.jsx +0 -0
  237. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/components/Gradients.jsx +0 -0
  238. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/components/Highlights.jsx +0 -0
  239. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/components/Highlights.module.css +0 -0
  240. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/components/RunnableCodeBlock.jsx +0 -0
  241. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/components/RunnableCodeBlock.module.css +0 -0
  242. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/css/custom.css +0 -0
  243. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/pages/home_page_example.py +0 -0
  244. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/pages/index.js +0 -0
  245. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/pages/index.module.css +0 -0
  246. {apify-3.0.4b3 → apify-3.0.4b4}/website/src/theme/DocItem/Content/index.js +0 -0
  247. {apify-3.0.4b3 → apify-3.0.4b4}/website/static/.nojekyll +0 -0
  248. {apify-3.0.4b3 → apify-3.0.4b4}/website/static/img/docs-og.png +0 -0
  249. {apify-3.0.4b3 → apify-3.0.4b4}/website/static/img/guides/redirected_logs_example.webp +0 -0
  250. {apify-3.0.4b3 → apify-3.0.4b4}/website/tools/docs-prettier.config.js +0 -0
  251. {apify-3.0.4b3 → apify-3.0.4b4}/website/tools/utils/externalLink.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apify
3
- Version: 3.0.4b3
3
+ Version: 3.0.4b4
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "apify"
7
- version = "3.0.4b3"
7
+ version = "3.0.4b4"
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" }
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- import os
5
4
  import sys
6
5
  from contextlib import suppress
7
6
  from datetime import datetime, timedelta, timezone
@@ -1288,16 +1287,11 @@ class _ActorType:
1288
1287
  raise RuntimeError('The Actor was not initialized!')
1289
1288
 
1290
1289
  def _get_default_exit_process(self) -> bool:
1291
- """Return False for IPython, Pytest, and Scrapy environments, True otherwise."""
1290
+ """Return False for IPython and Scrapy environments, True otherwise."""
1292
1291
  if is_running_in_ipython():
1293
1292
  self.log.debug('Running in IPython, setting default `exit_process` to False.')
1294
1293
  return False
1295
1294
 
1296
- # Check if running in Pytest by detecting the relevant environment variable.
1297
- if os.getenv('PYTEST_CURRENT_TEST'):
1298
- self.log.debug('Running in Pytest, setting default `exit_process` to False.')
1299
- return False
1300
-
1301
1295
  # Check if running in Scrapy by attempting to import it.
1302
1296
  with suppress(ImportError):
1303
1297
  import scrapy # noqa: F401 PLC0415
@@ -0,0 +1,107 @@
1
+ from __future__ import annotations
2
+
3
+ import contextlib
4
+ import logging
5
+ from typing import TYPE_CHECKING
6
+
7
+ from apify import Actor
8
+ from apify.log import logger
9
+
10
+ if TYPE_CHECKING:
11
+ import pytest
12
+
13
+
14
+ async def test_actor_logs_messages_correctly(caplog: pytest.LogCaptureFixture) -> None:
15
+ caplog.set_level(logging.DEBUG, logger='apify')
16
+
17
+ with contextlib.suppress(RuntimeError):
18
+ async with Actor(configure_logging=False, exit_process=False):
19
+ # Test Actor.log
20
+ Actor.log.debug('Debug message')
21
+ Actor.log.info('Info message')
22
+
23
+ # Test logger
24
+ logger.warning('Warning message')
25
+ logger.error('Error message')
26
+
27
+ # Test that exception is logged with the traceback
28
+ try:
29
+ raise ValueError('Dummy ValueError')
30
+ except Exception:
31
+ Actor.log.exception('Exception message')
32
+
33
+ # Test multiline message being indented correctly
34
+ logger.info('Multi\nline\nlog\nmessage')
35
+
36
+ # Test that exception in Actor.main is logged with the traceback
37
+ raise RuntimeError('Dummy RuntimeError')
38
+
39
+ # We skip the first entry, as it is related to the initialization of `lazy_object_proxy.Proxy` for `Actor`.
40
+ records = caplog.records[1:]
41
+
42
+ # Updated expected number of log records (additional debug messages added)
43
+ assert len(records) == 14
44
+
45
+ # Record 0: Logging configured
46
+ assert records[0].levelno == logging.DEBUG
47
+ assert records[0].message == 'Logging configured'
48
+
49
+ # Record 1: Initializing Actor
50
+ assert records[1].levelno == logging.INFO
51
+ assert records[1].message == 'Initializing Actor'
52
+
53
+ # Record 2: Configuration initialized
54
+ assert records[2].levelno == logging.DEBUG
55
+ assert records[2].message == 'Configuration initialized'
56
+
57
+ # Record 3: Storage client initialized
58
+ assert records[3].levelno == logging.DEBUG
59
+ assert records[3].message == 'Storage client initialized'
60
+
61
+ # Record 4: Event manager initialized
62
+ assert records[4].levelno == logging.DEBUG
63
+ assert records[4].message == 'Event manager initialized'
64
+
65
+ # Record 5: Charging manager initialized
66
+ assert records[5].levelno == logging.DEBUG
67
+ assert records[5].message == 'Charging manager initialized'
68
+
69
+ # Record 6: Debug message
70
+ assert records[6].levelno == logging.DEBUG
71
+ assert records[6].message == 'Debug message'
72
+
73
+ # Record 7: Info message
74
+ assert records[7].levelno == logging.INFO
75
+ assert records[7].message == 'Info message'
76
+
77
+ # Record 8: Warning message
78
+ assert records[8].levelno == logging.WARNING
79
+ assert records[8].message == 'Warning message'
80
+
81
+ # Record 9: Error message
82
+ assert records[9].levelno == logging.ERROR
83
+ assert records[9].message == 'Error message'
84
+
85
+ # Record 10: Exception message with traceback (ValueError)
86
+ assert records[10].levelno == logging.ERROR
87
+ assert records[10].message == 'Exception message'
88
+ assert records[10].exc_info is not None
89
+ assert records[10].exc_info[0] is ValueError
90
+ assert isinstance(records[10].exc_info[1], ValueError)
91
+ assert str(records[10].exc_info[1]) == 'Dummy ValueError'
92
+
93
+ # Record 11: Multiline log message
94
+ assert records[11].levelno == logging.INFO
95
+ assert records[11].message == 'Multi\nline\nlog\nmessage'
96
+
97
+ # Record 12: Actor failed with an exception (RuntimeError)
98
+ assert records[12].levelno == logging.ERROR
99
+ assert records[12].message == 'Actor failed with an exception'
100
+ assert records[12].exc_info is not None
101
+ assert records[12].exc_info[0] is RuntimeError
102
+ assert isinstance(records[12].exc_info[1], RuntimeError)
103
+ assert str(records[12].exc_info[1]) == 'Dummy RuntimeError'
104
+
105
+ # Record 13: Exiting Actor
106
+ assert records[13].levelno == logging.INFO
107
+ assert records[13].message == 'Exiting Actor'
@@ -28,7 +28,7 @@ wheels = [
28
28
 
29
29
  [[package]]
30
30
  name = "apify"
31
- version = "3.0.4b3"
31
+ version = "3.0.4b4"
32
32
  source = { editable = "." }
33
33
  dependencies = [
34
34
  { name = "apify-client" },
@@ -1,112 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import contextlib
4
- import logging
5
- from typing import TYPE_CHECKING
6
-
7
- from apify import Actor
8
- from apify.log import logger
9
-
10
- if TYPE_CHECKING:
11
- import pytest
12
-
13
-
14
- async def test_actor_logs_messages_correctly(caplog: pytest.LogCaptureFixture) -> None:
15
- caplog.set_level(logging.DEBUG, logger='apify')
16
-
17
- with contextlib.suppress(RuntimeError):
18
- async with Actor(configure_logging=False):
19
- # Test Actor.log
20
- Actor.log.debug('Debug message')
21
- Actor.log.info('Info message')
22
-
23
- # Test logger
24
- logger.warning('Warning message')
25
- logger.error('Error message')
26
-
27
- # Test that exception is logged with the traceback
28
- try:
29
- raise ValueError('Dummy ValueError')
30
- except Exception:
31
- Actor.log.exception('Exception message')
32
-
33
- # Test multiline message being indented correctly
34
- logger.info('Multi\nline\nlog\nmessage')
35
-
36
- # Test that exception in Actor.main is logged with the traceback
37
- raise RuntimeError('Dummy RuntimeError')
38
-
39
- # Updated expected number of log records (additional debug messages added)
40
- assert len(caplog.records) == 16
41
-
42
- # Record 0: First Pytest context log
43
- assert caplog.records[0].levelno == logging.DEBUG
44
- assert caplog.records[0].message.startswith('Running in Pytest')
45
-
46
- # Record 1: Duplicate Pytest context log
47
- assert caplog.records[1].levelno == logging.DEBUG
48
- assert caplog.records[1].message.startswith('Running in Pytest')
49
-
50
- # Record 2: Logging configured
51
- assert caplog.records[2].levelno == logging.DEBUG
52
- assert caplog.records[2].message == 'Logging configured'
53
-
54
- # Record 3: Initializing Actor
55
- assert caplog.records[3].levelno == logging.INFO
56
- assert caplog.records[3].message == 'Initializing Actor'
57
-
58
- # Record 4: Configuration initialized
59
- assert caplog.records[4].levelno == logging.DEBUG
60
- assert caplog.records[4].message == 'Configuration initialized'
61
-
62
- # Record 5: Storage client initialized
63
- assert caplog.records[5].levelno == logging.DEBUG
64
- assert caplog.records[5].message == 'Storage client initialized'
65
-
66
- # Record 6: Event manager initialized
67
- assert caplog.records[6].levelno == logging.DEBUG
68
- assert caplog.records[6].message == 'Event manager initialized'
69
-
70
- # Record 7: Charging manager initialized
71
- assert caplog.records[7].levelno == logging.DEBUG
72
- assert caplog.records[7].message == 'Charging manager initialized'
73
-
74
- # Record 8: Debug message
75
- assert caplog.records[8].levelno == logging.DEBUG
76
- assert caplog.records[8].message == 'Debug message'
77
-
78
- # Record 9: Info message
79
- assert caplog.records[9].levelno == logging.INFO
80
- assert caplog.records[9].message == 'Info message'
81
-
82
- # Record 10: Warning message
83
- assert caplog.records[10].levelno == logging.WARNING
84
- assert caplog.records[10].message == 'Warning message'
85
-
86
- # Record 11: Error message
87
- assert caplog.records[11].levelno == logging.ERROR
88
- assert caplog.records[11].message == 'Error message'
89
-
90
- # Record 12: Exception message with traceback (ValueError)
91
- assert caplog.records[12].levelno == logging.ERROR
92
- assert caplog.records[12].message == 'Exception message'
93
- assert caplog.records[12].exc_info is not None
94
- assert caplog.records[12].exc_info[0] is ValueError
95
- assert isinstance(caplog.records[12].exc_info[1], ValueError)
96
- assert str(caplog.records[12].exc_info[1]) == 'Dummy ValueError'
97
-
98
- # Record 13: Multiline log message
99
- assert caplog.records[13].levelno == logging.INFO
100
- assert caplog.records[13].message == 'Multi\nline\nlog\nmessage'
101
-
102
- # Record 14: Actor failed with an exception (RuntimeError)
103
- assert caplog.records[14].levelno == logging.ERROR
104
- assert caplog.records[14].message == 'Actor failed with an exception'
105
- assert caplog.records[14].exc_info is not None
106
- assert caplog.records[14].exc_info[0] is RuntimeError
107
- assert isinstance(caplog.records[14].exc_info[1], RuntimeError)
108
- assert str(caplog.records[14].exc_info[1]) == 'Dummy RuntimeError'
109
-
110
- # Record 15: Exiting Actor
111
- assert caplog.records[15].levelno == logging.INFO
112
- assert caplog.records[15].message == 'Exiting Actor'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes