Changes in version 1.3.0
------------------------

  * Fixed cleaning up observer weakref proxies after recent Singleton changes
  * Return False instead of 0 from NullType.__nonzero__
  * Made Null only compare equal with itself
  * Removed obsolete application.python.util module

Changes in version 1.2.9
------------------------

  * Renamed Singleton's internal attribute to make them less obtrusive
  * Fixed detection for the class's __new__ in Singleton
  * Added execute_once decorator

Changes in version 1.2.8
------------------------

  * Reorganized the application.python package contents
  * Added the limit function to restrict a numeric value to a given range
  * Added function to recursively create directory and ignore error if exists
  * Added classproperty descriptor for defining properties at the class level
  * Removed obsolete default_host_ip attribute from application.system
  * Improved Null to better act as a class substitute

Changes in version 1.2.7
------------------------

  * Release EventQueue events immediately after processing

Changes in version 1.2.6
------------------------

  * Use the system path separator when building the list of packages
  * Fixed handling of unicode in the syslog logger

Changes in version 1.2.5
------------------------

  * Fixed syslog on platforms that do not support it
  * Added outgoing_ip_for method to host object

Changes in version 1.2.4
------------------------

  * Added NullType in order to allow Null to be pickled
  * Made NullType a singleton to prevent multiple instances when unpickling
  
Changes in version 1.2.3
------------------------

  * Improved memory_dump's output using console size information
  * Added support for detecting object cycles in application.debug.memory

Changes in version 1.2.2
------------------------

  * Made Null from application.python.util an instance. See NEWS.
  * Improved processing speed for post_notification.

Changes in version 1.2.1
------------------------

  * Added the missing application.log package to the build

Changes in version 1.2.0
------------------------

  * Depend on python2.5 or newer
  * Modified Null not to return self for __setattr__ and __delattr__
  * Added indexing support for the Null class
  * Allow a Null object to be a descriptor
  * Added __len__ method to the Null class
  * Added iteration support for the Null class
  * Added __contains__ method to the Null class
  * Added context management support to the Null class
  * Added discard_observer method to NotificationCenter
  * Added comment to clarify behaviour
  * Fixed threading issues with adding and removing observers
  * Fixed handling of settings which contain uppercase characters and dashes
  * Added support for weakly referencing observers in the notification system
  * Added example of how to have a weakly referenced notification observer
  * Removed deprecated functionality
  * Added purge_observer method on NotificationCenter
  * Added dynamic host properties to application.system
  * Removed resolution test from Hostname configuration datatype
  * Improved error message for invalid type in IPAddress
  * Removed twisted logging backend and added a logging extension for twisted
  * Improved logging functions and added some commonly used aliases
  * Fixed initial setting of the current log level

Changes in version 1.1.5
------------------------

  * Made a ConfigSection iterable as (name, value) pairs
  * Modified ConfigSetting to allow any callable to be used as a validator
  * Fixed __import__ statement to work with python older than 2.5
  * Refactored ConfigSectionMeta to decouple it from ConfigSetting
  * Save ConfigSetting's initial default values as cls.__defaults__
  * Added __delattr__ on ConfigSectionMeta to prevent deletion of settings
  * Added a mechanism to skip applying the type for a ConfigSetting
  * Added set/reset capabilities to ConfigSection
  * Enhanced ConfigFile.get_section with filtering and default return value
    for missing section capabilities
  * Reworded docstrings to fit in width on a standard terminal
  * Allow ConfigSection.__configfile__ to be an instance of ConfigFile too
  * Added read capabilities directly on ConfigSection classes
  * Improved caching mechanism in ConfigFile
  * Use ConfigSection's read capabilities instead of ConfigFile.read_settings
  * Added support for specifying the configuration file type in ConfigSection
  * Deprecated ConfigFile.read_settings and dump_settings
  * Added local_config_directory property on Process
  * Deprecated using __configfile__ in favor of __cfgfile__ on ConfigSection
  * Added filename attribute to ConfigFile instances
  * Added __str__ representation to ConfigSection
  * Added tracing capabilities to ConfigSection
  * Replaced dump_settings function body with printing the class
  * Updated ConfigSection's docstring to describe the special attributes
  * Rephrased exception message for clarity
  * Modified data type converters to accept what they generate as input
  * Updated examples to match the latest configuration API changes

Changes in version 1.1.4
------------------------

  * Allow version numbers without the micro or minor number
  * Added concept of undefined version that compares lower than any other
  * Added missing entry about notification.py example
  * Added dependency module and example

Changes in version 1.1.3
------------------------

  * Added isdescriptor function to application.python.descriptor
  * Fixed handling of special attributes in ConfigSection subclasses
  * Fixed ConfigSection behaviour with multi-level inheritance

