2012-05-13  Jason Tackaberry <tack@urandom.ca>

	* setup.py: Update API doc url

	* setup.py: Treat lack of PKG-INFO as indicative of dev version

	* setup.py:
	Automatically construct dev version number if installing from git

	* src/distribution/version.py:
	Use setuptools version comparison logic

	* src/timer.py:
	Add hours, minutes, seconds, next properties to AtTimer

	* src/timer.py:
	Rename AtTimer start() kwargs to hours, minutes, seconds

2012-05-12  Jason Tackaberry <tack@urandom.ca>

	* .gitignore: Ignore generated files ChangeLog and MANIFEST

	* setup.py, src/distribution/core.py, src/distribution/git2log.py
	(added):
	Auto-generate ChangeLog from git log

	* ChangeLog.in (deleted): Remove unused ChangeLog.in

	* src/__init__.py, src/async.py, src/callable.py, src/config.py,
	src/core.py, src/coroutine.py, src/dateutils.py, src/db.py,
	src/distribution/__init__.py, src/distribution/build_py.py,
	src/distribution/core.py, src/distribution/sphinxext.py,
	src/distribution/svn2log.py, src/distribution/version.py,
	src/distribution/xmlconfig.py, src/event.py,
	src/extensions/objectrow.c, src/extensions/utils.c, src/generator.py,
	src/gobject.py, src/inotify.py, src/input/lirc.py,
	src/input/stdin.py, src/io.py, src/ioctl.py, src/logger.py,
	src/main.py, src/net/mdns.py, src/net/tls/common.py,
	src/net/tls/gnutls.py, src/net/tls/m2.py, src/net/tls/tlslite.py,
	src/net/url.py, src/nf_thread.py, src/nf_wrapper.py, src/process.py,
	src/reactor.py, src/rpc.py, src/saxutils.py, src/sockets.py,
	src/strutils.py, src/thread.py, src/timer.py, src/utils.py,
	src/weakref.py:
	Remove $Id$ references leftover from svn (unused by git)

	* src/core.py: Change svn revision to git object id in comment

	* src/core.py: Document mainthread_callback_max_time units

	* src/core.py: Fix broken reference to self in CoreThreading

2012-05-11  Jason Tackaberry <tack@urandom.ca>

	* src/main.py, src/net/tls/openssl.py, src/process.py:
	Fix invalid reST in docstrings

	* src/db.py: Fix invalid reST in docstring

	* doc/async/coroutines.rst, doc/core/signals.rst, src/async.py:
	Improve InProgressAny/All and coroutine documentation

	* src/io.py:
	Do not consider channels in the process of closing as readable

	* src/process.py: Start process if necessary on communicate()

2012-05-07  Jason Tackaberry <tack@urandom.ca>

	* src/async.py:
	Make InProgressStatus.percentage float rather than int

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

	* src/core.py: Remove unnecessary lambda

	* src/__init__.py, src/async.py, src/callable.py, src/config.py,
	src/core.py, src/coroutine.py, src/db.py, src/event.py,
	src/inotify.py, src/io.py, src/main.py, src/net/mdns.py,
	src/net/tls/common.py, src/net/tls/gnutls.py, src/net/tls/m2.py,
	src/net/tls/openssl.py, src/net/tls/tlslite.py, src/nf_wrapper.py,
	src/process.py, src/rpc.py, src/sockets.py, src/thread.py,
	src/timer.py, src/utils.py:
	Ensure all logger names are prefixed with kaa.base

	* src/net/tls/openssl.py: Add secure_renegotiation_support property

	* src/core.py, src/main.py, src/process.py: Improve SIGCHLD handling

	* src/coroutine.py: Fix docstring reference to InProgressStatus class

	* src/async.py: Add a generic InProgressStatus.speed property

2012-04-16  Jason Tackaberry <tack@urandom.ca>

	* src/dateutils.py:
	Add new class TZAny and functions from_rfc822() and to_timestamp()

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

	Merge branch 'master' of github.com:freevo/kaa-base

	* src/config.py: Do not emit 'reloaded' signal after save()

2012-04-15  Adam Charrett <adam@dvbstreamer.org>

	Merge pull request #4 from charrea6/master

	* src/rpc.py:
	Change to checking connected property in rpc() rather than status as
	this is only available for client channels, not channels created when
	a client connects on the server side.

2012-04-14  Adam Charrett <adam@dvbstreamer.org>

	Merge pull request #3 from charrea6/master

2012-04-13  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: Store filename on save() for future watch()

	* src/config.py: Fix str() of VarProxy bools with Python 2.7

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

	* src/errors.py: Import missing traceback module

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

	* src/__init__.py, src/async.py, src/callable.py, src/errors.py
	(added), src/rpc.py, src/sockets.py:
	Move exception classes to a separate module that isn't lazy loaded

	* src/db.py: Remove deprecated sqlite pragma

2012-03-25  Adam Charrett <adam@dvbstreamer.org>

	* src/rpc.py: Remove syntactic sugar and rename exception.

2012-03-10  Adam Charrett <adam@dvbstreamer.org>

	* src/rpc.py:
	Add syntactic sugar to the RPC channel to make calling RPC functions
	more python like.

2012-02-18  Jason Tackaberry <tack@urandom.ca>

	* setup.py:
	Build _objectrow when python headers are present, not when they're
	_not_

	* src/db.py: Fix AttributeError on PyObjectRow deletion

2012-01-27  Jason Tackaberry <tack@urandom.ca>

	* src/io.py: Allow repr() for IOChannel with fileno=None

	* src/io.py:
	Set queue_close=True after testing if channel is already closed

2012-01-25  Jason Tackaberry <tack@urandom.ca>

	* src/net/tls/openssl.py:
	Support stateless session resumption via session tickets

	* src/generator.py: Fix reference to decorators in docstring

	* src/net/tls/openssl.py: Add support for SSL session reuse

	* src/distribution/version.py:
	Fix #1 by allowing (again) version comparisons with floats

2012-01-24  Jason Tackaberry <tack@urandom.ca>

	* doc/net/tls.rst:
	Reference TLS objects under net.tls instead of net.tls.openssl

	* src/net/tls/openssl.py:
	Document that new clients share listening socket's TLSContext

2012-01-23  Jason Tackaberry <tack@urandom.ca>

	* src/net/tls/__init__.py, src/net/tls/openssl.py:
	Export all public OpenSSL classes to tls module globals

	* test/sockettest.py: Fix TLS support in socket test

	* doc/net/tls.rst: Add new OpenSSL TLSSocket to documentation

	* src/net/tls/__init__.py:
	Replace all TLSSocket implementations with the new OpenSSL one

	* src/net/tls/openssl.py (added):
	Add new TLSSocket implemention using OpenSSL with ctypes

	* doc/utils.rst: Add missing utility functions to documentation

	* src/strutils.py: New function strutils.nativestr()

	* doc/core/socket.rst, src/sockets.py: Improve Socket documentation

	* src/sockets.py:
	Replace Socket.connected property with something faster and simpler

	* src/process.py: Improve Process docstrings

	* src/io.py: Improve IOChannel docstrings

	* src/main.py:
	Add new daemon kwarg to main.run() for threaded main loops

	* src/main.py: Introduce a thread event for shutdown

	* src/async.py: Don't attempt to wait() on event if already finished

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

	* src/weakref.py: Make __nonzero__ return True/False rather than 1/0

	* src/__init__.py:
	Lazy-load the other object for binary operators if it's also a
	_LazyProxy

	* src/__init__.py: At bitwise OR and AND operators to _LazyProxy

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

	* src/core.py:
	Name cached signals after class to avoid conflicts with ancestors

	* src/main.py:
	Put stop() in a OneShotTimer to mitigate possible deadlocks

	* src/coroutine.py:
	Add to _active_coroutines at the end of __init__ in case it raises

	* src/sockets.py:
	Avoid getpeername() syscall in Socket.connected if possible

	* src/io.py:
	Ensure IOChannel.alive is False while the channel is closing

	* src/coroutine.py:
	Resume coroutine immediately when a dependent InProgress finishes

	* doc/core/signals.rst, src/async.py, src/callable.py, src/core.py:
	In callables, change "user args" to "init args" for clarity

	* doc/async/coroutines.rst:
	Fix typo, and clarify what yielding write() means

	* src/core.py: Add class refs for InProgressAny/All to docstring

2012-01-18  Jason Tackaberry <tack@urandom.ca>

	* src/io.py: Fix regression from 7c811b5

	* doc/async/coroutines.rst, doc/async/generators.rst,
	doc/async/inprogress.rst, doc/async/threads.rst, doc/conf.py,
	doc/config.rst, doc/core/event.rst, doc/core/io.rst,
	doc/core/mainloop.rst, doc/core/process.rst, doc/core/signals.rst,
	doc/core/socket.rst, doc/core/timer.rst, doc/db.rst, doc/inotify.rst,
	doc/input.rst, doc/net/tls.rst, doc/rpc.rst, doc/utils.rst:
	Add module directives and descriptions so modindex is built

	* .gitignore (added):
	Ignore generated files in tree as part of build process

	* src/main.py: Tweak docstring formatting

	* src/io.py: Avoid creating closures in the read()/write() paths

	* src/io.py: Inherit mode of file-like objects passed to IOChannel

	* src/core.py:
	Cache signals definition during kaa.Object initialization

	* src/callable.py: Do not store function name in __init__

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

	* doc/index.rst:
	Prioritize git repo over distribution packages which are likely
	obsolete

	* doc/index.rst: Update documentation to reflect migration to GitHub

	* doc/_static/kaa.css, doc/_templates/layout.html,
	doc/async/index.rst (deleted), doc/async/inprogress.rst, doc/conf.py,
	doc/core/index.rst (deleted), doc/core/signals.rst,
	doc/core/timer.rst, doc/index.rst, doc/net/index.rst (deleted),
	doc/shm.rst (deleted):
	Restructure docs and update theme based on readthedocs.org

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

	* src/rpc.py:
	Use bytes object instead of buffer/memoryview optimization

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

	* src/async.py:
	Improve InProgress object creation performance by 4-5x

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

	* src/db.py: Remove another leftover debugging relic

	* src/db.py: Remove debug line

	* setup.py, src/db.py:
	Provide Python-native implementation of kaa.db.ObjectRow, and make
	the _objectrow extension optional

	* setup.py, src/extensions/inotify/__init__.py (deleted),
	src/extensions/inotify/fallback-inotify-syscalls.h (deleted),
	src/extensions/inotify/fallback-inotify.h (deleted),
	src/extensions/inotify/inotify.c (deleted), src/inotify.py (added):
	Adapt INotify module to use ctypes instead of a C extension

	* src/__init__.py:
	Allow _utils module to be optional even on Python 2.5.

	* setup.py, src/extensions/utils.c, src/utils.py:
	Make _utils extension module optional and only used for Python 2.5
	os.listdir replacement

	* src/coroutine.py:
	Add caveat about the group kwarg to coroutine() docstring

	* setup.py, src/extensions/shmmodule.c (deleted):
	Remove unmaintained and unused shm module

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

	* setup.py:
	Python 3: _objectrow now works on Python 3; disable some 2to3 fixers
	on certain files that cause problems

	* src/strutils.py: Add docstring for fsname()

	* src/db.py, src/extensions/objectrow.c:
	Python 3: fix kaa.db to work between Python 2 and 3

	* src/event.py:
	Python 3: implement __eq__ since __cmp__ is deprecated

	* src/utils.py:
	Python 3: make DecoratorDataStore use __self__ instead of im_self if
	available

	* src/rpc.py:
	Python 3: fix v3 bytes/str vs v2 str/unicode issues, and use pickle
	protocol 2 instead of HIGHEST_PROTOCOL to allow interop between v2
	and v3.

	* src/async.py:
	Python 3: remove traceback attached to exception objects that would
	otherwise prevent InProgress from being quickly deleted (due to
	cyclical references) and therefore prevent unhandled exceptions from
	being logged.

	* src/process.py:
	Python 3: use io.BytesIO if possible; works across all Python
	versions.

	* src/net/tls/__init__.py: Python 3: use absolute imports

	* src/thread.py:
	Python 3: use thread.ident to get current thread id (if supported, Py
	2.6+) and fix an argument type problem where thread id would not get
	passed properly to PyThreadState_SetAsyncExc() on Python 3

	* src/pynotifier/nf_generic.py:
	Python 3: indexing an exception object is no longer supported

	* src/saxutils.py:
	Python 3: stop using deprecated strutils functions; fix __str__ and
	add __bytes__ to work across Python versions.

	* src/extensions/inotify/__init__.py,
	src/extensions/inotify/inotify.c:
	Python 3: fix compatibility issues due to v3 bytes/str vs v2
	str/unicode

	* src/io.py:
	Python 3: fix compatibility issues due to v3 bytes/str vs v2
	str/unicode

	* src/config.py:
	Python 3: use codecs.open() (which works on both Python 2/3) to do IO
	against config file using unicode.

	* src/__init__.py:
	Python 3: backup object as _object before we clobber it, instead of
	using __builtins__; add __instancecheck__ and __subclasscheck__ to
	LazyProxy.

	* src/core.py, src/strutils.py:
	Python 3: new strutils fsname() and bl() functions

	* src/distribution/xmlconfig.py:
	Python 3: deal properly with xmlconfig bytes/str/unicode types in
	config vars

	* src/distribution/build_py.py:
	Allow disabling of multiple 2to3 fixers for files that are matched by
	multiple 'nofix' globs, and make this also work for non-kaa modules

	* src/distribution/version.py:
	Do a per-component lexical comparison rather than float-based
	comparison

2012-01-02  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	Fix bug where updating an ATTR_INDEXED_IGNORE_CASE attribute would
	lose all attributes stored in the pickle (unless another ATTR_SIMPLE
	attribute was also being updated)

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

	* src/__init__.py, src/distribution/version.py:
	Fix version comparison regression introduced with preliminary Python
	3 support

	* setup.py: Bump version to 0.99.2

	* setup.py, src/__init__.py, src/async.py, src/callable.py,
	src/config.py, src/core.py, src/coroutine.py, src/dateutils.py,
	src/db.py, src/distribution/__init__.py,
	src/distribution/build_py.py, src/distribution/core.py,
	src/distribution/sphinxext.py, src/distribution/svn2log.py,
	src/distribution/version.py, src/distribution/xmlconfig.py,
	src/event.py, src/extensions/inotify/__init__.py,
	src/extensions/inotify/inotify.c, src/extensions/objectrow.c,
	src/extensions/utils.c, src/generator.py, src/gobject.py,
	src/input/lirc.py, src/input/stdin.py, src/io.py, src/ioctl.py,
	src/logger.py, src/main.py, src/net/mdns.py, src/net/tls/__init__.py,
	src/net/tls/common.py, src/net/tls/gnutls.py, src/net/tls/m2.py,
	src/net/tls/tlslite.py, src/net/url.py, src/nf_thread.py,
	src/nf_wrapper.py, src/process.py, src/reactor.py, src/rpc.py,
	src/saxutils.py, src/sockets.py, src/strutils.py, src/thread.py,
	src/timer.py, src/utils.py, src/weakref.py:
	Update copyright year for 2012

	* src/utils.py: Minor doc updates

	* src/__init__.py, src/distribution/build_py.py,
	src/distribution/core.py, src/distribution/version.py:
	Export kaa.base version as kaa.__version__

	* src/config.py: Add new 'reloaded' signal on Config objects

	* setup.py:
	Make detection of old version and mixed eggs/non-eggs more robust,
	and make presence of python development files mandatory rather than
	optional

	* setup.py, src/extensions/objectrow.c:
	Remove glib requirement from kaa.base

