apify 2.7.1b1__tar.gz → 2.7.1b3__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 (214) hide show
  1. {apify-2.7.1b1 → apify-2.7.1b3}/PKG-INFO +1 -1
  2. {apify-2.7.1b1 → apify-2.7.1b3}/pyproject.toml +2 -2
  3. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_actor.py +40 -5
  4. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_charging.py +13 -6
  5. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_configuration.py +1 -1
  6. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_crypto.py +0 -6
  7. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_models.py +6 -6
  8. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_platform_event_manager.py +15 -16
  9. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_proxy_configuration.py +2 -5
  10. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_utils.py +13 -1
  11. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_apify_storage_client.py +1 -1
  12. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/log.py +0 -2
  13. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/storages/_request_list.py +1 -1
  14. {apify-2.7.1b1 → apify-2.7.1b3}/uv.lock +7 -7
  15. apify-2.7.1b3/website/docusaurus.config.js +264 -0
  16. {apify-2.7.1b1 → apify-2.7.1b3}/website/package-lock.json +349 -348
  17. apify-2.7.1b1/website/docusaurus.config.js +0 -145
  18. {apify-2.7.1b1 → apify-2.7.1b3}/.editorconfig +0 -0
  19. {apify-2.7.1b1 → apify-2.7.1b3}/.github/CODEOWNERS +0 -0
  20. {apify-2.7.1b1 → apify-2.7.1b3}/.github/workflows/build_and_deploy_docs.yaml +0 -0
  21. {apify-2.7.1b1 → apify-2.7.1b3}/.github/workflows/check_pr_title.yaml +0 -0
  22. {apify-2.7.1b1 → apify-2.7.1b3}/.github/workflows/pre_release.yaml +0 -0
  23. {apify-2.7.1b1 → apify-2.7.1b3}/.github/workflows/release.yaml +0 -0
  24. {apify-2.7.1b1 → apify-2.7.1b3}/.github/workflows/run_code_checks.yaml +0 -0
  25. {apify-2.7.1b1 → apify-2.7.1b3}/.github/workflows/update_new_issue.yaml +0 -0
  26. {apify-2.7.1b1 → apify-2.7.1b3}/.gitignore +0 -0
  27. {apify-2.7.1b1 → apify-2.7.1b3}/.markdownlint.yaml +0 -0
  28. {apify-2.7.1b1 → apify-2.7.1b3}/.pre-commit-config.yaml +0 -0
  29. {apify-2.7.1b1 → apify-2.7.1b3}/CHANGELOG.md +0 -0
  30. {apify-2.7.1b1 → apify-2.7.1b3}/CONTRIBUTING.md +0 -0
  31. {apify-2.7.1b1 → apify-2.7.1b3}/LICENSE +0 -0
  32. {apify-2.7.1b1 → apify-2.7.1b3}/Makefile +0 -0
  33. {apify-2.7.1b1 → apify-2.7.1b3}/README.md +0 -0
  34. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/01_introduction.mdx +0 -0
  35. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/02_running_actors_locally.mdx +0 -0
  36. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/03_actor_structure.mdx +0 -0
  37. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/code/01_introduction.py +0 -0
  38. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/code/actor_structure/__init__.py +0 -0
  39. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/code/actor_structure/__main__.py +0 -0
  40. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/code/actor_structure/main.py +0 -0
  41. {apify-2.7.1b1 → apify-2.7.1b3}/docs/01_overview/code/actor_structure/py.typed +0 -0
  42. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/01_beautifulsoup_httpx.mdx +0 -0
  43. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/02_crawlee.mdx +0 -0
  44. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/03_playwright.mdx +0 -0
  45. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/04_selenium.mdx +0 -0
  46. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/05_scrapy.mdx +0 -0
  47. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/01_beautifulsoup_httpx.py +0 -0
  48. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/02_crawlee_beautifulsoup.py +0 -0
  49. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/02_crawlee_playwright.py +0 -0
  50. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/03_playwright.py +0 -0
  51. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/04_selenium.py +0 -0
  52. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/__init__.py +0 -0
  53. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/__main__.py +0 -0
  54. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/items.py +0 -0
  55. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/main.py +0 -0
  56. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/py.typed +0 -0
  57. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/settings.py +0 -0
  58. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
  59. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/spiders/py.typed +0 -0
  60. {apify-2.7.1b1 → apify-2.7.1b3}/docs/02_guides/code/scrapy_project/src/spiders/title.py +0 -0
  61. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/01_actor_lifecycle.mdx +0 -0
  62. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/02_actor_input.mdx +0 -0
  63. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/03_storages.mdx +0 -0
  64. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/04_actor_events.mdx +0 -0
  65. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/05_proxy_management.mdx +0 -0
  66. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/06_interacting_with_other_actors.mdx +0 -0
  67. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/07_webhooks.mdx +0 -0
  68. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/08_access_apify_api.mdx +0 -0
  69. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/09_running_webserver.mdx +0 -0
  70. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/10_logging.mdx +0 -0
  71. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/11_configuration.mdx +0 -0
  72. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/12_pay_per_event.mdx +0 -0
  73. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/01_context_manager.py +0 -0
  74. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/01_init_exit.py +0 -0
  75. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/01_reboot.py +0 -0
  76. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/01_status_message.py +0 -0
  77. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/02_input.py +0 -0
  78. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_dataset_exports.py +0 -0
  79. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_dataset_read_write.py +0 -0
  80. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_deleting_storages.py +0 -0
  81. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_kvs_iterating.py +0 -0
  82. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_kvs_public_url.py +0 -0
  83. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_kvs_read_write.py +0 -0
  84. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_opening_storages.py +0 -0
  85. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/03_rq.py +0 -0
  86. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/04_actor_events.py +0 -0
  87. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_apify_proxy.py +0 -0
  88. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_apify_proxy_config.py +0 -0
  89. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_custom_proxy.py +0 -0
  90. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_custom_proxy_function.py +0 -0
  91. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_proxy_actor_input.py +0 -0
  92. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_proxy_httpx.py +0 -0
  93. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/05_proxy_rotation.py +0 -0
  94. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/06_interacting_call.py +0 -0
  95. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/06_interacting_call_task.py +0 -0
  96. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/06_interacting_metamorph.py +0 -0
  97. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/06_interacting_start.py +0 -0
  98. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/07_webhook.py +0 -0
  99. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/07_webhook_preventing.py +0 -0
  100. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/08_actor_client.py +0 -0
  101. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/08_actor_new_client.py +0 -0
  102. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/09_webserver.py +0 -0
  103. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/10_log_config.py +0 -0
  104. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/10_logger_usage.py +0 -0
  105. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/10_redirect_log.py +0 -0
  106. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/10_redirect_log_existing_run.py +0 -0
  107. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/11_config.py +0 -0
  108. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/actor_charge.py +0 -0
  109. {apify-2.7.1b1 → apify-2.7.1b3}/docs/03_concepts/code/conditional_actor_charge.py +0 -0
  110. {apify-2.7.1b1 → apify-2.7.1b3}/docs/04_upgrading/upgrading_to_v2.md +0 -0
  111. {apify-2.7.1b1 → apify-2.7.1b3}/docs/pyproject.toml +0 -0
  112. {apify-2.7.1b1 → apify-2.7.1b3}/renovate.json +0 -0
  113. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/__init__.py +0 -0
  114. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/_consts.py +0 -0
  115. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/__init__.py +0 -0
  116. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_dataset_client.py +0 -0
  117. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_dataset_collection_client.py +0 -0
  118. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_key_value_store_client.py +0 -0
  119. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_key_value_store_collection_client.py +0 -0
  120. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_request_queue_client.py +0 -0
  121. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/_request_queue_collection_client.py +0 -0
  122. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/apify_storage_client/py.typed +0 -0
  123. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/py.typed +0 -0
  124. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/__init__.py +0 -0
  125. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/_actor_runner.py +0 -0
  126. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/_async_thread.py +0 -0
  127. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/_logging_config.py +0 -0
  128. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/extensions/__init__.py +0 -0
  129. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/extensions/_httpcache.py +0 -0
  130. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/middlewares/__init__.py +0 -0
  131. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
  132. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/middlewares/py.typed +0 -0
  133. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/pipelines/__init__.py +0 -0
  134. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
  135. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/pipelines/py.typed +0 -0
  136. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/py.typed +0 -0
  137. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/requests.py +0 -0
  138. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/scheduler.py +0 -0
  139. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/scrapy/utils.py +0 -0
  140. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/storages/__init__.py +0 -0
  141. {apify-2.7.1b1 → apify-2.7.1b3}/src/apify/storages/py.typed +0 -0
  142. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/README.md +0 -0
  143. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/__init__.py +0 -0
  144. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/_utils.py +0 -0
  145. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/actor_source_base/Dockerfile +0 -0
  146. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/actor_source_base/requirements.txt +0 -0
  147. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/actor_source_base/src/__init__.py +0 -0
  148. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/actor_source_base/src/__main__.py +0 -0
  149. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/actor_source_base/src/main.py +0 -0
  150. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/conftest.py +0 -0
  151. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_api_helpers.py +0 -0
  152. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_call_timeouts.py +0 -0
  153. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_charge.py +0 -0
  154. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_create_proxy_configuration.py +0 -0
  155. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_dataset.py +0 -0
  156. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_events.py +0 -0
  157. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_key_value_store.py +0 -0
  158. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_lifecycle.py +0 -0
  159. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_log.py +0 -0
  160. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_request_queue.py +0 -0
  161. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_actor_scrapy.py +0 -0
  162. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_fixtures.py +0 -0
  163. {apify-2.7.1b1 → apify-2.7.1b3}/tests/integration/test_request_queue.py +0 -0
  164. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/__init__.py +0 -0
  165. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/__init__.py +0 -0
  166. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
  167. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_dataset.py +0 -0
  168. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_env_helpers.py +0 -0
  169. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_helpers.py +0 -0
  170. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_key_value_store.py +0 -0
  171. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_lifecycle.py +0 -0
  172. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_log.py +0 -0
  173. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
  174. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_actor_request_queue.py +0 -0
  175. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_configuration.py +0 -0
  176. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/actor/test_request_list.py +0 -0
  177. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/conftest.py +0 -0
  178. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/__init__.py +0 -0
  179. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/extensions/__init__.py +0 -0
  180. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
  181. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/middlewares/__init__.py +0 -0
  182. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
  183. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/pipelines/__init__.py +0 -0
  184. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
  185. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/requests/__init__.py +0 -0
  186. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
  187. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
  188. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/utils/__init__.py +0 -0
  189. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
  190. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
  191. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/test_crypto.py +0 -0
  192. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/test_platform_event_manager.py +0 -0
  193. {apify-2.7.1b1 → apify-2.7.1b3}/tests/unit/test_proxy_configuration.py +0 -0
  194. {apify-2.7.1b1 → apify-2.7.1b3}/website/.eslintrc.json +0 -0
  195. {apify-2.7.1b1 → apify-2.7.1b3}/website/babel.config.js +0 -0
  196. {apify-2.7.1b1 → apify-2.7.1b3}/website/build_api_reference.sh +0 -0
  197. {apify-2.7.1b1 → apify-2.7.1b3}/website/generate_module_shortcuts.py +0 -0
  198. {apify-2.7.1b1 → apify-2.7.1b3}/website/package.json +0 -0
  199. {apify-2.7.1b1 → apify-2.7.1b3}/website/sidebars.js +0 -0
  200. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/components/ApiLink.jsx +0 -0
  201. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/components/Gradients.jsx +0 -0
  202. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/components/Highlights.jsx +0 -0
  203. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/components/Highlights.module.css +0 -0
  204. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/components/RunnableCodeBlock.jsx +0 -0
  205. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/components/RunnableCodeBlock.module.css +0 -0
  206. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/css/custom.css +0 -0
  207. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/pages/home_page_example.py +0 -0
  208. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/pages/index.js +0 -0
  209. {apify-2.7.1b1 → apify-2.7.1b3}/website/src/pages/index.module.css +0 -0
  210. {apify-2.7.1b1 → apify-2.7.1b3}/website/static/.nojekyll +0 -0
  211. {apify-2.7.1b1 → apify-2.7.1b3}/website/static/img/docs-og.png +0 -0
  212. {apify-2.7.1b1 → apify-2.7.1b3}/website/static/img/guides/redirected_logs_example.webp +0 -0
  213. {apify-2.7.1b1 → apify-2.7.1b3}/website/tools/docs-prettier.config.js +0 -0
  214. {apify-2.7.1b1 → apify-2.7.1b3}/website/tools/utils/externalLink.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apify
