crawlee 1.0.2b1__tar.gz → 1.0.2b3__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 crawlee might be problematic. Click here for more details.

Files changed (679) hide show
  1. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/CHANGELOG.md +18 -0
  2. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/PKG-INFO +1 -1
  3. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/upgrading/upgrading_to_v1.md +4 -0
  4. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/pyproject.toml +1 -1
  5. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/_dataset_client.py +2 -2
  6. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/_key_value_store_client.py +2 -2
  7. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/_request_queue_client.py +2 -2
  8. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_memory/_dataset_client.py +2 -2
  9. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_memory/_key_value_store_client.py +2 -2
  10. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_memory/_request_queue_client.py +2 -2
  11. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/_dataset_client.py +2 -2
  12. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/_key_value_store_client.py +2 -2
  13. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/_request_queue_client.py +2 -2
  14. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/_base.py +3 -1
  15. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/_dataset.py +3 -0
  16. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/_key_value_store.py +3 -0
  17. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/_request_queue.py +3 -0
  18. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/_storage_instance_manager.py +9 -1
  19. crawlee-1.0.2b3/src/crawlee/storages/_utils.py +11 -0
  20. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_adaptive_playwright/test_adaptive_playwright_crawler.py +1 -1
  21. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/otel/test_crawler_instrumentor.py +1 -1
  22. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/sessions/test_session_pool.py +1 -1
  23. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_file_system/test_fs_dataset_client.py +3 -3
  24. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_file_system/test_fs_kvs_client.py +3 -3
  25. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_file_system/test_fs_rq_client.py +3 -3
  26. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_memory/test_memory_dataset_client.py +3 -3
  27. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_memory/test_memory_kvs_client.py +3 -3
  28. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_memory/test_memory_rq_client.py +3 -3
  29. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_sql/test_sql_dataset_client.py +6 -6
  30. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_sql/test_sql_kvs_client.py +6 -6
  31. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storage_clients/_sql/test_sql_rq_client.py +6 -6
  32. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storages/test_dataset.py +64 -32
  33. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storages/test_key_value_store.py +61 -29
  34. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storages/test_request_queue.py +63 -31
  35. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/uv.lock +1 -1
  36. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.editorconfig +0 -0
  37. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/CODEOWNERS +0 -0
  38. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/pull_request_template.md +0 -0
  39. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/build_and_deploy_docs.yaml +0 -0
  40. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/check_pr_title.yaml +0 -0
  41. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/pre_release.yaml +0 -0
  42. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/release.yaml +0 -0
  43. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/run_code_checks.yaml +0 -0
  44. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/templates_e2e_tests.yaml +0 -0
  45. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.github/workflows/update_new_issue.yaml +0 -0
  46. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.gitignore +0 -0
  47. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.markdownlint.yaml +0 -0
  48. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/.pre-commit-config.yaml +0 -0
  49. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/CONTRIBUTING.md +0 -0
  50. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/LICENSE +0 -0
  51. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/Makefile +0 -0
  52. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/README.md +0 -0
  53. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/apify_platform.mdx +0 -0
  54. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/apify/crawler_as_actor_example.py +0 -0
  55. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/apify/get_public_url.py +0 -0
  56. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/apify/log_with_config_example.py +0 -0
  57. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/apify/proxy_advanced_example.py +0 -0
  58. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/apify/proxy_example.py +0 -0
  59. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/google/cloud_run_example.py +0 -0
  60. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/code_examples/google/google_example.py +0 -0
  61. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/google_cloud.mdx +0 -0
  62. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/deployment/google_cloud_run.mdx +0 -0
  63. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/add_data_to_dataset.mdx +0 -0
  64. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/beautifulsoup_crawler.mdx +0 -0
  65. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/capture_screenshot_using_playwright.mdx +0 -0
  66. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/capturing_page_snapshots_with_error_snapshotter.mdx +0 -0
  67. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/adaptive_playwright_crawler.py +0 -0
  68. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/add_data_to_dataset_bs.py +0 -0
  69. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/add_data_to_dataset_dataset.py +0 -0
  70. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/add_data_to_dataset_pw.py +0 -0
  71. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/beautifulsoup_crawler.py +0 -0
  72. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/beautifulsoup_crawler_keep_alive.py +0 -0
  73. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/beautifulsoup_crawler_stop.py +0 -0
  74. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/capture_screenshot_using_playwright.py +0 -0
  75. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/configure_json_logging.py +0 -0
  76. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_all_links_on_website_bs.py +0 -0
  77. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_all_links_on_website_pw.py +0 -0
  78. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_multiple_urls_bs.py +0 -0
  79. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_multiple_urls_pw.py +0 -0
  80. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_specific_links_on_website_bs.py +0 -0
  81. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_specific_links_on_website_pw.py +0 -0
  82. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_website_with_relative_links_all_links.py +0 -0
  83. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_website_with_relative_links_same_domain.py +0 -0
  84. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_website_with_relative_links_same_hostname.py +0 -0
  85. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/crawl_website_with_relative_links_same_origin.py +0 -0
  86. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/export_entire_dataset_to_file_csv.py +0 -0
  87. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/export_entire_dataset_to_file_json.py +0 -0
  88. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/extract_and_add_specific_links_on_website_bs.py +0 -0
  89. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/extract_and_add_specific_links_on_website_pw.py +0 -0
  90. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/fill_and_submit_web_form_crawler.py +0 -0
  91. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/fill_and_submit_web_form_request.py +0 -0
  92. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/parsel_crawler.py +0 -0
  93. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/parsel_crawler_with_error_snapshotter.py +0 -0
  94. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/playwright_block_requests.py +0 -0
  95. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/playwright_crawler.py +0 -0
  96. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/playwright_crawler_with_camoufox.py +0 -0
  97. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/playwright_crawler_with_error_snapshotter.py +0 -0
  98. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/playwright_crawler_with_fingerprint_generator.py +0 -0
  99. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/respect_robots_on_skipped_request.py +0 -0
  100. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/respect_robots_txt_file.py +0 -0
  101. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/resuming_paused_crawl.py +0 -0
  102. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/using_browser_profiles_chrome.py +0 -0
  103. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/code_examples/using_browser_profiles_firefox.py +0 -0
  104. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/crawl_all_links_on_website.mdx +0 -0
  105. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/crawl_multiple_urls.mdx +0 -0
  106. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/crawl_specific_links_on_website.mdx +0 -0
  107. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/crawl_website_with_relative_links.mdx +0 -0
  108. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/crawler_keep_alive.mdx +0 -0
  109. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/crawler_stop.mdx +0 -0
  110. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/export_entire_dataset_to_file.mdx +0 -0
  111. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/fill_and_submit_web_form.mdx +0 -0
  112. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/json_logging.mdx +0 -0
  113. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/parsel_crawler.mdx +0 -0
  114. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/playwright_crawler.mdx +0 -0
  115. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/playwright_crawler_adaptive.mdx +0 -0
  116. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/playwright_crawler_with_block_requests.mdx +0 -0
  117. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/playwright_crawler_with_camoufox.mdx +0 -0
  118. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/playwright_crawler_with_fingerprint_generator.mdx +0 -0
  119. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/respect_robots_txt_file.mdx +0 -0
  120. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/resuming_paused_crawl.mdx +0 -0
  121. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/examples/using_browser_profile.mdx +0 -0
  122. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/architecture_overview.mdx +0 -0
  123. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/avoid_blocking.mdx +0 -0
  124. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/avoid_blocking/default_fingerprint_generator_with_args.py +0 -0
  125. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/avoid_blocking/playwright_with_fingerprint_generator.py +0 -0
  126. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/creating_web_archive/manual_archiving_parsel_crawler.py +0 -0
  127. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/creating_web_archive/manual_archiving_playwright_crawler.py +0 -0
  128. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/creating_web_archive/simple_pw_through_proxy_pywb_server.py +0 -0
  129. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/error_handling/change_handle_error_status.py +0 -0
  130. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/error_handling/disable_retry.py +0 -0
  131. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/error_handling/handle_proxy_error.py +0 -0
  132. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_clients/parsel_curl_impersonate_example.py +0 -0
  133. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_clients/parsel_httpx_example.py +0 -0
  134. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_clients/parsel_impit_example.py +0 -0
  135. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_crawlers/beautifulsoup_example.py +0 -0
  136. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_crawlers/custom_crawler_example.py +0 -0
  137. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_crawlers/http_example.py +0 -0
  138. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/http_crawlers/parsel_example.py +0 -0
  139. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/login_crawler/http_login.py +0 -0
  140. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/login_crawler/playwright_login.py +0 -0
  141. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler/browser_configuration_example.py +0 -0
  142. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler/multiple_launch_example.py +0 -0
  143. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler/plugin_browser_configuration_example.py +0 -0
  144. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler/pre_navigation_hook_example.py +0 -0
  145. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_adaptive/handler.py +0 -0
  146. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_adaptive/init_beautifulsoup.py +0 -0
  147. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_adaptive/init_parsel.py +0 -0
  148. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_adaptive/init_prediction.py +0 -0
  149. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_adaptive/pre_nav_hooks.py +0 -0
  150. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_stagehand/__init__.py +0 -0
  151. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_stagehand/browser_classes.py +0 -0
  152. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_stagehand/stagehand_run.py +0 -0
  153. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/playwright_crawler_stagehand/support_classes.py +0 -0
  154. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/inspecting_bs_example.py +0 -0
  155. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/inspecting_pw_example.py +0 -0
  156. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/integration_bs_example.py +0 -0
  157. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/integration_pw_example.py +0 -0
  158. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/quick_start_example.py +0 -0
  159. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/session_bs_example.py +0 -0
  160. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/session_pw_example.py +0 -0
  161. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/tiers_bs_example.py +0 -0
  162. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/proxy_management/tiers_pw_example.py +0 -0
  163. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/rl_basic_example.py +0 -0
  164. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/rl_basic_example_with_persist.py +0 -0
  165. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/rl_tandem_example.py +0 -0
  166. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/rl_tandem_example_explicit.py +0 -0
  167. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/sitemap_basic_example.py +0 -0
  168. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/sitemap_example_with_persist.py +0 -0
  169. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/sitemap_tandem_example.py +0 -0
  170. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_loaders/sitemap_tandem_example_explicit.py +0 -0
  171. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/adaptive_crawler_handlers.py +0 -0
  172. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/basic_request_handlers.py +0 -0
  173. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/custom_router_default_only.py +0 -0
  174. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/error_handler.py +0 -0
  175. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/failed_request_handler.py +0 -0
  176. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/http_pre_navigation.py +0 -0
  177. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/playwright_pre_navigation.py +0 -0
  178. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/request_router/simple_default_handler.py +0 -0
  179. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/running_in_web_server/__init__.py +0 -0
  180. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/running_in_web_server/crawler.py +0 -0
  181. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/running_in_web_server/server.py +0 -0
  182. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/scaling_crawlers/max_tasks_per_minute_example.py +0 -0
  183. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/scaling_crawlers/min_and_max_concurrency_example.py +0 -0
  184. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_conflicts.py +0 -0
  185. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_crawler_configuration.py +0 -0
  186. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_crawler_event_manager.py +0 -0
  187. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_crawler_storage_client.py +0 -0
  188. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_locator_configuration.py +0 -0
  189. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_locator_event_manager.py +0 -0
  190. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_locator_storage_client.py +0 -0
  191. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_storage_configuration.py +0 -0
  192. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/service_locator/service_storage_storage_client.py +0 -0
  193. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/multi_sessions_http.py +0 -0
  194. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/one_session_http.py +0 -0
  195. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/sm_basic.py +0 -0
  196. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/sm_beautifulsoup.py +0 -0
  197. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/sm_http.py +0 -0
  198. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/sm_parsel.py +0 -0
  199. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/sm_playwright.py +0 -0
  200. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/session_management/sm_standalone.py +0 -0
  201. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/custom_storage_client_example.py +0 -0
  202. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/file_system_storage_client_basic_example.py +0 -0
  203. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/file_system_storage_client_configuration_example.py +0 -0
  204. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/memory_storage_client_basic_example.py +0 -0
  205. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/registering_storage_clients_example.py +0 -0
  206. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/sql_storage_client_basic_example.py +0 -0
  207. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storage_clients/sql_storage_client_configuration_example.py +0 -0
  208. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/cleaning_do_not_purge_example.py +0 -0
  209. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/cleaning_purge_explicitly_example.py +0 -0
  210. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/dataset_basic_example.py +0 -0
  211. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/dataset_with_crawler_example.py +0 -0
  212. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/dataset_with_crawler_explicit_example.py +0 -0
  213. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/helper_add_requests_example.py +0 -0
  214. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/helper_enqueue_links_example.py +0 -0
  215. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/kvs_basic_example.py +0 -0
  216. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/kvs_with_crawler_example.py +0 -0
  217. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/kvs_with_crawler_explicit_example.py +0 -0
  218. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/opening.py +0 -0
  219. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/rq_basic_example.py +0 -0
  220. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/rq_with_crawler_example.py +0 -0
  221. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/storages/rq_with_crawler_explicit_example.py +0 -0
  222. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/code_examples/trace_and_monitor_crawlers/instrument_crawler.py +0 -0
  223. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/crawler_login.mdx +0 -0
  224. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/creating_web_archive.mdx +0 -0
  225. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/error_handling.mdx +0 -0
  226. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/http_clients.mdx +0 -0
  227. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/http_crawlers.mdx +0 -0
  228. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/playwright_crawler.mdx +0 -0
  229. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/playwright_crawler_adaptive.mdx +0 -0
  230. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/playwright_crawler_stagehand.mdx +0 -0
  231. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/proxy_management.mdx +0 -0
  232. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/request_loaders.mdx +0 -0
  233. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/request_router.mdx +0 -0
  234. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/running_in_web_server.mdx +0 -0
  235. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/scaling_crawlers.mdx +0 -0
  236. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/service_locator.mdx +0 -0
  237. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/session_management.mdx +0 -0
  238. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/storage_clients.mdx +0 -0
  239. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/storages.mdx +0 -0
  240. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/guides/trace_and_monitor_crawlers.mdx +0 -0
  241. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/01_setting_up.mdx +0 -0
  242. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/02_first_crawler.mdx +0 -0
  243. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/03_adding_more_urls.mdx +0 -0
  244. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/04_real_world_project.mdx +0 -0
  245. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/05_crawling.mdx +0 -0
  246. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/06_scraping.mdx +0 -0
  247. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/07_saving_data.mdx +0 -0
  248. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/08_refactoring.mdx +0 -0
  249. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/09_running_in_cloud.mdx +0 -0
  250. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/02_bs.py +0 -0
  251. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/02_bs_better.py +0 -0
  252. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/02_request_queue.py +0 -0
  253. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/03_enqueue_strategy.py +0 -0
  254. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/03_finding_new_links.py +0 -0
  255. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/03_globs.py +0 -0
  256. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/03_original_code.py +0 -0
  257. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/03_transform_request.py +0 -0
  258. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/04_sanity_check.py +0 -0
  259. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/05_crawling_detail.py +0 -0
  260. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/05_crawling_listing.py +0 -0
  261. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/06_scraping.py +0 -0
  262. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/07_final_code.py +0 -0
  263. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/07_first_code.py +0 -0
  264. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/08_main.py +0 -0
  265. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/08_routes.py +0 -0
  266. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/09_apify_sdk.py +0 -0
  267. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/__init__.py +0 -0
  268. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/code_examples/routes.py +0 -0
  269. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/introduction/index.mdx +0 -0
  270. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/pyproject.toml +0 -0
  271. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/quick-start/code_examples/beautifulsoup_crawler_example.py +0 -0
  272. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/quick-start/code_examples/parsel_crawler_example.py +0 -0
  273. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/quick-start/code_examples/playwright_crawler_example.py +0 -0
  274. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/quick-start/code_examples/playwright_crawler_headful_example.py +0 -0
  275. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/quick-start/index.mdx +0 -0
  276. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/docs/upgrading/upgrading_to_v0x.md +0 -0
  277. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/renovate.json +0 -0
  278. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/__init__.py +0 -0
  279. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_autoscaling/__init__.py +0 -0
  280. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_autoscaling/_types.py +0 -0
  281. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_autoscaling/autoscaled_pool.py +0 -0
  282. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_autoscaling/py.typed +0 -0
  283. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_autoscaling/snapshotter.py +0 -0
  284. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_autoscaling/system_status.py +0 -0
  285. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_browserforge_workaround.py +0 -0
  286. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_cli.py +0 -0
  287. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_consts.py +0 -0
  288. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_log_config.py +0 -0
  289. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_request.py +0 -0
  290. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_service_locator.py +0 -0
  291. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_types.py +0 -0
  292. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/__init__.py +0 -0
  293. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/blocked.py +0 -0
  294. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/byte_size.py +0 -0
  295. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/console.py +0 -0
  296. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/context.py +0 -0
  297. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/crypto.py +0 -0
  298. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/docs.py +0 -0
  299. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/file.py +0 -0
  300. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/globs.py +0 -0
  301. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/html_to_text.py +0 -0
  302. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/models.py +0 -0
  303. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/raise_if_too_many_kwargs.py +0 -0
  304. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/recoverable_state.py +0 -0
  305. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/recurring_task.py +0 -0
  306. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/requests.py +0 -0
  307. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/robots.py +0 -0
  308. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/sitemap.py +0 -0
  309. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/system.py +0 -0
  310. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/time.py +0 -0
  311. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/try_import.py +0 -0
  312. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/urls.py +0 -0
  313. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/wait.py +0 -0
  314. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/_utils/web.py +0 -0
  315. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/__init__.py +0 -0
  316. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_browser_controller.py +0 -0
  317. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_browser_plugin.py +0 -0
  318. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_browser_pool.py +0 -0
  319. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_playwright_browser.py +0 -0
  320. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_playwright_browser_controller.py +0 -0
  321. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_playwright_browser_plugin.py +0 -0
  322. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/_types.py +0 -0
  323. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/browsers/py.typed +0 -0
  324. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/configuration.py +0 -0
  325. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/__init__.py +0 -0
  326. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_abstract_http/__init__.py +0 -0
  327. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_abstract_http/_abstract_http_crawler.py +0 -0
  328. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_abstract_http/_abstract_http_parser.py +0 -0
  329. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_abstract_http/_http_crawling_context.py +0 -0
  330. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_abstract_http/py.typed +0 -0
  331. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/__init__.py +0 -0
  332. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/_adaptive_playwright_crawler.py +0 -0
  333. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/_adaptive_playwright_crawler_statistics.py +0 -0
  334. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/_adaptive_playwright_crawling_context.py +0 -0
  335. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/_rendering_type_predictor.py +0 -0
  336. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/_result_comparator.py +0 -0
  337. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_adaptive_playwright/_utils.py +0 -0
  338. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_basic/__init__.py +0 -0
  339. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_basic/_basic_crawler.py +0 -0
  340. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_basic/_basic_crawling_context.py +0 -0
  341. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_basic/_context_pipeline.py +0 -0
  342. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_basic/_logging_utils.py +0 -0
  343. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_basic/py.typed +0 -0
  344. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_beautifulsoup/__init__.py +0 -0
  345. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_beautifulsoup/_beautifulsoup_crawler.py +0 -0
  346. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_beautifulsoup/_beautifulsoup_crawling_context.py +0 -0
  347. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_beautifulsoup/_beautifulsoup_parser.py +0 -0
  348. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_beautifulsoup/_utils.py +0 -0
  349. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_beautifulsoup/py.typed +0 -0
  350. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_http/__init__.py +0 -0
  351. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_http/_http_crawler.py +0 -0
  352. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_http/_http_parser.py +0 -0
  353. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_parsel/__init__.py +0 -0
  354. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_parsel/_parsel_crawler.py +0 -0
  355. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_parsel/_parsel_crawling_context.py +0 -0
  356. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_parsel/_parsel_parser.py +0 -0
  357. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_parsel/_utils.py +0 -0
  358. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/__init__.py +0 -0
  359. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/_playwright_crawler.py +0 -0
  360. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/_playwright_crawling_context.py +0 -0
  361. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/_playwright_http_client.py +0 -0
  362. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/_playwright_pre_nav_crawling_context.py +0 -0
  363. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/_types.py +0 -0
  364. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_playwright/_utils.py +0 -0
  365. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/_types.py +0 -0
  366. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/crawlers/py.typed +0 -0
  367. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/errors.py +0 -0
  368. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/events/__init__.py +0 -0
  369. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/events/_event_manager.py +0 -0
  370. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/events/_local_event_manager.py +0 -0
  371. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/events/_types.py +0 -0
  372. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/events/py.typed +0 -0
  373. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/__init__.py +0 -0
  374. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/_browserforge_adapter.py +0 -0
  375. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/_consts.py +0 -0
  376. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/_fingerprint_generator.py +0 -0
  377. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/_header_generator.py +0 -0
  378. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/_types.py +0 -0
  379. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/fingerprint_suite/py.typed +0 -0
  380. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/http_clients/__init__.py +0 -0
  381. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/http_clients/_base.py +0 -0
  382. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/http_clients/_curl_impersonate.py +0 -0
  383. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/http_clients/_httpx.py +0 -0
  384. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/http_clients/_impit.py +0 -0
  385. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/otel/__init__.py +0 -0
  386. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/otel/crawler_instrumentor.py +0 -0
  387. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/cookiecutter.json +0 -0
  388. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/hooks/post_gen_project.py +0 -0
  389. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/hooks/pre_gen_project.py +0 -0
  390. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/main.py +0 -0
  391. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/main_beautifulsoup.py +0 -0
  392. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/main_parsel.py +0 -0
  393. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/main_playwright.py +0 -0
  394. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/main_playwright_camoufox.py +0 -0
  395. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/routes_beautifulsoup.py +0 -0
  396. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/routes_camoufox.py +0 -0
  397. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/routes_parsel.py +0 -0
  398. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/routes_playwright.py +0 -0
  399. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/templates/routes_playwright_camoufox.py +0 -0
  400. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/.dockerignore +0 -0
  401. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/Dockerfile +0 -0
  402. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/README.md +0 -0
  403. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/pyproject.toml +0 -0
  404. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/requirements.txt +0 -0
  405. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/__init__.py +0 -0
  406. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/__main__.py +0 -0
  407. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/main.py +0 -0
  408. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/routes.py +0 -0
  409. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/proxy_configuration.py +0 -0
  410. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/py.typed +0 -0
  411. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/request_loaders/__init__.py +0 -0
  412. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/request_loaders/_request_list.py +0 -0
  413. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/request_loaders/_request_loader.py +0 -0
  414. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/request_loaders/_request_manager.py +0 -0
  415. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/request_loaders/_request_manager_tandem.py +0 -0
  416. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/request_loaders/_sitemap_request_loader.py +0 -0
  417. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/router.py +0 -0
  418. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/sessions/__init__.py +0 -0
  419. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/sessions/_cookies.py +0 -0
  420. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/sessions/_models.py +0 -0
  421. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/sessions/_session.py +0 -0
  422. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/sessions/_session_pool.py +0 -0
  423. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/sessions/py.typed +0 -0
  424. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/statistics/__init__.py +0 -0
  425. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/statistics/_error_snapshotter.py +0 -0
  426. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/statistics/_error_tracker.py +0 -0
  427. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/statistics/_models.py +0 -0
  428. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/statistics/_statistics.py +0 -0
  429. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/__init__.py +0 -0
  430. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_base/__init__.py +0 -0
  431. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_base/_dataset_client.py +0 -0
  432. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_base/_key_value_store_client.py +0 -0
  433. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_base/_request_queue_client.py +0 -0
  434. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_base/_storage_client.py +0 -0
  435. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_base/py.typed +0 -0
  436. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/__init__.py +0 -0
  437. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/_storage_client.py +0 -0
  438. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/_utils.py +0 -0
  439. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_file_system/py.typed +0 -0
  440. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_memory/__init__.py +0 -0
  441. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_memory/_storage_client.py +0 -0
  442. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_memory/py.typed +0 -0
  443. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/__init__.py +0 -0
  444. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/_client_mixin.py +0 -0
  445. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/_db_models.py +0 -0
  446. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/_storage_client.py +0 -0
  447. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/_sql/py.typed +0 -0
  448. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/models.py +0 -0
  449. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storage_clients/py.typed +0 -0
  450. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/__init__.py +0 -0
  451. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/src/crawlee/storages/py.typed +0 -0
  452. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/__init__.py +0 -0
  453. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/e2e/__init__.py +0 -0
  454. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/e2e/conftest.py +0 -0
  455. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/e2e/project_template/test_static_crawlers_templates.py +0 -0
  456. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/e2e/project_template/utils.py +0 -0
  457. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/README.md +0 -0
  458. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/__init__.py +0 -0
  459. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_autoscaling/test_autoscaled_pool.py +0 -0
  460. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_autoscaling/test_snapshotter.py +0 -0
  461. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_autoscaling/test_system_status.py +0 -0
  462. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_statistics/test_error_tracker.py +0 -0
  463. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_statistics/test_periodic_logging.py +0 -0
  464. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_statistics/test_persistence.py +0 -0
  465. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_statistics/test_request_processing_record.py +0 -0
  466. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_byte_size.py +0 -0
  467. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_console.py +0 -0
  468. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_crypto.py +0 -0
  469. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_file.py +0 -0
  470. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_globs.py +0 -0
  471. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_html_to_text.py +0 -0
  472. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_measure_time.py +0 -0
  473. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_raise_if_too_many_kwargs.py +0 -0
  474. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_recurring_task.py +0 -0
  475. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_requests.py +0 -0
  476. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_robots.py +0 -0
  477. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_sitemap.py +0 -0
  478. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_system.py +0 -0
  479. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_timedelata_ms.py +0 -0
  480. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/_utils/test_urls.py +0 -0
  481. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/browsers/test_browser_pool.py +0 -0
  482. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/browsers/test_playwright_browser.py +0 -0
  483. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/browsers/test_playwright_browser_controller.py +0 -0
  484. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/browsers/test_playwright_browser_plugin.py +0 -0
  485. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/conftest.py +0 -0
  486. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_adaptive_playwright/test_adaptive_playwright_crawler_statistics.py +0 -0
  487. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_adaptive_playwright/test_adaptive_playwright_crawling_context.py +0 -0
  488. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_adaptive_playwright/test_predictor.py +0 -0
  489. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_basic/test_basic_crawler.py +0 -0
  490. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_basic/test_context_pipeline.py +0 -0
  491. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_beautifulsoup/test_beautifulsoup_crawler.py +0 -0
  492. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_http/test_http_crawler.py +0 -0
  493. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_parsel/test_parsel_crawler.py +0 -0
  494. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/crawlers/_playwright/test_playwright_crawler.py +0 -0
  495. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/events/test_event_manager.py +0 -0
  496. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/events/test_local_event_manager.py +0 -0
  497. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/fingerprint_suite/test_adapters.py +0 -0
  498. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/fingerprint_suite/test_header_generator.py +0 -0
  499. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/http_clients/test_http_clients.py +0 -0
  500. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/http_clients/test_httpx.py +0 -0
  501. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/proxy_configuration/test_new_proxy_info.py +0 -0
  502. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/proxy_configuration/test_tiers.py +0 -0
  503. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/request_loaders/test_request_list.py +0 -0
  504. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/request_loaders/test_sitemap_request_loader.py +0 -0
  505. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/server.py +0 -0
  506. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/server_endpoints.py +0 -0
  507. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/sessions/test_cookies.py +0 -0
  508. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/sessions/test_models.py +0 -0
  509. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/sessions/test_session.py +0 -0
  510. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storages/conftest.py +0 -0
  511. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storages/test_request_manager_tandem.py +0 -0
  512. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/storages/test_storage_instance_manager.py +0 -0
  513. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/test_cli.py +0 -0
  514. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/test_configuration.py +0 -0
  515. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/test_log_config.py +0 -0
  516. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/test_router.py +0 -0
  517. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/tests/unit/test_service_locator.py +0 -0
  518. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/.eslintrc.json +0 -0
  519. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/.yarnrc.yml +0 -0
  520. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/babel.config.js +0 -0
  521. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/build_api_reference.sh +0 -0
  522. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/docusaurus.config.js +0 -0
  523. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/generate_module_shortcuts.py +0 -0
  524. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/package.json +0 -0
  525. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/patches/@docusaurus+core+3.4.0.patch +0 -0
  526. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/patches/@docusaurus+core+3.5.2.patch +0 -0
  527. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/roa-loader/index.js +0 -0
  528. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/roa-loader/package.json +0 -0
  529. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/sidebars.js +0 -0
  530. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/ApiLink.jsx +0 -0
  531. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Button.jsx +0 -0
  532. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Button.module.css +0 -0
  533. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/CopyButton.jsx +0 -0
  534. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/CopyButton.module.css +0 -0
  535. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Gradients.jsx +0 -0
  536. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Highlights.jsx +0 -0
  537. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Highlights.module.css +0 -0
  538. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/HomepageCliExample.jsx +0 -0
  539. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/HomepageCliExample.module.css +0 -0
  540. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/HomepageCtaSection.jsx +0 -0
  541. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/HomepageCtaSection.module.css +0 -0
  542. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/HomepageHeroSection.jsx +0 -0
  543. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/HomepageHeroSection.module.css +0 -0
  544. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/LanguageInfoWidget.jsx +0 -0
  545. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/LanguageInfoWidget.module.css +0 -0
  546. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/LanguageSwitch.jsx +0 -0
  547. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/LanguageSwitch.module.css +0 -0
  548. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/RiverSection.jsx +0 -0
  549. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/RiverSection.module.css +0 -0
  550. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/ThreeCardsWithIcon.jsx +0 -0
  551. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/ThreeCardsWithIcon.module.css +0 -0
  552. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/animated-crawlee-logo-dark.svg +0 -0
  553. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/Homepage/animated-crawlee-logo-light.svg +0 -0
  554. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/RunnableCodeBlock.jsx +0 -0
  555. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/components/RunnableCodeBlock.module.css +0 -0
  556. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/css/custom.css +0 -0
  557. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/pages/home_page_example.py +0 -0
  558. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/pages/index.js +0 -0
  559. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/pages/index.module.css +0 -0
  560. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/ColorModeToggle/dark-mode-icon.svg +0 -0
  561. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/ColorModeToggle/index.js +0 -0
  562. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/ColorModeToggle/light-mode-icon.svg +0 -0
  563. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/ColorModeToggle/styles.module.css +0 -0
  564. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/DocItem/Layout/index.js +0 -0
  565. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/DocItem/Layout/styles.module.css +0 -0
  566. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Footer/LinkItem/index.js +0 -0
  567. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Footer/LinkItem/index.module.css +0 -0
  568. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Footer/index.js +0 -0
  569. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Footer/index.module.css +0 -0
  570. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/MDXComponents/A.js +0 -0
  571. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/Content/index.js +0 -0
  572. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/Content/styles.module.css +0 -0
  573. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/Logo/index.js +0 -0
  574. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/Logo/index.module.css +0 -0
  575. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/MobileSidebar/Header/index.js +0 -0
  576. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/MobileSidebar/Header/index.module.css +0 -0
  577. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/MobileSidebar/Layout/index.js +0 -0
  578. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +0 -0
  579. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/Navbar/MobileSidebar/index.js +0 -0
  580. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/src/theme/NavbarItem/ComponentTypes.js +0 -0
  581. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/.nojekyll +0 -0
  582. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/font/lota.woff +0 -0
  583. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/font/lota.woff2 +0 -0
  584. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/API.png +0 -0
  585. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/apify_logo.svg +0 -0
  586. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/apify_og_SDK.png +0 -0
  587. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/apify_sdk.svg +0 -0
  588. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/apify_sdk_white.svg +0 -0
  589. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/arrow_right.svg +0 -0
  590. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/auto-scaling-dark.webp +0 -0
  591. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/auto-scaling-light.webp +0 -0
  592. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/check.svg +0 -0
  593. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/chrome-scrape-dark.gif +0 -0
  594. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/chrome-scrape-light.gif +0 -0
  595. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/cloud_icon.svg +0 -0
  596. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/community-dark-icon.svg +0 -0
  597. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/community-light-icon.svg +0 -0
  598. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-dark-new.svg +0 -0
  599. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-dark.svg +0 -0
  600. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-javascript-dark.svg +0 -0
  601. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-javascript-light.svg +0 -0
  602. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-light-new.svg +0 -0
  603. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-light.svg +0 -0
  604. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-logo-monocolor.svg +0 -0
  605. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-logo.svg +0 -0
  606. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-python-dark.svg +0 -0
  607. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-python-light.svg +0 -0
  608. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/crawlee-python-og.png +0 -0
  609. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/defaults-dark-icon.svg +0 -0
  610. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/defaults-light-icon.svg +0 -0
  611. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/discord-brand-dark.svg +0 -0
  612. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/discord-brand.svg +0 -0
  613. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/docusaurus.svg +0 -0
  614. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/external-link.svg +0 -0
  615. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/favicon.ico +0 -0
  616. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/favorite-tools-dark.webp +0 -0
  617. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/favorite-tools-light.webp +0 -0
  618. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/auto-scaling.svg +0 -0
  619. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/automate-everything.svg +0 -0
  620. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/fingerprints.svg +0 -0
  621. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/node-requests.svg +0 -0
  622. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/runs-on-py.svg +0 -0
  623. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/storage.svg +0 -0
  624. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/features/works-everywhere.svg +0 -0
  625. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/fill-and-submit-web-form/00.jpg +0 -0
  626. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/fill-and-submit-web-form/01.jpg +0 -0
  627. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/fill-and-submit-web-form/02.jpg +0 -0
  628. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/fill-and-submit-web-form/03.jpg +0 -0
  629. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/getting-started/current-price.jpg +0 -0
  630. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/getting-started/scraping-practice.jpg +0 -0
  631. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/getting-started/select-an-element.jpg +0 -0
  632. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/getting-started/selected-element.jpg +0 -0
  633. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/getting-started/sku.jpg +0 -0
  634. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/getting-started/title.jpg +0 -0
  635. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/github-brand-dark.svg +0 -0
  636. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/github-brand.svg +0 -0
  637. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/guides/jaeger_otel_search_view_example.png +0 -0
  638. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/guides/jaeger_otel_trace_example.png +0 -0
  639. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/hearth copy.svg +0 -0
  640. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/hearth.svg +0 -0
  641. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/javascript_logo.svg +0 -0
  642. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/js_file.svg +0 -0
  643. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/logo-big.svg +0 -0
  644. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/logo-blur.png +0 -0
  645. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/logo-blur.svg +0 -0
  646. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/logo-zoom.svg +0 -0
  647. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/menu-arrows.svg +0 -0
  648. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/oss_logo.png +0 -0
  649. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/puppeteer-live-view-dashboard.png +0 -0
  650. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/puppeteer-live-view-detail.png +0 -0
  651. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/queue-dark-icon.svg +0 -0
  652. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/queue-light-icon.svg +0 -0
  653. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/resuming-paused-crawl/00.webp +0 -0
  654. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/resuming-paused-crawl/01.webp +0 -0
  655. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/robot.png +0 -0
  656. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/routing-dark-icon.svg +0 -0
  657. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/routing-light-icon.svg +0 -0
  658. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/scraping-utils-dark-icon.svg +0 -0
  659. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/scraping-utils-light-icon.svg +0 -0
  660. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/smart-proxy-dark.webp +0 -0
  661. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/smart-proxy-light.webp +0 -0
  662. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/source_code.png +0 -0
  663. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/system.svg +0 -0
  664. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/triangles_dark.svg +0 -0
  665. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/triangles_light.svg +0 -0
  666. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/workflow.svg +0 -0
  667. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/zero-setup-dark-icon.svg +0 -0
  668. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/img/zero-setup-light-icon.svg +0 -0
  669. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/js/custom.js +0 -0
  670. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/static/robots.txt +0 -0
  671. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/docs-prettier.config.js +0 -0
  672. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/utils/externalLink.js +0 -0
  673. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/website_gif/chrome-scrape-dark.gif +0 -0
  674. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/website_gif/chrome-scrape-dark.mp4 +0 -0
  675. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/website_gif/chrome-scrape-light.gif +0 -0
  676. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/website_gif/chrome-scrape-light.mp4 +0 -0
  677. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tools/website_gif/website_gif.mjs +0 -0
  678. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/tsconfig.eslint.json +0 -0
  679. {crawlee-1.0.2b1 → crawlee-1.0.2b3}/website/yarn.lock +0 -0
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  <!-- git-cliff-unreleased-start -->
6
6
  ## 1.0.2 - **not yet released**
