Skip to content
Choose a tag to compare

Minor release:

  • Expand testing by adding better mixed-access checks (e.g. set via symlink and read on file) and by not leaking resources during tests.
  • Enable testing with Python 3.9 and confirm compatibility with it.
  • Fix documentation building with Sphinx 3.0+.
Choose a tag to compare

Major change: drop compatibility with Python 2, which allows significant
code cleanups.

Other changes:

  • 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 get_all (#17).
  • 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.

Choose a tag to compare

Minor bugfix, performance and compatibility release.

  • Minor compatibility fix: on Linux, drop the use of the attr library,
    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
    header attr/xattr.h has been removed from the attr library in
    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).
Choose a tag to compare

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.

Choose a tag to compare

Small bugfix release:

  • Fixes some sign-compare warnings
  • Fixes potential name truncation in merge_ns()
  • Fixes building on systems which don't have ENODATA

Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1.

Choose a tag to compare

Bugfix release:

  • 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,; 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)
Choose a tag to compare

Fix memory leaks on some of the error-handling paths of the get()

Choose a tag to compare

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