apify 3.3.1b6__tar.gz → 3.3.2b2__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.
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/_check_code.yaml +3 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/_check_docs.yaml +3 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/_release_docs.yaml +4 -1
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/_tests.yaml +3 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/manual_release_stable.yaml +80 -3
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/on_issue.yaml +3 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/on_master.yaml +13 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/workflows/on_pull_request.yaml +4 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/CHANGELOG.md +10 -2
- {apify-3.3.1b6 → apify-3.3.2b2}/PKG-INFO +1 -1
- {apify-3.3.1b6 → apify-3.3.2b2}/pyproject.toml +5 -1
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/requests.py +14 -1
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_alias_resolving.py +4 -2
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_api_client_creation.py +2 -2
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_schema_storages/actor_source/main.py +4 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/_utils.py +24 -11
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/test_request_queue.py +119 -127
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/test_storages.py +9 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/requests/test_to_apify_request.py +35 -1
- {apify-3.3.1b6 → apify-3.3.2b2}/uv.lock +465 -432
- {apify-3.3.1b6 → apify-3.3.2b2}/website/docusaurus.config.js +32 -6
- {apify-3.3.1b6 → apify-3.3.2b2}/website/package.json +2 -2
- apify-3.3.2b2/website/src/theme/NavbarItem/ComponentTypes.js +7 -0
- apify-3.3.2b2/website/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +91 -0
- apify-3.3.2b2/website/src/theme/NavbarItem/VersionedReferenceNavbarItem.js +16 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/.gitignore +1 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/01-introduction/index.mdx +50 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/01-introduction/quick-start.mdx +140 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/02-guides/01-requests-and-httpx.mdx +100 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/02-guides/02-beautiful-soup.mdx +81 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/02-guides/03-playwright.mdx +120 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/02-guides/04-selenium.mdx +110 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/02-guides/05-scrapy.mdx +111 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/01-actor-lifecycle.mdx +117 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/02-actor-input.mdx +27 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/03-storages.mdx +284 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/04-actor-events.mdx +113 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/05-proxy-management.mdx +194 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/06-interacting-with-other-actors.mdx +96 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/07-webhooks.mdx +50 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/08-access-apify-api.mdx +42 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/09-running-webserver.mdx +66 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/10-logging.mdx +109 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/03-concepts/11-configuration.mdx +45 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/api-packages.json +1 -0
- apify-3.3.2b2/website/versioned_docs/version-1.7/api-typedoc.json +8083 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/.gitignore +1 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/code/01_introduction.py +17 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/code/actor_structure/__init__.py +0 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/code/actor_structure/__main__.py +6 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/code/actor_structure/main.py +8 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/code/actor_structure/py.typed +0 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/index.mdx +45 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/01_introduction/quick-start.mdx +124 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/01_beautifulsoup_httpx.mdx +30 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/02_crawlee.mdx +37 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/03_playwright.mdx +56 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/04_selenium.mdx +46 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/05_scrapy.mdx +114 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/01_beautifulsoup_httpx.py +85 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/02_crawlee_beautifulsoup.py +55 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/02_crawlee_playwright.py +68 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/03_playwright.py +94 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/04_selenium.py +104 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/__init__.py +0 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/__main__.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/items.py +10 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/main.py +32 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/py.typed +0 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/settings.py +11 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/spiders/__init__.py +3 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/spiders/py.typed +0 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/02_guides/code/scrapy_project/src/spiders/title.py +68 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/01_actor_lifecycle.mdx +55 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/02_actor_input.mdx +18 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/03_storages.mdx +173 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/04_actor_events.mdx +81 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/05_proxy_management.mdx +108 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/06_interacting_with_other_actors.mdx +51 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/07_webhooks.mdx +31 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/08_access_apify_api.mdx +31 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/09_running_webserver.mdx +26 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/10_logging.mdx +84 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/11_configuration.mdx +34 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/12_pay_per_event.mdx +46 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/01_context_manager.py +9 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/01_init_exit.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/01_reboot.py +7 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/01_status_message.py +14 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/02_input.py +9 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_dataset_exports.py +31 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_dataset_read_write.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_deleting_storages.py +13 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_kvs_iterating.py +18 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_kvs_public_url.py +11 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_kvs_read_write.py +25 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_opening_storages.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/03_rq.py +53 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/04_actor_events.py +38 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_apify_proxy.py +12 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_apify_proxy_config.py +15 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_custom_proxy.py +17 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_custom_proxy_function.py +28 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_proxy_actor_input.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_proxy_httpx.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/05_proxy_rotation.py +31 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/06_interacting_call.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/06_interacting_call_task.py +19 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/06_interacting_metamorph.py +24 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/06_interacting_start.py +13 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/07_webhook.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/07_webhook_preventing.py +17 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/08_actor_client.py +11 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/08_actor_new_client.py +14 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/09_webserver.py +49 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/10_log_config.py +12 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/10_logger_usage.py +23 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/11_config.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/actor_charge.py +30 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/03_concepts/code/conditional_actor_charge.py +18 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/04_upgrading/upgrading_to_v2.md +48 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/api-packages.json +1 -0
- apify-3.3.2b2/website/versioned_docs/version-2.7/api-typedoc.json +6951 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/.gitignore +1 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/code/01_introduction.py +24 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/code/actor_structure/__init__.py +0 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/code/actor_structure/__main__.py +6 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/code/actor_structure/main.py +8 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/code/actor_structure/py.typed +0 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/images/apify-create.gif +0 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/index.mdx +48 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/01_introduction/quick-start.mdx +116 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/01_actor_lifecycle.mdx +101 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/02_actor_input.mdx +18 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/03_storages.mdx +173 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/04_actor_events.mdx +81 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/05_proxy_management.mdx +108 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/06_interacting_with_other_actors.mdx +51 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/07_webhooks.mdx +31 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/08_access_apify_api.mdx +31 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/09_logging.mdx +114 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/10_configuration.mdx +34 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/11_pay_per_event.mdx +69 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_class_context.py +21 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_class_manual.py +26 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_context_manager.py +15 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_error_handling_context.py +13 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_error_handling_manual.py +33 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_init_exit.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_instance_context.py +27 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_instance_manual.py +32 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_reboot.py +23 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/01_status_message.py +24 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/02_input.py +15 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_dataset_exports.py +37 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_dataset_read_write.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_deleting_storages.py +19 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_kvs_iterating.py +24 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_kvs_public_url.py +17 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_kvs_read_write.py +31 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_opening_storages.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/03_rq.py +54 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/04_actor_events.py +42 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_apify_proxy.py +18 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_apify_proxy_config.py +21 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_custom_proxy.py +23 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_custom_proxy_function.py +34 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_proxy_actor_input.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_proxy_httpx.py +28 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/05_proxy_rotation.py +29 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/06_interacting_call.py +32 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/06_interacting_call_task.py +25 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/06_interacting_metamorph.py +30 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/06_interacting_start.py +19 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/07_webhook.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/07_webhook_preventing.py +22 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/08_actor_client.py +17 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/08_actor_new_client.py +20 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/09_log_config.py +17 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/09_logger_usage.py +28 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/09_redirect_log.py +21 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/09_redirect_log_existing_run.py +28 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/10_config.py +23 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/11_actor_charge.py +36 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/11_charge_limit_check.py +29 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/02_concepts/code/11_conditional_actor_charge.py +24 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/01_beautifulsoup_httpx.mdx +30 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/02_parsel_impit.mdx +28 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/03_playwright.mdx +57 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/04_selenium.mdx +46 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/05_crawlee.mdx +46 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/06_scrapy.mdx +114 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/07_running_webserver.mdx +26 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/01_beautifulsoup_httpx.py +88 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/02_parsel_impit.py +94 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/03_playwright.py +97 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/04_selenium.py +106 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/05_crawlee_beautifulsoup.py +55 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/05_crawlee_parsel.py +55 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/05_crawlee_playwright.py +58 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/07_webserver.py +53 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/__init__.py +0 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/__main__.py +16 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/items.py +10 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/main.py +36 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/py.typed +0 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/settings.py +11 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/spiders/__init__.py +3 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/spiders/py.typed +0 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/03_guides/code/scrapy_project/src/spiders/title.py +68 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/04_upgrading/upgrading_to_v2.md +48 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/04_upgrading/upgrading_to_v3.md +159 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/api-packages.json +1 -0
- apify-3.3.2b2/website/versioned_docs/version-3.3/api-typedoc.json +76320 -0
- apify-3.3.2b2/website/versioned_sidebars/version-1.7-sidebars.json +38 -0
- apify-3.3.2b2/website/versioned_sidebars/version-2.7-sidebars.json +49 -0
- apify-3.3.2b2/website/versioned_sidebars/version-3.3-sidebars.json +49 -0
- apify-3.3.2b2/website/versions.json +5 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/yarn.lock +920 -717
- {apify-3.3.1b6 → apify-3.3.2b2}/.editorconfig +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.github/CODEOWNERS +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.gitignore +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.markdownlint.yaml +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.pre-commit-config.yaml +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/.rules.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/AGENTS.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/CLAUDE.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/CONTRIBUTING.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/GEMINI.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/LICENSE +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/README.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/codecov.yaml +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/code/01_introduction.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/code/actor_structure/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/code/actor_structure/__main__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/code/actor_structure/main.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/code/actor_structure/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/images/apify-create.gif +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/index.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/01_introduction/quick-start.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/01_actor_lifecycle.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/02_actor_input.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/03_storages.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/04_actor_events.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/05_proxy_management.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/06_interacting_with_other_actors.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/07_webhooks.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/08_access_apify_api.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/09_logging.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/10_configuration.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/11_pay_per_event.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_class_context.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_class_manual.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_context_manager.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_error_handling_context.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_error_handling_manual.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_init_exit.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_instance_context.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_instance_manual.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_reboot.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/01_status_message.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/02_input.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_dataset_exports.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_dataset_read_write.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_deleting_storages.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_kvs_iterating.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_kvs_public_url.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_kvs_read_write.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_opening_storages.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/03_rq.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/04_actor_events.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_apify_proxy.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_apify_proxy_config.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_custom_proxy.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_custom_proxy_function.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_proxy_actor_input.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_proxy_httpx.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/05_proxy_rotation.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/06_interacting_call.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/06_interacting_call_task.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/06_interacting_metamorph.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/06_interacting_start.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/07_webhook.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/07_webhook_preventing.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/08_actor_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/08_actor_new_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/09_log_config.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/09_logger_usage.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/09_redirect_log.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/09_redirect_log_existing_run.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/10_config.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/11_actor_charge.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/11_charge_limit_check.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/02_concepts/code/11_conditional_actor_charge.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/01_beautifulsoup_httpx.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/02_parsel_impit.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/03_playwright.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/04_selenium.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/05_crawlee.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/06_scrapy.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/07_running_webserver.mdx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/01_beautifulsoup_httpx.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/02_parsel_impit.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/03_playwright.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/04_selenium.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/05_crawlee_beautifulsoup.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/05_crawlee_parsel.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/05_crawlee_playwright.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/07_webserver.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/__main__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/items.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/main.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/settings.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/spiders/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/03_guides/code/scrapy_project/src/spiders/title.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/04_upgrading/upgrading_to_v2.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/04_upgrading/upgrading_to_v3.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/docs/pyproject.toml +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/renovate.json +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_actor.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_charging.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_configuration.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_consts.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_crypto.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_models.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_proxy_configuration.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/_utils.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/events/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/events/_apify_event_manager.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/events/_types.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/events/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/log.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/request_loaders/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/request_loaders/_apify_request_list.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/request_loaders/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/_actor_runner.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/_async_thread.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/_logging_config.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/extensions/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/extensions/_httpcache.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/middlewares/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/middlewares/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/pipelines/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/pipelines/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/scheduler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/scrapy/utils.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_dataset_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_key_value_store_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_models.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_request_queue_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_request_queue_shared_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_request_queue_single_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_storage_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/_utils.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_apify/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_file_system/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_file_system/_dataset_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_file_system/_key_value_store_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_file_system/_storage_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_ppe_dataset_mixin.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_smart_apify/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/_smart_apify/_storage_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storage_clients/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storages/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/src/apify/storages/py.typed +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/README.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/_utils.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/actor_source_base/Dockerfile +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/actor_source_base/requirements.txt +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/actor_source_base/server.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/actor_source_base/src/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/actor_source_base/src/__main__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/actor_source_base/src/main.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/conftest.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_api_helpers.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_call_timeouts.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_charge.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_create_proxy_configuration.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_dataset.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_events.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_key_value_store.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_lifecycle.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_log.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_request_queue.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_actor_scrapy.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_apify_storages.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/main_adaptive_playwright_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/main_basic_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/main_beautifulsoup_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/main_http_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/main_parsel_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/main_playwright_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/actor_source/playwright.Dockerfile +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/conftest.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/test_adaptive_playwright_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/test_basic_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/test_beautifulsoup_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/test_http_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/test_parsel_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_crawlee/test_playwright_crawler.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_fixtures.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_schema_storages/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_schema_storages/actor_source/actor.json +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_schema_storages/test_schema_storages.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/__main__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/items.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/main.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/main_custom_pipeline.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/pipelines.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/settings.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/settings_custom_pipeline.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/spider_basic.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/spider_cb_kwargs.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/spider_crawl.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/spider_custom_pipeline.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/actor_source/spider_itemloader.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/conftest.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/test_basic_spider.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/test_cb_kwargs_spider.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/test_crawl_spider.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/test_custom_pipeline_spider.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/e2e/test_scrapy/test_itemloader_spider.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/README.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/conftest.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/test_dataset.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/integration/test_key_value_store.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/README.md +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_charge.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_dataset.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_env_helpers.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_helpers.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_key_value_store.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_lifecycle.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_log.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_actor_request_queue.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_charging_manager.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_configuration.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/actor/test_request_list.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/conftest.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/events/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/events/test_apify_event_manager.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/extensions/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/middlewares/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/pipelines/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/requests/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/utils/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/__init__.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_alias_resolver.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_api_client_creation.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_apify_dataset_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_apify_kvs_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_apify_request_queue_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_file_system.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/storage_clients/test_smart_apify_storage_client.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/test_apify_storages.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/test_crypto.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/test_log.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/test_proxy_configuration.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/tests/unit/test_utils.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/typos.toml +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/.eslintrc.json +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/.yarnrc.yml +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/babel.config.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/build_api_reference.sh +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/generate_module_shortcuts.py +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/roa-loader/index.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/roa-loader/package.json +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/sidebars.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/components/ApiLink.jsx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/components/Gradients.jsx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/components/Highlights.jsx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/components/Highlights.module.css +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/components/RunnableCodeBlock.jsx +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/components/RunnableCodeBlock.module.css +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/css/custom.css +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/pages/index.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/plugins/docusaurus-plugin-segment/index.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/plugins/docusaurus-plugin-segment/segment.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/src/theme/DocItem/Content/index.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/static/.nojekyll +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/static/img/docs-og.png +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/static/img/guides/redirected_logs_example.webp +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/tools/docs-prettier.config.js +0 -0
- {apify-3.3.1b6 → apify-3.3.2b2}/website/tools/utils/externalLink.js +0 -0
|
@@ -11,6 +11,9 @@ on:
|
|
|
11
11
|
required: true
|
|
12
12
|
type: string
|
|
13
13
|
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
14
17
|
env:
|
|
15
18
|
NODE_VERSION: 22
|
|
16
19
|
PYTHON_VERSION: 3.14
|
|
@@ -79,7 +82,7 @@ jobs:
|
|
|
79
82
|
path: ./website/build
|
|
80
83
|
|
|
81
84
|
- name: Deploy artifact to GitHub Pages
|
|
82
|
-
uses: actions/deploy-pages@
|
|
85
|
+
uses: actions/deploy-pages@v5
|
|
83
86
|
|
|
84
87
|
- name: Invalidate CloudFront cache
|
|
85
88
|
run: |
|
|
@@ -25,6 +25,9 @@ concurrency:
|
|
|
25
25
|
group: release
|
|
26
26
|
cancel-in-progress: false
|
|
27
27
|
|
|
28
|
+
permissions:
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
28
31
|
jobs:
|
|
29
32
|
code_checks:
|
|
30
33
|
name: Code checks
|
|
@@ -51,6 +54,8 @@ jobs:
|
|
|
51
54
|
changelog_update:
|
|
52
55
|
name: Changelog update
|
|
53
56
|
needs: [release_prepare]
|
|
57
|
+
permissions:
|
|
58
|
+
contents: write
|
|
54
59
|
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
|
|
55
60
|
with:
|
|
56
61
|
version_number: ${{ needs.release_prepare.outputs.version_number }}
|
|
@@ -61,6 +66,8 @@ jobs:
|
|
|
61
66
|
name: GitHub release
|
|
62
67
|
needs: [release_prepare, changelog_update]
|
|
63
68
|
runs-on: ubuntu-latest
|
|
69
|
+
permissions:
|
|
70
|
+
contents: write
|
|
64
71
|
env:
|
|
65
72
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
66
73
|
steps:
|
|
@@ -95,13 +102,83 @@ jobs:
|
|
|
95
102
|
- name: Publish package to PyPI
|
|
96
103
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
97
104
|
|
|
105
|
+
version_docs:
|
|
106
|
+
name: Version docs
|
|
107
|
+
needs: [release_prepare, changelog_update, pypi_publish]
|
|
108
|
+
runs-on: ubuntu-latest
|
|
109
|
+
outputs:
|
|
110
|
+
version_docs_commitish: ${{ steps.commit_versioned_docs.outputs.commit_long_sha }}
|
|
111
|
+
permissions:
|
|
112
|
+
contents: write
|
|
113
|
+
env:
|
|
114
|
+
NODE_VERSION: 22
|
|
115
|
+
PYTHON_VERSION: 3.14
|
|
116
|
+
|
|
117
|
+
steps:
|
|
118
|
+
- name: Checkout repository
|
|
119
|
+
uses: actions/checkout@v6
|
|
120
|
+
with:
|
|
121
|
+
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
|
|
122
|
+
ref: ${{ needs.changelog_update.outputs.changelog_commitish }}
|
|
123
|
+
|
|
124
|
+
- name: Set up Node
|
|
125
|
+
uses: actions/setup-node@v6
|
|
126
|
+
with:
|
|
127
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
128
|
+
|
|
129
|
+
- name: Set up Python
|
|
130
|
+
uses: actions/setup-python@v6
|
|
131
|
+
with:
|
|
132
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
133
|
+
|
|
134
|
+
- name: Set up uv package manager
|
|
135
|
+
uses: astral-sh/setup-uv@v7
|
|
136
|
+
with:
|
|
137
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
138
|
+
|
|
139
|
+
- name: Install Python dependencies
|
|
140
|
+
run: uv run poe install-dev
|
|
141
|
+
|
|
142
|
+
- name: Install website dependencies
|
|
143
|
+
run: |
|
|
144
|
+
cd website
|
|
145
|
+
corepack enable
|
|
146
|
+
yarn install
|
|
147
|
+
|
|
148
|
+
- name: Snapshot the current version
|
|
149
|
+
run: |
|
|
150
|
+
cd website
|
|
151
|
+
VERSION="$(python -c "import tomllib, pathlib; print(tomllib.loads(pathlib.Path('../pyproject.toml').read_text())['project']['version'])")"
|
|
152
|
+
MAJOR_MINOR="$(echo "$VERSION" | cut -d. -f1-2)"
|
|
153
|
+
export MAJOR_MINOR
|
|
154
|
+
# Remove existing version if present (patch releases override)
|
|
155
|
+
rm -rf "versioned_docs/version-${MAJOR_MINOR}"
|
|
156
|
+
rm -rf "versioned_sidebars/version-${MAJOR_MINOR}-sidebars.json"
|
|
157
|
+
jq 'map(select(. != env.MAJOR_MINOR))' versions.json > tmp.json && mv tmp.json versions.json
|
|
158
|
+
# Build API reference and create version snapshots
|
|
159
|
+
bash build_api_reference.sh
|
|
160
|
+
npx docusaurus docs:version "$MAJOR_MINOR"
|
|
161
|
+
npx docusaurus api:version "$MAJOR_MINOR"
|
|
162
|
+
|
|
163
|
+
- name: Commit and push versioned docs
|
|
164
|
+
id: commit_versioned_docs
|
|
165
|
+
uses: EndBug/add-and-commit@v10
|
|
166
|
+
with:
|
|
167
|
+
add: "website/versioned_docs website/versioned_sidebars website/versions.json"
|
|
168
|
+
message: "docs: version ${{ needs.release_prepare.outputs.version_number }} docs [skip ci]"
|
|
169
|
+
default_author: github_actions
|
|
170
|
+
|
|
98
171
|
doc_release:
|
|
99
172
|
name: Doc release
|
|
100
|
-
needs: [changelog_update, pypi_publish]
|
|
173
|
+
needs: [changelog_update, pypi_publish, version_docs]
|
|
174
|
+
permissions:
|
|
175
|
+
contents: write
|
|
176
|
+
pages: write
|
|
177
|
+
id-token: write
|
|
101
178
|
uses: ./.github/workflows/_release_docs.yaml
|
|
102
179
|
with:
|
|
103
|
-
# Use the
|
|
104
|
-
ref: ${{ needs.
|
|
180
|
+
# Use the version_docs commit to include both changelog and versioned docs.
|
|
181
|
+
ref: ${{ needs.version_docs.outputs.version_docs_commitish }}
|
|
105
182
|
secrets: inherit
|
|
106
183
|
|
|
107
184
|
trigger_docker_build:
|
|
@@ -11,6 +11,9 @@ concurrency:
|
|
|
11
11
|
group: release
|
|
12
12
|
cancel-in-progress: false
|
|
13
13
|
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
14
17
|
jobs:
|
|
15
18
|
doc_checks:
|
|
16
19
|
name: Doc checks
|
|
@@ -21,6 +24,10 @@ jobs:
|
|
|
21
24
|
if: startsWith(github.event.head_commit.message, 'docs')
|
|
22
25
|
name: Doc release
|
|
23
26
|
needs: [doc_checks]
|
|
27
|
+
permissions:
|
|
28
|
+
contents: write
|
|
29
|
+
pages: write
|
|
30
|
+
id-token: write
|
|
24
31
|
uses: ./.github/workflows/_release_docs.yaml
|
|
25
32
|
with:
|
|
26
33
|
# Use the same ref as the one that triggered the workflow.
|
|
@@ -64,6 +71,8 @@ jobs:
|
|
|
64
71
|
changelog_update:
|
|
65
72
|
name: Changelog update
|
|
66
73
|
needs: [release_prepare]
|
|
74
|
+
permissions:
|
|
75
|
+
contents: write
|
|
67
76
|
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
|
|
68
77
|
with:
|
|
69
78
|
version_number: ${{ needs.release_prepare.outputs.version_number }}
|
|
@@ -95,6 +104,10 @@ jobs:
|
|
|
95
104
|
doc_release_post_publish:
|
|
96
105
|
name: Doc release post publish
|
|
97
106
|
needs: [changelog_update, pypi_publish]
|
|
107
|
+
permissions:
|
|
108
|
+
contents: write
|
|
109
|
+
pages: write
|
|
110
|
+
id-token: write
|
|
98
111
|
uses: ./.github/workflows/_release_docs.yaml
|
|
99
112
|
with:
|
|
100
113
|
# Use the ref from the changelog update to include the updated changelog.
|
|
@@ -3,7 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
5
|
<!-- git-cliff-unreleased-start -->
|
|
6
|
-
## 3.3.
|
|
6
|
+
## 3.3.2 - **not yet released**
|
|
7
|
+
|
|
8
|
+
### 🐛 Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **scrapy:** Resolve Crawlee's request data round-trip failure in request conversion ([#832](https://github.com/apify/apify-sdk-python/pull/832)) ([3b9d588](https://github.com/apify/apify-sdk-python/commit/3b9d5888611597a522300c742014c06cc0b857b9)) by [@vdusek](https://github.com/vdusek)
|
|
11
|
+
- Treat `default` alias as default storage when in schema ([#827](https://github.com/apify/apify-sdk-python/pull/827)) ([1610d0d](https://github.com/apify/apify-sdk-python/commit/1610d0dda40ba30bd3b4dea28d9fef04c9b7c839)) by [@Pijukatel](https://github.com/Pijukatel)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<!-- git-cliff-unreleased-end -->
|
|
15
|
+
## [3.3.1](https://github.com/apify/apify-sdk-python/releases/tag/v3.3.1) (2026-03-11)
|
|
7
16
|
|
|
8
17
|
### 🐛 Bug Fixes
|
|
9
18
|
|
|
@@ -14,7 +23,6 @@ All notable changes to this project will be documented in this file.
|
|
|
14
23
|
- Keep track of synthetic apify-default-dataset-item events ([#814](https://github.com/apify/apify-sdk-python/pull/814)) ([50c4b6c](https://github.com/apify/apify-sdk-python/commit/50c4b6ce80b45da5348a74c559b8790edbeae04a)) by [@Mantisus](https://github.com/Mantisus), closes [#705](https://github.com/apify/apify-sdk-python/issues/705), [#760](https://github.com/apify/apify-sdk-python/issues/760)
|
|
15
24
|
|
|
16
25
|
|
|
17
|
-
<!-- git-cliff-unreleased-end -->
|
|
18
26
|
## [3.3.0](https://github.com/apify/apify-sdk-python/releases/tag/v3.3.0) (2026-02-25)
|
|
19
27
|
|
|
20
28
|
### 🚀 Features
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "apify"
|
|
7
|
-
version = "3.3.
|
|
7
|
+
version = "3.3.2b2"
|
|
8
8
|
description = "Apify SDK for Python"
|
|
9
9
|
authors = [{ name = "Apify Technologies s.r.o.", email = "support@apify.com" }]
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -99,6 +99,9 @@ allow-direct-references = true
|
|
|
99
99
|
[tool.ruff]
|
|
100
100
|
line-length = 120
|
|
101
101
|
include = ["src/**/*.py", "tests/**/*.py", "docs/**/*.py", "website/**/*.py"]
|
|
102
|
+
exclude = [
|
|
103
|
+
"website/versioned_docs/**",
|
|
104
|
+
]
|
|
102
105
|
|
|
103
106
|
[tool.ruff.lint]
|
|
104
107
|
select = ["ALL"]
|
|
@@ -201,6 +204,7 @@ python-version = "3.10"
|
|
|
201
204
|
|
|
202
205
|
[tool.ty.src]
|
|
203
206
|
include = ["src", "tests", "scripts", "docs", "website"]
|
|
207
|
+
exclude = ["website/versioned_docs"]
|
|
204
208
|
|
|
205
209
|
[[tool.ty.overrides]]
|
|
206
210
|
include = [
|
|
@@ -10,6 +10,7 @@ from scrapy import Spider
|
|
|
10
10
|
from scrapy.http.headers import Headers
|
|
11
11
|
from scrapy.utils.request import request_from_dict
|
|
12
12
|
|
|
13
|
+
from crawlee._request import UserData
|
|
13
14
|
from crawlee._types import HttpHeaders
|
|
14
15
|
|
|
15
16
|
from apify import Request as ApifyRequest
|
|
@@ -52,7 +53,19 @@ def to_apify_request(scrapy_request: ScrapyRequest, spider: Spider) -> ApifyRequ
|
|
|
52
53
|
if scrapy_request.meta.get('apify_request_id'):
|
|
53
54
|
request_kwargs['id'] = scrapy_request.meta['apify_request_id']
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
user_data = scrapy_request.meta.get('userData', {})
|
|
57
|
+
|
|
58
|
+
# Convert UserData Pydantic model to a plain dict to prevent CrawleeRequestData objects
|
|
59
|
+
# from leaking into Request.from_url() during Scrapy-Apify roundtrips.
|
|
60
|
+
if isinstance(user_data, UserData):
|
|
61
|
+
user_data = user_data.model_dump(by_alias=True)
|
|
62
|
+
|
|
63
|
+
# Remove internal Crawlee data since it's managed by Request.from_url() and values
|
|
64
|
+
# from previous roundtrips cause incorrect state.
|
|
65
|
+
if isinstance(user_data, dict):
|
|
66
|
+
user_data.pop('__crawlee', None)
|
|
67
|
+
|
|
68
|
+
request_kwargs['user_data'] = user_data if isinstance(user_data, dict) else {}
|
|
56
69
|
|
|
57
70
|
# Convert Scrapy's headers to a HttpHeaders and store them in the apify_request
|
|
58
71
|
if isinstance(scrapy_request.headers, Headers):
|
|
@@ -76,7 +76,7 @@ async def open_by_alias(
|
|
|
76
76
|
The alias mapping is stored in the default key-value store for persistence across Actor runs.
|
|
77
77
|
|
|
78
78
|
Args:
|
|
79
|
-
alias: The alias name for the storage (e.g., '
|
|
79
|
+
alias: The alias name for the storage (e.g., 'my-storage').
|
|
80
80
|
storage_type: The type of storage to open.
|
|
81
81
|
collection_client: The Apify API collection client for the storage type.
|
|
82
82
|
get_resource_client_by_id: A callable that takes a storage ID and returns the resource client.
|
|
@@ -131,6 +131,8 @@ class AliasResolver:
|
|
|
131
131
|
_alias_init_lock: Lock | None = None
|
|
132
132
|
"""Lock for creating alias storages. Only one alias storage can be created at the time. Global for all instances."""
|
|
133
133
|
|
|
134
|
+
default_storage_key: ClassVar[str] = '__default__'
|
|
135
|
+
|
|
134
136
|
def __init__(
|
|
135
137
|
self,
|
|
136
138
|
storage_type: Literal['Dataset', 'KeyValueStore', 'RequestQueue'],
|
|
@@ -195,7 +197,7 @@ class AliasResolver:
|
|
|
195
197
|
"""
|
|
196
198
|
# First try to find the alias in the configuration mapping to avoid any API calls.
|
|
197
199
|
# This mapping is maintained by the Apify platform and does not have to be maintained in the default KVS.
|
|
198
|
-
if self._configuration.actor_storages
|
|
200
|
+
if self._configuration.actor_storages:
|
|
199
201
|
storage_maps = {
|
|
200
202
|
'Dataset': self._configuration.actor_storages['datasets'],
|
|
201
203
|
'KeyValueStore': self._configuration.actor_storages['key_value_stores'],
|
|
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Literal, overload
|
|
|
5
5
|
from apify_client import ApifyClientAsync
|
|
6
6
|
from crawlee._utils.crypto import crypto_random_object_id
|
|
7
7
|
|
|
8
|
-
from apify.storage_clients._apify._alias_resolving import open_by_alias
|
|
8
|
+
from apify.storage_clients._apify._alias_resolving import AliasResolver, open_by_alias
|
|
9
9
|
|
|
10
10
|
if TYPE_CHECKING:
|
|
11
11
|
from apify_client.clients import DatasetClientAsync, KeyValueStoreClientAsync, RequestQueueClientAsync
|
|
@@ -113,7 +113,7 @@ async def create_storage_api_client(
|
|
|
113
113
|
# Normalize unnamed default storage to unnamed storage aliased as `__default__`.
|
|
114
114
|
case (None, None, None, None):
|
|
115
115
|
return await open_by_alias(
|
|
116
|
-
alias=
|
|
116
|
+
alias=AliasResolver.default_storage_key,
|
|
117
117
|
storage_type=storage_type,
|
|
118
118
|
collection_client=collection_client,
|
|
119
119
|
get_resource_client_by_id=get_resource_client,
|
|
@@ -7,3 +7,7 @@ async def main() -> None:
|
|
|
7
7
|
dataset = await Actor.open_dataset(alias='custom')
|
|
8
8
|
expected_id = Actor.configuration.actor_storages['datasets']['custom']
|
|
9
9
|
assert dataset.id == expected_id
|
|
10
|
+
|
|
11
|
+
implicit_default_dataset = await Actor.open_dataset()
|
|
12
|
+
explicit_default_dataset = await Actor.open_dataset(alias='default')
|
|
13
|
+
assert implicit_default_dataset.id == explicit_default_dataset.id
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
-
from typing import TYPE_CHECKING, TypeVar
|
|
4
|
+
from typing import TYPE_CHECKING, Literal, TypeVar
|
|
5
5
|
|
|
6
6
|
from crawlee._utils.crypto import crypto_random_object_id
|
|
7
7
|
|
|
@@ -13,26 +13,39 @@ if TYPE_CHECKING:
|
|
|
13
13
|
T = TypeVar('T')
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
async def call_with_exp_backoff(
|
|
16
|
+
async def call_with_exp_backoff(
|
|
17
|
+
fn: Callable[[], Awaitable[T]],
|
|
18
|
+
*,
|
|
19
|
+
rq_access_mode: Literal['single', 'shared'],
|
|
20
|
+
max_retries: int = 3,
|
|
21
|
+
) -> T | None:
|
|
17
22
|
"""Call an async callable with exponential backoff retries until it returns a truthy value.
|
|
18
23
|
|
|
19
24
|
In shared request queue mode, there is a propagation delay before newly added, reclaimed, or handled requests
|
|
20
25
|
become visible in the API (see https://github.com/apify/apify-sdk-python/issues/808). This helper retries with
|
|
21
26
|
exponential backoff to handle that delay in integration tests.
|
|
27
|
+
|
|
28
|
+
When `rq_access_mode` is `'single'`, the function is called once without retries.
|
|
22
29
|
"""
|
|
23
|
-
|
|
30
|
+
if rq_access_mode == 'single':
|
|
31
|
+
return await fn()
|
|
32
|
+
|
|
33
|
+
if rq_access_mode == 'shared':
|
|
34
|
+
result = None
|
|
35
|
+
|
|
36
|
+
for attempt in range(max_retries):
|
|
37
|
+
result = await fn()
|
|
24
38
|
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
if result:
|
|
40
|
+
return result
|
|
27
41
|
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
delay = 2**attempt
|
|
43
|
+
Actor.log.info(f'{fn} returned {result!r}, retrying in {delay}s (attempt {attempt + 1}/{max_retries})')
|
|
44
|
+
await asyncio.sleep(delay)
|
|
30
45
|
|
|
31
|
-
|
|
32
|
-
Actor.log.info(f'{fn} returned {result!r}, retrying in {delay}s (attempt {attempt + 1}/{max_retries})')
|
|
33
|
-
await asyncio.sleep(delay)
|
|
46
|
+
return result
|
|
34
47
|
|
|
35
|
-
|
|
48
|
+
raise ValueError(f'Invalid rq_access_mode: {rq_access_mode}')
|
|
36
49
|
|
|
37
50
|
|
|
38
51
|
def generate_unique_resource_name(label: str) -> str:
|