3
- Version: 2.7.1b1
3
+ Version: 2.7.1b3
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.1b1"
7
+ version = "2.7.1b3"
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" }
@@ -64,7 +64,7 @@ scrapy = ["scrapy>=2.11.0"]
64
64
  dev = [
65
65
  "build~=1.2.0",
66
66
  "dycw-pytest-only>=2.1.1",
67
- "griffe~=1.7.0",
67
+ "griffe~=1.8.0",
68
68
  "mypy~=1.17.0",
69
69
  "pre-commit~=4.2.0",
70
70
  "pydoc-markdown~=4.8.0",
@@ -13,7 +13,7 @@ from pydantic import AliasChoices
13
13
 
14
14
  from apify_client import ApifyClientAsync
15
15
  from apify_shared.consts import ActorEnvVars, ActorExitCodes, ApifyEnvVars
16
- from apify_shared.utils import ignore_docs, maybe_extract_enum_member_value
16
+ from apify_shared.utils import maybe_extract_enum_member_value
17
17
  from crawlee import service_locator
18
18
  from crawlee.events import (
19
19
  Event,
@@ -54,9 +54,46 @@ MainReturnType = TypeVar('MainReturnType')
54
54
 
55
55
 
56
56
  @docs_name('Actor')
57
- @docs_group('Classes')
57
+ @docs_group('Actor')
58
58
  class _ActorType:
59
- """The class of `Actor`. Only make a new instance if you're absolutely sure you need to."""
59
+ """The core class for building Actors on the Apify platform.
60
+
61
+ Actors are serverless programs running in the cloud that can perform anything from simple actions
62
+ (such as filling out a web form or sending an email) to complex operations (such as crawling an
63
+ entire website or removing duplicates from a large dataset). They are packaged as Docker containers
64
+ which accept well-defined JSON input, perform an action, and optionally produce well-defined output.
65
+
66
+ ### References
67
+
68
+ - Apify platform documentation: https://docs.apify.com/platform/actors
69
+ - Actor whitepaper: https://whitepaper.actor/
70
+
71
+ ### Usage
72
+
73
+ ```python
74
+ import asyncio
75
+
76
+ import httpx
77
+ from apify import Actor
78
+ from bs4 import BeautifulSoup
79
+
80
+
81
+ async def main() -> None:
82
+ async with Actor:
83
+ actor_input = await Actor.get_input()
84
+ async with httpx.AsyncClient() as client:
85
+ response = await client.get(actor_input['url'])
86
+ soup = BeautifulSoup(response.content, 'html.parser')
87
+ data = {
88
+ 'url': actor_input['url'],
89
+ 'title': soup.title.string if soup.title else None,
90
+ }
91
+ await Actor.push_data(data)
92
+
93
+ if __name__ == '__main__':
94
+ asyncio.run(main())
95
+ ```
96
+ """
60
97
 
61
98
  _is_rebooting = False
62
99
  _is_any_instance_initialized = False
@@ -108,7 +145,6 @@ class _ActorType:
108
145
 
109
146
  self._is_initialized = False
110
147
 
111
- @ignore_docs
112
148
  async def __aenter__(self) -> Self:
113
149
  """Initialize the Actor.
114
150
 
@@ -120,7 +156,6 @@ class _ActorType:
120
156
  await self.init()
121
157
  return self
122
158
 
123
- @ignore_docs
124
159
  async def __aexit__(
125
160
  self,
126
161
  _exc_type: type[BaseException] | None,
@@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Protocol
8
8
 
9
9
  from pydantic import TypeAdapter
10
10
 
11
- from apify_shared.utils import ignore_docs
12
11
  from crawlee._utils.context import ensure_context
13
12
 
14
13
  from apify._models import ActorRun, PricingModel
@@ -26,9 +25,18 @@ if TYPE_CHECKING:
26
25
  run_validator = TypeAdapter[ActorRun | None](ActorRun | None)
27
26
 
28
27
 
29
- @docs_group('Interfaces')
28
+ @docs_group('Charging')
30
29
  class ChargingManager(Protocol):
31
- """Provides fine-grained access to pay-per-event functionality."""
30
+ """Provides fine-grained access to pay-per-event functionality.
31
+
32
+ The ChargingManager allows you to charge for specific events in your Actor when using
33
+ the pay-per-event pricing model. This enables precise cost control and transparent
34
+ billing for different operations within your Actor.
35
+
36
+ ### References
37
+
38
+ - Apify platform documentation: https://docs.apify.com/platform/actors/publishing/monetize
39
+ """
32
40
 
33
41
  async def charge(self, event_name: str, count: int = 1) -> ChargeResult:
34
42
  """Charge for a specified number of events - sub-operations of the Actor.
@@ -57,7 +65,7 @@ class ChargingManager(Protocol):
57
65
  """
58
66
 
59
67
 
60
- @docs_group('Data structures')
68
+ @docs_group('Charging')
61
69
  @dataclass(frozen=True)
62
70
  class ChargeResult:
63
71
  """Result of the `ChargingManager.charge` method."""
@@ -72,7 +80,7 @@ class ChargeResult:
72
80
  """How many events of each known type can still be charged within the limit."""
73
81
 
74
82
 
75
- @docs_group('Data structures')
83
+ @docs_group('Charging')
76
84
  @dataclass
77
85
  class ActorPricingInfo:
78
86
  """Result of the `ChargingManager.get_pricing_info` method."""
@@ -90,7 +98,6 @@ class ActorPricingInfo:
90
98
  """Price of every known event type."""
91
99
 
92
100
 
93
- @ignore_docs
94
101
  class ChargingManagerImplementation(ChargingManager):
95
102
  """Implementation of the `ChargingManager` Protocol - this is only meant to be instantiated internally."""
96
103
 
@@ -25,7 +25,7 @@ def _transform_to_list(value: Any) -> list[str] | None:
25
25
  return value if isinstance(value, list) else str(value).split(',')
26
26
 
27
27
 
28
- @docs_group('Classes')
28
+ @docs_group('Configuration')
29
29
  class Configuration(CrawleeConfiguration):
30
30
  """A class for specifying the configuration of an Actor.
31
31
 
@@ -12,7 +12,6 @@ from cryptography.hazmat.primitives import hashes, serialization
12
12
  from cryptography.hazmat.primitives.asymmetric import padding, rsa
13
13
  from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
14
14
 
15
- from apify_shared.utils import ignore_docs
16
15
  from crawlee._utils.crypto import crypto_random_object_id
17
16
 
18
17
  from apify._consts import ENCRYPTED_INPUT_VALUE_REGEXP, ENCRYPTED_JSON_VALUE_PREFIX, ENCRYPTED_STRING_VALUE_PREFIX
@@ -22,7 +21,6 @@ ENCRYPTION_IV_LENGTH = 16
22
21
  ENCRYPTION_AUTH_TAG_LENGTH = 16
23
22
 
24
23
 
25
- @ignore_docs
26
24
  def public_encrypt(value: str, *, public_key: rsa.RSAPublicKey) -> dict:
27
25
  """Encrypts the given value using AES cipher and the password for encryption using the public key.
28
26
 
@@ -66,7 +64,6 @@ def public_encrypt(value: str, *, public_key: rsa.RSAPublicKey) -> dict:
66
64
  }
67
65
 
68
66
 
69
- @ignore_docs
70
67
  def private_decrypt(
71
68
  encrypted_password: str,
72
69
  encrypted_value: str,
@@ -118,7 +115,6 @@ def private_decrypt(
118
115
  return decipher_bytes.decode('utf-8')
119
116
 
120
117
 
121
- @ignore_docs
122
118
  def load_private_key(private_key_file_base64: str, private_key_password: str) -> rsa.RSAPrivateKey:
123
119
  private_key = serialization.load_pem_private_key(
124
120
  base64.b64decode(private_key_file_base64.encode('utf-8')),
@@ -138,7 +134,6 @@ def _load_public_key(public_key_file_base64: str) -> rsa.RSAPublicKey:
138
134
  return public_key
139
135
 
140
136
 
141
- @ignore_docs
142
137
  def decrypt_input_secrets(private_key: rsa.RSAPrivateKey, input_data: Any) -> Any:
143
138
  """Decrypt input secrets."""
144
139
  if not isinstance(input_data, dict):
@@ -180,7 +175,6 @@ def encode_base62(num: int) -> str:
180
175
  return res
181
176
 
182
177
 
183
- @ignore_docs
184
178
  def create_hmac_signature(secret_key: str, message: str) -> str:
185
179
  """Generate an HMAC signature and encodes it using Base62. Base62 encoding reduces the signature length.
186
180
 
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
16
16
  from typing import TypeAlias
17
17
 
18
18
 
19
- @docs_group('Data structures')
19
+ @docs_group('Actor')
20
20
  class Webhook(BaseModel):
21
21
  __model_config__ = ConfigDict(populate_by_name=True)
22
22
 
@@ -35,14 +35,14 @@ class Webhook(BaseModel):
35
35
  ] = None
36
36
 
37
37
 
38
- @docs_group('Data structures')
38
+ @docs_group('Actor')
39
39
  class ActorRunMeta(BaseModel):
40
40
  __model_config__ = ConfigDict(populate_by_name=True)
41
41
 
42
42
  origin: Annotated[MetaOrigin, Field()]
43
43
 
44
44
 
45
- @docs_group('Data structures')
45
+ @docs_group('Actor')
46
46
  class ActorRunStats(BaseModel):
47
47
  __model_config__ = ConfigDict(populate_by_name=True)
48
48
 
@@ -63,7 +63,7 @@ class ActorRunStats(BaseModel):
63
63
  compute_units: Annotated[float, Field(alias='computeUnits')]
64
64
 
65
65
 
66
- @docs_group('Data structures')
66
+ @docs_group('Actor')
67
67
  class ActorRunOptions(BaseModel):
68
68
  __model_config__ = ConfigDict(populate_by_name=True)
69
69
 
@@ -74,7 +74,7 @@ class ActorRunOptions(BaseModel):
74
74
  max_total_charge_usd: Annotated[Decimal | None, Field(alias='maxTotalChargeUsd')] = None
75
75
 
76
76
 
77
- @docs_group('Data structures')
77
+ @docs_group('Actor')
78
78
  class ActorRunUsage(BaseModel):
79
79
  __model_config__ = ConfigDict(populate_by_name=True)
80
80
 
@@ -92,7 +92,7 @@ class ActorRunUsage(BaseModel):
92
92
  proxy_serps: Annotated[float | None, Field(alias='PROXY_SERPS')] = None
93
93
 
94
94
 
95
- @docs_group('Data structures')
95
+ @docs_group('Actor')
96
96
  class ActorRun(BaseModel):
97
97
  __model_config__ = ConfigDict(populate_by_name=True)
98
98
 
@@ -27,17 +27,10 @@ if TYPE_CHECKING:
27
27
 
28
28
  from apify._configuration import Configuration
29
29
 
30
-
31
30
  __all__ = ['EventManager', 'LocalEventManager', 'PlatformEventManager']
32
31
 
33
32
 
34
- @docs_group('Data structures')
35
- class PersistStateEvent(BaseModel):
36
- name: Literal[Event.PERSIST_STATE]
37
- data: Annotated[EventPersistStateData, Field(default_factory=lambda: EventPersistStateData(is_migrating=False))]
38
-
39
-
40
- @docs_group('Data structures')
33
+ @docs_group('Event data')
41
34
  class SystemInfoEventData(BaseModel):
42
35
  mem_avg_bytes: Annotated[float, Field(alias='memAvgBytes')]
43
36
  mem_current_bytes: Annotated[float, Field(alias='memCurrentBytes')]
@@ -64,31 +57,37 @@ class SystemInfoEventData(BaseModel):
64
57
  )
