[ 
https://issues.apache.org/jira/browse/SPARK-61217?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated SPARK-61217:
-----------------------------------
    Labels: pull-request-available  (was: )

> Support independent Python DataFrame subclass construction in Spark Connect 
> Rust
> --------------------------------------------------------------------------------
>
>                 Key: SPARK-61217
>                 URL: https://issues.apache.org/jira/browse/SPARK-61217
>             Project: Spark
>          Issue Type: Bug
>          Components: Connect
>    Affects Versions: connect-rust-4.3.0
>            Reporter: DB Tsai
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: connect-rust-4.3.0
>
>
> The public pyspark.sql.DataFrame currently reexports the native allocator. 
> Official pyspark.testing.mlutils.MockDataset subclasses it and calls 
> object.__new__(cls); construction raises TypeError before Python-owned state 
> is initialized. MockDataset().index should be 0, and official pipeline tests 
> use this pattern.
> Provide a Python public DataFrame base/factory that supports independent 
> subclass state and overridden operations, while ordinary construction returns 
> the concrete native Connect frame. Preserve call-time dispatch, temporary 
> public overrides and restoration, and public-base fallbacks. Add subclass, 
> dispatch, restoration and annotation regression coverage.
> Final revision validation: 13 selected subclass/dispatch/cloudpickle 
> regression cases passed, with 81 deselected and zero skips/failures/errors. 
> Pytest exited 0; the outer harness's exit 1 came from an incorrect 
> minimum-22-case assertion for that narrower selection. The counting failure 
> is retained and assessed separately.
> Before the final two private-helper renames and comments, full offline 
> validation passed 2,676 Python tests, including all 22 required subclass 
> cases and annotation assertions, with eight separate live-server skips. These 
> results carry forward as historical execution: inverse renaming yields an 
> identical AST and all other source/tests/build inputs and the extension are 
> unchanged. Historical identical-input validation also passed 141 core Rust 
> tests, 495 API Rust tests, formatting, extension build and all-test/wasm-udf 
> compilation. Advisory Clippy exited 101 at source sites assessed as 
> inherited; no clean lint result is claimed.
> The unchanged official/native high-level pipeline, tuning and one-vs-rest 
> selection passed under predeclared PYTHONHASHSEED=0: 16 passed and four exact 
> upstream-disabled GC skips per client. This remains bounded historical 
> execution. The original default-hash native Random Forest failure on a 
> one-class training fold is retained; its cause is unproven. Separately, 
> official high-level PySpark through this artifact's Rust transport plugin 
> recorded 39 passes and five skips: configuration/creation 23 passes and one 
> skip, plus ML 16 passes and four GC skips. This artifact execution also 
> predates only the final private-helper renames/comments.
> Cloudpickle probe 3 passed ordinary local-class/captured-closure portability 
> through an official-only consumer without native imports before those 
> renames/comments. API assessment covered all 500 canonical mismatch records 
> and 171 controlled fields, plus 12 central API groups and the Row-name gate. 
> The raw API comparison exited 1 for assessed differences; no public names are 
> missing. Public/Connect Column aliases and return annotation are the same 
> native object; its module metadata differs from official public PySpark.
> Common transport regression evidence comes from a separate artifact with 53 
> unchanged transport/build/dependency inputs: 87 ordinary modules produced 
> 2,586 passes, 641 skips, one manifest deselection and one retained expected 
> catalog-drift failure; four cluster modules produced 15 passes and 14 skips. 
> No unexpected failures remained. This candidate executed its own plugin 
> checks above; it did not execute both full suites. Source equality is not 
> binary equivalence. Complete dependency-tree start/end attestations, per-case 
> skip provenance and per-module pytest exit codes are unavailable from the 
> shared harness.
> Scope limits: native concrete membership in the public base is virtual; its 
> actual MRO remains native, so super(DataFrame, native_frame) is unsupported. 
> Direct native subclasses must initialize their native payload. The public 
> base uses an ABCMeta subclass; ordinary subclasses use standard abc.ABCMeta 
> and unrelated metaclasses need a combined metaclass. Inherited signatures and 
> factory/metaclass differences remain. Portability coverage excludes 
> independent instances, explicit user metaclasses, native DataFrame 
> serialization and server UDFs. Full DataFrame/ML parity is not claimed.
> Final independent full-patch review completed with no remaining findings. All 
> earlier findings and fixes, including the final helper-name and comment 
> changes, were assessed. The execution boundaries and retained failures above 
> remain part of the validation record.
> This pull request and its description were written by OpenAI Codex.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to