apify 2.7.1b16__tar.gz → 2.7.1b18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of apify might be problematic. Click here for more details.
- {apify-2.7.1b16 → apify-2.7.1b18}/CHANGELOG.md +25 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/PKG-INFO +3 -3
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/09_running_webserver.mdx +2 -2
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/07_webhook_preventing.py +1 -1
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/09_webserver.py +2 -2
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/conditional_actor_charge.py +1 -1
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/03_playwright.py +1 -1
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/04_selenium.py +1 -1
- apify-2.7.1b18/docs/04_upgrading/upgrading_to_v3.md +54 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/pyproject.toml +3 -3
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_actor.py +132 -79
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_configuration.py +36 -5
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/_dataset_client.py +14 -13
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/_key_value_store_client.py +15 -13
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/_request_queue_client.py +14 -13
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/_storage_client.py +26 -25
- apify-2.7.1b18/src/apify/storage_clients/_apify/_utils.py +167 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/actor_source_base/requirements.txt +1 -1
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/conftest.py +5 -8
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_create_proxy_configuration.py +4 -1
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_key_value_store.py +2 -2
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_lifecycle.py +41 -0
- apify-2.7.1b18/tests/integration/test_apify_storages.py +34 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_lifecycle.py +17 -17
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_non_default_instance.py +1 -1
- apify-2.7.1b18/tests/unit/actor/test_configuration.py +257 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/conftest.py +5 -8
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/events/test_apify_event_manager.py +1 -2
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/storage_clients/test_file_system.py +1 -5
- apify-2.7.1b18/tests/unit/test_apify_storages.py +63 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/test_proxy_configuration.py +5 -3
- {apify-2.7.1b16 → apify-2.7.1b18}/uv.lock +6 -6
- apify-2.7.1b16/docs/04_upgrading/upgrading_to_v3.md +0 -18
- apify-2.7.1b16/src/apify/storage_clients/_apify/_utils.py +0 -117
- apify-2.7.1b16/tests/unit/actor/test_configuration.py +0 -21
- {apify-2.7.1b16 → apify-2.7.1b18}/.editorconfig +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/CODEOWNERS +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/workflows/build_and_deploy_docs.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/workflows/check_pr_title.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/workflows/pre_release.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/workflows/release.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/workflows/run_code_checks.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.github/workflows/update_new_issue.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.gitignore +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.markdownlint.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/.pre-commit-config.yaml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/CONTRIBUTING.md +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/LICENSE +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/Makefile +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/README.md +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/01_introduction.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/02_running_actors_locally.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/03_actor_structure.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/code/01_introduction.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/code/actor_structure/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/code/actor_structure/__main__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/code/actor_structure/main.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/01_overview/code/actor_structure/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/01_actor_lifecycle.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/02_actor_input.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/03_storages.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/04_actor_events.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/05_proxy_management.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/06_interacting_with_other_actors.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/07_webhooks.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/08_access_apify_api.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/10_logging.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/11_configuration.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/12_pay_per_event.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/01_context_manager.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/01_init_exit.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/01_reboot.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/01_status_message.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/02_input.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_dataset_exports.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_dataset_read_write.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_deleting_storages.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_kvs_iterating.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_kvs_public_url.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_kvs_read_write.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_opening_storages.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/03_rq.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/04_actor_events.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_apify_proxy.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_apify_proxy_config.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_custom_proxy.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_custom_proxy_function.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_proxy_actor_input.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_proxy_httpx.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/05_proxy_rotation.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/06_interacting_call.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/06_interacting_call_task.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/06_interacting_metamorph.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/06_interacting_start.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/07_webhook.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/08_actor_client.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/08_actor_new_client.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/10_log_config.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/10_logger_usage.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/10_redirect_log.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/10_redirect_log_existing_run.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/11_config.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/02_concepts/code/actor_charge.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/01_beautifulsoup_httpx.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/02_parsel_impit.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/03_playwright.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/04_selenium.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/05_crawlee.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/06_scrapy.mdx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/01_beautifulsoup_httpx.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/02_parsel_impit.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/05_crawlee_beautifulsoup.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/05_crawlee_parsel.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/05_crawlee_playwright.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/__main__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/items.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/main.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/settings.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/spiders/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/03_guides/code/scrapy_project/src/spiders/title.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/04_upgrading/upgrading_to_v2.md +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/docs/pyproject.toml +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/renovate.json +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_charging.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_consts.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_crypto.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_models.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_proxy_configuration.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/_utils.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/events/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/events/_apify_event_manager.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/events/_types.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/events/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/log.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/request_loaders/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/request_loaders/_apify_request_list.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/request_loaders/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/_actor_runner.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/_async_thread.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/_logging_config.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/extensions/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/extensions/_httpcache.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/middlewares/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/middlewares/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/pipelines/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/pipelines/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/requests.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/scheduler.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/scrapy/utils.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/_models.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_apify/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_file_system/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_file_system/_key_value_store_client.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/_file_system/_storage_client.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storage_clients/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storages/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/src/apify/storages/py.typed +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/README.md +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/_utils.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/actor_source_base/Dockerfile +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/actor_source_base/server.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/actor_source_base/src/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/actor_source_base/src/__main__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/actor_source_base/src/main.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_api_helpers.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_call_timeouts.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_charge.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_dataset.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_events.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_log.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_request_queue.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_actor_scrapy.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_crawlers_with_storages.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_fixtures.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/integration/test_request_queue.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_dataset.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_env_helpers.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_helpers.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_key_value_store.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_log.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_actor_request_queue.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/actor/test_request_list.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/events/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/extensions/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/middlewares/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/pipelines/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/requests/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/utils/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/storage_clients/__init__.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/storage_clients/test_apify_request_queue_client.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/tests/unit/test_crypto.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/.eslintrc.json +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/babel.config.js +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/build_api_reference.sh +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/docusaurus.config.js +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/generate_module_shortcuts.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/package-lock.json +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/package.json +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/sidebars.js +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/components/ApiLink.jsx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/components/Gradients.jsx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/components/Highlights.jsx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/components/Highlights.module.css +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/components/RunnableCodeBlock.jsx +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/components/RunnableCodeBlock.module.css +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/css/custom.css +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/pages/home_page_example.py +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/pages/index.js +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/pages/index.module.css +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/src/theme/DocItem/Content/index.js +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/static/.nojekyll +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/static/img/docs-og.png +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/static/img/guides/redirected_logs_example.webp +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/tools/docs-prettier.config.js +0 -0
- {apify-2.7.1b16 → apify-2.7.1b18}/website/tools/utils/externalLink.js +0 -0
|
@@ -28,6 +28,7 @@ All notable changes to this project will be documented in this file.
|
|
|
28
28
|
- [**breaking**] Adapt to the Crawlee v1.0 ([#470](https://github.com/apify/apify-sdk-python/pull/470)) ([f7e3320](https://github.com/apify/apify-sdk-python/commit/f7e33206cf3e4767faacbdc43511b45b6785f929)) by [@vdusek](https://github.com/vdusek), closes [#469](https://github.com/apify/apify-sdk-python/issues/469), [#540](https://github.com/apify/apify-sdk-python/issues/540)
|
|
29
29
|
- [**breaking**] Replace `httpx` with `impit` ([#560](https://github.com/apify/apify-sdk-python/pull/560)) ([cca3869](https://github.com/apify/apify-sdk-python/commit/cca3869e85968865e56aafcdcb36fbccba27aef0)) by [@Mantisus](https://github.com/Mantisus), closes [#558](https://github.com/apify/apify-sdk-python/issues/558)
|
|
30
30
|
- [**breaking**] Remove `Request.id` field ([#553](https://github.com/apify/apify-sdk-python/pull/553)) ([445ab5d](https://github.com/apify/apify-sdk-python/commit/445ab5d752b785fc2018b35c8adbe779253d7acd)) by [@Pijukatel](https://github.com/Pijukatel)
|
|
31
|
+
- [**breaking**] Make `Actor` initialization stricter and more predictable ([#576](https://github.com/apify/apify-sdk-python/pull/576)) ([912222a](https://github.com/apify/apify-sdk-python/commit/912222a7a8123be66c94c50a2e461276fbfc50c4)) by [@Pijukatel](https://github.com/Pijukatel)
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
<!-- git-cliff-unreleased-end -->
|
|
@@ -127,6 +128,30 @@ All notable changes to this project will be documented in this file.
|
|
|
127
128
|
- Tagline overlap ([#501](https://github.com/apify/apify-sdk-python/pull/501)) ([bae8340](https://github.com/apify/apify-sdk-python/commit/bae8340c46fea756ea35ea4d591da84c09d478e2)) by [@katzino](https://github.com/katzino)
|
|
128
129
|
|
|
129
130
|
|
|
131
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
132
|
+
|
|
133
|
+
### 🚀 Features
|
|
134
|
+
|
|
135
|
+
- **crypto:** Decrypt secret objects ([#482](https://github.com/apify/apify-sdk-python/pull/482)) ([ce9daf7](https://github.com/apify/apify-sdk-python/commit/ce9daf7381212b8dc194e8a643e5ca0dedbc0078)) by [@MFori](https://github.com/MFori)
|
|
136
|
+
|
|
137
|
+
### 🐛 Bug Fixes
|
|
138
|
+
|
|
139
|
+
- Sync `@docusaurus` theme version [internal] ([#500](https://github.com/apify/apify-sdk-python/pull/500)) ([a7485e7](https://github.com/apify/apify-sdk-python/commit/a7485e7d2276fde464ce862573d5b95e7d4d836a)) by [@katzino](https://github.com/katzino)
|
|
140
|
+
- Tagline overlap ([#501](https://github.com/apify/apify-sdk-python/pull/501)) ([bae8340](https://github.com/apify/apify-sdk-python/commit/bae8340c46fea756ea35ea4d591da84c09d478e2)) by [@katzino](https://github.com/katzino)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
144
|
+
|
|
145
|
+
### 🚀 Features
|
|
146
|
+
|
|
147
|
+
- **crypto:** Decrypt secret objects ([#482](https://github.com/apify/apify-sdk-python/pull/482)) ([ce9daf7](https://github.com/apify/apify-sdk-python/commit/ce9daf7381212b8dc194e8a643e5ca0dedbc0078)) by [@MFori](https://github.com/MFori)
|
|
148
|
+
|
|
149
|
+
### 🐛 Bug Fixes
|
|
150
|
+
|
|
151
|
+
- Sync `@docusaurus` theme version [internal] ([#500](https://github.com/apify/apify-sdk-python/pull/500)) ([a7485e7](https://github.com/apify/apify-sdk-python/commit/a7485e7d2276fde464ce862573d5b95e7d4d836a)) by [@katzino](https://github.com/katzino)
|
|
152
|
+
- Tagline overlap ([#501](https://github.com/apify/apify-sdk-python/pull/501)) ([bae8340](https://github.com/apify/apify-sdk-python/commit/bae8340c46fea756ea35ea4d591da84c09d478e2)) by [@katzino](https://github.com/katzino)
|
|
153
|
+
|
|
154
|
+
|
|
130
155
|
|
|
131
156
|
## [2.7.3](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.3) (2025-08-11)
|
|
132
157
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apify
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.1b18
|
|
4
4
|
Summary: Apify SDK for Python
|
|
5
5
|
Project-URL: Apify Homepage, https://apify.com
|
|
6
6
|
Project-URL: Changelog, https://docs.apify.com/sdk/python/docs/changelog
|
|
@@ -228,9 +228,9 @@ Requires-Python: >=3.10
|
|
|
228
228
|
Requires-Dist: apify-client<3.0.0,>=2.0.0
|
|
229
229
|
Requires-Dist: apify-shared<3.0.0,>=2.0.0
|
|
230
230
|
Requires-Dist: cachetools>=5.5.0
|
|
231
|
-
Requires-Dist: crawlee==0.6.
|
|
231
|
+
Requires-Dist: crawlee==0.6.13b42
|
|
232
232
|
Requires-Dist: cryptography>=42.0.0
|
|
233
|
-
Requires-Dist: impit>=0.
|
|
233
|
+
Requires-Dist: impit>=0.6.1
|
|
234
234
|
Requires-Dist: lazy-object-proxy>=1.11.0
|
|
235
235
|
Requires-Dist: more-itertools>=10.2.0
|
|
236
236
|
Requires-Dist: typing-extensions>=4.1.0
|
|
@@ -13,9 +13,9 @@ The URL is available in the following places:
|
|
|
13
13
|
|
|
14
14
|
- In Apify Console, on the Actor run details page as the **Container URL** field.
|
|
15
15
|
- In the API as the `container_url` property of the [Run object](https://docs.apify.com/api/v2#/reference/actors/run-object/get-run).
|
|
16
|
-
- In the Actor as the `Actor.
|
|
16
|
+
- In the Actor as the `Actor.configuration.container_url` property.
|
|
17
17
|
|
|
18
|
-
The web server running inside the container must listen at the port defined by the `Actor.
|
|
18
|
+
The web server running inside the container must listen at the port defined by the `Actor.configuration.container_port` property. When running Actors locally, the port defaults to `4321`, so the web server will be accessible at `http://localhost:4321`.
|
|
19
19
|
|
|
20
20
|
## Example
|
|
21
21
|
|
|
@@ -7,7 +7,7 @@ async def main() -> None:
|
|
|
7
7
|
webhook = Webhook(
|
|
8
8
|
event_types=['ACTOR.RUN.FAILED'],
|
|
9
9
|
request_url='https://example.com/run-failed',
|
|
10
|
-
idempotency_key=Actor.
|
|
10
|
+
idempotency_key=Actor.configuration.actor_run_id,
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
# Add the webhook to the Actor.
|
|
@@ -22,9 +22,9 @@ def run_server() -> None:
|
|
|
22
22
|
# and save a reference to the server.
|
|
23
23
|
global http_server
|
|
24
24
|
with ThreadingHTTPServer(
|
|
25
|
-
('', Actor.
|
|
25
|
+
('', Actor.configuration.web_server_port), RequestHandler
|
|
26
26
|
) as server:
|
|
27
|
-
Actor.log.info(f'Server running on {Actor.
|
|
27
|
+
Actor.log.info(f'Server running on {Actor.configuration.web_server_port}')
|
|
28
28
|
http_server = server
|
|
29
29
|
server.serve_forever()
|
|
30
30
|
|
|
@@ -13,6 +13,6 @@ async def main() -> None:
|
|
|
13
13
|
if Actor.get_charging_manager().get_pricing_info().is_pay_per_event:
|
|
14
14
|
# highlight-end
|
|
15
15
|
await Actor.push_data({'hello': 'world'}, 'dataset-item')
|
|
16
|
-
elif charged_items < (Actor.
|
|
16
|
+
elif charged_items < (Actor.configuration.max_paid_dataset_items or 0):
|
|
17
17
|
await Actor.push_data({'hello': 'world'})
|
|
18
18
|
charged_items += 1
|
|
@@ -40,7 +40,7 @@ async def main() -> None:
|
|
|
40
40
|
async with async_playwright() as playwright:
|
|
41
41
|
# Configure the browser to launch in headless mode as per Actor configuration.
|
|
42
42
|
browser = await playwright.chromium.launch(
|
|
43
|
-
headless=Actor.
|
|
43
|
+
headless=Actor.configuration.headless,
|
|
44
44
|
args=['--disable-gpu'],
|
|
45
45
|
)
|
|
46
46
|
context = await browser.new_context()
|
|
@@ -41,7 +41,7 @@ async def main() -> None:
|
|
|
41
41
|
Actor.log.info('Launching Chrome WebDriver...')
|
|
42
42
|
chrome_options = ChromeOptions()
|
|
43
43
|
|
|
44
|
-
if Actor.
|
|
44
|
+
if Actor.configuration.headless:
|
|
45
45
|
chrome_options.add_argument('--headless')
|
|
46
46
|
|
|
47
47
|
chrome_options.add_argument('--no-sandbox')
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: upgrading-to-v3
|
|
3
|
+
title: Upgrading to v3
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
This page summarizes the breaking changes between Apify Python SDK v2.x and v3.0.
|
|
7
|
+
|
|
8
|
+
## Python version support
|
|
9
|
+
|
|
10
|
+
Support for Python 3.9 has been dropped. The Apify Python SDK v3.x now requires Python 3.10 or later. Make sure your environment is running a compatible version before upgrading.
|
|
11
|
+
|
|
12
|
+
## Actor initialization and ServiceLocator changes
|
|
13
|
+
|
|
14
|
+
`Actor` initialization and global `service_locator` services setup is more strict and predictable.
|
|
15
|
+
- Services in `Actor` can't be changed after calling `Actor.init`, entering the `async with Actor` context manager or after requesting them from the `Actor`.
|
|
16
|
+
- Services in `Actor` can be different from services in Crawler.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
**Now (v3.0):**
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from crawlee.crawlers import BasicCrawler
|
|
23
|
+
from crawlee.storage_clients import MemoryStorageClient
|
|
24
|
+
from crawlee.configuration import Configuration
|
|
25
|
+
from crawlee.events import LocalEventManager
|
|
26
|
+
from apify import Actor
|
|
27
|
+
|
|
28
|
+
async def main():
|
|
29
|
+
|
|
30
|
+
async with Actor():
|
|
31
|
+
# This crawler will use same services as Actor and global service_locator
|
|
32
|
+
crawler_1 = BasicCrawler()
|
|
33
|
+
|
|
34
|
+
# This crawler will use custom services
|
|
35
|
+
custom_configuration = Configuration()
|
|
36
|
+
custom_event_manager = LocalEventManager.from_config(custom_configuration)
|
|
37
|
+
custom_storage_client = MemoryStorageClient()
|
|
38
|
+
crawler_2 = BasicCrawler(
|
|
39
|
+
configuration=custom_configuration,
|
|
40
|
+
event_manager=custom_event_manager,
|
|
41
|
+
storage_client=custom_storage_client,
|
|
42
|
+
)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Removed Actor.config property
|
|
46
|
+
- `Actor.config` property has been removed. Use `Actor.configuration` instead.
|
|
47
|
+
|
|
48
|
+
## Storages
|
|
49
|
+
|
|
50
|
+
<!-- TODO -->
|
|
51
|
+
|
|
52
|
+
## Storage clients
|
|
53
|
+
|
|
54
|
+
<!-- TODO -->
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "apify"
|
|
7
|
-
version = "2.7.
|
|
7
|
+
version = "2.7.1b18"
|
|
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" }
|
|
@@ -36,10 +36,10 @@ keywords = [
|
|
|
36
36
|
dependencies = [
|
|
37
37
|
"apify-client>=2.0.0,<3.0.0",
|
|
38
38
|
"apify-shared>=2.0.0,<3.0.0",
|
|
39
|
-
"crawlee==0.6.
|
|
39
|
+
"crawlee==0.6.13b42",
|
|
40
40
|
"cachetools>=5.5.0",
|
|
41
41
|
"cryptography>=42.0.0",
|
|
42
|
-
"impit>=0.
|
|
42
|
+
"impit>=0.6.1",
|
|
43
43
|
"lazy-object-proxy>=1.11.0",
|
|
44
44
|
"more_itertools>=10.2.0",
|
|
45
45
|
"typing-extensions>=4.1.0",
|