beam icon indicating copy to clipboard operation
beam copied to clipboard

[Feature Request]: Expose pvalue.Row in core.py rather than pvalue.py

Open hjtran opened this issue 7 months ago • 4 comments

What would you like to happen?

It's semantically confusing that Row is defined in pvalue.py. pvalues are abstract representations of data while Rows are actually concretely instantiated.

It might make more sense to put it in core.py? (with a lingering alias in pvalue.py for backwards compatibility)

Issue Priority

Priority: 2 (default / most feature requests should be filed as P2)

Issue Components

  • [x] Component: Python SDK
  • [ ] Component: Java SDK
  • [ ] Component: Go SDK
  • [ ] Component: Typescript SDK
  • [ ] Component: IO connector
  • [ ] Component: Beam YAML
  • [ ] Component: Beam examples
  • [ ] Component: Beam playground
  • [ ] Component: Beam katas
  • [ ] Component: Website
  • [ ] Component: Infrastructure
  • [ ] Component: Spark Runner
  • [ ] Component: Flink Runner
  • [ ] Component: Samza Runner
  • [ ] Component: Twister2 Runner
  • [ ] Component: Hazelcast Jet Runner
  • [ ] Component: Google Cloud Dataflow Runner

hjtran avatar May 30 '25 14:05 hjtran

This issue has been marked as stale due to 150 days of inactivity. It will be closed in 30 days if no further activity occurs. If you think that’s incorrect or this issue still needs to be addressed, please simply write any comment. If closed, you can reopen the issue at any time. Thank you for your contributions.

github-actions[bot] avatar Oct 28 '25 12:10 github-actions[bot]

This issue has been closed due to lack of activity. If you think that is incorrect, you can reopen the issue at any time.

github-actions[bot] avatar Nov 27 '25 12:11 github-actions[bot]

Hi @hjtran ! I'd like to work on this issue as my first contribution to Apache Beam. I read through the ticket and took a quick look at the current implementation. I agree with the reasoning here — 'pvalue.py' mostly contains abstractions around pipeline values, while Row is a concrete, user-facing structure, so its placement does feel a bit out of place. Moving it into 'core.py' with a compatibility alias in 'pvalue.py' seems like the right general direction. At a first glance, this looks doable, but I want to spend some time going through the code layout and imports properly before making any changes, just to make sure nothing unexpected breaks. Let me know if there’s anything specific I should keep in mind as I dive deeper into it. Thanks!

nikitagrover19 avatar Dec 05 '25 09:12 nikitagrover19

.take-issue

nikitagrover19 avatar Dec 05 '25 09:12 nikitagrover19