apify 2.7.2__tar.gz → 3.0.0rc1__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.2 → apify-3.0.0rc1}/.github/workflows/build_and_deploy_docs.yaml +1 -1
- {apify-2.7.2 → apify-3.0.0rc1}/.github/workflows/pre_release.yaml +9 -5
- {apify-2.7.2 → apify-3.0.0rc1}/.github/workflows/release.yaml +8 -11
- {apify-2.7.2 → apify-3.0.0rc1}/.github/workflows/run_code_checks.yaml +9 -5
- {apify-2.7.2 → apify-3.0.0rc1}/CHANGELOG.md +346 -7
- {apify-2.7.2 → apify-3.0.0rc1}/CONTRIBUTING.md +1 -1
- {apify-2.7.2 → apify-3.0.0rc1}/Makefile +3 -3
- {apify-2.7.2 → apify-3.0.0rc1}/PKG-INFO +8 -7
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/02_running_actors_locally.mdx +1 -1
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/10_logging.mdx +30 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_dataset_exports.py +2 -2
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_rq.py +1 -4
- apify-3.0.0rc1/docs/03_concepts/code/10_redirect_log.py +15 -0
- apify-3.0.0rc1/docs/03_concepts/code/10_redirect_log_existing_run.py +24 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/conditional_actor_charge.py +2 -2
- {apify-2.7.2 → apify-3.0.0rc1}/docs/04_upgrading/upgrading_to_v2.md +2 -2
- apify-3.0.0rc1/docs/04_upgrading/upgrading_to_v3.md +18 -0
- {apify-2.7.2 → apify-3.0.0rc1}/pyproject.toml +31 -23
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_actor.py +47 -12
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_charging.py +15 -9
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_configuration.py +43 -1
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_crypto.py +0 -6
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_models.py +7 -7
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_proxy_configuration.py +10 -10
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_utils.py +25 -2
- apify-3.0.0rc1/src/apify/events/__init__.py +5 -0
- apify-3.0.0rc1/src/apify/events/_apify_event_manager.py +140 -0
- apify-3.0.0rc1/src/apify/events/_types.py +102 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/log.py +0 -9
- apify-3.0.0rc1/src/apify/request_loaders/__init__.py +18 -0
- apify-2.7.2/src/apify/storages/_request_list.py → apify-3.0.0rc1/src/apify/request_loaders/_apify_request_list.py +25 -18
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/_logging_config.py +1 -4
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/extensions/_httpcache.py +9 -5
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/requests.py +3 -3
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/scheduler.py +8 -5
- apify-3.0.0rc1/src/apify/storage_clients/__init__.py +10 -0
- apify-3.0.0rc1/src/apify/storage_clients/_apify/__init__.py +11 -0
- apify-3.0.0rc1/src/apify/storage_clients/_apify/_dataset_client.py +304 -0
- apify-3.0.0rc1/src/apify/storage_clients/_apify/_key_value_store_client.py +241 -0
- apify-3.0.0rc1/src/apify/storage_clients/_apify/_models.py +107 -0
- apify-3.0.0rc1/src/apify/storage_clients/_apify/_request_queue_client.py +787 -0
- apify-3.0.0rc1/src/apify/storage_clients/_apify/_storage_client.py +80 -0
- apify-3.0.0rc1/src/apify/storage_clients/_file_system/__init__.py +2 -0
- apify-3.0.0rc1/src/apify/storage_clients/_file_system/_key_value_store_client.py +36 -0
- apify-3.0.0rc1/src/apify/storage_clients/_file_system/_storage_client.py +35 -0
- apify-3.0.0rc1/src/apify/storages/__init__.py +3 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/README.md +23 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/actor_source_base/Dockerfile +5 -1
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/actor_source_base/requirements.txt +2 -0
- apify-3.0.0rc1/tests/integration/actor_source_base/server.py +101 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/conftest.py +9 -23
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_api_helpers.py +4 -6
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_dataset.py +4 -3
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_events.py +3 -1
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_key_value_store.py +17 -15
- apify-3.0.0rc1/tests/integration/test_actor_request_queue.py +320 -0
- apify-3.0.0rc1/tests/integration/test_crawlers_with_storages.py +112 -0
- apify-3.0.0rc1/tests/integration/test_request_queue.py +1194 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_create_proxy_configuration.py +37 -28
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_dataset.py +5 -30
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_env_helpers.py +3 -27
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_key_value_store.py +25 -45
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_lifecycle.py +4 -2
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_request_queue.py +3 -4
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_request_list.py +42 -28
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/conftest.py +42 -43
- apify-2.7.2/tests/unit/test_platform_event_manager.py → apify-3.0.0rc1/tests/unit/events/test_apify_event_manager.py +12 -8
- apify-3.0.0rc1/tests/unit/scrapy/pipelines/__init__.py +0 -0
- apify-3.0.0rc1/tests/unit/scrapy/requests/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/requests/test_to_apify_request.py +0 -2
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/requests/test_to_scrapy_request.py +6 -10
- apify-3.0.0rc1/tests/unit/scrapy/utils/__init__.py +0 -0
- apify-3.0.0rc1/tests/unit/storage_clients/__init__.py +0 -0
- apify-3.0.0rc1/tests/unit/storage_clients/test_apify_request_queue_client.py +38 -0
- apify-3.0.0rc1/tests/unit/storage_clients/test_file_system.py +55 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/test_proxy_configuration.py +80 -70
- {apify-2.7.2 → apify-3.0.0rc1}/uv.lock +755 -1021
- apify-3.0.0rc1/website/docusaurus.config.js +289 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/package-lock.json +1202 -1229
- {apify-2.7.2 → apify-3.0.0rc1}/website/package.json +7 -6
- {apify-2.7.2 → apify-3.0.0rc1}/website/sidebars.js +4 -4
- apify-3.0.0rc1/website/src/components/RunnableCodeBlock.jsx +46 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/pages/index.module.css +1 -1
- apify-3.0.0rc1/website/static/.nojekyll +0 -0
- apify-3.0.0rc1/website/static/img/guides/redirected_logs_example.webp +0 -0
- apify-2.7.2/src/apify/_platform_event_manager.py +0 -231
- apify-2.7.2/src/apify/apify_storage_client/__init__.py +0 -3
- apify-2.7.2/src/apify/apify_storage_client/_apify_storage_client.py +0 -72
- apify-2.7.2/src/apify/apify_storage_client/_dataset_client.py +0 -190
- apify-2.7.2/src/apify/apify_storage_client/_dataset_collection_client.py +0 -51
- apify-2.7.2/src/apify/apify_storage_client/_key_value_store_client.py +0 -109
- apify-2.7.2/src/apify/apify_storage_client/_key_value_store_collection_client.py +0 -51
- apify-2.7.2/src/apify/apify_storage_client/_request_queue_client.py +0 -176
- apify-2.7.2/src/apify/apify_storage_client/_request_queue_collection_client.py +0 -51
- apify-2.7.2/src/apify/storages/__init__.py +0 -5
- apify-2.7.2/tests/integration/test_actor_request_queue.py +0 -88
- apify-2.7.2/tests/integration/test_request_queue.py +0 -113
- apify-2.7.2/website/docusaurus.config.js +0 -145
- apify-2.7.2/website/src/components/RunnableCodeBlock.jsx +0 -44
- {apify-2.7.2 → apify-3.0.0rc1}/.editorconfig +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/.github/CODEOWNERS +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/.github/workflows/check_pr_title.yaml +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/.github/workflows/update_new_issue.yaml +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/.gitignore +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/.markdownlint.yaml +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/.pre-commit-config.yaml +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/LICENSE +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/README.md +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/01_introduction.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/03_actor_structure.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/code/01_introduction.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/code/actor_structure/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/code/actor_structure/__main__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/code/actor_structure/main.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/01_overview/code/actor_structure/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/01_beautifulsoup_httpx.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/02_crawlee.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/03_playwright.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/04_selenium.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/05_scrapy.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/01_beautifulsoup_httpx.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/02_crawlee_beautifulsoup.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/02_crawlee_playwright.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/03_playwright.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/04_selenium.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/__main__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/items.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/main.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/settings.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/spiders/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/spiders/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/02_guides/code/scrapy_project/src/spiders/title.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/01_actor_lifecycle.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/02_actor_input.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/03_storages.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/04_actor_events.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/05_proxy_management.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/06_interacting_with_other_actors.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/07_webhooks.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/08_access_apify_api.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/09_running_webserver.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/11_configuration.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/12_pay_per_event.mdx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/01_context_manager.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/01_init_exit.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/01_reboot.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/01_status_message.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/02_input.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_dataset_read_write.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_deleting_storages.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_kvs_iterating.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_kvs_public_url.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_kvs_read_write.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/03_opening_storages.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/04_actor_events.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_apify_proxy.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_apify_proxy_config.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_custom_proxy.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_custom_proxy_function.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_proxy_actor_input.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_proxy_httpx.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/05_proxy_rotation.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/06_interacting_call.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/06_interacting_call_task.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/06_interacting_metamorph.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/06_interacting_start.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/07_webhook.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/07_webhook_preventing.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/08_actor_client.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/08_actor_new_client.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/09_webserver.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/10_log_config.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/10_logger_usage.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/11_config.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/03_concepts/code/actor_charge.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/docs/pyproject.toml +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/renovate.json +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/_consts.py +0 -0
- {apify-2.7.2/src/apify/apify_storage_client → apify-3.0.0rc1/src/apify/events}/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/py.typed +0 -0
- {apify-2.7.2/src/apify/scrapy/middlewares → apify-3.0.0rc1/src/apify/request_loaders}/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/_actor_runner.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/_async_thread.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/extensions/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/middlewares/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/middlewares/apify_proxy.py +0 -0
- {apify-2.7.2/src/apify/scrapy/pipelines → apify-3.0.0rc1/src/apify/scrapy/middlewares}/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/pipelines/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/pipelines/actor_dataset_push.py +0 -0
- {apify-2.7.2/src/apify/scrapy → apify-3.0.0rc1/src/apify/scrapy/pipelines}/py.typed +0 -0
- {apify-2.7.2/src/apify/storages → apify-3.0.0rc1/src/apify/scrapy}/py.typed +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/src/apify/scrapy/utils.py +0 -0
- /apify-2.7.2/tests/integration/__init__.py → /apify-3.0.0rc1/src/apify/storage_clients/_apify/py.typed +0 -0
- /apify-2.7.2/tests/integration/actor_source_base/src/__init__.py → /apify-3.0.0rc1/src/apify/storage_clients/py.typed +0 -0
- /apify-2.7.2/tests/unit/__init__.py → /apify-3.0.0rc1/src/apify/storages/py.typed +0 -0
- {apify-2.7.2/tests/unit/actor → apify-3.0.0rc1/tests/integration}/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/_utils.py +0 -0
- {apify-2.7.2/tests/unit/scrapy → apify-3.0.0rc1/tests/integration/actor_source_base/src}/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/actor_source_base/src/__main__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/actor_source_base/src/main.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_call_timeouts.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_charge.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_create_proxy_configuration.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_lifecycle.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_log.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_actor_scrapy.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/integration/test_fixtures.py +0 -0
- {apify-2.7.2/tests/unit/scrapy/extensions → apify-3.0.0rc1/tests/unit}/__init__.py +0 -0
- {apify-2.7.2/tests/unit/scrapy/middlewares → apify-3.0.0rc1/tests/unit/actor}/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_helpers.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_log.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_actor_non_default_instance.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/actor/test_configuration.py +0 -0
- {apify-2.7.2/tests/unit/scrapy/pipelines → apify-3.0.0rc1/tests/unit/events}/__init__.py +0 -0
- {apify-2.7.2/tests/unit/scrapy/requests → apify-3.0.0rc1/tests/unit/scrapy}/__init__.py +0 -0
- {apify-2.7.2/tests/unit/scrapy/utils → apify-3.0.0rc1/tests/unit/scrapy/extensions}/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/extensions/test_httpcache.py +0 -0
- /apify-2.7.2/website/static/.nojekyll → /apify-3.0.0rc1/tests/unit/scrapy/middlewares/__init__.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/middlewares/test_apify_proxy.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/pipelines/test_actor_dataset_push.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/utils/test_apply_apify_settings.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/scrapy/utils/test_get_basic_auth_header.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/tests/unit/test_crypto.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/.eslintrc.json +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/babel.config.js +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/build_api_reference.sh +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/generate_module_shortcuts.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/components/ApiLink.jsx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/components/Gradients.jsx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/components/Highlights.jsx +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/components/Highlights.module.css +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/components/RunnableCodeBlock.module.css +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/css/custom.css +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/pages/home_page_example.py +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/src/pages/index.js +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/static/img/docs-og.png +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/tools/docs-prettier.config.js +0 -0
- {apify-2.7.2 → apify-3.0.0rc1}/website/tools/utils/externalLink.js +0 -0
|
@@ -11,6 +11,10 @@ on:
|
|
|
11
11
|
# Or it can be triggered manually.
|
|
12
12
|
workflow_dispatch:
|
|
13
13
|
|
|
14
|
+
concurrency:
|
|
15
|
+
group: release
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
14
18
|
jobs:
|
|
15
19
|
release_metadata:
|
|
16
20
|
if: "!startsWith(github.event.head_commit.message, 'docs') && !startsWith(github.event.head_commit.message, 'ci') && startsWith(github.repository, 'apify/')"
|
|
@@ -20,38 +24,38 @@ jobs:
|
|
|
20
24
|
version_number: ${{ steps.release_metadata.outputs.version_number }}
|
|
21
25
|
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
|
|
22
26
|
changelog: ${{ steps.release_metadata.outputs.changelog }}
|
|
23
|
-
existing_changelog_path: CHANGELOG.md
|
|
24
27
|
steps:
|
|
25
28
|
- uses: apify/workflows/git-cliff-release@main
|
|
26
29
|
id: release_metadata
|
|
27
30
|
name: Prepare release metadata
|
|
28
31
|
with:
|
|
29
32
|
release_type: prerelease
|
|
33
|
+
existing_changelog_path: CHANGELOG.md
|
|
30
34
|
|
|
31
35
|
lint_check:
|
|
32
36
|
name: Lint check
|
|
33
37
|
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
|
|
34
38
|
with:
|
|
35
|
-
python-versions: '["3.
|
|
39
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
36
40
|
|
|
37
41
|
type_check:
|
|
38
42
|
name: Type check
|
|
39
43
|
uses: apify/workflows/.github/workflows/python_type_check.yaml@main
|
|
40
44
|
with:
|
|
41
|
-
python-versions: '["3.
|
|
45
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
42
46
|
|
|
43
47
|
unit_tests:
|
|
44
48
|
name: Unit tests
|
|
45
49
|
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
|
|
46
50
|
with:
|
|
47
|
-
python-versions: '["3.
|
|
51
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
48
52
|
|
|
49
53
|
integration_tests:
|
|
50
54
|
name: Integration tests
|
|
51
55
|
uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
|
|
52
56
|
secrets: inherit
|
|
53
57
|
with:
|
|
54
|
-
python-versions: '["3.
|
|
58
|
+
python-versions: '["3.10", "3.13"]'
|
|
55
59
|
|
|
56
60
|
update_changelog:
|
|
57
61
|
name: Update changelog
|
|
@@ -21,6 +21,10 @@ on:
|
|
|
21
21
|
type: string
|
|
22
22
|
default: ""
|
|
23
23
|
|
|
24
|
+
concurrency:
|
|
25
|
+
group: release
|
|
26
|
+
cancel-in-progress: false
|
|
27
|
+
|
|
24
28
|
jobs:
|
|
25
29
|
release_metadata:
|
|
26
30
|
name: Prepare release metadata
|
|
@@ -43,30 +47,23 @@ jobs:
|
|
|
43
47
|
name: Lint check
|
|
44
48
|
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
|
|
45
49
|
with:
|
|
46
|
-
python-versions: '["3.
|
|
50
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
47
51
|
|
|
48
52
|
type_check:
|
|
49
53
|
name: Type check
|
|
50
54
|
uses: apify/workflows/.github/workflows/python_type_check.yaml@main
|
|
51
55
|
with:
|
|
52
|
-
python-versions: '["3.
|
|
56
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
53
57
|
|
|
54
58
|
unit_tests:
|
|
55
59
|
name: Unit tests
|
|
56
60
|
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
|
|
57
61
|
with:
|
|
58
|
-
python-versions: '["3.
|
|
59
|
-
|
|
60
|
-
integration_tests:
|
|
61
|
-
name: Integration tests
|
|
62
|
-
uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
|
|
63
|
-
secrets: inherit
|
|
64
|
-
with:
|
|
65
|
-
python-versions: '["3.9", "3.13"]'
|
|
62
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
66
63
|
|
|
67
64
|
update_changelog:
|
|
68
65
|
name: Update changelog
|
|
69
|
-
needs: [release_metadata, lint_check, type_check, unit_tests
|
|
66
|
+
needs: [release_metadata, lint_check, type_check, unit_tests]
|
|
70
67
|
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
|
|
71
68
|
with:
|
|
72
69
|
version_number: ${{ needs.release_metadata.outputs.version_number }}
|
|
@@ -6,24 +6,29 @@ on:
|
|
|
6
6
|
# step required for PRs from forks. This prevents their potential exposure.
|
|
7
7
|
pull_request:
|
|
8
8
|
|
|
9
|
+
# Trigger for pushing to the master branch is handled by the pre-release workflow.
|
|
10
|
+
|
|
11
|
+
# It should also be possible to trigger checks manually
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
9
14
|
jobs:
|
|
10
15
|
lint_check:
|
|
11
16
|
name: Lint check
|
|
12
17
|
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
|
|
13
18
|
with:
|
|
14
|
-
python-versions: '["3.
|
|
19
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
15
20
|
|
|
16
21
|
type_check:
|
|
17
22
|
name: Type check
|
|
18
23
|
uses: apify/workflows/.github/workflows/python_type_check.yaml@main
|
|
19
24
|
with:
|
|
20
|
-
python-versions: '["3.
|
|
25
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
21
26
|
|
|
22
27
|
unit_tests:
|
|
23
28
|
name: Unit tests
|
|
24
29
|
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
|
|
25
30
|
with:
|
|
26
|
-
python-versions: '["3.
|
|
31
|
+
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
|
|
27
32
|
|
|
28
33
|
docs_check:
|
|
29
34
|
name: Docs check
|
|
@@ -31,8 +36,7 @@ jobs:
|
|
|
31
36
|
|
|
32
37
|
integration_tests:
|
|
33
38
|
name: Integration tests
|
|
34
|
-
needs: [lint_check, type_check, unit_tests]
|
|
35
39
|
uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
|
|
36
40
|
secrets: inherit
|
|
37
41
|
with:
|
|
38
|
-
python-versions: '["3.
|
|
42
|
+
python-versions: '["3.10", "3.13"]'
|
|
@@ -2,11 +2,173 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [3.0.0rc1](https://github.com/apify/apify-sdk-python/releases/tag/v3.0.0rc1) (2025-08-22)
|
|
6
|
+
|
|
7
|
+
### 🚀 Features
|
|
8
|
+
|
|
9
|
+
- Add deduplication to `add_batch_of_requests` ([#534](https://github.com/apify/apify-sdk-python/pull/534)) ([dd03c4d](https://github.com/apify/apify-sdk-python/commit/dd03c4d446f611492adf35f1b5738648ee5a66f7)) by [@Pijukatel](https://github.com/Pijukatel), closes [#514](https://github.com/apify/apify-sdk-python/issues/514)
|
|
10
|
+
|
|
11
|
+
### 🐛 Bug Fixes
|
|
12
|
+
|
|
13
|
+
- Restrict apify-shared and apify-client versions ([#523](https://github.com/apify/apify-sdk-python/pull/523)) ([b3ae5a9](https://github.com/apify/apify-sdk-python/commit/b3ae5a972a65454a4998eda59c9fcc3f6b7e8579)) by [@vdusek](https://github.com/vdusek)
|
|
14
|
+
- Expose `APIFY_USER_IS_PAYING` env var to the configuration ([#507](https://github.com/apify/apify-sdk-python/pull/507)) ([0801e54](https://github.com/apify/apify-sdk-python/commit/0801e54887317c1280cc6828ecd3f2cc53287e76)) by [@stepskop](https://github.com/stepskop)
|
|
15
|
+
- Resolve DeprecationWarning in ApifyEventManager ([#555](https://github.com/apify/apify-sdk-python/pull/555)) ([0c5111d](https://github.com/apify/apify-sdk-python/commit/0c5111dafe19796ec1fb9652a44c031bed9758df)) by [@vdusek](https://github.com/vdusek), closes [#343](https://github.com/apify/apify-sdk-python/issues/343)
|
|
16
|
+
|
|
17
|
+
### Chore
|
|
18
|
+
|
|
19
|
+
- [**breaking**] Update apify-client and apify-shared to v2.0 ([#548](https://github.com/apify/apify-sdk-python/pull/548)) ([8ba084d](https://github.com/apify/apify-sdk-python/commit/8ba084ded6cd018111343f2219260b481c8d4e35)) by [@vdusek](https://github.com/vdusek)
|
|
20
|
+
|
|
21
|
+
### Refactor
|
|
22
|
+
|
|
23
|
+
- [**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)
|
|
24
|
+
- [**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)
|
|
25
|
+
- [**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)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
29
|
+
|
|
30
|
+
### 🚀 Features
|
|
31
|
+
|
|
32
|
+
- **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)
|
|
33
|
+
|
|
34
|
+
### 🐛 Bug Fixes
|
|
35
|
+
|
|
36
|
+
- 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)
|
|
37
|
+
- 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)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
41
|
+
|
|
42
|
+
### 🚀 Features
|
|
43
|
+
|
|
44
|
+
- **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)
|
|
45
|
+
|
|
46
|
+
### 🐛 Bug Fixes
|
|
47
|
+
|
|
48
|
+
- 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)
|
|
49
|
+
- 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)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
53
|
+
|
|
54
|
+
### 🚀 Features
|
|
55
|
+
|
|
56
|
+
- **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)
|
|
57
|
+
|
|
58
|
+
### 🐛 Bug Fixes
|
|
59
|
+
|
|
60
|
+
- 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)
|
|
61
|
+
- 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)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
65
|
+
|
|
66
|
+
### 🚀 Features
|
|
67
|
+
|
|
68
|
+
- **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)
|
|
69
|
+
|
|
70
|
+
### 🐛 Bug Fixes
|
|
71
|
+
|
|
72
|
+
- 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)
|
|
73
|
+
- 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)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
77
|
+
|
|
78
|
+
### 🚀 Features
|
|
79
|
+
|
|
80
|
+
- **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)
|
|
81
|
+
|
|
82
|
+
### 🐛 Bug Fixes
|
|
83
|
+
|
|
84
|
+
- 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)
|
|
85
|
+
- 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)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
89
|
+
|
|
90
|
+
### 🚀 Features
|
|
91
|
+
|
|
92
|
+
- **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)
|
|
93
|
+
|
|
94
|
+
### 🐛 Bug Fixes
|
|
95
|
+
|
|
96
|
+
- 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)
|
|
97
|
+
- 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)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
101
|
+
|
|
102
|
+
### 🚀 Features
|
|
103
|
+
|
|
104
|
+
- **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)
|
|
105
|
+
|
|
106
|
+
### 🐛 Bug Fixes
|
|
107
|
+
|
|
108
|
+
- 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)
|
|
109
|
+
- 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)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
113
|
+
|
|
114
|
+
### 🚀 Features
|
|
115
|
+
|
|
116
|
+
- **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)
|
|
117
|
+
|
|
118
|
+
### 🐛 Bug Fixes
|
|
119
|
+
|
|
120
|
+
- 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)
|
|
121
|
+
- 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)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
125
|
+
|
|
126
|
+
### 🚀 Features
|
|
127
|
+
|
|
128
|
+
- **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)
|
|
129
|
+
|
|
130
|
+
### 🐛 Bug Fixes
|
|
131
|
+
|
|
132
|
+
- 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)
|
|
133
|
+
- 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)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
137
|
+
|
|
138
|
+
### 🚀 Features
|
|
139
|
+
|
|
140
|
+
- **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)
|
|
141
|
+
|
|
142
|
+
### 🐛 Bug Fixes
|
|
143
|
+
|
|
144
|
+
- 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)
|
|
145
|
+
- 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)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
## [2.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.0) (2025-07-14)
|
|
149
|
+
|
|
150
|
+
### 🚀 Features
|
|
151
|
+
|
|
152
|
+
- **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)
|
|
153
|
+
|
|
154
|
+
### 🐛 Bug Fixes
|
|
155
|
+
|
|
156
|
+
- 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)
|
|
157
|
+
- 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)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
## [2.7.3](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.3) (2025-08-11)
|
|
161
|
+
|
|
162
|
+
### 🐛 Bug Fixes
|
|
163
|
+
|
|
164
|
+
- Expose `APIFY_USER_IS_PAYING` env var to the configuration (#507) ([0de022c](https://github.com/apify/apify-sdk-python/commit/0de022c3435f24c821053c771e7b659433e3fb6e))
|
|
165
|
+
|
|
166
|
+
|
|
5
167
|
## [2.7.2](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.2) (2025-07-30)
|
|
6
168
|
|
|
7
169
|
### 🐛 Bug Fixes
|
|
8
170
|
|
|
9
|
-
- Restrict apify-shared and apify-client versions (#523) ([581ebae](https://github.com/apify/apify-sdk-python/commit/581ebae5752a984a34cbabc02c49945ae392db00))
|
|
171
|
+
- Restrict apify-shared and apify-client versions ([#523](https://github.com/apify/apify-sdk-python/pull/523)) ([581ebae](https://github.com/apify/apify-sdk-python/commit/581ebae5752a984a34cbabc02c49945ae392db00)) by [@vdusek](https://github.com/vdusek)
|
|
10
172
|
|
|
11
173
|
|
|
12
174
|
## [2.7.1](https://github.com/apify/apify-sdk-python/releases/tag/v2.7.1) (2025-07-24)
|
|
@@ -152,33 +314,210 @@ All notable changes to this project will be documented in this file.
|
|
|
152
314
|
|
|
153
315
|
- [**breaking**] Preparation for v2 release ([#210](https://github.com/apify/apify-sdk-python/pull/210)) ([2f9dcc5](https://github.com/apify/apify-sdk-python/commit/2f9dcc559414f31e3f4fc87e72417a36494b9c84)) by [@janbuchar](https://github.com/janbuchar), closes [#135](https://github.com/apify/apify-sdk-python/issues/135), [#137](https://github.com/apify/apify-sdk-python/issues/137), [#138](https://github.com/apify/apify-sdk-python/issues/138), [#147](https://github.com/apify/apify-sdk-python/issues/147), [#149](https://github.com/apify/apify-sdk-python/issues/149), [#237](https://github.com/apify/apify-sdk-python/issues/237)
|
|
154
316
|
|
|
317
|
+
### Chore
|
|
318
|
+
|
|
319
|
+
- [**breaking**] Drop support for Python 3.8
|
|
320
|
+
|
|
155
321
|
|
|
156
322
|
## [1.7.2](https://github.com/apify/apify-sdk-python/releases/tag/v1.7.2) (2024-07-08)
|
|
157
323
|
|
|
324
|
+
- Add Actor Standby port
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
## [1.7.1](https://github.com/apify/apify-sdk-python/releases/tag/v1.7.1) (2024-05-23)
|
|
328
|
+
|
|
329
|
+
### 🐛 Bug Fixes
|
|
330
|
+
|
|
331
|
+
- Set a timeout for Actor cleanup
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
## [1.7.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.7.0) (2024-03-12)
|
|
335
|
+
|
|
158
336
|
### 🚀 Features
|
|
159
337
|
|
|
160
|
-
- Add
|
|
338
|
+
- Add a new way of generating the `uniqueKey` field of the request, aligning it with the Crawlee.
|
|
161
339
|
|
|
340
|
+
### 🐛 Bug Fixes
|
|
162
341
|
|
|
163
|
-
|
|
342
|
+
- Improve error handling for `to_apify_request` serialization failures
|
|
343
|
+
- Scrapy's `Request.dont_filter` works.
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
## [1.6.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.6.0) (2024-02-23)
|
|
164
347
|
|
|
165
348
|
### 🐛 Bug Fixes
|
|
166
349
|
|
|
167
|
-
-
|
|
350
|
+
- Update of Scrapy integration, fixes in `ApifyScheduler`, `to_apify_request` and `apply_apify_settings`.
|
|
168
351
|
|
|
352
|
+
### Chore
|
|
169
353
|
|
|
170
|
-
|
|
354
|
+
- Remove `ApifyRetryMiddleware` and stay with the Scrapy's default one
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
## [1.5.5](https://github.com/apify/apify-sdk-python/releases/tag/v1.5.5) (2024-02-01)
|
|
358
|
+
|
|
359
|
+
### 🐛 Bug Fixes
|
|
360
|
+
|
|
361
|
+
- Fix conversion of `headers` fields in Apify <--> Scrapy request translation
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
## [1.5.4](https://github.com/apify/apify-sdk-python/releases/tag/v1.5.4) (2024-01-24)
|
|
365
|
+
|
|
366
|
+
### 🐛 Bug Fixes
|
|
367
|
+
|
|
368
|
+
- Fix conversion of `userData` and `headers` fields in Apify <--> Scrapy request translation
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
## [1.5.3](https://github.com/apify/apify-sdk-python/releases/tag/v1.5.3) (2024-01-23)
|
|
171
372
|
|
|
172
373
|
### 🚀 Features
|
|
173
374
|
|
|
174
|
-
-
|
|
375
|
+
- Add `apply_apify_settings` function to Scrapy subpackage
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
## [1.5.2](https://github.com/apify/apify-sdk-python/releases/tag/v1.5.2) (2024-01-19)
|
|
379
|
+
|
|
380
|
+
### 🐛 Bug Fixes
|
|
381
|
+
|
|
382
|
+
- Add missing import check to `ApifyHttpProxyMiddleware`
|
|
383
|
+
|
|
384
|
+
### Chore
|
|
385
|
+
|
|
386
|
+
- Create a new subpackage for Scrapy pipelines
|
|
387
|
+
- Remove some noqas thanks to the new Ruff release
|
|
388
|
+
- Replace relative imports with absolute imports
|
|
389
|
+
- Replace asserts with custom checks in Scrapy subpackage
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
## [1.5.1](https://github.com/apify/apify-sdk-python/releases/tag/v1.5.1) (2024-01-10)
|
|
393
|
+
|
|
394
|
+
### Chore
|
|
395
|
+
|
|
396
|
+
- Allowed running integration tests from PRs from forks, after maintainer approval
|
|
397
|
+
- Do not close `nested_event_loop` in the `Scheduler.__del__`
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
## [1.5.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.5.0) (2024-01-03)
|
|
401
|
+
|
|
402
|
+
### 🚀 Features
|
|
403
|
+
|
|
404
|
+
- Add `ApifyHttpProxyMiddleware`
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
## [1.4.1](https://github.com/apify/apify-sdk-python/releases/tag/v1.4.1) (2023-12-21)
|
|
408
|
+
|
|
409
|
+
### 🐛 Bug Fixes
|
|
410
|
+
|
|
411
|
+
- Resolve issue in `ApifyRetryMiddleware.process_exception()`, where requests were getting stuck in the request queue
|
|
412
|
+
|
|
413
|
+
### Chore
|
|
414
|
+
|
|
415
|
+
- Fix type hint problems for resource clients
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
## [1.4.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.4.0) (2023-12-05)
|
|
419
|
+
|
|
420
|
+
### Chore
|
|
421
|
+
|
|
422
|
+
- Migrate from Autopep8 and Flake8 to Ruff
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
## [1.3.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.3.0) (2023-11-15)
|
|
426
|
+
|
|
427
|
+
### 🚀 Features
|
|
428
|
+
|
|
429
|
+
- Add `scrapy` extra
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
## [1.2.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.2.0) (2023-10-23)
|
|
433
|
+
|
|
434
|
+
### 🚀 Features
|
|
435
|
+
|
|
436
|
+
- Add support for Python 3.12
|
|
437
|
+
|
|
438
|
+
### Chore
|
|
439
|
+
|
|
440
|
+
- Fix lint error (E721) in unit tests (for instance checks use `isinstance()`)
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
## [1.1.5](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.5) (2023-10-03)
|
|
444
|
+
|
|
445
|
+
### 🚀 Features
|
|
446
|
+
|
|
447
|
+
- Update the Apify log formatter to contain an option for adding the logger name
|
|
448
|
+
|
|
449
|
+
### Chore
|
|
450
|
+
|
|
451
|
+
- Rewrite documentation publication to use Docusaurus
|
|
452
|
+
- Remove PR Toolkit workflow
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
## [1.1.4](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.4) (2023-09-06)
|
|
456
|
+
|
|
457
|
+
### 🐛 Bug Fixes
|
|
458
|
+
|
|
459
|
+
- Resolve issue with querying request queue head multiple times in parallel
|
|
460
|
+
|
|
461
|
+
### Chore
|
|
462
|
+
|
|
463
|
+
- Fix integration tests for Actor logger
|
|
464
|
+
- Remove `pytest-randomly` Pytest plugin
|
|
465
|
+
- Unpin `apify-client` and `apify-shared` to improve compatibility with their newer versions
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
## [1.1.3](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.3) (2023-08-25)
|
|
469
|
+
|
|
470
|
+
### Chore
|
|
471
|
+
|
|
472
|
+
- Unify indentation in configuration files
|
|
473
|
+
- Update the `Actor.reboot` method to use the new reboot endpoint
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
## [1.1.2](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.2) (2023-08-02)
|
|
477
|
+
|
|
478
|
+
### Chore
|
|
479
|
+
|
|
480
|
+
- Start importing general constants and utilities from the `apify-shared` library
|
|
481
|
+
- Simplify code via `flake8-simplify`
|
|
482
|
+
- Start using environment variables with prefix `ACTOR_` instead of some with prefix `APIFY_`
|
|
483
|
+
- Pin `apify-client` and `apify-shared` to prevent their implicit updates from breaking SDK
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
## [1.1.1](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.1) (2023-05-23)
|
|
487
|
+
|
|
488
|
+
### 🐛 Bug Fixes
|
|
489
|
+
|
|
490
|
+
- Relax dependency requirements to improve compatibility with other libraries
|
|
175
491
|
|
|
176
492
|
|
|
177
493
|
## [1.1.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.1.0) (2023-05-23)
|
|
178
494
|
|
|
179
495
|
### 🚀 Features
|
|
180
496
|
|
|
181
|
-
-
|
|
497
|
+
- Add option to add event handlers which accept no arguments
|
|
498
|
+
- Add support for `is_terminal` flag in status message update
|
|
499
|
+
- Add option to set status message along with `Actor.exit()`
|
|
500
|
+
|
|
501
|
+
### 🐛 Bug Fixes
|
|
502
|
+
|
|
503
|
+
- Start enforcing local storage to always use the UTF-8 encoding
|
|
504
|
+
- Fix saving key-value store values to local storage with the right extension for a given content type
|
|
505
|
+
|
|
506
|
+
### Chore
|
|
507
|
+
|
|
508
|
+
- Switch from `setup.py` to `pyproject.toml` for specifying project setup
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
## [1.0.0](https://github.com/apify/apify-sdk-python/releases/tag/v1.0.0) (2023-03-13)
|
|
512
|
+
|
|
513
|
+
### 🐛 Bug Fixes
|
|
514
|
+
|
|
515
|
+
- Fix `RequestQueue` not loading requests from an existing queue properly
|
|
516
|
+
|
|
517
|
+
### Chore
|
|
518
|
+
|
|
519
|
+
- Update to `apify-client` 1.0.0
|
|
520
|
+
- Start triggering base Docker image builds when releasing a new version
|
|
182
521
|
|
|
183
522
|
|
|
184
523
|
## [0.2.0](https://github.com/apify/apify-sdk-python/releases/tag/v0.2.0) (2023-03-06)
|
|
@@ -4,7 +4,7 @@ Here you'll find a contributing guide to get started with development.
|
|
|
4
4
|
|
|
5
5
|
## Environment
|
|
6
6
|
|
|
7
|
-
For local development, it is required to have Python 3.
|
|
7
|
+
For local development, it is required to have Python 3.10 (or a later version) installed.
|
|
8
8
|
|
|
9
9
|
We use [uv](https://docs.astral.sh/uv/) for project management. Install it and set up your IDE accordingly.
|
|
10
10
|
|
|
@@ -26,13 +26,13 @@ type-check:
|
|
|
26
26
|
uv run mypy
|
|
27
27
|
|
|
28
28
|
unit-tests:
|
|
29
|
-
uv run pytest --numprocesses=auto
|
|
29
|
+
uv run pytest --numprocesses=auto -vv --cov=src/apify tests/unit
|
|
30
30
|
|
|
31
31
|
unit-tests-cov:
|
|
32
|
-
uv run pytest --numprocesses=auto
|
|
32
|
+
uv run pytest --numprocesses=auto -vv --cov=src/apify --cov-report=html tests/unit
|
|
33
33
|
|
|
34
34
|
integration-tests:
|
|
35
|
-
uv run pytest --numprocesses=$(INTEGRATION_TESTS_CONCURRENCY)
|
|
35
|
+
uv run pytest --numprocesses=$(INTEGRATION_TESTS_CONCURRENCY) -vv tests/integration
|
|
36
36
|
|
|
37
37
|
format:
|
|
38
38
|
uv run ruff check --fix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apify
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0rc1
|
|
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
|
|
@@ -219,22 +219,23 @@ Classifier: Environment :: Console
|
|
|
219
219
|
Classifier: Intended Audience :: Developers
|
|
220
220
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
221
221
|
Classifier: Operating System :: OS Independent
|
|
222
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
223
222
|
Classifier: Programming Language :: Python :: 3.10
|
|
224
223
|
Classifier: Programming Language :: Python :: 3.11
|
|
225
224
|
Classifier: Programming Language :: Python :: 3.12
|
|
226
225
|
Classifier: Programming Language :: Python :: 3.13
|
|
227
226
|
Classifier: Topic :: Software Development :: Libraries
|
|
228
|
-
Requires-Python: >=3.
|
|
229
|
-
Requires-Dist: apify-client<2.0.0
|
|
230
|
-
Requires-Dist: apify-shared<2.0.0
|
|
231
|
-
Requires-Dist:
|
|
227
|
+
Requires-Python: >=3.10
|
|
228
|
+
Requires-Dist: apify-client<3.0.0,>=2.0.0
|
|
229
|
+
Requires-Dist: apify-shared<3.0.0,>=2.0.0
|
|
230
|
+
Requires-Dist: cachetools>=5.5.0
|
|
231
|
+
Requires-Dist: crawlee==1.0.0rc1
|
|
232
232
|
Requires-Dist: cryptography>=42.0.0
|
|
233
|
-
Requires-Dist:
|
|
233
|
+
Requires-Dist: impit>=0.5.3
|
|
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
|
|
237
237
|
Requires-Dist: websockets>=14.0
|
|
238
|
+
Requires-Dist: yarl>=1.18.0
|
|
238
239
|
Provides-Extra: scrapy
|
|
239
240
|
Requires-Dist: scrapy>=2.11.0; extra == 'scrapy'
|
|
240
241
|
Description-Content-Type: text/markdown
|
|
@@ -11,7 +11,7 @@ In this page, you'll learn how to create and run Apify Actors locally on your co
|
|
|
11
11
|
|
|
12
12
|
## Requirements
|
|
13
13
|
|
|
14
|
-
The Apify SDK requires Python version 3.
|
|
14
|
+
The Apify SDK requires Python version 3.10 or above to run Python Actors locally.
|
|
15
15
|
|
|
16
16
|
## Creating your first Actor
|
|
17
17
|
|