July 26th, 2011· Fixed a problem with newer versions of IPython
· Disabled pyinotify based reloader which does not work reliably.
April 25th, 2009· requires Python 2.4 now
· fixed a bug in :class:`~contrib.IterIO`
· added :class:`MIMEAccept` and :class:`CharsetAccept` that work like the regular :class:`Accept` but have extra special normalization for mimetypes and charsets and extra convenience methods.
· switched the serving system from wsgiref to something homebrew.
· the :class:`Client` now supports cookies.
· added the :mod:`~werkzeug.contrib.fixers` module with various fixes for webserver bugs and hosting setup side-effects.
· added :mod:`werkzeug.contrib.wrappers`
· added :func:`is_hop_by_hop_header`
· added :func:`is_entity_header`
· added :func:`remove_hop_by_hop_headers`
· added :func:`pop_path_info`
· added :func:`peek_path_info`
· added :func:`wrap_file` and :class:`FileWrapper`
· moved `LimitedStream` from the contrib package into the regular werkzeug one and changed the default behavior to raise exceptions rather than stopping without warning. The old class will stick in the module until 0.6.
· implemented experimental multipart parser that replaces the old CGI hack.
· added :func:`dump_options_header` and :func:`parse_options_header`
· added :func:`quote_header_value` and :func:`unquote_header_value`
· :func:`url_encode` and :func:`url_decode` now accept a separator argument to switch between `&` and `;` as pair separator. The magic switch is no longer in place.
· all form data parsing functions as well as the :class:`BaseRequest` object have parameters (or attributes) to limit the number of incoming bytes (either totally or per field).
· added :class:`LanguageAccept`
· request objects are now enforced to be read only for all collections.
· added many new collection classes, refactored collections in general.
· test support was refactored, semi-undocumented `werkzeug.test.File` was replaced by :class:`werkzeug.FileStorage`.
· :class:`EnvironBuilder` was added and unifies the previous distinct :func:`create_environ`, :class:`Client` and :meth:`BaseRequest.from_values`. They all work the same now which is less confusing.
· officially documented imports from the internal modules as undefined behavior. These modules were never exposed as public interfaces.
· removed `FileStorage.__len__` which previously made the object falsy for browsers not sending the content length which all browsers do.
· :class:`SharedDataMiddleware` uses `wrap_file` now and has a configurable cache timeout.
· added :class:`CommonRequestDescriptorsMixin`
· added :attr:`CommonResponseDescriptorsMixin.mimetype_params`
· added :mod:`werkzeug.contrib.lint`
· added `passthrough_errors` to `run_simple`.
· added `secure_filename`
· added :func:`make_line_iter`
· :class:`MultiDict` copies now instead of revealing internal lists to the caller for `getlist` and iteration functions that return lists.
· added :attr:`follow_redirect` to the :func:`open` of :class:`Client`.
· added support for `extra_files` in :func:`~werkzeug.script.make_runserver`
November 10th, 2008· The 0.3.1 release fixes a possible security problem in the secure cookie module.