* v0.4.0 -- target release date: 2006-02-05
    + Include a full specification document, covering all aspects of the module and its members.
    + Drop the TypeCheckException used for backwards compatibility with 0.1.6 and prior versions
    + Drop the following synonyms: typecheck, typecheck_args, typecheck_yield, typecheck_return
    + Drop the ability to specify types via keyword parameters (ie, @typecheck_args(a=int, b=float))
    + Under discussion:		
        - Include support for zope.interfaces (possibly; still investigating)
        - Change the behaviour of the enable_checking flag to affect "compile-time", rather than "run-time"
        - Have the typechecker find all errors, not just the first one.
        - Add an OrderedIteratorMixin to complement UnorderedIteratorMixin
    + Drop the Empty() utility class
    + Merge typecheck.sets back into the main typecheck module

### Anything above here is a roadmap
### Anything below here is the actual changelog

* v0.3.4 -- released: 2006-01-22
    + Add a Typeclass() utility class
    + Add a Number typeclass
    + Add a String typeclass
    + Add a MSequence typeclass
    + Add a Mapping typeclass
    + Add an ImSequence typeclass

* v0.3.3 -- released: 2006-01-15
    + Add an Exact() utility class
    + Add a Length() utility class
    + Improve the stringification of TypeCheckErrors dramatically
    + Add the following aliases:
        - accepts -> typecheck_args
        - returns -> typecheck_return
        - yields -> typecheck_yield
        - IsNoneOf -> Not
        - IsAllOf -> And
        - IsOneOf -> Or
        - IsOnlyOneOf -> Xor
    + Add the ability to use functions and methods to do typechecking
    + Add a Class() utility class (for including not-yet-declared classes in signatures)

* v0.3.2 -- released: 2005-12-29
    + Add a YieldSeq utility type to cope with sequential yields of different types
    + Add an example of Xor() being implemented in terms of the included And, Not and Or utility classes (tests/test_examples)
    + Add an Xor() utility class to complement the other binary expression classes
    + Add an example of IsIterable being implemented in terms of HasAttr and IsCallable (tests/test_examples)
    + Two boolean classes (And and Or) have gained some limited intelligence about boolean equivalence; And(And(int, float), str) == And(int, float, str)
    + Have Empty() support any iterator
    + Add support for Empty() sets

    + Bug fix: add __eq__ to IsCallable, IsIterable
    + Bug fix: add __hash__ to IsCallable, IsIterable
    + Bug fix: add __str__, __repr__ to IsIterable
    + Bug fix: fix the __eq__ methods of And, Not and Or to be based on ==, rather than subsets
    + Bug fix: And and Or now require at least two unique conditions
    + Bug fix: Dict's __hash__ method previously threw an error
    + Bug fix: List's __hash__ method previously threw an error
    + Bug fix: add __hash__ to typecheck.sets.Set
    + Bug fix: Set's __eq__ is now based on ==, rather than issubset; all instances that compare equal now hash to the same value
    + Bug fix: there was an error in Set.__init__ related to the handling of empty input lists
    + Bug fix: HasAttr gets __hash__ and __eq__ methods
    + Bug fix: TypeVariables gets __hash__ and __eq__ methods

* v0.3.1 -- released: 2005-12-18
    + Add an IsCallable utility type to assert callability
    + Convert Self to a callable, like all other utility types
    + Add a HasAttr utility type to add duck-typing support
    + Add an IsIterable utility type to assert that the object implements the iterator protocol

* v0.3.0 -- released: 2005-12-05
    + Bring Self closer to actually working
    + Move some of the rarely-used pieces of the machinery into separate modules
        - UnorderedIteratorMixin and friends -> typecheck.mixins
        - Set -> typecheck.sets
    + Remove the "requirement" that __typecheck__ methods return True if successful
    + Find a way to mimic Haskell's type variables
    + Allow user-created typechecker classes to register hooks to tell them when the system starts and stops typechecking a function
    + Incorporate a framework for allowing user-created container classes to typecheck their contents
        - Type{Signature,Check}Error classes now allow their internal helper classes to control stringification
    + Add a typecheck_yield that works with generators
    + Add a mixin class to supply easy typechecking for iterators
    + Have typechecked functions store their type information
    + Incorporate a new testing framework that supports TODO tests
    + Add a Not() helper class to complement And() and Or()
    + Add better error messages to TypeSignatureError
    + Code cleanup (more members get _-prefixes, etc)
    + Incorporate a framework for registering special helper-classes with the Type() dispatcher
    + Add a typechecked set class that covers the built-in set type
    + Bug fixes:
        - Some instances of Or() and And() would not compare equal when they should have

* v0.2.0 -- released: 2005-11-22
    + Replace the code in 0.1.6 with new code by Collin Winter. Too many changes from 0.1.6 to summarise.

* v0.1.6 -- released: 2005-09-29
    + Add support for typechecking of old-style classes
	
* v0.1.4 -- released: 2005-09-28
    + Add typecheck.doctest_support
