CHANGES
=======

3.8.0 (2009-05-23)
------------------

- Moved IHTTPException, IMethodNotAllowed, and MethodNotAllowed from
  zope.app.http to zope.publisher.interfaces.http, fixing dependency
  cycles involving zope.app.http.

- Moved the DefaultViewName API from zope.app.publisher.browser to
  zope.publisher.defaultview, making it accessible to other packages
  that need it.

3.7.0 (2009-05-13)
------------------

- Move ``IView`` and ``IBrowserView`` interfaces into
  ``zope.browser.interfaces``, leaving BBB imports.

3.6.4 (2009-04-26)
------------------

- Added some BBB code to setDefaultSkin to allow IBrowserRequest's to continue
  to work without configuring any special adapter for IDefaultSkin.

- Move `getDefaultSkin` to the skinnable module next to the `setDefaultSkin`
  method, leaving a BBB import in place. Mark `IDefaultBrowserLayer` as a
  `IBrowserSkinType` in code instead of relying on the ZCML to be loaded.

3.6.3 (2009-03-18)
------------------

- Mark HTTPRequest as IAttributeAnnotatable if ``zope.annotation`` is
  available, this was previously done by ``zope.app.i18n``.

- Register `IHTTPRequest` -> `IUserPreferredCharsets` adapter in ZCML
  configuration. This was also previously done by ``zope.app.i18n``.

3.6.2 (2009-03-14)
------------------

- Add an adapter from ``zope.security.interfaces.IPrincipal`` to
  ``zope.publisher.interfaces.logginginfo.ILoggingInfo``. It was moved
  from ``zope.app.security`` as a part of refactoring process. 

- Add adapters from HTTP and FTP request to
  ``zope.authentication.ILoginPassword`` interface. They are moved from
  ``zope.app.security`` as a part of refactoring process. This change adds a
  dependency on the ``zope.authentication`` package, but it's okay, since it's
  a tiny contract definition-only package.

  See http://mail.zope.org/pipermail/zope-dev/2009-March/035325.html for
  reasoning.

3.6.1 (2009-03-09)
------------------

- Fix: remove IBrowserRequest dependency in http implementation based on
  condition for setDefaultSkin. Use ISkinnable instead of IBrowserRequest.

3.6.0 (2009-03-08)
------------------

- Clean-up: Move skin related code from zope.publisher.interfaces.browser and
  zope.publisher.browser to zope.publihser.interfaces and
  zope.publisher.skinnable and provide BBB imports. See skinnable.txt for more
  information.

- Fix: ensure that we only apply skin interface in setDefaultSkin which also
  provide IBrowserSkinType. This will ensure that we find a skin if the
  applySkin method will lookup for a skin based on this type interface.

- Fix: Make it possible to use adapters and not only interfaces as skins from
  the adapter registry. Right now the defaultSkin directive registers simple
  interfaces as skin adapters which will run into a TypeError if someone tries
  to adapter such a skin adapter. Probably we should change the defaultSkin
  directive and register real adapters instead of using the interfaces as fake
  adapters where we expect adapter factories.

- Feature: allow to use applySkin with different skin types using the optional
  argument skinType which is by default set to IBrowserSkinType

- Feature: implemented the default skin pattern within adapters. This allows
  us to register default skins for other requests then only IBrowserRequest
  using IDefaultSkin adapters.
  
  Note, ISkinnable and ISkinType and the skin implementation should be moved
  out of the browser request modules. Packages like z3c.jsonrpc do not depend
  on IBrowserRequest but they are skinnable.

- Feature: added ISkinnable interface which allows us to implement the apply
  skin pattern not only for IBrowserRequest

- Fix: Don't cause warnings on Python 2.6

- Fix: Make IBrowserPage inherit IBrowserView.

- Move IView and IDefaultViewName from zope.component.interfaces to
  zope.publisher.interfaces. Stop inheriting from deprecated (for years)
  interfaces defined in zope.component.

