diff options
author | Arthur Zamarin <arthurzam@gentoo.org> | 2022-09-24 22:15:13 +0300 |
---|---|---|
committer | Arthur Zamarin <arthurzam@gentoo.org> | 2022-09-24 22:15:13 +0300 |
commit | 2fda2c8663933ac1c860767a7fa439e851b77017 (patch) | |
tree | 61418362024e2b705b4ba4a4eccd24d957406e85 | |
parent | test/mixins: remove `mk_named_tempfile` (diff) | |
download | snakeoil-2fda2c8663933ac1c860767a7fa439e851b77017.tar.gz snakeoil-2fda2c8663933ac1c860767a7fa439e851b77017.tar.bz2 snakeoil-2fda2c8663933ac1c860767a7fa439e851b77017.zip |
fileutils: remove deprecated `write_file`
Last usage was removed, so we can remove the function as well. In most
cases, like tests, you can use `Path.write_text` or `Path.write_bytes`
instead. If not in tests, just use `open` and `write`.
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
-rw-r--r-- | src/snakeoil/data_source.py | 4 | ||||
-rw-r--r-- | src/snakeoil/fileutils.py | 15 | ||||
-rw-r--r-- | tests/test_fileutils.py | 37 | ||||
-rw-r--r-- | tests/test_osutils.py | 4 |
4 files changed, 19 insertions, 41 deletions
diff --git a/src/snakeoil/data_source.py b/src/snakeoil/data_source.py index ea85ec72..8b9cf72b 100644 --- a/src/snakeoil/data_source.py +++ b/src/snakeoil/data_source.py @@ -456,7 +456,5 @@ class invokable_data_source(data_source): def transfer_between_files(read_file, write_file, bufsize=(32 * 1024)): - data = read_file.read(bufsize) - while data: + while data := read_file.read(bufsize): write_file.write(data) - data = read_file.read(bufsize) diff --git a/src/snakeoil/fileutils.py b/src/snakeoil/fileutils.py index 7d79a25b..2f9da9a3 100644 --- a/src/snakeoil/fileutils.py +++ b/src/snakeoil/fileutils.py @@ -2,7 +2,7 @@ file related operations, mainly reading """ -__all__ = ("AtomicWriteFile", 'write_file', 'UnbufferedWriteHandle', 'touch') +__all__ = ("AtomicWriteFile", 'UnbufferedWriteHandle', 'touch') types = [""] + list("_%s" % x for x in ("ascii", "utf8")) __all__ += tuple("readfile%s" % x for x in types) + tuple("readlines%s" % x for x in types) del types @@ -36,19 +36,6 @@ def touch(fname, mode=0o644, **kwargs): f.fileno() if os.utime in os.supports_fd else fname, dir_fd=None if os.supports_fd else dir_fd, **kwargs) - -def write_file(path, mode, stream, encoding=None): - f = None - try: - f = open(path, mode, encoding=encoding) - if isinstance(stream, (str, bytes)): - stream = [stream] - for data in stream: - f.write(data) - finally: - if f is not None: - f.close() - def mmap_or_open_for_read(path): size = os.stat(path).st_size if size == 0: diff --git a/tests/test_fileutils.py b/tests/test_fileutils.py index 9f63df56..a4555f89 100644 --- a/tests/test_fileutils.py +++ b/tests/test_fileutils.py @@ -8,7 +8,7 @@ pjoin = os.path.join import pytest from snakeoil import _fileutils, currying, fileutils -from snakeoil.fileutils import AtomicWriteFile, write_file +from snakeoil.fileutils import AtomicWriteFile from snakeoil.test import random_str @@ -70,8 +70,7 @@ class TestAtomicWriteFile: kls = AtomicWriteFile def test_normal_ops(self, tmp_path): - fp = tmp_path / "target" - write_file(fp, "w", "me") + (fp := tmp_path / "target").write_text("me") af = self.kls(fp) af.write("dar") assert fileutils.readfile_ascii(fp) == "me" @@ -91,8 +90,7 @@ class TestAtomicWriteFile: assert os.stat(fp).st_mode & 0o4777 == 0o644 def test_del(self, tmp_path): - fp = tmp_path / "target" - write_file(fp, "w", "me") + (fp := tmp_path / "target").write_text("me") assert fileutils.readfile_ascii(fp) == "me" af = self.kls(fp) af.write("dar") @@ -108,8 +106,7 @@ class TestAtomicWriteFile: af.close() def test_discard(self, tmp_path): - fp = tmp_path / "target" - write_file(fp, "w", "me") + (fp := tmp_path / "target").write_text("me") assert fileutils.readfile_ascii(fp) == "me" af = self.kls(fp) af.write("dar") @@ -160,7 +157,7 @@ class Test_readfile: if expected[1] is not None: encoding = expected[1] expected = expected[0] - write_file(fp, 'wb', self.convert_data(expected, encoding)) + fp.write_bytes(self.convert_data(expected, encoding)) if raised: with pytest.raises(raised): self.assertFunc(fp, expected) @@ -175,7 +172,7 @@ class Test_readfile: with pytest.raises(FileNotFoundError): self.func(fp) assert self.func(fp, True) is None - write_file(fp, 'wb', self.convert_data('dar', 'ascii')) + fp.write_bytes(self.convert_data('dar', 'ascii')) assert self.func(fp, True) == self.none_on_missing_ret_data # ensure it handles paths that go through files- @@ -220,14 +217,14 @@ class readlines_mixin: with pytest.raises(FileNotFoundError): self.func(fp) assert not tuple(self.func(fp, False, True)) - write_file(fp, 'wb', self.convert_data('dar', 'ascii')) + fp.write_bytes(self.convert_data('dar', 'ascii')) assert tuple(self.func(fp, True)) == (self.none_on_missing_ret_data,) assert not tuple(self.func(fp / 'missing', False, True)) def test_strip_whitespace(self, tmp_path): fp = tmp_path / 'data' - write_file(fp, 'wb', self.convert_data(' dar1 \ndar2 \n dar3\n', + fp.write_bytes(self.convert_data(' dar1 \ndar2 \n dar3\n', 'ascii')) results = tuple(self.func(fp, True)) expected = ('dar1', 'dar2', 'dar3') @@ -236,28 +233,28 @@ class readlines_mixin: assert results == expected # this time without the trailing newline... - write_file(fp, 'wb', self.convert_data(' dar1 \ndar2 \n dar3', + fp.write_bytes(self.convert_data(' dar1 \ndar2 \n dar3', 'ascii')) results = tuple(self.func(fp, True)) assert results == expected # test a couple of edgecases; underly c extension has gotten these # wrong before. - write_file(fp, 'wb', self.convert_data('0', 'ascii')) + fp.write_bytes(self.convert_data('0', 'ascii')) results = tuple(self.func(fp, True)) expected = ('0',) if self.encoding_mode == 'bytes': expected = tuple(x.encode("ascii") for x in expected) assert results == expected - write_file(fp, 'wb', self.convert_data('0\n', 'ascii')) + fp.write_bytes(self.convert_data('0\n', 'ascii')) results = tuple(self.func(fp, True)) expected = ('0',) if self.encoding_mode == 'bytes': expected = tuple(x.encode("ascii") for x in expected) assert results == expected - write_file(fp, 'wb', self.convert_data('0 ', 'ascii')) + fp.write_bytes(self.convert_data('0 ', 'ascii')) results = tuple(self.func(fp, True)) expected = ('0',) if self.encoding_mode == 'bytes': @@ -316,16 +313,14 @@ class Test_mmap_or_open_for_read: func = staticmethod(fileutils.mmap_or_open_for_read) def test_zero_length(self, tmp_path): - path = tmp_path / 'target' - write_file(path, 'w', '') + (path := tmp_path / "target").write_text('') m, f = self.func(path) assert m is None assert f.read() == b'' f.close() def test_mmap(self, tmp_path, data=b'foonani'): - path = tmp_path / 'target' - write_file(path, 'wb', data) + (path := tmp_path / "target").write_bytes(data) m, f = self.func(path) assert len(m) == len(data) assert m.read(len(data)) == data @@ -336,9 +331,7 @@ class Test_mmap_or_open_for_read: class Test_mmap_and_close: def test_it(self, tmp_path): - path = tmp_path / 'target' - data = b'asdfasdf' - write_file(path, 'wb', [data]) + (path := tmp_path / "target").write_bytes(data := b'asdfasdf') fd, m = None, None try: fd = os.open(path, os.O_RDONLY) diff --git a/tests/test_osutils.py b/tests/test_osutils.py index e56d3ab3..18092823 100644 --- a/tests/test_osutils.py +++ b/tests/test_osutils.py @@ -10,7 +10,7 @@ from unittest import mock import pytest from snakeoil import osutils from snakeoil.contexts import Namespace -from snakeoil.fileutils import touch, write_file +from snakeoil.fileutils import touch from snakeoil.osutils import native_readdir, supported_systems, sizeof_fmt from snakeoil.osutils.mount import MNT_DETACH, MS_BIND, mount, umount @@ -272,7 +272,7 @@ class Test_unlink_if_exists: f = self.func path = tmp_path / 'target' f(path) - write_file(path, 'w', '') + path.write_text('') f(path) assert not path.exists() # and once more for good measure... |