Changes in version 1.1.2
------------------------

  * Deprecated config_directory in favor of system_config_directory
  * No longer raise an expection when setting the system config directory,
    if the directory doesn't exist
  * Changed datatypes.Boolean into a validator
  * Added ConfigSetting descriptor that is meant to deprecate the use of the
    _datatypes mapping when declaring setting types inside a ConfigSection
  * Deprecated ConfigFile.get_option in favor ConfigFile.get_setting
  * Added support for specifying a config file and section in ConfigSection
  * Fixed memory leak caused by ThreadLocal not releasing some internal data
  * Added WriteOnceAttribute descriptor
  * Added note about restrictions that apply when using the new descriptors
  * Added version module
  * Bumped debian standards version to 3.8.2
  * Fixed lintian warning about missing misc:Depends dependency
  * Modified examples to honor the latest changes in the API

Changes in version 1.1.1
------------------------

  * By default show rate when measuring timing
  * For better visibility log deprecation warning with log.warn
  * Deprecated _defaultPort and _name in favor of default_port and name
  * Use a better description for an endpoint address
  * Define log levels ALL and NONE consistently with the others
  * Added LogLevel configuration datatype
  * Replaced deprecated startSyslog with start_syslog in examples

Changes in version 1.1.0
------------------------

  * Allow process.runtime_file(None) and return None for it
  * Switched from python-central to python-support
  * Enhanced the Singleton metaclass to properly handle classes that take
    arguments in __init__ and/or __new__
  * Extended singleton example with classes that take arguments to __init__
  * Added descriptor that allows objects to have thread specific attributes
  * Added a new module that implements a notification system
  * Added example script for notification system
  * Do not indent subsequent lines in a multi line log in syslog
  * Simplified logging of multilines in syslog
  * Specify the priority when logging to syslog, based on the message type
  * Implemented fallback log capabilities via the logging module
  * Added prefix to debug log records with twisted backend
  * Add prefix to log lines when logging to console with twisted backend
  * Added log level support to application.log module
  * Removed system identifier when logging to syslog in twisted backend
  * Added start_syslog function and deprecated startSyslog variant
  * Updated README with information about the new notification module
  * Added NEWS file to document user visible changes between versions
  * Updated debian description to include the new notification system
  * Updated debian dependencies
  * Bumped debian standards version

Changes in version 1.0.9
------------------------

  * Better method to determine the default host IP address.
  * Renamed host_ip to default_host_ip for clarity.
  * Renamed application/util.py to application/system.py

Changes in version 1.0.8
------------------------

  * Added LICENSE and ChangeLog.
  * Rephrased some docstrings and descriptions.
  * Added docstring to the Process class.
  * Do not automatically import the timing module when the debug
    module is imported.
  * Made Process and Signals singletons.
  * Updated util module description.
  * Removed some obsolete commented code.
  * Added some usage examples.
  * Do not compress .py and .ini example files.
  * Renamed mixed case functions in the configuration module to use
    names with underscores for consistency.
  * Renamed argument otype to type in the get_option function.
  * Renamed thisHostIP to host_ip.
  * Generalized configuration handling by adding the ConfigFile class.
    With this multiple distinct configuration files can eb handled at the
    same time and it makes it easier to specify the configuration file name
    from the application than the less flexible module file name attribute.
  * Removed configuration module functions which were made obsolete by the
    addition of ConfigFile.
  * Replaced _dataTypes attribute on ConfigSection with _datatypes.

Changes in version 1.0.7
------------------------

  * In setup.py take the long description from README.

Changes in version 1.0.6
------------------------

  * Added missing import in the queue module.

Changes in version 1.0.5
------------------------

  * Added methods for controlling the event processing workflow
     - pause/unpause/resume - to control event processing
     - accept_events/ingore_events - to control event acceptance
     - empty - to purge events already on the queue
  * Allow unhandled events in a CumulativeEventQueue to be preserved.
  * Capture unhandled exceptions from a queue's event handler.
  * Fixed some docstrings and error messages in the queue module.

Changes in version 1.0.4
------------------------

  * Added application.python.queue module.

Changes in version 1.0.3
------------------------

  * Added usage example for the decorator module.

Changes in version 1.0.2
------------------------

  * Added application.python submodule. It contains python related utilities
    and helpers (currently it contains the decorator and util modules).
  * Added decorator support in application.python.decorator.
  * Moved the Singleton and Null classes from application.util to
    application.python.util.
  * Updated years in copyright info.

Changes in version 1.0.1
------------------------

  * Fixed issue with printing the memory dump in multithreaded environments.
  * Ignore one time collectable garbage generated before the memory debug
    module is imported.

