Skip to content

Commit 95364ec

Browse files
authored
Ensure FileInfo can be serialized (#9025)
1 parent a96599e commit 95364ec

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

distributed/protocol/arrow.py

+11
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,14 @@ def deserialize_table(header, frames):
4747
blob = frames[0]
4848
reader = pyarrow.RecordBatchStreamReader(pyarrow.BufferReader(blob))
4949
return reader.read_all()
50+
51+
52+
@dask_serialize.register(pyarrow.fs.FileInfo)
53+
def serialize_fileinfo(fileinfo):
54+
return {}, [(fileinfo.path, fileinfo.size, fileinfo.mtime_ns)]
55+
56+
57+
@dask_deserialize.register(pyarrow.fs.FileInfo)
58+
def serialize_filesystem(header, frames):
59+
path, size, mtime_ns = frames[0]
60+
return pyarrow.fs.FileInfo(path=path, size=size, mtime_ns=mtime_ns)

distributed/protocol/tests/test_arrow.py

+12
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,15 @@ def test_dumps_compression():
4646
msg = {"op": "update", "data": to_serialize(t)}
4747
result = distributed.protocol.loads(distributed.protocol.dumps(msg))
4848
assert result["data"].equals(t)
49+
50+
51+
def test_dump_fileinfo():
52+
from pyarrow.fs import FileInfo
53+
54+
finfo = FileInfo(path="path", size=1, mtime_ns=2)
55+
dtfinfo = deserialize(*serialize(finfo))
56+
# Does not implement __equal__
57+
assert type(dtfinfo) == FileInfo
58+
assert dtfinfo.path == finfo.path
59+
assert dtfinfo.size == finfo.size
60+
assert dtfinfo.mtime_ns == finfo.mtime_ns

0 commit comments

Comments
 (0)