Python's Filesystem abstraction layer
fs.zipfs._ZipExtFile
use the seeking mechanism implemented
in the Python standard library in Python version 3.7 and later
(#527).fs.zipfs.ReadZipFS
as a case-sensitive filesystem
(#527).fs.move.move_file
to clean up the copy on the destination in case of errors.fs.opener.manage_fs
with writeable=True
will now raise a ResourceReadOnly
exception if the managed filesystem is not writeable.fs.wrap.WrapReadOnly
as read-only.MemoryFS.move
and MemoryFS.movedir
not updating the name of moved
resources, causing MemoryFS.scandir
to use the old name.
(#510).
Closes #509.WrapFS.move
and WrapFS.movedir
use the delegate FS methods instead
of fs.move
functions, which was causing optimized implementation of
movedir
to be always skipped.
(#511).fs.copy.copy_file_if
, fs.copy.copy_dir_if
, and fs.copy.copy_fs_if
. Closes #458.fs.base.FS.getmodified
.fs.copy.copy_dir_if_newer
. Test cases were adapted to catch those bugs in the future.fs.OSFS.setinfo
.PathError
now supports wrapping an exception using the exc
argument.
Closes #453.writable
parameter of fs.open_fs
, and
hint about using fs.wrap.read_only
when a read-only filesystem is
required. Closes #441.FS.upload
explicit about the expected error when the parent directory of the destination does not exist.
Closes #445.pytest
to run tests, allowing any test runner supporting unittest
-style
test suites.FSTestCases
now builds the large data required for upload
and download
tests only
once in order to reduce the total testing time.MemoryFS.move
and MemoryFS.movedir
will now avoid copying data.
Closes #452.FS.removetree("/")
behaviour has been standardized in all filesystems, and
is expected to clear the contents of the root folder without deleting it.
Closes #471.FS.getbasic
is now deprecated, as it is redundant with FS.getinfo
,
and FS.getinfo
is now explicitly expected to return the basic info
namespace unconditionally. Closes #469.FTPFile
, MemoryFile
and RawWrapper
accept array.array
arguments for the write
and writelines
methods, as expected by their base class io.RawIOBase
.MemoryFS
docstring not rendering properly.FTPFS.upload
. Closes #455.WrapReadOnly.removetree
not raising a ResourceReadOnly
when called. Closes #468.WrapCachedDir.isdir
and WrapCachedDir.isfile
raising a ResourceNotFound
error on non-existing path (#470).FTPFS
not listing certain entries with sticky/SUID/SGID permissions set by Linux server (#473).
Closes #451.scandir
iterator not being closed explicitly in OSFS.scandir
, occasionally causing a ResourceWarning
to be thrown. Closes #311.temp_fs
parameter of WriteTarFS
and WriteZipFS
.
Closes #410.mode
attribute to _MemoryFile
objects returned by MemoryFS.openbin
.readinto
method for MemoryFS
and FTPFS
file objects. Closes
#380.LIST
command with 24-hour times. Closes #438.conftest.py
is present, fixes #364.sendfile
.Mode.to_platform_bin
. Closes #382.FTPFS.openbin
not implicitly opening files in binary mode like expected
from openbin
. Closes #406.collections
which would break on Python 3.8mock
on Python 3requirements.txt
fileerrno.ENOTSUP
on PyPy. Closes #338.AttributeError
when a class
was created that implemented a deprecated method and had no docstring of its
own.MemFS
now immediately releases all memory it holds when close()
is called,
rather than when it gets garbage collected. Closes issue #308.FTPFS
now translates EOFError
into RemoteConnectionError
. Closes #292