[Python-ideas] Cross-platform pickling of Path objects

Antony Lee antony.lee at berkeley.edu
Fri Jul 15 20:51:39 EDT 2016


Hi all,

I have opened http://bugs.python.org/issue27175 a month and a half ago but
didn't get any feedback there, so I'll copy-paste it here for comments:

Currently, pickling Path objects lead to issues when working across
platforms: Paths (and, thus, objects that contain Paths) created on a POSIX
platform (PosixPaths) cannot be unpickled on Windows and vice versa.  There
are a few possibilities around this issue.

- Don't do anything about it, you should use PurePaths if you care about
cross-platform compatibility: this would be pretty awkward, as any call to
the Path API would require converting back the PurePath to a Path first.

- Silently convert Paths to PurePaths during pickling (a solution that
seems to have been adopted by
http://docs.menpo.org/en/stable/api/menpo/io/export_pickle.html for
example): it would be better if Paths at least roundtripped correctly
within a single platform.

- Convert Paths to PurePaths at unpickling time, only if the platform is
different (and possibly with a warning): this is the least bad solution I
came up with so far.  Note that calls to the Path API on a "converted"
PurePath object would be invalid anyways as the PurePath (being of a
different platform) cannot be representing a valid path.

Thoughts?

Antony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160715/16a800ee/attachment.html>


More information about the Python-ideas mailing list