diff options
Diffstat (limited to 'old')
-rw-r--r-- | old/ChangeLog | 410 | ||||
-rw-r--r-- | old/NEWS | 281 |
2 files changed, 691 insertions, 0 deletions
diff --git a/old/ChangeLog b/old/ChangeLog new file mode 100644 index 0000000..e5cbc4f --- /dev/null +++ b/old/ChangeLog @@ -0,0 +1,410 @@ +2008-03-31 ookoi <ookoi@mars> + + * ChangeLog is now maintained directly with git: + See http://git.dbzteam.org/?p=pyinotify.git;a=log;h=HEAD + +2008-03-24 ookoi <ookoi@sundae> + + * Simulate IN_CREATE events on mkdir -p /d1/d2/[...]. + Contributed by Thomas Kiley (tkiley@cs.uml.edu). + + * Notifier.loop() accepts a read_freq parameter. + + * Can detach and daemonize Notifier instances. + + * Delegates initialization to my_init(*kargs) when a subclass + of ProcessEvent is instanciated. + + * Provides processing class and new option -s for displaying + statistics about received events. + + * Implements simplified watch of transient files. + + * select.Poll timeout's value changed to None when called from + Notifier and set to 10s when called from ThreadedNotifier. + + * Removed useless locking stuff from Watch. + + * Removed all trailing whitespaces. + + * Notifier provides a loop() method. + + * ProcessEvent instances can be chained. + + * Events names are directly accessible at pyinotify's scope. + + * Optionnaly load psyco. + + * New attribute 'pathname' in Event class. + + * print statements removed. Use logging module for debug messages + and errors. + + * Implemented better representation __repr__ for classes Event and + Watch. + + * Merged all .py files into pyinotify.py + + * Namespace limited to pyinotify. + + * Use ctypes instead of C code. + +2007-07-10 ookoi <ookoi@sundae> + + * License of pyinotify 0.7.1 updated: GPLv2 or later. pyinotify-dev + still remains GPLv2 only. + + * version 0.7.1 released. + +2007-06-26 ookoi <ookoi@sundae> + + * src/pyinotify/pyinotify.py: reworking of EventsCodes (contributed + by Darryl Dixon - darryl.dixon@winterhouseconsulting.com). + + * src/pyinotify/pyinotify.py: new -e command line option (contributed + by Darryl Dixon - darryl.dixon@winterhouseconsulting.com). + +2007-06-17 ookoi <ookoi@mars> + + * src/pyinotify/inotify_syscalls.h: support hppa and mc68000. + (submitted by Mikhail Gusarov - dottedmag@dottedmag.net). + +2007-02-17 ookoi <ookoi@mars> + + * version 0.7.0 released. + + * src/example/close.py: fix import statement. + + * src/pyinotify/pyinotify.py: raise OSError when inotify_init() + fails (idea contributed by Mattias Wadman - mattias.wadman@gmail.com). + + * src/pyinotify/pyinotify.py: checks exception on polling + (contributed by Mattias Wadman - mattias.wadman@gmail.com). + + * src/pyinotify/pyinotify.py: add_watch: by default do not make + globbing (contributed by Mattias Wadman - mattias.wadman@gmail.com). + + * src/pyinotify/pyinotify.py: print errors only when verbose mode + is set. + + * src/pyinotify/iglob.py: fix compatibility with Python 2.3 + (contributed by Robin Wittler - r.wittler@buetow.org). + +2006-11-03 ookoi <ookoi@mars> + + * version 0.6.3 released. + +2006-10-25 ookoi <ookoi@mars> + + * src/pyinotify/pyinotify.py: fix mkdir -p foo/bar/bar.txt with + auto_add (fix contributed by Will Muldrew - will.muldrew@gmail.com). + + +2006-09-04 ookoi <ookoi@mars> + + * version 0.6.2 released. + + * src/pyinotify/iglob.py: added. + + * src/pyinotify/pyinotify.py: add_watch supports unix pathname pattern + expansion (see http://www.python.org/doc/lib/module-glob.html). + +2006-07-20 ookoi <ookoi@mars> + + * version 0.6.1 released. + + * src/examples/pyinotifyfs/*: added. + +2006-04-30 ookoi <ookoi@mars> + + * version 0.6.0 released. + + * src/pyinotify/pyinotify.py: replace select by poll. + + * src/pyinotify/pyinotify.py: get event queue size (call ioctl). + +2006-04-24 ookoi <ookoi@chocopops> + + * src/tests/colorize.py: added. + + * src/tests/coverage.py: added. + + * src/tests/testcoverage.py: added. + +2006-04-09 ookoi <ookoi@chocopops> + + * src/pyinotify/pyinotify.py: function _print_err added. + + * src/pyinotify/pyinotify.py: new command lines option -a. + + * src/examples/rec.py: deprecated. + + * src/pyinotify/pyinotify.py: add_watch, update_watch, support + option auto_add. + + * src/pyinotify/pyinotify.py: DEBUG renamed to VERBOSE. + +2006-04-06 ookoi <ookoi@chocopops> + + * src/tests/TestThreadedNotifier.py: updated. + + * src/tests/TestThreadedINotify.py: renamed to TestThreadedNotifier.py + +2006-04-05 ookoi <ookoi@chocopops> + + * src/pyinotify/pyinotify.py: new command lines options (-v, -r). + + * src/pyinotify/pyinotify.py: Watch, WatchManager added. + + * src/pyinotify/pyinotify.py: NotifierError, Notifier, + ThreadedNotifier added. + + * src/pyinotify/pyinotify.py: _ProcessEvent, _SysProcessEvent added, + ProcessEvent modified. + + + * src/pyinotify/pyinotify.py: ProcessEventException renamed to + ProcessEventError. + + * src/pyinotify/pyinotify.py: _Event, _RawEvent added, Event modified. + + * src/pyinotify/pyinotify.py: Queue renamed to _Queue. + + * src/pyinotify/pyinotify.py: support IN_ONLYDIR, IN_DONT_FOLLOW, + IN_MASK_ADD. + + * src/pyinotify/pyinotify.py: SimpleINotify, ThreadedINotify, + INotifyException removed. + + * src/pyinotify/pyinotify.py: major rewrite. + +2006-03-30 ookoi <ookoi@X2> + + * src/pyinotify/pyinotify.py: support for EventsCodes.IN_MOVE_SELF + flag added. + +2006-03-29 ookoi <ookoi@X2> + + * version 0.5.2 released. + + * src/pyinotify/inotify_syscalls.h: defines for mips, sh64, + frv and parisc added. + +2006-03-27 ookoi <ookoi@X2> + + * version 0.5.1 released. + +2006-03-16 ookoi <ookoi@X2> + + * src/pyinotify/inotify.py: olds inotify's paths supported. + + * src/pyinotify/pyinotify.py: event_check accepts a timeout + parameter (submitted by Hans Ulrich Niedermann - + debian@n-dimensional.de). + +2006-03-02 ookoi <ookoi@X2> + + * version 0.5.0 released. + +2006-02-22 ookoi <ookoi@X2> + + * src/pyinotify-demo.py: re-merged with src/pyinotify/pyinotify.py + + * src/pyinotify/__init__.py: now empty. + +2006-02-16 ookoi <ookoi@X2> + + * src/pyinotify/inotify.py: documented. + +2006-02-13 ookoi <ookoi@X2> + + * src/tests/testThreadedINotify.py: renamed to TestThreadedINotify.py. + + * src/tests/TestProcINotify.py: added. + + * src/pyinotify/inotify.py: added. + + * src/pyinotify/inotify_wrap.c: renamed to inotify.c. + +2006-02-09 ookoi <ookoi@X2> + + * version 0.4.5 released. + + * src/pyinotify/pyinotify.py: separated in + src/pyinotify/pyinotify.py and src/pyinotify-demo.py. + (proposed by Hans Ulrich Niedermann - debian@n-dimensional.de) + + * Makefile: new clean rule. (Hans Ulrich Niedermann - + debian@n-dimensional.de) + + * src/inotify* src/pyinotify.py: moved to src/pyinotify/ + (proposed by Hans Ulrich Niedermann - debian@n-dimensional.de) + +2006-02-09 ookoi <ookoi@X2> + + * version 0.4.4 released. + + * setup.py: install_lib cmd removes old components. + +2006-02-08 ookoi <ookoi@X2> + + * version 0.4.3 released. + + * src/tests/testThreadedINotify.py: can directly import pyinotify. + + * src/examples/*.py: can directly import pyinotify. + +2006-02-06 ookoi <ookoi@X2> + + * version 0.4.2 released. + + * setup.py: installs files in a subdir. + + * src/pyinotify.py: defines __all__ + +2006-02-06 ookoi <ookoi@X2> + + * version 0.4.1 released. + + * examples/, tests/: moved in src/ + +2006-02-05 ookoi <ookoi@X2> + + * version 0.4.0 released. + +2006-02-03 ookoi <ookoi@X2> + + * tests/simple.py, tests/generate.sh, tests/threaded.py: removed. + + * tests/testThreadedINotify.py: added. + +2006-02-02 ookoi <ookoi@X2> + + * src/pyinotify.py: update_watch, rm_watch only accept wd or list + of wd. + + * src/pyinotify.py: add_watch, update_watch, rm_watch return dict. + +2006-01-12 ookoi <ookoi@X2> + + * version 0.3.3 released. + +2006-01-09 ookoi <ookoi@X2> + + * src/pyinotify.py: fix add watch on symbolic link with rec=True. + +2006-01-04 ookoi <ookoi@X2> + + * version 0.3.2 released. + + * examples/rec.py, examples/threaded_rec.py: added. + +2005-12-30 ookoi <ookoi@X2> + + * version 0.3.1 released. + + * src/pyinotify.py: class attribute 'length' removed from Event. + +2005-12-28 ookoi <ookoi@X2> + + * version 0.3.0 released. + + * src/inotify_wrap.c: doesn't wrap original exception. (thanks to + Frédéric PICA) + + * src/pyinotify.py: update_watch(), rm_watch(), add_watch() updated + in SimpleINotify, rm_watch() returns list of wd removed. + + * src/pyinotify.py: get_wd(), get_path() added in SimpleINotify. + +2005-12-26 ookoi <ookoi@X2> + + * version 0.2.7 released + + * src/pyinotify.py: removes trailing null characters in Event.name + (thanks to Frédéric PICA) + +2005-12-26 ookoi <ookoi@X2> + + * version 0.2.6 released. + + * setup.py: supports commands build, clean, sdist and install. + + * autoconf, automake stuffs removed. + +2005-12-26 ookoi <ookoi@X2> + + * version 0.2.5 released. + + * src/pyinotify.py: not directly check events against IN_ISDIR, + member isdir added in Event. (thanks to Radoslaw Stachowiak) + + * src/inotify_wrap.c, src/inotify_syscalls.c: added. + + * src/: swig stuff removed. + +2005-12-24 ookoi <ookoi@X2> + + * version 0.2.4 released. + + * pyinotify.py: _wd, _mask, _cookie, _length, _path, _name, + members of class Event, renamed in wd, mask, cookie, length, + path, name. + +2005-12-24 ookoi <ookoi@X2> + + * config/, tests/, examples/: autopath.py added. + + * src/*_tests.py: moved in tests/. + + * tests/: added. + + * src/*_example.py: moved in examples/. + + * examples/: added. + +2005-12-21 ookoi <ookoi@X2> + + * version 0.2.3 released. + + * close_example.py: added. + + * pyinotify.py: support processing methods like process_IN_CLOSE. + +2005-12-20 ookoi <ookoi@X2> + + * version 0.2.2 released. + + * pyinotify.py: EventsCodes.IN_CLOSE removed. + + * pyinotify.py, simple_tests.py, threaded_tests.py: + EventsCodes.IN_ALL_EVENTS renammed to EventsCodes.ALL_EVENTS. + +2005-12-20 ookoi <ookoi@X2> + + * version 0.2.1 released. + + * pyinotify.py, simple_tests.py, threaded_tests.py: all occurrences + of 0xffffffff replaced by EventsCodes.IN_ALL_EVENTS. (thanks to + Mohamed Lrhazi) + + * pyinotify.py: EventsCodes.IN_ALL_EVENTS added. + +2005-12-16 ookoi <ookoi@X2> + + * version 0.2.0 released. + + * simple_example.py, threaded_example.py, process_example.py: added. + + * example.py: removed. + + * simple_tests.py, threaded_tests.py: added. + + * tests.py: removed. + + * pyinotify.py: INotify replaced by SimpleINotify and + ThreadedINotify (thanks to Mark Williamson - + mark.williamson@cl.cam.ac.uk for the idea). + + * pyinotify.py: removes Queue's size limitation. + diff --git a/old/NEWS b/old/NEWS new file mode 100644 index 0000000..958b69a --- /dev/null +++ b/old/NEWS @@ -0,0 +1,281 @@ +Changes are now documented on this page: +http://github.com/seb-m/pyinotify/wiki/Recent-Developments + + +Changes in version 0.8.0: +------------------------ + +* Incompatible changes with version 0.7.x + + - Dropped support for python 2.3 (supports only CPython >= 2.4) + - Changed attribute names of class Event: + * 'is_dir' becomes 'dir' + * 'event_name' becomes 'maskname' + - Altered namespace: + * Everything previously accessible under inotify.* is now accessible + under pyinotify. + - When meaningful, an event (instance of Event) brings a new + attribute 'pathname' + - Modified debugging messages: + * The VERBOSE variable is removed, and is replaced by the logging module + * Set the reporting level like this: log.setLevel(level) + * print_err(msg) replaced by log.error(msg) + - EventsCodes: + * _get_event_name(mask) replaced by get_masks(mask) + * EventsCodes.IN_* replaced by IN_* (avalaible at the pyinotify's scope) + - Notifier: + * Avoid use of ThreadedNotifier, everything can be done with Notifier + and it provides more functionalities + * Use Notifier.loop() method instead of using an infinite while loop + + + +Changes in version 0.6.2: +------------------------ + +* New features + + - Pathname pattern expansion: + Something like python -m pyinotify /tmp/[0-9]*.gif now works. + See http://www.python.org/doc/lib/module-glob.html for more details. + + + +Changes in version 0.6.0: +------------------------ + +* Incompatible changes + + List of incompatible changes in pyinotify.py: + + ------------------------------------------------------------------- +| v0.5 | Now | +|-------------------------------------------------------------------| +| i1 = SimpleINotify() | wm = WatchManager() | +| i2 = ThreadedINotify() | n1 = Notifier(wm) | +| | n2 = ThreadedNotifier(wm) | +|-------------------------------------------------------------------| +| i2.start() | n2.start() | +|-------------------------------------------------------------------| +| i1.add_watch(...) | wm.add_watch(...) | +| i2.rm_watch(...) | wm.rm_watch(...) | +|-------------------------------------------------------------------| +| i1.close() | n1.stop() | +|-------------------------------------------------------------------| +| DEBUG = True | VERBOSE = True | +|-------------------------------------------------------------------| +| event.isdir | event.is_dir | +|-------------------------------------------------------------------| +| i1.event_check() | n1.check_events() | +|-------------------------------------------------------------------| +| raise ProcessEventException(err) | raise ProcessEventError(err) | +| raise INotifyException(err) | raise NotifierError(err) | +|------------------------------------|------------------------------| +| def process_default(s,a,b): | def process_default(s,event):| +| pass | pass | + ------------------------------------------------------------------- + + +* New features + + - supported flags: IN_ONLYDIR, IN_DONT_FOLLOW, IN_MASK_ADD, + IN_MOVE_SELF + + - auto_add: if a watch is added with this flag set to true, every + new subdirectory will be automatically watched too. + + - possibility to pass one instance of your processing class to Notifier + or ThreadedNotifier and this object will be called by default for each + watch. Note, you always can give an instance to add_watch(), + update_watch(). + + +* Fixed + + - The pathname is appropriately updated in this case: + wm.add_watch('/a/') + wm.add_watch('/a/b/') + echo "bar" > /a/foo.txt + mv /a/foo.txt /a/b/foo.txt + The necessary condition is to have watches both on the source dir and + on the dst dir. + + - Ignored (deleted) watches are removed from watch manager. + + +* Pending bug + + - Consider this case: + + wm.add_watch('/a/foo.txt') # where neither /a nor /a/b are watched + mv /a/foo.txt /a/b/foo.txt + + In this case we have received IN_MOVE_SELF but we are unable to + infer the new pathname. The event IN_MOVE_SELF doesn't provide this + indication. + + Actually, the safest way to use pyinotify is to watch a top directory + (say /tmp) one we don't expect be moved, and the watched items located + in this directory should only be moved inside this directory or inside + another watched top directory (in the same device). + + Example: + wm.add_watch('/tmp', rec=True) + mv /tmp/foo/ /tmp/bar/ [safe] + mv /tmp/bar/ ~/tmp/ [unsafe] + mv /tmp /tmp-new [unsafe] + + + +Changes in version 0.5.0: +------------------------ + +* Few namespace modifications (incompatible changes) + + - pyinotfiy.inotify.* becomes inotify.* this namespace is a simple + wrap of inotify's features (3 systems calls, and 3 variables). + - pyinotify.* unchanged. This namespace handle higher developments + made on top of inotify. + - python -m pyinotify now works (no need to wait python 2.4.5 :) ) + + +* New features + + - You can read and update the followings variables (accessible through + the namespace inotify): + - max_queued_events + - max_user_instances + - max_user_watches + + + +Changes in version 0.4.0: +------------------------ + +Few things have been modified (again) to add more consistence and +reliability. Reliability: it is now easy to immediately and precisely +know if an operation failed or not, and on which path or wd. That, +without interrupting (without raising exceptions) the monitoring. +It is more consistent because once you have added a watch on a path +you keep the returned wd and use it to further update or remove this +watch, this is the natural way. Howewer, in case where you have lost +the wd and only have the path you still might retrieve the wd with +the method get_wd(path). + + +* Incompatible changes + + - add_watch returns a dictionary {path: watch_descriptor, ...} + where: + - path is the path given as argument or a subdirectory (if + rec is set to True) + - watch_descriptor is the corresponding wd, which is a + positive integer if the watch has been successfully added + or is a negative integer if it failed. + + - update_watch only accepts a wd or a list of wd. Moreover, it now + returns a dictionary {wd: success, ...} + where: + - wd is the watch directory being updated (given as argument + or retrieved by rec=True). + - success is boolean value. success is set to True is the + update succeed, False otherwise. + + - rm_watch only accepts a wd or a list of wd. Moreover, it now + returns a dictionary {wd: success, ...} see 'update_watch' + just above. + + + +Changes in version 0.3.3: +------------------------ + +* bug fix and cosmetic changes. + + + +Changes in version 0.3.1: +------------------------ + +* Incompatible changes + + - Event.length removed. + + + +Changes in version 0.3.0: +------------------------ + +This is a development version, there are many changes from 0.2.x +releases, this release must be considered as unstable. + +Most of the changes affects the SimpleINotify class. + + +* Incompatible changes + + - No more raise an INotify Exception in case where an error occurred + in the methods add_watch, update_watch, rm_watch. + + - Ignore update to an nonexistent watch. + + - Different behavior for the recursive treatment of the update_watch + method. Recursively update only existing and valid watches, doesn't + follow symlinks. + + - The method rm_watch returns a list of watch descriptor (those who + were removed). + + +* New features + + - two new methods: get_wd and get_path. The former takes a path and + returns the associated watch descriptor, the latter takes a wd and + returns a path. (returning None if the request couldn't be + satisfied) + + - add_watch accepts a list of path as well as a single path. + + - update_watch and remove_watch accept both string path and int wd + as argument. Note: that the preferred argument for update_watch + is the path whereas the preferred one for rm_watch is the wd. + + - The methods rm_watch and update_watch can recursively be applied on + theirs arguments. The symlinks aren't followed. Read also the next + section. + + - rm_watch returns the list of watch descriptors of watches + successfully removed. + + +* Performances + + - Always prefer string path for update_watch, and int wd for rm_watch. + + - Always prefer to save the result of one operation e.g. add_watch + for further update or remove watches with this list instead the use + of the 'rec' option which is very expansive. + + +* Exceptions vs errors vs nothing + + The previous versions raised exceptions on explicit errors, the + drawback was to drop important informations. For example, given + the list ['a-valid-path', 'non-valid-path', 'a-valid-path2'], the + first item was successfully added whereas an exception was raised on + the second, thus the first wd hadn't been returned to the caller, + and the last item hadn't been processed. + + The new approach is to quietly ignore errors, process all items and + to return all successfully executed operations. The benefit is to never + hang up the execution of one operation, the called method will never + unexpectedly fail, if all operations failed, the result is an empty + list. The drawback is to not directly and explicitly report errors. + This task is left to the caller, which is able to compare the input + parameters to the received list. + + Obviously this is a subjective choice but i think this is the least + worst. Anyway, feel free to send me a comment to say if in your use + case this choice works or if it is really really annoying. + + |