2011-12-22  Jason Tackaberry <tack@urandom.ca>

	* src/async.py, src/core.py, src/coroutine.py, src/thread.py:
	Parameters for InProgress.throw() are now optional, with
	sys.exc_info() being used if not specified

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

	* src/db.py:
	query() now takes an orattrs kwarg that defines a list of attributes
	to OR instead of the default AND behaviour

2011-12-04  Jason Tackaberry <tack@urandom.ca>

	* src/async.py:
	Allow sequences and generators to be passed to InProgressAny/All

	* src/saxutils.py: Provide a way to get element attributes list

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

	* src/distribution/xmlconfig.py:
	Passthrough any xml/html markup contained in description fields.

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

	* src/gobject.py:
	If gobject is already imported using gi.repository use this gobject
	module instead of pygobject to avoid mixing the two different
	interfaces.

2011-11-28  Jason Tackaberry <tack@urandom.ca>

	* src/core.py: Import missing errno module

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

	* src/logger.py:
	Fix ensureRootHandler() to add handler to the root logger, not the
	current logger (self)

	* src/logger.py:
	New Logger method ensureRootHandler(). Do not implicitly create a
	root handler anymore, which fixes what was unarguably a bug that
	merely importing kaa would result in a root handler being installed.

	* src/core.py, src/extensions/inotify/__init__.py:
	Better handling of EAGAIN in core and INotify

	* src/sockets.py: Include errno with IOError exception.

	* src/async.py: TimeoutException requires arguments.

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

	* src/io.py:
	Comment rationale for invoking register() from the main thread.

2011-11-18  Jason Tackaberry <tack@urandom.ca>

	* src/__init__.py:
	Make path an optional argument in find_module, according to PEP302.

2011-11-14  Jason Tackaberry <tack@urandom.ca>

	* src/timer.py: Fix two bugs in AtTimer

2011-11-11  Jason Tackaberry <tack@urandom.ca>

	* src/sockets.py: Set IPV6_V6ONLY to 0 on the socket.

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

	* src/config.py:
	Fix bug where config file would not be saved if only schema had
	changed.

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

	* src/distribution/xmlconfig.py: Fix defaults for bool vars (again).

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

	* src/distribution/xmlconfig.py:
	Fix bug where config val of type='bool' and default='False' was being
	interpreted as default=True instead.

2011-11-06  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: Default autosave to False.

	* src/config.py:
	Allow initializing values when cloning a schema through calling it;
	fix bug with del config.somelist[idx] when items are Groups; default
	to last item of list for List.pop()

	* src/db.py: Add new lazy commit feature to Database

	* src/db.py:
	Replace type(foo) == sometype with isinstance(foo, sometype) to allow
	duck- typing; make Database a new-style class by subclassing object.

2011-11-05  Jason Tackaberry <tack@urandom.ca>

	* src/timer.py:
	Add new parameter 'now' to Timer.start() as a convenience to invoke
	the callback once immediately before starting the timer.

2011-11-04  Dirk Meyer <dischi@freevo.org>

	* src/db.py: remove debug

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

	* src/core.py: Remove socket.error altogether.

	* src/core.py: Import missing socket module.

2011-11-01  Jason Tackaberry <tack@urandom.ca>

	* src/core.py:
	Implement mainthread callback queue using the stdlib Queue module and
	specify an upper limit.   Now no longer holds the queue lock while
	the run_queue() loop is iterating.

2011-10-29  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Fix mixup between parent/type in docstring.

	* src/db.py: Fix docstring examples.

	* src/db.py: Minor docstring corrections.

	* doc/conf.py, doc/db.rst, src/db.py:
	Expand documentation for kaa.db.

	* doc/input.rst: Fix canonical vs non-canonical mode.

2011-10-27  Jason Tackaberry <tack@urandom.ca>

	* doc/config.rst (added), doc/core/event.rst (added),
	doc/core/index.rst, doc/core/mainloop.rst, doc/db.rst (added),
	doc/distribution.rst (added), doc/index.rst, doc/inotify.rst (added),
	doc/input.rst (added), doc/net/index.rst (added), doc/net/mdns.rst
	(added), doc/net/tls.rst (added), doc/shm.rst (added), doc/utils.rst
	(added):
	Flesh out doc structure a bit further, and actually document
	kaa.input.

	* doc/conf.py:
	Explicitly import certain modules before doc generation.

	* src/config.py, src/extensions/inotify/__init__.py,
	src/net/tls/m2.py, src/strutils.py, src/utils.py:
	Small doc tweaks; pull weakref into kaa.utils.

	* src/distribution/core.py:
	Remove horrible doc hack that tried and failed to work around the
	brain damage that is setuptools and its refusal to honour sys.path.

	* src/distribution/sphinxext.py:
	Rename kaa.base.foo to kaa.foo as well.

	* src/input/lirc.py:
	Improve init() documentation; raise ImportError rather than returning
	False if pylirc doesn't exist when calling init().

	* src/input/stdin.py:
	Remove 'event' from signal name, it doesn't really conform to the
	naming of the existing main signals.

	* src/xmlutils.py (deleted): Remove obsolete module.

2011-10-25  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: New property Database.filename

2011-10-24  Jason Tackaberry <tack@urandom.ca>

	* src/dateutils.py:
	Remove nonsensical utc2localtime() and localtime2utc() functions.

	* src/async.py, src/config.py, src/db.py, src/distribution/core.py,
	src/main.py, src/rpc.py, src/thread.py:
	Downgrade several FIXMEs to TODOs (FIXME should indicate something is
	broken, not just suboptimal); add two FIXMEs to InProgressAny/All
	surrounding how exceptions are handled with dependent InProgress
	objects.

2011-10-22  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py: Add new argument 'scope' to get_plugins()

	* src/config.py:
	Invoking a container to get a schema now returns a copy rather than
	the original; it is now possible to set a Group item on a container;
	fixed a unicode problem by explicitly casting to a raw string before
	writing to file.

	* src/config.py:
	Add a convenience hook where calling a container object will return a
	new schema object for that container.

	* src/config.py:
	Fix fqname for empty containers, which would resolve to the parent
	fqname and not include the container name.

2011-10-21  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/build_py.py:
	Skip the kaa/__init__.py checks if the module is not part of the kaa
	namespace.

2011-10-20  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: New kaa.db convenience function query_one().

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

	* src/__init__.py:
	Add setattr hook to _LazyProxy to allow on-demand importing when an
	attribute is set.

	* src/core.py:
	Make Signal callback count sanity check configurable via
	Signal.MAX_CONNECTIONS and default it to 1000 (from 40).

2011-10-10  Jason Tackaberry <tack@urandom.ca>

	* doc/async/inprogress.rst: Fix typo.

2011-10-09  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py:
	Remove epydoc support from wraps() since kaa no longer uses it, and
	fix sphinx detection (sphinx.builder doesn't exist, it's
	sphinx.builders).

	* src/coroutine.py:
	Make implementation of POLICY_SYNCHRONIZED for coroutines more
	efficient.

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

	* doc/_static/kaa.css, src/distribution/sphinxext.py:
	Support Sphinx 1.0.

	* doc/index.rst:
	Restructure "where do I get kaa.base" section and add (and recommend)
	install instructions for pip.

2011-10-03  Jason Tackaberry <tack@urandom.ca>

	* setup.py: Bump version to 0.99.1.

	* setup.py, src/distribution/core.py: Support installation via pip.

	* src/io.py, src/nf_wrapper.py: Add IO_EXCEPT support to IOMonitor.

	* src/utils.py: Fix docstring typo.

	* src/core.py:
	Move signal discovery of ancestors into separate staticmethod which
	is used by kaa sphinx extensions.

	* doc/Makefile, doc/conf.py, src/distribution/sphinxext.py:
	Fix document generation regressions.

	* src/distribution/svn2log.py:
	Fix old regression when svn doc generation fails.

2011-09-27  Jason Tackaberry <tack@urandom.ca>

	* src/sockets.py:
	Use os.strerror() instead of C-level strerror() via ctypes, which was
	used improperly anyway and could result in SIGSEGV.

2011-09-04  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: fix doc

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

	* src/process.py:
	Create InProgress object in __init__ so that kaa.inprogress() returns
	something useful even before start() is called.  start() will create
	a new InProgress() object (if necessary) before registering with the
	supervisor.

	* src/process.py:
	Finish the Process InProgress object at the same time as the 'exit'
	signal, rather than the 'finished' signal.  This seems more like what
	is expected.

	* src/process.py: Reset signal handlers in forked children.

	* src/core.py, src/main.py, src/nf_thread.py, src/nf_wrapper.py,
	src/process.py, src/utils.py:
	Do not install signal handlers at import time, and revamp how reaping
	of child processes is done.  This involves a number of changes:

	* src/pynotifier/nf_twisted.py:
	Don't spam when sockets are disconnected.

	* src/async.py:
	Print unhandled exceptions to stderr if the logger fails.

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

	* src/thread.py:
	Use == instead of 'is' to test for MAINTHREAD to allow for lazy
	importing.

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

	* src/core.py:
	Import missing module sys (sys.exc_info() is called later in
	core.py).

	* src/async.py, src/callable.py, src/config.py, src/coroutine.py,
	src/logger.py:
	Improve support for Python 3.

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

	* src/__init__.py:
	Use absolute import when importing the _utils module for replacing
	os.listdir.

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

	* src/net/tls/m2.py:
	Send SSL shutdown message to client when closing socket.

2010-09-29  Dirk Meyer <dischi@freevo.org>

	* src/net/url.py: ugly work-around for a bug in urllib2 using RLock

	* src/rpc.py:
	Catch problems when unpickeling the exception. This is needed because
	for some reason urllib2 Exceptions cannot be recreated

2010-09-26  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/inotify/__init__.py:
	Ensure byte strings are emitted, not unicode.

2010-09-10  Jason Tackaberry <tack@urandom.ca>

	* src/__init__.py, src/strutils.py:
	Make py3_b() and py3_str() more robust and use them as
	implementations for unicode_to_str() and str_to_unicode(), which are
	now considered deprecated as their naming is nonsensical in the
	context of Python 3.

	* src/db.py:
	Convert strings to unicode before splitting to generate terms for
	inverted indexes; use new py3_str() from strutils instead of
	str_to_unicode()

	* src/__init__.py:
	Partially revert r4369 which caused a regression in importing kaa
	modules.

