apify 2.5.1b7__tar.gz → 2.5.1b8__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 (209) hide show
  1. {apify-2.5.1b7 → apify-2.5.1b8}/CHANGELOG.md +1 -0
  2. {apify-2.5.1b7 → apify-2.5.1b8}/PKG-INFO +1 -1
  3. {apify-2.5.1b7 → apify-2.5.1b8}/pyproject.toml +1 -1
  4. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_proxy_configuration.py +15 -18
  5. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/test_proxy_configuration.py +30 -0
  6. {apify-2.5.1b7 → apify-2.5.1b8}/.editorconfig +0 -0
  7. {apify-2.5.1b7 → apify-2.5.1b8}/.github/CODEOWNERS +0 -0
  8. {apify-2.5.1b7 → apify-2.5.1b8}/.github/workflows/build_and_deploy_docs.yaml +0 -0
  9. {apify-2.5.1b7 → apify-2.5.1b8}/.github/workflows/check_pr_title.yaml +0 -0
  10. {apify-2.5.1b7 → apify-2.5.1b8}/.github/workflows/pre_release.yaml +0 -0
  11. {apify-2.5.1b7 → apify-2.5.1b8}/.github/workflows/release.yaml +0 -0
  12. {apify-2.5.1b7 → apify-2.5.1b8}/.github/workflows/run_code_checks.yaml +0 -0
  13. {apify-2.5.1b7 → apify-2.5.1b8}/.github/workflows/update_new_issue.yaml +0 -0
  14. {apify-2.5.1b7 → apify-2.5.1b8}/.gitignore +0 -0
  15. {apify-2.5.1b7 → apify-2.5.1b8}/.markdownlint.yaml +0 -0
  16. {apify-2.5.1b7 → apify-2.5.1b8}/.pre-commit-config.yaml +0 -0
  17. {apify-2.5.1b7 → apify-2.5.1b8}/CONTRIBUTING.md +0 -0
  18. {apify-2.5.1b7 → apify-2.5.1b8}/LICENSE +0 -0
  19. {apify-2.5.1b7 → apify-2.5.1b8}/Makefile +0 -0
  20. {apify-2.5.1b7 → apify-2.5.1b8}/README.md +0 -0
  21. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/01_introduction.mdx +0 -0
  22. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/02_running_actors_locally.mdx +0 -0
  23. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/03_actor_structure.mdx +0 -0
  24. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/code/01_introduction.py +0 -0
  25. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/code/actor_structure/__init__.py +0 -0
  26. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/code/actor_structure/__main__.py +0 -0
  27. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/code/actor_structure/main.py +0 -0
  28. {apify-2.5.1b7 → apify-2.5.1b8}/docs/01_overview/code/actor_structure/py.typed +0 -0
  29. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/01_beautifulsoup_httpx.mdx +0 -0
  30. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/02_crawlee.mdx +0 -0
  31. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/03_playwright.mdx +0 -0
  32. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/04_selenium.mdx +0 -0
  33. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/05_scrapy.mdx +0 -0
  34. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/01_beautifulsoup_httpx.py +0 -0
  35. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/02_crawlee_beautifulsoup.py +0 -0
  36. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/02_crawlee_playwright.py +0 -0
  37. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/03_playwright.py +0 -0
  38. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/04_selenium.py +0 -0
  39. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/__init__.py +0 -0
  40. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/__main__.py +0 -0
  41. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/items.py +0 -0
  42. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/main.py +0 -0
  43. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/py.typed +0 -0
  44. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/settings.py +0 -0
  45. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
  46. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/spiders/py.typed +0 -0
  47. {apify-2.5.1b7 → apify-2.5.1b8}/docs/02_guides/code/scrapy_project/src/spiders/title.py +0 -0
  48. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/01_actor_lifecycle.mdx +0 -0
  49. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/02_actor_input.mdx +0 -0
  50. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/03_storages.mdx +0 -0
  51. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/04_actor_events.mdx +0 -0
  52. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/05_proxy_management.mdx +0 -0
  53. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/06_interacting_with_other_actors.mdx +0 -0
  54. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/07_webhooks.mdx +0 -0
  55. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/08_access_apify_api.mdx +0 -0
  56. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/09_running_webserver.mdx +0 -0
  57. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/10_logging.mdx +0 -0
  58. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/11_configuration.mdx +0 -0
  59. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/12_pay_per_event.mdx +0 -0
  60. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/01_context_manager.py +0 -0
  61. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/01_init_exit.py +0 -0
  62. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/01_reboot.py +0 -0
  63. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/01_status_message.py +0 -0
  64. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/02_input.py +0 -0
  65. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_dataset_exports.py +0 -0
  66. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_dataset_read_write.py +0 -0
  67. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_deleting_storages.py +0 -0
  68. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_kvs_iterating.py +0 -0
  69. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_kvs_public_url.py +0 -0
  70. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_kvs_read_write.py +0 -0
  71. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_opening_storages.py +0 -0
  72. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/03_rq.py +0 -0
  73. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/04_actor_events.py +0 -0
  74. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_apify_proxy.py +0 -0
  75. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_apify_proxy_config.py +0 -0
  76. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_custom_proxy.py +0 -0
  77. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_custom_proxy_function.py +0 -0
  78. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_proxy_actor_input.py +0 -0
  79. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_proxy_httpx.py +0 -0
  80. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/05_proxy_rotation.py +0 -0
  81. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/06_interacting_call.py +0 -0
  82. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/06_interacting_call_task.py +0 -0
  83. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/06_interacting_metamorph.py +0 -0
  84. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/06_interacting_start.py +0 -0
  85. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/07_webhook.py +0 -0
  86. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/07_webhook_preventing.py +0 -0
  87. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/08_actor_client.py +0 -0
  88. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/08_actor_new_client.py +0 -0
  89. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/09_webserver.py +0 -0
  90. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/10_log_config.py +0 -0
  91. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/10_logger_usage.py +0 -0
  92. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/11_config.py +0 -0
  93. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/actor_charge.py +0 -0
  94. {apify-2.5.1b7 → apify-2.5.1b8}/docs/03_concepts/code/conditional_actor_charge.py +0 -0
  95. {apify-2.5.1b7 → apify-2.5.1b8}/docs/04_upgrading/upgrading_to_v2.md +0 -0
  96. {apify-2.5.1b7 → apify-2.5.1b8}/docs/pyproject.toml +0 -0
  97. {apify-2.5.1b7 → apify-2.5.1b8}/renovate.json +0 -0
  98. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/__init__.py +0 -0
  99. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_actor.py +0 -0
  100. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_charging.py +0 -0
  101. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_configuration.py +0 -0
  102. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_consts.py +0 -0
  103. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_crypto.py +0 -0
  104. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_models.py +0 -0
  105. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_platform_event_manager.py +0 -0
  106. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/_utils.py +0 -0
  107. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/__init__.py +0 -0
  108. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_apify_storage_client.py +0 -0
  109. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_dataset_client.py +0 -0
  110. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_dataset_collection_client.py +0 -0
  111. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_key_value_store_client.py +0 -0
  112. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_key_value_store_collection_client.py +0 -0
  113. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_request_queue_client.py +0 -0
  114. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/_request_queue_collection_client.py +0 -0
  115. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/apify_storage_client/py.typed +0 -0
  116. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/log.py +0 -0
  117. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/py.typed +0 -0
  118. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/__init__.py +0 -0
  119. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/_actor_runner.py +0 -0
  120. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/_async_thread.py +0 -0
  121. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/_logging_config.py +0 -0
  122. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/extensions/__init__.py +0 -0
  123. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/extensions/_httpcache.py +0 -0
  124. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/middlewares/__init__.py +0 -0
  125. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
  126. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/middlewares/py.typed +0 -0
  127. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/pipelines/__init__.py +0 -0
  128. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
  129. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/pipelines/py.typed +0 -0
  130. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/py.typed +0 -0
  131. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/requests.py +0 -0
  132. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/scheduler.py +0 -0
  133. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/scrapy/utils.py +0 -0
  134. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/storages/__init__.py +0 -0
  135. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/storages/_request_list.py +0 -0
  136. {apify-2.5.1b7 → apify-2.5.1b8}/src/apify/storages/py.typed +0 -0
  137. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/README.md +0 -0
  138. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/__init__.py +0 -0
  139. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/_utils.py +0 -0
  140. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/actor_source_base/Dockerfile +0 -0
  141. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/actor_source_base/requirements.txt +0 -0
  142. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/actor_source_base/src/__init__.py +0 -0
  143. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/actor_source_base/src/__main__.py +0 -0
  144. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/actor_source_base/src/main.py +0 -0
  145. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/conftest.py +0 -0
  146. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_api_helpers.py +0 -0
  147. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_charge.py +0 -0
  148. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_create_proxy_configuration.py +0 -0
  149. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_dataset.py +0 -0
  150. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_events.py +0 -0
  151. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_key_value_store.py +0 -0
  152. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_lifecycle.py +0 -0
  153. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_log.py +0 -0
  154. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_request_queue.py +0 -0
  155. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_actor_scrapy.py +0 -0
  156. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_fixtures.py +0 -0
  157. {apify-2.5.1b7 → apify-2.5.1b8}/tests/integration/test_request_queue.py +0 -0
  158. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/__init__.py +0 -0
  159. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/__init__.py +0 -0
  160. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
  161. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_dataset.py +0 -0
  162. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_env_helpers.py +0 -0
  163. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_helpers.py +0 -0
  164. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_key_value_store.py +0 -0
  165. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_lifecycle.py +0 -0
  166. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_log.py +0 -0
  167. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
  168. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_actor_request_queue.py +0 -0
  169. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_configuration.py +0 -0
  170. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/actor/test_request_list.py +0 -0
  171. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/conftest.py +0 -0
  172. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/__init__.py +0 -0
  173. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/extensions/__init__.py +0 -0
  174. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
  175. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/middlewares/__init__.py +0 -0
  176. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
  177. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/pipelines/__init__.py +0 -0
  178. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
  179. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/requests/__init__.py +0 -0
  180. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
  181. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
  182. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/utils/__init__.py +0 -0
  183. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
  184. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
  185. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/test_crypto.py +0 -0
  186. {apify-2.5.1b7 → apify-2.5.1b8}/tests/unit/test_platform_event_manager.py +0 -0
  187. {apify-2.5.1b7 → apify-2.5.1b8}/uv.lock +0 -0
  188. {apify-2.5.1b7 → apify-2.5.1b8}/website/.eslintrc.json +0 -0
  189. {apify-2.5.1b7 → apify-2.5.1b8}/website/babel.config.js +0 -0
  190. {apify-2.5.1b7 → apify-2.5.1b8}/website/build_api_reference.sh +0 -0
  191. {apify-2.5.1b7 → apify-2.5.1b8}/website/docusaurus.config.js +0 -0
  192. {apify-2.5.1b7 → apify-2.5.1b8}/website/generate_module_shortcuts.py +0 -0
  193. {apify-2.5.1b7 → apify-2.5.1b8}/website/package-lock.json +0 -0
  194. {apify-2.5.1b7 → apify-2.5.1b8}/website/package.json +0 -0
  195. {apify-2.5.1b7 → apify-2.5.1b8}/website/sidebars.js +0 -0
  196. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/components/ApiLink.jsx +0 -0
  197. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/components/Gradients.jsx +0 -0
  198. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/components/Highlights.jsx +0 -0
  199. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/components/Highlights.module.css +0 -0
  200. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/components/RunnableCodeBlock.jsx +0 -0
  201. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/components/RunnableCodeBlock.module.css +0 -0
  202. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/css/custom.css +0 -0
  203. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/pages/home_page_example.py +0 -0
  204. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/pages/index.js +0 -0
  205. {apify-2.5.1b7 → apify-2.5.1b8}/website/src/pages/index.module.css +0 -0
  206. {apify-2.5.1b7 → apify-2.5.1b8}/website/static/.nojekyll +0 -0
  207. {apify-2.5.1b7 → apify-2.5.1b8}/website/static/img/docs-og.png +0 -0
  208. {apify-2.5.1b7 → apify-2.5.1b8}/website/tools/docs-prettier.config.js +0 -0
  209. {apify-2.5.1b7 → apify-2.5.1b8}/website/tools/utils/externalLink.js +0 -0
