summaryrefslogtreecommitdiff
path: root/old
diff options
context:
space:
mode:
Diffstat (limited to 'old')
-rw-r--r--old/ChangeLog410
-rw-r--r--old/NEWS281
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.
+
+