Releases: apify/apify-sdk-python
Releases · apify/apify-sdk-python
Release list
4.0.0
4.0.0 (2026-07-20)
🚀 Features
- Expose missing platform env vars via Actor.get_env() (#984) (f6e9b3b) by @vdusek
- Re-export apify-client errors from apify.errors (#990) (165a3f6) by @vdusek
🐛 Bug Fixes
- scrapy: Correct proxy middleware exception log and import (#953) (5bd6eb9) by @vdusek
- scrapy: Skip a request that fails to convert instead of crashing the run (#952) (db9444f) by @vdusek
- scrapy: [breaking] Serialize requests and HTTP cache as JSON instead of pickle (#951) (a87e8d1) by @vdusek
- scrapy: Make logging configuration idempotent (#954) (2cc5602) by @vdusek
- Bump typing-extensions floor to 4.4.0 (#960) (b7e7d9c) by @vdusek
- Preserve decorated symbol types in docs_group and docs_name (#964) (6c359a7) by @vdusek
- Exit already-entered contexts when Actor or event manager init fails (#969) (c1a15a7) by @vdusek
- scrapy: Dump pydantic models in JSON mode when serializing requests (#961) (f2ccae1) by @vdusek
- Accept arbitrary JSON userData in ApifyRequestList (#966) (2cfd8a5) by @vdusek
- Coerce null stats in Apify request queue metadata (#974) (63eb771) by @vdusek
- Allow Actor.reboot() to be retried after a failed or cancelled attempt (#968) (7d46ec5) by @vdusek
- Correct reclaim_request count adjustment for already-handled requests (#973) (86f4cd5) by @vdusek
- scrapy: Drop deprecated spider arg from Scrapy proxy middleware methods (#977) (49dd836) by @vdusek
- Redirect input key in all file-system key-value store operations (#976) (1fbdce2) by @vdusek
- Respect explicit zero custom_after_sleep in metamorph and reboot (#971) (e8cda0a) by @vdusek
- Reconnect to platform events websocket after connection drop (#967) (5653a22) by @vdusek
- Forward all
Webhookfields to ad-hoc webhooks (#963) (726620b) by @vdusek - scrapy: Avoid mutating request userData during Scrapy-Apify conversion (#978) (b0b7df7) by @vdusek
- scrapy: Async-thread startup race, shutdown lifecycle, and timeout setting (#979) (ae12935) by @vdusek
- Commit request queue dedup cache only after batch_add_requests succeeds (#975) (078ab87) by @vdusek
- Prevent request queue softlock by adding
is_finishedand correctingis_empty(#1008) (4ead0c6) by @Mantisus - [breaking] Honor explicit exit codes and control-flow signals in Actor exit (#1048) (573e3a3) by @vdusek
- Limit timeout to minimum of 1 seconds when timeout='inherit' (#1051) (54e52e6) by @Pijukatel
- Don't disable Actor exit_process just because scrapy is importable (#1049) (9d154ae) by @vdusek
🚜 Refactor
- [breaking] Remove deprecated APIs (#918) (3e5728d) by @vdusek
- [breaking] Mark secondary arguments as keyword-only (#917) (eb94c99) by @vdusek
- [breaking] Adapt to apify-client v3 (#719) (10203bc) by @vdusek
- [breaking] Remove wait_for_finish from Actor.start (#962) (0daca28) by @vdusek
- [breaking] Polish logging across the codebase (#1005) (f949c24) by @vdusek
- [breaking] Remove unused disable_outdated_warning and fact Configuration fields (#1044) (275e770) by @Pijukatel
⚡ Performance
⚙️ Miscellaneous Tasks
3.4.1
3.4.0
3.4.0 (2026-05-05)
🚀 Features
- Add subdivision code to proxy configuration (#878) (b2e4006) by @daniil-poletaev
3.3.3
3.3.3 (2026-04-21)
🐛 Bug Fixes
- Cap
_list_headrequest limit at_MAX_HEAD_ITEMS(#869) (1716a2a) by @vdusek - Preserve
max_total_charge_usd=0instead of treating it as unlimited (#870) (714334c) by @vdusek - Avoid InvalidStateError on mid-stream platform websocket disconnect (#867) (4dbbd3f) by @vdusek
- Tolerate non-UTF-8 bodies in ApifyRequestList remote sources (#871) (737b0dd) by @vdusek
- Use load sentinel and injected config in AliasResolver (#874) (2d129ad) by @vdusek
- Honor
event_listeners_timeoutinActor.reboot(#872) (03e73d3) by @vdusek
3.3.2
3.3.2 (2026-03-27)
🐛 Bug Fixes
- scrapy: Resolve Crawlee's request data round-trip failure in request conversion (#832) (3b9d588) by @vdusek
- Treat
defaultalias as default storage when in schema (#827) (1610d0d) by @Pijukatel - Guard ReentrantLock against None task context (#841) (193de10) by @vdusek
- Isolate cleanup steps in Actor
__aexit__to prevent cascading failures (#842) (68c2acf) by @vdusek - Handle exceptions in pre-reboot event listeners via
return_exceptions(#843) (ed13597) by @vdusek
3.3.1
3.3.1 (2026-03-11)
🐛 Bug Fixes
- Fix f-string bugs in charging log message (#817) (bcb4050) by @vdusek
- Fix BeforeValidator treating 0 as falsy in configuration fields (#819) (72efe88) by @vdusek
- Clamp negative timedelta in _get_remaining_time() (#818) (69b8af9) by @vdusek
- scrapy: Close AsyncThread on scheduler open() failure (#820) (7dfaf1a) by @vdusek
- Keep track of synthetic apify-default-dataset-item events (#814) (50c4b6c) by @Mantisus
3.3.0
3.2.1
3.2.1 (2026-02-17)
🐛 Bug Fixes
- Fix crawler deadlock when API fails during marking request as handled (#768) (66ed5ea) by @Pijukatel
- Use hashed request_id as cache key in shared RQ client reclaim_request (#795) (bd7572f) by @vdusek
- Correct inverted return value in Scrapy scheduler enqueue_request (#794) (405cf5d) by @vdusek
- Eliminate race condition in _fetch_requests_from_url (#796) (c0a74b9) by @vdusek