7
7
 
8
+ ### 🐛 Bug Fixes
9
+
10
+ - Use Self type in the open() method of storage clients ([#1462](https://github.com/apify/crawlee-python/pull/1462)) ([4ec6f6c](https://github.com/apify/crawlee-python/commit/4ec6f6c08f81632197f602ff99151338b3eba6e7)) by [@janbuchar](https://github.com/janbuchar)
11
+ - Add storages name validation ([#1457](https://github.com/apify/crawlee-python/pull/1457)) ([84de11a](https://github.com/apify/crawlee-python/commit/84de11a3a603503076f5b7df487c9abab68a9015)) by [@Mantisus](https://github.com/Mantisus), closes [#1434](https://github.com/apify/crawlee-python/issues/1434)
12
+
8
13
 
9
14
  <!-- git-cliff-unreleased-end -->
10
15
  ## [1.0.1](https://github.com/apify/crawlee-python/releases/tag/v1.0.1) (2025-10-06)
@@ -17,6 +22,9 @@ All notable changes to this project will be documented in this file.
17
22
 
18
23
  ## [1.0.0](https://github.com/apify/crawlee-python/releases/tag/v1.0.0) (2025-09-29)
19
24
 
25
+ - Check out the [Release blog post](https://crawlee.dev/blog/crawlee-for-python-v1) for more details.
26
+ - Check out the [Upgrading guide](https://crawlee.dev/python/docs/upgrading/upgrading-to-v1) to ensure a smooth update.
27
+
20
28
  ### 🚀 Features
21
29
 
22
30
  - Add utility for load and parse Sitemap and `SitemapRequestLoader` ([#1169](https://github.com/apify/crawlee-python/pull/1169)) ([66599f8](https://github.com/apify/crawlee-python/commit/66599f8d085f3a8622e130019b6fdce2325737de)) by [@Mantisus](https://github.com/Mantisus), closes [#1161](https://github.com/apify/crawlee-python/issues/1161)
@@ -199,6 +207,9 @@ All notable changes to this project will be documented in this file.
199
207
 
200
208
  ## [0.6.0](https://github.com/apify/crawlee-python/releases/tag/v0.6.0) (2025-03-03)
201
209
 
210
+ - Check out the [Release blog post](https://crawlee.dev/blog/crawlee-for-python-v06) for more details.
211
+ - Check out the [Upgrading guide](https://crawlee.dev/python/docs/upgrading/upgrading-to-v0x#upgrading-to-v06) to ensure a smooth update.
212
+
202
213
  ### 🚀 Features
203
214
 
204
215
  - Integrate browserforge fingerprints ([#829](https://github.com/apify/crawlee-python/pull/829)) ([2b156b4](https://github.com/apify/crawlee-python/commit/2b156b4ba688f9111195422e6058dff30eb1f782)) by [@Pijukatel](https://github.com/Pijukatel), closes [#549](https://github.com/apify/crawlee-python/issues/549)
@@ -279,6 +290,9 @@ All notable changes to this project will be documented in this file.
279
290
 
280
291
  ## [0.5.0](https://github.com/apify/crawlee-python/releases/tag/v0.5.0) (2025-01-02)
281
292
 
293
+ - Check out the [Release blog post](https://crawlee.dev/blog/crawlee-for-python-v05) for more details.
294
+ - Check out the [Upgrading guide](https://crawlee.dev/python/docs/upgrading/upgrading-to-v0x#upgrading-to-v05) to ensure a smooth update.
295
+
282
296
  ### 🚀 Features
283
297
 
284
298
  - Add possibility to use None as no proxy in tiered proxies ([#760](https://github.com/apify/crawlee-python/pull/760)) ([0fbd017](https://github.com/apify/crawlee-python/commit/0fbd01723b9fe2e3410e0f358cab2f22848b08d0)) by [@Pijukatel](https://github.com/Pijukatel), closes [#687](https://github.com/apify/crawlee-python/issues/687)
@@ -370,6 +384,8 @@ All notable changes to this project will be documented in this file.
370
384
 
371
385
  ## [0.4.0](https://github.com/apify/crawlee-python/releases/tag/v0.4.0) (2024-11-01)
372
386
 
387
+ - Check out the [Upgrading guide](https://crawlee.dev/python/docs/upgrading/upgrading-to-v0x#upgrading-to-v04) to ensure a smooth update.
388
+
373
389
  ### 🚀 Features
374
390
 
375
391
  - [**breaking**] Add headers in unique key computation ([#609](https://github.com/apify/crawlee-python/pull/609)) ([6c4746f](https://github.com/apify/crawlee-python/commit/6c4746fa8ff86952a812b32a1d70dc910e76b43e)) by [@Prathamesh010](https://github.com/Prathamesh010), closes [#548](https://github.com/apify/crawlee-python/issues/548)
@@ -479,6 +495,8 @@ All notable changes to this project will be documented in this file.
479
495
 
480
496
  ## [0.3.0](https://github.com/apify/crawlee-python/releases/tag/v0.3.0) (2024-08-27)
481
497
 
498
+ - Check out the [Upgrading guide](https://crawlee.dev/python/docs/upgrading/upgrading-to-v0x#upgrading-to-v03) to ensure a smooth update.
499
+
482
500
  ### 🚀 Features
483
501
 
484
502
  - Implement ParselCrawler that adds support for Parsel ([#348](https://github.com/apify/crawlee-python/pull/348)) ([a3832e5](https://github.com/apify/crawlee-python/commit/a3832e527f022f32cce4a80055da3b7967b74522)) by [@asymness](https://github.com/asymness), closes [#335](https://github.com/apify/crawlee-python/issues/335)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlee
3
- Version: 1.0.2b1
3
+ Version: 1.0.2b3
4
4
  Summary: Crawlee for Python
5
5
  Project-URL: Apify Homepage, https://apify.com
6
6
  Project-URL: Changelog, https://crawlee.dev/python/docs/changelog
@@ -333,3 +333,7 @@ async def main() -> None:
333
333
 
334
334
  await crawler.run(['https://crawlee.dev/'])
335
335
  ```
336
+
337
+ ### New storage naming restrictions
338
+
339
+ We've introduced naming restrictions for storages to ensure compatibility with Apify Platform requirements and prevent potential conflicts. Storage names may include only letters (a–z, A–Z), digits (0–9), and hyphens (-), with hyphens allowed only in the middle of the name (for example, my-storage-1).
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "crawlee"
7
- version = "1.0.2b1"
7
+ version = "1.0.2b3"
8
8
  description = "Crawlee for Python"
9
9
  authors = [{ name = "Apify Technologies s.r.o.", email = "support@apify.com" }]
10
10
  license = { file = "LICENSE" }
@@ -9,7 +9,7 @@ from pathlib import Path
9
9
  from typing import TYPE_CHECKING, Any
10
10
 
11
11
  from pydantic import ValidationError
12
- from typing_extensions import override
12
+ from typing_extensions import Self, override
13
13
 
14
14
  from crawlee._consts import METADATA_FILENAME
15
15
  from crawlee._utils.crypto import crypto_random_object_id
@@ -94,7 +94,7 @@ class FileSystemDatasetClient(DatasetClient):
94
94
  name: str | None,
95
95
  alias: str | None,
96
96
  configuration: Configuration,
97
- ) -> FileSystemDatasetClient:
97
+ ) -> Self:
98
98
  """Open or create a file system dataset client.
99
99
 
100
100
  This method attempts to open an existing dataset from the file system. If a dataset with the specified ID
@@ -10,7 +10,7 @@ from pathlib import Path
10
10
  from typing import TYPE_CHECKING, Any
11
11
 
12
12
  from pydantic import ValidationError
13
- from typing_extensions import override
13
+ from typing_extensions import Self, override
14
14
 
15
15
  from crawlee._consts import METADATA_FILENAME
16
16
  from crawlee._utils.crypto import crypto_random_object_id
@@ -93,7 +93,7 @@ class FileSystemKeyValueStoreClient(KeyValueStoreClient):
93
93
  name: str | None,
94
94
  alias: str | None,
95
95
  configuration: Configuration,
96
- ) -> FileSystemKeyValueStoreClient:
96
+ ) -> Self:
97
97
  """Open or create a file system key-value store client.
98
98
 
99
99
  This method attempts to open an existing key-value store from the file system. If a KVS with the specified
@@ -11,7 +11,7 @@ from pathlib import Path
11
11
  from typing import TYPE_CHECKING
12
12
 
13
13
  from pydantic import BaseModel, ValidationError
14
- from typing_extensions import override
14
+ from typing_extensions import Self, override
15
15
 
16
16
  from crawlee import Request
17
17
  from crawlee._consts import METADATA_FILENAME
@@ -144,7 +144,7 @@ class FileSystemRequestQueueClient(RequestQueueClient):
144
144
  name: str | None,
145
145
  alias: str | None,
146
146
  configuration: Configuration,
147
- ) -> FileSystemRequestQueueClient:
147
+ ) -> Self:
148
148
  """Open or create a file system request queue client.
149
149
 
150
150
  This method attempts to open an existing request queue from the file system. If a queue with the specified
@@ -4,7 +4,7 @@ from datetime import datetime, timezone
4
4
  from logging import getLogger
5
5
  from typing import TYPE_CHECKING, Any
6
6
 
7
- from typing_extensions import override
7
+ from typing_extensions import Self, override
8
8
 
9
9
  from crawlee._utils.crypto import crypto_random_object_id
10
10
  from crawlee._utils.raise_if_too_many_kwargs import raise_if_too_many_kwargs
@@ -55,7 +55,7 @@ class MemoryDatasetClient(DatasetClient):
55
55
  id: str | None,
56
56
  name: str | None,
57
57
  alias: str | None,
58
- ) -> MemoryDatasetClient:
58
+ ) -> Self:
59
59
  """Open or create a new memory dataset client.
60
60
 
61
61
  This method creates a new in-memory dataset instance. Unlike persistent storage implementations, memory
@@ -4,7 +4,7 @@ import sys
4
4
  from datetime import datetime, timezone
5
5
  from typing import TYPE_CHECKING, Any
6
6
 
7
- from typing_extensions import override
7
+ from typing_extensions import Self, override
8
8
 
9
9
  from crawlee._utils.crypto import crypto_random_object_id
10
10
  from crawlee._utils.file import infer_mime_type
@@ -53,7 +53,7 @@ class MemoryKeyValueStoreClient(KeyValueStoreClient):
53
53
  id: str | None,
54
54
  name: str | None,
55
55
  alias: str | None,
56
- ) -> MemoryKeyValueStoreClient:
56
+ ) -> Self:
57
57
  """Open or create a new memory key-value store client.
58
58
 
59
59
  This method creates a new in-memory key-value store instance. Unlike persistent storage implementations,
@@ -6,7 +6,7 @@ from datetime import datetime, timezone
6
6
  from logging import getLogger
7
7
  from typing import TYPE_CHECKING
8
8
 
9
- from typing_extensions import override
9
+ from typing_extensions import Self, override
10
10
 
11
11
  from crawlee import Request
12
12
  from crawlee._utils.crypto import crypto_random_object_id
@@ -65,7 +65,7 @@ class MemoryRequestQueueClient(RequestQueueClient):
65
65
  id: str | None,
66
66
  name: str | None,
67
67
  alias: str | None,
68
- ) -> MemoryRequestQueueClient:
68
+ ) -> Self:
69
69
  """Open or create a new memory request queue client.
70
70
 
71
71
  This method creates a new in-memory request queue instance. Unlike persistent storage implementations,
@@ -4,7 +4,7 @@ from logging import getLogger
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
6
  from sqlalchemy import Select, insert, select
7
- from typing_extensions import override
7
+ from typing_extensions import Self, override
8
8
 
9
9
  from crawlee.storage_clients._base import DatasetClient
10
10
  from crawlee.storage_clients.models import DatasetItemsListPage, DatasetMetadata
@@ -78,7 +78,7 @@ class SqlDatasetClient(DatasetClient, SqlClientMixin):
78
78
  name: str | None,
79
79
  alias: str | None,
80
80
  storage_client: SqlStorageClient,
81
- ) -> SqlDatasetClient:
81
+ ) -> Self:
82
82
  """Open an existing dataset or create a new one.
83
83
 
84
84
  Args:
@@ -5,7 +5,7 @@ from logging import getLogger
5
5
  from typing import TYPE_CHECKING, Any
6
6
 
7
7
  from sqlalchemy import delete, select
8
- from typing_extensions import override
8
+ from typing_extensions import Self, override
9
9
 
10
10
  from crawlee._utils.file import infer_mime_type
11
11
  from crawlee.storage_clients._base import KeyValueStoreClient
@@ -77,7 +77,7 @@ class SqlKeyValueStoreClient(KeyValueStoreClient, SqlClientMixin):
77
77
  name: str | None,
78
78
  alias: str | None,
79
79
  storage_client: SqlStorageClient,
80
- ) -> SqlKeyValueStoreClient:
80
+ ) -> Self:
81
81
  """Open or create a SQL key-value store client.
82
82
 
83
83
  This method attempts to open an existing key-value store from the SQL database. If a KVS with the specified
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Any
10
10
  from sqlalchemy import func, or_, select, update
11
11
  from sqlalchemy.exc import SQLAlchemyError
12
12
  from sqlalchemy.orm import load_only
13
- from typing_extensions import NotRequired, override
13
+ from typing_extensions import NotRequired, Self, override
14
14
 
15
15
  from crawlee import Request
16
16
  from crawlee._utils.crypto import crypto_random_object_id
@@ -119,7 +119,7 @@ class SqlRequestQueueClient(RequestQueueClient, SqlClientMixin):
119
119
  name: str | None,
120
120
  alias: str | None,
121
121
  storage_client: SqlStorageClient,
122
- ) -> SqlRequestQueueClient:
122
+ ) -> Self:
123
123
  """Open an existing request queue or create a new one.
124
124
 
125
125
  This method first tries to find an existing queue by ID or name.
@@ -44,7 +44,9 @@ class Storage(ABC):
44
44
 
45
45
  Args:
46
46
  id: The storage ID.
47
- name: The storage name (global scope, persists across runs).
47
+ name: The storage name (global scope, persists across runs). Name can only contain letters "a" through "z",
48
+ the digits "0" through "9", and the hyphen ("-") but only in the middle of the string
49
+ (e.g. "my-value-1").
48
50
  alias: The storage alias (run scope, creates unnamed storage).
49
51
  configuration: Configuration object used during the storage creation or restoration process.
50
52
  storage_client: Underlying storage client to use. If not provided, the default global storage client
@@ -12,6 +12,7 @@ from crawlee._utils.file import export_csv_to_stream, export_json_to_stream
12
12
 
13
13
  from ._base import Storage
14
14
  from ._key_value_store import KeyValueStore
15
+ from ._utils import validate_storage_name
15
16
 
16
17
  if TYPE_CHECKING:
17
18
  from collections.abc import AsyncIterator
@@ -75,6 +76,8 @@ class Dataset(Storage):
75
76
  id: The unique identifier of the storage.
76
77
  name: The name of the storage, if available.
77
78
  """
79
+ validate_storage_name(name)
80
+
78
81
  self._client = client
79
82
  self._id = id
80
83
  self._name = name
@@ -15,6 +15,7 @@ from crawlee._utils.recoverable_state import RecoverableState
15
15
  from crawlee.storage_clients.models import KeyValueStoreMetadata
16
16
 
17
17
  from ._base import Storage
18
+ from ._utils import validate_storage_name
18
19
 
19
20
  if TYPE_CHECKING:
20
21
  from collections.abc import AsyncIterator
@@ -84,6 +85,8 @@ class KeyValueStore(Storage):
84
85
  id: The unique identifier of the storage.
85
86
  name: The name of the storage, if available.
86
87
  """
88
+ validate_storage_name(name)
89
+
87
90
  self._client = client
88
91
  self._id = id
89
92
  self._name = name
@@ -13,6 +13,7 @@ from crawlee._utils.wait import wait_for_all_tasks_for_finish
13
13
  from crawlee.request_loaders import RequestManager
14
14
 
15
15
  from ._base import Storage
16
+ from ._utils import validate_storage_name
16
17
 
17
18
  if TYPE_CHECKING:
18
19
  from collections.abc import Sequence
@@ -80,6 +81,8 @@ class RequestQueue(Storage, RequestManager):
80
81
  id: The unique identifier of the storage.
81
82
  name: The name of the storage, if available.
82
83
  """
84
+ validate_storage_name(name)
85
+
83
86
  self._client = client
84
87
  self._id = id
85
88
  self._name = name
@@ -8,6 +8,8 @@ from typing import TYPE_CHECKING, TypeVar
8
8
  from crawlee._utils.raise_if_too_many_kwargs import raise_if_too_many_kwargs
9
9
  from crawlee.storage_clients._base import DatasetClient, KeyValueStoreClient, RequestQueueClient
10
10
 
11
+ from ._utils import validate_storage_name
12
+
11
13
  if TYPE_CHECKING:
12
14
  from ._base import Storage
13
15
 
@@ -90,7 +92,9 @@ class StorageInstanceManager:
90
92
  Args:
91
93
  cls: The storage class to instantiate.
92
94
  id: Storage ID.
93
- name: Storage name. (global scope, persists across runs).
95
+ name: Storage name. (global scope, persists across runs). Name can only contain letters "a" through "z",
96
+ the digits "0" through "9", and the hyphen ("-") but only in the middle of the string
97
+ (e.g. "my-value-1").
94
98
  alias: Storage alias (run scope, creates unnamed storage).
95
99
  client_opener_coro: Coroutine to open the storage client when storage instance not found in cache.
96
100
  storage_client_cache_key: Additional optional key from storage client to differentiate cache entries.
@@ -146,6 +150,10 @@ class StorageInstanceManager:
146
150
  f'Use a different name or drop the existing alias storage first.'
147
151
  )
148
152
 
153
+ # Validate storage name
154
+ if name is not None:
155
+ validate_storage_name(name)
156
+
149
157
  # Create new instance
150
158
  client: KeyValueStoreClient | DatasetClient | RequestQueueClient
151
159
  client = await client_opener_coro
@@ -0,0 +1,11 @@
1
+ import re
2
+
3
+ NAME_REGEX = re.compile(r'^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])$')
4
+
5
+
6
+ def validate_storage_name(name: str | None) -> None:
7
+ if name and not NAME_REGEX.match(name):
8
+ raise ValueError(
9
+ f'Invalid storage name "{name}". Name can only contain letters "a" through "z", the digits "0" through'
10
+ '"9", and the hyphen ("-") but only in the middle of the string (e.g. "my-value-1")'
11
+ )
@@ -473,7 +473,7 @@ async def test_adaptive_crawler_exceptions_in_sub_crawlers(*, error_in_pw_crawle
473
473
  async def test_adaptive_playwright_crawler_statistics_in_init() -> None:
474
474
  """Tests that adaptive crawler uses created AdaptivePlaywrightCrawlerStatistics from inputted Statistics."""
475
475
  persistence_enabled = True
476
- persist_state_kvs_name = 'some name'
476
+ persist_state_kvs_name = 'some-name'
477
477
  persist_state_key = 'come key'
478
478
  log_message = 'some message'
479
479
  periodic_message_logger = logging.getLogger('some logger')
@@ -38,7 +38,7 @@ async def test_crawler_instrumentor_capability(server_url: URL) -> None:
38
38
 
39
39
  # Generate first telemetry data from `Dataset` public methods.
40
40
  # `Dataset` is in `instrument_classes` argument, and thus it's public methods are instrumented.
41
- dataset = await Dataset.open(name='test_dataset')
41
+ dataset = await Dataset.open(name='test-dataset')
42
42
  await dataset.drop()
43
43
 
44
44
  # Other traces will be from crawler run.
@@ -17,7 +17,7 @@ if TYPE_CHECKING:
17
17
  from collections.abc import AsyncGenerator
18
18
 
19
19
  MAX_POOL_SIZE = 3
20
- KVS_NAME = 'test_session_pool'
20
+ KVS_NAME = 'test-session-pool'
21
21
  PERSIST_STATE_KEY = 'crawlee_session_pool_state'
22
22
 
23
23
 
@@ -27,14 +27,14 @@ def configuration(tmp_path: Path) -> Configuration:
27
27
  @pytest.fixture
28
28
  async def dataset_client(configuration: Configuration) -> AsyncGenerator[FileSystemDatasetClient, None]:
29
29
  """A fixture for a file system dataset client."""
30
- client = await FileSystemStorageClient().create_dataset_client(name='test_dataset', configuration=configuration)
30
+ client = await FileSystemStorageClient().create_dataset_client(name='test-dataset', configuration=configuration)
31
31
  yield client
32
32
  await client.drop()
33
33
 
34
34
 
35
35
  async def test_file_and_directory_creation(configuration: Configuration) -> None:
36
36
  """Test that file system dataset creates proper files and directories."""
37
- client = await FileSystemStorageClient().create_dataset_client(name='new_dataset', configuration=configuration)
37
+ client = await FileSystemStorageClient().create_dataset_client(name='new-dataset', configuration=configuration)
38
38
 
39
39
  # Verify files were created
40
40
  assert client.path_to_dataset.exists()
@@ -45,7 +45,7 @@ async def test_file_and_directory_creation(configuration: Configuration) -> None
45
45
  metadata = json.load(f)
46
46
  client_metadata = await client.get_metadata()
47
47
  assert metadata['id'] == client_metadata.id
48
- assert metadata['name'] == 'new_dataset'
48
+ assert metadata['name'] == 'new-dataset'
49
49
  assert metadata['item_count'] == 0
50
50
 
51
51
  await client.drop()
@@ -27,14 +27,14 @@ def configuration(tmp_path: Path) -> Configuration:
27
27
  @pytest.fixture
28
28
  async def kvs_client(configuration: Configuration) -> AsyncGenerator[FileSystemKeyValueStoreClient, None]:
29
29
  """A fixture for a file system key-value store client."""
30
- client = await FileSystemStorageClient().create_kvs_client(name='test_kvs', configuration=configuration)
30
+ client = await FileSystemStorageClient().create_kvs_client(name='test-kvs', configuration=configuration)
31
31
  yield client
32
32
  await client.drop()
33
33
 
34
34
 
35
35
  async def test_file_and_directory_creation(configuration: Configuration) -> None:
36
36
  """Test that file system KVS creates proper files and directories."""
37
- client = await FileSystemStorageClient().create_kvs_client(name='new_kvs', configuration=configuration)
37
+ client = await FileSystemStorageClient().create_kvs_client(name='new-kvs', configuration=configuration)
38
38
 
39
39
  # Verify files were created
40
40
  assert client.path_to_kvs.exists()
@@ -44,7 +44,7 @@ async def test_file_and_directory_creation(configuration: Configuration) -> None
44
44
  with client.path_to_metadata.open() as f:
45
45
  metadata = json.load(f)
46
46
  assert metadata['id'] == (await client.get_metadata()).id
47
- assert metadata['name'] == 'new_kvs'
47
+ assert metadata['name'] == 'new-kvs'
48
48
 
49
49
  await client.drop()
50
50
 
@@ -28,7 +28,7 @@ def configuration(tmp_path: Path) -> Configuration:
28
28
  async def rq_client() -> AsyncGenerator[FileSystemRequestQueueClient, None]:
29
29
  """A fixture for a file system request queue client."""
30
30
  client = await FileSystemStorageClient().create_rq_client(
31
- name='test_request_queue',
31
+ name='test-request-queue',
32
32
  )
33
33
  yield client
34
34
  await client.drop()
@@ -36,7 +36,7 @@ async def rq_client() -> AsyncGenerator[FileSystemRequestQueueClient, None]:
36
36
 
37
37
  async def test_file_and_directory_creation() -> None:
38
38
  """Test that file system RQ creates proper files and directories."""
39
- client = await FileSystemStorageClient().create_rq_client(name='new_request_queue')
39
+ client = await FileSystemStorageClient().create_rq_client(name='new-request-queue')
40
40
 
41
41
  # Verify files were created
42
42
  assert client.path_to_rq.exists()
@@ -46,7 +46,7 @@ async def test_file_and_directory_creation() -> None:
46
46
  with client.path_to_metadata.open() as f:
47
47
  metadata = json.load(f)
48
48
  assert metadata['id'] == (await client.get_metadata()).id
49
- assert metadata['name'] == 'new_request_queue'
49
+ assert metadata['name'] == 'new-request-queue'
50
50
 
51
51
  await client.drop()
52
52
 
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
16
16
  @pytest.fixture
17
17
  async def dataset_client() -> AsyncGenerator[MemoryDatasetClient, None]:
18
18
  """Fixture that provides a fresh memory dataset client for each test."""
19
- client = await MemoryStorageClient().create_dataset_client(name='test_dataset')
19
+ client = await MemoryStorageClient().create_dataset_client(name='test-dataset')
20
20
  yield client
21
21
  await client.drop()
22
22
 
@@ -25,7 +25,7 @@ async def test_memory_specific_purge_behavior() -> None:
25
25
  """Test memory-specific purge behavior and in-memory storage characteristics."""
26
26
  # Create dataset and add data
27
27
  dataset_client1 = await MemoryStorageClient().create_dataset_client(
28
- name='test_purge_dataset',
28
+ name='test-purge-dataset',
29
29
  )
30
30
  await dataset_client1.push_data({'item': 'initial data'})
31
31
 
@@ -35,7 +35,7 @@ async def test_memory_specific_purge_behavior() -> None:
35
35
 
36
36
  # Reopen with same storage client instance
37
37
  dataset_client2 = await MemoryStorageClient().create_dataset_client(
38
- name='test_purge_dataset',
38
+ name='test-purge-dataset',
39
39
  )
40
40
 
41
41
  # Verify data was purged (memory storage specific behavior)
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
16
16
  @pytest.fixture
17
17
  async def kvs_client() -> AsyncGenerator[MemoryKeyValueStoreClient, None]:
18
18
  """Fixture that provides a fresh memory key-value store client for each test."""
19
- client = await MemoryStorageClient().create_kvs_client(name='test_kvs')
19
+ client = await MemoryStorageClient().create_kvs_client(name='test-kvs')
20
20
  yield client
21
21
  await client.drop()
22
22
 
@@ -26,7 +26,7 @@ async def test_memory_specific_purge_behavior() -> None:
26
26
 
27
27
  # Create KVS and add data
28
28
  kvs_client1 = await MemoryStorageClient().create_kvs_client(
29
- name='test_purge_kvs',
29
+ name='test-purge-kvs',
30
30
  )
31
31
  await kvs_client1.set_value(key='test-key', value='initial value')
32
32
 
@@ -37,7 +37,7 @@ async def test_memory_specific_purge_behavior() -> None:
37
37
 
38
38
  # Reopen with same storage client instance
39
39
  kvs_client2 = await MemoryStorageClient().create_kvs_client(
40
- name='test_purge_kvs',
40
+ name='test-purge-kvs',
41
41
  )
42
42
 
43
43
  # Verify value was purged (memory storage specific behavior)
@@ -17,7 +17,7 @@ if TYPE_CHECKING:
17
17
  @pytest.fixture
18
18
  async def rq_client() -> AsyncGenerator[MemoryRequestQueueClient, None]:
19
19
  """Fixture that provides a fresh memory request queue client for each test."""
20
- client = await MemoryStorageClient().create_rq_client(name='test_rq')
20
+ client = await MemoryStorageClient().create_rq_client(name='test-rq')
21
21
  yield client
22
22
  await client.drop()
23
23
 
@@ -26,7 +26,7 @@ async def test_memory_specific_purge_behavior() -> None:
26
26
  """Test memory-specific purge behavior and in-memory storage characteristics."""
27
27
  # Create RQ and add data
28
28
  rq_client1 = await MemoryStorageClient().create_rq_client(
29
- name='test_purge_rq',
29
+ name='test-purge-rq',
30
30
  )
31
31
  request = Request.from_url(url='https://example.com/initial')
32
32
  await rq_client1.add_batch_of_requests([request])
@@ -36,7 +36,7 @@ async def test_memory_specific_purge_behavior() -> None:
36
36
 
37
37
  # Reopen with same storage client instance
38
38
  rq_client2 = await MemoryStorageClient().create_rq_client(
39
- name='test_purge_rq',
39
+ name='test-purge-rq',
40
40
  )
41
41
 
42
42
  # Verify queue was purged (memory storage specific behavior)
@@ -44,7 +44,7 @@ async def dataset_client(
44
44
  async with SqlStorageClient() as storage_client:
45
45
  monkeypatch.setattr(storage_client, '_accessed_modified_update_interval', timedelta(seconds=0))
46
46
  client = await storage_client.create_dataset_client(
47
- name='test_dataset',
47
+ name='test-dataset',
48
48
  configuration=configuration,
49
49
  )
50
50
  yield client
@@ -57,7 +57,7 @@ async def test_create_tables_with_connection_string(configuration: Configuration
57
57
 
58
58
  async with SqlStorageClient(connection_string=f'sqlite+aiosqlite:///{storage_dir}') as storage_client:
59
59
  await storage_client.create_dataset_client(
60
- name='new_dataset',
60
+ name='new-dataset',
61
61
  configuration=configuration,
62
62
  )
63
63
 
@@ -75,7 +75,7 @@ async def test_create_tables_with_engine(configuration: Configuration, tmp_path:
75
75
 
76
76
  async with SqlStorageClient(engine=engine) as storage_client:
77
77
  await storage_client.create_dataset_client(
78
- name='new_dataset',
78
+ name='new-dataset',
79
79
  configuration=configuration,
80
80
  )
81
81
 
@@ -89,7 +89,7 @@ async def test_tables_and_metadata_record(configuration: Configuration) -> None:
89
89
  """Test that SQL dataset creates proper tables and metadata records."""
90
90
  async with SqlStorageClient() as storage_client:
91
91
  client = await storage_client.create_dataset_client(
92
- name='new_dataset',
92
+ name='new-dataset',
93
93
  configuration=configuration,
94
94
  )
95
95
 
@@ -101,12 +101,12 @@ async def test_tables_and_metadata_record(configuration: Configuration) -> None:
101
101
  assert 'datasets' in tables
102
102
 
103
103
  async with client.get_session() as session:
104
- stmt = select(DatasetMetadataDb).where(DatasetMetadataDb.name == 'new_dataset')
104
+ stmt = select(DatasetMetadataDb).where(DatasetMetadataDb.name == 'new-dataset')
105
105
  result = await session.execute(stmt)
106
106
  orm_metadata = result.scalar_one_or_none()
107
107
  assert orm_metadata is not None
108
108
  assert orm_metadata.id == client_metadata.id
109
- assert orm_metadata.name == 'new_dataset'
109
+ assert orm_metadata.name == 'new-dataset'
110
110
  assert orm_metadata.item_count == 0
111
111
 
112
112
  await client.drop()