Summary of changes
==================

v2.8b2
------

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Jul 20 14:28:29 2013 -0600

    Update version to 2.8b2.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Jul 20 14:25:43 2013 -0600

    Set lineno attribute on generated Stmt node.
    
    This fixes some problems with incorrect line numbers in
    tracebacks.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Mar 16 19:26:06 2011 -0600

    Implement support for "Transfer-Encoding: chunked".
    
    Use chunked transfer encoding if there is no content length
    available and it's supported by the protocol (i.e. HTTP 1.1).
    Stream responses without a length can now be compressed.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Nov 23 10:35:37 2012 -0600

    Make StaticFile handle errors from os.stat().

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Nov 23 10:34:28 2012 -0600

    Support current twisted library.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Nov 23 10:33:53 2012 -0600

    Add quixote.get_param().

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Nov 17 13:46:25 2012 -0600

    Safer behavior for Directory meta-class.
    
    Only mess with the _q_exports attribute if the export()
    and subdir() decorators have been used.  This will hopefull
    avoid any backwards compatibility surprises.


v2.8b1
------

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 13:58:30 2012 -0600

    Update version to 2.8b1.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 13:49:37 2012 -0600

    Remove generated HTML docs from the version control system.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 13:38:24 2012 -0600

    Update documentation for 2.8 changes.
    
    Mention the export() decorator.  Simplify the explaination of
    the mini demo.  Suggest starting the server using python -m
    <module> since that avoids platform dependant paths.  Explain
    how to make simple_server listen on a public interface.  Include
    the latest docutils stylesheet.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 13:30:23 2012 -0600

    Use the export() and subdir() decorators for the demo.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 13:24:00 2012 -0600

    Improve the formatting of Quixote generated pages.
    
    Introduce the errors.format_page() function and use it to generate
    all HTML pages produced by Quixote.  It provides a single location
    to "monkey-patch" if applications want to customize the look of the
    pages.  Improve the wording of the messages on some of the error
    pages.  Provide some basic CSS rules to make the pages look a little
    more modern.  Use the HTML 5 doctype.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 13:19:06 2012 -0600

    Enable stricter HTTP request method checking.
    
    By default, only allow GET, HEAD, and POST.  Allowed methods
    can be set by the ALLOWED_METHODS config.  All methods can
    be allowed by setting ALLOWED_METHODS to None.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Jan 2 01:04:17 2012 -0600

    Add export() and subdir() decorators for managing _q_exports.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Jan 1 22:22:28 2012 -0600

    Have simple_server.py use Quixote access logger.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Jan 1 22:21:10 2012 -0600

    Increase resolution of elapsed time in access log.
    
    To save space, prepend 's', instead of 'sec'.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Jan 1 22:18:21 2012 -0600

    Add js_escape() utility.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Jan 1 21:24:09 2012 -0600

    Use Form.is_submitted() to check if Widget should parse.
    
    Pass a reference to the form object to widgets.  Use
    Form.is_submitted() to check if form has been submitted.  This
    allows query strings to be provided to forms with a POST method
    while preventing them from erroneously parsing themselves.
    Previously the query string would cause them to think the form
    was submitted.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Jan 1 20:51:11 2012 -0600

    Set 'id' attribute on form input elements.
    
    This is useful when using Javascript to manipulate the form.  It
    also now seems to be standard practice.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Jan 1 20:46:10 2012 -0600

    Don't auto-set 'Expires' header if it already exists.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun May 1 15:43:05 2011 -0600

    Add the format() method to htmltext.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun May 1 13:28:06 2011 -0600

    Change HTTPRequest to always consume request body.
    
    Some clients and middleware expect that the body is always consumed.
    Previous to this change, raising a PublishError exception (for
    example) could result in a response being sent without the body
    being consumed.  Requiring the application code to ensure that the
    body is always consumed seems burdensome.  Using a temporary file
    or StringIO object seems simplest and should not significantly
    affect performance.


v2.7
----

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Mar 16 20:22:33 2011 -0600

    Update version to 2.7

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Mar 16 19:30:00 2011 -0600

    Relax MIME boundary pattern (some clients skip final \r\n).


v2.7b2
------

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Jan 22 13:35:21 2010 -0600

    Update version to 2.7b2

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Jan 22 13:32:44 2010 -0600

    Use the StringIO module rather than cStringIO.
    
    cStringIO is gone in Python 3 and also does not handle unicode
    strings properly.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Jan 22 13:29:46 2010 -0600

    By default, set Cache-Control in addition to the Expires header.
    
    The Expires header is sufficient for HTTP 1.0 but for HTTP 1.1 we
    must add a must-revalidate directive.  Clients and proxies are
    allowed to ignore Expires in certain cases and use stale pages (RFC
    2616 sections 13.1.5 and 14.9.4).

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Jan 22 13:28:58 2010 -0600

    Disable cimport module for Python >= 2.6.
    
    The current version of the cimport module does not support relative
    imports. Disable it for now.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Dec 13 14:18:45 2009 -0600

    Fix reference to compile_file function (fixes compile_dir function).