2010-09-09  Jason Tackaberry <tack@urandom.ca>

	* src/extensions/inotify/__init__.py:
	Don't use b'foo' notation which isn't compatible with Python 2.5

	* doc/internal/index.rst:
	Doc update: async needs core, not nf_wrapper.

	* doc/index.rst: Include internals docs in ToC.

	* doc/internal/index.rst (added):
	Document the current state of circular dependencies.

	* src/__init__.py, src/async.py, src/callable.py, src/config.py,
	src/core.py (added), src/coroutine.py, src/db.py, src/event.py,
	src/generator.py, src/io.py, src/logger.py, src/main.py,
	src/net/tls/m2.py, src/nf_thread.py, src/nf_wrapper.py, src/object.py
	(deleted), src/process.py, src/pynotifier/__init__.py,
	src/pynotifier/nf_generic.py, src/reactor.py, src/rpc.py,
	src/signals.py (deleted), src/sockets.py, src/thread.py,
	src/timer.py, src/utils.py:
	Significantly restructure to reduce (but unfortunately not eliminate)
	circular imports.  Circular dependencies are at least manageable now
	and not as fragile as before.

	* src/extensions/utils.c:
	Module state size should be -1 if no state exists.

	* src/extensions/objectrow.c: Basic framework for Python 3 support.

	* setup.py:
	setup.py: Initial Python 3 support; be smarter about manipulating
	sys.path for importing directly from the source tree.

	* src/extensions/inotify/__init__.py,
	src/extensions/inotify/inotify.c:
	Update INotify module to support Python 3.

	* src/strutils.py: Python 3 transition helper functions.

	* src/distribution/core.py, src/distribution/version.py:
	Implement Python 3 compatible comparisons (cmp() and __cmp__ went
	away).

	* src/distribution/build_py.py: Remove leftover debugging.

	* src/extensions/utils.c: Make _utils extension compile on Python 3.

	* src/distribution/build_py.py, src/distribution/core.py,
	src/distribution/sphinxext.py, src/distribution/svn2log.py,
	src/distribution/xmlconfig.py, src/saxutils.py:
	Update all code needed for distribution (distribution/* and
	saxutils.py) to work with Python 3.1.  Is backward compatible with
	Python 2.5 (except for doc generation, which right now requires 2.6
	or later).

2010-09-05  Jason Tackaberry <tack@urandom.ca>

	* doc/index.rst: Replace Sourceforge URL.

	* src/__init__.py:
	Expose VERSION object into kaa namespace; implement __str__ in
	LazyProxy so that 'print kaa.VERSION' does the right thing.

2010-09-01  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py:
	Only add to sys.path build directories of the same python version AND
	architecture.

	* setup.py:
	Do not allow installation of kaa.base as a non-egg if an egg version
	is currently installed.

	* src/__init__.py:
	Rediscover kaa eggs if sys.path has changed; add a note about support
	of mixed eggs and non-eggs (that is: don't).

2010-08-28  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py:
	Add new function kaa.utils.get_machine_uuid() (migrated from beacon)

2010-08-22  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Filter out empty terms after splitting.

	* src/db.py:
	Don't discard digits when splitting search terms for inverted
	indexes.

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

	* src/distribution/__init__.py, src/distribution/core.py:
	add function to return the build directory name (this time for real)

	* src/distribution/core.py:
	add function to return the build directory name

	* src/distribution/core.py: check if sphinx-build is installed

2010-08-12  Jason Tackaberry <tack@urandom.ca>

	* src/config.py:
	Support the case where we create a non-CoW copy of a CoW var; remove
	useless self._value=self assignment from containers; fix bug where
	containers wouldn't properly copy on write by setting
	_cow_source=None in _copy_children().

	* src/config.py:
	Several kaa.config changes: - implement custom copy() rather than
	using copy.deepcopy().  copy.deepcopy() was a bit over-zealous and
	needed custom __getstate__/__setstate__ hooks anyway.  A custom
	copy() also lets us take care of other details like reparenting
	children of groups and containers. - add copy-on-write option to
	copy(), so that you can generate a "linked clone" of a config object.
	- Implemented _value as a property; the property will access the
	copy-on- write source if necessary.  Also lets us avoid a ref cycle
	in groups and containers since the property getter can just return
	self. - Base class does not attempt to deal with actual values, and
	the _value property must be implemented by subclasses. - Do not store
	schema for Group objects.  Schema doesn't make sense there and it was
	never used anyway. - Don't reparent schemas for containers.  Instead,
	reparent a copied schema object once it's going to be added to the
	container. - Make Config.filename a regular attribute instead of a
	property.  The property did nothing except pass through to an
	attribute anyway.

	* test/config.py:
	Handle proper exception when assigning incorrect type to a config
	val.  (This was changed from AttributeError to TypeError a while
	ago.)

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

	* src/extensions/inotify/__init__.py:
	Don't double-emit the same event when a file is moved within a
	monitored directory.

	* src/extensions/inotify/__init__.py:
	Several INotify changes: - Allow multiple instances of INotify -
	inherit from kaa.Object and implement signals with __kaasignals__ -
	add new INotify.mask_to_string() method - improve documentation -
	make number of arguments passed to signal callbacks consistent; it is
	now always 3 (mask, filename, target) where target is usually None.

2010-08-06  Jason Tackaberry <tack@urandom.ca>

	* src/config.py:
	Fix add_monitor() and remove_monitor() calls to VarProxy by actually
	proxying those calls to the wrapped config var.

	* src/config.py:
	Fix bugs related to copy(): don't deepcopy callables or INotify.

	* src/callable.py:
	Remove Callable.__deepcopy__: deepcopy() can handle callables since
	Python 2.5, and returning None didn't actually disable deepcopying,
	it just copied the Callable as None, which is clearly wrong.

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

	* src/io.py: Commit FIXME referenced in r4304.

	* src/sockets.py:
	Socket.listen() now accepts hostnames as well as IPs, so you can now
	pass e.g. 'localhost:11111' and it will resolve localhost and bind to
	that.

2010-07-24  Jason Tackaberry <tack@urandom.ca>

	* src/sockets.py:
	Fix bug when buffer_size is passed to Socket construtor; add a FIXME
	to IOChannel.

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

	* src/process.py:
	With Python 2.5, discover system libc via ctypes.util.find_library()
	instead of hardcoding libc.so.6 (B#2976967).

2010-02-01  Jason Tackaberry <tack@urandom.ca>

	* src/main.py: Fix documentation: threaded -> thread

	* doc/core/signals.rst:
	Fix the terminology. Currying is somethign else.

2010-01-27  Dirk Meyer <dischi@freevo.org>

	* src/net/tls/__init__.py, src/net/tls/gnutls.py (added):
	Some tests with gnutls -- still not what we need. See doc at the
	beginning of the file for details.

2009-11-28  Dirk Meyer <dischi@freevo.org>

	* src/net/tls/tlslite.py:
	Hook into the tlslite version from gdata if tlslite itself is not
	installed and gdata has a working copy.

2009-11-26  Dirk Meyer <dischi@freevo.org>

	* src/pynotifier/nf_generic.py:
	fix crash when a timer removed a socket

2009-11-18  Dirk Meyer <dischi@freevo.org>

	* src/distribution/xmlconfig.py:
	Use absolute import, freevo does not like it otherwise. I have no
	idea why it is needed, but it is.

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

	* src/config.py: Remove unused 'names' object.

	* src/config.py: Several changes and fixes:

2009-11-11  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/xmlconfig.py:
	Allow <enum>...</enum> as well as <values>...</values>

	* src/config.py:
	Fix bug where get_description() would fail to work with Lists.

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

	* src/timer.py:
	Timer.__call__ no longer needed due to optimization added to generic
	notifier.

	* src/pynotifier/nf_generic.py:
	Add several optimizations to the generic notifier.

	* src/callable.py:
	Optimize Callable argument merging by avoiding copying kwargs dict
	unless necessary.  Also avoid the extra call to _get_user_args(),
	which optimizes the common, non-weak case at the expense of a
	slightly uglier implementation of WeakCallable (requires WeakCallable
	overrides _merge_args).

	* src/rpc.py: Docstring update.

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

	* src/distribution/build_py.py:
	only install kaa/__init__.py for kaa.base and eggs

2009-10-23  Jason Tackaberry <tack@urandom.ca>

	* src/sockets.py: Remove leftover debug; fix exception message.

	* src/sockets.py:
	Allow 2-tuples to be passed to listen() and connect(), just assume
	flowinfo and scopeid are 0 in this case.

2009-10-21  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/build_py.py:
	Fix bug where setuptools ended up being required (which is not the
	intention)

2009-10-20  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py: Clean up some minor code duplication.

2009-09-29  Jason Tackaberry <tack@urandom.ca>

	* src/thread.py:
	Add new kwarg 'wait' to kaa.threaded() which sets whether thread is a
	daemon thread; update docstring for ThreadCallable.wait_on_exit.

2009-09-06  Jason Tackaberry <tack@urandom.ca>

	* src/config.py:
	Move implicit indexing into List object.  Fixes bug where loading a
	config with a line like 'foo[].bar = 42' would fail.

2009-09-06  Dirk Meyer <dischi@freevo.org>

	* src/strutils.py: also handle UnicodeEncodeError

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

	* src/__init__.py: Explain the python magic.

	* src/__init__.py:
	During lazy import, replace LazyProxy kaa.X with actual object X too
	(rather than just kaa.base.X).  Seems to fix a segfault with beacon,
	though I'm still not sure of the root cause of the segfault.

	* src/process.py, src/thread.py:
	Remove kludges that are no longer needed (as the kludge basically was
	moved into the lazy import code).

	* src/distribution/xmlconfig.py:
	Again, import directly from kaa.base.

	* src/config.py, src/distribution/core.py,
	src/distribution/svn2log.py:
	Internal code should import from kaa.base, not kaa.

2009-09-03  Jason Tackaberry <tack@urandom.ca>

	* src/__init__.py:
	Disable lazy importing for now due to causing segfaults in beacon;
	cache loaded module in sys.modules before releasing import lock.

	* src/pynotifier/dispatch.py:
	Don't use copy.copy() as it's terribly slow.

	* src/async.py:
	Fix bug where printing an InProgress would raise an exception when
	psyco is used.  psyco apparently messes with the stack.

	* src/signals.py:
	Raise a more sensible exception if non-callable is passed to
	Signal.connect()

	* src/sockets.py:
	- Convert IPv4 addresses to IPv6 before passing to bind(). - Fix
	incorrect docstring that said hostnames could be passed to listen()

	* src/__init__.py:
	Fix translation of kaa.foo -> kaa.base.foo.  Previously the same
	module could be imported multiple times.

	* src/process.py, src/thread.py:
	kaa.base internal code must not assume the kaa namespace has been
	populated yet, and therefore must import from kaa.base explicitly,
	not kaa.

2009-09-02  Jason Tackaberry <tack@urandom.ca>

	* src/io.py:
	When stealing another channel, generate new read/write queues for it
	rather than setting them to None, so that the original channel can be
	reused.

	* src/distribution/core.py: Remove extra blank line.

	* src/distribution/core.py:
	Import setuptools before checking plugins args.  Fixes bug where
	entry_points would not get passed to setup() even when --egg was
	specified.

	* src/__init__.py: Revert hasty and untested commit from r4232

	* src/__init__.py:
	Remove objects we don't want imported into the kaa namespace.

	* setup.py, src/__init__.py, src/distribution/build_py.py,
	src/distribution/core.py:
	- Install kaa.base to kaa/base, like all other modules. -
	kaa.distribution.core now auto-generates a kaa/__init__.py that does
	from kaa.base import * - Another attempt at supporting eggs.
	Disabled still by default for now. Use --egg to install as eggs.

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

	* src/process.py: revert doc change and "fix" emacs highlighting

2009-08-31  Jason Tackaberry <tack@urandom.ca>

	* src/sockets.py: Remove missed debug.

	* src/net/tls/__init__.py, src/net/tls/m2.py:
	- Alias M2TLSSocket as TLSSocket when tlslite isn't installed. -
	Avoid using newly deprecated Socket.address property.

	* src/sockets.py:
	- Add support for IPv6 - New properties 'local' and 'peer' -
	Deprecate 'address' property.

2009-08-30  Dirk Meyer <dischi@freevo.org>

	* src/process.py: add stopped property

2009-08-14  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py:
	Fix regression introduced in r4026 in which the 'closed' signal would
	never be emitted.

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

	* src/config.py:
	Factor out code actually common to Dict and List into base class
	Container, and subclass Dict and List from that; dict and list now
	behave a lot more like their respective datatypes.  It's now possible
	to make assignments:

	* src/distribution/xmlconfig.py:
	New functions to_code() and to_object(), handy for ad-hoc config xml
	parsing from inside scripts.

2009-07-29  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Fix regression introduced in r4213

	* src/db.py, src/extensions/objectrow.c:
	kaa.db bug fixes: - when updating an object by clearing an
	ATTR_SIMPLE attribute, the pickle was being updated in the database.
	- inverted index searches with multiple terms where where one of the
	terms had more than 200 matches could miss results. - fetching an
	unset attribute with flags ATTR_SIMPLE | ATTR_INVERTED_INDEX would
	return an empty list instead of None -- it should only do that when
	the attribute is named after an inverted index, e.g.: 'tags': (list,
	ATTR_SIMPLE | ATTR_INVERTED_INDEX, 'tags')

2009-07-27  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	- Try sqlite3 included in python 2.6 if no system install available -
	Attach commit handler on 'exit' signal rather than 'shutdown' -
	Attach commit handler as a strong ref, and only do so if changes were
	made to the db; remove handler on next commit - New methods
	set_metadata() / get_metadata()

2009-07-19  Dirk Meyer <dischi@freevo.org>

	* src/distribution/core.py: disable setuptools plugin handling

	* src/nf_wrapper.py:
	Remove Signals('exception', 'unregistered') in NotifierCallback. They
	are not needed and cause some trouble because of an import statement
	inside the constructor.

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

	* src/utils.py: remove sysimport util, use absolute_import instead

	* src/__init__.py:
	do not expose NotifierCallback and WeakNotifierCallback

	* src/gobject.py: no need for sysimport to import gobject

2009-07-03  Jason Tackaberry <tack@urandom.ca>

	* src/utils.py:
	When location is specified, import plugins relative to the calling
	module.

	* doc/_static/kaa.css: Allow multiline notes too.

2009-07-02  Jason Tackaberry <tack@urandom.ca>

	* src/__init__.py, src/distribution/core.py:
	Failed experiment: disable eggs for now.  The problem stems from the
	fact that 'kaa' is both a namespace and a module (kaa.base).  This
	reality is hopelessly irreconcilable with setuptools.

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

	* src/__init__.py: Import hook tweaks.

	* src/main.py:
	Don't need to nest try/except within try/finally anymore, since
	python 2.5 supports try/except/finally.

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

	* src/utils.py:
	If a plugin load fails, pass exception back through the returned dict
	rather than bubbling it up to the caller.

	* src/__init__.py:
	Don't reference 'object' because it may be the module kaa.object if
	that happened to have gotten imported.

	* setup.py, src/distribution/core.py:
	Disable zip_safe, it's not, um, safe. :)

	* src/async.py:
	Calculate IP name on-demand; fix exception when printing InProgress
	created directly by user.

	* src/__init__.py, src/async.py, src/io.py, src/logger.py,
	src/process.py:
	- Don't lazy-import kaa.logging, so that logging.DEBUG2 is available
	immediately - use log.debug2() for read/write debugs in IOChannel -
	Test self._objects after calling _check_prefinished() - new method
	Process.communicate(), just like the standard
	subprocess.Popen.communicate() method

	* src/process.py, src/thread.py:
	kaa.generator and kaa.coroutine function names we export collide with
	modules of the same name.  With lazy importing, it's possible that
	the modules could replace the LazyProxy objects, which is obviously
	not what we want.  So import the names from kaa instead of .generator
	or .coroutine.

2009-06-29  Jason Tackaberry <tack@urandom.ca>

	* src/main.py:
	Reset _shutting_down on run(); allows main loop to be stopped and
	started multiple times.

	* src/async.py, src/main.py:
	Indicate whether an InProgress is finished or not in its repr(); if
	main loop is run in a thread at the interactive interpreter, make
	that thread a daemon thread.

	* setup.py, src/__init__.py, src/distribution/core.py:
	More robust module searching; fix zip_safe typo.

	* src/__init__.py:
	Reinstate namespace declaration for pkgconfig (it was needed after
	all, for subtle and mysterious reasons); if a sub module like
	kaa.distribution is imported from within an egg, check the egg first
	before any on-disk tree. (Mostly a workaround for when multiple
	versions of kaa.base are installed, both as on-disk tree and as an
	egg.)

	* src/__init__.py: Describe a bit better some of the metaclass magic.

	* src/timer.py: Fix regression referencing MainThreadCallable.

	* src/__init__.py:
	- New lazy importing of kaa.base submodules; decreases import time of
	kaa module fairly substantially. - Removed declare_namespace() for
	pkg_resources; I'm unsure that it did anything useful. -
	Acquire/release import locks inside the custom import hooks.

	* src/thread.py: Fix regression with progress=True.

	* src/async.py, src/generator.py, src/io.py, src/main.py,
	src/nf_wrapper.py, src/object.py, src/process.py, src/signals.py,
	src/thread.py, src/timer.py:
	Make an attempt to improve the circular import situation.  As a
	result of these changes, modules can be safely be loaded
	independently (i.e. doesn't require async to be imported first as a
	workaround).

2009-06-28  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/core.py: Remove apparently incorrect command.

	* src/distribution/core.py: Add --noegg option.

	* setup.py:
	Remove previously installed egg for kaa_base from sys.path before
	importing distribution.core so that src/ takes precedence.

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

	* src/utils.py:
	Completely revamp get_plugins() to better support eggs.

	* src/distribution/core.py:
	Don't make clean for docs; doc generation is starting to get slow,
	and taking advantage of the pickling that sphinx does speeds it up
	quite a bit.

	* src/distribution/core.py:
	Create custom loader script for sphinx-build that munges sys.path
	early.

	* src/distribution/core.py:
	Slightly different way of checking for existence of setuptools (makes
	testing different scenarios easier).

2009-06-26  Jason Tackaberry <tack@urandom.ca>

	* setup.py, src/__init__.py, src/distribution/core.py:
	Support setuptools and eggs (and use by default if available on
	system).  It ended up being quite a bit more work than I expected,
	but eggs are cool, and very popular nowadays, so we should support
	them.

	* src/main.py:
	Slightly better wording, because the main loop can be running in
	another thread than what Python calls the main thread.

	* doc/index.rst: Link to some terms in introduction paragraph.

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

	* setup.py:
	Set kaa.base url to online api docs, since wiki is getting terribly
	crufty.

	* setup.py: Fix broken language.

	* doc/async/threads.rst, doc/core/signals.rst, doc/index.rst:
	Add info on where to get kaa; other minor changes.

	* setup.py: Flesh out summary and description fields.

	* src/distribution/core.py: Update default URL for kaa.

	* setup.py: It's time to bump to 0.99.0.

	* src/distribution/core.py:
	import setuptools if available, to provide the bdist_egg command; add
	description to 'doc' command.

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

	* doc/_static/kaa.css, src/distribution/sphinxext.py:
	If synopsis section has no members, don't output <table> element; add
	style for 'nomember' div.

	* src/thread.py: Better wording.

	* src/thread.py:
	Clarify the statement that it's not possible to abort an abort().

	* doc/_static/kaa.css: Allow multiline warnings.

	* src/thread.py: Fix conflation between ticks and bytecodes.

2009-06-13  Jason Tackaberry <tack@urandom.ca>

	* src/coroutine.py, src/timer.py: Raise more appropriate exceptions.

2009-06-11  Jason Tackaberry <tack@urandom.ca>

	* doc/async/generators.rst, doc/async/threads.rst, doc/core/io.rst,
	doc/core/process.rst, doc/core/signals.rst, doc/core/socket.rst,
	doc/core/timer.rst, doc/rpc.rst, src/distribution/sphinxext.py:
	Synopsis isn't automatically added now.  You can add it by using a
	:synopsis: option for the kaaclass directive, or explicitly using the
	.. autosynopsis:: directive.

	* doc/async/inprogress.rst, doc/async/threads.rst:
	Minor thread doc updates.

	* src/__init__.py, src/async.py, src/gobject.py, src/io.py,
	src/main.py, src/thread.py, test/asynctest.py:
	Implement thread pool pattern.  Replaces JobServer.

	* src/utils.py:
	fork() utility function that can be used after the mainloop has been
	started.

2009-06-09  Jason Tackaberry <tack@urandom.ca>

	* TODO, src/async.py: Add a todo item, and fix a docstring typo.

	* src/io.py, src/sockets.py: New method IOChannel.steal()

	* src/signals.py: Expose callbacks as property.

2009-06-08  Jason Tackaberry <tack@urandom.ca>

	* doc/async/inprogress.rst, doc/async/threads.rst, src/async.py,
	src/process.py, src/thread.py, src/timer.py:
	Doc updates.

2009-06-06  Jason Tackaberry <tack@urandom.ca>

	* src/config.py, src/distribution/svn2log.py, src/main.py,
	src/rpc.py, src/weakref.py:
	Silence DeprecationWarning messages in python 2.6 by fixing code that
	uses deprecated functionality.

	* src/net/tls/m2.py:
	There may be multiple "cert already in hash table" errors caused when
	loading ca bundle.

2009-06-03  Jason Tackaberry <tack@urandom.ca>

	* src/net/tls/m2.py: clientHello -> hello

	* src/net/tls/m2.py:
	Rename proxy to wrapper; use separate attributes for plaintext and
	ciphertext buffers rather than a buffers dict; remove trailing
	whitespace on some lines.

	* src/net/tls/m2.py: Remove completed todo.

	* src/net/tls/m2.py: Get rid of needless _ptr() method in proxies.

	* src/net/tls/m2.py: More minor doc adjustments.

	* src/net/tls/common.py, src/net/tls/m2.py:
	Make M2TLSSocket a fair bit more robust, fixed a few bugs, and added
	some comments.

2009-06-02  Jason Tackaberry <tack@urandom.ca>

	* src/net/tls.py (deleted), src/net/tls/__init__.py (added),
	src/net/tls/common.py (added), src/net/tls/m2.py (added),
	src/net/tls/tlslite.py (added):
	Completely rewrote M2TLSSocket to use openssl BIO pairs for more
	reliable async IO; split out backend implementations into separate
	files.

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

	* src/async.py:
	Fix bug where wait() called on a prefinished IPAny would barf.

	* src/__init__.py, src/logger.py:
	Allow location of file:lineno to be overridden in log lines (by
	passing extras={'location': (filename:lineno)} to log method); wrap
	line before 120 cols.

2009-05-29  Dirk Meyer <dischi@freevo.org>

	* src/__init__.py: improve debug, show where Callback is used

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

	* doc/async/threads.rst, doc/core/io.rst, doc/core/mainloop.rst,
	doc/core/signals.rst:
	Doc updates for Callback -> Callable rename.

	* src/nf_wrapper.py: Use Signals object.

	* src/__init__.py:
	Make old Callback names avalailable, but warn once when instantiated.
	We'll remove this some time during the prerelease cycle of kaa.base.

	* API_CHANGES, doc/async/coroutines.rst, doc/async/inprogress.rst,
	doc/core/mainloop.rst, doc/core/signals.rst, src/__init__.py,
	src/async.py, src/callable.py (added), src/callback.py (deleted),
	src/config.py, src/coroutine.py, src/event.py, src/io.py,
	src/net/tls.py, src/net/url.py, src/nf_wrapper.py, src/process.py,
	src/reactor.py, src/rpc.py, src/signals.py, src/thread.py,
	test/asynctest.py, test/callables.py (added), test/callbacks.py
	(deleted), test/jobserver.py:
	1. Callback -> Callable, WeakCallback, WeakCallable, CallbackError ->
	CallableError 2. InProgressCallback -> InProgressCallable 3.
	ThreadCallback -> ThreadCallable, MainThreadCallback ->
	MainThreadCallable 4. NamedThreadCallback -> ThreadPoolCallable

2009-05-28  Jason Tackaberry <tack@urandom.ca>

	* src/distribution/xmlconfig.py: Don't mistake "1.2.3" as a float.

	* src/distribution/xmlconfig.py: Support detection of float types.

2009-05-27  Jason Tackaberry <tack@urandom.ca>

	* src/db.py, src/extensions/objectrow.c:
	Don't store empty list in pickle for ivtidx attributes, but return an
	empty list from ObjectRow when accessing them.  (Basically just
	defers creation of the empty list from insert time to access time.)

	* src/logger.py: Custom logger class with debug2() method.

	* src/db.py, src/extensions/objectrow.c:
	kaa.db updates: - ObjectRow now implements 'in' operator for O(1)
	inclusion tests - Fix bug in ObjectRow where len(objrow) would fail
	for ObjectRow objects returned by Database.add() - Make ObjectRow
	iterable - Database methods now _also_ accept ObjectRow objects in
	all places that previously only accepted (type, id) tuples. - Rename
	Database.delete_object() to delete() -- another API change, but I
	missed this one in yesterday's commit :( - new method: reparent() -
	convenience method to change parent of object - new method: retype()
	- converts an object of one type to another - new method: get() -
	fetch a single object from the database

2009-05-26  Jason Tackaberry <tack@urandom.ca>

	* test/jobserver.py: Sync example to API changes.

	* API_CHANGES, NEWS:
	Add more API_CHANGES based on a perusal through ChangeLog; update
	NEWS for 0.6.0 release.

	* test/generators.py: Add one more test to generators test.

	* doc/core/index.rst: Add TODO.

	* API_CHANGES.txt (deleted), MANIFEST.in:
	Remove renamed API_CHANGES.txt; add generated html docs to manifest
	so they get included in the release.

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

	* API_CHANGES (added), doc/core/process.rst:
	Lose the extension on API_CHANGES.txt so it's in line with the other
	UPPERCASE files; sync docs to Process2 -> Process rename.

2009-05-25  Dirk Meyer <dischi@freevo.org>

	* src/net/url.py: fix import

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

	* API_CHANGES.txt:
	Add note about delimiting semantics in new Process class.

	* API_CHANGES.txt, TODO:
	Update API changes; remove completed items from TODO

	* src/__init__.py, src/main.py, src/popen.py (deleted),
	src/process.py:
	Remove old and busted kaa.Process, and replace with new hotness
	kaa.Process2.

	* API_CHANGES.txt: Update API changes.

	* src/__init__.py, src/async.py, src/coroutine.py, src/net/url.py,
	src/thread.py, src/utils.py:
	InProgress.Progress -> InProgressStatus.

	* src/config.py, test/kaaconf-editor.py:
	config.Group.get_variables() -> variables property;
	Group.get_parent() -> parent property (although this now means that
	variables and parent are reserved and can't be used in config
	schemas).

	* src/db.py: add_object() -> add(); update_object() -> update()

	* src/net/url.py, src/thread.py:
	ThreadCallback.wait_on_exit() -> property

	* src/coroutine.py:
	CoroutineInProgress.set_interval -> CoroutineInProgress.interval
	property

	* src/callback.py:
	WeakCallback.set_weakref_destroyed_cb ->
	WeakCallback.weakref_destroyed_cb property

	* API_CHANGES.txt, README: Doc updates.

	* setup.py, src/__init__.py, src/async.py, src/callback.py,
	src/config.py, src/coroutine.py, src/dateutils.py, src/db.py,
	src/distribution/build_py.py, src/distribution/core.py,
	src/distribution/sphinxext.py, src/distribution/svn2log.py,
	src/distribution/version.py, src/distribution/xmlconfig.py,
	src/event.py, src/extensions/inotify/__init__.py, src/generator.py,
	src/gobject.py, src/input/lirc.py, src/input/stdin.py, src/io.py,
	src/ioctl.py, src/logger.py, src/main.py, src/net/mdns.py,
	src/net/tls.py, src/net/url.py, src/nf_thread.py, src/nf_wrapper.py,
	src/object.py, src/popen.py, src/process.py,
	src/pynotifier/__init__.py, src/pynotifier/dispatch.py,
	src/pynotifier/log.py, src/pynotifier/nf_generic.py,
	src/pynotifier/nf_gtk.py, src/pynotifier/nf_twisted.py,
	src/pynotifier/version.py, src/reactor.py, src/rpc.py,
	src/saxutils.py, src/signals.py, src/sockets.py, src/strutils.py,
	src/thread.py, src/timer.py, src/utils.py, src/weakref.py,
	src/xmlutils.py:
	Remove useless (C) in copyright notice.  It is not proper form.

	* setup.py, src/async.py, src/callback.py, src/config.py,
	src/coroutine.py, src/dateutils.py, src/db.py,
	src/distribution/build_py.py, src/distribution/core.py,
	src/distribution/sphinxext.py, src/distribution/svn2log.py,
	src/distribution/version.py, src/distribution/xmlconfig.py,
	src/event.py, src/extensions/inotify/__init__.py,
	src/extensions/inotify/inotify.c, src/extensions/objectrow.c,
	src/extensions/utils.c, src/generator.py, src/gobject.py,
	src/input/lirc.py, src/input/stdin.py, src/io.py, src/ioctl.py,
	src/logger.py, src/main.py, src/net/mdns.py, src/net/tls.py,
	src/net/url.py, src/nf_thread.py, src/nf_wrapper.py, src/object.py,
	src/popen.py, src/process.py, src/reactor.py, src/rpc.py,
	src/saxutils.py, src/signals.py, src/sockets.py, src/strutils.py,
	src/thread.py, src/timer.py, src/utils.py, src/weakref.py,
	src/xmlutils.py:
	Remove First Edition / Maintainer lines from file headers; update
	copyright where necessary; add Id keyword to files where it was
	missing.

	* src/thread.py: Make active a property.

	* src/process.py: Missed commit: Adjust to abort() api change.

	* TODO, src/config.py, src/coroutine.py, src/event.py, src/io.py,
	src/nf_wrapper.py, src/popen.py, src/timer.py, test/callbacks.py:
	NotifierCallback.active is now a property.

	* doc/conf.py, doc/core/signals.rst:
	Bump copyright date; small tweak to signals example.

	* src/async.py: Improve docstring for inprogress()

2009-05-24  Jason Tackaberry <tack@urandom.ca>

	* src/coroutine.py: Update coroutine to abort() api change.

	* src/async.py, src/io.py, src/thread.py:
	InProgress.abort() takes an optional argument now: the exception to
	throw to the InProgress.  This is passed to abort callback also.

2009-05-24  Dirk Meyer <dischi@freevo.org>

	* src/config.py: fix handling of - and _ conversion

2009-05-24  Jason Tackaberry <tack@urandom.ca>

	* src/process.py:
	stop() uses now uses 'exited' signal instead of 'finished'

	* src/process.py:
	- Sort of revert r4056 as it didn't really fix the problem. - Change
	semantics of 'finished' signal: it now emits when the child is dead
	AND when stdout/stderr are closed. - New 'exited' signal that takes
	the semantics of what 'finished' used to be: emits when the child is
	reaped, period. - Proper fix for what r4056 was support to fix:
	namely, when _cleanup() executes, sometimes python outputs:

	* src/process.py:
	Disconnect IOChannel callbacks when the process is not running.

	* src/event.py: Remove SE/KI catch.

	* src/io.py: find_delim returns None if not found, not -1.

	* src/io.py: Don't close IOChannels on shutdown.  At least for now.

	* src/process.py:
	Don't attempt to write stop command if child stdin is closed.

	* src/io.py:
	Allow delimiter to be a list, in which case any of the elements are
	used as delimiters.

2009-05-23  Jason Tackaberry <tack@urandom.ca>

	* src/__init__.py, src/extensions/utils.c:
	On Python 2.5, replace os.listdir with a built-in version that does
	not suffer from http://bugs.python.org/issue1608818

2009-05-22  Jason Tackaberry <tack@urandom.ca>

	* src/coroutine.py: Clarify comment.

	* src/thread.py:
	Add a kludge to cause InProgressAborted to trigger more reliably.

	* src/coroutine.py:
	Don't attempt to abort an InProgress that's already been finished.

	* src/async.py:
	InProgressAborted now subclasses BaseException; added docstr
	explaining why.

	* src/coroutine.py: Fix some comments.

	* src/coroutine.py:
	Remove unused bubble arg.  I'm not sure where I was going with that
	one. Probably somewhere important.  Oh well, it's gone now.

	* src/async.py:
	Property aborting for kaa.delay(); added a comment questioning the
	sanity of the abortable property.

	* src/thread.py:
	Prevent JobServer from dying prematurely if InProgressAborted doesn't
	get caught earlier.

	* doc/async/threads.rst:
	Make ThreadInProgress visible; abort() is documented.

	* src/__init__.py, src/async.py, src/thread.py:
	- Export InProgressAborted and ThreadInProgress objects -
	NamedThreadCallbacks are now abortable -- to the same degree that
	ThreadCallbacks are abortable, which is to say kinda sorta.  See
	docstring.

	* src/callback.py:
	Callback needs to call constructor (even though it's just object) so
	that MI will work.

	* src/io.py: OSError can be raised too.

2009-05-21  Jason Tackaberry <tack@urandom.ca>

	* src/rpc.py:
	Catch exceptions that might have been raised when writing to socket
	and close rpc channel if that happens.  Should fix spurious unhandled
	exceptions with beacon-search.

	* src/io.py:
	Normalize errors that cause the IOChannel to close into an IOError
	exception, so that callers don't have to catch IOError, OSError,
	and/or socket.error, but instead just IOError.

	* src/async.py:
	Dump stack gotten in InProgress constructor when unhandled async
	exception is being logged (only for loglevel INFO or more verbose).
	Essential for debugging.

	* src/extensions/inotify/__init__.py:
	Fix INotify on 64-bit platforms.

2009-05-20  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: Cleanup multiline strings (+\ is not needed)

	* doc/core/mainloop.rst: Doc update for 'exit' signal.

	* src/config.py:
	- schema hash is back, and in fact now replaces schema+values hash in
	the config file - sync kwarg in load() only rewrites if schema has
	changed - save() only writes if schema+values have changed since
	load, or if force kwarg is True - attach exit handler when
	autosave=True, so that config changes are saved in 5 seconds or when
	program exits, whichever happens first. - changed syntax errors
	warning a bit, to make it more noticeable - write newline at the very
	end of the file

	* src/main.py: New 'exit' signal, emitted when process exits.

2009-05-18  Jason Tackaberry <tack@urandom.ca>

	* TODO: Add to TODO

2009-05-17  Jason Tackaberry <tack@urandom.ca>

	* src/async.py, src/coroutine.py:
	- New abortable property (and construct kwarg) for InProgress objects
	- InProgress repr() now displays something useful for debugging
	(shows the caller who created it). - CoroutineInProgress.abort() now
	logs exception if aborting prerequisite IP raises, as opposed to
	failing altogether. - CoroutineInProgress._stop() will emit 'abort'
	signal for coroutine before raising GeneratorExit into it.

	* src/config.py:
	- Change Config get/set_filename and get/set_autosave to properties -
	Raise an exception when config or group object attempts to add a Var
	with the same name as an internal method or property. - Revert the
	schema hash stuff from last commit, it wasn't needed after all. -
	save_if_needed() now just uses the standard hash (that includes
	values); it makes more sense that it writes the config if the schema
	_or_ values have changed, and we were already calculating that hash.
	- Change load() kwargs and semantics; update docstring - change
	beacon to use new api.

	* src/config.py:
	Better handle the case where loaded configs are missing hashes.

	* src/config.py:
	New method Config.save_if_needed() which saves the config only if the
	schema has changed since the one loaded (or if no config exists).

2009-05-16  Jason Tackaberry <tack@urandom.ca>

	* src/db.py:
	In update_object(), rename 'parent_obj' arg to 'parent'.  Fixes a bug
	with beacon when moving files to different directories.  I could have
	changed beacon, but I'm not sure why I used parent_obj instead of
	parent to begin with, as parent makes more sense.

2009-05-15  Jason Tackaberry <tack@urandom.ca>

	* src/process.py: Revert whitespace mess.

	* src/process.py:
	- Change semantics of running property, and add a new writable
	property - Process2.start() should return the InProgress object like
	the docstring says - Fixed a problem where Process2.stop() would get
	confused if timeout() was called on the Process2 object's InProgress
	(returned by start()) - allow start() if Process2 object is in
	STATE_HUNG

2009-05-10  Dirk Meyer <dischi@freevo.org>

	* TODO, TODO.api (deleted): update TODO list

2009-05-09  Dirk Meyer <dischi@freevo.org>

	* src/input/stdin.py, src/signals.py:
	remove deprecated Signal.SIGNAL_* variables

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

	* src/main.py: revert exception handling change

	* src/async.py: remove deprecated code

	* TODO, src/async.py, src/coroutine.py, src/main.py,
	src/nf_wrapper.py, src/popen.py, src/rpc.py:
	exception cleanup for Python >= 2.5

2009-04-11  Jason Tackaberry <tack@urandom.ca>

	* src/dateutils.py (added), src/utils.py:
	Move date related stuff from utils into new dateutils.py file, as I
	expect to have more date related helper tools in the future; added
	dateutils.utc and dateutils.local which are tzinfo objects to be used
	with Python's datetime module.

2009-04-03  Jason Tackaberry <tack@urandom.ca>

	* src/async.py, src/coroutine.py, src/thread.py:
	async.py: new exception InProgressAborted, which an InProgress is
	finished with if abort() is called.  If an InProgress A is waiting on
	InProgress B, and B is finished with InProgressAborted, then A aborts
	and emits its 'abort' signal so that abort handlers can clean up.

	* doc/async/coroutines.rst, doc/async/threads.rst:
	A bit more on coroutines; add some references to the threads doc.

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

	* doc/async/coroutines.rst:
	Show coroutine example rewritten as classical callback approach for
	comparison

2009-04-01  Dirk Meyer <dischi@freevo.org>

	* src/saxutils.py: fix attribute handling

2009-03-22  Dirk Meyer <dischi@freevo.org>

	* src/strutils.py: catch TypeError

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

	* src/config.py: More robust save.

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

	* src/coroutine.py: stop -> abort

	* src/net/tls.py:
	Implement M2TLSSocket, a TLSSocket implementation for m2crypto.

2009-03-16  Jason Tackaberry <tack@urandom.ca>

	* src/io.py, src/sockets.py:
	Requeue data when write fails due to resource temporarily
	unavailable; fix for Socket.fileno

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

	* src/coroutine.py: Remove unused code

	* src/coroutine.py, src/utils.py:
	Flesh out docstring for coroutine; add new group kwarg of coroutine
	that allows a policy to apply to multiple coroutines (see docstring
	for more detail)

	* src/db.py:
	Fix bug with updating objects with ATTR_IGNORE_CASE attributes.

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

	* src/saxutils.py: send attributes to caller

2009-03-14  Jason Tackaberry <tack@urandom.ca>

	* src/generator.py: docstring update

	* doc/async/coroutines.rst, doc/async/generators.rst (added),
	doc/async/index.rst, doc/index.rst:
	Add shell for generators; other minor doc changes.

	* src/coroutine.py, src/generator.py, src/thread.py:
	Move generator registration code into appropriate modules.

	* src/generator.py: Raise slightly more useful exceptions.

	* src/coroutine.py, src/generator.py, src/thread.py,
	test/generators.py:
	Proposed API change for @kaa.generator

	* src/coroutine.py, src/generator.py, src/thread.py, src/timer.py,
	src/utils.py:
	Remove 2.4 code for utils.wraps; utils.wraps() now returns func.wraps
	when epydoc/sphinx is not loaded which properly updates
	newfunc.func_name; remove explicit rewrite of newfunc.func_name in
	decorators that use @wraps

2009-03-13  Dirk Meyer <dischi@freevo.org>

	* src/generator.py (added), test/generators.py (added):
	Add InProgress aware generator. Support for kaa.threaded and
	kaa.coroutine is included. See test/generators.py for an example.

	* src/__init__.py:
	Add InProgress aware generator. Support for kaa.threaded and
	kaa.coroutine is included. See test/generators.py for an example.

	* src/saxutils.py: pprint bugfix

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

	* src/async.py: Document InProgress.wait return value.

	* src/async.py, src/callback.py: Minor doc corrections.

	* doc/core/signals.rst: Less clumsy wording.

	* doc/async/inprogress.rst, doc/core/io.rst, doc/core/mainloop.rst,
	doc/core/process.rst, doc/core/signals.rst, doc/core/socket.rst,
	doc/core/timer.rst, src/async.py, src/main.py, src/signals.py:
	Documentation for main loop, signals, async tweaks, and minor code
	changes to sync to documented behaviour

	* src/async.py, src/callback.py, src/io.py, src/main.py,
	src/signals.py, src/sockets.py:
	Rename Signal.SIGNAL_DISCONNECTED and Signal.SIGNAL_CONNECTED to
	Signal.DISCONNECTED and Signal.CONNECTED (the former seemed kind of
	redundant);

2009-03-12  Jason Tackaberry <tack@urandom.ca>

	* doc/async/coroutines.rst, doc/async/inprogress.rst:
	Call the mainloop the notifier where it makes sense.  (We need to
	more clearly define the notifier's role elsewhere.)

	* doc/async/inprogress.rst: Typoed the typo fix :)

	* doc/async/inprogress.rst: Typo.

	* doc/async/index.rst, doc/async/inprogress.rst,
	doc/async/threads.rst, doc/core/index.rst, doc/core/signals.rst:
	Document Callbacks; other minor doc tweaks.

	* src/__init__.py, src/callback.py, src/io.py, src/nf_wrapper.py,
	src/signals.py, src/sockets.py, test/callbacks.py:
	Dead WeakCallbacks now raise kaa.CallbackError instead of TypeError,
	so that we can do some more intelligent internal handling.

	* src/coroutine.py: stop() -> abort()

	* src/callback.py, src/signals.py, test/callbacks.py:
	WeakCallback.set_weakref_destroyed_cb ->
	WeakCallback.weakref_destroyed_cb property

	* src/callback.py:
	Fix bug where Callback kwargs get permanently overwritten on
	invocation [!!]

	* src/callback.py: Improve Callback docstring

	* src/async.py, src/callback.py, src/coroutine.py, src/rpc.py,
	test/asynctest.py:
	Turn Callback.ignore_caller_args and Callback.user_args_first into
	(self-documented) properties; internal API sync for
	InProgress.is_finished and InProgress.get_result deprecation.

	* doc/async/inprogress.rst, src/async.py, src/coroutine.py,
	src/io.py, src/signals.py, src/sockets.py:
	Many more InProgress doc updates; add InProgress.abort(), providing a
	more general mechanism for async tasks represented by InProgress
	objects to abort.  So far just IOChannel.read/write implements this.

	* doc/async/coroutines.rst, doc/async/inprogress.rst:
	Flesh out InProgress section; remove duplicate coroutine text.

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

	* doc/async/coroutines.rst: Small example tweak

	* doc/async/coroutines.rst, doc/index.rst: Rewrite introduction.

	* doc/async/coroutines.rst (added), doc/async/index.rst (added),
	doc/core/index.rst (added):
	Add missing files.

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

	* setup.py: update version check

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

	* doc/core/timer.rst, src/timer.py: Timer doc updates.

	* src/distribution/sphinxext.py:
	Only display 'This class has no foo' in the synopsis if an ..
	autofoo:: directive was specified in the rst.

	* doc/core/io.rst (added), doc/core/io/basics.rst (deleted),
	doc/core/io/index.rst (deleted), doc/core/io/process.rst (deleted),
	doc/core/io/socket.rst (deleted), doc/core/process.rst (added),
	doc/core/socket.rst (added), doc/core/timer.rst, doc/index.rst:
	More doc restructuring: flatten IO subdir into the new core section.

	* src/__init__.py, src/async.py, src/thread.py:
	Import NotifierCallback into the kaa namespace (mostly so that the
	heirarchy in documentation looks reasonable); other docstring tweaks.

	* doc/async/inprogress.rst, doc/async/io/basics.rst (deleted),
	doc/async/io/index.rst (deleted), doc/async/io/process.rst (deleted),
	doc/async/io/socket.rst (deleted), doc/core/io/basics.rst (added),
	doc/core/io/index.rst (added), doc/core/io/process.rst (added),
	doc/core/io/socket.rst (added), doc/core/mainloop.rst, doc/index.rst:
	Another interim update.

	* doc/async.rst (deleted), doc/async/inprogress.rst (added),
	doc/async/io/basics.rst (added), doc/async/io/index.rst (added),
	doc/async/io/process.rst (added), doc/async/io/socket.rst (added),
	doc/async/threads.rst (added), doc/core/mainloop.rst (added),
	doc/core/signals.rst (added), doc/core/timer.rst (added),
	doc/index.rst, doc/io/basics.rst (deleted), doc/io/index.rst
	(deleted), doc/io/process.rst (deleted), doc/io/socket.rst (deleted),
	doc/mainloop.rst (deleted), doc/signals.rst (deleted),
	doc/threads.rst (deleted), doc/timer.rst (deleted):
	Rejigging the doc structure.  However I accidentally moved io/ under
	async/ which is wrong, except svn is utterly braindamaged and doesn't
	let me fix it until I commit.

	* src/async.py: Slightly reword doc.

	* src/async.py:
	InProgress.execute should finish the IP with SE/KI exceptions, but
	reraise them; doc updates.

	* doc/async.rst:
	Fleshed out the section on coroutines, and removed the python 2.4 vs
	2.5 discussion, using only 2.5 examples.

	* src/process.py: Make use if 2.5's conditional expressions.

2009-03-10  Jason Tackaberry <tack@urandom.ca>

	* src/coroutine.py: Handle SystemExit and KeyboardInterrupt properly.

	* TODO, TODO.api (added): Add TODO.api

	* TODO, setup.py, src/__init__.py, src/callback.py, src/coroutine.py,
	src/distribution/build_py.py, src/distribution/core.py,
	src/distribution/version.py, src/distribution/xmlconfig.py,
	src/extensions/inotify/__init__.py, src/extensions/inotify/inotify.c,
	src/extensions/objectrow.c, src/extensions/utils.c, src/gobject.py,
	src/input/lirc.py, src/input/stdin.py, src/io.py, src/main.py,
	src/net/mdns.py, src/net/tls.py, src/net/url.py, src/nf_thread.py,
	src/nf_wrapper.py, src/popen.py, src/process.py, src/reactor.py,
	src/rpc.py, src/signals.py, src/sockets.py, src/thread.py,
	src/timer.py, src/weakref.py:
	Extend copyright dates to 2009; update TODO.

	* src/rpc.py:
	Use generator expression instead of reduce (cleaner and a touch
	faster).

2009-03-09  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py: silence warning on shutdown

2009-03-09  Jason Tackaberry <tack@urandom.ca>

	* src/config.py: Also catch IOError.

	* src/coroutine.py:
	Remove python 2.5 checks (assume python 2.5 now); log a useful
	warning when a coroutine ignores GeneratorExit; remove duplicate code
	in the decorator and just reuse CoroutineInProgress._step(); rename a
	few attributes to something more readable.

	* src/async.py, src/callback.py, src/config.py, src/coroutine.py,
	src/gobject.py, src/io.py, src/main.py, src/nf_wrapper.py,
	src/rpc.py, src/sockets.py, src/strutils.py, src/thread.py:
	Scratch a couple items off the todo, notably avoid using catch-all
	exception clauses.

	* src/process.py: Catch more specific exception

	* src/process.py: Remove unused attribute

	* src/process.py: Small bug fixes.

	* src/async.py:
	Bug fix: if any prefinished objects are passed to IPAny/All, they
	should be considered immediately (rather than when the Any/All is
	connected to) because they may cause the Any/All to be prefinished.

2009-03-08  Jason Tackaberry <tack@urandom.ca>

	* src/async.py: More IPAll/Any exception fixes.

	* src/main.py, src/process.py:
	Add Process2 Supervisor shutdown handling (to stop all child
	processes). Process2 should now be usable and more or less feature
	complete (although maybe not bug free -- bug fewer bugs than the old
	Process :))

	* src/async.py:
	Fix bug with InProgressAny/All when one of the underlying IP objects
	finishes due to an exception.

2009-03-01  Jason Tackaberry <tack@urandom.ca>

	* src/pynotifier/nf_generic.py:
	Fix race condition where a timer added or removed asynchronously
	(e.g. by a SIG* handler) may crash the notifier. Remove an
	unnecessary copy of the timers dict.

2009-02-16  Dirk Meyer <dischi@freevo.org>

	* src/rpc.py, src/rpc2.py (deleted), test/asynctest.py:
	rewrite kaa.rpc connection handling

	* src/saxutils.py:
	more magic: replace underscore with minus if needed

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

	* src/saxutils.py:
	add methods to convert Element to string or unicode

	* src/xmlutils.py: remove SaxTreeHandler

	* src/distribution/svn2log.py:
	use the new ElementParser from saxutils.py

	* src/saxutils.py (added):
	Copy the generic XML Element class from kaa.xmpp to kaa.base, rename
	some variables, and add even more 'magic' to it. It is very useful
	saving stuff as xml files. A special xml.sax.ContentHandler based on
	the code in xmlutils is added to make it easy to use.

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

	* src/rpc2.py: make sure status is connected for inprogress

2009-02-02  Dirk Meyer <dischi@freevo.org>

	* src/io.py: svn property update

2009-01-31  Dirk Meyer <dischi@freevo.org>

	* src/popen.py:
	Handle strange bug. No need to trace it, Process will be replaced by
	new code soon anyway.

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

	* src/rpc.py, src/rpc2.py: add coroutine to expose

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

	* src/rpc.py, src/rpc2.py:
	Rename client_connected signal to client-connected.

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

	* src/rpc2.py (added), test/asynctest.py:
	Copied kaa.rpc to kaa.rpc2 for a transition to a new API. The
	communication is still the same, kaa.rpc and kaa.rpc2 applications
	can talk to each other. Besides some smaller stuff, the main changes
	are an option for the client to auto-reconnect (this removes a lot of
	duplicated code in Freevo and some kaa modules) and that creating a
	client will not raise an exception if the remote hiost is
	unavailable. It will be delayed. Use kaa.inprogress(client) to wait
	until the channel is open or if it failed. When all kaa and Freevo
	modules are ported to kaa.rpc2, it will override the current kaa.rpc.

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

	* src/distribution/sphinxext.py:
	Show read/write for user-defined attributes.

	* doc/_static/kaa.css, doc/async.rst, doc/io/basics.rst,
	doc/io/process.rst, doc/io/socket.rst, doc/rpc.rst, doc/signals.rst,
	doc/threads.rst, doc/timer.rst, src/distribution/sphinxext.py:
	Rewrite sphinxext so that it's more useful and doesn't completely
	suck.

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

	* src/process.py: Add a lot of doc explaining the sigchld situation.

2009-01-16  Dirk Meyer <dischi@freevo.org>

	* doc/async.rst (added), doc/index.rst, doc/io/basics.rst (added),
	doc/io/index.rst (added), doc/io/process.rst (added),
	doc/io/socket.rst (added), doc/mainloop.rst (added),
	doc/notifier/async.rst (deleted), doc/notifier/index.rst (deleted),
	doc/notifier/io.rst (deleted), doc/notifier/mainloop.rst (deleted),
	doc/notifier/signals.rst (deleted), doc/notifier/threads.rst
	(deleted), doc/notifier/timer.rst (deleted), doc/signals.rst (added),
	doc/threads.rst (added), doc/timer.rst (added):
	Reflect changes from te source directory in doc.

	* doc/Makefile: I still don't like /orion as output dir :)

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

	* src/__init__.py, src/async.py: Fix comment typos.

2009-01-15  Dirk Meyer <dischi@freevo.org>

	* src/__init__.py, src/async.py, src/io.py, src/object.py,
	src/signals.py:
	Remove imports inside functions. We still have many recursive
	imports. In most cases we can handle them by importing modules we
	need during at the end of the file.

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

	* src/process.py:
	Interrupted system call fix, but only for Python 2.5+

2009-01-15  Dirk Meyer <dischi@freevo.org>

	* src/process.py: deactivate sigchild handler

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

	* src/io.py:
	Move import main to bottom of file rather than during method
	execution.

2009-01-15  Dirk Meyer <dischi@freevo.org>

	* src/__init__.py, src/sockets.py, src/tmpfile.py (deleted),
	src/utils.py:
	move tempfile to utils

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

	* doc/_static/kaa.css:
	Make class heaaders (class kaa.Foo(...)) stand out much more.

2009-01-15  Dirk Meyer <dischi@freevo.org>

	* README, TODO, doc/notifier/mainloop.rst, src/gobject.py, src/io.py,
	src/main.py, src/nf_thread.py, src/popen.py, src/process.py,
	src/reactor.py, src/thread.py, src/timer.py, src/utils.py,
	src/xmlutils.py, test/callbacks.py, test/kaa_in_twisted.py,
	test/twisted_in_kaa.py:
	remove more references to kaa.notifier

	* doc/notifier/mainloop.rst, src/net/url.py, src/popen.py,
	test/twisted_in_kaa.py:
	notifier movement updates

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

	Kill notifier directory.

	* doc/Makefile, doc/notifier/io.rst, src/__init__.py, src/async.py
	(added), src/callback.py (added), src/config.py, src/coroutine.py
	(added), src/db.py, src/distribution/sphinxext.py, src/event.py
	(added), src/gobject.py (added), src/input/lirc.py, src/io.py
	(added), src/main.py (added), src/net/tls.py, src/net/url.py,
	src/nf_thread.py (added), src/nf_wrapper.py (added),
	src/notifier/__init__.py (deleted), src/notifier/async.py (deleted),
	src/notifier/callback.py (deleted), src/notifier/coroutine.py
	(deleted), src/notifier/event.py (deleted), src/notifier/gobject.py
	(deleted), src/notifier/io.py (deleted), src/notifier/main.py
	(deleted), src/notifier/nf_thread.py (deleted),
	src/notifier/nf_wrapper.py (deleted), src/notifier/object.py
	(deleted), src/notifier/popen.py (deleted), src/notifier/process.py
	(deleted), src/notifier/pynotifier/__init__.py (deleted),
	src/notifier/pynotifier/dispatch.py (deleted),
	src/notifier/pynotifier/log.py (deleted),
	src/notifier/pynotifier/nf_generic.py (deleted),
	src/notifier/pynotifier/nf_gtk.py (deleted),
	src/notifier/pynotifier/nf_twisted.py (deleted),
	src/notifier/pynotifier/version.py (deleted), src/notifier/reactor.py
	(deleted), src/notifier/signals.py (deleted), src/notifier/sockets.py
	(deleted), src/notifier/thread.py (deleted), src/notifier/timer.py
	(deleted), src/object.py (added), src/popen.py (added),
	src/process.py (added), src/pynotifier/__init__.py (added),
	src/pynotifier/dispatch.py (added), src/pynotifier/log.py (added),
	src/pynotifier/nf_generic.py (added), src/pynotifier/nf_gtk.py
	(added), src/pynotifier/nf_twisted.py (added),
	src/pynotifier/version.py (added), src/reactor.py (added),
	src/rpc.py, src/signals.py (added), src/sockets.py (added),
	src/thread.py (added), src/timer.py (added), src/utils.py,
	test/asynctest.py, test/sockettest.py:
	Move base/src/notifier/* to base/src/ effectively removing the
	kaa.notifier submodule.  Various comments/docstrings updated to
	reflect this change (but many still need to be updated).

	* src/notifier/io.py: Small docstring change.

	* src/notifier/process.py: Rename status property to exitcode

	* src/rpc.py: Fix docutils parse warning.

	* doc/_static/kaa.css:
	Cosmetic bug fix: description columns should wrap.

	* doc/rpc.rst:
	Use new sphinx extensions for kaa.rpc.Server and Client.

	* src/distribution/sphinxext.py:
	Bug fix for inherited-members option.

	* src/rpc.py:
	kaa.rpc objects now subclass kaa.Object and use __kaasignals__.

	* doc/_static/kaa.css, src/distribution/sphinxext.py:
	Import bug fix and slight cosmetic tweak

	* src/distribution/sphinxext.py, src/notifier/io.py:
	Fix bug where references to signals (kaa.Foo.signals.bar) were not
	being resolved; update IOChannel class docstr to reference read and
	readline signals (as a test, mostly).

	* doc/_static/kaa.css, src/distribution/sphinxext.py:
	Include property read/write status in properties synopsis table.

	* src/notifier/io.py, src/notifier/process.py: Doc updates

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

	* doc/_static/kaa.css, src/distribution/sphinxext.py,
	src/notifier/io.py:
	Change class hierarchy to be top down (the sane way) -- I think the
	tree generation algorithm is sane, but could be wrong :)

	* doc/_static/kaa.css: Lighten color of synopsis tables.

	* doc/_static/kaa.css, doc/notifier/io.rst,
	src/distribution/sphinxext.py, src/notifier/nf_wrapper.py,
	src/notifier/object.py, src/notifier/process.py,
	src/notifier/sockets.py:
	Add reST params/return values for Socket class.

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

	* doc/Makefile: set output directory to doc/html

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

	* doc/Makefile, doc/_static/kaa.css (added),
	doc/_templates/layout.html (added), doc/conf.py,
	doc/notifier/async.rst, doc/notifier/io.rst,
	src/distribution/sphinxext.py (added):
	New custom sphinx directives:

	* src/notifier/__init__.py, src/notifier/io.py,
	src/notifier/object.py (added), src/notifier/process.py,
	src/notifier/sockets.py:
	New common base-class kaa.Object, which processes a class attribute
	__kaasignals__

2009-01-06  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/__init__.py, src/notifier/main.py:
	Revert last commit to main.py (oops) and commit __init__.py instead.

	* src/notifier/main.py, src/notifier/process.py (added):
	Committing Process rewrite.  It's not quite finished yet (Supervisor
	needs some love), so it's only exported as Process2.  Mostly
	committing to get extra eyeballs on this code.

	* src/notifier/io.py:
	Doc update: what happens when channel closes before write()
	completes.

	* src/notifier/io.py:
	doc update: A kaa.InProgress object -> An InProgress object

	* doc/conf.py, doc/notifier/async.rst, doc/notifier/io.rst,
	doc/notifier/signals.rst, doc/notifier/timer.rst,
	src/notifier/async.py, src/notifier/io.py:
	reSTify IOChannel docstrings; make IOChannel.delimiter a property so
	a docstring can be added; other misc doc updates.

	* src/notifier/io.py:
	More docstring tweaks; handle ValueError for fileno property; move
	main import even later in execution to prevent import cycle (main.py
	will eventually indirectly import io.py, once the Process rewrite is
	done); allow other IOChannels to be wrapped.

2009-01-05  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/io.py: Fix incorrect comment.

	* src/notifier/io.py: More docstring updates

	* src/notifier/io.py:
	Implement readline support; better docstring documentation; queue
	size is now a settable property; write_queue_size property renamed to
	write_queue_used; new corresponding read_queue_used property; enforce
	queue_size limit for write queue.

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

	* src/notifier/io.py, src/notifier/sockets.py:
	IOChannel updates (mostly plumbing needed for Process rewrite):

	* src/notifier/async.py:
	Another InProgressAny bug fix: wrongly assumed one of the prefinished
	IPs would not get filtered.

	* src/notifier/async.py: InProgressAny bug fixes.

	* src/notifier/async.py:
	New filter kwarg added to InProgressAny initializer.

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

	* src/notifier/coroutine.py:
	Reverts r3702.  This logic was not consequence free.

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

	* setup.py:
	Do not build kaa.shm on Darwin; don't bother attempting to check for
	inotify support on non-Linux.

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

	* src/notifier/coroutine.py:
	If a coroutine yields an InProgress but does not yield any other
	value after that InProgress finishes (i.e. we get StopIteration),
	implicitly yield the result of the last InProgress.  This allows a
	coroutine to end with:

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

	* src/db.py:
	Remove Database.__del__ and attach a shutdown callback to commit().

	* src/db.py: Thread safety for kaa.db.

	* src/notifier/main.py: New function kaa.main.is_stopped()

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

	* src/utils.py: fix UTC handling

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

	* src/notifier/timer.py: make interval read-only

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

	* API_CHANGES.txt, src/notifier/timer.py:
	change Timer.get_interval() to Timer.interval

	* src/notifier/reactor.py, test/twisted_in_kaa.py:
	update twisted reactor to Twisted 0.8.x

	* API_CHANGES.txt, setup.py, src/notifier/async.py,
	src/notifier/callback.py, src/notifier/io.py, src/notifier/signals.py:
	Start breaking the API again for 0.6.0. The changes are documented in
	API_CHANGES.txt. Changes in this revision: The methods
	set_ignore_caller_args and set_user_args_first in Callback are
	replaced by variables ignore_caller_args and user_args_first.
	get_user_args is now called _get_user_args.

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

	* src/notifier/__init__.py: Export IOChannel

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

	* src/utils.py: No need to replace property for 2.6 or later.

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

	* TODO, src/config.py, src/db.py, src/distribution/build_py.py,
	src/distribution/core.py, src/distribution/svn2log.py,
	src/distribution/version.py, src/distribution/xmlconfig.py,
	src/extensions/inotify/__init__.py, src/extensions/objectrow.c,
	src/extensions/shmmodule.c, src/input/__init__.py, src/net/mdns.py,
	src/net/tls.py, src/notifier/__init__.py, src/notifier/async.py,
	src/notifier/io.py, src/notifier/main.py, src/notifier/nf_thread.py,
	src/notifier/reactor.py, src/notifier/signals.py,
	src/notifier/sockets.py, src/notifier/thread.py,
	src/notifier/timer.py, src/rpc.py:
	cosmetic changes

	* src/distribution/core.py:
	generate doc for sdist (does not work as it should)

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

	* TODO: Update TODO with an eye to 1.0

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

	* src/distribution/core.py:
	Remove Extension.__del__ which caused config.h unlink to sometimes
	fail due to the unpredictability of how objects get destroyed on
	shutdown. Reimplement instead as an explicit Extension.clean()
	method.

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

	* src/notifier/sockets.py: addmissing import

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

	* src/net/tls.py: handle pre-handshake data sending

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

	* src/net/tls.py: Fix typo

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

	* src/net/tls.py: Fix the comment to match the code.

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

	* doc/notifier/mainloop.rst, doc/notifier/threads.rst,
	src/notifier/gobject.py, src/notifier/thread.py:
	doc update

	* src/net/tls.py: do not override _update_read_monitor

	* doc/conf.py, doc/notifier/index.rst, doc/notifier/io.rst (added),
	doc/notifier/signals.rst (added), doc/notifier/threads.rst (added),
	doc/notifier/timer.rst (added), src/notifier/gobject.py:
	Add template for kaa.notifier doc

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

	* src/net/tls.py: do not pass TLS handshake data to clients

	* src/notifier/coroutine.py, src/notifier/thread.py,
	src/notifier/timer.py:
	preserve function name when using decorators

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

	* src/notifier/async.py:
	Fix a bug with InProgressAny(...).wait(); add pass_index kwarg to
	InProgressAny.

	* src/net/tls.py: Remove dubious _handle_read()

	* src/net/tls.py, src/notifier/io.py, src/notifier/sockets.py:
	Rename IODescriptor to IOChannel; fix TLSSocket to confirm to Socket
	changes, and also fix a bug where tlssocket.read() might miss data.

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

	* src/notifier/__init__.py, src/notifier/io.py (added),
	src/notifier/popen.py, src/notifier/sockets.py:
	Move out non-socket stuff into io.py; several changes to IODescriptor
	to accommodate Process rewrite.

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

	* src/notifier/sockets.py:
	Allow wrapping a new fd with a different mode.

	* src/notifier/signals.py, src/notifier/sockets.py:
	Signals.__add__ for convenience (self.signals += ('foo', 'bar'));
	Socket.write() now returns InProgress, which is finished when the
	data passed to that write() call is actually written to the socket.

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

	* src/notifier/async.py:
	handle _finalize_connect with some objects finished

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

	* ChangeLog.in: add Hans Meine to svn users

2008-10-25  Hans Meine <hans_meine@gmx.net>

	* src/net/tls.py, src/notifier/reactor.py:
	two related errors found using pyflakes; one of them apparently
	fixed, one of them turned into a FIXME

	* src/distribution/core.py, src/distribution/svn2log.py,
	src/distribution/xmlconfig.py, src/input/stdin.py,
	src/notifier/async.py, src/notifier/callback.py,
	src/notifier/coroutine.py, src/notifier/popen.py,
	src/notifier/sockets.py, src/notifier/thread.py,
	src/notifier/timer.py, src/rpc.py, src/weakref.py, test/config.py,
	test/config2.py, test/decorator.py, test/kaa_in_twisted.py,
	test/twisted_in_kaa.py:
	clean up imports (now that Dischi used pyflakes on beacon, I don't
	want to have this lying around uncommitted any longer)

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

	* doc/conf.py: import version number

	* doc/Makefile (added), doc/conf.py (added), doc/index.rst (added),
	doc/mainloop.epydoc (deleted), doc/notifier/async.rst (added),
	doc/notifier/index.rst (added), doc/notifier/mainloop.rst (added),
	doc/rpc.rst (added), setup.py:
	start sphinx-based doc for kaa.base

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

	* src/notifier/thread.py:
	Clarify comment and output when calling coroutines in threads.

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

	* src/utils.py: add sphinx support for wrap

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

	* src/distribution/core.py: add Sphinx support

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

	* src/distribution/core.py:
	use name for svnlog if module is not available

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

	* src/notifier/async.py: Fix bug from last commit.

	* src/notifier/async.py, src/notifier/signals.py:
	In InProgressAny/All, defer connecting to underlying InProgress
	objects until the Any/All is connected to, and connect strongly
	rather than weakly.

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

	* src/notifier/thread.py: make sure the lock is released on errors

	* src/notifier/thread.py:
	avoid blocked mainloop when thread callbacks are faster added then
	handled

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

	* src/utils.py:
	Since we only care about preserving the function signature for
	introspection needed by epydoc, wraps() now acts as a "passthrough"
	when epydoc is not loaded.  When epydoc _is_ loaded, wraps() will
	return a signature-preserving decorator, munging arguments as needed
	to make the decorated function make sense for API documentation (e.g.
	coroutine's progress=True will munge first argument from decorated
	function).

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

	* src/distribution/core.py, src/utils.py:
	Allows non-intrinsics to be passed as kwargs to decorated functions
	that use wraps() (like coroutine, timed, threaded, etc)

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

	* src/xmlutils.py:
	Do not use utils.property because xmlutils is needed by distribution
	and utils has many dependencies including notifier that won't work in
	a non-installed version

	* src/distribution/core.py: support projects without subprojects

	* src/xmlutils.py: add simple minidom based parser and writer

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

	* src/utils.py:
	move utc2localtime and localtime2utc from kaa.epg to kaa.base

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

	* src/distribution/core.py:
	make it possible to override kaa namespace

	* src/rpc.py: use function name as default rpc command name

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

	* src/net/tls.py:
	Merge TLSServerSocket back into TLSSocket because a client may not
	know what it has to use when the socket is created (e.g. XMPP
	streams)

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

	* src/net/tls.py: small key handling updates

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

	* src/notifier/coroutine.py, src/notifier/thread.py, src/utils.py:
	Allow wraps() decorator to modify original function's call spec
	(currently just by shifting args from the left).  Updated
	kaa.coroutine() and kaa.threaded() decorators to use this.  Needed to
	make test/progress.py work again.

	* test/callbacks.py:
	Adjust number of times we step in the test for weak timer destruction
	since we could be waiting a while.  (More details in comments.)

	* src/notifier/coroutine.py:
	Allow progress=None for CoroutineInProgress (fixes
	test/async_lock.py)

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

	* src/net/tls.py:
	Add SRP support and split server into extra class. Some cleanups.

	* src/notifier/sockets.py: create object of the same class in accept

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

	* src/notifier/timer.py: check for dead weakrefs in store

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

	* src/notifier/signals.py:
	Reraise existing exception on KeyboardInterrupt/SystemExit, rather
	than always raising SystemExit.

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

	* src/notifier/signals.py: add signal connect first_once

	* src/notifier/main.py:
	Do not use notifier dispatcher for the step signal. Doing that will
	wake up the loop every 100ms even when there is nothing to do. While
	this may be a nice feature, it is not what 'step' is about.

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

	* API_CHANGES.txt, setup.py, src/notifier/async.py,
	src/notifier/coroutine.py, src/notifier/sockets.py,
	test/async_lock.py:
	adjust to latest kaa.notifier changes

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

	* src/notifier/coroutine.py: Restore missing line in docstring.

	* src/notifier/__init__.py, src/notifier/coroutine.py:
	Introduce coroutine policies and deprecate synchronized kwarg.

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

	* src/notifier/thread.py, src/notifier/timer.py, src/utils.py:
	Change decorator_data_store function DecoratorDataStore class, since
	it behaved more like a class anyway.

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

	* src/notifier/coroutine.py:
	It seems to me this is needed, or else a yield NotFinished following
	yield of an InProgress would return the result of that InProgress.
	Probably not a big deal (as nobody does data = yield kaa.NotFinished)
	but also not strictly correct.

	* src/notifier/coroutine.py:
	A bit of restructuring with stop(); in addition to calling close() on
	the generator (for python 2.5), also throw GeneratorExit() into
	CoroutineInProgress objects so anyone monitoring the object gets
	alerted when it was aborted.

	* src/utils.py:
	Fix wraps() decorator bug where default kwarg values would be passed
	into the decorator even if the kwarg value was given in the outside
	call.

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

	* src/notifier/popen.py:
	Don't get confused if OSError gets raised when writing data when we
	are killing it.  It just means the child died before we had a chance
	to write the stop command.

	* src/notifier/popen.py: Implement Process.__inprogress__

	* test/property.py:
	One more test: verify deleting a propery with no deleter raises
	exception.

	* test/property.py (added): Test for kaa.utils.property

	* src/notifier/coroutine.py:
	Use generator's close() method if we're prematurely stopping a
	coroutine. This is as per PEP 342.

	* src/notifier/coroutine.py: Fix naming snafu from r3434

	* test/asynctest.py:
	Add test code for recent async API changes, especially InProgressAny
	and InProgressAll.

	* src/notifier/signals.py:
	Signals object must preserve key order, or else subset().any() isn't
	going to return the right index of which signal was handled.

	* src/notifier/coroutine.py:
	Revert coroutine code that calls inprogress() on a yielded result,
	coroutine now must do that explicitly; added a few more comments;
	renamed CoroutineInProgressLock to CoroutineLockedInProgress.

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

	* src/notifier/__init__.py, src/notifier/async.py,
	src/notifier/popen.py:
	Remove InProgressList. It is deprecated and was only used in an
	already deleted code in kaa.candy. Also remove InProgressSignals. It
	was also written for now removed code and kaa.candy and in popen. The
	popen code was changed to use inprogress(signal).

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

	* src/notifier/sockets.py: Sync to new API

	* src/notifier/__init__.py: Export inprogress() function.

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

	* src/notifier/__init__.py, src/notifier/async.py,
	src/notifier/coroutine.py, src/notifier/signals.py:
	New function kaa.delay(secs) that returns an InProgress object that
	finishes after the given number of seconds; Renamed InProgress.link()
	to InProgress.waitfor(); Signal.async() changed to
	Signal.__inprogress__, and a new function inprogress() created to
	invoke __inprogress__ on any object (similar to len() and __len__).

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

	* src/notifier/gobject.py: maybe fix a crash

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

	* src/notifier/__init__.py, src/notifier/gobject.py:
	make sure we have a clean shutdown of the gobject loop

	* src/notifier/async.py:
	revert weakref patch because beacon stopped working

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

	update svn properties

	* src/notifier/signals.py: remove debug

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

	* src/notifier/__init__.py, src/notifier/async.py,
	src/notifier/signals.py:
	New classes InProgressAny and InProgressAll (should hopefully
	deprecate InProgressSignals and InProgressList respectively); added
	properties result, finished, failed to InProgress; added methods
	subset(), any() (creates InProgressAny from signals), all() (creates
	InProgressAll from signals).

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

	* src/notifier/timer.py: Remove superfluous line.

	* src/notifier/coroutine.py: Still more leftover debugging :)

	* src/notifier/coroutine.py:
	Remove leftover debugging from last commit.

	* src/notifier/async.py, src/notifier/coroutine.py:
	Fix bug where a InProgress would throw an exception to a linked
	InProgress, which would then handle that exception, but the original
	InProgress didn't know, so it would log an unhandled async exception.

	* src/notifier/async.py:
	Finish InProgressSignals with a 2-tuple, containing the idx of the
	signal and (now) the args passed to the signal.  Now makes it
	possible to more conveniently handle InProgressSignals completion
	without having to keep a reference to the object (for the now removed
	signal_args).  Example:

	* src/notifier/thread.py, src/notifier/timer.py, src/utils.py:
	Abstract the ugly (and duplicated) code that attaches data to a
	decorated function/method into a separate utility function (in
	kaa.utils).

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

	* src/utils.py:
	wraps() decorator factory as described in r3385 (forgot to commit).

	* src/notifier/coroutine.py, src/notifier/thread.py,
	src/notifier/timer.py:
	wraps() decorator factory that preserves the decorated function's
	signature. Necessary in order not to confuse epydoc.

	* src/notifier/async.py:
	If exception handler is not passed to InProgress.connect_both(), it
	will use the finished handler.  (Convenience for when you want to use
	the same handler.)

	* src/notifier/popen.py:
	Process.stop() returns an InProgress object that finishes with the
	return code when the process dies.

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

	* src/notifier/coroutine.py:
	CoroutineInProgress.throw() will call stop() first.  Allows a
	coroutine to be aborted asynchronously.

	* src/utils.py: Slightly shorter function name.

	* src/utils.py:
	Utility function to get number of processors in a reasonably portable
	way.

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

	* src/db.py:
	Add term_id to ivtidx_%IDXNAME%_terms_map_object_idx, or else sqlite
	gets very bad performance as associated terms are added to
	get_inverted_index_terms().  (postgres and mysql perform fine without
	this index though, so it's just due to sqlite's poor query
	optimizer.)

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

	* src/net/tls.py: ignore socket close

2008-06-22  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/main.py:
	Don't use pid in determining mainloop running state.  This partially
	reverts r3047, as I'm not sure what in the hell I was thinking.

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

	* src/notifier/async.py: fix condition to start a loop, again

	* src/notifier/async.py: fix condition to start a loop

	* src/notifier/async.py, src/notifier/main.py:
	fix the race condition code (I hope)

2008-06-22  Jason Tackaberry <tack@urandom.ca>

	* src/db.py: Extraneous whitespace.

	* src/db.py:
	Fix bug where add_object() would not return dict containing keys for
	the given type if those keys were not passed on kwargs.

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

	* src/notifier/callback.py, src/notifier/sockets.py,
	src/notifier/thread.py, src/notifier/timer.py:
	doc update

	* doc/mainloop.epydoc (added), setup.py, src/distribution/core.py:
	add distutils epydoc support

	* src/notifier/__init__.py, src/notifier/gobject.py,
	src/notifier/main.py, src/notifier/reactor.py,
	src/notifier/signals.py, src/notifier/sockets.py,
	src/notifier/thread.py:
	Add some doc for epydoc support

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

	* src/notifier/sockets.py: Correct docstring.

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

	* src/notifier/sockets.py:
	New connecting property; new alive property; do not aggregate calls
	to _update_read_monitor via a POLCY_ONCE timer, otherwise we may lose
	incoming data (race condition) -- see comments; read() or readline()
	will no longer forever if the socket is disconnected (and not in the
	process of connecting) but rather will immediately return an
	InProgress finished with None; more comments as to why we need
	_update_read_monitor

	* src/notifier/async.py, src/notifier/thread.py:
	InProgress.finish() returns self to allow convenient priming of
	finished InProgress objects (for those cases where the function must
	return an InProgress but no delaying is needed):

	* src/notifier/main.py:
	Prevent (hopefully) a race condition where two threads concurrently
	call loop().  This can happen, for example:

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

	* src/notifier/timer.py:
	Use threaded decorator rather than MainThreadCallback.

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

	* src/strutils.py:
	Set python's global encoding with set_encoding(); add optional
	encoding kwarg to most funcitons to allow overriding the default
	encoding.

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

	* src/db.py, src/extensions/objectrow.c:
	Don't unpickle ObjectRow pickle if pickling the ObjectRow itself.
	(That seriously makes sense, I swear.)  In practice, this means it is
	not necessary (and not desirable) to convert result rows to dicts
	before pickling.  Rather it is better to simply pickle the ObjectRow,
	where the other side can benefit from the deferred unpickling feature
	of ObjectRow.

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

	* src/db.py:
	Preserve case for registered inverted index attributes (e.g. the
	genres attribute in kaa.epg)

	* src/notifier/signals.py:
	Signal.async() convenience function (see docstring)

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

	* src/net/url.py: remove not existing completed signal check

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

	* src/notifier/__init__.py, src/notifier/async.py:
	add InProgressList to wait for several InProgress objects

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

	* src/distribution/core.py:
	When compiling tests for a given library, make sure we link
	dependency libraries.

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

	* src/notifier/gobject.py:
	use gobject.idle_add and not gobject.timeout_add

	* src/notifier/gobject.py:
	make async=False calls work in the same thread

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

	* src/notifier/gobject.py: make it possible to set gtk loop object

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

	* src/tmpfile.py: fix unique tempfile

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

	* src/utils.py: ignore dot files and directories

	* src/notifier/main.py: support starting main in a thread

	* src/notifier/sockets.py: prevent double close

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

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

	* src/rpc.py: send signal when authenticated

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

	* src/input/stdin.py: Add keycodes for pgup/dn

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/__init__.py, src/notifier/async.py:
	Revert kaa.execute back into kaa.InProgress().execute

	* src/net/url.py, src/notifier/async.py, src/notifier/coroutine.py,
	src/notifier/thread.py, test/progress.py (added):
	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/distribution/core.py, src/version.py (deleted):
	also write version.py for kaa.base

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

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

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

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

	* src/notifier/async.py, src/notifier/coroutine.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/__init__.py, src/notifier/async.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/async.py, src/notifier/sockets.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.

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
	service

	* 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>

	svn property update

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

	* src/notifier/__init__.py, src/notifier/glib.py (deleted),
	src/notifier/gobject.py (added), test/glib.py (deleted),
	test/gobject.py (added):
	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

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

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

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

	* test/interface.py (deleted): 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

	* src/utils.py, test/interface.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

	* src/__init__.py, src/utils.py, test/interface.py (added):
	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/main.py, src/notifier/nf_thread.py,
	src/notifier/nf_wrapper.py, src/notifier/reactor.py,
	test/kaa_in_twisted.py, test/twisted_in_kaa.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.

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/async.py, src/notifier/coroutine.py,
	src/notifier/popen.py, src/notifier/thread.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.

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

	* API_CHANGES.txt, src/notifier/__init__.py,
	src/notifier/coroutine.py:
	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/signals.py, src/notifier/sockets.py,
	src/notifier/timer.py, src/rpc.py, src/utils.py, test/sockettest.py
	(added):
	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.

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

	* API_CHANGES.txt, src/notifier/__init__.py,
	src/notifier/coroutine.py, test/async_lock.py, test/asynctest.py:
	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

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

	* src/notifier/__init__.py, src/notifier/main.py,
	src/notifier/sockets.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/decorators.py (deleted), src/notifier/jobserver.py
	(deleted), src/notifier/main.py, src/notifier/thread.py,
	src/notifier/timer.py:
	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/notifier/signals.py: svn property updates

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

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

	* src/notifier/__init__.py, src/notifier/async.py,
	src/notifier/callback.py, src/notifier/jobserver.py,
	src/notifier/main.py, src/notifier/nf_wrapper.py,
	src/notifier/popen.py, src/notifier/signals.py (added),
	src/notifier/sockets.py, src/notifier/thread.py,
	src/notifier/yieldfunc.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

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

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

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

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

	* src/notifier/decorators.py, src/notifier/thread.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

	* API_CHANGES.txt, src/notifier/__init__.py,
	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

	* API_CHANGES.txt, src/__init__.py, src/notifier/__init__.py,
	src/notifier/decorators.py, src/notifier/jobserver.py,
	src/notifier/main.py, src/notifier/sockets.py,
	src/notifier/thread.py, src/notifier/yieldfunc.py, test/asynctest.py:
	Removed deprecated code for mainloop functions in kaa.notifier;
	removed deprecated code for MainThreadCallback.set_async()
	functionality; renamed decorators:

	* 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/main.py, src/notifier/thread.py, src/utils.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/main.py, src/notifier/reactor.py:
	adjust to latest kaa.MainThreadCallback changes

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

	* src/notifier/main.py, src/notifier/popen.py, src/notifier/thread.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>

	* API_CHANGES.txt, src/notifier/async.py, src/notifier/decorators.py,
	src/notifier/main.py, src/notifier/thread.py,
	src/notifier/yieldfunc.py, src/rpc.py, test/asynctest.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.

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/notifier/url.py (deleted):
	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>

	* NEWS, setup.py: 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/async.py, src/notifier/sockets.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

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

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

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

	* src/notifier/async.py, src/notifier/sockets.py,
	src/notifier/thread.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

	* src/notifier/async.py, src/notifier/main.py,
	src/notifier/nf_wrapper.py, src/notifier/thread.py,
	src/notifier/yieldfunc.py, src/rpc.py, test/asynctest.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/async.py, src/notifier/thread.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

	* src/notifier/yieldfunc.py, test/asynctest.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.

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

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

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

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

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

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

	* API_CHANGES.txt, src/notifier/__init__.py, src/notifier/async.py,
	src/notifier/jobserver.py, test/jobserver.py:
	o Add new kaa notifier class BackgroundTask o 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

	* API_CHANGES.txt (added), src/notifier/main.py, src/rpc.py,
	test/async_lock.py, test/asynctest.py, test/callbacks.py,
	test/decorator.py, test/jobserver.py, test/kaa_in_twisted.py,
	test/kaaconf-editor.py, test/signals.py, test/twisted_in_kaa.py,
	test/xmlrpc.py (deleted):
	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/__init__.py, src/notifier/__init__.py, src/notifier/main.py,
	src/notifier/thread.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/nf_thread.py, src/notifier/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/__init__.py, src/notifier/async.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/main.py, src/notifier/thread.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/__init__.py, src/notifier/__init__.py, src/notifier/main.py,
	src/notifier/nf_thread.py, src/notifier/thread.py:
	move set_current_as_mainthread as set_mainthread to main

	* src/config.py, src/extensions/inotify/__init__.py,
	src/input/lirc.py, src/input/stdin.py, src/notifier/main.py,
	src/notifier/nf_thread.py, src/notifier/reactor.py, src/rpc.py,
	src/xmlrpc.py (deleted):
	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/nf_wrapper.py, src/notifier/pynotifier/__init__.py:
	keep names in sync with pynotifier

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

	* src/__init__.py, src/notifier/__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/nf_wrapper.py, src/notifier/pynotifier/__init__.py,
	src/notifier/pynotifier/nf_twisted.py (added):
	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/__init__.py, src/notifier/__init__.py:
	Bring most of notifier directly into kaa namespace.

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

	* setup.py, src/extensions/utils.c (added), 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>

	* NEWS, setup.py: 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 o call timer after select o cleanup try/except
	blocks o 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/notifier/reactor.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/__init__.py, src/notifier/nf_thread.py,
	test/kaa_in_twisted.py:
	fix shutdown and add special twisted support to threading

	* src/notifier/__init__.py, src/notifier/nf_thread.py (added),
	src/notifier/pynotifier/nf_generic.py, test/kaa_in_twisted.py (added):
	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
	(deleted):
	rename twisted test

	* src/notifier/jobserver.py, src/notifier/reactor.py,
	src/notifier/thread.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/attimer.py (deleted), src/notifier/timer.py:
	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/__init__.py, src/notifier/async.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.glade (added), test/kaaconf-editor.py (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/build_py.py,
	src/distribution/xmlconfig.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 (deleted), 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>

	* setup.py, src/distribution/core.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

	* NEWS, setup.py: 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/async.py, src/notifier/jobserver.py,
	src/notifier/thread.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>

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

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

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

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

	* ChangeLog.in, MANIFEST.in, NEWS, src/distribution/svn2log.py:
	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/xmlutils.py: update svn properties

	* ChangeLog.in: change Tack's mail address

	* ChangeLog.in (added), MANIFEST.in:
	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 (deleted):
	remove kaa.xml libxml2 wrapper, not needed in any kaa module anymore

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

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

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

	* src/notifier/yieldfunc.py, test/async_lock.py (added):
	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>

	* setup.cfg (added), src/distribution/core.py:
	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/callback.py, src/notifier/event.py,
	src/notifier/nf_wrapper.py, src/notifier/sockets.py,
	src/notifier/timer.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>

	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>

	* src/notifier/callback.py, test/callbacks.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

	* src/notifier/callback.py, test/signals.py (added):
	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/__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>

	* setup.py, src/distribution/core.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>

	* setup.py, src/distribution/core.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/build_py.py (added), src/distribution/core.py,
	src/distribution/xmlconfig.py (added):
	add config xml to python converter

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

	* src/distribution.py (deleted), src/distribution/core.py (added),
	src/distribution/version.py (added), src/version.py:
	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 (deleted): Move kaa.ipc into DEPRECATED/

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

	* MANIFEST.in, setup.py: 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/log.py,
	src/notifier/pynotifier/nf_generic.py,
	src/notifier/pynotifier/nf_gtk.py, src/notifier/pynotifier/version.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>

	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>

	svn propset

	* src/extensions/inotify/inotify.c, src/extensions/objectrow.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

	* COPYING, TODO, setup.py, src/__init__.py, src/config.py, src/db.py,
	src/decorators.py, src/distribution.py,
	src/extensions/inotify/__init__.py, src/extensions/inotify/inotify.c,
	src/extensions/objectrow.c, src/input/lirc.py, src/input/stdin.py,
	src/ioctl.py, src/ipc.py, src/logger.py, src/rpc.py, src/strutils.py,
	src/utils.py, src/weakref.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 (deleted):
	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, src/notifier/callback.py, test/callbacks.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/__init__.py, src/notifier/async.py,
	src/notifier/callback.py, src/notifier/decorators.py,
	src/notifier/event.py, src/notifier/jobserver.py,
	src/notifier/nf_wrapper.py, src/notifier/popen.py,
	src/notifier/sockets.py, src/notifier/thread.py,
	src/notifier/timer.py, src/notifier/yieldfunc.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/nf_gtk.py, src/notifier/pynotifier/version.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.

	* setup.py, src/extensions/objectrow.c (added):
	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.

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/__init__.py,
	src/notifier/pynotifier/log.py,
	src/notifier/pynotifier/nf_generic.py,
	src/notifier/pynotifier/nf_gtk.py, src/notifier/yieldfunc.py,
	src/utils.py:
	set missing properties

	* src/notifier/pynotifier/__init__.py,
	src/notifier/pynotifier/dispatch.py, src/notifier/pynotifier/log.py,
	src/notifier/pynotifier/nf_generic.py,
	src/notifier/pynotifier/nf_gtk.py, src/notifier/pynotifier/version.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/decorators.py, src/notifier/jobserver.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/nf_wrapper.py, src/notifier/pynotifier/__init__.py,
	src/notifier/pynotifier/nf_generic.py:
	fix pynotifier generic

	* setup.py, src/notifier/nf_generic.py (deleted),
	src/notifier/nf_wrapper.py, src/notifier/pynotifier/__init__.py
	(added), src/notifier/pynotifier/dispatch.py (added),
	src/notifier/pynotifier/log.py (added),
	src/notifier/pynotifier/nf_generic.py (added),
	src/notifier/pynotifier/nf_gtk.py (added),
	src/notifier/pynotifier/version.py (added):
	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/__init__.py, src/notifier/callback.py,
	src/notifier/nf_wrapper.py (added), src/notifier/popen.py,
	src/notifier/sockets.py, src/notifier/thread.py,
	src/notifier/timer.py:
	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>

	* setup.py, src/extensions/inotify/__init__.py (added),
	src/extensions/inotify/fallback-inotify-syscalls.h (added),
	src/extensions/inotify/fallback-inotify.h (added),
	src/extensions/inotify/inotify.c (added):
	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/__init__.py, src/notifier/thread.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/popen.py, src/notifier/thread.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/__init__.py, src/notifier/callback.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/__init__.py, src/notifier/callback.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/input/stdin.py (added), src/ipc.py, src/notifier/__init__.py,
	src/utils.py (deleted):
	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>

	* src/logger.py, src/strutils.py: set properties

	* src/.cvsignore (deleted), src/input/.cvsignore (deleted),
	src/notifier/.cvsignore (deleted):
	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

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

	* setup.py: there is no base dir anymore

	* src/__init__.py, src/base/.cvsignore (deleted),
	src/base/__init__.py (deleted), src/base/config.py (deleted),
	src/base/db.py (deleted), src/base/decorators.py (deleted),
	src/base/distribution.py (deleted), src/base/ioctl.py (deleted),
	src/base/ipc.py (deleted), src/base/libxml2.py (deleted),
	src/base/logger.py (deleted), src/base/strutils.py (deleted),
	src/base/utils.py (deleted), src/base/version.py (deleted),
	src/base/weakref.py (deleted), src/config.py (added), src/db.py
	(added), src/decorators.py (added), src/distribution.py (added),
	src/ioctl.py (added), src/ipc.py (added), src/libxml2.py (added),
	src/logger.py (added), src/notifier/__init__.py,
	src/notifier/decorators.py, src/strutils.py (added), src/utils.py
	(added), src/version.py (added), src/weakref.py (added),
	test/config.py, test/libxml2.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

	* src/base/libxml2.py, test/libxml2.py:
	update iterator to go thru all nodes

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

	* src/base/libxml2.py (added), test/libxml2.py (added):
	add libxml2 wrapper

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

	* src/notifier/decorators.py, test/decorator.py:
	fix bug with more than one exposed function in a class

	* src/notifier/__init__.py, src/notifier/decorators.py (added),
	test/decorator.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), COPYING (added), MANIFEST.in (added), README
	(added), TODO (added), setup.py:
	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/__init__.py, src/notifier/callback.py,
	src/notifier/popen.py, src/notifier/sockets.py,
	src/notifier/thread.py, test/config.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/config.py, src/base/ipc.py, src/base/weakref.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/strutils.py (added), src/base/utils.py:
	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/__init__.py, src/notifier/popen.py,
	src/notifier/sockets.py, src/notifier/thread.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/__init__.py, src/notifier/callback.py,
	src/notifier/nf_generic.py, src/notifier/popen.py,
	src/notifier/sockets.py, src/notifier/thread.py,
	src/notifier/timer.py:
	switch to new pyNotifier version

2005-11-23  Dirk Meyer <dischi@freevo.org>

	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/__init__.py, src/notifier/sockets.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/__init__.py, src/notifier/thread.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/db.py, src/base/ipc.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/db.py, src/base/utils.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 (deleted):
	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.

	* setup.py, src/extensions/shmmodule.c (added), src/input/lirc.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/__init__.py (added),
	src/input/lirc.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/__init__.py, src/notifier/nf_generic.py,
	src/notifier/sockets.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>

	* src/notifier/__init__.py, src/notifier/jobserver.py (added),
	test/jobserver.py (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/__init__.py, src/notifier/callback.py,
	src/notifier/popen.py, src/notifier/sockets.py,
	src/notifier/thread.py, src/notifier/timer.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/__init__.py, src/notifier/thread.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/__init__.py, src/notifier/__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  Nobody <nobody@nowhere.com>

	* 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/__init__.py, src/notifier/callback.py,
	src/notifier/event.py, src/notifier/popen.py,
	src/notifier/signals.py, src/notifier/sockets.py (added),
	src/notifier/thread.py, src/notifier/timer.py (added):
	make Timer, SocketDispatcher and Process thead safe

	* src/notifier/__init__.py, src/notifier/thread.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/__init__.py, src/notifier/callback.py,
	src/notifier/thread.py:
	move thread stuff from callback.py to thread.py and adjust this file

2005-07-25  Jason Tackaberry <tack@urandom.ca>

	* src/notifier/__init__.py, src/notifier/callback.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/__init__.py, src/notifier/callback.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/__init__.py, src/notifier/callback.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/__init__.py, src/notifier/callback.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/posixsignals.py (deleted),
	src/notifier/signals.py (added):
	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/base/weakref.py,
	src/notifier/__init__.py, src/notifier/callback.py,
	src/notifier/nf_generic.py, src/notifier/signals.py (deleted):
	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/__init__.py, src/notifier/callback.py:
	Implement WeakOneShotTimer; don't weakref functions (only instance
	methods) so we can use closures for the Weak* family.

	* src/__init__.py, src/notifier/__init__.py,
	src/notifier/callback.py, src/notifier/signals.py,
	src/notifier/wrapper.py (deleted):
	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/__init__.py, src/notifier/nf_generic.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/posixsignals.py (added), src/notifier/signals.py:
	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

	* setup.py, src/notifier/.cvsignore (added), src/notifier/__init__.py
	(added), src/notifier/callback.py (added), src/notifier/nf_generic.py
	(added), src/notifier/popen.py (added), src/notifier/signals.py
	(added), src/notifier/thread.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

	* setup.py (added), src/.cvsignore (added), src/__init__.py (added),
	src/base/.cvsignore (added), src/base/__init__.py (added),
	src/base/distribution.py (added):
	add first version of kaa.base

