Thread-based interface to file system observation primitives.
Project description
Overview
MacFSEvents is a Python library that provides thread-safe directory observation primitives using callbacks. It wraps the Mac OS X FSEvents API in a C-extension.
Requirements:
Mac OS X 10.5+ (Leopard)
This software was written by Malthe Borch <mborch@gmail.com>. The pyfsevents module by Nicolas Dumazet was used for reference.
Why?
At this time of writing there are three other libraries that integrate with the FSEvents API:
pyobjc-framework-FSEvents
These use the PyObjC bridge infrastructure which most applications do not need.
pyfsevents
Not thread-safe (API is not designed to support it).
fsevents
Obsolete bindings to the socket API by John Sutherland.
These issues have been addressed in MacFSEvents. The library provides a clean API and has full test coverage.
Note that pyfsevents has code to support the observation of file descriptors. This functionality is on the to-do list.
License
Made available as-is under the BSD License.
Usage
To observe a directory structure (recursively) under path, we set up an observer thread and schedule an event stream:
from fsevents import Observer observer = Observer() observer.start() def callback(subpath, mask): ... from fsevents import Stream stream = Stream(callback, path) observer.schedule(stream)
To start the observer in its own thread, use the start method:
observer.starts()
To start the observer in the current thread, use the run method (it will block the thread until stopped from another thread):
observer.run()
The callback function will be called when an event occurs. The subpath parameter contains the path at which the event happened (may be a subdirectory) while mask parameter is the event mask [1].
To stop observation, simply unschedule the stream and stop the observer:
observer.unschedule(stream) observer.stop()
While the observer thread will automatically join your main thread at this point, it doesn’t hurt to be explicit about this:
observer.join()
Changelog
0.1 (2000-11-27)
Initial public release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.