65
58
 
66
59
 
67
- @docs_group('Data structures')
60
+ @docs_group('Events')
61
+ class PersistStateEvent(BaseModel):
62
+ name: Literal[Event.PERSIST_STATE]
63
+ data: Annotated[EventPersistStateData, Field(default_factory=lambda: EventPersistStateData(is_migrating=False))]
64
+
65
+
66
+ @docs_group('Events')
68
67
  class SystemInfoEvent(BaseModel):
69
68
  name: Literal[Event.SYSTEM_INFO]
70
69
  data: SystemInfoEventData
71
70
 
72
71
 
73
- @docs_group('Data structures')
72
+ @docs_group('Events')
74
73
  class MigratingEvent(BaseModel):
75
74
  name: Literal[Event.MIGRATING]
76
75
  data: Annotated[EventMigratingData, Field(default_factory=EventMigratingData)]
77
76
 
78
77
 
79
- @docs_group('Data structures')
78
+ @docs_group('Events')
80
79
  class AbortingEvent(BaseModel):
81
80
  name: Literal[Event.ABORTING]
82
81
  data: Annotated[EventAbortingData, Field(default_factory=EventAbortingData)]
83
82
 
84
83
 
85
- @docs_group('Data structures')
84
+ @docs_group('Events')
86
85
  class ExitEvent(BaseModel):
