lukeFalsina opened a new pull request, #3724: URL: https://github.com/apache/iceberg-python/pull/3724
## Summary - Implement async REST `fetchPlanningResult` / `cancelPlanning` polling when `planTableScan` returns `status=submitted` - Apply completed-plan `storage-credentials` to the scan-scoped FileIO (layered on existing IO properties) - Keep public `RestCatalog.plan_scan(...) -> list[FileScanTask]` unchanged; credentials flow through internal `_plan_scan_result` / `_file_io_from_plan` Related: #2775, #3495 Java reference: apache/iceberg#13400 ## Rationale Unblocks REST catalogs that return async plans (for example policy-protected tables). Finishes the unchecked async items from #2775 and the plan-credential gap from #3495. ## User-facing - `table.scan()` with `scan-planning-mode=server` now handles async plans automatically - New optional `rest-scan-planning.poll-timeout-ms` (default 300000) - No breaking change to `RestCatalog.plan_scan` return type ## Test plan - [x] `make lint` - [x] `make test` (3805 passed) - [x] Unit tests in `tests/catalog/test_scan_planning_models.py` for poll success / timeout / failed / cancelled and IO property retention - [ ] Existing REST scan integration suite (CI) - [x] Manual validation against an async-capable catalog (Snowflake Horizon Iceberg REST Catalog Scan Plan API) Made with [Cursor](https://cursor.com) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
