Releases: chrisjbillington/inotify_simple
1.3.3
1.3.2
- Fix failure to install on Python 2 if enum34 not already installed
1.3.1
- Resolves an issue causing an
OSError
in the case of a blocking read.
1.3.0
- Switch to using
inotify_init1()
and addinheritable
andnonblocking
keyword arguments toINotify
, which control theIN_CLOEXEC
andIN_NONBLOCK
bits of the flags passed toinotify_init1()
. Default toinheritable=False
, which is in line with the Python standard library's behaviour for all file descriptors it opens. - Make the
delay
argument passed toINotify.read()
only delay reading if there were no events to read initially, rather than unconditionally. An unconditional delay can rate limit a program that is struggling to keep up with events, which is undesirable. INotify()
now subclassesio.FileIO
, which simplifies things a bit -INotify.close()
for example is inherited rather than implemented in theINotify()
class.INotify.fd
is now just an alias for the inheritedINotify.fileno()
.- Restructure module layout to a single
.py
file instead of a package - Code simplifications.
This release is backwards compatible with previous releases.
Bugfix release
Fix installation error on non UTF8 systems (issue #13)
1.2.0
INotify()
class is now more file-like. .close()
is idempotent, and it has a .fileno()
method enabling it to be used directly with select.select()
and similar functions.
Bugfix release
Defer loading of libc until instantiation of an INotify object, so that errors loading it occur there instead of at import time.
1.1.7
Bugfix release - allow use of pathlib module but do not require it.
1.1.6
Bugfix release allowing use of pathlib.Path objects on python < 3.6
1.1.1
- Use
os.fsencode
andos.fsdecode()
for filepath encoding/decoding in Python 3 - Do not decode the 'name' field of events in Python 2, and only encode unicode strings passed to
add_watch()
, not strings that are already bytestrings.
These two changes allow inotify_simple
to handle filepaths that might not respect the filesystem encoding. In Python 2, leaving everything as bytes mean we don't care about encoding at all. In Python 3, using os.fsencode()
and os.fsdecode()
, which use the surrogateescape
error handler, allows incorrectly encoded filepaths to make the decode/encode round-trip unchanged. All standard library functions that encode or decode filepaths do so in this way, so filepaths returned by a standard library calls can be passed to add_watch()
, with correct behaviour even if the filepath was incorrectly encoded on the filesystem.