87
86
  name: Literal[Event.EXIT]
88
87
  data: Annotated[EventExitData, Field(default_factory=EventExitData)]
89
88
 
90
89
 
91
- @docs_group('Data structures')
90
+ @docs_group('Events')
92
91
  class EventWithoutData(BaseModel):
93
92
  name: Literal[
94
93
  Event.SESSION_RETIRED,
@@ -101,13 +100,13 @@ class EventWithoutData(BaseModel):
101
100
  data: Any = None
102
101
 
103
102
 
104
- @docs_group('Data structures')
103
+ @docs_group('Events')
105
104
  class DeprecatedEvent(BaseModel):
106
105
  name: Literal['cpuInfo']
107
106
  data: Annotated[dict[str, Any], Field(default_factory=dict)]
108
107
 
109
108
 
110
- @docs_group('Data structures')
109
+ @docs_group('Events')
111
110
  class UnknownEvent(BaseModel):
112
111
  name: str
113
112
  data: Annotated[dict[str, Any], Field(default_factory=dict)]
@@ -120,7 +119,7 @@ event_data_adapter = TypeAdapter[EventMessage | DeprecatedEvent | UnknownEvent](
120
119
  )
121
120
 
122
121
 
123
- @docs_group('Classes')
122
+ @docs_group('Event managers')
124
123
  class PlatformEventManager(EventManager):
125
124
  """A class for managing Actor events.
126
125
 
@@ -10,7 +10,6 @@ from urllib.parse import urljoin, urlparse
10
10
  import httpx
11
11
 
12
12
  from apify_shared.consts import ApifyEnvVars
13
- from apify_shared.utils import ignore_docs
14
13
  from crawlee.proxy_configuration import ProxyConfiguration as CrawleeProxyConfiguration
15
14
  from crawlee.proxy_configuration import ProxyInfo as CrawleeProxyInfo
16
15
  from crawlee.proxy_configuration import _NewUrlFunction
@@ -28,7 +27,6 @@ COUNTRY_CODE_REGEX = re.compile(r'^[A-Z]{2}$')
28
27
  SESSION_ID_MAX_LENGTH = 50
29
28
 
30
29
 
31
- @ignore_docs
32
30
  def is_url(url: str) -> bool:
33
31
  """Check if the given string is a valid URL."""
34
32
  try:
@@ -69,7 +67,7 @@ def _check(
69
67
  raise ValueError(f'{error_str} does not match pattern {pattern.pattern!r}')
70
68
 
71
69
 
72
- @docs_group('Classes')
70
+ @docs_group('Configuration')
73
71
  @dataclass
74
72
  class ProxyInfo(CrawleeProxyInfo):
75
73
  """Provides information about a proxy connection that is used for requests."""
@@ -89,7 +87,7 @@ class ProxyInfo(CrawleeProxyInfo):
89
87
  """
90
88
 
91
89
 
92
- @docs_group('Classes')
90
+ @docs_group('Configuration')
93
91
  class ProxyConfiguration(CrawleeProxyConfiguration):
94
92
  """Configures a connection to a proxy server with the provided options.
95
93
 
@@ -104,7 +102,6 @@ class ProxyConfiguration(CrawleeProxyConfiguration):
104
102
 
105
103
  _configuration: Configuration
106
104
 
107
- @ignore_docs
108
105
  def __init__(
109
106
  self,
110
107
  *,
@@ -30,7 +30,19 @@ def is_running_in_ipython() -> bool:
30
30
  return getattr(builtins, '__IPYTHON__', False)
31
31
 
32
32
 
33
- GroupName = Literal['Classes', 'Abstract classes', 'Interfaces', 'Data structures', 'Errors', 'Functions']
33
+ # The order of the rendered API groups is defined in the website/docusaurus.config.js file.
34
+ GroupName = Literal[
35
+ 'Actor',
36
+ 'Charging',
37
+ 'Configuration',
38
+ 'Event data',
39
+ 'Event managers',
40
+ 'Events',
41
+ 'Request loaders',
42
+ 'Storage clients',
43
+ 'Storage data',
44
+ 'Storages',
45
+ ]
34
46
 
35
47
 
36
48
  def docs_group(group_name: GroupName) -> Callable: # noqa: ARG001
@@ -20,7 +20,7 @@ if TYPE_CHECKING:
20
20
  from apify._configuration import Configuration
21
21
 
22
22
 
23
- @docs_group('Classes')
23
+ @docs_group('Storage clients')
24
24
  class ApifyStorageClient(StorageClient):
25
25
  """A storage client implementation based on the Apify platform storage."""
26
26
 
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import logging
4
4
 
5
- from apify_shared.utils import ignore_docs
6
5
  from crawlee._log_config import CrawleeLogFormatter, configure_logger, get_configured_log_level
7
6
 
8
7
  # Name of the logger used throughout the library (resolves to 'apify')
@@ -12,7 +11,6 @@ logger_name = __name__.split('.')[0]
12
11
  logger = logging.getLogger(logger_name)
13
12
 
14
13
 
15
- @ignore_docs
16
14
  class ActorLogFormatter(CrawleeLogFormatter): # noqa: D101 (Inherited from parent class)
17
15
  pass
18
16
 
@@ -38,7 +38,7 @@ class _SimpleUrlInput(_RequestDetails):
38
38
  url_input_adapter = TypeAdapter(list[_RequestsFromUrlInput | _SimpleUrlInput])
39
39
 
40
40
 
41
- @docs_group('Classes')
41
+ @docs_group('Request loaders')
42
42
  class RequestList(CrawleeRequestList):
43
43
  """Extends crawlee RequestList.
44
44
 
@@ -84,7 +84,7 @@ provides-extras = ["scrapy"]
84
84
  dev = [
85
85
  { name = "build", specifier = "~=1.2.0" },
86
86
  { name = "dycw-pytest-only", specifier = ">=2.1.1" },
87
- { name = "griffe", specifier = "~=1.7.0" },
87
+ { name = "griffe", specifier = "~=1.8.0" },
88
88
  { name = "mypy", specifier = "~=1.17.0" },
89
89
  { name = "pre-commit", specifier = "~=4.2.0" },
90
90
  { name = "pydoc-markdown", specifier = "~=4.8.0" },
@@ -319,11 +319,11 @@ wheels = [
319
319
 
320
320
  [[package]]
321
321
  name = "certifi"
322
- version = "2025.7.9"
322
+ version = "2025.7.14"
323
323
  source = { registry = "https://pypi.org/simple" }
324
- sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386, upload-time = "2025-07-09T02:13:58.874Z" }
324
+ sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981, upload-time = "2025-07-14T03:29:28.449Z" }
325
325
  wheels = [
326
- { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230, upload-time = "2025-07-09T02:13:57.007Z" },
326
+ { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722, upload-time = "2025-07-14T03:29:26.863Z" },
327
327
  ]
328
328
 
329
329
  [[package]]
@@ -793,14 +793,14 @@ wheels = [
793
793
 
794
794
  [[package]]
795
795
  name = "griffe"
796
- version = "1.7.3"
796
+ version = "1.8.0"
797
797
  source = { registry = "https://pypi.org/simple" }
798
798
  dependencies = [
799
799
  { name = "colorama" },
800
800
  ]
801
- sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137, upload-time = "2025-04-23T11:29:09.147Z" }
801
+ sdist = { url = "https://files.pythonhosted.org/packages/dd/72/10c5799440ce6f3001b7913988b50a99d7b156da71fe19be06178d5a2dd5/griffe-1.8.0.tar.gz", hash = "sha256:0b4658443858465c13b2de07ff5e15a1032bc889cfafad738a476b8b97bb28d7", size = 401098, upload-time = "2025-07-22T23:45:54.629Z" }
802
802
  wheels = [
803
- { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload-time = "2025-04-23T11:29:07.145Z" },
803
+ { url = "https://files.pythonhosted.org/packages/bf/c4/a839fcc28bebfa72925d9121c4d39398f77f95bcba0cf26c972a0cfb1de7/griffe-1.8.0-py3-none-any.whl", hash = "sha256:110faa744b2c5c84dd432f4fa9aa3b14805dd9519777dd55e8db214320593b02", size = 132487, upload-time = "2025-07-22T23:45:52.778Z" },
804
804
  ]
805
805
 
806
806
  [[package]]