crawlee 1.0.3b7__tar.gz → 1.0.3b9__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.
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/CHANGELOG.md +1 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/PKG-INFO +1 -1
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/pyproject.toml +1 -1
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_service_locator.py +4 -4
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/recoverable_state.py +32 -8
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/statistics/_statistics.py +6 -1
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/_request_queue_client.py +24 -6
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/_key_value_store.py +5 -2
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/conftest.py +5 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_adaptive_playwright/test_adaptive_playwright_crawler.py +0 -1
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_file_system/test_fs_rq_client.py +10 -2
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storages/test_key_value_store.py +42 -2
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storages/test_request_queue.py +31 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/uv.lock +1 -1
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.editorconfig +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/CODEOWNERS +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/pull_request_template.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/build_and_deploy_docs.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/check_pr_title.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/pre_release.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/release.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/run_code_checks.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/templates_e2e_tests.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.github/workflows/update_new_issue.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.gitignore +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.markdownlint.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/.pre-commit-config.yaml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/CONTRIBUTING.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/LICENSE +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/Makefile +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/README.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/apify_platform.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/crawler_as_actor_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/get_public_url.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/log_with_config_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/proxy_advanced_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/proxy_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/google/cloud_run_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/google/google_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/google_cloud.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/google_cloud_run.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/add_data_to_dataset.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/beautifulsoup_crawler.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/capture_screenshot_using_playwright.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/capturing_page_snapshots_with_error_snapshotter.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/adaptive_playwright_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/add_data_to_dataset_bs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/add_data_to_dataset_dataset.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/add_data_to_dataset_pw.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/beautifulsoup_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/beautifulsoup_crawler_keep_alive.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/beautifulsoup_crawler_stop.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/capture_screenshot_using_playwright.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/configure_json_logging.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_all_links_on_website_bs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_all_links_on_website_pw.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_multiple_urls_bs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_multiple_urls_pw.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_specific_links_on_website_bs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_specific_links_on_website_pw.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_website_with_relative_links_all_links.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_website_with_relative_links_same_domain.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_website_with_relative_links_same_hostname.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_website_with_relative_links_same_origin.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/export_entire_dataset_to_file_csv.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/export_entire_dataset_to_file_json.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/extract_and_add_specific_links_on_website_bs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/extract_and_add_specific_links_on_website_pw.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/fill_and_submit_web_form_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/fill_and_submit_web_form_request.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/parsel_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/parsel_crawler_with_error_snapshotter.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_block_requests.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_crawler_with_camoufox.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_crawler_with_error_snapshotter.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_crawler_with_fingerprint_generator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/respect_robots_on_skipped_request.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/respect_robots_txt_file.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/resuming_paused_crawl.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/using_browser_profiles_chrome.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/using_browser_profiles_firefox.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/crawl_all_links_on_website.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/crawl_multiple_urls.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/crawl_specific_links_on_website.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/crawl_website_with_relative_links.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/crawler_keep_alive.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/crawler_stop.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/export_entire_dataset_to_file.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/fill_and_submit_web_form.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/json_logging.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/parsel_crawler.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/playwright_crawler.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/playwright_crawler_adaptive.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/playwright_crawler_with_block_requests.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/playwright_crawler_with_camoufox.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/playwright_crawler_with_fingerprint_generator.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/respect_robots_txt_file.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/resuming_paused_crawl.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/using_browser_profile.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/architecture_overview.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/avoid_blocking.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/avoid_blocking/default_fingerprint_generator_with_args.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/avoid_blocking/playwright_with_fingerprint_generator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/creating_web_archive/manual_archiving_parsel_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/creating_web_archive/manual_archiving_playwright_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/creating_web_archive/simple_pw_through_proxy_pywb_server.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/error_handling/change_handle_error_status.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/error_handling/disable_retry.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/error_handling/handle_proxy_error.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_clients/parsel_curl_impersonate_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_clients/parsel_httpx_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_clients/parsel_impit_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_crawlers/beautifulsoup_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_crawlers/custom_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_crawlers/http_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/http_crawlers/parsel_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/login_crawler/http_login.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/login_crawler/playwright_login.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler/browser_configuration_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler/multiple_launch_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler/plugin_browser_configuration_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler/pre_navigation_hook_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_adaptive/handler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_adaptive/init_beautifulsoup.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_adaptive/init_parsel.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_adaptive/init_prediction.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_adaptive/pre_nav_hooks.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_stagehand/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_stagehand/browser_classes.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_stagehand/stagehand_run.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/playwright_crawler_stagehand/support_classes.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/inspecting_bs_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/inspecting_pw_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/integration_bs_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/integration_pw_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/quick_start_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/session_bs_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/session_pw_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/tiers_bs_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/proxy_management/tiers_pw_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/rl_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/rl_basic_example_with_persist.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/rl_tandem_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/rl_tandem_example_explicit.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/sitemap_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/sitemap_example_with_persist.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/sitemap_tandem_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_loaders/sitemap_tandem_example_explicit.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/adaptive_crawler_handlers.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/basic_request_handlers.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/custom_router_default_only.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/error_handler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/failed_request_handler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/http_pre_navigation.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/playwright_pre_navigation.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/request_router/simple_default_handler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/running_in_web_server/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/running_in_web_server/crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/running_in_web_server/server.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/scaling_crawlers/max_tasks_per_minute_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/scaling_crawlers/min_and_max_concurrency_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_conflicts.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_crawler_configuration.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_crawler_event_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_crawler_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_locator_configuration.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_locator_event_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_locator_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_storage_configuration.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/service_locator/service_storage_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/multi_sessions_http.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/one_session_http.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/sm_basic.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/sm_beautifulsoup.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/sm_http.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/sm_parsel.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/sm_playwright.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/session_management/sm_standalone.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/custom_storage_client_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/file_system_storage_client_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/file_system_storage_client_configuration_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/memory_storage_client_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/registering_storage_clients_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/sql_storage_client_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storage_clients/sql_storage_client_configuration_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/cleaning_do_not_purge_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/cleaning_purge_explicitly_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/dataset_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/dataset_with_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/dataset_with_crawler_explicit_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/helper_add_requests_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/helper_enqueue_links_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/kvs_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/kvs_with_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/kvs_with_crawler_explicit_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/opening.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/rq_basic_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/rq_with_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/storages/rq_with_crawler_explicit_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/code_examples/trace_and_monitor_crawlers/instrument_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/crawler_login.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/creating_web_archive.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/error_handling.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/http_clients.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/http_crawlers.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/playwright_crawler.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/playwright_crawler_adaptive.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/playwright_crawler_stagehand.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/proxy_management.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/request_loaders.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/request_router.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/running_in_web_server.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/scaling_crawlers.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/service_locator.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/session_management.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/storage_clients.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/storages.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/guides/trace_and_monitor_crawlers.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/01_setting_up.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/02_first_crawler.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/03_adding_more_urls.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/04_real_world_project.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/05_crawling.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/06_scraping.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/07_saving_data.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/08_refactoring.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/09_running_in_cloud.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/02_bs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/02_bs_better.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/02_request_queue.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/03_enqueue_strategy.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/03_finding_new_links.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/03_globs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/03_original_code.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/03_transform_request.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/04_sanity_check.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/05_crawling_detail.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/05_crawling_listing.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/06_scraping.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/07_final_code.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/07_first_code.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/08_main.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/08_routes.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/09_apify_sdk.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/code_examples/routes.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/introduction/index.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/pyproject.toml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/quick-start/code_examples/beautifulsoup_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/quick-start/code_examples/parsel_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/quick-start/code_examples/playwright_crawler_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/quick-start/code_examples/playwright_crawler_headful_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/quick-start/index.mdx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/upgrading/upgrading_to_v0x.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/upgrading/upgrading_to_v1.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/renovate.json +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_autoscaling/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_autoscaling/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_autoscaling/autoscaled_pool.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_autoscaling/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_autoscaling/snapshotter.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_autoscaling/system_status.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_browserforge_workaround.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_cli.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_consts.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_log_config.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_request.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/blocked.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/byte_size.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/console.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/crypto.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/docs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/file.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/globs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/html_to_text.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/models.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/raise_if_too_many_kwargs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/recurring_task.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/requests.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/robots.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/sitemap.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/system.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/time.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/try_import.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/urls.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/wait.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/_utils/web.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_browser_controller.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_browser_plugin.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_browser_pool.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_playwright_browser.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_playwright_browser_controller.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_playwright_browser_plugin.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/browsers/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/configuration.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_abstract_http/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_abstract_http/_abstract_http_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_abstract_http/_abstract_http_parser.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_abstract_http/_http_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_abstract_http/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/_adaptive_playwright_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/_adaptive_playwright_crawler_statistics.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/_adaptive_playwright_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/_rendering_type_predictor.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/_result_comparator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_adaptive_playwright/_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_basic/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_basic/_basic_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_basic/_basic_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_basic/_context_pipeline.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_basic/_logging_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_basic/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_beautifulsoup/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_beautifulsoup/_beautifulsoup_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_beautifulsoup/_beautifulsoup_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_beautifulsoup/_beautifulsoup_parser.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_beautifulsoup/_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_beautifulsoup/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_http/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_http/_http_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_http/_http_parser.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_parsel/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_parsel/_parsel_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_parsel/_parsel_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_parsel/_parsel_parser.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_parsel/_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/_playwright_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/_playwright_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/_playwright_http_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/_playwright_pre_nav_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_playwright/_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/crawlers/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/errors.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/events/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/events/_event_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/events/_local_event_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/events/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/events/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/_browserforge_adapter.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/_consts.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/_fingerprint_generator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/_header_generator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/_types.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/fingerprint_suite/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/http_clients/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/http_clients/_base.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/http_clients/_curl_impersonate.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/http_clients/_httpx.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/http_clients/_impit.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/otel/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/otel/crawler_instrumentor.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/cookiecutter.json +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/hooks/post_gen_project.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/hooks/pre_gen_project.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/main.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/main_beautifulsoup.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/main_parsel.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/main_playwright.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/main_playwright_camoufox.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/routes_beautifulsoup.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/routes_camoufox.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/routes_parsel.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/routes_playwright.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/templates/routes_playwright_camoufox.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/.dockerignore +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/Dockerfile +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/README.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/pyproject.toml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/requirements.txt +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/__main__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/main.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/project_template/{{cookiecutter.project_name}}/{{cookiecutter.__package_name}}/routes.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/proxy_configuration.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/request_loaders/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/request_loaders/_request_list.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/request_loaders/_request_loader.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/request_loaders/_request_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/request_loaders/_request_manager_tandem.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/request_loaders/_sitemap_request_loader.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/router.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/sessions/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/sessions/_cookies.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/sessions/_models.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/sessions/_session.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/sessions/_session_pool.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/sessions/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/statistics/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/statistics/_error_snapshotter.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/statistics/_error_tracker.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/statistics/_models.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_base/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_base/_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_base/_key_value_store_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_base/_request_queue_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_base/_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_base/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/_key_value_store_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_file_system/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_memory/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_memory/_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_memory/_key_value_store_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_memory/_request_queue_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_memory/_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_memory/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/_client_mixin.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/_db_models.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/_key_value_store_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/_request_queue_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/_storage_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/_sql/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/models.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storage_clients/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/_base.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/_dataset.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/_request_queue.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/_storage_instance_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/_utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/src/crawlee/storages/py.typed +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/e2e/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/e2e/conftest.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/e2e/project_template/test_static_crawlers_templates.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/e2e/project_template/utils.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/README.md +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/__init__.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_autoscaling/test_autoscaled_pool.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_autoscaling/test_snapshotter.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_autoscaling/test_system_status.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_statistics/test_error_tracker.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_statistics/test_periodic_logging.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_statistics/test_persistence.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_statistics/test_request_processing_record.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_byte_size.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_console.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_crypto.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_file.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_globs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_html_to_text.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_measure_time.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_raise_if_too_many_kwargs.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_recurring_task.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_requests.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_robots.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_sitemap.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_system.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_timedelata_ms.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/_utils/test_urls.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/browsers/test_browser_pool.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/browsers/test_playwright_browser.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/browsers/test_playwright_browser_controller.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/browsers/test_playwright_browser_plugin.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_adaptive_playwright/test_adaptive_playwright_crawler_statistics.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_adaptive_playwright/test_adaptive_playwright_crawling_context.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_adaptive_playwright/test_predictor.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_basic/test_basic_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_basic/test_context_pipeline.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_beautifulsoup/test_beautifulsoup_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_http/test_http_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_parsel/test_parsel_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/crawlers/_playwright/test_playwright_crawler.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/events/test_event_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/events/test_local_event_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/fingerprint_suite/test_adapters.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/fingerprint_suite/test_header_generator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/http_clients/test_http_clients.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/http_clients/test_httpx.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/otel/test_crawler_instrumentor.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/proxy_configuration/test_new_proxy_info.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/proxy_configuration/test_tiers.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/request_loaders/test_request_list.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/request_loaders/test_sitemap_request_loader.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/server.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/server_endpoints.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/sessions/test_cookies.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/sessions/test_models.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/sessions/test_session.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/sessions/test_session_pool.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_file_system/test_fs_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_file_system/test_fs_kvs_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_memory/test_memory_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_memory/test_memory_kvs_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_memory/test_memory_rq_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_sql/test_sql_dataset_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_sql/test_sql_kvs_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_sql/test_sql_rq_client.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storages/conftest.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storages/test_dataset.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storages/test_request_manager_tandem.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storages/test_storage_instance_manager.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/test_cli.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/test_configuration.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/test_log_config.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/test_router.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/test_service_locator.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/.eslintrc.json +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/.yarnrc.yml +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/babel.config.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/build_api_reference.sh +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/docusaurus.config.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/generate_module_shortcuts.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/package.json +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/patches/@docusaurus+core+3.4.0.patch +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/patches/@docusaurus+core+3.5.2.patch +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/roa-loader/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/roa-loader/package.json +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/sidebars.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/ApiLink.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Button.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Button.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/CopyButton.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/CopyButton.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Gradients.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Highlights.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Highlights.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/HomepageCliExample.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/HomepageCliExample.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/HomepageCtaSection.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/HomepageCtaSection.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/HomepageHeroSection.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/HomepageHeroSection.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/LanguageInfoWidget.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/LanguageInfoWidget.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/LanguageSwitch.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/LanguageSwitch.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/RiverSection.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/RiverSection.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/ThreeCardsWithIcon.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/ThreeCardsWithIcon.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/animated-crawlee-logo-dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/Homepage/animated-crawlee-logo-light.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/RunnableCodeBlock.jsx +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/components/RunnableCodeBlock.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/css/custom.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/pages/home_page_example.py +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/pages/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/pages/index.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/ColorModeToggle/dark-mode-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/ColorModeToggle/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/ColorModeToggle/light-mode-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/ColorModeToggle/styles.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/DocItem/Layout/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/DocItem/Layout/styles.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Footer/LinkItem/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Footer/LinkItem/index.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Footer/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Footer/index.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/MDXComponents/A.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/Content/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/Content/styles.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/Logo/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/Logo/index.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/MobileSidebar/Header/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/MobileSidebar/Header/index.module.css +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/MobileSidebar/Layout/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/Navbar/MobileSidebar/index.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/src/theme/NavbarItem/ComponentTypes.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/.nojekyll +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/font/lota.woff +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/font/lota.woff2 +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/API.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/apify_logo.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/apify_og_SDK.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/apify_sdk.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/apify_sdk_white.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/arrow_right.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/auto-scaling-dark.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/auto-scaling-light.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/check.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/chrome-scrape-dark.gif +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/chrome-scrape-light.gif +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/cloud_icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/community-dark-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/community-light-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-dark-new.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-javascript-dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-javascript-light.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-light-new.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-light.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-logo-monocolor.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-logo.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-python-dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-python-light.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/crawlee-python-og.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/defaults-dark-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/defaults-light-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/discord-brand-dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/discord-brand.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/docusaurus.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/external-link.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/favicon.ico +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/favorite-tools-dark.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/favorite-tools-light.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/auto-scaling.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/automate-everything.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/fingerprints.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/node-requests.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/runs-on-py.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/storage.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/features/works-everywhere.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/fill-and-submit-web-form/00.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/fill-and-submit-web-form/01.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/fill-and-submit-web-form/02.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/fill-and-submit-web-form/03.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/getting-started/current-price.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/getting-started/scraping-practice.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/getting-started/select-an-element.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/getting-started/selected-element.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/getting-started/sku.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/getting-started/title.jpg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/github-brand-dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/github-brand.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/guides/jaeger_otel_search_view_example.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/guides/jaeger_otel_trace_example.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/hearth copy.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/hearth.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/javascript_logo.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/js_file.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/logo-big.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/logo-blur.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/logo-blur.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/logo-zoom.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/menu-arrows.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/oss_logo.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/puppeteer-live-view-dashboard.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/puppeteer-live-view-detail.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/queue-dark-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/queue-light-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/resuming-paused-crawl/00.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/resuming-paused-crawl/01.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/robot.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/routing-dark-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/routing-light-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/scraping-utils-dark-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/scraping-utils-light-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/smart-proxy-dark.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/smart-proxy-light.webp +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/source_code.png +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/system.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/triangles_dark.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/triangles_light.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/workflow.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/zero-setup-dark-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/img/zero-setup-light-icon.svg +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/js/custom.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/static/robots.txt +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/docs-prettier.config.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/utils/externalLink.js +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/website_gif/chrome-scrape-dark.gif +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/website_gif/chrome-scrape-dark.mp4 +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/website_gif/chrome-scrape-light.gif +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/website_gif/chrome-scrape-light.mp4 +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tools/website_gif/website_gif.mjs +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/tsconfig.eslint.json +0 -0
- {crawlee-1.0.3b7 → crawlee-1.0.3b9}/website/yarn.lock +0 -0
|
@@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file.
|
|
|
10
10
|
- Add support for Pydantic v2.12 ([#1471](https://github.com/apify/crawlee-python/pull/1471)) ([35c1108](https://github.com/apify/crawlee-python/commit/35c110878c2f445a2866be2522ea8703e9b371dd)) by [@Mantisus](https://github.com/Mantisus), closes [#1464](https://github.com/apify/crawlee-python/issues/1464)
|
|
11
11
|
- Fix database version warning message ([#1485](https://github.com/apify/crawlee-python/pull/1485)) ([18a545e](https://github.com/apify/crawlee-python/commit/18a545ee8add92e844acd0068f9cb8580a82e1c9)) by [@Mantisus](https://github.com/Mantisus)
|
|
12
12
|
- Fix `reclaim_request` in `SqlRequestQueueClient` to correctly update the request state ([#1486](https://github.com/apify/crawlee-python/pull/1486)) ([1502469](https://github.com/apify/crawlee-python/commit/150246957f8f7f1ceb77bb77e3a02a903c50cae1)) by [@Mantisus](https://github.com/Mantisus), closes [#1484](https://github.com/apify/crawlee-python/issues/1484)
|
|
13
|
+
- Fix `KeyValueStore.auto_saved_value` failing in some scenarios ([#1438](https://github.com/apify/crawlee-python/pull/1438)) ([b35dee7](https://github.com/apify/crawlee-python/commit/b35dee78180e57161b826641d45a61b8d8f6ef51)) by [@Pijukatel](https://github.com/Pijukatel), closes [#1354](https://github.com/apify/crawlee-python/issues/1354)
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
<!-- git-cliff-unreleased-end -->
|
|
@@ -38,7 +38,7 @@ class ServiceLocator:
|
|
|
38
38
|
def get_configuration(self) -> Configuration:
|
|
39
39
|
"""Get the configuration."""
|
|
40
40
|
if self._configuration is None:
|
|
41
|
-
logger.
|
|
41
|
+
logger.debug('No configuration set, implicitly creating and using default Configuration.')
|
|
42
42
|
self._configuration = Configuration()
|
|
43
43
|
|
|
44
44
|
return self._configuration
|
|
@@ -63,9 +63,9 @@ class ServiceLocator:
|
|
|
63
63
|
def get_event_manager(self) -> EventManager:
|
|
64
64
|
"""Get the event manager."""
|
|
65
65
|
if self._event_manager is None:
|
|
66
|
-
logger.
|
|
66
|
+
logger.debug('No event manager set, implicitly creating and using default LocalEventManager.')
|
|
67
67
|
if self._configuration is None:
|
|
68
|
-
logger.
|
|
68
|
+
logger.debug(
|
|
69
69
|
'Implicit creation of event manager will implicitly set configuration as side effect. '
|
|
70
70
|
'It is advised to explicitly first set the configuration instead.'
|
|
71
71
|
)
|
|
@@ -93,7 +93,7 @@ class ServiceLocator:
|
|
|
93
93
|
def get_storage_client(self) -> StorageClient:
|
|
94
94
|
"""Get the storage client."""
|
|
95
95
|
if self._storage_client is None:
|
|
96
|
-
logger.
|
|
96
|
+
logger.debug('No storage client set, implicitly creating and using default FileSystemStorageClient.')
|
|
97
97
|
if self._configuration is None:
|
|
98
98
|
logger.warning(
|
|
99
99
|
'Implicit creation of storage client will implicitly set configuration as side effect. '
|
|
@@ -4,12 +4,14 @@ from typing import TYPE_CHECKING, Generic, Literal, TypeVar
|
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel
|
|
6
6
|
|
|
7
|
+
from crawlee._utils.raise_if_too_many_kwargs import raise_if_too_many_kwargs
|
|
7
8
|
from crawlee.events._types import Event, EventPersistStateData
|
|
8
9
|
|
|
9
10
|
if TYPE_CHECKING:
|
|
10
11
|
import logging
|
|
12
|
+
from collections.abc import Callable, Coroutine
|
|
11
13
|
|
|
12
|
-
from crawlee.storages
|
|
14
|
+
from crawlee.storages import KeyValueStore
|
|
13
15
|
|
|
14
16
|
TStateModel = TypeVar('TStateModel', bound=BaseModel)
|
|
15
17
|
|
|
@@ -37,6 +39,7 @@ class RecoverableState(Generic[TStateModel]):
|
|
|
37
39
|
persistence_enabled: Literal[True, False, 'explicit_only'] = False,
|
|
38
40
|
persist_state_kvs_name: str | None = None,
|
|
39
41
|
persist_state_kvs_id: str | None = None,
|
|
42
|
+
persist_state_kvs_factory: Callable[[], Coroutine[None, None, KeyValueStore]] | None = None,
|
|
40
43
|
logger: logging.Logger,
|
|
41
44
|
) -> None:
|
|
42
45
|
"""Initialize a new recoverable state object.
|
|
@@ -51,16 +54,40 @@ class RecoverableState(Generic[TStateModel]):
|
|
|
51
54
|
If neither a name nor and id are supplied, the default store will be used.
|
|
52
55
|
persist_state_kvs_id: The identifier of the KeyValueStore to use for persistence.
|
|
53
56
|
If neither a name nor and id are supplied, the default store will be used.
|
|
57
|
+
persist_state_kvs_factory: Factory that can be awaited to create KeyValueStore to use for persistence. If
|
|
58
|
+
not provided, a system-wide KeyValueStore will be used, based on service locator configuration.
|
|
54
59
|
logger: A logger instance for logging operations related to state persistence
|
|
55
60
|
"""
|
|
61
|
+
raise_if_too_many_kwargs(
|
|
62
|
+
persist_state_kvs_name=persist_state_kvs_name,
|
|
63
|
+
persist_state_kvs_id=persist_state_kvs_id,
|
|
64
|
+
persist_state_kvs_factory=persist_state_kvs_factory,
|
|
65
|
+
)
|
|
66
|
+
if not persist_state_kvs_factory:
|
|
67
|
+
logger.debug(
|
|
68
|
+
'No explicit key_value_store set for recoverable state. Recovery will use a system-wide KeyValueStore '
|
|
69
|
+
'based on service_locator configuration, potentially calling service_locator.set_storage_client in the '
|
|
70
|
+
'process. It is recommended to initialize RecoverableState with explicit key_value_store to avoid '
|
|
71
|
+
'global side effects.'
|
|
72
|
+
)
|
|
73
|
+
|
|
56
74
|
self._default_state = default_state
|
|
57
75
|
self._state_type: type[TStateModel] = self._default_state.__class__
|
|
58
76
|
self._state: TStateModel | None = None
|
|
59
77
|
self._persistence_enabled = persistence_enabled
|
|
60
78
|
self._persist_state_key = persist_state_key
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
79
|
+
if persist_state_kvs_factory is None:
|
|
80
|
+
|
|
81
|
+
async def kvs_factory() -> KeyValueStore:
|
|
82
|
+
from crawlee.storages import KeyValueStore # noqa: PLC0415 avoid circular import
|
|
83
|
+
|
|
84
|
+
return await KeyValueStore.open(name=persist_state_kvs_name, id=persist_state_kvs_id)
|
|
85
|
+
|
|
86
|
+
self._persist_state_kvs_factory = kvs_factory
|
|
87
|
+
else:
|
|
88
|
+
self._persist_state_kvs_factory = persist_state_kvs_factory
|
|
89
|
+
|
|
90
|
+
self._key_value_store: KeyValueStore | None = None
|
|
64
91
|
self._log = logger
|
|
65
92
|
|
|
66
93
|
async def initialize(self) -> TStateModel:
|
|
@@ -77,11 +104,8 @@ class RecoverableState(Generic[TStateModel]):
|
|
|
77
104
|
return self.current_value
|
|
78
105
|
|
|
79
106
|
# Import here to avoid circular imports.
|
|
80
|
-
from crawlee.storages._key_value_store import KeyValueStore # noqa: PLC0415
|
|
81
107
|
|
|
82
|
-
self._key_value_store = await
|
|
83
|
-
name=self._persist_state_kvs_name, id=self._persist_state_kvs_id
|
|
84
|
-
)
|
|
108
|
+
self._key_value_store = await self._persist_state_kvs_factory()
|
|
85
109
|
|
|
86
110
|
await self._load_saved_state()
|
|
87
111
|
|
|
@@ -17,8 +17,11 @@ from crawlee.statistics import FinalStatistics, StatisticsState
|
|
|
17
17
|
from crawlee.statistics._error_tracker import ErrorTracker
|
|
18
18
|
|
|
19
19
|
if TYPE_CHECKING:
|
|
20
|
+
from collections.abc import Callable, Coroutine
|
|
20
21
|
from types import TracebackType
|
|
21
22
|
|
|
23
|
+
from crawlee.storages import KeyValueStore
|
|
24
|
+
|
|
22
25
|
TStatisticsState = TypeVar('TStatisticsState', bound=StatisticsState, default=StatisticsState)
|
|
23
26
|
TNewStatisticsState = TypeVar('TNewStatisticsState', bound=StatisticsState, default=StatisticsState)
|
|
24
27
|
logger = getLogger(__name__)
|
|
@@ -70,6 +73,7 @@ class Statistics(Generic[TStatisticsState]):
|
|
|
70
73
|
persistence_enabled: bool | Literal['explicit_only'] = False,
|
|
71
74
|
persist_state_kvs_name: str | None = None,
|
|
72
75
|
persist_state_key: str | None = None,
|
|
76
|
+
persist_state_kvs_factory: Callable[[], Coroutine[None, None, KeyValueStore]] | None = None,
|
|
73
77
|
log_message: str = 'Statistics',
|
|
74
78
|
periodic_message_logger: Logger | None = None,
|
|
75
79
|
log_interval: timedelta = timedelta(minutes=1),
|
|
@@ -95,6 +99,7 @@ class Statistics(Generic[TStatisticsState]):
|
|
|
95
99
|
persist_state_key=persist_state_key or f'SDK_CRAWLER_STATISTICS_{self._id}',
|
|
96
100
|
persistence_enabled=persistence_enabled,
|
|
97
101
|
persist_state_kvs_name=persist_state_kvs_name,
|
|
102
|
+
persist_state_kvs_factory=persist_state_kvs_factory,
|
|
98
103
|
logger=logger,
|
|
99
104
|
)
|
|
100
105
|
|
|
@@ -110,8 +115,8 @@ class Statistics(Generic[TStatisticsState]):
|
|
|
110
115
|
"""Create near copy of the `Statistics` with replaced `state_model`."""
|
|
111
116
|
new_statistics: Statistics[TNewStatisticsState] = Statistics(
|
|
112
117
|
persistence_enabled=self._state._persistence_enabled, # noqa: SLF001
|
|
113
|
-
persist_state_kvs_name=self._state._persist_state_kvs_name, # noqa: SLF001
|
|
114
118
|
persist_state_key=self._state._persist_state_key, # noqa: SLF001
|
|
119
|
+
persist_state_kvs_factory=self._state._persist_state_kvs_factory, # noqa: SLF001
|
|
115
120
|
log_message=self._log_message,
|
|
116
121
|
periodic_message_logger=self._periodic_message_logger,
|
|
117
122
|
state_model=state_model,
|
|
@@ -31,6 +31,7 @@ if TYPE_CHECKING:
|
|
|
31
31
|
from collections.abc import Sequence
|
|
32
32
|
|
|
33
33
|
from crawlee.configuration import Configuration
|
|
34
|
+
from crawlee.storages import KeyValueStore
|
|
34
35
|
|
|
35
36
|
logger = getLogger(__name__)
|
|
36
37
|
|
|
@@ -92,6 +93,7 @@ class FileSystemRequestQueueClient(RequestQueueClient):
|
|
|
92
93
|
metadata: RequestQueueMetadata,
|
|
93
94
|
path_to_rq: Path,
|
|
94
95
|
lock: asyncio.Lock,
|
|
96
|
+
recoverable_state: RecoverableState[RequestQueueState],
|
|
95
97
|
) -> None:
|
|
96
98
|
"""Initialize a new instance.
|
|
97
99
|
|
|
@@ -114,12 +116,7 @@ class FileSystemRequestQueueClient(RequestQueueClient):
|
|
|
114
116
|
self._is_empty_cache: bool | None = None
|
|
115
117
|
"""Cache for is_empty result: None means unknown, True/False is cached state."""
|
|
116
118
|
|
|
117
|
-
self._state =
|
|
118
|
-
default_state=RequestQueueState(),
|
|
119
|
-
persist_state_key=f'__RQ_STATE_{self._metadata.id}',
|
|
120
|
-
persistence_enabled=True,
|
|
121
|
-
logger=logger,
|
|
122
|
-
)
|
|
119
|
+
self._state = recoverable_state
|
|
123
120
|
"""Recoverable state to maintain request ordering, in-progress status, and handled status."""
|
|
124
121
|
|
|
125
122
|
@override
|
|
@@ -136,6 +133,22 @@ class FileSystemRequestQueueClient(RequestQueueClient):
|
|
|
136
133
|
"""The full path to the request queue metadata file."""
|
|
137
134
|
return self.path_to_rq / METADATA_FILENAME
|
|
138
135
|
|
|
136
|
+
@classmethod
|
|
137
|
+
async def _create_recoverable_state(cls, id: str, configuration: Configuration) -> RecoverableState:
|
|
138
|
+
async def kvs_factory() -> KeyValueStore:
|
|
139
|
+
from crawlee.storage_clients import FileSystemStorageClient # noqa: PLC0415 avoid circular import
|
|
140
|
+
from crawlee.storages import KeyValueStore # noqa: PLC0415 avoid circular import
|
|
141
|
+
|
|
142
|
+
return await KeyValueStore.open(storage_client=FileSystemStorageClient(), configuration=configuration)
|
|
143
|
+
|
|
144
|
+
return RecoverableState[RequestQueueState](
|
|
145
|
+
default_state=RequestQueueState(),
|
|
146
|
+
persist_state_key=f'__RQ_STATE_{id}',
|
|
147
|
+
persist_state_kvs_factory=kvs_factory,
|
|
148
|
+
persistence_enabled=True,
|
|
149
|
+
logger=logger,
|
|
150
|
+
)
|
|
151
|
+
|
|
139
152
|
@classmethod
|
|
140
153
|
async def open(
|
|
141
154
|
cls,
|
|
@@ -194,6 +207,9 @@ class FileSystemRequestQueueClient(RequestQueueClient):
|
|
|
194
207
|
metadata=metadata,
|
|
195
208
|
path_to_rq=rq_base_path / rq_dir,
|
|
196
209
|
lock=asyncio.Lock(),
|
|
210
|
+
recoverable_state=await cls._create_recoverable_state(
|
|
211
|
+
id=id, configuration=configuration
|
|
212
|
+
),
|
|
197
213
|
)
|
|
198
214
|
await client._state.initialize()
|
|
199
215
|
await client._discover_existing_requests()
|
|
@@ -230,6 +246,7 @@ class FileSystemRequestQueueClient(RequestQueueClient):
|
|
|
230
246
|
metadata=metadata,
|
|
231
247
|
path_to_rq=path_to_rq,
|
|
232
248
|
lock=asyncio.Lock(),
|
|
249
|
+
recoverable_state=await cls._create_recoverable_state(id=metadata.id, configuration=configuration),
|
|
233
250
|
)
|
|
234
251
|
|
|
235
252
|
await client._state.initialize()
|
|
@@ -254,6 +271,7 @@ class FileSystemRequestQueueClient(RequestQueueClient):
|
|
|
254
271
|
metadata=metadata,
|
|
255
272
|
path_to_rq=path_to_rq,
|
|
256
273
|
lock=asyncio.Lock(),
|
|
274
|
+
recoverable_state=await cls._create_recoverable_state(id=metadata.id, configuration=configuration),
|
|
257
275
|
)
|
|
258
276
|
await client._state.initialize()
|
|
259
277
|
await client._update_metadata()
|
|
@@ -281,11 +281,14 @@ class KeyValueStore(Storage):
|
|
|
281
281
|
if key in cache:
|
|
282
282
|
return cache[key].current_value.root
|
|
283
283
|
|
|
284
|
+
async def kvs_factory() -> KeyValueStore:
|
|
285
|
+
return self
|
|
286
|
+
|
|
284
287
|
cache[key] = recoverable_state = RecoverableState(
|
|
285
288
|
default_state=AutosavedValue(default_value),
|
|
286
|
-
persistence_enabled=True,
|
|
287
|
-
persist_state_kvs_id=self.id,
|
|
288
289
|
persist_state_key=key,
|
|
290
|
+
persistence_enabled=True,
|
|
291
|
+
persist_state_kvs_factory=kvs_factory,
|
|
289
292
|
logger=logger,
|
|
290
293
|
)
|
|
291
294
|
|
|
@@ -17,6 +17,7 @@ from crawlee import service_locator
|
|
|
17
17
|
from crawlee.fingerprint_suite._browserforge_adapter import get_available_header_network
|
|
18
18
|
from crawlee.http_clients import CurlImpersonateHttpClient, HttpxHttpClient, ImpitHttpClient
|
|
19
19
|
from crawlee.proxy_configuration import ProxyInfo
|
|
20
|
+
from crawlee.statistics import Statistics
|
|
20
21
|
from crawlee.storages import KeyValueStore
|
|
21
22
|
from tests.unit.server import TestServer, app, serve_in_thread
|
|
22
23
|
|
|
@@ -72,6 +73,10 @@ def prepare_test_env(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> Callabl
|
|
|
72
73
|
# Verify that the test environment was set up correctly.
|
|
73
74
|
assert os.environ.get('CRAWLEE_STORAGE_DIR') == str(tmp_path)
|
|
74
75
|
|
|
76
|
+
# Reset global class variables to ensure test isolation.
|
|
77
|
+
KeyValueStore._autosaved_values = {}
|
|
78
|
+
Statistics._Statistics__next_id = 0 # type:ignore[attr-defined] # Mangled attribute
|
|
79
|
+
|
|
75
80
|
return _prepare_test_env
|
|
76
81
|
|
|
77
82
|
|
|
@@ -493,7 +493,6 @@ async def test_adaptive_playwright_crawler_statistics_in_init() -> None:
|
|
|
493
493
|
assert type(crawler._statistics.state) is AdaptivePlaywrightCrawlerStatisticState
|
|
494
494
|
|
|
495
495
|
assert crawler._statistics._state._persistence_enabled == persistence_enabled
|
|
496
|
-
assert crawler._statistics._state._persist_state_kvs_name == persist_state_kvs_name
|
|
497
496
|
assert crawler._statistics._state._persist_state_key == persist_state_key
|
|
498
497
|
|
|
499
498
|
assert crawler._statistics._log_message == log_message
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/tests/unit/storage_clients/_file_system/test_fs_rq_client.py
RENAMED
|
@@ -6,9 +6,9 @@ from typing import TYPE_CHECKING
|
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
|
|
9
|
-
from crawlee import Request
|
|
9
|
+
from crawlee import Request, service_locator
|
|
10
10
|
from crawlee.configuration import Configuration
|
|
11
|
-
from crawlee.storage_clients import FileSystemStorageClient
|
|
11
|
+
from crawlee.storage_clients import FileSystemStorageClient, MemoryStorageClient
|
|
12
12
|
|
|
13
13
|
if TYPE_CHECKING:
|
|
14
14
|
from collections.abc import AsyncGenerator
|
|
@@ -78,6 +78,14 @@ async def test_request_file_persistence(rq_client: FileSystemRequestQueueClient)
|
|
|
78
78
|
assert request_data['url'].startswith('https://example.com/')
|
|
79
79
|
|
|
80
80
|
|
|
81
|
+
async def test_opening_rq_does_not_have_side_effect_on_service_locator(configuration: Configuration) -> None:
|
|
82
|
+
"""Opening request queue client should cause setting storage client in the global service locator."""
|
|
83
|
+
await FileSystemStorageClient().create_rq_client(name='test_request_queue', configuration=configuration)
|
|
84
|
+
|
|
85
|
+
# Set some specific storage client in the service locator. There should be no `ServiceConflictError`.
|
|
86
|
+
service_locator.set_storage_client(MemoryStorageClient())
|
|
87
|
+
|
|
88
|
+
|
|
81
89
|
async def test_drop_removes_directory(rq_client: FileSystemRequestQueueClient) -> None:
|
|
82
90
|
"""Test that drop removes the entire RQ directory from disk."""
|
|
83
91
|
await rq_client.add_batch_of_requests([Request.from_url('https://example.com')])
|
|
@@ -10,13 +10,13 @@ import pytest
|
|
|
10
10
|
|
|
11
11
|
from crawlee import service_locator
|
|
12
12
|
from crawlee.configuration import Configuration
|
|
13
|
+
from crawlee.storage_clients import FileSystemStorageClient, MemoryStorageClient, SqlStorageClient, StorageClient
|
|
13
14
|
from crawlee.storages import KeyValueStore
|
|
14
15
|
from crawlee.storages._storage_instance_manager import StorageInstanceManager
|
|
15
16
|
|
|
16
17
|
if TYPE_CHECKING:
|
|
17
18
|
from collections.abc import AsyncGenerator
|
|
18
|
-
|
|
19
|
-
from crawlee.storage_clients import StorageClient
|
|
19
|
+
from pathlib import Path
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
@pytest.fixture
|
|
@@ -1095,3 +1095,43 @@ async def test_validate_name(storage_client: StorageClient, name: str, *, is_val
|
|
|
1095
1095
|
else:
|
|
1096
1096
|
with pytest.raises(ValueError, match=rf'Invalid storage name "{name}".*'):
|
|
1097
1097
|
await KeyValueStore.open(name=name, storage_client=storage_client)
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
@pytest.mark.parametrize(
|
|
1101
|
+
'tested_storage_client',
|
|
1102
|
+
[
|
|
1103
|
+
pytest.param(MemoryStorageClient(), id='tested=MemoryStorageClient'),
|
|
1104
|
+
pytest.param(FileSystemStorageClient(), id='tested=FileSystemStorageClient'),
|
|
1105
|
+
pytest.param(SqlStorageClient(), id='tested=SqlStorageClient'),
|
|
1106
|
+
],
|
|
1107
|
+
)
|
|
1108
|
+
@pytest.mark.parametrize(
|
|
1109
|
+
'global_storage_client',
|
|
1110
|
+
[
|
|
1111
|
+
pytest.param(MemoryStorageClient(), id='global=MemoryStorageClient'),
|
|
1112
|
+
pytest.param(FileSystemStorageClient(), id='global=FileSystemStorageClient'),
|
|
1113
|
+
pytest.param(SqlStorageClient(), id='global=SqlStorageClient'),
|
|
1114
|
+
],
|
|
1115
|
+
)
|
|
1116
|
+
async def test_get_auto_saved_value_various_global_clients(
|
|
1117
|
+
tmp_path: Path, tested_storage_client: StorageClient, global_storage_client: StorageClient
|
|
1118
|
+
) -> None:
|
|
1119
|
+
"""Ensure that persistence is working for all clients regardless of what is set in service locator."""
|
|
1120
|
+
service_locator.set_configuration(
|
|
1121
|
+
Configuration(
|
|
1122
|
+
crawlee_storage_dir=str(tmp_path), # type: ignore[call-arg]
|
|
1123
|
+
purge_on_start=True,
|
|
1124
|
+
)
|
|
1125
|
+
)
|
|
1126
|
+
service_locator.set_storage_client(global_storage_client)
|
|
1127
|
+
|
|
1128
|
+
kvs = await KeyValueStore.open(storage_client=tested_storage_client)
|
|
1129
|
+
values_kvs = {'key': 'some_value'}
|
|
1130
|
+
test_key = 'test_key'
|
|
1131
|
+
|
|
1132
|
+
autosaved_value_kvs = await kvs.get_auto_saved_value(test_key)
|
|
1133
|
+
assert autosaved_value_kvs == {}
|
|
1134
|
+
autosaved_value_kvs.update(values_kvs)
|
|
1135
|
+
await kvs.persist_autosaved_values()
|
|
1136
|
+
|
|
1137
|
+
assert await kvs.get_value(test_key) == autosaved_value_kvs
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
6
|
import asyncio
|
|
7
|
+
from datetime import timedelta
|
|
7
8
|
from typing import TYPE_CHECKING
|
|
8
9
|
|
|
9
10
|
import pytest
|
|
@@ -421,6 +422,36 @@ async def test_is_empty(rq: RequestQueue) -> None:
|
|
|
421
422
|
assert await rq.is_empty() is True
|
|
422
423
|
|
|
423
424
|
|
|
425
|
+
@pytest.mark.parametrize(
|
|
426
|
+
('wait_for_all'),
|
|
427
|
+
[
|
|
428
|
+
pytest.param(True, id='wait for all'),
|
|
429
|
+
pytest.param(False, id='don`t wait for all'),
|
|
430
|
+
],
|
|
431
|
+
)
|
|
432
|
+
async def test_add_requests_wait_for_all(rq: RequestQueue, *, wait_for_all: bool) -> None:
|
|
433
|
+
"""Test adding requests with wait_for_all_requests_to_be_added option."""
|
|
434
|
+
urls = [f'https://example.com/{i}' for i in range(15)]
|
|
435
|
+
|
|
436
|
+
# Add requests without waiting
|
|
437
|
+
await rq.add_requests(
|
|
438
|
+
urls,
|
|
439
|
+
batch_size=5,
|
|
440
|
+
wait_for_all_requests_to_be_added=wait_for_all,
|
|
441
|
+
wait_time_between_batches=timedelta(milliseconds=100),
|
|
442
|
+
)
|
|
443
|
+
|
|
444
|
+
if not wait_for_all:
|
|
445
|
+
# Immediately after adding, the total count may be less than 15 due to background processing
|
|
446
|
+
assert await rq.get_total_count() <= 15
|
|
447
|
+
|
|
448
|
+
# Wait a 250 milliseconds for background tasks to complete
|
|
449
|
+
await asyncio.sleep(0.25)
|
|
450
|
+
|
|
451
|
+
# Verify all requests were added
|
|
452
|
+
assert await rq.get_total_count() == 15
|
|
453
|
+
|
|
454
|
+
|
|
424
455
|
async def test_is_finished(rq: RequestQueue) -> None:
|
|
425
456
|
"""Test checking if a request queue is finished."""
|
|
426
457
|
# Initially the queue should be finished (empty and no background tasks)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/crawler_as_actor_example.py
RENAMED
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/log_with_config_example.py
RENAMED
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/apify/proxy_advanced_example.py
RENAMED
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/deployment/code_examples/google/cloud_run_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/adaptive_playwright_crawler.py
RENAMED
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/add_data_to_dataset_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/beautifulsoup_crawler_keep_alive.py
RENAMED
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/beautifulsoup_crawler_stop.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_all_links_on_website_bs.py
RENAMED
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/crawl_all_links_on_website_pw.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/export_entire_dataset_to_file_csv.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/fill_and_submit_web_form_crawler.py
RENAMED
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/fill_and_submit_web_form_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_block_requests.py
RENAMED
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/playwright_crawler_with_camoufox.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/respect_robots_on_skipped_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/using_browser_profiles_chrome.py
RENAMED
|
File without changes
|
{crawlee-1.0.3b7 → crawlee-1.0.3b9}/docs/examples/code_examples/using_browser_profiles_firefox.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|