- Remove deprecated code.

- Clean-up: Move "zope.testing" from extras to dependencies, per Zope
  Framework policy.  Remove zope.app.testing as a dependency: tests run fine
  without it.

3.5.6 (2009-02-14)
------------------

Bugs fixed:

* An untested code path that incorrectly attempted to construct a NotFound was
  fixed, with a test.


3.5.5 (2009-02-04)
------------------

* LP #322486: setStatus() now allows any int()-able status value.


3.5.4 (2008-09-22)
------------------

Bugs fixed:

* LP #98440: interfaces lost on retried request

* LP #273296: dealing more nicely with malformed HTTP_ACCEPT_LANGUAGE headers
  within getPreferredLanguages().

* LP #253362: dealing more nicely with malformed HTTP_ACCEPT_CHARSET headers
  within getPreferredCharsets().

* LP #98284: Pass the ``size`` argument to readline, as the version of
  twisted used in zope.app.twisted supports it.

* Fix the LP #98284 fix: do not pass ``size`` argument of None that causes
  cStringIO objects to barf with a TypeError.


3.5.3 (2008-06-20)
------------------

Bugs fixed:

* It turns out that some Web servers (Paste for example) do not send the EOF
  character after the data has been transmitted and the read() of the cached
  stream simply hangs if no expected content length has been specified.


3.5.2 (2008-04-06)
------------------

Bugs fixed:

* A previous fix to handle posting of non-form data broke handling of
  form data with extra information in the content type, as in::

    application/x-www-form-urlencoded; charset=UTF-8

3.5.1 (2008-03-23)
------------------

Bugs fixed:

* When posting non-form (and non-multipart) data, the request body was
  consumed and discarded. This makes it impossible to deal with other
  post types, like xml-rpc or json without resorting to overly complex
  "request factory" contortions.

* https://bugs.launchpad.net/zope2/+bug/143873

  The zope.publisher.http.HTTPCharsets was confused by the Zope 2
  publisher, which gives missleading information about which headers
  it has.

3.5.0 (2008-03-02)
------------------

Features added:

* Added a PasteDeploy app_factory implementation.  This should make
  it easier to integrate Zope 3 applications with PasteDeploy.  It
  also makes it easier to control the publication used, giving far
  greater control over application policies (e.g. whether or not to
  use the ZODB).

3.4.2 (2007-12-07)
------------------

* Made segmentation of URLs not strip (trailing) whitespace from path segments
  to allow URLs ending in %20 to be handled correctly. (#172742)

3.4.1 (2007-09-29)
------------------

No changes since 3.4.1b2.

3.4.1b2 (2007-08-02)
--------------------

* zope.publisher now works on Python 2.5.

* Fix a problem with request.get() when the object that's to be
  retrieved is the request itself.


3.4.1b1 (2007-07-13)
--------------------

No changes.


3.4.0b2 (2007-07-05)
--------------------

* Fix https://bugs.launchpad.net/zope3/+bug/122054:
  HTTPInputStream understands both the CONTENT_LENGTH and
  HTTP_CONTENT_LENGTH environment variables. It is also now tolerant
  of empty strings and will treat those as if the variable were
  absent.


3.4.0b1 (2007-07-05)
--------------------

* Fix caching issue. The input stream never got cached in a temp file
  because of a wrong content-length header lookup. Added CONTENT_LENGTH
  header check in addition to the previous used HTTP_CONTENT_LENGTH. The
  ``HTTP_`` prefix is sometimes added by some CGI proxies, but CONTENT_LENGTH
  is the right header info for the size.

* Fix https://bugs.launchpad.net/zope3/+bug/98413:
  HTTPResponse.handleException should set the content type


3.4.0a1 (2007-04-22)
--------------------

Initial release as a separate project, corresponds to zope.publisher
from Zope 3.4.0a1