v2.7b1
------

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Sep 7 00:41:44 2009 -0600

    Update version for 2.7b1 release.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Sep 7 00:42:51 2009 -0600

    Add session iterator.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Dec 3 14:41:05 2008 -0600

    Don't use callable().

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Dec 3 12:43:38 2008 -0600

    Use __contains__ instead of has_key.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Dec 3 12:41:18 2008 -0600

    Use utf-8 as default encoding.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Nov 28 23:00:40 2008 -0600

    Use built-in set type.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Sep 7 01:30:26 2009 -0600

    Work around broken ihooks module in Python 2.6.
    
    Using the import hook is still the most convenient way of using PTL
    modules.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun Apr 12 10:57:06 2009 -0600

    Remove spurious kwargs from WidgetDict.__init__.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Jun 16 09:55:31 2009 -0600

    Add options to sendmail so it can be used without a Quixote config.
    
    Also, remove broken encode() call since it can't handle Unicode properly
    as implemented.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sun May 31 19:09:53 2009 -0600

    Add SESSION_COOKIE_SECURE and SESSION_COOKIE_HTTPONLY.
    
    Based on a suggestion from Emmanuel Dreyfus <manu@netbsd.org>, add
    the SESSION_COOKIE_SECURE and SESSION_COOKIE_HTTPONLY options.
    Setting them to true will cause the corresponding flag to be set
    on the session cookie.

Author: Hamish Lawson <hbl@st-andrews.ac.uk>
Date:   Mon Feb 2 10:04:04 2009 -0600

    Check for other possible values of HTTPS.
    
    Currently HTTPRequest only checks whether the HTTPS environment
    variable has a value of 'on', but other possible positive values are
    '1' (as set by mod_wsgi) and 'yes'.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Jan 6 20:16:39 2009 -0600

    Avoid infinite redirect when PATH_INFO is empty.


v2.6
----

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Nov 25 22:22:12 2008 -0600

    Add quixote.ptl.compile_package function.
    
    The ihooks module is broken in Python 2.6 and will be gone in Python 3.
    Provide compile_package() as an alternative method of compiling PTL
    templates.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Jul 5 17:51:20 2008 -0600

    Prepare for v2.6 release.
    
    Remove CHANGES.txt file and generate it as necessary.  Update
    version numbers and remove setup.py version check.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Jul 5 17:50:14 2008 -0600

    Improve README.txt.
    
    Add link to wiki.  Add instructions on how to run the mini demo.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Apr 5 20:05:33 2008 -0600

    Use SCGIMount directive in documentation.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Apr 5 15:15:40 2008 -0600

    Remove a reference to _q_exception_handler.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Sat Feb 16 15:09:45 2008 -0600

    Silence struck.pack warning.
    
    Silence struct.pack warning by forcing gzipped response CRC to be
    a positive integer.


v2.5
----

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Nov 16 16:36:30 2007 -0600

    Update CHANGES.txt for 2.5 release.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Nov 16 16:35:33 2007 -0600

    Fix PTL handling of __future__ statements.


v2.5b1
------

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri Apr 6 00:01:32 2007 -0600

    Improve setup.py for 2.5b1 release.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Thu Apr 5 23:33:22 2007 -0600

    Prepare for 2.5b1 release.

Author: C. Titus Brown <titus@idyll.org>
Date:   Fri Feb 9 17:00:37 2007 -0600

    Reorganize source
    
    Added some simple WSGI documentation; cleaned up test code a bit.
    Added test server status check.  Moved the quixote package into the
    quixote/ subdirectory.  Added nose+twill tests under tests/.

Author: C. Titus Brown <titus@idyll.org>
Date:   Tue Jan 30 09:25:26 2007 -0600

    Add WSGI and qpy support.
    
    Added quixote.html.use_qpy to switch Quixote to using qpy instead of
    htmltext (code contributed by Mike Orr).  Added quixote.cleanup()
    to clear _publisher to support test fixtures.  Added wsgi.py,
    quixote.get_wsgi_app() for WSGI support.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Jan 30 09:23:25 2007 -0600

    In scgi_server.py, make host default to 'localhost'.
    
    It seems better to default to a more secure setup.  The previous code
    caused the server to listen on all interfaces by default.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Jan 30 09:21:51 2007 -0600

    Make setup.py URL point to quixote.ca site.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Thu Sep 7 10:59:51 2006 -0600

    Add comment explaining why single-select options are required.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Aug 23 20:39:49 2006 -0600

    Allow setup.py to work without the "quixote" package.
    
    Also, improve the PyPI information.


v2.5a1
------

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Aug 15 12:02:13 2006 -0600

    Do version check only when building source distribution.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Tue Aug 8 20:43:03 2006 -0600

    Prepare for 2.5a1 release.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Aug 7 16:19:28 2006 -0600

    Have setup.py check version numbers
    
    Make setup.py check that quixote.__version__ matches the one in
    CHANGES.txt.  Also, stop distributing MANIFEST since it is a pain to
    ensure that it is up-to-date.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Aug 7 16:01:12 2006 -0600

    Make PTL work with Python 2.5.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Aug 7 15:53:48 2006 -0600

    Don't try to process non-ReST text files with rst2html

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Mon Aug 7 15:51:52 2006 -0600

    Make MANIFEST.in more accurate.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri May 19 11:55:30 2006 -0600

    Have simple_server.py call server_close().
    
    Use a try/finally block to ensure that server_close() is called by
    simple_server.py (as requested by Michele Simionato).

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri May 19 11:54:24 2006 -0600

    Remove empty "name" attribute from an input field.
    
    Remove the empty "name" attribute from the noscript input field created
    by OptionSelectWidget.  This change does not seem to effect behavior
    and makes Tidy happier.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Fri May 19 11:51:55 2006 -0600

    Add get_size() method to the Upload class.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Thu Mar 16 19:48:55 2006 -0700

    Update README and LICENSE.

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Thu Mar 16 13:18:21 2006 -0700

    Remove Subversion keywords.


v2.4
----

Author: Neil Schemenauer <nas@arctrix.com>
Date:   Wed Mar 15 17:58:21 2006 -0700

    Import Quixote 2.4.

