apify 2.7.1b14__tar.gz → 2.7.1b15__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 (232) hide show
  1. {apify-2.7.1b14 → apify-2.7.1b15}/CHANGELOG.md +13 -0
  2. {apify-2.7.1b14 → apify-2.7.1b15}/PKG-INFO +1 -1
  3. {apify-2.7.1b14 → apify-2.7.1b15}/pyproject.toml +2 -2
  4. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_file_system/_key_value_store_client.py +22 -1
  5. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/events/test_apify_event_manager.py +1 -1
  6. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/extensions/test_httpcache.py +1 -1
  7. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/storage_clients/test_file_system.py +30 -3
  8. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/test_crypto.py +2 -2
  9. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/test_proxy_configuration.py +5 -5
  10. {apify-2.7.1b14 → apify-2.7.1b15}/uv.lock +24 -24
  11. {apify-2.7.1b14 → apify-2.7.1b15}/.editorconfig +0 -0
  12. {apify-2.7.1b14 → apify-2.7.1b15}/.github/CODEOWNERS +0 -0
  13. {apify-2.7.1b14 → apify-2.7.1b15}/.github/workflows/build_and_deploy_docs.yaml +0 -0
  14. {apify-2.7.1b14 → apify-2.7.1b15}/.github/workflows/check_pr_title.yaml +0 -0
  15. {apify-2.7.1b14 → apify-2.7.1b15}/.github/workflows/pre_release.yaml +0 -0
  16. {apify-2.7.1b14 → apify-2.7.1b15}/.github/workflows/release.yaml +0 -0
  17. {apify-2.7.1b14 → apify-2.7.1b15}/.github/workflows/run_code_checks.yaml +0 -0
  18. {apify-2.7.1b14 → apify-2.7.1b15}/.github/workflows/update_new_issue.yaml +0 -0
  19. {apify-2.7.1b14 → apify-2.7.1b15}/.gitignore +0 -0
  20. {apify-2.7.1b14 → apify-2.7.1b15}/.markdownlint.yaml +0 -0
  21. {apify-2.7.1b14 → apify-2.7.1b15}/.pre-commit-config.yaml +0 -0
  22. {apify-2.7.1b14 → apify-2.7.1b15}/CONTRIBUTING.md +0 -0
  23. {apify-2.7.1b14 → apify-2.7.1b15}/LICENSE +0 -0
  24. {apify-2.7.1b14 → apify-2.7.1b15}/Makefile +0 -0
  25. {apify-2.7.1b14 → apify-2.7.1b15}/README.md +0 -0
  26. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/01_introduction.mdx +0 -0
  27. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/02_running_actors_locally.mdx +0 -0
  28. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/03_actor_structure.mdx +0 -0
  29. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/code/01_introduction.py +0 -0
  30. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/code/actor_structure/__init__.py +0 -0
  31. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/code/actor_structure/__main__.py +0 -0
  32. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/code/actor_structure/main.py +0 -0
  33. {apify-2.7.1b14 → apify-2.7.1b15}/docs/01_overview/code/actor_structure/py.typed +0 -0
  34. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/01_actor_lifecycle.mdx +0 -0
  35. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/02_actor_input.mdx +0 -0
  36. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/03_storages.mdx +0 -0
  37. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/04_actor_events.mdx +0 -0
  38. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/05_proxy_management.mdx +0 -0
  39. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/06_interacting_with_other_actors.mdx +0 -0
  40. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/07_webhooks.mdx +0 -0
  41. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/08_access_apify_api.mdx +0 -0
  42. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/09_running_webserver.mdx +0 -0
  43. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/10_logging.mdx +0 -0
  44. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/11_configuration.mdx +0 -0
  45. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/12_pay_per_event.mdx +0 -0
  46. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/01_context_manager.py +0 -0
  47. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/01_init_exit.py +0 -0
  48. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/01_reboot.py +0 -0
  49. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/01_status_message.py +0 -0
  50. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/02_input.py +0 -0
  51. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_dataset_exports.py +0 -0
  52. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_dataset_read_write.py +0 -0
  53. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_deleting_storages.py +0 -0
  54. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_kvs_iterating.py +0 -0
  55. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_kvs_public_url.py +0 -0
  56. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_kvs_read_write.py +0 -0
  57. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_opening_storages.py +0 -0
  58. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/03_rq.py +0 -0
  59. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/04_actor_events.py +0 -0
  60. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_apify_proxy.py +0 -0
  61. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_apify_proxy_config.py +0 -0
  62. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_custom_proxy.py +0 -0
  63. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_custom_proxy_function.py +0 -0
  64. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_proxy_actor_input.py +0 -0
  65. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_proxy_httpx.py +0 -0
  66. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/05_proxy_rotation.py +0 -0
  67. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/06_interacting_call.py +0 -0
  68. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/06_interacting_call_task.py +0 -0
  69. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/06_interacting_metamorph.py +0 -0
  70. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/06_interacting_start.py +0 -0
  71. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/07_webhook.py +0 -0
  72. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/07_webhook_preventing.py +0 -0
  73. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/08_actor_client.py +0 -0
  74. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/08_actor_new_client.py +0 -0
  75. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/09_webserver.py +0 -0
  76. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/10_log_config.py +0 -0
  77. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/10_logger_usage.py +0 -0
  78. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/10_redirect_log.py +0 -0
  79. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/10_redirect_log_existing_run.py +0 -0
  80. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/11_config.py +0 -0
  81. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/actor_charge.py +0 -0
  82. {apify-2.7.1b14 → apify-2.7.1b15}/docs/02_concepts/code/conditional_actor_charge.py +0 -0
  83. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/01_beautifulsoup_httpx.mdx +0 -0
  84. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/02_parsel_impit.mdx +0 -0
  85. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/03_playwright.mdx +0 -0
  86. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/04_selenium.mdx +0 -0
  87. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/05_crawlee.mdx +0 -0
  88. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/06_scrapy.mdx +0 -0
  89. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/01_beautifulsoup_httpx.py +0 -0
  90. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/02_parsel_impit.py +0 -0
  91. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/03_playwright.py +0 -0
  92. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/04_selenium.py +0 -0
  93. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/05_crawlee_beautifulsoup.py +0 -0
  94. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/05_crawlee_parsel.py +0 -0
  95. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/05_crawlee_playwright.py +0 -0
  96. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/__init__.py +0 -0
  97. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/__main__.py +0 -0
  98. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/items.py +0 -0
  99. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/main.py +0 -0
  100. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/py.typed +0 -0
  101. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/settings.py +0 -0
  102. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
  103. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/spiders/py.typed +0 -0
  104. {apify-2.7.1b14 → apify-2.7.1b15}/docs/03_guides/code/scrapy_project/src/spiders/title.py +0 -0
  105. {apify-2.7.1b14 → apify-2.7.1b15}/docs/04_upgrading/upgrading_to_v2.md +0 -0
  106. {apify-2.7.1b14 → apify-2.7.1b15}/docs/04_upgrading/upgrading_to_v3.md +0 -0
  107. {apify-2.7.1b14 → apify-2.7.1b15}/docs/pyproject.toml +0 -0
  108. {apify-2.7.1b14 → apify-2.7.1b15}/renovate.json +0 -0
  109. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/__init__.py +0 -0
  110. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_actor.py +0 -0
  111. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_charging.py +0 -0
  112. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_configuration.py +0 -0
  113. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_consts.py +0 -0
  114. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_crypto.py +0 -0
  115. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_models.py +0 -0
  116. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_proxy_configuration.py +0 -0
  117. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/_utils.py +0 -0
  118. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/events/__init__.py +0 -0
  119. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/events/_apify_event_manager.py +0 -0
  120. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/events/_types.py +0 -0
  121. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/events/py.typed +0 -0
  122. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/log.py +0 -0
  123. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/py.typed +0 -0
  124. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/request_loaders/__init__.py +0 -0
  125. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/request_loaders/_apify_request_list.py +0 -0
  126. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/request_loaders/py.typed +0 -0
  127. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/__init__.py +0 -0
  128. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/_actor_runner.py +0 -0
  129. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/_async_thread.py +0 -0
  130. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/_logging_config.py +0 -0
  131. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/extensions/__init__.py +0 -0
  132. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/extensions/_httpcache.py +0 -0
  133. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/middlewares/__init__.py +0 -0
  134. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
  135. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/middlewares/py.typed +0 -0
  136. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/pipelines/__init__.py +0 -0
  137. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
  138. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/pipelines/py.typed +0 -0
  139. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/py.typed +0 -0
  140. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/requests.py +0 -0
  141. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/scheduler.py +0 -0
  142. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/scrapy/utils.py +0 -0
  143. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/__init__.py +0 -0
  144. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/__init__.py +0 -0
  145. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/_dataset_client.py +0 -0
  146. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/_key_value_store_client.py +0 -0
  147. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/_models.py +0 -0
  148. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/_request_queue_client.py +0 -0
  149. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/_storage_client.py +0 -0
  150. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_apify/py.typed +0 -0
  151. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_file_system/__init__.py +0 -0
  152. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/_file_system/_storage_client.py +0 -0
  153. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storage_clients/py.typed +0 -0
  154. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storages/__init__.py +0 -0
  155. {apify-2.7.1b14 → apify-2.7.1b15}/src/apify/storages/py.typed +0 -0
  156. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/README.md +0 -0
  157. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/__init__.py +0 -0
  158. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/_utils.py +0 -0
  159. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/actor_source_base/Dockerfile +0 -0
  160. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/actor_source_base/requirements.txt +0 -0
  161. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/actor_source_base/server.py +0 -0
  162. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/actor_source_base/src/__init__.py +0 -0
  163. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/actor_source_base/src/__main__.py +0 -0
  164. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/actor_source_base/src/main.py +0 -0
  165. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/conftest.py +0 -0
  166. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_api_helpers.py +0 -0
  167. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_call_timeouts.py +0 -0
  168. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_charge.py +0 -0
  169. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_create_proxy_configuration.py +0 -0
  170. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_dataset.py +0 -0
  171. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_events.py +0 -0
  172. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_key_value_store.py +0 -0
  173. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_lifecycle.py +0 -0
  174. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_log.py +0 -0
  175. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_request_queue.py +0 -0
  176. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_actor_scrapy.py +0 -0
  177. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_crawlers_with_storages.py +0 -0
  178. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_fixtures.py +0 -0
  179. {apify-2.7.1b14 → apify-2.7.1b15}/tests/integration/test_request_queue.py +0 -0
  180. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/__init__.py +0 -0
  181. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/__init__.py +0 -0
  182. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
  183. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_dataset.py +0 -0
  184. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_env_helpers.py +0 -0
  185. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_helpers.py +0 -0
  186. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_key_value_store.py +0 -0
  187. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_lifecycle.py +0 -0
  188. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_log.py +0 -0
  189. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
  190. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_actor_request_queue.py +0 -0
  191. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_configuration.py +0 -0
  192. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/actor/test_request_list.py +0 -0
  193. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/conftest.py +0 -0
  194. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/events/__init__.py +0 -0
  195. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/__init__.py +0 -0
  196. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/extensions/__init__.py +0 -0
  197. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/middlewares/__init__.py +0 -0
  198. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
  199. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/pipelines/__init__.py +0 -0
  200. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
  201. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/requests/__init__.py +0 -0
  202. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
  203. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
  204. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/utils/__init__.py +0 -0
  205. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
  206. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
  207. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/storage_clients/__init__.py +0 -0
  208. {apify-2.7.1b14 → apify-2.7.1b15}/tests/unit/storage_clients/test_apify_request_queue_client.py +0 -0
  209. {apify-2.7.1b14 → apify-2.7.1b15}/website/.eslintrc.json +0 -0
  210. {apify-2.7.1b14 → apify-2.7.1b15}/website/babel.config.js +0 -0
  211. {apify-2.7.1b14 → apify-2.7.1b15}/website/build_api_reference.sh +0 -0
  212. {apify-2.7.1b14 → apify-2.7.1b15}/website/docusaurus.config.js +0 -0
  213. {apify-2.7.1b14 → apify-2.7.1b15}/website/generate_module_shortcuts.py +0 -0
  214. {apify-2.7.1b14 → apify-2.7.1b15}/website/package-lock.json +0 -0
  215. {apify-2.7.1b14 → apify-2.7.1b15}/website/package.json +0 -0
  216. {apify-2.7.1b14 → apify-2.7.1b15}/website/sidebars.js +0 -0
  217. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/components/ApiLink.jsx +0 -0
  218. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/components/Gradients.jsx +0 -0
  219. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/components/Highlights.jsx +0 -0
  220. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/components/Highlights.module.css +0 -0
  221. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/components/RunnableCodeBlock.jsx +0 -0
  222. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/components/RunnableCodeBlock.module.css +0 -0
  223. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/css/custom.css +0 -0
  224. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/pages/home_page_example.py +0 -0
  225. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/pages/index.js +0 -0
  226. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/pages/index.module.css +0 -0
  227. {apify-2.7.1b14 → apify-2.7.1b15}/website/src/theme/DocItem/Content/index.js +0 -0
  228. {apify-2.7.1b14 → apify-2.7.1b15}/website/static/.nojekyll +0 -0
  229. {apify-2.7.1b14 → apify-2.7.1b15}/website/static/img/docs-og.png +0 -0
  230. {apify-2.7.1b14 → apify-2.7.1b15}/website/static/img/guides/redirected_logs_example.webp +0 -0
  231. {apify-2.7.1b14 → apify-2.7.1b15}/website/tools/docs-prettier.config.js +0 -0
  232. {apify-2.7.1b14 → apify-2.7.1b15}/website/tools/utils/externalLink.js +0 -0
