Major change: drop compatibility with Python 2, which allows significant
- Switch internal implementation of argument parsing to a built-in one
PyUnicode_FSConverter), which brings automatic support for
path-like objects in Python 3.6+ (#20), and also a more uniform
handling of Unicode path arguments with respect to other Python code.
- Fix missing error check in list operations in
- Switch test library to pytest; not that a reasonable recent version is
needed. Additionally, expand test coverage, although not directly
visible in actual coverage reports…
Version 0.7.1 is just 0.7.0 (the above changes) plus a minor typo fix.
Minor bugfix, performance and compatibility release.
- Minor compatibility fix: on Linux, drop the use of the
and instead switch to the glibc header
sys/xattr.h, which is
provided for a really long time (since glibc 2.3). The formerly used
attr/xattr.hhas been removed from the
version 2.4.48. Fix provided by Lars Wendler, many thanks!
- Release the GIL when performing I/O. Patch proposed by xwhuang, many
thanks. I tested this a long while back it seemed to impact
performance on local filesystems, but upon further inspection, the
downsides are minor (between 0 and 5%, in many cases negligible). For
remote or slow filesystems, this should allow much increased
- Fix symlink set operation on MacOS X; bugfix provided by adamlin, much
appreciated! This also uncovered testing problems related to symlinks,
which are now fixed (the bug would be caught by the updated tests).
Bugfix and feature release (hence the version bump).
The main change is to the implementation of how attributes are listed and read. This was done due to existing race issues when attributes are modified while being read (github issue #12), but basically all various internal paths that dealt with retrieving an attribute value or listing attributes were unified in a single helper function that does handle such concurrent modifications. As a side effect, the size of the buffers used for such reads have changed, which (depending on attribute value) might change the trade-off between number of syscalls done and memory usage.
As feature release, OSX support was contributed by Adam Knight, thanks a lot! I don't have access to OSX so the testing for it is done via Travis builds; please report any issues.
Small bugfix release:
- Fixes some sign-compare warnings
- Fixes potential name truncation in
- Fixes building on systems which don't have
Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1.
- fixes some more memory leaks when handling out-of-memory in get_all()
- improve error reporting when an attribute disappears after we asked
for its length but before we managed to read it
- fix int/size_t issues found by RedHat/Fedora,
https://bugzilla.redhat.com/show_bug.cgi?id=1127310; the fix is
different than their fix, but it should accomplish the same thing
- convert all code to only do explicit casts after checking boundaries,
making the code
-Wconversion-clean (although that warning is not
enabled by default)
Small optimisations release:
- ari edelkind (@edelkind) contributed a speed-up optimisation for handling of files
without xattrs (which is, in general, the expected case)
- Jonas Borgström (@jborg) contributed a behaviour change to the handling of file
names: under Python 3 and up, unicode paths are encoded/decoded using
the 'surogatee' handler, instead of the 'strict' handler; while this
can hide encoding errors, it mirrors what Python libraries do
(e.g. see os.fsencode/fsdecode)
- Sean Patrick Santos (@quantheory) contributed improvements to the test suite so that
it can be used even on files systems which have built-in attributes
(e.g. when using SELinux, or NFSv4); to enable this, define the
attributes in the TEST_IGNORE_XATTRS environment variable