@@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
8
8
  ### 🐛 Bug Fixes
9
9
 
10
10
  - Fix duplicate logs from apify logger in Scrapy integration ([#457](https://github.com/apify/apify-sdk-python/pull/457)) ([2745ee6](https://github.com/apify/apify-sdk-python/commit/2745ee6529deecb4f2838c764b9bb3fb6606762b)) by [@vdusek](https://github.com/vdusek), closes [#391](https://github.com/apify/apify-sdk-python/issues/391)
11
+ - Prefer proxy password from env var ([#468](https://github.com/apify/apify-sdk-python/pull/468)) ([1c4ad9b](https://github.com/apify/apify-sdk-python/commit/1c4ad9bcfbf6ac404f942d7d2d249b036c2e7f54)) by [@stepskop](https://github.com/stepskop)
11
12
 
12
13
 
13
14
  <!-- git-cliff-unreleased-end -->
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apify
3
- Version: 2.5.1b7
3
+ Version: 2.5.1b8
4
4
  Summary: Apify SDK for Python
5
5
  Project-URL: Homepage, https://docs.apify.com/sdk/python/
6
6
  Project-URL: Apify homepage, https://apify.com
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "apify"
7
- version = "2.5.1b7"
7
+ version = "2.5.1b8"
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" }
@@ -178,7 +178,9 @@ class ProxyConfiguration(CrawleeProxyConfiguration):
178
178
  self._country_code = country_code
179
179
 
180
180
  async def initialize(self) -> None:
181
- """Load the Apify Proxy password if the API token is provided and check access to Apify Proxy and proxy groups.
181
+ """Check if using proxy, if so, check the access.
182
+
183
+ Load the Apify Proxy password from API (only if not passed to constructor or through env var).
182
184
 
183
185
  Only called if Apify Proxy configuration is used. Also checks if country has access to Apify Proxy groups
184
186
  if the country code is provided.
@@ -187,7 +189,17 @@ class ProxyConfiguration(CrawleeProxyConfiguration):
187
189
  `ProxyConfiguration` instance instead of calling this manually.
188
190
  """
189
191
  if self._uses_apify_proxy:
190
- await self._maybe_fetch_password()
192
+ if not self._password:
193
+ await self._maybe_fetch_password()
194
+ if not self._password:
195
+ raise ValueError(
196
+ 'Apify Proxy password must be provided using the "password" constructor argument '
197
+ f'or the "{ApifyEnvVars.PROXY_PASSWORD}" environment variable. '
198
+ f'You can also provide your Apify token via the "${ApifyEnvVars.TOKEN}" environment variable, '
199
+ f'so that the SDK can fetch the proxy password from Apify API, '
200
+ f'when not provided through constructor or ${ApifyEnvVars.PROXY_PASSWORD}.'
201
+ )
202
+
191
203
  await self._check_access()
192
204
 
193
205
  async def new_proxy_info(
@@ -255,22 +267,7 @@ class ProxyConfiguration(CrawleeProxyConfiguration):
255
267
  user_info = await self._apify_client.user().get()
256
268
  if user_info:
257
269
  password = user_info['proxy']['password']
258
-
259
- if self._password:
260
- if self._password != password:
261
- logger.warning(
262
- 'The Apify Proxy password you provided belongs to a different user than the Apify '
263
- 'token you are using. Are you sure this is correct?'
264
- )
265
- else:
266
- self._password = password
267
-
268
- if not self._password:
269
- raise ValueError(
270
- 'Apify Proxy password must be provided using the "password" constructor argument '
271
- f'or the "{ApifyEnvVars.PROXY_PASSWORD}" environment variable. If you add '
272
- f'the "{ApifyEnvVars.TOKEN}" environment variable, the password will be automatically inferred.'
273
- )
270
+ self._password = password
274
271
 
275
272
  async def _check_access(self) -> None:
276
273
  proxy_status_url = f'{self._configuration.proxy_status_url}/?format=json'
@@ -432,6 +432,36 @@ async def test_initialize_with_manual_password(monkeypatch: pytest.MonkeyPatch,
432
432
  assert proxy_configuration.is_man_in_the_middle is False
433
433
 
434
434
 
435
+ async def test_initialize_prefering_password_from_env_over_calling_api(
436
+ monkeypatch: pytest.MonkeyPatch,
437
+ respx_mock: MockRouter,
438
+ patched_apify_client: ApifyClientAsync,
439
+ ) -> None:
440
+ dummy_proxy_status_url = 'http://dummy-proxy-status-url.com'
441
+ monkeypatch.setenv(ApifyEnvVars.PROXY_STATUS_URL.value, dummy_proxy_status_url)
442
+ monkeypatch.setenv(ApifyEnvVars.PROXY_PASSWORD.value, DUMMY_PASSWORD)
443
+
444
+ respx_mock.get(dummy_proxy_status_url).mock(
445
+ httpx.Response(
446
+ 200,
447
+ json={
448
+ 'connected': True,
449
+ 'connectionError': None,
450
+ 'isManInTheMiddle': False,
451
+ },
452
+ )
453
+ )
454
+
455
+ proxy_configuration = ProxyConfiguration()
456
+
457
+ await proxy_configuration.initialize()
458
+
459
+ assert proxy_configuration._password == DUMMY_PASSWORD
460
+ assert proxy_configuration.is_man_in_the_middle is False
461
+
462
+ assert len(patched_apify_client.calls['user']['get']) == 0 # type: ignore[attr-defined]
463
+
464
+
435
465
  @pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
436
466
  async def test_initialize_with_manual_password_different_than_user_one(
437
467
  monkeypatch: pytest.MonkeyPatch,
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes