2008-03-24  Dirk Meyer <dischi@freevo.org>

	* NEWS: update

2008-03-20  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py: add doc

	* test/progress.py: create example with parameter

	* src/notifier/coroutine.py, src/notifier/thread.py, test/progress.py:
	make it possible to override the progress class

	* src/notifier/async.py, src/notifier/__init__.py:
	Revert kaa.execute back into kaa.InProgress().execute

	* src/notifier/coroutine.py
	* src/notifier/thread.py
	* src/net/url.py
	* test/progress.py (added)
	* src/notifier/async.py:
	Add parameter 'progress' to kaa.threaded and kaa.coroutine. When
	progress is True, the first argument to the function is an
	InProgress.Progress object that will be bound to the returning
	InProgress to monitor the progress as caller.

	* src/distribution/core.py:
	revert write_version test to avoid rewriting version.py every time

	* src/version.py (removed)
	* src/distribution/core.py:
	also write version.py for kaa.base

2008-03-19  Dirk Meyer <dischi@freevo.org>

	* src/decorators.py (removed): remove not needed save_execution decorator

	* src/notifier/async.py, src/notifier/__init__.py:
	rename class InProgressExecution to def execute (similar to twisted)

	* src/notifier/async.py, src/notifier/__init__.py:
	move execute from InProgress into new InProgressExecution class

	* src/notifier/coroutine.py, src/notifier/async.py:
	add timeout support for InProgress

	* src/net/tls.py: fix tls close bug blocking kaa shutdown

	* src/notifier/async.py: add shortcut for InProgressSignals

2008-03-18  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py: store signal result arguments

2008-03-16  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py, src/notifier/__init__.py:
	add InProgressSignals class to wait for signals

2008-03-15  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/sockets.py:
	Import kaa.notifier.main upfront (in the mainthread) instead of doing
	so inside wrap(), because wrap() might be called in a thread, and
	importing in a thread seems to deadlock.

2008-03-15  Dirk Meyer <dischi@freevo.org>

	* src/utils.py: also check against given process name, it may be changed

	* src/notifier/sockets.py:
	fix block by making sure wrap() is called from the mainthread

2008-03-14  Dirk Meyer <dischi@freevo.org>

	* src/notifier/sockets.py:
	deactivate some stuff that breaks freevo, needs investigating

	* src/notifier/async.py: small bugfix

2008-03-13  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py:
	Don't assume first element in sys.path is always cwd, and don't assume
	it is the only one.

	* src/notifier/async.py: Return proxied exception's methods and members.

	* src/notifier/async.py:
	Python 2.4 ignores __getattribute__ because AsyncException does not
	subclass object, so we use __getattr__ instead for 2.4. Now we don't
	call superclass constructor after all, in order to ensure
	AsyncException.__getattr__ is called.

	* src/notifier/async.py:
	Call proxied exception class __init__ in AsyncException, which is
	necessary for python 2.4.

	* src/notifier/sockets.py:
	Don't remove the unix socket if we weren't the one who created it. (In
	other words, clients should not remove the socket file. Duh.)

	* src/notifier/async.py:
	Subclass AsyncExceptionBase from Exception required for python 2.4. We
	used to do this, but for some reason it was reverted. I'll assume it
	was  accidental.

2008-03-12  Dirk Meyer <dischi@freevo.org>

	* src/net/tls.py: Python 2.4 does not allow finally in a coroutine

2008-03-11  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/sockets.py, src/rpc.py:
	Use kaa.tempfile in kaa.Socket if filename does not start with a slash
	(previously only did it if the filename contained no slash). Remove
	this logic from kaa.rpc.

2008-03-11  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py:
	Put socket in tempdir if not absolute path was provided. Fixes beacon
	thumbnail connect.

2008-03-11  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py: More correct.

	* src/rpc.py: Raise rpc.ConnectError if connection fails.

	* src/notifier/sockets.py:
	Use absolute kaa import rather than relative main.

	* src/notifier/sockets.py, src/notifier/async.py, src/rpc.py:
	AsyncException: use str() on the proxied exception to get the message
	instead of accessing self.message or self.args. Results in simpler
	code that I think is more correct.  kaa.Socket changes: new
	buffer_size and chunk_size properties; custom __repr__ that shows
	fileno; use kaa.tempfile() on unix sockets if only filename is
	specified; clear out stale unix sockets when listening (this logic
	moved from kaa.rpc); register shutdown handler to close socket and
	clean up.  kaa.rpc: significantly refactored to use kaa.Socket; new
	Channel.close() method added.

2008-03-08  Dirk Meyer <dischi@freevo.org>

	* src/notifier/timer.py: fix default timer for timed

2008-03-05  Dirk Meyer <dischi@freevo.org>

	* src/net/mdns.py, test/mdns.py: some thread cleanup

	* src/net/mdns.py, test/mdns.py:
	Support more than one service to be provided.

	Add removal of a serviceKnown Bug: changing of TXT records of a
	service does notwork, I have no idea how to detect that on client
	side.

	* test/events.py: more test cases

	* NEWS: add tls and mdns

	* src/net/tls.py: doc update

2008-03-05  Rob Shortt <rob@tvcentric.com>

	* test/events.py (added): A very simple events test (from the wiki docs).

2008-03-05  Dirk Meyer <dischi@freevo.org>

	* src/net/tls.py: Better key management

	* src/net/mdns.py: store local

2008-03-04  Dirk Meyer <dischi@freevo.org>

	* src/net/tls.py: fix tls

	* src/net/tls.py: Add basic TLS server support

	* src/notifier/sockets.py:
	move accept to extra function to override in TlsSocket

	* src/notifier/sockets.py:
	Socket bugfixes: signals are object specific and resolve port when
	port = 0 (autoselect) is used.

	* src/net/mdns.py (added)
	* test/mdns.py (added):
	Add multicast DNS and service discovery module based on Avahi

2008-03-02  Dirk Meyer <dischi@freevo.org>

	* test/gobject.py, test/synchronized.py, src/notifier/gobject.py,
	* test/sockettest.py:
	svn property update

	* src/notifier/thread.py, src/notifier/gobject.py, src/utils.py:
	rename importhelper to sysimport

	* test/glib.py (removed)
	* test/gobject.py (added)
	* src/notifier/glib.py (removed)
	* src/notifier/gobject.py (added)
	* src/notifier/__init__.py:
	rename glib to gobject

	* src/utils.py: do not search in the working directory

	* src/notifier/thread.py, src/utils.py:
	add import helper for files with name conflict

2008-03-01  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py
	* test/synchronized.py (added):
	Improve kaa.synchronized. It can be used as decorator and with with
	statements and supports any object as lock. This is similar to
	synchronized in Java.

	* test/glib.py: remove init

	* src/notifier/glib.py: remove debug

	* test/glib.py (added): add glib test

	* src/notifier/glib.py (added)
	* NEWS
	* src/notifier/__init__.py:
	Support to run a glib mainloop in an extra thread

	* src/notifier/thread.py, NEWS, src/notifier/__init__.py:
	add synchronized decorator (does not work with a coroutine)

2008-02-29  Dirk Meyer <dischi@freevo.org>

	* test/interface.py (removed): remove interface test

	* src/utils.py:
	Remove interface code again, it is very specific and does not belong
	into kaa.base.

	* test/interface.py: update test

	* test/interface.py, src/utils.py:
	The metaclass must inherit from type or super() will not work in such
	classes. As a downside, the member __initerface__ to init the
	interface is now gone.

	* src/__init__.py: do not import the interface stuff

	* test/interface.py (added)
	* src/__init__.py
	* src/utils.py:
	Add some code similar to interfaces

2008-02-22  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py:
	revert change, AsyncExceptionBase is not exposed to the API anymore

2008-02-21  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/async.py, src/rpc.py:
	AsyncException now proxies original exception, rather than trying to
	recreate it.

2008-02-21  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py: expose AsyncExceptionBase

	* src/notifier/nf_thread.py, test/kaa_in_twisted.py,
	* test/twisted_in_kaa.py, src/notifier/reactor.py,
	* src/notifier/nf_wrapper.py, src/notifier/main.py:
	Fix notifier shutdown when the kaa mainloop is running besides another
	mainloop (e.g. twisted). There is now a nf_wrapper shutdown function
	to replace the normal sys.exit with something backend specific.

2008-02-20  Dirk Meyer <dischi@freevo.org>

	* src/notifier/main.py: fix exception handling

	* src/notifier/main.py:
	Make sure we reset the running status even for exceptions we did not
	catch. E.g. In Python 2.5 SystemExit and KeyboardInterrupt do not
	inherit from Exception.

2008-02-19  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/main.py:
	Propogate _all_ exceptions (including KeyboardInterrupt/SystemExit) in
	main.loop(). This allows KeyboardInterrupt to bubble up to the main
	loop if one is running. Specifically this should fix ctrl-c during
	InProgress.wait() going silently ignored.

2008-02-19  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py, src/notifier/main.py:
	move timeout parameter to loop()

2008-02-19  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/async.py: Remove superfluous import

	* src/notifier/async.py, src/notifier/main.py:
	New function main.loop(), which is mostly what main.run() used to be.
	Update InProgress.wait() to use this function.  This fixes a nasty bug
	where two threads call wait() on an InProgress object before
	main.run() is started. Each one thinks it should set itself to be the
	main thread.  main.step() should not usually be called. All instances
	of this idiom:    while some_condition:     main.step()  should be
	replaced with this one:    main.loop(lambda: some_condition)

2008-02-17  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/coroutine.py: Avoid cmp

	* src/notifier/async.py:
	Create AsyncException object in throw() rather than get_result(). This
	fixes a bug when coroutine.py's _process calls throw() on the
	generator, because as it was, _exception[2] was a stack object not a
	traceback, so the raise failed. Now _exception[1] contains an
	AsyncException object so this is thrown to the generator.

2008-02-16  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/async.py:
	Fix for python 2.4. AsyncException.__str__ was not being called.

	* src/notifier/async.py:
	Don't wrap async exception in an AsyncException object if it's already
	one (e.g. already a RemoteException)

	* src/notifier/async.py, src/rpc.py:
	New AsyncException class, which is a more generic RemoteException
	(RemoteException now subclasses it); when traceback is not available
	in InProgress.get_result(), raise an AsyncException so that the
	traceback is more useful.

2008-02-15  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/coroutine.py, src/notifier/thread.py,
	* src/notifier/async.py, src/notifier/popen.py, src/rpc.py:
	Renamed InProgress.finished() to InProgress.finish() so that throw()
	and finishe() are both verbs.

2008-02-14  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/coroutine.py, src/rpc.py: Fixes for python 2.4

2008-02-14  Dirk Meyer <dischi@freevo.org>

	* src/notifier/coroutine.py: more cleanups

	* src/notifier/coroutine.py:
	Rename YieldFunction to CoroutineInProgress and YieldLock to
	CoroutineInProgressLock. Both classes are only for internal use.
	Remove the external use handling (__call__) from CoroutineInProgress.

	* test/asynctest.py, src/notifier/coroutine.py, src/net/tls.py,
	* src/notifier/sockets.py, src/notifier/async.py,
	* src/notifier/__init__.py, API_CHANGES.txt:
	Move coroutine.YieldCallback to async.InProgressCallback

	* src/notifier/coroutine.py, src/notifier/__init__.py, API_CHANGES.txt:
	Remove YieldFunction from the public API and add a set_interval
	function to manipulate the coroutine execution from the outside.

	* src/notifier/async.py:
	Add an execute function to InProgress to execute a non coroutine
	function inside an InProgress object.

2008-02-14  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/sockets.py
	* src/notifier/signals.py
	* src/notifier/timer.py
	* test/sockettest.py (added)
	* src/utils.py
	* src/rpc.py:
	Overhauled kaa.Socket; exposed Signal.changed_cb property; created
	Signals.add method; import kaa.weakref for timed decorator; lazy
	import create_thread_notifier_pipe in kaa.utils (to avoid circular
	importing when using kaa.utils internally).

	* src/notifier/coroutine.py, src/notifier/thread.py:
	Don't wrap return value from non-generator coroutine wrapped functions
	after all. (I advocated this a while back, but doing this may conceal
	an actual problem that the user should know about.) So we raise an
	exception instead.  Log a warning if a thread callback is a generator
	or returns an InProgress object, because this likely means the
	threaded function is being treated like a coroutine. It'd be nice if
	this worked, but that's a TODO.

2008-02-13  Dirk Meyer <dischi@freevo.org>

	* test/asynctest.py, src/notifier/coroutine.py, test/async_lock.py,
	* src/notifier/__init__.py, API_CHANGES.txt:
	rename YieldContinue to NotFinished

2008-02-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/coroutine.py: Another little comment.

2008-02-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/coroutine.py: more code cleanup

	* src/notifier/coroutine.py: remove deprecated code from YieldCallback

	* src/notifier/coroutine.py: cleanup

	* src/notifier/coroutine.py, src/notifier/async.py,
	* src/notifier/__init__.py, src/__init__.py, API_CHANGES.txt:
	doc update, remove deprecated code

	* src/notifier/sockets.py, src/notifier/__init__.py,
	* src/notifier/main.py:
	fix imports, jobserver.py and decorators.py is gone now

2008-02-13  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py: new property implementation

	* src/notifier/thread.py
	* src/notifier/timer.py
	* src/notifier/jobserver.py (removed)
	* src/notifier/main.py
	* src/notifier/decorators.py (removed):
	Remove jobserver.py and decorators.py and move code into more sensible
	places.

2008-02-13  Dirk Meyer <dischi@freevo.org>

	* src/__init__.py:
	add str_to_unicode and unicode_to_str to the kaa namespace

	* src/__init__.py, src/rpc.py: remove kaa.TEMP and updated code using it

	* src/net/__init__.py, src/net/tls.py,
	* src/notifier/pynotifier/nf_twisted.py, src/notifier/signals.py,
	* src/notifier/main.py:
	svn property updates

	* src/notifier/coroutine.py: remove old comments

	* src/notifier/coroutine.py (added)
	* src/notifier/__init__.py
	* src/notifier/yieldfunc.py (removed):
	rename file yieldfunc to coroutine

	* src/notifier/thread.py
	* src/notifier/sockets.py
	* src/notifier/callback.py
	* src/notifier/async.py
	* src/notifier/__init__.py
	* src/notifier/signals.py (added)
	* src/notifier/jobserver.py
	* src/notifier/popen.py
	* src/notifier/yieldfunc.py
	* src/notifier/nf_wrapper.py
	* src/notifier/main.py:
	move Signal(s) from callback.py to a new file signals.py

2008-02-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/decorators.py: Add some documentation and slight cleanup

2008-02-13  Dirk Meyer <dischi@freevo.org>

	* test/async_lock.py: rename yield_execution to coroutine

	* src/input/lirc.py, src/net/tls.py, src/notifier/sockets.py,
	* src/notifier/__init__.py, src/extensions/inotify/__init__.py,
	* src/input/stdin.py, src/notifier/popen.py, API_CHANGES.txt, src/rpc.py:
	rename (Weak)SocketDispatcher to (Weak)IOMonitor

	* src/notifier/thread.py, src/notifier/nf_thread.py,
	* src/notifier/sockets.py, src/notifier/callback.py,
	* src/notifier/reactor.py, src/notifier/timer.py,
	* src/notifier/jobserver.py, src/notifier/popen.py,
	* src/notifier/nf_wrapper.py, src/notifier/decorators.py:
	update copyright year

	* setup.py, NEWS, API_CHANGES.txt: add/change version info

2008-02-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/decorators.py:
	Don't use a string for kaa.MAINTHREAD, so that @threaded('main') and
	@threaded(kaa.MAINTHREAD) are functionally different; better form for
	MainThreadCallbacks

2008-02-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/decorators.py: remove more old code

	* src/notifier/__init__.py, API_CHANGES.txt, src/notifier/decorators.py:
	move the old parameter handling to the execute_in_timer wrapper

	* test/decorator.py: adjust to kaa.notifier decorator name changes

	* src/notifier/__init__.py, src/notifier/decorators.py:
	define helper variables for timed policy

2008-02-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/decorators.py: Make @kaa.timed arguments suck less.

	* src/notifier/async.py:
	Reraise asynchronous KeyboardInterrupt/SystemExit exceptions in the
	main loop so that, for example, threads that call sys.exit() actually
	cause the loop to shutdown.

	* src/__init__.py:
	Pull signals back into kaa namespace. (Used to be brought in from
	notifier/__init__.py)

	* src/net/tls.py, src/notifier/jobserver.py: Sync to renamed decorators

	* test/asynctest.py, src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/__init__.py, src/__init__.py, src/notifier/jobserver.py,
	* API_CHANGES.txt, src/notifier/yieldfunc.py, src/notifier/main.py,
	* src/notifier/decorators.py:
	Removed deprecated code for mainloop functions in kaa.notifier;
	removed deprecated code for MainThreadCallback.set_async()
	functionality; renamed decorators:     @kaa.execute_in_timer -->
	@kaa.timed    @kaa.execute_in_thread --> @kaa.threaded
	@kaa.execute_in_mainloop --> @kaa.threaded(kaa.MAINTHREAD)
	@kaa.yield_execution --> @kaa.coroutine  Updated asynctest.py to
	reflect API changes

	* src/notifier/popen.py:
	Handle case when child dies before write buffer is emptied.

2008-02-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py, src/utils.py:
	rename create_thread_notifier_pipe

2008-02-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/yieldfunc.py:
	Forgot to commit this. Last log entry applies to this file too.

	* src/notifier/async.py:
	Pretty much rewrote InProgress.throw, documenting gotchas. Fixed bug
	where if InProgress A is waiting on InProgress B, if B raises an
	exception, A's  generator wouldn't get the exception (using the python
	2.5 features).

2008-02-12  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: update doc

	* src/notifier/yieldfunc.py: add one missing timer delete

	* src/notifier/yieldfunc.py: remove timer with circular ref

	* src/notifier/async.py, src/notifier/yieldfunc.py:
	log exception without using __del__

	* src/notifier/async.py: clean up signal callbacks

2008-02-11  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/utils.py, src/notifier/main.py:
	A bit of refactoring; kaa.utils.daemonize() will now create a new
	thread notifier pipe if necessary; kaa.main.run() will not raise a
	'Mainloop already running' exception if we've forked and want to start
	a new loop.

	* src/notifier/thread.py: Better style

2008-02-11  Dirk Meyer <dischi@freevo.org>

	* src/notifier/reactor.py, src/notifier/main.py:
	adjust to latest kaa.MainThreadCallback changes

2008-02-11  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/popen.py, src/notifier/main.py:
	Revert recent changes to is_mainthread(). Fix bug when calling
	Process.start from non-mainthread, Watcher.append was not being
	called.

	* src/notifier/async.py: Dummy handler not needed anymore.

2008-02-10  Jason Tackaberry <tack@urandom.ca>

	* test/asynctest.py, src/notifier/thread.py, src/notifier/async.py,
	* API_CHANGES.txt, src/notifier/yieldfunc.py, src/notifier/main.py,
	* src/notifier/decorators.py, src/rpc.py:
	MainThreadCallback.set_async is deprecated (and logs a warning).
	Calling a MainThreadCallback will now return an InProgress object, and
	the caller can wait() on this InProgress if synchronous behaviour is
	needed.  InProgress.wait() is now thread safe. If wait() is called
	from the main thread, the notifier is kept alive via a step() loop. If
	it's called from a thread, the thread is blocked by waiting on a
	threading.Event object. wait() now accepts an optional timeout
	argument, in seconds. If timeout expires, a TimeoutException is
	raised.  Updated test/asynctest.py to conform to API changes (removes
	deprecation warnings from output).  Changed is_mainthread() semantics.
	is_mainthread() now returns None if no mainthread has been set.
	main.run() now raises an exception if some other thread has been set
	as the main thread.  Unhandled InProgress exceptions are now logged in
	the destructor. This is still not perfect, but it's a hard problem to
	solve. :)  New method InProgress.link() to link together two
	InProgress objects. With one.link(two), when two finishes, one is
	finished (or throws).

2008-02-08  Dirk Meyer <dischi@freevo.org>

	* src/utils.py:
	Add generic plugin finder to avoid duplicate code in all modules that
	load plugins from a given directory.

2008-02-05  Dirk Meyer <dischi@freevo.org>

	* src/net/tls.py (added):
	add tls for kaa.notifier support based on tlslite

	* src/net/__init__.py (added)
	* src/net/url.py (added)
	* src/net (added)
	* src/notifier/url.py (removed):
	move kaa.notifier.url to kaa.net.url

	* src/notifier/sockets.py:
	use fileno() in case self._socket will be changed to a non socket
	object

2008-02-05  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py: New close_stdin() method (see docstring)

2008-02-04  Dirk Meyer <dischi@freevo.org>

	* setup.py, NEWS: release kaa.base 0.3.0

2008-02-04  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py:
	Support for non-blocking writes. (Note I still intend to rewrite
	popen.py, so the use of mixed approaches [e.g. SocketDispatcher vs.
	notifier.socket_add] isn't a big deal right now.)

	* src/notifier/popen.py, src/rpc.py:
	Add Channel.is_connected() method; add raw-stdout and raw-stderr
	signals to Process object, and modify behaviour so that if there are
	no handlers connected to the regular signals (per-line handlers), the
	output will not get processed or queued. This allows for handling
	binary data in output.

2008-02-03  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py:
	Support for specifing send/receive socket buffer size. This can
	improve performance when pushing large amounts of data via rpc by
	about 3 fold.

	* src/notifier/async.py: Obvious bug.

2008-02-02  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/timer.py:
	New method set_restart_when_active. Using the restart_when_active
	member directly is deprecated. This makes it consistent with the other
	behaviour modifier methods in Callback (e.g. set_user_args_first,
	etc.)

	* src/notifier/sockets.py, src/notifier/async.py:
	New InProgress.wait() method; update Socket.connect() to use
	InProgress.wait()

2008-01-29  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/nf_twisted.py: handle step parameter

2008-01-29  Rob Shortt <rob@tvcentric.com>

	* src/notifier/pynotifier/nf_twisted.py:
	Call doIteration(t) before runUntilCurrent() since doIteration can
	block.

	* src/notifier/pynotifier/nf_twisted.py:
	Remove the call to reactor.run() and replace it with a loop of our
	own. I also added a call to dispatcher.dispatchers_run() inside of our
	step() so it gets called every iteration of the loop like it was
	intended to. Beware that if the loop is idle it won't get called.
	Comments included.

2008-01-22  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py: yield_execution bugfixes

	* src/notifier/jobserver.py, src/notifier/decorators.py, API_CHANGES.txt:
	adjust to yield_execution changes

	* src/notifier/yieldfunc.py: activate new yield code

2008-01-21  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/sockets.py, src/notifier/async.py:
	Fix Socket to deal with exception changes. It now also will call
	set_as_mainthread() if mainthread is not running in order to
	initialize notifier pipe: this fixes a bug when Socket was being
	insantiated before main.run()

2008-01-21  Dirk Meyer <dischi@freevo.org>

	* src/notifier/sockets.py, src/notifier/yieldfunc.py:
	Adjust to new InProgress exception style

2008-01-21  Jason Tackaberry <tack@urandom.ca>

	* API_CHANGES.txt: Document exception handler changes.

	* src/notifier/yieldfunc.py:
	async should be defined whether or not object is valid.

	* src/notifier/yieldfunc.py: Remove debug

	* test/asynctest.py, src/notifier/thread.py, src/notifier/async.py,
	* src/notifier/yieldfunc.py, src/notifier/nf_wrapper.py,
	* src/notifier/main.py, src/rpc.py:
	Exception handlers now are expected to take three arguments instead of
	one: exception type, exception value, and traceback.

2008-01-20  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py:
	Eat arguments emitted to signal handlers when connecting thread join()
	method, since join() doesn't take these arguments.

	* API_CHANGES.txt: Update to reflect lock kwarg rename

	* test/async_lock.py: lock was renamed to synchronize

	* src/notifier/yieldfunc.py: Rename lock kwarg to synchronize.

2008-01-20  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: deactivated code to always return InProgress

	* src/notifier/yieldfunc.py: remove wrong comment

	* API_CHANGES.txt: InProgress.is_finished is now a function

	* src/notifier/thread.py, src/notifier/async.py,
	* src/notifier/yieldfunc.py:
	InProgress.is_finished is now a function

2008-01-19  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: support already finished InProgress objects

	* src/notifier/yieldfunc.py:
	add new Python 2.5 yield code but deactivate it since it breaks
	existing code

	* test/asynctest.py, src/notifier/yieldfunc.py:
	make YieldCallback an InProgress object

2008-01-18  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py, src/notifier/yieldfunc.py:
	Prepare yield_execution for some changes by adding a lot of doc to
	that code to understand again how it works. There are also some XXX
	notes for the future changes to consider. The YieldInProgress class is
	gone, I hope it was not needed and the changes I made still work.

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/async.py, API_CHANGES.txt, src/notifier/yieldfunc.py,
	* src/rpc.py:
	Rename exception in InProgress into throw and exception_handler into
	exception

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/__init__.py, API_CHANGES.txt, src/notifier/url.py:
	replace code using kaa.Thread with kaa.ThreadCallback

	* test/asynctest.py, src/notifier/thread.py, src/notifier/__init__.py,
	* src/notifier/jobserver.py:
	create new ThreadCallback

	* src/notifier/async.py, src/notifier/__init__.py: remove BackgroundTask

	* src/notifier/thread.py, src/notifier/jobserver.py:
	move InProgressCallback to thread.ThreadCallback

	* test/jobserver.py, src/notifier/jobserver.py:
	rework NamedThreadCallback

	* test/jobserver.py, src/notifier/async.py, src/notifier/__init__.py,
	* src/notifier/jobserver.py, API_CHANGES.txt:
	Add new kaa notifier class BackgroundTask

	Rename ThreadCallback to NamedThreadCallback and make it a Callback
	and a BackgroundTask. Replace register with a __call__ function that
	returns InProgress

	* src/input/lirc.py, src/notifier/reactor.py:
	adjust to new kaa.notifier namespace

	* test/callbacks.py
	* API_CHANGES.txt (added)
	* test/decorator.py
	* test/xmlrpc.py (removed)
	* test/async_lock.py
	* test/kaa_in_twisted.py
	* test/kaaconf-editor.py
	* src/rpc.py
	* test/asynctest.py
	* test/twisted_in_kaa.py
	* test/signals.py
	* test/jobserver.py
	* src/notifier/main.py:
	adjust to kaa.notifier namespace changes

2008-01-17  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/async.py:
	Use emit_when_handled so that finished() may be called before a
	handler has connected yet.

	* src/notifier/callback.py:
	Ability to defer emission until there is callback connected to the
	signal.

2008-01-14  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: remove duplicate log

2008-01-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/yieldfunc.py:
	Handle the case when a function decorated with yield_execution doesn't
	actually yield anything. In this case the function should behave as
	though it was't decorated at all.

2008-01-12  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/__init__.py, src/__init__.py,
	* src/notifier/main.py:
	Rename kaa.main.start to kaa.main.run as discussed; add
	Thread.is_alive method.

2008-01-10  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/nf_thread.py:
	Sync to set_as_mainthread function rename.

2008-01-09  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py: doc update

2008-01-09  Rob Shortt <rob@tvcentric.com>

	* src/notifier/pynotifier/nf_twisted.py:
	Check to see if reactor is runnning, handle exit a bit better.

2008-01-08  Dirk Meyer <dischi@freevo.org>

	* src/notifier/main.py: resort functions

	* src/notifier/__init__.py: remove wakeup for kaa namespace

	* src/notifier/async.py, src/notifier/__init__.py, src/notifier/url.py:
	move class Progress into InProgress

	* src/notifier/__init__.py: add some cleanup notes

2008-01-08  Rob Shortt <rob@tvcentric.com>

	* src/notifier/pynotifier/nf_twisted.py:
	Check for int or socket (well, something with fileno()), other general
	improvements.

2008-01-08  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/main.py:
	Rename set_mainthread to set_as_mainthread; add is_shutting_down()
	function.

2008-01-07  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/main.py:
	Don't wait for result on shutdown() if not called from mainthread.

2008-01-07  Dirk Meyer <dischi@freevo.org>

	* src/__init__.py: keep main wrapper simple

	* src/notifier/thread.py, src/notifier/nf_thread.py,
	* src/notifier/__init__.py, src/__init__.py, src/notifier/main.py:
	move set_current_as_mainthread as set_mainthread to main

	* src/xmlrpc.py (removed)
	* src/config.py
	* src/input/lirc.py
	* src/notifier/nf_thread.py
	* src/notifier/reactor.py
	* src/extensions/inotify/__init__.py
	* src/input/stdin.py
	* src/notifier/main.py
	* src/rpc.py:
	adjust to latest kaa.notifier changes

	* src/notifier/__init__.py: add InProgress and Progress

2008-01-07  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/main.py: One bug so far. :)

2008-01-07  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/__init__.py, src/notifier/nf_wrapper.py:
	keep names in sync with pynotifier

2008-01-07  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/__init__.py
	* src/__init__.py
	* src/notifier/main.py (added):
	New main api, with temporary backward compatibility. (Access of old
	api logs warning message.)

2008-01-07  Rob Shortt <rob@tvcentric.com>

	* src/notifier/pynotifier/__init__.py
	* src/notifier/pynotifier/nf_twisted.py (added)
	* src/notifier/nf_wrapper.py:
	A new Twisted based notifier. This one integrates into the twisted
	reactor loop and acts as a layer between kaa s timers and sockets. It
	uses the default reactor (selectreactor) and behaves very much like
	the generic notifier. There's a bit more work to be done (marked by
	FIXME comments) and it still needs more testing.

2008-01-07  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/__init__.py: Missing decorators.

2008-01-04  Jason Tackaberry <tack@urandom.ca>

	* src/__init__.py: Fix comment.

	* src/notifier/__init__.py, src/__init__.py:
	Bring most of notifier directly into kaa namespace.

2007-12-31  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/utils.c (added)
	* setup.py
	* src/utils.py:
	Support for modifying the process name as it appears in ps. (Also
	supports killall via prctl.)

2007-12-22  Dirk Meyer <dischi@freevo.org>

	* setup.py, NEWS: metadata for 0.2.0 release

2007-12-21  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py: Some fixmes

2007-12-20  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py: Leftover debugging cruft.

	* src/notifier/popen.py:
	If multiple Processes finish at once, the exit code of the last
	process ends up being passed to the completed signal for _all_ the
	processes that exited. So we have the watcher pass the pid to the
	callback so it can decide whether or not to ignore it.

2007-12-12  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/timer.py: Fix AtTimer.

2007-12-07  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/nf_generic.py: handle crash on closed socket

	* src/notifier/__init__.py, src/notifier/nf_wrapper.py:
	realize kaa.notifier.loop by using nf_wrapper.step

2007-12-04  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py, src/notifier/popen.py:
	refactor popen kill all code to not use step in popen.py

2007-12-02  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py: fix signal handling

	* src/notifier/pynotifier/nf_generic.py:
	sync with pynotifier

	call timer after select

	cleanup try/except blocks

	handle unix events

2007-11-20  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py: add some doc

	* src/notifier/thread.py: check the queue after the pipe is created

2007-11-19  Dirk Meyer <dischi@freevo.org>

	* src/xmlrpc.py, src/notifier/nf_thread.py, test/kaa_in_twisted.py,
	* test/twisted_in_kaa.py, src/notifier/reactor.py, test/kaaconf-
	* editor.py, test/xmlrpc.py:
	set properties

2007-11-13  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/inotify/__init__.py: Do not hardcode integer size.

2007-10-29  Dirk Meyer <dischi@freevo.org>

	* src/notifier/nf_thread.py, test/kaa_in_twisted.py:
	some internal renaming, better shutdown

	* src/notifier/reactor.py: fix async parameter

	* src/notifier/nf_thread.py: add doc and header

	* src/notifier/nf_thread.py, src/notifier/nf_wrapper.py:
	rename use_pynotifier to force_internal

	* src/notifier/nf_thread.py, test/kaa_in_twisted.py,
	* src/notifier/__init__.py:
	fix shutdown and add special twisted support to threading

	* src/notifier/pynotifier/nf_generic.py
	* src/notifier/nf_thread.py (added)
	* test/kaa_in_twisted.py (added)
	* src/notifier/__init__.py:
	add notifier type thread to run kaa.notifier besides a different
	mainloop

	* src/notifier/nf_wrapper.py: we only support nf_generic and nf_gtk

	* src/notifier/nf_wrapper.py:
	create option to force the usage of the internal pynotifier copy

	* src/rpc.py: fix crash when called in thread

	* test/twisted_in_kaa.py (added)
	* test/twisted_integration.py (removed):
	rename twisted test

	* src/notifier/thread.py, src/notifier/reactor.py,
	* src/notifier/jobserver.py:
	Create notifier pipe when setting up the mainthread. I hope this will
	fix the pipe problem for the future.

2007-10-28  Dirk Meyer <dischi@freevo.org>

	* src/notifier/reactor.py: fix bug to create _thread_notifier_pipe

	* src/notifier/reactor.py (added)
	* test/twisted_integration.py (added):
	Add small KaaReactor code to use kaa.notifier with Twisted

2007-10-26  Dirk Meyer <dischi@freevo.org>

	* src/notifier/timer.py: add AtTimer and OneShotAtTimer to __all__

	* src/rpc.py: make rpc thread safe

2007-10-25  Dirk Meyer <dischi@freevo.org>

	* src/notifier/timer.py
	* src/notifier/attimer.py (removed):
	move AtTimer into timer.py

	* src/notifier/attimer.py: simpler version of AtTimer and OneShotAtTimer

	* src/notifier/attimer.py (added): first draft of AtTimer

2007-10-14  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: A bit more detailed error.

	* src/db.py:
	Raise exception when referencing an undefined attribute. Indirectly
	fixes a bug in which the pickle is replaced with an empty dictionary
	when updating (solely) undefined attributes.

2007-10-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: delete references after usage

	* src/distribution/build_py.py, src/distribution/core.py:
	better plugin detection

2007-10-12  Dirk Meyer <dischi@freevo.org>

	* src/distribution/build_py.py, src/distribution/core.py:
	Add special 'plugins' support. This can be used to install plugins to
	other kaa modules and the feedparser will use it soon to hook into
	beacon but still remains an extra kaa module.

2007-10-08  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py:
	_handle_read shouldn't return true on errno=11 if we're flushing,
	because the child process could be dead, and that will cause a busy
	loop inside flush().

2007-09-25  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	Fix for exception when updating object that has an attribute of string
	type that is ATTR_INVERTED_INDEX.

2007-09-24  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	Last checkin was wrong; should be ATTR_INDEXED_IGNORE_CASE, not
	ATTR_IGNORE_CASE.

	* src/db.py:
	When ATTR_IGNORE_CASE attribute is specified in attrs list during
	query, ensure pickle is fetched as well (because correct case is
	stored in pickle)

	* src/db.py:
	Fix bug where distinct queries weren't actually being distincted
	(fixed by adding GROUP BY clause to query -- this bug was caused by
	implicitly adding id column to all queries); support for executemany
	in _db_query; apply pragmas to both cursors (improves performance
	somewhat);

2007-09-20  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py:
	kaa.rpc is well tested, reduce logging level from info to debug for
	some default stuff.

2007-09-19  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/objectrow.c:
	Index of pickle data was being miscalculated when parent_id occurred
	after pickle in sql row. This old code was clearly wrong. The only
	reason it ever possibly worked was luck.

2007-09-17  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	Add prefix option to get_inverted_index_terms, returning only the
	terms that start with prefix (useful for autocompletion); remove
	useless query from get_db_info(); fix vacuum() to work with ivtidx
	changes.

	* src/db.py: Add docstring for register_inverted_index

	* src/db.py, src/extensions/objectrow.c:
	Abstracts keyword stuff into general inverted indexes, which must be
	explicitly registered via register_inverted_index() (see docstring)

	New method get_inverted_index_terms() (see docstring)

	Registered attributes can then be associated with zero or one inverted
	indexes.

	Registered attributes can be named after an inverted index, in which
	case the terms for that index are cached in the object. (TODO: support
	being able to fetch ivtidx terms for a given object  even when there
	is no explicit attribute named after the ivtidx)

	ATTR_KEYWORDS is removed, and ATTR_INVERTED_INDEX is provided as the
	new  flag.

	Exactly one of ATTR_SIMPLE or ATTR_SEARCHABLE must now be specified
	for each attribute.

	RegexpCache wasn't actually caching compiled regexp.

	Use set intrinsic in place of Set module (python 2.4)

	Added a bunch more internal documentation in the form of new or
	expanded docstrings, as well as more comments.

	More and smarter sanity checking.

	Probably a lot of bugs :)

2007-09-16  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: handle unpickable exceptions

2007-09-15  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py:
	add add_client to expose to send the channel to the callback on
	request

2007-09-01  Dirk Meyer <dischi@freevo.org>

	* src/notifier/jobserver.py:
	make it possible to use execute_in_thread without thread name

	* src/notifier/url.py: add missing length

2007-08-31  Dirk Meyer <dischi@freevo.org>

	* src/notifier/url.py:
	Rename URL to URLOpener in kaa.notifier and move the download code
	from the feed parser to kaa.notifier.url.

	* src/notifier/async.py, src/notifier/__init__.py:
	move generic Status object to kaa.notifier.Progress

2007-08-24  Dirk Meyer <dischi@freevo.org>

	* src/db.py: add db file path to info

2007-08-18  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py: typo

2007-08-16  Dirk Meyer <dischi@freevo.org>

	* src/notifier/jobserver.py: make sure thread pipe is connected

2007-08-15  Dirk Meyer <dischi@freevo.org>

	* src/db.py: use regexp cache

	* src/db.py: add regexp support in select

2007-07-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py:
	make it possible not to wait for a thread on exit

	* src/notifier/async.py: basic status support

	* src/notifier/thread.py: small thread fixes

2007-06-30  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/async.py:
	Don't break when internal _exc_info isn't set on async exception.

2007-06-28  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py: add get_results function

2007-06-27  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	Use executescript method instead of spawning sqlite3. Fixes bug where
	sqlite lib is installed but not tools.

2007-06-25  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: Bug fix.

	* src/config.py:
	Add value to hash; remove force kward from save(), always saves now;
	prevent double load() when Inotify-monitor file changed.

2007-06-25  Dirk Meyer <dischi@freevo.org>

	* src/config.py: fix typo and add logging to find such problems

	* test/kaaconf-editor.py: better gtk notifier select

2007-06-25  Jason Tackaberry <tack@urandom.ca>

	* test/kaaconf-editor.py (added)
	* test/kaaconf-editor.glade (added):
	Initial gtk-based config editor. Not complete and very hackish, much
	still to do.

	* src/config.py:
	Fix bug in get_config when config object can't be imported directly;
	add some more helper functions.

2007-06-24  Jason Tackaberry <tack@urandom.ca>

	* src/config.py:
	Removed unused code; add get_config function to return a Config object
	based on a given config file.

2007-06-23  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: More formatting tweaks and fixes.

	* src/config.py:
	Don't space out variables that don't have comments just because a
	sibling is a group.

	* src/config.py: Fix delimit character for lists/dict

	* src/config.py, src/distribution/xmlconfig.py,
	* src/distribution/build_py.py:
	Config file output cleanup; Config class takes module kwarg which can
	specify what to import to access the Config instance -- this is
	written to the config file; update xmlconfig to specify the module
	name.

2007-06-23  Dirk Meyer <dischi@freevo.org>

	* src/xmlutils.py: add some basic parse code to SaxTreeHandler

2007-06-05  Dirk Meyer <dischi@freevo.org>

	* src/config.py: Fix encoding information (ISO8859 is iso-8859)

2007-06-01  Dirk Meyer <dischi@freevo.org>

	* src/xmlrpc.py (added)
	* test/xmlrpc.py (added):
	add basic xmlrpc support

	* test/xml.py (removed)
	* test/xmlutils.py (added):
	rename xml test file to avoid name conflict

2007-05-29  Jason Tackaberry <tack@urandom.ca>

	* src/input/stdin.py: Add 'tab' to key codes.

2007-05-25  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py:
	Return None if check_library() doesn't find the requested library.
	Some setup.py code expects this. (Fixes kaa.display compile failure if
	composite headers aren't found.)

2007-05-23  Dirk Meyer <dischi@freevo.org>

	* src/distribution/core.py: improve check_library

2007-05-20  Dirk Meyer <dischi@freevo.org>

	* src/distribution/core.py, setup.py:
	add has_python_h function in core to check for Python.h

	* setup.py: make setup work without Python.h

2007-05-08  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/pynotifier/dispatch.py,
	* src/notifier/pynotifier/nf_generic.py:
	If there are no timers and no dispatchers, there is no sense in waking
	up every 100ms. (This patch should be tested and then submitted
	upstream if it's ok.)

	* src/db.py: Add fixme.

2007-04-22  Dirk Meyer <dischi@freevo.org>

	* setup.py, src/distribution/__init__.py:
	Import distribution code from distribution.core and do not nor import
	core.py at distribution/__init__.py. This works around a bug making
	python distutils a requirenment to run Freevo 1.7.

2007-04-18  Jason Tackaberry <tack@urandom.ca>

	* src/logger.py: Be daring and change the default logger format.

	* src/config.py: Log which settings changed.

	* src/config.py: Log when monitored config file has changed.

	* src/config.py: Strip newlines from start/end of group description.

	* src/config.py:
	If config var type is a tuple, display allowed values in variable
	comment; Do not comment out variables if they are using the default
	values -- this significantly improves readability in editors using
	syntax highlighting; as a compromise to the previous change, include
	the default setting in  the comment block; include begin/end group
	comments with output similar to breadcrumb bars in websites

2007-04-18  Dirk Meyer <dischi@freevo.org>

	* src/notifier/async.py:
	better error message for unhandled InProgress exceptions

	* setup.py, NEWS: release

2007-04-15  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: Support for implicit indexing of lists.

	* src/notifier/async.py: Remove unneeded sys module.

	* src/notifier/thread.py, src/notifier/async.py,
	* src/notifier/jobserver.py, src/notifier/yieldfunc.py:
	Pass exc_info triplet in any exception raised asynchronously and log
	full traceback in default async exception handler.

	* src/extensions/inotify/__init__.py:
	Fix typo; don't automatically remove watch on DELETE_SELF after all.

	* src/config.py:
	INotify fixes; change api a bit for set_default and get_description:
	they now accept a VarProxy object; fix some constructor instantiation
	problems as a result of MI in VarProxy.

	* src/extensions/inotify/__init__.py:
	Handle case where event callback removes a watch for which we've
	already buffered more events. Before this would log an error, but now
	we keep track of recently removed watches in order to suppress the
	error. Also add MOVED_FROM and MOVED_TO to default event mask.

2007-04-09  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/inotify/__init__.py:
	Remove watch data on more appropriate inotify event.

2007-03-30  Dirk Meyer <dischi@freevo.org>

	* src/notifier/popen.py: add back completed signal

	* src/distribution/core.py, src/xmlutils.py:
	add warning when xml.py is still there

2007-03-28  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py, src/extensions/inotify/__init__.py,
	* src/db.py, src/notifier/thread.py, TODO, src/extensions/objectrow.c,
	* src/input/lirc.py, src/extensions/inotify/inotify.c, AUTHORS,
	* src/notifier/__init__.py, test/config2.py, src/input/stdin.py,
	* src/strutils.py, src/notifier/sockets.py, NEWS, src/notifier/timer.py,
	* src/utils.py:
	metadata update

	* test/config2.py (added): second config test

	* src/distribution/core.py
	* kaa-base.ebuild (removed):
	remove ebuild generation

2007-03-23  Dirk Meyer <dischi@freevo.org>

	* trunk/base, src/distribution/svn2log.py, src, ChangeLog.in,
	* MANIFEST.in, src/distribution, NEWS:
	Improve MANIFEST and ChangeLog file support and set svn ignore
	properties to ignore generated files.

	* src/xmlutils.py: fix a small stupig bug

	* src/xmlutils.py: fix typo

	* src/distribution/svn2log.py: only create ChangeLog if there is a .svn

	* src/xmlutils.py: return children by name with getattr

	* src/distribution/svn2log.py, test/async_lock.py, src/xmlutils.py:
	update svn properties

	* ChangeLog.in: change Tack's mail address

	* MANIFEST.in
	* ChangeLog.in (added):
	create ChangeLog.in and add ChangeLog to MANIFEST

	* src/distribution/core.py
	* src/distribution/svn2log.py (added):
	add code to generate ChangeLog files from svn log and ChangeLog.in

	* src/xmlutils.py (added): some xml helper functions

	* NEWS
	* src/xml.py (removed):
	remove kaa.xml libxml2 wrapper, not needed in any kaa module anymore

2007-03-19  Dirk Meyer <dischi@freevo.org>

	* ChangeLog (removed)
	* NEWS (added):
	rename ChangeLog to NEWS and update it

2007-03-18  Dirk Meyer <dischi@freevo.org>

	* test/async_lock.py (added)
	* src/notifier/yieldfunc.py:
	add code to lock yield_execution functions while running

2007-03-17  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/__init__.py: Check for python 2.4

2007-03-16  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py: make it possible to import kaa from a thread

2007-03-13  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/objectrow.c: Another py2.5 fix.

	* src/extensions/objectrow.c: Support Py_ssize_t on python 2.5.

	* src/extensions/shmmodule.c:
	Hopefully eliminate compiler warning on 64 bit platforms.

2007-03-11  Dirk Meyer <dischi@freevo.org>

	* ChangeLog (added):
	add ChangeLog for released modules, please keep it up-to-date

	* src/notifier/url.py: return url return code if not 200

2007-02-28  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: handle StopIteration on first call

2007-02-26  Dirk Meyer <dischi@freevo.org>

	* setup.py: append src to get access to python xml

	* src/distribution/xmlconfig.py:
	Replace kaa.xml with minidom for parsing cxml files. This removes an
	extra dependency just for installing kaa modules.

2007-02-26  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py
	* setup.cfg (added):
	Make bdist_rpm work again; prefix RPM package names with python-;
	remove unneeded spec file from kaa.imlib2.

2007-02-15  Dirk Meyer <dischi@freevo.org>

	* src/utils.py: bugfix

	* src/notifier/__init__.py: do not import url as default

2007-02-14  Dirk Meyer <dischi@freevo.org>

	* src/config.py:
	create functions to set default and get desc without using _ vars

2007-02-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/sockets.py, src/notifier/callback.py,
	* src/notifier/timer.py, src/notifier/event.py,
	* src/notifier/nf_wrapper.py:
	Move NotifierCalback(s) to nf_wrapper to start cleanup callback.py

	* src/notifier/popen.py:
	Remove the "completed" signal from Process and return an InProgress
	object instead on start(). Since an InProgress object is a Signal the
	only difference for current code is that you can only register after
	start and need to reregister on each start. There is no problem with
	short running processes, the signal won't be called before the next
	main loop iteration, enough time to register. The good think about
	this is that you can use this InProgress object in async functions
	using yield_execution. It also makes the interface look similar to
	code already using InProgress. As a next step I will use InProgress
	for Threads. Since InProgress objects contain a second Signal for
	exceptions, this would make the interface simpler.

2007-02-12  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/inotify.c: 64 bit patch by Mathias Weber

2007-02-11  Dirk Meyer <dischi@freevo.org>

	* test/signals.py, src/tmpfile.py, src/notifier/url.py: update properties

	* src/tmpfile.py:
	Respect TMPDIR env and don't care about extra flags in the mode like
	the sticky bit as long as group and others have no read, write and
	execute rights.

2007-02-10  Dirk Meyer <dischi@freevo.org>

	* src/distribution/xmlconfig.py: handle dict type

	* src/xml.py: add unlink function

2007-02-07  Dirk Meyer <dischi@freevo.org>

	* src/distribution/xmlconfig.py: escape ' in desc

	* src/config.py:
	Dict with more than one Var fix; return items in Group in correct
	order on iter

2007-02-04  Dirk Meyer <dischi@freevo.org>

	* src/config.py: make it possible to interate over the config

2007-02-03  Dirk Meyer <dischi@freevo.org>

	* src/config.py: support - in config file

2007-01-23  Dirk Meyer <dischi@freevo.org>

	* src/notifier/url.py: use correct callbacks

	* src/notifier/__init__.py
	* src/notifier/url.py (added):
	add urllib2 wrapper based on threads

	* src/utils.py: rename Memberfunction to MemberFunction

	* src/utils.py: add Singleton class

2007-01-22  Jason Tackaberry <tack@urandom.ca>

	* test/callbacks.py, src/notifier/callback.py:
	Rework Signal class to use Callback and WeakCallback objects: when a
	callback is connected, a Callback object will be returned; fixed bug
	where doing cb == Callback(cb) wouldn't be True; simplified
	WeakCallback a bit (removed __call__ and created get_user_args()
	method); added __nonzero__ method that always returns True for Signal
	objects

2007-01-22  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py:
	support Signals/functions in YieldCallback.__init__

	* src/notifier/async.py: Always use once=True for InProgress

2007-01-20  Dirk Meyer <dischi@freevo.org>

	* src/notifier/nf_wrapper.py:
	Default recursive_depth of 2 is not enough when using yield functions
	and step() in epg. I need at least 3, so let us use 5.:)

	* src/notifier/yieldfunc.py: support yieldfunctions without return

2007-01-19  Dirk Meyer <dischi@freevo.org>

	* setup.py: set version higher than last release

2007-01-16  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/shmmodule.c:
	Use PyObject_DEL instead of PyMem_DEL which no longer works as of
	Python 2.5; fix provided by Pierre Ossman.

2007-01-16  Rob Shortt <rob@tvcentric.com>

	* src/config.py: if filename is None expanduser() fails

2007-01-15  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py:
	Add extra_libraries kwarg to check_cc() and compile() methods; fix
	kaa.display setup.py to use this for checking dfb evas engine.

2007-01-14  Jason Tackaberry <tack@urandom.ca>

	* src/config.py:
	Add _hash() method to each class and store schema hash with the config
	file; by default, do not overwrite config file if schema hasn't
	changed.

	* src/notifier/thread.py: Log an error when thread pipe has no data.

	* src/config.py:
	Call expanduser on load/save filename. Add 'create' kwarg to load for
	creating config files if they don't exist.

2007-01-13  Dirk Meyer <dischi@freevo.org>

	* src/utils.py: create function to track if a kaa app is running

	* src/__init__.py
	* src/tmpfile.py (added):
	move TEMP variable to extra file and add tempfile function

2007-01-12  Dirk Meyer <dischi@freevo.org>

	* src/config.py: fix unicde bug

	* src/notifier/callback.py: do not confuse Jason

	* test/signals.py (added)
	* src/notifier/callback.py:
	add Signals class (dict) for easier use of signal dicts

2007-01-09  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/__init__.py:
	Set fd paramater when we know it worked

2007-01-05  Dirk Meyer <dischi@freevo.org>

	* src/config.py: translate _ to - if needed

	* src/input/lirc.py: expose signal direct in the module

	* src/distribution/xmlconfig.py:
	make it possible to add default values for dict

	* src/config.py:
	Fix dict in dict or group in dict on save. It should still work for
	all the other cases, some stuff in it was very strang and made no
	sense. :)

2007-01-02  Dirk Meyer <dischi@freevo.org>

	* src/distribution/xmlconfig.py, src/distribution/__init__.py: prop set

	* src/config.py: make it look better (tested on popcorn config)

2006-12-30  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/inotify/__init__.py:
	Use non-block socket and log an error if data handler got no data;
	don't allow constructor to be called more than once (for singleton)

2006-12-30  Dirk Meyer <dischi@freevo.org>

	* src/config.py:
	Create INotify object when needed and not global. If it is done global
	the inotify fd will connect to the mainloop on import. Forking a
	helper process like beacon after the fd is connected causes some
	strange errors resulting in calling the wrong callback in the other
	process.

2006-12-30  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py, setup.py:
	Better support for RPM packaging via distutils bdist_rpm command.

	* src/distribution/core.py: More pythonic

2006-12-29  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py, setup.py:
	Check that Python.h exists if need to compile an extension module
	(hopefully solves a FAQ); indicate that lack of inotify in glibc is
	not an error (hopefully solves another FAQ).

2006-12-26  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py:
	Library.compile() should add include and library paths for that
	library.

2006-12-10  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py:
	When calling check_cc for an Extension, add all include and library
	paths as compile argments for all libraries added to that ext.

	* src/distribution/core.py: Use $CC, $CFLAGS, and $LDFLAGS.

2006-12-10  Dirk Meyer <dischi@freevo.org>

	* src/notifier/sockets.py: catch socket error

2006-12-09  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py: Better order.

	* src/rpc.py:
	Put DoS check back, but make it work for the case when server sends
	large amount of data along with response to client challenge.

2006-12-09  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: remove some extra check, I hope we do not need it

2006-12-02  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py: raise better exception

	* src/distribution/core.py: typo

2006-11-30  Dirk Meyer <dischi@freevo.org>

	* src/distribution/xmlconfig.py:
	remove <schema> from xml, use 4 spaces indent

2006-11-29  Dirk Meyer <dischi@freevo.org>

	* src/distribution/xmlconfig.py: add group and list parser, cleanup

	* src/distribution/xmlconfig.py (added)
	* src/distribution/build_py.py (added)
	* src/distribution/core.py:
	add config xml to python converter

	* src/distribution/__init__.py (added): add missing __init__.py

	* src/version.py
	* src/distribution/core.py (added)
	* src/distribution (added)
	* src/distribution.py (removed)
	* src/distribution/version.py (added):
	move distribution.py into a subdir

2006-11-29  Jason Tackaberry <tack@urandom.ca>

	* src/distribution.py:
	Include newline at end of code to compile (lack of newline flags a
	compiler warning)

2006-11-27  Jason Tackaberry <tack@urandom.ca>

	* src/ipc.py (removed): Move kaa.ipc into DEPRECATED/

2006-11-27  Dirk Meyer <dischi@freevo.org>

	* setup.py, MANIFEST.in: fix MANIFEST.in and release 0.1.1

2006-11-27  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py: Pad generated auth key to SHA1 block size, as with HMAC.

	* src/rpc.py: log auth failure on client end.

	* src/rpc.py:
	Don't read all data on socket unless authenticated; prevents possible
	DoS

2006-11-27  Dirk Meyer <dischi@freevo.org>

	* setup.py: update license

2006-11-27  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py: Remove more code duplication.

	* src/notifier/async.py: Better form.

	* src/rpc.py:
	Add some logging for authentication; fix bug where server could send a
	non-auth command to client before authentication completed; remove
	some code duplication.

	* src/rpc.py: Simplify the code path for packets before authentication.

	* src/rpc.py:
	Use a modified CRAM-SHA for authentication as opposed to a double-SHA
	(CRAM is makes offline attacks more difficult); add a comment that
	chosen plaintext attacks aren't very likely. (The salt was necessary
	with kaa.ipc where the client would initiate auth, but with rpc the
	server initiates auth, so salting the response only thwarts a CPA if
	the server is rogue.)

2006-11-26  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py:
	Merge back most of the auth logic (and comments) from kaa.ipc -- fixes
	2 DoS attacks and extends the auth process to be a 3-way handshake
	instead of 2-way to prevent server from being able to do rpc calls on
	client when secrets don't match; allow connecting an exposed function;
	some cleanups with __repr__

2006-11-22  Jason Tackaberry <tack@urandom.ca>

	* src/distribution.py:
	Don't use &> for redirection as it assumes bash, which may not be
	default shell.

2006-11-21  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/__init__.py,
	* src/notifier/pynotifier/dispatch.py,
	* src/notifier/pynotifier/nf_generic.py, src/notifier/pynotifier/log.py,
	* src/notifier/pynotifier/version.py, src/notifier/pynotifier/nf_gtk.py:
	sync with pynotifier trunk:

	fixed indentation

	removed $Id$ from header

	globally catch KeyboardInterrupt and SystemExit exceptions in step  to
	preserve maximum resursion depth errors

2006-11-21  Jason Tackaberry <tack@urandom.ca>

	* src/distribution.py:
	Fix problem where modules in src/extensions/foo were getting
	translated to a python path of kaa.module.extensions.foo instead of
	kaa.module.foo.

2006-11-19  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/pynotifier/nf_generic.py:
	Fix bug in notifier where KeboardInterrupt was not being handled
	during select in step().

2006-11-17  Jason Tackaberry <tack@urandom.ca>

	* src/distribution.py:
	Refactor distribution stuff to minimize code duplication.

2006-11-16  Dirk Meyer <dischi@freevo.org>

	* kaa-base.ebuild (added): add ebuild templates

	* setup.py: use setup from distribution.py

	* src/distribution.py: add support for ebuild generation

2006-11-12  Jason Tackaberry <tack@urandom.ca>

	* src/distribution.py: Remove needless string join.

	* src/distribution.py: Actually use maxlen :)

	* src/distribution.py: Don't error when version found == min version.

	* src/distribution.py:
	Use lexical comparison for versions, but pad version components to be
	equal length so cmp actually works right.

2006-11-12  Duncan Webb <duncan@freevo.org>

	* src/extensions/shmmodule.c: Changed functions to be a correct prototype

	* src/distribution.py:
	check does not work in all cases, eg SDL 1.2.5 is greater than 1.2.11
	This fixes this and should work in all cases

2006-11-09  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/objectrow.c: Add Id keyword.

	* src/extensions/inotify/__init__.py: Fix copyright.

	* src/extensions/inotify/__init__.py:
	Fix INotify MOVE event to no longer require MOVED_TO event for a
	corresponding MOVED_FROM event to occur in the same call to
	_handle_data().

	* src/extensions/inotify/__init__.py: Implement as singleton.

	* src/config.py:
	This assert is redundant. (Callback constructor already does it.)

2006-11-06  Dirk Meyer <dischi@freevo.org>

	* src/notifier/popen.py:
	deliver all data in queue before handling dead child

2006-11-01  Dirk Meyer <dischi@freevo.org>

	* test/callbacks.py: svn propset

	* src/extensions/objectrow.c, src/extensions/inotify/inotify.c:
	respect C standard, needs to be fixed in other modules, too

2006-10-30  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/__init__.py: oops, I broke it

	* src/decorators.py, src/config.py, setup.py, src/ioctl.py, src/ipc.py,
	* src/logger.py, src/extensions/inotify/__init__.py,
	* src/distribution.py, src/input/stdin.py, src/rpc.py, src/weakref.py,
	* src/db.py, src/extensions/objectrow.c, TODO, src/input/lirc.py,
	* src/strutils.py, COPYING, src/extensions/inotify/inotify.c,
	* src/__init__.py, src/utils.py, src/xml.py:
	Relicence kaa.base under LGPL. Add header to all files and point to
	the LGPL in all headers. Also remove trailing whitespaces.

	* src/input/bluetooth.py (removed):
	move bluetooth out of kaa.base, it is not LGPL compatible

2006-10-27  Dirk Meyer <dischi@freevo.org>

	* src/logger.py: use internal reference to original makeRecord

	* src/logger.py: next try to fix logger for python 2.5

	* src/logger.py: make logger work with python 2.5 (without testing)

2006-10-15  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/objectrow.c:
	Look in pickle for attribute if ATTR_INDEXED_IGNORE_CASE, not if
	ATTR_IGNORE_CASE.

2006-10-06  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/inotify.c: use perror to show the problem

2006-10-04  Jason Tackaberry <tack@urandom.ca>

	* src/db.py, test/callbacks.py, src/notifier/callback.py:
	Support weakref for functions; don't update types table if type hasn't
	really changed; support the case when modifying an existing type
	attribute; commit after registering object type attr, just to be safe;
	reload object types after updating attributes of an existing object
	type.

2006-09-26  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/callback.py, src/notifier/async.py,
	* src/notifier/__init__.py, src/notifier/timer.py,
	* src/notifier/event.py, src/notifier/jobserver.py,
	* src/notifier/popen.py, src/notifier/yieldfunc.py,
	* src/notifier/nf_wrapper.py, src/notifier/decorators.py:
	put kaa.notifier under LGPL 2.1

2006-08-11  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/objectrow.c: Fix the "major kaa.db bug"

2006-08-08  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: call callback signal even without connected stuff

2006-08-07  Dirk Meyer <dischi@freevo.org>

	* src/utils.py: add wait in daemonize to block until the child is ready

2006-08-06  Dirk Meyer <dischi@freevo.org>

	* src/notifier/timer.py: incr. log level to see if the bug is fixed

2006-08-05  Dirk Meyer <dischi@freevo.org>

	* src/notifier/popen.py:
	close the child socket is a good idea to avoid running out of
	filehandles :)

2006-08-04  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/shmmodule.c:
	Don't check memory status when detaching shmem segment. Actually this
	basic logic is broken in shmmodule, because it is possible for a
	segment to be destroyed (or rather marked for destruction) which means
	it technically doesn't exist, but it should otherwise function fine
	for any processes that have attached it. I'll revisit this code later,
	but for now this change allows us to detach from a shmem segment after
	it has been marked for destruction in another process.

2006-08-03  Dirk Meyer <dischi@freevo.org>

	* src/notifier/nf_wrapper.py: support notifier init options

	* src/notifier/pynotifier/__init__.py,
	* src/notifier/pynotifier/version.py, src/notifier/pynotifier/nf_gtk.py:
	sync with new pynotifier

	* src/db.py: require some higher sqlite version

2006-08-02  Jason Tackaberry <tack@urandom.ca>

	* src/db.py, src/extensions/objectrow.c:
	Support pickling ObjectRow objects; fixes a bug in beacon when doing
	dirname queries of a new directory that isn't yet in the db. (beacon
	returns a list of pickled ObjectRows instead.)

2006-08-01  Dirk Meyer <dischi@freevo.org>

	* src/db.py: check pysqlite version

2006-08-01  Jason Tackaberry <tack@urandom.ca>

	* src/db.py, src/extensions/objectrow.c:
	Integrate new ObjectRow row factory with kaa.db; remove all the cruft
	from kaa.db that has to do with normalizing rows; remove query_raw(),
	it's just query() now.

	* setup.py: Make glib optional.

2006-07-31  Dirk Meyer <dischi@freevo.org>

	* src/distribution.py: fix version check when using pkg-config

	* setup.py: print error

2006-07-31  Jason Tackaberry <tack@urandom.ca>

	* setup.py: Require glib.

	* src/extensions/objectrow.c (added)
	* setup.py:
	Initial work on custom C-based sqlite row factory. This is about 2-4
	times faster than the current normalize code. This introduces a
	dependency on glib, which isn't really a problem as glib is a pretty
	standard library nowadays.  Not integrated yet with kaa.db; will do
	that tomorrow.

2006-07-23  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/__init__.py: no need for the signal anymore

	* src/notifier/callback.py: return active() == false on python shutdown

	* src/rpc.py: raise special ConnectError exception

2006-07-22  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Rename _notifier_running to something more descriptive; add comment
	describing it.

2006-07-21  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/__init__.py: add small todo

	* src/notifier/callback.py:
	prevent weakrefs from calling anything on python shutdown

	* src/notifier/__init__.py: disconnect all signals on shutdown

	* src/config.py: remember loaded filename for save

	* src/rpc.py: fix error on debug

	* src/notifier/decorators.py: adjust to notifier change

2006-07-19  Jason Tackaberry <tack@urandom.ca>

	* test/callbacks.py (added): Add callbacks test script.

2006-07-18  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py: recursion can not happen with new pynotifier

2006-07-17  Dirk Meyer <dischi@freevo.org>

	* src/notifier/yieldfunc.py: support two kinds of __call__

2006-07-16  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/nf_generic.py, src/rpc.py,
	* src/notifier/pynotifier/log.py, test/asynctest.py,
	* src/notifier/pynotifier/__init__.py,
	* src/notifier/pynotifier/dispatch.py,
	* src/notifier/pynotifier/nf_gtk.py, src/input/stdin.py,
	* src/notifier/nf_wrapper.py, src/notifier/async.py, src/utils.py,
	* src/notifier/yieldfunc.py:
	set missing properties

	* src/notifier/pynotifier/__init__.py,
	* src/notifier/pynotifier/dispatch.py,
	* src/notifier/pynotifier/nf_generic.py, src/notifier/pynotifier/log.py,
	* src/notifier/pynotifier/version.py, src/notifier/pynotifier/nf_gtk.py:
	switch to pynotifier 0.5 (LGPL)

	* src/notifier/yieldfunc.py:
	make it possible to create a YieldFunction directly

2006-07-15  Dirk Meyer <dischi@freevo.org>

	* src/extensions/inotify/__init__.py: unregister socket on shutdown

	* src/rpc.py: avoid double close

	* src/rpc.py: write and read as fast as possible

	* src/rpc.py: close on shutdown

	* test/asynctest.py (added): add test for async calls

	* src/rpc.py: change interface and always return an InProgress object

	* src/notifier/__init__.py: adjust to moved fuctions/classes

	* src/notifier/thread.py:
	use InProgress on async MainThreadCallback calls

	* src/notifier/jobserver.py, src/notifier/decorators.py:
	move execute_in_thread to job.py and return an InProgress object when
	such a function is called.

	* src/notifier/yieldfunc.py:
	update yield function to accepts InProgress as return

	* src/notifier/async.py (added):
	InProgress not inherits from Signal and is moved to async.py

