-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Python] Add ChunkedArray import/export to/from C #39984
Comments
pitrou
pushed a commit
that referenced
this issue
Feb 14, 2024
### Rationale for this change ChunkedArrays have an unambiguous representation as a stream of arrays. #39455 added the ability to import/export in C++...this PR wires up the new functions in pyarrow. ### What changes are included in this PR? - Added `__arrow_c_stream__()` and `_import_from_c_capsule()` to the `ChunkedArray` ### Are these changes tested? Yes! Tests were added. ### Are there any user-facing changes? Yes! But I'm not sure where the protocol methods are documented. ```python import pyarrow as pa import nanoarrow as na chunked = pa.chunked_array([pa.array([0, 1, 2]), pa.array([3, 4, 5])]) [na.c_array_view(item) for item in na.c_array_stream(chunked)] ``` [<nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 0 1 2> - dictionary: NULL - children[0]:, <nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 3 4 5> - dictionary: NULL - children[0]:] ```python stream_capsule = chunked.__arrow_c_stream__() chunked2 = chunked._import_from_c_capsule(stream_capsule) chunked2 ``` <pyarrow.lib.ChunkedArray object at 0x105bb70b0> [ [ 0, 1, 2 ], [ 3, 4, 5 ] ] * Closes: #39984 Lead-authored-by: Dewey Dunnington <dewey@fishandwhistle.net> Co-authored-by: Dewey Dunnington <dewey@voltrondata.com> Signed-off-by: Antoine Pitrou <antoine@python.org>
dgreiss
pushed a commit
to dgreiss/arrow
that referenced
this issue
Feb 19, 2024
…ache#39985) ### Rationale for this change ChunkedArrays have an unambiguous representation as a stream of arrays. apache#39455 added the ability to import/export in C++...this PR wires up the new functions in pyarrow. ### What changes are included in this PR? - Added `__arrow_c_stream__()` and `_import_from_c_capsule()` to the `ChunkedArray` ### Are these changes tested? Yes! Tests were added. ### Are there any user-facing changes? Yes! But I'm not sure where the protocol methods are documented. ```python import pyarrow as pa import nanoarrow as na chunked = pa.chunked_array([pa.array([0, 1, 2]), pa.array([3, 4, 5])]) [na.c_array_view(item) for item in na.c_array_stream(chunked)] ``` [<nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 0 1 2> - dictionary: NULL - children[0]:, <nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 3 4 5> - dictionary: NULL - children[0]:] ```python stream_capsule = chunked.__arrow_c_stream__() chunked2 = chunked._import_from_c_capsule(stream_capsule) chunked2 ``` <pyarrow.lib.ChunkedArray object at 0x105bb70b0> [ [ 0, 1, 2 ], [ 3, 4, 5 ] ] * Closes: apache#39984 Lead-authored-by: Dewey Dunnington <dewey@fishandwhistle.net> Co-authored-by: Dewey Dunnington <dewey@voltrondata.com> Signed-off-by: Antoine Pitrou <antoine@python.org>
zanmato1984
pushed a commit
to zanmato1984/arrow
that referenced
this issue
Feb 28, 2024
…ache#39985) ### Rationale for this change ChunkedArrays have an unambiguous representation as a stream of arrays. apache#39455 added the ability to import/export in C++...this PR wires up the new functions in pyarrow. ### What changes are included in this PR? - Added `__arrow_c_stream__()` and `_import_from_c_capsule()` to the `ChunkedArray` ### Are these changes tested? Yes! Tests were added. ### Are there any user-facing changes? Yes! But I'm not sure where the protocol methods are documented. ```python import pyarrow as pa import nanoarrow as na chunked = pa.chunked_array([pa.array([0, 1, 2]), pa.array([3, 4, 5])]) [na.c_array_view(item) for item in na.c_array_stream(chunked)] ``` [<nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 0 1 2> - dictionary: NULL - children[0]:, <nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 3 4 5> - dictionary: NULL - children[0]:] ```python stream_capsule = chunked.__arrow_c_stream__() chunked2 = chunked._import_from_c_capsule(stream_capsule) chunked2 ``` <pyarrow.lib.ChunkedArray object at 0x105bb70b0> [ [ 0, 1, 2 ], [ 3, 4, 5 ] ] * Closes: apache#39984 Lead-authored-by: Dewey Dunnington <dewey@fishandwhistle.net> Co-authored-by: Dewey Dunnington <dewey@voltrondata.com> Signed-off-by: Antoine Pitrou <antoine@python.org>
thisisnic
pushed a commit
to thisisnic/arrow
that referenced
this issue
Mar 8, 2024
…ache#39985) ### Rationale for this change ChunkedArrays have an unambiguous representation as a stream of arrays. apache#39455 added the ability to import/export in C++...this PR wires up the new functions in pyarrow. ### What changes are included in this PR? - Added `__arrow_c_stream__()` and `_import_from_c_capsule()` to the `ChunkedArray` ### Are these changes tested? Yes! Tests were added. ### Are there any user-facing changes? Yes! But I'm not sure where the protocol methods are documented. ```python import pyarrow as pa import nanoarrow as na chunked = pa.chunked_array([pa.array([0, 1, 2]), pa.array([3, 4, 5])]) [na.c_array_view(item) for item in na.c_array_stream(chunked)] ``` [<nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 0 1 2> - dictionary: NULL - children[0]:, <nanoarrow.c_lib.CArrayView> - storage_type: 'int64' - length: 3 - offset: 0 - null_count: 0 - buffers[2]: - <bool validity[0 b] > - <int64 data[24 b] 3 4 5> - dictionary: NULL - children[0]:] ```python stream_capsule = chunked.__arrow_c_stream__() chunked2 = chunked._import_from_c_capsule(stream_capsule) chunked2 ``` <pyarrow.lib.ChunkedArray object at 0x105bb70b0> [ [ 0, 1, 2 ], [ 3, 4, 5 ] ] * Closes: apache#39984 Lead-authored-by: Dewey Dunnington <dewey@fishandwhistle.net> Co-authored-by: Dewey Dunnington <dewey@voltrondata.com> Signed-off-by: Antoine Pitrou <antoine@python.org>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the enhancement requested
ChunkedArrays have an unambiguous representation as a stream of arrays. #39455 added the ability to import/export in C++...we could wire this up in pyarrow!
Component(s)
Python
The text was updated successfully, but these errors were encountered: