Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion src/sage/misc/persist.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,16 @@ def load(*filename, compress=True, verbose=True, **kwargs):
sage: load(t) # needs numpy
sage: hello # needs numpy
<fortran ...>

Path objects are supported::

sage: from pathlib import Path
sage: import tempfile
sage: with tempfile.TemporaryDirectory() as d:
....: p = Path(d) / "test_path"
....: save(1, p)
....: load(p)
1
"""
import sage.repl.load
if len(filename) != 1:
Expand All @@ -172,6 +182,9 @@ def load(*filename, compress=True, verbose=True, **kwargs):
return

filename = filename[0]
# ensure that filename is a string
if not isinstance(filename, str):
filename = os.fspath(filename)

if sage.repl.load.is_loadable_filename(filename):
sage.repl.load.load(filename, globals())
Expand Down Expand Up @@ -213,7 +226,9 @@ def _base_save(obj, filename, compress=True):
Otherwise this is equivalent to :func:`_base_dumps` just with the resulting
pickle data saved to a ``.sobj`` file.
"""

# ensure that filename is a string
if not isinstance(filename, str):
filename = os.fspath(filename)
filename = _normalize_filename(filename)

with open(filename, 'wb') as fobj:
Expand Down Expand Up @@ -278,7 +293,20 @@ def save(obj, filename, compress=True, **kwargs):
....: save((1,1), f.name)
....: load(f.name)
(1, 1)

Check that Path objects work::

sage: from pathlib import Path
sage: import tempfile
sage: with tempfile.TemporaryDirectory() as d:
....: p = Path(d) / "test_path"
....: save(1, p)
....: load(p)
1
"""
# ensure that filename is a string
if not isinstance(filename, str):
filename = os.fspath(filename)

if not os.path.splitext(filename)[1] or not hasattr(obj, 'save'):
filename = _normalize_filename(filename)
Expand Down
Loading