2006-07-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/__init__.py,
	* src/notifier/pynotifier/nf_generic.py,
	* src/notifier/pynotifier/nf_gtk.py:
	sync with pynotifier trunk

	* src/utils.py: do not reset umask

	* src/db.py: accept list and tuple in QExp

2006-07-12  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Fix not creating log object; Update Callback.__cmp__ to also check if
	the passed object is the callback object itself, as well as check if
	it's the callback we're wrapping. (Fixes a bug in connect_weak: when
	the referance dies, the callback doesn't get properly disconnected.
	This manifested itself during animations.)

2006-07-12  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py: error handling for emit callbacks

	* src/rpc.py: send delayed messages after auth

2006-07-11  Dirk Meyer <dischi@freevo.org>

	* src/notifier/pynotifier/__init__.py,
	* src/notifier/pynotifier/nf_generic.py, src/notifier/nf_wrapper.py:
	fix pynotifier generic

	* src/notifier/pynotifier/__init__.py (added)
	* src/notifier/pynotifier/dispatch.py (added)
	* src/notifier/pynotifier/nf_generic.py (added)
	* src/notifier/pynotifier/log.py (added)
	* setup.py
	* src/notifier/pynotifier/version.py (added)
	* src/notifier/nf_generic.py (removed)
	* src/notifier/pynotifier/nf_gtk.py (added)
	* src/notifier/pynotifier (added)
	* src/notifier/nf_wrapper.py:
	Copy current pynotifier with generic and gtk support into
	kaa.notifier.

	* src/notifier/popen.py: accept tuple

	* src/notifier/thread.py: move missing variables around

2006-07-11  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/shmmodule.c:
	Fix bug on 64 bit arg. (Should submit this upstream to RH)

	* src/notifier/nf_wrapper.py: Add default value for condition arg.

2006-07-10  Jason Tackaberry <tack@urandom.ca>

	* src/distribution.py:
	Support custom extra_compile_args; copy libraries, library_dirs, etc.
	in constructor so they can be safely modified after instantiaton.

2006-07-10  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py
	* src/notifier/sockets.py
	* src/notifier/callback.py
	* src/notifier/__init__.py
	* src/notifier/timer.py
	* src/notifier/popen.py
	* src/notifier/nf_wrapper.py (added):
	Create real notifier instance when needed. This makes it possible to
	select a new mainloop even after kaa is imported. After timer or
	sockets are added, a mainloop switch is not possible.

	* src/config.py: support multi-line doc in list

2006-07-10  Jason Tackaberry <tack@urandom.ca>

	* src/config.py, src/db.py, src/extensions/inotify/__init__.py:
	Get rid of the NoCopyCallback kludge -- kludge moved to Callback
	class. Fix bugs with deepcopying Config objects; add an autosave
	feature to Config.

	* src/notifier/callback.py: Implements cmp for callbacks.

	* src/notifier/callback.py: See docstring.

	* src/config.py:
	Fix bug where List with a Group schema would be saved as, for example,
	list.[0].foo = bar. It should be list[0].foo = bar. Also added repr to
	all objects for useful debugging.

	* src/config.py: Fixes for the lame deepcopy problem.

	* src/config.py:
	Add watch() API to config for config file monitoring; add
	set_filename() method for setting the default filename for the config
	object. load() no longer remembers the value passed to it, so code
	that relies on this will have to be changed.

	* src/extensions/inotify/__init__.py:
	Fix bug where watch doesn't get fully removed when DELETE_SELF occurs.

2006-07-09  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/inotify (added)
	* setup.py
	* src/extensions/inotify/__init__.py:
	Always build shm module, but put under kaa.shm; move inotify to
	kaa.base.

	* src/distribution.py: Terminology fixes.

	* src/distribution.py: Fix for building kaa modules on x86_64.

	* src/extensions/shmmodule.c: Fix some compiler warnings under -Wall

2006-07-09  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py: create _thread_notifier_pipe when needed

2006-07-09  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py, src/notifier/__init__.py:
	Fixes for when kaa.main() is started in another thread.

	* src/utils.py: A bit more elegant.

2006-07-08  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py:
	Don't return a list of results for which(); just the first one.

	* src/utils.py: Fix zombie when exit=False

	* src/utils.py (added): Add some utility functions.

2006-07-08  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py, src/notifier/popen.py:
	fix some exception handling

2006-07-06  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: update debug

	* src/notifier/__init__.py
	* src/notifier/yieldfunc.py (added):
	add support and doc(!) for using yield in functions

2006-06-24  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: add more doc

	* src/rpc.py: add doc

2006-06-23  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py: stop at system exit

	* src/rpc.py (added):
	Add a simple rpc module. It has much less features than kaa.ipc but it
	is possible to use this without any blocking (step() calling)

2006-06-11  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py: nicer exception debug

2006-04-29  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py, src/notifier/__init__.py:
	Change signal emit default return value to True, if any handlers
	return False then emit will return False. Removed step signal wrapper
	and pass the emit method directly to notifier again. (If any step
	signal handlers return False this dispatcher will get removed, but
	that's not a big deal, we just make sure we don't do that).

2006-04-29  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py: rename idle signal to step

	* src/xml.py: prevent crash

2006-04-28  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/__init__.py:
	Wrap idle signal emit in a function that ignores return value so
	notifier doesn't remove the dispatcher.

2006-04-25  Jason Tackaberry <tack@urandom.ca>

	* src/ipc.py: Stupid annoying exceptions on shutdown

	* src/ipc.py:
	Return false if read from socket failed (due to socket close, not due
	to nonblock read with no data) so that notifier will remove the fd
	handler; remove custom _debug and use logger debug instead.

	* src/db.py:
	Add vacuum method; add get_db_info method that returns some info about
	the database such as total object count, indexed keywords, available
	object types, count breakdown by type.

	* src/notifier/timer.py:
	And the clouds parted and a wonderous voice hath spake unto me from
	the heavens above: "thou shalt edit timer.py and modify thine inactive
	callback warning to debug." And the heathens and infidels trembled
	before the mighty voice, and the commandment was passed into law.

2006-04-22  Jason Tackaberry <tack@urandom.ca>

	* src/ipc.py: Don't propagate KeyboardInterrupt exceptions to remote.

	* src/db.py:
	Revert coersion for limit kwarg; changed my mind, this should be the
	caller's responsibility.

	* src/db.py:
	Also coerge string of digits to numeric type for limit kwarg.

	* src/db.py:
	Coerce string of digits into numeric type; fix typo in _query_keywords
	__doc__

	* src/db.py: Split keywords on digits too.

2006-04-21  Dirk Meyer <dischi@freevo.org>

	* src/weakref.py: better None support

	* src/weakref.py: revert change

	* src/notifier/popen.py: prevent recursion

	* src/weakref.py: fix a second True/False bug when _ref() is not None

2006-04-20  Dirk Meyer <dischi@freevo.org>

	* src/weakref.py: create weakref also for "False" objects

2006-04-19  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Some minor optimizations to keyword searching.

	* src/ipc.py: Exception cleanup

2006-04-17  Dirk Meyer <dischi@freevo.org>

	* src/notifier/nf_generic.py: fix typo

2006-04-16  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py, src/notifier/__init__.py:
	small code to support gtk notifier

2006-04-07  Dirk Meyer <dischi@freevo.org>

	* src/db.py: remove debug

	* src/ipc.py: remove debug

	* src/input/__init__.py, src/input/stdin.py:
	update stdin stuff, you must import kaa.input.stdin now

	* src/input/stdin.py: fix another bug when porting getch

	* TODO, src/notifier/__init__.py: update to missing utils file

	* src/input/__init__.py: import stdin as default (maybe not later)

	* src/ipc.py
	* src/notifier/__init__.py
	* src/input/stdin.py (added)
	* src/utils.py (removed):
	move stdin signal code (getch) from util to input

2006-03-31  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	remove "ON CONFLICT REPLACE" clause from index as it was removed from
	sqlite as of 3.3.3

2006-03-31  Dirk Meyer <dischi@freevo.org>

	* test/xml.py, test/decorator.py, src/input/bluetooth.py, src/config.py,
	* src/logger.py, src/notifier/decorators.py, test/config.py,
	* src/decorators.py, src/strutils.py, src/xml.py:
	set properties

	* src/notifier/.cvsignore (removed)
	* src/input/.cvsignore (removed)
	* src/.cvsignore (removed):
	remove .cvsignore files, we now use svn

2006-03-31  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py: Silence stupid exceptions on shutdown.

2006-03-27  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	Add case-insensitive columns via ATTR_IGNORE_CASE flag. For non-
	indexed  columns it will just call lower(column) in the sql query. For
	indexed columns it will actually store the value lower case in that
	column and use the pickle for the actual value. This means case-
	insensitive queries on indexed columns can still benefit from the
	index.

2006-03-25  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Finish a comment I started :)

	* src/db.py:
	Deprecated ATTR_KEYWORDS_FILENAME and instead added a heuristic to see
	if the text to index is a possible filename or not.

2006-03-25  Dirk Meyer <dischi@freevo.org>

	* src/logger.py: do not set log level

	* src/ipc.py: remove launch code

2006-03-21  Dirk Meyer <dischi@freevo.org>

	* src/config.py: fix comment stuff

	* src/ipc.py: prevent crash on shutdown

2006-03-19  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/sockets.py:
	Socket keeps ref cycle with notifier only while connected, so that
	disconnected sockets get deallocated without intervention from gc.

	* src/notifier/sockets.py: Add listen support to Socket class

2006-03-18  Dirk Meyer <dischi@freevo.org>

	* src/db.py: change doc to make highlight work with emacs :)

	* src/notifier/timer.py: do not call timer when already inactive

	* src/notifier/decorators.py: prevent recursion

2006-03-18  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Add "like" operator to QExpr

2006-03-18  Dirk Meyer <dischi@freevo.org>

	* src/db.py: do not use print

	* src/ipc.py: stop warning on shutdown

	* src/ipc.py: user logger and not print

2006-03-16  Rob Shortt <rob@tvcentric.com>

	* src/ipc.py:
	it will IPCDisconnectedError if disconnected, so return False

	* src/db.py: classic int() fix

2006-03-11  Dirk Meyer <dischi@freevo.org>

	* src/__init__.py, src/notifier/decorators.py:
	fix name conflict with weakref as module and function

	* test/xml.py (added)
	* src/libxml2.py (removed)
	* src/xml.py (added)
	* test/libxml2.py (removed):
	rename libxml2.py to xml.py

	* setup.py: there is no base dir anymore

	* src/libxml2.py (added)
	* src/ioctl.py (added)
	* src/weakref.py (added)
	* test/libxml2.py
	* src/ipc.py (added)
	* src/notifier/__init__.py
	* src/distribution.py (added)
	* src/utils.py (added)
	* src/config.py (added)
	* src/logger.py (added)
	* src/base (removed)
	* src/notifier/decorators.py
	* src/db.py (added)
	* src/version.py (added)
	* test/config.py
	* src/decorators.py (added)
	* src/strutils.py (added)
	* src/__init__.py:
	restructure kaa.base

2006-03-10  Dirk Meyer <dischi@freevo.org>

	* src/base/libxml2.py: handle empty attributes

	* src/base/distribution.py: fix stupid bug when using the global setup.py

	* src/base/distribution.py: start moving some stuff around

2006-03-05  Dirk Meyer <dischi@freevo.org>

	* src/input/bluetooth.py: only send when connected

2006-03-04  Dirk Meyer <dischi@freevo.org>

	* src/base/ipc.py: be more verbose

	* src/input/bluetooth.py: fix bluetooth init

	* src/base/distribution.py: make better test file

2006-02-26  Dirk Meyer <dischi@freevo.org>

	* src/base/libxml2.py: make it possible to read from memory

	* src/notifier/__init__.py: better shutdown handling

2006-02-24  Dirk Meyer <dischi@freevo.org>

	* src/base/distribution.py: change stdout/stderr handling

	* src/base/distribution.py: create Configfile class outside extention

2006-02-19  Dirk Meyer <dischi@freevo.org>

	* src/base/ipc.py: add function to autostart server if needed

2006-02-18  Dirk Meyer <dischi@freevo.org>

	* src/notifier/decorators.py: make timers weak to help the gc

2006-02-13  Dirk Meyer <dischi@freevo.org>

	* src/base/libxml2.py: add better import warning

	* src/base/libxml2.py:
	Some content unicode bugfixes, also replace all & with &amp; when
	using .content. If you need to set something with an entity, use
	set_content_raw. Also make it possible to add any kind of object as
	child as long as it as __xml__ defined returning a node

	* src/base/libxml2.py: fix unicode bug

	* src/base/decorators.py (added): start decorators module

	* test/libxml2.py, src/base/libxml2.py:
	update iterator to go thru all nodes

2006-02-12  Dirk Meyer <dischi@freevo.org>

	* test/libxml2.py (added)
	* src/base/libxml2.py (added):
	add libxml2 wrapper

2006-02-05  Dirk Meyer <dischi@freevo.org>

	* test/decorator.py, src/notifier/decorators.py:
	fix bug with more than one exposed function in a class

	* test/decorator.py (added)
	* src/notifier/__init__.py
	* src/notifier/decorators.py (added):
	Add some decorators to avoid duplicate code all this time. In many
	cases Timer or used to simulate stepping or delayed callbacks. And the
	execute_in_thread and execute_in_mainloop decorators will make sure a
	function is called in the correct thread context.

