dbtsai opened a new pull request, #123: URL: https://github.com/apache/spark-connect-rust/pull/123
### What changes were proposed in this pull request? Format ordinary Python DataFrame repr using the existing `dtypes` path: `DataFrame[id: bigint, name: string]`, including empty schemas and nested simple type strings. Preserve field order/names and propagate schema analysis errors. Add separate-process gRPC tests that also assert repr never executes rows. This is based directly on master and adds no schema cache or dependency on PR120. Eager row/HTML rendering and eagerEval configuration handling remain outside this change; the supported representation is the ordinary schema form. ### Why are the changes needed? [SPARK-60682](https://issues.apache.org/jira/browse/SPARK-60682): the current Rust-backed repr returns only `DataFrame`, omitting schema information shown by Python Connect's ordinary repr and failing all five frozen repr inspection cases. ### Does this PR introduce _any_ user-facing change? Yes. For a DataFrame with one long field, `repr(df)` changes from `DataFrame` to `DataFrame[id: bigint]`; an empty schema becomes `DataFrame[]`. Repr now requests schema analysis and can raise its error, without fetching rows. It does not implement eager evaluation. ### How was this patch tested? - Release locked maturin build; default Rust member test executables compile; 392 Rust library tests pass; cargo fmt and git diff checks pass. - 12 new mock-protocol tests pass and all 12 fail on unchanged master. Six formatting expectations also checked independently against the frozen reference client. - All 274 existing Python offline tests pass on both baseline and candidate with `python -m pytest --rootdir=python --import-mode=importlib python/tests/test_dropin_offline.py -q`. - Unchanged frozen harness and validators, five fresh samples per case/client, 14 cases: candidate 70/70 valid, reference 70/70 valid, baseline 45/70 valid. Its 25 failures are the expected five repr cases. All 135 samples for nine unrelated guards pass, with overlapping timing ranges. Candidate repr issues schema RPCs and zero ExecutePlan calls. No repr speedup is claimed against invalid baseline output. Client-only localhost fixtures; no live Spark server/JVM validation. Initial offline invocations without the Python root failed the same UDT module import on both clients; corrected invocation passes. Full workspace test compile also encountered an unrelated WASM example's missing `wasm32-unknown-unknown` target; default Rust members compile successfully. ### Was this patch authored or co-authored using generative AI tooling? Generated-by: OpenAI Codex (GPT-6) -- 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]
