JingsongLi opened a new pull request, #10784: URL: https://github.com/apache/paimon/pull/10784
### Purpose Keep PyPaimon's public table APIs focused on configuration, validation and delegation, with execution state owned by the selected backend. - Keep Python dynamic-bucket restoration within Python execution, including after Native preparation falls back. Retain a selected Python committer for later rounds. - Move Python writer state off the public facade. Remove backend-specific writer/committer attributes and generic Native attribute forwarding that could initialize or switch executors during inspection. - Remove TableRead's private Native method mirrors. Native adaptation calls its own helpers directly, while shared output and cache configuration stay outside execution. Allocate Python decoded caches within the Python reader. - Remove the unused SingleWriter facade, implementation and factories. - Construct physical Row/Blob/Vortex codecs in Python execution using FileIO streams. Remove format-specific FileIO convenience methods and their fixed Python dispatch bridge; keep shared URI/path conversion in filesystem. - Preserve descriptor URI routing, cached reads and REST credential refresh/authorization through FileIO wrappers, with regression coverage. Documented table API signatures and supported subclass hooks remain unchanged. The removed attributes and codec convenience methods were implementation-specific, undocumented surfaces. General validation, shared Arrow/Pandas adapters and utilities retain their existing ownership. Existing Rust APIs are sufficient for this cleanup. ### Tests - Affected Python write/read/Blob/format suites: **1278 passed, 247 skipped**. - Additional commit, FileIO, row-ID retry and schema/history suites: **247 passed, 24 skipped**. - Native-enabled joint regression suites: **3224 passed**, exercising **1639 plans, 1591 reads, 3310 writes and 540 commits**. Reused the existing SDK test runtime without rebuilding or installing the extension. - Targeted public/import isolation and descriptor regressions: **53 passed, 1 skipped**. - Packaging checks passed, including distribution contents after removing the obsolete bridge. - Changed Python files pass the repository Flake8 configuration; license headers and `git diff --check` pass. The new dynamic-bucket regressions fail when the old cross-backend dispatch is restored. Regressions also cover missing implementation attributes without backend allocation, stable commit selection, shared cache ownership, Native read cancellation/stream closure, and descriptor contents with REST refresh and access denial. -- 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]
