From 2eb5b0fe2cffa7255807c7af14c054ecb0b13faf Mon Sep 17 00:00:00 2001 From: Kit Yan Choi Date: Fri, 4 Mar 2016 15:27:23 +0000 Subject: [PATCH 1/2] let built-in open function handle its input --- apptools/persistence/state_pickler.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/apptools/persistence/state_pickler.py b/apptools/persistence/state_pickler.py index ce48de921..aed0bdcb2 100644 --- a/apptools/persistence/state_pickler.py +++ b/apptools/persistence/state_pickler.py @@ -918,18 +918,14 @@ def _do_dict(self, obj, state): def _get_file_read(f): if hasattr(f, 'read'): return f - elif isinstance(f, str): - return open(f, 'rb') else: - raise TypeError('Given object is neither a file or String') + return open(f, 'rb') def _get_file_write(f): if hasattr(f, 'write'): return f - elif isinstance(f, str): - return open(f, 'wb') else: - raise TypeError('Given object is neither a file or String') + return open(f, 'wb') ###################################################################### From 7da420a6f413f005f298705d5a7e15e627a06fa4 Mon Sep 17 00:00:00 2001 From: Kit Yan Choi Date: Fri, 4 Mar 2016 15:28:02 +0000 Subject: [PATCH 2/2] added test for dump with str as the input for `file` --- apptools/persistence/tests/test_state_pickler.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apptools/persistence/tests/test_state_pickler.py b/apptools/persistence/tests/test_state_pickler.py index 98922a530..70bf42573 100644 --- a/apptools/persistence/tests/test_state_pickler.py +++ b/apptools/persistence/tests/test_state_pickler.py @@ -8,6 +8,8 @@ import base64 import unittest import math +import os +import tempfile import numpy @@ -450,6 +452,17 @@ def __getstate__(self): s = state_pickler.get_state(b) self.assertEqual(s.a, 'dict') + def test_dump_to_file_str(self): + """Test if dump can take a str as file""" + obj = A() + + filepath = os.path.join(tempfile.gettempdir(), "tmp.file") + + try: + state_pickler.dump(obj, filepath) + finally: + os.remove(filepath) + if __name__ == "__main__": unittest.main()