2006-02-02  Dirk Meyer <dischi@freevo.org>

	* AUTHORS (added)
	* TODO (added)
	* setup.py
	* COPYING (added)
	* MANIFEST.in (added)
	* README (added):
	add metadata

2006-02-01  Dirk Meyer <dischi@freevo.org>

	* src/notifier/popen.py: use isinstance and not type()

2006-01-30  Dirk Meyer <dischi@freevo.org>

	* src/input/lirc.py:
	Update lirc to make it possible to stop the lirc connection later and
	add some docs.

2006-01-29  Dirk Meyer <dischi@freevo.org>

	* src/input/lirc.py: add fixme

	* src/base/config.py: format multiline descriptions

	* src/notifier/callback.py: remove default notifier logger

	* src/base/logger.py: remove debug

2006-01-21  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py:
	better exception handling for thread/mainloop interaction

2006-01-15  Dirk Meyer <dischi@freevo.org>

	* src/input/bluetooth.py (added): add bluetooth into system

2006-01-09  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/sockets.py: SocketDispatcher missing from __all__

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/callback.py, test/config.py, src/notifier/__init__.py,
	* src/notifier/popen.py:
	Some cleanup in notifier/__init__.py (no need to explicitly reference
	what  things to import from notifier modules, since __all__ is
	specified); new function set_current_as_mainthread() which is called
	when notifier.loop() is called, which allows the main loop to run in
	another thread; fix for Process.is_alive()

2006-01-08  Jason Tackaberry <tack@urandom.ca>

	* src/base/config.py: Some fixes for proxying bool config variables.

	* src/base/ipc.py, src/base/weakref.py, src/base/config.py:
	Refactor config code a bit, and add monitor support; bug fixes in ipc;
	fixes in weakref for non-callable objects.

2006-01-05  Dirk Meyer <dischi@freevo.org>

	* src/base/strutils.py:
	add format function to take care of string and unicode

2006-01-05  Jason Tackaberry <tack@urandom.ca>

	* src/input/lirc.py: Fixes for lirc shutdown.

2006-01-02  Dirk Meyer <dischi@freevo.org>

	* src/base/strutils.py: fix copy error

	* src/base/config.py: use strutils to convert between str and unicode

	* src/__init__.py:
	import base.logger to make sure the python logging module is updated

	* src/base/__init__.py, src/base/db.py:
	adjustments to the new logger/string module

	* src/base/logger.py (added):
	add "fixes" to the python logging module to handle unicode

	* src/base/utils.py
	* src/base/strutils.py (added):
	move string utils into an extra file and add some more

	* src/base/config.py: add get and __nonzero__ function to Dict

	* src/base/config.py:
	handle empty values and print errors with the logger

2006-01-01  Dirk Meyer <dischi@freevo.org>

	* src/base/config.py: some more improvements for new types

2005-12-30  Dirk Meyer <dischi@freevo.org>

	* src/base/__init__.py: import weakref directly

	* test/config.py (added): config test app

	* src/base/config.py: clean up config module

2005-12-29  Dirk Meyer <dischi@freevo.org>

	* src/base/config.py: allow = in dict key and value

	* src/base/config.py:
	replace descr with desc

	fix more str/unicode bugs

	read config file in the specified encoding

	* src/base/config.py: fix unicode error handling

	* src/base/config.py: more or less final version

	* src/base/config.py: try different config layout using an extra object

2005-12-28  Dirk Meyer <dischi@freevo.org>

	* src/base/config.py: use dicts not lists

2005-12-28  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Override __repr__ for WeakCallback to display more information.

	* src/notifier/callback.py: Use __repr__ instead of __str__

2005-12-27  Jason Tackaberry <tack@urandom.ca>

	* src/input/lirc.py: Don't die if lirc config file doesn't exist.

	* src/notifier/timer.py: Add get_interval() method to Timer

	* src/base/distribution.py:
	Update check_library to use foo-config first, and then fall back on
	pkg-config

2005-12-26  Jason Tackaberry <tack@urandom.ca>

	* src/base/distribution.py:
	When using pkg-config, need to use --modversion to get the library
	version, since --version returns pkg-config's version.

2005-12-24  Jason Tackaberry <tack@urandom.ca>

	* src/base/distribution.py: Update check_library to support pkg-config

2005-12-23  Dirk Meyer <dischi@freevo.org>

	* src/base/config.py (added): first draft of config reader

2005-12-10  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/nf_generic.py:
	Fix bug in notifier where if a timer callback called unregister() on
	itself, it would not get properly unregistered. (Actually, it would
	get unregistered, but then it would get added again.)

	* src/notifier/callback.py:
	For callbacks connected with connect_once, disconnect before calling
	callback.

2005-12-08  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Handle the situation where a weak callback connected to a signal loses
	its ref during the signal emission process.

	* src/notifier/callback.py:
	Fix bug where WeakCallback._get_callback() could return None even
	though the reference was still alive (if the object it was proxying
	implements __len__ or __nonzero__); fix bug in signal disconnection if
	WeakCallback was specified (which as a result fixes a bug where weak
	callbacks would fail to get automatically disconnected when their ref
	died).

2005-12-06  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py: Add __ipc_noproxy_args kwarg.

	* src/notifier/callback.py, src/notifier/popen.py:
	Preseve old flags when setting descriptors non-block in IOHandler; fix
	Signal to support weak callbacks for the iterator; implent
	__contains__ for Signal.

2005-12-03  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Several cleanups for shutdown handling. Use WeakSocketDispatcher and
	ensure proxied objects get removed on shutdown, so that their
	destructors will get  called.

	* src/notifier/__init__.py:
	Added a small sleep to step() when called from non-mainthread to
	prevent  busy loops.

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/__init__.py, src/notifier/popen.py:
	Split Process.killall into top steps: stopall and killall. stopall is
	called before the kaa shutdown signal emits, whereas killall is called
	afterward. Also fixed a bug where notifier.step() could be called from
	a thread -- it was causing _thread_notifier_run_queue to be executed
	in non-mainthread and resulting in infinite loop in between that
	function and MainThreadCallback.__call__. Now calling step() from a
	thread simply calls wakeup(). (It should probably sleep a little bit
	as well, to prevent a busy loop.)

	* src/base/ipc.py:
	Fix bugs on shutdown where client sockets wouldn't get properly
	unregistered from notifier.

	* src/notifier/nf_generic.py: Replace tabs with spaces.

2005-11-30  Dirk Meyer <dischi@freevo.org>

	* src/notifier/nf_generic.py: use logging module

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/callback.py, src/notifier/__init__.py,
	* src/notifier/nf_generic.py, src/notifier/timer.py,
	* src/notifier/popen.py:
	switch to new pyNotifier version

2005-11-23  Dirk Meyer <dischi@freevo.org>

	* setup.py, src/base/ipc.py, src/input/lirc.py, src/input/__init__.py,
	* src/notifier/event.py, src/notifier/timer.py, src/notifier/sockets.py,
	* src/base/weakref.py, src/__init__.py, src/notifier/callback.py,
	* src/notifier/nf_generic.py, src/notifier/popen.py,
	* src/base/__init__.py, src/base/utils.py, src/notifier/__init__.py,
	* src/base/version.py, src/notifier/thread.py, src/base/distribution.py,
	* src/notifier/jobserver.py, src/base/ioctl.py, test/jobserver.py,
	* src/base/db.py:
	set keyword property

2005-11-19  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Rename isproxy to is_proxy; add is_proxy_alive function.

2005-11-19  Dirk Meyer <dischi@freevo.org>

	* src/base/__init__.py, src/notifier/__init__.py:
	move logging stuff to an extra function to enable it withut calling
	step()

2005-11-17  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py:
	acquire look only when needed (fix race condition)

	* src/notifier/thread.py: handle error when there is nothing to read

	* src/notifier/thread.py: fix bad wakeup timing whenusing notifier.step

2005-11-06  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Don't needlessly incref proxies in _proxy_data(); handle StopIteration
	exception so iterating over a remote object works properly.

	* src/base/ipc.py:
	Fix bug where proxied objects weren't getting associated with the
	IPCChannel for async replies.

	* src/notifier/sockets.py:
	Fix bug when async callback is specified in Socket.connect

	* src/base/ipc.py, src/notifier/sockets.py, src/notifier/__init__.py:
	Notifier-aware socket class

2005-10-31  Jason Tackaberry <tack@urandom.ca>

	* src/base/db.py: Fix bug introduced by last check-in

	* src/base/db.py:
	Ensure ATTR_SIMPLE attributes which are set to None still get included
	in the normalized result rows.

2005-10-31  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py, src/notifier/__init__.py:
	make it possible to wake up main thread

2005-10-31  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Handle "resource temporarily unavailable" exceptions for socket writes

2005-10-25  Jason Tackaberry <tack@urandom.ca>

	* src/base/db.py:
	Raise exception when registering object type with no keywords or
	attributes specified.

	* src/base/db.py: Remove automatic adding of 'dir' object type.

2005-10-17  Jason Tackaberry <tack@urandom.ca>

	* src/base/db.py: Bug fixes.

	* src/base/ipc.py:
	Raise IPCRemoteException when remote exceptions occur on server.

	* src/notifier/callback.py: Fix bugs in signal disconnection

2005-10-16  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Added set_prevent_recursion() method to Callback base class, which
	prevents a callback from recursing into itself.

2005-10-14  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py: Comment clarifications.

	* src/base/ipc.py:
	Add salt to auth response to prevent chosen plaintext attacks; add
	more comments for the auth code.

2005-10-13  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Implement authentication and this time try not to make it suck. Needs
	review.

	* src/base/ipc.py:
	Implement simple challenge authentication in ipc; various cleanups;
	fix bug with async calls.

	* src/base/db.py:
	Move some variable declarations to the top of the function.

	* src/notifier/callback.py:
	Removed unused dictionary interface from Signal; added __iter__ to
	Signal that iterates over callbacks for that signal.

2005-10-12  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py, src/base/db.py:
	Use list instead of string concatentation for constructing query
	string. Allow support for QExpr in parent attribute for queries.

	* src/notifier/__init__.py:
	Er, check notifier handler in both loop() and step()

	* src/notifier/__init__.py:
	Set default handler in step() rather than loop() for client apps that
	don't call main()

	* src/base/utils.py, src/base/db.py:
	Renamed query to query_raw and query_normalized to query. Added some
	convenience functions for dealing with raw datasets.

	* src/base/ipc.py: Support for pickling buffer objects

2005-10-10  Jason Tackaberry <tack@urandom.ca>

	* src/base/db.py:
	Added some internal convenience functions (_get_type_id and
	_get_type_attrs); changed the interface to register_object_type_attrs
	so that db attributes are specified as keyword arguments; added
	support for multi-column indexes.

2005-10-09  Jason Tackaberry <tack@urandom.ca>

	* setup.py: Change the message about shm module.

	* src/base/db.py:
	Change index on words_map to (object_id,object_type) instead of
	(object_type, object_id) for better performance; use triggers to
	handle decrementing file count in words table and keywords_objectcount
	in meta table; rename  _value_to_printable back to _list_to_printable;
	new method  _type_has_keyword_attr which returns True if the specified
	type has any  attribute that's ATTR_KEYWORDS; add method
	delete_by_query which allows deleting multiple objects based on an
	arbitrary query; fixed a bug when attrs keyword is specified in
	query(); fixed a bug where specifying a query limit could return more
	rows than requested.

2005-10-08  Jason Tackaberry <tack@urandom.ca>

	* src/base/db.py (added): Moved db to kaa.base

2005-10-07  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py: Implement support for async calls

2005-09-23  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py
	* src/notifier/signals.py (removed):
	remove unix signal support (never worked right)

2005-09-21  Jason Tackaberry <tack@urandom.ca>

	* src/base/distribution.py: Add -Wall to extra_compile_args

2005-09-18  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py:
	Add set_stop_command to Process class. A string or callback can be set
	here and will be used to try to gracefully terminate the process in a
	call to stop(). Since stop() gets automatically called on shutdown, in
	order to terminate processes gracefully on SystemExit, this method
	must be used to set a stop command/callback.

	* src/base/ipc.py:
	Turn debugging back off; make shutdown handling a bit less retarded;
	fix a KeyError bug I introduced in the last checkin.

	* src/base/ipc.py:
	Remove socket file on shutdown; don't send replies to decref/incref
	requests; don't raise exception if the socket is disconnected when we
	try to send a reply -- that's not really a serious condition and it
	can be handled by connecting to the "client_closed" or "closed"
	signals; some other small fixups I forget.

	* src/extensions/shmmodule.c (added)
	* src/extensions (added)
	* src/input/lirc.py
	* setup.py:
	Use SocketDispatcher for lirc instead of polling; add copy of
	shmmodule and install if it's not already available (seems shmmodule
	is not a standard distro module as I thought).

2005-09-18  Dirk Meyer <dischi@freevo.org>

	* src/base/ipc.py:
	test before reusing a unix domain socket, add support for kaa.TEMP

	* src/__init__.py: make sure we have a secure temp directory to play with