@@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file.
16
16
  - Expose `APIFY_USER_IS_PAYING` env var to the configuration ([#507](https://github.com/apify/apify-sdk-python/pull/507)) ([0801e54](https://github.com/apify/apify-sdk-python/commit/0801e54887317c1280cc6828ecd3f2cc53287e76)) by [@stepskop](https://github.com/stepskop)
17
17
  - Resolve DeprecationWarning in ApifyEventManager ([#555](https://github.com/apify/apify-sdk-python/pull/555)) ([0c5111d](https://github.com/apify/apify-sdk-python/commit/0c5111dafe19796ec1fb9652a44c031bed9758df)) by [@vdusek](https://github.com/vdusek), closes [#343](https://github.com/apify/apify-sdk-python/issues/343)
18
18
  - Use same `client_key` for `Actor` created `request_queue` and improve its metadata estimation ([#552](https://github.com/apify/apify-sdk-python/pull/552)) ([7e4e5da](https://github.com/apify/apify-sdk-python/commit/7e4e5da81dd87e84ebeef2bd336c6c1d422cb9a7)) by [@Pijukatel](https://github.com/Pijukatel), closes [#536](https://github.com/apify/apify-sdk-python/issues/536)
19
+ - Properly process pre-existing Actor input file ([#591](https://github.com/apify/apify-sdk-python/pull/591)) ([cc5075f](https://github.com/apify/apify-sdk-python/commit/cc5075fab8c72ca5711cfd97932037b34e6997cd)) by [@Pijukatel](https://github.com/Pijukatel), closes [#590](https://github.com/apify/apify-sdk-python/issues/590)
19
20
 
20
21
  ### Chore
21
22
 
@@ -101,6 +102,18 @@ All notable changes to this project will be documented in this file.
101
102
  - Tagline overlap ([#501](https://github.com/apify/apify-sdk-python/pull/501)) ([bae8340](https://github.com/apify/apify-sdk-python/commit/bae8340c46fea756ea35ea4d591da84c09d478e2)) by [@katzino](https://github.com/katzino)
102
103
 
103
104
 
105
+ ## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
106
+
107
+ ### 🚀 Features
108
+
109
+ - **crypto:** Decrypt secret objects ([#482](https://github.com/apify/apify-sdk-python/pull/482)) ([ce9daf7](https://github.com/apify/apify-sdk-python/commit/ce9daf7381212b8dc194e8a643e5ca0dedbc0078)) by [@MFori](https://github.com/MFori)
110
+
111
+ ### 🐛 Bug Fixes
112
+
113
+ - Sync `@docusaurus` theme version [internal] ([#500](https://github.com/apify/apify-sdk-python/pull/500)) ([a7485e7](https://github.com/apify/apify-sdk-python/commit/a7485e7d2276fde464ce862573d5b95e7d4d836a)) by [@katzino](https://github.com/katzino)
114
+ - Tagline overlap ([#501](https://github.com/apify/apify-sdk-python/pull/501)) ([bae8340](https://github.com/apify/apify-sdk-python/commit/bae8340c46fea756ea35ea4d591da84c09d478e2)) by [@katzino](https://github.com/katzino)
115
+
116
+
104
117
 
105
118
  ## [2.7.3](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.3) (2025-08-11)
106
119
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apify
3
- Version: 2.7.1b14
3
+ Version: 2.7.1b15
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 = "2.7.1b14"
7
+ version = "2.7.1b15"
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" }
@@ -75,7 +75,7 @@ dev = [
75
75
  "pytest-timeout~=2.4.0",
76
76
  "pytest-xdist~=3.8.0",
77
77
  "pytest~=8.4.0",
78
- "ruff~=0.12.0",
78
+ "ruff~=0.13.0",
79
79
  "setuptools", # setuptools are used by pytest but not explicitly required
80
80
  "types-cachetools~=6.2.0.20250827",
81
81
  "uvicorn[standard]",
@@ -1,4 +1,6 @@
1
1
  import asyncio
2
+ import json
3
+ from pathlib import Path
2
4
 
3
5
  from typing_extensions import override
4
6
 
@@ -23,9 +25,15 @@ class ApifyFileSystemKeyValueStoreClient(FileSystemKeyValueStoreClient):
23
25
  the `INPUT.json` file. It also updates the metadata to reflect that the store has been purged.
24
26
  """
25
27
  kvs_input_key = Configuration.get_global_configuration().input_key
28
+
29
+ # First try to find the alternative format of the input file and process it if it exists.
30
+ for file_path in self.path_to_kvs.glob('*'):
31
+ if file_path.name == f'{kvs_input_key}.json':
32
+ await self._process_input_json(file_path)
33
+
26
34
  async with self._lock:
27
35
  for file_path in self.path_to_kvs.glob('*'):
28
- if file_path.name in {METADATA_FILENAME, f'{kvs_input_key}.json'}:
36
+ if file_path.name in {METADATA_FILENAME, kvs_input_key, f'{kvs_input_key}.{METADATA_FILENAME}'}:
29
37
  continue
30
38
  if file_path.is_file():
31
39
  await asyncio.to_thread(file_path.unlink, missing_ok=True)
@@ -34,3 +42,16 @@ class ApifyFileSystemKeyValueStoreClient(FileSystemKeyValueStoreClient):
34
42
  update_accessed_at=True,
35
43
  update_modified_at=True,
36
44
  )
45
+
46
+ async def _process_input_json(self, path: Path) -> None:
47
+ """Process simple input json file to format expected by the FileSystemKeyValueStoreClient.
48
+
49
+ For example: INPUT.json -> INPUT, INPUT.json.metadata
50
+ """
51
+ try:
52
+ f = await asyncio.to_thread(path.open)
53
+ input_data = json.load(f)
54
+ finally:
55
+ f.close()
56
+ await asyncio.to_thread(path.unlink, missing_ok=True)
57
+ await self.set_value(key=path.stem, value=input_data)
@@ -131,7 +131,7 @@ async def test_lifecycle_on_platform_without_websocket(monkeypatch: pytest.Monke
131
131
  monkeypatch.setenv(ActorEnvVars.EVENTS_WEBSOCKET_URL, 'ws://localhost:56565')
132
132
  event_manager = ApifyEventManager(Configuration.get_global_configuration())
133
133
 
134
- with pytest.raises(RuntimeError, match='Error connecting to platform events websocket!'):
134
+ with pytest.raises(RuntimeError, match=r'Error connecting to platform events websocket!'):
135
135
  async with event_manager:
136
136
  pass
137
137
 
@@ -67,5 +67,5 @@ def test_get_kvs_name(spider_name: str, expected: str) -> None:
67
67
  ],
68
68
  )
69
69
  def test_get_kvs_name_raises(spider_name: str) -> None:
70
- with pytest.raises(ValueError, match='Unsupported spider name'):
70
+ with pytest.raises(ValueError, match=r'Unsupported spider name'):
71
71
  assert get_kvs_name(spider_name)
@@ -1,11 +1,17 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
+ import json
5
+ from typing import TYPE_CHECKING
4
6
 
7
+ from crawlee import service_locator
5
8
  from crawlee._consts import METADATA_FILENAME
6
9
 
7
- from apify import Configuration
8
- from apify.storage_clients._file_system import ApifyFileSystemKeyValueStoreClient
10
+ from apify import Actor, Configuration
11
+ from apify.storage_clients._file_system import ApifyFileSystemKeyValueStoreClient, ApifyFileSystemStorageClient
12
+
13
+ if TYPE_CHECKING:
14
+ from pathlib import Path
9
15
 
10
16
 
11
17
  async def test_purge_preserves_input_file_and_metadata() -> None:
@@ -23,18 +29,21 @@ async def test_purge_preserves_input_file_and_metadata() -> None:
23
29
  kvs_path = kvs_storage_client.path_to_kvs
24
30
 
25
31
  # Create various files
26
- input_file = kvs_path / f'{configuration.input_key}.json'
32
+ input_file = kvs_path / f'{configuration.input_key}'
33
+ input_metadata_file = kvs_path / f'{configuration.input_key}.{METADATA_FILENAME}.json'
27
34
  metadata_file = kvs_path / METADATA_FILENAME
28
35
  regular_file1 = kvs_path / 'regular_file1.json'
29
36
  regular_file2 = kvs_path / 'another_file.txt'
30
37
 
31
38
  # Write content to files
32
39
  await asyncio.to_thread(input_file.write_text, '{"test": "input"}')
40
+ await asyncio.to_thread(input_metadata_file.write_text, 'some text content')
33
41
  await asyncio.to_thread(regular_file1.write_text, '{"test": "data1"}')
34
42
  await asyncio.to_thread(regular_file2.write_text, 'some text content')
35
43
 
36
44
  # Verify all files exist before purge
37
45
  assert input_file.exists()
46
+ assert input_metadata_file.exists()
38
47
  assert metadata_file.exists() # Should exist from client creation
39
48
  assert regular_file1.exists()
40
49
  assert regular_file2.exists()
@@ -53,3 +62,21 @@ async def test_purge_preserves_input_file_and_metadata() -> None:
53
62
  # Verify INPUT.json content is unchanged
54
63
  input_content = await asyncio.to_thread(input_file.read_text)
55
64
  assert input_content == '{"test": "input"}'
65
+
66
+
67
+ async def test_pre_existing_input_used_by_actor(tmp_path: Path) -> None:
68
+ pre_existing_input = {
69
+ 'foo': 'bar',
70
+ }
71
+
72
+ configuration = Configuration.get_global_configuration()
73
+ # Create pre-existing INPUT.json file
74
+ path_to_input = tmp_path / 'key_value_stores' / 'default'
75
+ path_to_input.mkdir(parents=True)
76
+ (path_to_input / f'{configuration.input_key}.json').write_text(json.dumps(pre_existing_input))
77
+
78
+ # Remove this line after https://github.com/apify/apify-sdk-python/pull/576
79
+ service_locator.set_storage_client(ApifyFileSystemStorageClient())
80
+
81
+ async with Actor():
82
+ assert pre_existing_input == await Actor.get_input()
@@ -68,7 +68,7 @@ def test_decryption_fails_with_invalid_password() -> None:
68
68
  encrypted = public_encrypt(test_value, public_key=PUBLIC_KEY)
69
69
  encrypted['encrypted_password'] = base64.b64encode(b'invalid_password').decode('utf-8')
70
70
 
71
- with pytest.raises(ValueError, match='Ciphertext length must be equal to key size.'):
71
+ with pytest.raises(ValueError, match=r'Ciphertext length must be equal to key size.'):
72
72
  private_decrypt(**encrypted, private_key=PRIVATE_KEY)
73
73
 
74
74
 
@@ -79,7 +79,7 @@ def test_decryption_fails_with_manipulated_cipher() -> None:
79
79
  b'invalid_cipher' + base64.b64decode(encrypted['encrypted_value'].encode('utf-8')),
80
80
  ).decode('utf-8')
81
81
 
82
- with pytest.raises(ValueError, match='Decryption failed, malformed encrypted value or password.'):
82
+ with pytest.raises(ValueError, match=r'Decryption failed, malformed encrypted value or password.'):
83
83
  private_decrypt(**encrypted, private_key=PRIVATE_KEY)
84
84
 
85
85
 
@@ -88,19 +88,19 @@ def test_invalid_arguments() -> None:
88
88
  with pytest.raises(ValueError, match=match_pattern):
89
89
  ProxyConfiguration(country_code=invalid_country_code) # type: ignore[arg-type]
90
90
 
91
- with pytest.raises(ValueError, match='Exactly one of .* must be specified'):
91
+ with pytest.raises(ValueError, match=r'Exactly one of .* must be specified'):
92
92
  ProxyConfiguration(
93
93
  proxy_urls=['http://proxy.com:1111'],
94
94
  new_url_function=lambda session_id=None, request=None: 'http://proxy.com:2222',
95
95
  )
96
96
 
97
- with pytest.raises(ValueError, match='Cannot combine custom proxies with Apify Proxy'):
97
+ with pytest.raises(ValueError, match=r'Cannot combine custom proxies with Apify Proxy'):
98
98
  ProxyConfiguration(proxy_urls=['http://proxy.com:1111'], groups=['GROUP1'])
99
99
 
100
100
  with pytest.raises(ValueError, match=re.escape('bad-url')):
101
101
  ProxyConfiguration(proxy_urls=['bad-url'])
102
102
 
103
- with pytest.raises(ValueError, match='Cannot combine custom proxies with Apify Proxy'):
103
+ with pytest.raises(ValueError, match=r'Cannot combine custom proxies with Apify Proxy'):
104
104
  ProxyConfiguration(
105
105
  new_url_function=lambda session_id=None, request=None: 'http://proxy.com:2222', groups=['GROUP1']
106
106
  )
@@ -241,7 +241,7 @@ async def test_invalid_custom_new_url_function() -> None:
241
241
 
242
242
  proxy_configuration = ProxyConfiguration(new_url_function=custom_new_url_function)
243
243
 
244
- with pytest.raises(ValueError, match='The provided "new_url_function" did not return a valid URL'):
244
+ with pytest.raises(ValueError, match=r'The provided "new_url_function" did not return a valid URL'):
245
245
  await proxy_configuration.new_url()
246
246
 
247
247
 
@@ -416,7 +416,7 @@ async def test_initialize_with_valid_configuration(
416
416
  async def test_initialize_without_password_or_token() -> None:
417
417
  proxy_configuration = ProxyConfiguration()
418
418
 
419
- with pytest.raises(ValueError, match='Apify Proxy password must be provided'):
419
+ with pytest.raises(ValueError, match=r'Apify Proxy password must be provided'):
420
420
  await proxy_configuration.initialize()
421
421
 
422
422
 
@@ -28,7 +28,7 @@ wheels = [
28
28
 
29
29
  [[package]]
30
30
  name = "apify"
31
- version = "2.7.1b14"
31
+ version = "2.7.1b15"
32
32
  source = { editable = "." }
33
33
  dependencies = [
34
34
  { name = "apify-client" },
@@ -103,7 +103,7 @@ dev = [
103
103
  { name = "pytest-httpserver", specifier = "~=1.1.0" },
104
104
  { name = "pytest-timeout", specifier = "~=2.4.0" },
105
105
  { name = "pytest-xdist", specifier = "~=3.8.0" },
106
- { name = "ruff", specifier = "~=0.12.0" },
106
+ { name = "ruff", specifier = "~=0.13.0" },
107
107
  { name = "setuptools" },
108
108
  { name = "types-cachetools", specifier = "~=6.2.0.20250827" },
109
109
  { name = "uvicorn", extras = ["standard"] },
@@ -1876,28 +1876,28 @@ wheels = [
1876
1876
 
1877
1877
  [[package]]
1878
1878
  name = "ruff"
1879
- version = "0.12.9"
1880
- source = { registry = "https://pypi.org/simple" }
1881
- sdist = { url = "https://files.pythonhosted.org/packages/4a/45/2e403fa7007816b5fbb324cb4f8ed3c7402a927a0a0cb2b6279879a8bfdc/ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a", size = 5254702, upload-time = "2025-08-14T16:08:55.2Z" }
1882
- wheels = [
1883
- { url = "https://files.pythonhosted.org/packages/ad/20/53bf098537adb7b6a97d98fcdebf6e916fcd11b2e21d15f8c171507909cc/ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e", size = 11759705, upload-time = "2025-08-14T16:08:12.968Z" },
1884
- { url = "https://files.pythonhosted.org/packages/20/4d/c764ee423002aac1ec66b9d541285dd29d2c0640a8086c87de59ebbe80d5/ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f", size = 12527042, upload-time = "2025-08-14T16:08:16.54Z" },
1885
- { url = "https://files.pythonhosted.org/packages/8b/45/cfcdf6d3eb5fc78a5b419e7e616d6ccba0013dc5b180522920af2897e1be/ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70", size = 11724457, upload-time = "2025-08-14T16:08:18.686Z" },
1886
- { url = "https://files.pythonhosted.org/packages/72/e6/44615c754b55662200c48bebb02196dbb14111b6e266ab071b7e7297b4ec/ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53", size = 11949446, upload-time = "2025-08-14T16:08:21.059Z" },
1887
- { url = "https://files.pythonhosted.org/packages/fd/d1/9b7d46625d617c7df520d40d5ac6cdcdf20cbccb88fad4b5ecd476a6bb8d/ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff", size = 11566350, upload-time = "2025-08-14T16:08:23.433Z" },
1888
- { url = "https://files.pythonhosted.org/packages/59/20/b73132f66f2856bc29d2d263c6ca457f8476b0bbbe064dac3ac3337a270f/ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756", size = 13270430, upload-time = "2025-08-14T16:08:25.837Z" },
1889
- { url = "https://files.pythonhosted.org/packages/a2/21/eaf3806f0a3d4c6be0a69d435646fba775b65f3f2097d54898b0fd4bb12e/ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea", size = 14264717, upload-time = "2025-08-14T16:08:27.907Z" },
1890
- { url = "https://files.pythonhosted.org/packages/d2/82/1d0c53bd37dcb582b2c521d352fbf4876b1e28bc0d8894344198f6c9950d/ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0", size = 13684331, upload-time = "2025-08-14T16:08:30.352Z" },
1891
- { url = "https://files.pythonhosted.org/packages/3b/2f/1c5cf6d8f656306d42a686f1e207f71d7cebdcbe7b2aa18e4e8a0cb74da3/ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce", size = 12739151, upload-time = "2025-08-14T16:08:32.55Z" },
1892
- { url = "https://files.pythonhosted.org/packages/47/09/25033198bff89b24d734e6479e39b1968e4c992e82262d61cdccaf11afb9/ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340", size = 12954992, upload-time = "2025-08-14T16:08:34.816Z" },
1893
- { url = "https://files.pythonhosted.org/packages/52/8e/d0dbf2f9dca66c2d7131feefc386523404014968cd6d22f057763935ab32/ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb", size = 12899569, upload-time = "2025-08-14T16:08:36.852Z" },
1894
- { url = "https://files.pythonhosted.org/packages/a0/bd/b614d7c08515b1428ed4d3f1d4e3d687deffb2479703b90237682586fa66/ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af", size = 11751983, upload-time = "2025-08-14T16:08:39.314Z" },
1895
- { url = "https://files.pythonhosted.org/packages/58/d6/383e9f818a2441b1a0ed898d7875f11273f10882f997388b2b51cb2ae8b5/ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc", size = 11538635, upload-time = "2025-08-14T16:08:41.297Z" },
1896
- { url = "https://files.pythonhosted.org/packages/20/9c/56f869d314edaa9fc1f491706d1d8a47747b9d714130368fbd69ce9024e9/ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66", size = 12534346, upload-time = "2025-08-14T16:08:43.39Z" },
1897
- { url = "https://files.pythonhosted.org/packages/bd/4b/d8b95c6795a6c93b439bc913ee7a94fda42bb30a79285d47b80074003ee7/ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7", size = 13017021, upload-time = "2025-08-14T16:08:45.889Z" },
1898
- { url = "https://files.pythonhosted.org/packages/c7/c1/5f9a839a697ce1acd7af44836f7c2181cdae5accd17a5cb85fcbd694075e/ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93", size = 11734785, upload-time = "2025-08-14T16:08:48.062Z" },
1899
- { url = "https://files.pythonhosted.org/packages/fa/66/cdddc2d1d9a9f677520b7cfc490d234336f523d4b429c1298de359a3be08/ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908", size = 12840654, upload-time = "2025-08-14T16:08:50.158Z" },
1900
- { url = "https://files.pythonhosted.org/packages/ac/fd/669816bc6b5b93b9586f3c1d87cd6bc05028470b3ecfebb5938252c47a35/ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089", size = 11949623, upload-time = "2025-08-14T16:08:52.233Z" },
1879
+ version = "0.13.0"
1880
+ source = { registry = "https://pypi.org/simple" }
1881
+ sdist = { url = "https://files.pythonhosted.org/packages/6e/1a/1f4b722862840295bcaba8c9e5261572347509548faaa99b2d57ee7bfe6a/ruff-0.13.0.tar.gz", hash = "sha256:5b4b1ee7eb35afae128ab94459b13b2baaed282b1fb0f472a73c82c996c8ae60", size = 5372863, upload-time = "2025-09-10T16:25:37.917Z" }
1882
+ wheels = [
1883
+ { url = "https://files.pythonhosted.org/packages/ac/fe/6f87b419dbe166fd30a991390221f14c5b68946f389ea07913e1719741e0/ruff-0.13.0-py3-none-linux_armv6l.whl", hash = "sha256:137f3d65d58ee828ae136a12d1dc33d992773d8f7644bc6b82714570f31b2004", size = 12187826, upload-time = "2025-09-10T16:24:39.5Z" },
1884
+ { url = "https://files.pythonhosted.org/packages/e4/25/c92296b1fc36d2499e12b74a3fdb230f77af7bdf048fad7b0a62e94ed56a/ruff-0.13.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:21ae48151b66e71fd111b7d79f9ad358814ed58c339631450c66a4be33cc28b9", size = 12933428, upload-time = "2025-09-10T16:24:43.866Z" },
1885
+ { url = "https://files.pythonhosted.org/packages/44/cf/40bc7221a949470307d9c35b4ef5810c294e6cfa3caafb57d882731a9f42/ruff-0.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:64de45f4ca5441209e41742d527944635a05a6e7c05798904f39c85bafa819e3", size = 12095543, upload-time = "2025-09-10T16:24:46.638Z" },
1886
+ { url = "https://files.pythonhosted.org/packages/f1/03/8b5ff2a211efb68c63a1d03d157e924997ada87d01bebffbd13a0f3fcdeb/ruff-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2c653ae9b9d46e0ef62fc6fbf5b979bda20a0b1d2b22f8f7eb0cde9f4963b8", size = 12312489, upload-time = "2025-09-10T16:24:49.556Z" },
1887
+ { url = "https://files.pythonhosted.org/packages/37/fc/2336ef6d5e9c8d8ea8305c5f91e767d795cd4fc171a6d97ef38a5302dadc/ruff-0.13.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cec632534332062bc9eb5884a267b689085a1afea9801bf94e3ba7498a2d207", size = 11991631, upload-time = "2025-09-10T16:24:53.439Z" },
1888
+ { url = "https://files.pythonhosted.org/packages/39/7f/f6d574d100fca83d32637d7f5541bea2f5e473c40020bbc7fc4a4d5b7294/ruff-0.13.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd628101d9f7d122e120ac7c17e0a0f468b19bc925501dbe03c1cb7f5415b24", size = 13720602, upload-time = "2025-09-10T16:24:56.392Z" },
1889
+ { url = "https://files.pythonhosted.org/packages/fd/c8/a8a5b81d8729b5d1f663348d11e2a9d65a7a9bd3c399763b1a51c72be1ce/ruff-0.13.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afe37db8e1466acb173bb2a39ca92df00570e0fd7c94c72d87b51b21bb63efea", size = 14697751, upload-time = "2025-09-10T16:24:59.89Z" },
1890
+ { url = "https://files.pythonhosted.org/packages/57/f5/183ec292272ce7ec5e882aea74937f7288e88ecb500198b832c24debc6d3/ruff-0.13.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f96a8d90bb258d7d3358b372905fe7333aaacf6c39e2408b9f8ba181f4b6ef2", size = 14095317, upload-time = "2025-09-10T16:25:03.025Z" },
1891
+ { url = "https://files.pythonhosted.org/packages/9f/8d/7f9771c971724701af7926c14dab31754e7b303d127b0d3f01116faef456/ruff-0.13.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b5e3d883e4f924c5298e3f2ee0f3085819c14f68d1e5b6715597681433f153", size = 13144418, upload-time = "2025-09-10T16:25:06.272Z" },
1892
+ { url = "https://files.pythonhosted.org/packages/a8/a6/7985ad1778e60922d4bef546688cd8a25822c58873e9ff30189cfe5dc4ab/ruff-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03447f3d18479df3d24917a92d768a89f873a7181a064858ea90a804a7538991", size = 13370843, upload-time = "2025-09-10T16:25:09.965Z" },
1893
+ { url = "https://files.pythonhosted.org/packages/64/1c/bafdd5a7a05a50cc51d9f5711da704942d8dd62df3d8c70c311e98ce9f8a/ruff-0.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:fbc6b1934eb1c0033da427c805e27d164bb713f8e273a024a7e86176d7f462cf", size = 13321891, upload-time = "2025-09-10T16:25:12.969Z" },
1894
+ { url = "https://files.pythonhosted.org/packages/bc/3e/7817f989cb9725ef7e8d2cee74186bf90555279e119de50c750c4b7a72fe/ruff-0.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8ab6a3e03665d39d4a25ee199d207a488724f022db0e1fe4002968abdb8001b", size = 12119119, upload-time = "2025-09-10T16:25:16.621Z" },
1895
+ { url = "https://files.pythonhosted.org/packages/58/07/9df080742e8d1080e60c426dce6e96a8faf9a371e2ce22eef662e3839c95/ruff-0.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2a5c62f8ccc6dd2fe259917482de7275cecc86141ee10432727c4816235bc41", size = 11961594, upload-time = "2025-09-10T16:25:19.49Z" },
1896
+ { url = "https://files.pythonhosted.org/packages/6a/f4/ae1185349197d26a2316840cb4d6c3fba61d4ac36ed728bf0228b222d71f/ruff-0.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b7b85ca27aeeb1ab421bc787009831cffe6048faae08ad80867edab9f2760945", size = 12933377, upload-time = "2025-09-10T16:25:22.371Z" },
1897
+ { url = "https://files.pythonhosted.org/packages/b6/39/e776c10a3b349fc8209a905bfb327831d7516f6058339a613a8d2aaecacd/ruff-0.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:79ea0c44a3032af768cabfd9616e44c24303af49d633b43e3a5096e009ebe823", size = 13418555, upload-time = "2025-09-10T16:25:25.681Z" },
1898
+ { url = "https://files.pythonhosted.org/packages/46/09/dca8df3d48e8b3f4202bf20b1658898e74b6442ac835bfe2c1816d926697/ruff-0.13.0-py3-none-win32.whl", hash = "sha256:4e473e8f0e6a04e4113f2e1de12a5039579892329ecc49958424e5568ef4f768", size = 12141613, upload-time = "2025-09-10T16:25:28.664Z" },
1899
+ { url = "https://files.pythonhosted.org/packages/61/21/0647eb71ed99b888ad50e44d8ec65d7148babc0e242d531a499a0bbcda5f/ruff-0.13.0-py3-none-win_amd64.whl", hash = "sha256:48e5c25c7a3713eea9ce755995767f4dcd1b0b9599b638b12946e892123d1efb", size = 13258250, upload-time = "2025-09-10T16:25:31.773Z" },
1900
+ { url = "https://files.pythonhosted.org/packages/e1/a3/03216a6a86c706df54422612981fb0f9041dbb452c3401501d4a22b942c9/ruff-0.13.0-py3-none-win_arm64.whl", hash = "sha256:ab80525317b1e1d38614addec8ac954f1b3e662de9d59114ecbf771d00cf613e", size = 12312357, upload-time = "2025-09-10T16:25:35.595Z" },
1901
1901
  ]
1902
1902
 
1903
1903
  [[package]]
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