1 new commit in py: https://bitbucket.org/hpk42/py/commits/ca27187c337d/ Changeset: ca27187c337d User: hpk42 Date: 2014-09-03 15:41:35 Summary: implement text/bytes variants for local paths Affected #: 4 files
diff -r 764221efcef5bbc004e0e7f68ee5230dfa7168dc -r ca27187c337d018186012ceb340d178a8adb893b CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,13 @@ -1.4.24 +1.4.24.dev ================================================== - Fix retrieving source when an else: line has an other statement on the same line. +- add localpath read_text/write_text/read_bytes/write_bytes methods + as shortcuts and clearer bytes/text interfaces for read/write. + Adapted from a PR from Paul Moore. + 1.4.23 ================================================== diff -r 764221efcef5bbc004e0e7f68ee5230dfa7168dc -r ca27187c337d018186012ceb340d178a8adb893b py/_path/common.py --- a/py/_path/common.py +++ b/py/_path/common.py @@ -117,31 +117,19 @@ def read_binary(self): """ read and return a bytestring from reading the path. """ - f = self.open('rb') - try: + with self.open('rb') as f: return f.read() - finally: - f.close() - def read_text(self, encoding=None): + def read_text(self, encoding="utf8"): """ read and return a Unicode string from reading the path. """ - f = self.open('r', encoding=encoding) - try: + with self.open("r", encoding=encoding) as f: return f.read() - finally: - f.close() + def read(self, mode='r'): """ read and return a bytestring from reading the path. """ - if sys.version_info < (2,3): - for x in 'u', 'U': - if x in mode: - mode = mode.replace(x, '') - f = self.open(mode) - try: + with self.open(mode) as f: return f.read() - finally: - f.close() def readlines(self, cr=1): """ read and return a list of lines from the path. if cr is False, the diff -r 764221efcef5bbc004e0e7f68ee5230dfa7168dc -r ca27187c337d018186012ceb340d178a8adb893b py/_path/local.py --- a/py/_path/local.py +++ b/py/_path/local.py @@ -442,23 +442,17 @@ """ if ensure: self.dirpath().ensure(dir=1) - f = self.open('wb') - try: + with self.open('wb') as f: f.write(data) - finally: - f.close() - def write_text(self, data, ensure=False, encoding=None): - """ write binary data into path. If ensure is True create - missing parent directories. + def write_text(self, data, encoding="utf8", ensure=False): + """ write text data into path using the specified encoding. + If ensure is True create missing parent directories. """ if ensure: self.dirpath().ensure(dir=1) - f = self.open('w', encoding=encoding) - try: + with self.open('w', encoding=encoding) as f: f.write(data) - finally: - f.close() def write(self, data, mode='w', ensure=False): """ write data into path. If ensure is True create diff -r 764221efcef5bbc004e0e7f68ee5230dfa7168dc -r ca27187c337d018186012ceb340d178a8adb893b testing/path/test_local.py --- a/testing/path/test_local.py +++ b/testing/path/test_local.py @@ -808,7 +808,10 @@ part_utf8 = part.encode("utf8") x.write_binary(part_utf8) assert x.read_binary() == part_utf8 - assert x.read_text(encoding="utf8") == part + s = x.read_text(encoding="utf8") + assert s == part + assert py.builtin._istext(s) + def test_read_textwrite(self, tmpdir): x = tmpdir.join("hello") part = py.builtin._totext("hällo", "utf8") @@ -816,9 +819,12 @@ x.write_text(part, encoding="utf8") assert x.read_binary() == part_utf8 assert x.read_text(encoding="utf8") == part + def test_default_encoding(self, tmpdir): x = tmpdir.join("hello") # Can't use UTF8 as the default encoding (ASCII) doesn't support it part = py.builtin._totext("hello", "ascii") x.write_text(part) - assert x.read_text() == part + s = x.read_text() + assert s == part + assert type(s) == type(part) Repository URL: https://bitbucket.org/hpk42/py/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit