apify 2.7.1b12__tar.gz → 2.7.1b14__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.1b12 → apify-2.7.1b14}/.github/workflows/update_new_issue.yaml +1 -1
- {apify-2.7.1b12 → apify-2.7.1b14}/CHANGELOG.md +24 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/PKG-INFO +2 -2
- {apify-2.7.1b12 → apify-2.7.1b14}/pyproject.toml +4 -6
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_helpers.py +0 -5
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_log.py +4 -3
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/conftest.py +25 -1
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/events/test_apify_event_manager.py +0 -1
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/test_proxy_configuration.py +0 -7
- {apify-2.7.1b12 → apify-2.7.1b14}/uv.lock +132 -117
- {apify-2.7.1b12 → apify-2.7.1b14}/website/package-lock.json +3 -3
- {apify-2.7.1b12 → apify-2.7.1b14}/.editorconfig +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.github/CODEOWNERS +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.github/workflows/build_and_deploy_docs.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.github/workflows/check_pr_title.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.github/workflows/pre_release.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.github/workflows/release.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.github/workflows/run_code_checks.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.gitignore +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.markdownlint.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/.pre-commit-config.yaml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/CONTRIBUTING.md +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/LICENSE +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/Makefile +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/README.md +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/01_introduction.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/02_running_actors_locally.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/03_actor_structure.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/code/01_introduction.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/code/actor_structure/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/code/actor_structure/__main__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/code/actor_structure/main.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/01_overview/code/actor_structure/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/01_actor_lifecycle.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/02_actor_input.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/03_storages.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/04_actor_events.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/05_proxy_management.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/06_interacting_with_other_actors.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/07_webhooks.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/08_access_apify_api.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/09_running_webserver.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/10_logging.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/11_configuration.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/12_pay_per_event.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/01_context_manager.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/01_init_exit.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/01_reboot.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/01_status_message.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/02_input.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_dataset_exports.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_dataset_read_write.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_deleting_storages.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_kvs_iterating.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_kvs_public_url.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_kvs_read_write.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_opening_storages.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/03_rq.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/04_actor_events.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_apify_proxy.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_apify_proxy_config.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_custom_proxy.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_custom_proxy_function.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_proxy_actor_input.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_proxy_httpx.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/05_proxy_rotation.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/06_interacting_call.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/06_interacting_call_task.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/06_interacting_metamorph.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/06_interacting_start.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/07_webhook.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/07_webhook_preventing.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/08_actor_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/08_actor_new_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/09_webserver.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/10_log_config.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/10_logger_usage.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/10_redirect_log.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/10_redirect_log_existing_run.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/11_config.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/actor_charge.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/02_concepts/code/conditional_actor_charge.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/01_beautifulsoup_httpx.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/02_parsel_impit.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/03_playwright.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/04_selenium.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/05_crawlee.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/06_scrapy.mdx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/01_beautifulsoup_httpx.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/02_parsel_impit.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/03_playwright.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/04_selenium.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/05_crawlee_beautifulsoup.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/05_crawlee_parsel.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/05_crawlee_playwright.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/__main__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/items.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/main.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/settings.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/spiders/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/03_guides/code/scrapy_project/src/spiders/title.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/04_upgrading/upgrading_to_v2.md +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/04_upgrading/upgrading_to_v3.md +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/docs/pyproject.toml +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/renovate.json +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_actor.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_charging.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_configuration.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_consts.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_crypto.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_models.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_proxy_configuration.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/_utils.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/events/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/events/_apify_event_manager.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/events/_types.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/events/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/log.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/request_loaders/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/request_loaders/_apify_request_list.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/request_loaders/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/_actor_runner.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/_async_thread.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/_logging_config.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/extensions/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/extensions/_httpcache.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/middlewares/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/middlewares/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/pipelines/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/pipelines/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/requests.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/scheduler.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/scrapy/utils.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/_dataset_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/_key_value_store_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/_models.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/_request_queue_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/_storage_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_apify/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_file_system/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_file_system/_key_value_store_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/_file_system/_storage_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storage_clients/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storages/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/src/apify/storages/py.typed +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/README.md +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/_utils.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/actor_source_base/Dockerfile +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/actor_source_base/requirements.txt +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/actor_source_base/server.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/actor_source_base/src/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/actor_source_base/src/__main__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/actor_source_base/src/main.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/conftest.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_api_helpers.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_call_timeouts.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_charge.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_create_proxy_configuration.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_dataset.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_events.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_key_value_store.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_lifecycle.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_log.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_request_queue.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_actor_scrapy.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_crawlers_with_storages.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_fixtures.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/integration/test_request_queue.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_create_proxy_configuration.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_dataset.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_env_helpers.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_key_value_store.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_lifecycle.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_actor_request_queue.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_configuration.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/actor/test_request_list.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/events/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/extensions/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/middlewares/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/pipelines/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/requests/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/requests/test_to_scrapy_request.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/utils/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/storage_clients/__init__.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/storage_clients/test_apify_request_queue_client.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/storage_clients/test_file_system.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/tests/unit/test_crypto.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/.eslintrc.json +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/babel.config.js +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/build_api_reference.sh +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/docusaurus.config.js +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/generate_module_shortcuts.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/package.json +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/sidebars.js +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/components/ApiLink.jsx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/components/Gradients.jsx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/components/Highlights.jsx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/components/Highlights.module.css +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/components/RunnableCodeBlock.jsx +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/components/RunnableCodeBlock.module.css +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/css/custom.css +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/pages/home_page_example.py +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/pages/index.js +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/pages/index.module.css +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/src/theme/DocItem/Content/index.js +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/static/.nojekyll +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/static/img/docs-og.png +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/static/img/guides/redirected_logs_example.webp +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/tools/docs-prettier.config.js +0 -0
- {apify-2.7.1b12 → apify-2.7.1b14}/website/tools/utils/externalLink.js +0 -0
|
@@ -77,6 +77,30 @@ All notable changes to this project will be documented in this file.
|
|
|
77
77
|
- 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)
|
|
78
78
|
|
|
79
79
|
|
|
80
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
81
|
+
|
|
82
|
+
### 🚀 Features
|
|
83
|
+
|
|
84
|
+
- **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)
|
|
85
|
+
|
|
86
|
+
### 🐛 Bug Fixes
|
|
87
|
+
|
|
88
|
+
- 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)
|
|
89
|
+
- 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)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
93
|
+
|
|
94
|
+
### 🚀 Features
|
|
95
|
+
|
|
96
|
+
- **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)
|
|
97
|
+
|
|
98
|
+
### 🐛 Bug Fixes
|
|
99
|
+
|
|
100
|
+
- 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)
|
|
101
|
+
- 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)
|
|
102
|
+
|
|
103
|
+
|
|
80
104
|
|
|
81
105
|
## [2.7.3](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.3) (2025-08-11)
|
|
82
106
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apify
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.1b14
|
|
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
|
|
@@ -231,7 +231,7 @@ Requires-Dist: cachetools>=5.5.0
|
|
|
231
231
|
Requires-Dist: crawlee==1.0.0rc1
|
|
232
232
|
Requires-Dist: cryptography>=42.0.0
|
|
233
233
|
Requires-Dist: impit>=0.5.3
|
|
234
|
-
Requires-Dist: lazy-object-proxy
|
|
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
|
|
237
237
|
Requires-Dist: websockets>=14.0
|
|
@@ -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.1b14"
|
|
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" }
|
|
@@ -39,10 +39,8 @@ dependencies = [
|
|
|
39
39
|
"crawlee==1.0.0rc1",
|
|
40
40
|
"cachetools>=5.5.0",
|
|
41
41
|
"cryptography>=42.0.0",
|
|
42
|
-
# TODO: ensure compatibility with the latest version of lazy-object-proxy
|
|
43
|
-
# https://github.com/apify/apify-sdk-python/issues/460
|
|
44
42
|
"impit>=0.5.3",
|
|
45
|
-
"lazy-object-proxy
|
|
43
|
+
"lazy-object-proxy>=1.11.0",
|
|
46
44
|
"more_itertools>=10.2.0",
|
|
47
45
|
"typing-extensions>=4.1.0",
|
|
48
46
|
"websockets>=14.0",
|
|
@@ -67,12 +65,12 @@ dev = [
|
|
|
67
65
|
"build~=1.3.0",
|
|
68
66
|
"crawlee[parsel]",
|
|
69
67
|
"dycw-pytest-only~=2.1.0",
|
|
70
|
-
"griffe
|
|
68
|
+
"griffe",
|
|
71
69
|
"mypy~=1.17.0",
|
|
72
70
|
"pre-commit~=4.3.0",
|
|
73
71
|
"pydoc-markdown~=4.8.0",
|
|
74
72
|
"pytest-asyncio~=1.1.0",
|
|
75
|
-
"pytest-cov~=
|
|
73
|
+
"pytest-cov~=7.0.0",
|
|
76
74
|
"pytest-httpserver~=1.1.0",
|
|
77
75
|
"pytest-timeout~=2.4.0",
|
|
78
76
|
"pytest-xdist~=3.8.0",
|
|
@@ -122,7 +122,6 @@ async def test_abort_actor_run(apify_client_async_patcher: ApifyClientAsyncPatch
|
|
|
122
122
|
# NOTE: The following methods are properly tested using integrations tests.
|
|
123
123
|
|
|
124
124
|
|
|
125
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
126
125
|
async def test_metamorph_fails_locally(caplog: pytest.LogCaptureFixture) -> None:
|
|
127
126
|
caplog.set_level('WARNING')
|
|
128
127
|
async with Actor:
|
|
@@ -133,7 +132,6 @@ async def test_metamorph_fails_locally(caplog: pytest.LogCaptureFixture) -> None
|
|
|
133
132
|
assert 'Actor.metamorph() is only supported when running on the Apify platform.' in caplog.records[0].message
|
|
134
133
|
|
|
135
134
|
|
|
136
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
137
135
|
async def test_reboot_fails_locally(caplog: pytest.LogCaptureFixture) -> None:
|
|
138
136
|
caplog.set_level('WARNING')
|
|
139
137
|
async with Actor:
|
|
@@ -144,7 +142,6 @@ async def test_reboot_fails_locally(caplog: pytest.LogCaptureFixture) -> None:
|
|
|
144
142
|
assert 'Actor.reboot() is only supported when running on the Apify platform.' in caplog.records[0].message
|
|
145
143
|
|
|
146
144
|
|
|
147
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
148
145
|
async def test_add_webhook_fails_locally(caplog: pytest.LogCaptureFixture) -> None:
|
|
149
146
|
caplog.set_level('WARNING')
|
|
150
147
|
async with Actor:
|
|
@@ -157,7 +154,6 @@ async def test_add_webhook_fails_locally(caplog: pytest.LogCaptureFixture) -> No
|
|
|
157
154
|
assert 'Actor.add_webhook() is only supported when running on the Apify platform.' in caplog.records[0].message
|
|
158
155
|
|
|
159
156
|
|
|
160
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
161
157
|
async def test_set_status_message_locally(caplog: pytest.LogCaptureFixture) -> None:
|
|
162
158
|
caplog.set_level('INFO')
|
|
163
159
|
async with Actor:
|
|
@@ -169,7 +165,6 @@ async def test_set_status_message_locally(caplog: pytest.LogCaptureFixture) -> N
|
|
|
169
165
|
assert '[Status message]: test-status-message' in matching_records[0].message
|
|
170
166
|
|
|
171
167
|
|
|
172
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
173
168
|
async def test_set_terminal_status_message_locally(caplog: pytest.LogCaptureFixture) -> None:
|
|
174
169
|
caplog.set_level('INFO')
|
|
175
170
|
async with Actor:
|
|
@@ -2,14 +2,15 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import logging
|
|
5
|
-
|
|
6
|
-
import pytest
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
7
6
|
|
|
8
7
|
from apify import Actor
|
|
9
8
|
from apify.log import logger
|
|
10
9
|
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
11
13
|
|
|
12
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
13
14
|
async def test_actor_logs_messages_correctly(caplog: pytest.LogCaptureFixture) -> None:
|
|
14
15
|
caplog.set_level(logging.DEBUG, logger='apify')
|
|
15
16
|
|
|
@@ -16,12 +16,33 @@ from apify_shared.consts import ApifyEnvVars
|
|
|
16
16
|
from crawlee import service_locator
|
|
17
17
|
|
|
18
18
|
import apify._actor
|
|
19
|
+
import apify.log
|
|
19
20
|
|
|
20
21
|
if TYPE_CHECKING:
|
|
21
22
|
from collections.abc import Callable, Iterator
|
|
23
|
+
from logging import Logger
|
|
22
24
|
from pathlib import Path
|
|
23
25
|
|
|
24
26
|
|
|
27
|
+
@pytest.fixture
|
|
28
|
+
def _patch_propagate_logger(monkeypatch: pytest.MonkeyPatch) -> Iterator[None]:
|
|
29
|
+
"""Patch enabling `propagate` for the crawlee logger.
|
|
30
|
+
|
|
31
|
+
This is necessary for tests requiring log interception using `caplog`.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
original_configure_logger = apify.log.configure_logger
|
|
35
|
+
|
|
36
|
+
def propagate_logger(logger: Logger, **kwargs: Any) -> None:
|
|
37
|
+
original_configure_logger(logger, **kwargs)
|
|
38
|
+
logger.propagate = True
|
|
39
|
+
|
|
40
|
+
monkeypatch.setattr('crawlee._log_config.configure_logger', propagate_logger)
|
|
41
|
+
monkeypatch.setattr(apify.log, 'configure_logger', propagate_logger)
|
|
42
|
+
yield
|
|
43
|
+
monkeypatch.undo()
|
|
44
|
+
|
|
45
|
+
|
|
25
46
|
@pytest.fixture
|
|
26
47
|
def prepare_test_env(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> Callable[[], None]:
|
|
27
48
|
"""Prepare the testing environment by resetting the global state before each test.
|
|
@@ -66,7 +87,10 @@ def prepare_test_env(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> Callabl
|
|
|
66
87
|
|
|
67
88
|
|
|
68
89
|
@pytest.fixture(autouse=True)
|
|
69
|
-
def _isolate_test_environment(
|
|
90
|
+
def _isolate_test_environment(
|
|
91
|
+
prepare_test_env: Callable[[], None],
|
|
92
|
+
_patch_propagate_logger: None,
|
|
93
|
+
) -> None:
|
|
70
94
|
"""Isolate the testing environment by resetting global state before and after each test.
|
|
71
95
|
|
|
72
96
|
This fixture ensures that each test starts with a clean slate and that any modifications during the test
|
|
@@ -22,7 +22,6 @@ if TYPE_CHECKING:
|
|
|
22
22
|
from collections.abc import Callable
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
26
25
|
async def test_lifecycle_local(caplog: pytest.LogCaptureFixture) -> None:
|
|
27
26
|
caplog.set_level(logging.DEBUG, logger='apify')
|
|
28
27
|
config = Configuration.get_global_configuration()
|
|
@@ -472,10 +472,8 @@ async def test_initialize_prefering_password_from_env_over_calling_api(
|
|
|
472
472
|
|
|
473
473
|
|
|
474
474
|
@pytest.mark.usefixtures('patched_impit_client')
|
|
475
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
476
475
|
async def test_initialize_with_manual_password_different_than_user_one(
|
|
477
476
|
monkeypatch: pytest.MonkeyPatch,
|
|
478
|
-
caplog: pytest.LogCaptureFixture,
|
|
479
477
|
httpserver: HTTPServer,
|
|
480
478
|
patched_apify_client: ApifyClientAsync,
|
|
481
479
|
) -> None:
|
|
@@ -501,10 +499,6 @@ async def test_initialize_with_manual_password_different_than_user_one(
|
|
|
501
499
|
assert proxy_configuration._password == different_dummy_password
|
|
502
500
|
assert proxy_configuration.is_man_in_the_middle is True
|
|
503
501
|
|
|
504
|
-
assert len(caplog.records) == 1
|
|
505
|
-
assert caplog.records[0].levelname == 'WARNING'
|
|
506
|
-
assert 'The Apify Proxy password you provided belongs to a different user' in caplog.records[0].message
|
|
507
|
-
|
|
508
502
|
|
|
509
503
|
@pytest.mark.usefixtures('patched_impit_client')
|
|
510
504
|
async def test_initialize_when_not_connected(monkeypatch: pytest.MonkeyPatch, httpserver: HTTPServer) -> None:
|
|
@@ -526,7 +520,6 @@ async def test_initialize_when_not_connected(monkeypatch: pytest.MonkeyPatch, ht
|
|
|
526
520
|
await proxy_configuration.initialize()
|
|
527
521
|
|
|
528
522
|
|
|
529
|
-
@pytest.mark.skip(reason='There are issues with log propagation to caplog, see issue #462.')
|
|
530
523
|
async def test_initialize_when_status_page_unavailable(
|
|
531
524
|
monkeypatch: pytest.MonkeyPatch, caplog: pytest.LogCaptureFixture, httpserver: HTTPServer
|
|
532
525
|
) -> None:
|