2005-09-15  Jason Tackaberry <tack@urandom.ca>

	* setup.py: Update setup.py for kaa.input

	* src/input/.cvsignore (added)
	* src/input (added)
	* src/input/lirc.py (added)
	* src/input/__init__.py (added):
	Add kaa.input, what will become an input subsystem for kaa. I have no
	idea yet how this will be designed, but I wanted to get some of my
	mebox lirc code here because I wanted lirc support in kaaplayer.
	kaaplayer will soon be rewritten to actually be useful, rather than a
	staging ground for spaghetti test code. kaa.input design will need to
	be discussed.

2005-09-11  Rob Shortt <rob@tvcentric.com>

	* src/base/ioctl.py (added): Add ioctl module from Freevo.

2005-09-11  Dirk Meyer <dischi@freevo.org>

	* src/base/distribution.py: remove bad kaa file hack

2005-09-10  Dirk Meyer <dischi@freevo.org>

	* src/base/distribution.py:
	Somebad hacks to make coding in C a little bit easier. Yes, I know
	it's ugly and a bad hack, I will correct it later.

2005-09-10  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Fix for 64bit arch; fix for __ipc_oneway calls still sometimes timing
	out (on high latency links).

2005-09-02  Jason Tackaberry <tack@urandom.ca>

	* src/base/ipc.py:
	Added get_ipc_from_proxy() function; renamed get_proxy_type() to
	_get_proxy_type() since it's not a public API; fixed a bug where
	proxied empty lists or dicts weren't getting properly registered for
	pickling.

	* src/notifier/sockets.py: Typo.

	* src/notifier/popen.py: Handle non-blocking I/O in popen wrapper.

	* src/notifier/sockets.py, src/notifier/nf_generic.py,
	* src/notifier/__init__.py, src/notifier/timer.py:
	Fix for step() in nf_generic to prevent infinite recursion when a
	timer callback calls step() (this patch was submitted upstream); fix
	SocketDispatcher unregister() so it passes the condition to
	notifier.removeSocket(); fix for Timer.stop() from other threads.

	* src/base/ipc.py (added):
	Initial import of my IPC stuff. It's working, but obviously lots of
	work needs to be done on it. :)

2005-09-01  Jason Tackaberry <tack@urandom.ca>

	* src/base/utils.py: Unicode helper functions

2005-08-25  Dirk Meyer <dischi@freevo.org>

	* test/jobserver.py (added)
	* src/notifier/__init__.py
	* src/notifier/jobserver.py (added)
	* test (added):
	add jobserver to handle callbacks in a sequence in a thread

2005-08-11  Dirk Meyer <dischi@freevo.org>

	* src/notifier/timer.py: add some doc

	* src/notifier/callback.py:
	remove hack with id, it can be solved otherwise

	* src/notifier/callback.py:
	Better unregister handling in __call__. Add a __str__ function for
	debug

2005-08-07  Dirk Meyer <dischi@freevo.org>

	* src/notifier/event.py: handle system exit exceptions

2005-08-06  Dirk Meyer <dischi@freevo.org>

	* src/notifier/event.py:
	adjust to kaa.notifier.Timer.start now using seconds

	* src/notifier/timer.py: set timer start parameter to be seconds

	* src/notifier/popen.py: set __dead to false on start

	* src/notifier/popen.py: change interface back to send the exit code

	* src/notifier/popen.py: add extra signal for completed with exit code

	* src/notifier/popen.py: add extra signal for completed with exit code

	* src/notifier/timer.py: remove bad assumtion, it breaks Freevo

2005-08-05  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/popen.py:
	Add start() method to Process -- process no longer gets automatically
	started in constructor, it must be started explicitly. The start()
	method can take a list or string of parameters to get appended on the
	command line. Command lines passed as strings now get converted to a
	list of parameters (quoting is honored). "completed" signal callbacks
	are passed the exit code of the process.

2005-08-05  Dirk Meyer <dischi@freevo.org>

	* src/notifier/popen.py:
	rename "died" signal in kaa.notifier to "completed"

	* src/notifier/popen.py: remove old callback code

	* src/notifier/thread.py: remove old callback code

2005-08-02  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py: Make signal.connect_once() work.

	* src/notifier/popen.py:
	Remove Process.readlines() because dischi doesn't like it :)

	* src/notifier/thread.py, src/notifier/sockets.py,
	* src/notifier/callback.py, src/notifier/__init__.py,
	* src/notifier/timer.py, src/notifier/popen.py:
	Ensure shutdown() is called from main thread; allow shutdown() to be
	called when notifier raises exception; add "exception" and
	"unregistered" signals to NotifierCallback -- attach to the exception
	signal of any notifier callback (Timer, SocketDispatcher, Weak*) and
	it will get called with the exception object, giving the callback an
	opportunity to stop the notifier callback from being unregistered;
	catch exceptions in popen.killall(); add "completed" and "exception"
	signals to Thread class.

	* src/notifier/thread.py, src/notifier/__init__.py:
	Collect zombies in kaa.shutdown(); make Thread exception handler
	handle any exception, not just those derived from Exception.

	* src/notifier/__init__.py:
	Check shutdown recursion after testing if the loop is still running.

	* src/notifier/__init__.py, src/__init__.py:
	Import shutdown() into kaa module; make shutdown() safe to be called
	from shutdown callbacks.

	* src/notifier/__init__.py, src/notifier/popen.py:
	Add signals to Process class so that it can be useful without
	subclassing; add readlines() function to Process class to read lines
	from process immediately rather than going through the notifier loop;
	kill processes after shutdown signal emits, rather than before.

2005-08-01  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py: Use insert/pop

2005-07-29  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py:
	Explicitly return None in MainThreadCallback for asynchronous
	invocation.

2005-07-27  Viggo Fredriksen <vifredr@users.sf.net>

	* src/notifier/popen.py: Fix typo.

2005-07-25  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/thread.py:
	_thread_notifier_run_queue needs to return True explicitly now that
	it's no longer being called by SocketDispatcher.

2005-07-25  Dirk Meyer <dischi@freevo.org>

	* src/notifier/popen.py: make stop thread safe

	* src/notifier/thread.py
	* src/notifier/sockets.py (added)
	* src/notifier/callback.py
	* src/notifier/__init__.py
	* src/notifier/timer.py (added)
	* src/notifier/signals.py
	* src/notifier/popen.py
	* src/notifier/event.py:
	make Timer, SocketDispatcher and Process thead safe

	* src/notifier/thread.py, src/notifier/__init__.py:
	add function to delect if we are in a thread or not

	* src/notifier/event.py: make it thread safe and change interface

	* src/notifier/thread.py, src/notifier/callback.py,
	* src/notifier/__init__.py:
	move thread stuff from callback.py to thread.py and adjust this file

2005-07-25  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py, src/notifier/__init__.py:
	New MainThreadCallback. The other classes (Timer, SocketDispatcher and
	their weakref varients) could derive from this as well. It provides a
	callback that executes in the main thread with optional synchronous
	execution (i.e. block until the main thread executes and returns).
	This will probably deprecate the stuff in thread.py as it doesn't
	require registering the thread with the notifier (i.e. you don't need
	to use notifier.Thread, which is impossible if the thread is created
	from C space). It's also better in that it will wake up the thread if
	it's sleeping inside a select.

2005-07-24  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py: set socket fd to _id

2005-07-23  Jason Tackaberry <tack@urandom.ca>

	* src/base/utils.py, src/notifier/__init__.py:
	Add space/backspace names to getch(); rename keypress to
	stdin_key_press_event.

2005-07-22  Dirk Meyer <dischi@freevo.org>

	* src/base/weakref.py: fix crash when ref is set

2005-07-22  Jason Tackaberry <tack@urandom.ca>

	* src/base/utils.py:
	Make getch suck a little bit less. Still needs work. Will return
	strings now (translated keycode or the literal letter) instead of
	integers.

2005-07-19  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Sanity check to detect if Python is shutting down.

	* src/notifier/callback.py, src/notifier/__init__.py:
	WeakCallback should return the callback's return value, not blindly
	return False.

2005-07-17  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py:
	add variable to prevent timer from restart when active

2005-07-16  Dirk Meyer <dischi@freevo.org>

	* src/base/distribution.py:
	check all parameters in a different call (needed for libpng-config)

	* src/notifier/event.py: copy list to make sure nothing is missed

	* src/notifier/event.py: rename self.args to self.arg

	* src/notifier/event.py: rename self.args to self.arg

	* src/notifier/event.py: add missing self

2005-07-15  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py
	* src/notifier/event.py (added):
	add event class and handler

2005-07-14  Dirk Meyer <dischi@freevo.org>

	* src/notifier/callback.py, src/notifier/__init__.py:
	remove select_notifier, use notifier.init before importing kaa

	* src/notifier/signals.py:
	use OneShotTimer from callback to schedule signal

2005-07-14  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py: Bug fixes to weakref destroy callback stuff.

	* src/notifier/callback.py:
	For Signal and WeakrefCallback, handle the case where weakrefs to user
	args become invalid. For Signals, automatically disconnect the
	callback, for WeakNotifierCallback, automatically call unregister.

	* src/notifier/callback.py, src/notifier/__init__.py:
	Fix bug in Signal.disconnect; add keypress signal for handling keys on
	stdin using utils.getch. Once we add an event subsystem to kaa, this
	would get moved there.

2005-07-13  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/callback.py:
	Fix bug in Signal.emit() where user args weren't getting passed.

2005-07-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/thread.py: use Timer

	* src/notifier/__init__.py
	* src/notifier/signals.py (added)
	* src/notifier/posixsignals.py (removed):
	rename posixsignals.py to signals.py again

	* src/notifier/__init__.py: remove import

2005-07-13  Jason Tackaberry <tack@urandom.ca>

	* src/base/__init__.py
	* src/base/utils.py
	* src/notifier/callback.py
	* src/base/weakref.py
	* src/notifier/__init__.py
	* src/notifier/nf_generic.py
	* src/notifier/signals.py (removed):
	Rewrote Signal class and moved it into callback.py; removed
	signals.py; fixed typo in nf_generic.py in removeDispatcher().

	* src/notifier/__init__.py: Fix typo of SIGNAL_DISCONNECTED

	* src/notifier/callback.py, src/notifier/__init__.py:
	Implement WeakOneShotTimer; don't weakref functions (only instance
	methods) so we can use closures for the Weak* family.

	* src/notifier/callback.py
	* src/notifier/__init__.py
	* src/__init__.py
	* src/notifier/signals.py
	* src/notifier/wrapper.py (removed):
	Refactored (ok, rewrote :))
	Callback/Timer/OneShotTimer/SocketDispatcher and weakref variants
	thereof, added shutdown and idle handlers as signals and provided
	kaa.signals dict to connect to them. Removed deprecated code for the
	above. Deprecated Function class and folded that functionality into
	Callback class via set_ignore_caller_args() method. Also added
	set_user_args_first() method.

2005-07-13  Dirk Meyer <dischi@freevo.org>

	* src/notifier/wrapper.py: add waek timer

2005-07-12  Dirk Meyer <dischi@freevo.org>

	* src/notifier/__init__.py
	* src/notifier/wrapper.py (added):
	add notifier wrapper classes

2005-07-12  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/nf_generic.py, src/notifier/__init__.py,
	* src/notifier/signals.py:
	Catch and log exceptions when executing dispatchers; replace some tabs
	with spaces.

2005-07-11  Jason Tackaberry <tack@urandom.ca>

	* src/base/weakref.py, src/notifier/__init__.py:
	Add container interface to weakref; when exceptions raise during main
	loop, print the stack trace before raising a new exception. (FIXME:
	need to find some way to propagate the traceback when raising the new
	exception.)

2005-07-10  Jason Tackaberry <tack@urandom.ca>

	* src/base/weakref.py:
	Use __getattribute__ and proxy __class__ so that isinstance() will
	succeed when you really want to test for the proxied object. Also test
	if wrapping an existing weakref proxy.

	* src/base/__init__.py
	* src/base/weakref.py (added):
	Add the weakref proxy class from freevo

	* src/base/utils.py: Make utf8() handle existing unicode strings.

	* src/base/utils.py (added)
	* src/notifier/__init__.py
	* src/notifier/signals.py
	* src/notifier/posixsignals.py (added):
	Added Signal class for callbacks in signals.py; Renamed old signals.py
	to posixsignals.py. Added utils for getch, utf8, and some weakref
	functions that will probably get replaced by something better.

	* src/__init__.py: Make kaa.main() do stuff :)

2005-07-07  Dirk Meyer <dischi@freevo.org>

	* src/base/version.py: use python cmp function

	* src/base/distribution.py
	* src/base/version.py (added):
	add extra version module

	* src/base/distribution.py: fix varname

	* src/notifier/.cvsignore (added)
	* src/notifier/thread.py (added)
	* src/notifier (added)
	* setup.py
	* src/notifier/callback.py (added)
	* src/notifier/nf_generic.py (added)
	* src/notifier/__init__.py (added)
	* src/notifier/signals.py (added)
	* src/notifier/popen.py (added):
	move notifier to base

	* src/base/distribution.py: make sure the config file is there

	* src/base/distribution.py: add function to check with cc

	* src/base/distribution.py: some path fixes

	* src/.cvsignore (added)
	* src (added)
	* src/base/distribution.py (added)
	* setup.py (added)
	* src/base/__init__.py (added)
	* src/__init__.py (added)
	* src/base/.cvsignore (added)
	* trunk/base (added)
	* src/base (added):
	add first version of kaa.base

