reasons)
* Improved auth & proxies support.
* Follow RFC 3986.
* Add a .set_cookie() method to Browser .
* Add Browser.open_novisit() and Request.visit to allow fetching
files without affecting Browser state.
* UserAgent and Browser are now subclasses of UserAgentBase.
UserAgent's only role in life above what UserAgentBase does is
to provide the .set_seekable_responses() method (it lives there
because Browser depends on seekable responses, because that's
how browser history is implemented).
* Bundle BeautifulSoup 2.1.1. No more dependency pain! Note that
BeautifulSoup is, and always was, optional, and that mechanize
will eventually switch to BeautifulSoup version 3, at which
point it may well stop bundling BeautifulSoup. Note also that
the module is only used internally, and is not available as a
public attribute of the package. If you dare, you can import it
("from mechanize import _beautifulsoup"), but beware that it
will go away later, and that the API of BeautifulSoup will
change when the upgrade to 3 happens. Also, BeautifulSoup
support (mainly RobustFactory) is still a little experimental
and buggy.
* Fix HTTP-EQUIV with no content attribute case (thanks Pratik
Dam).
* Fix bug with quoted META Refresh URL (thanks Nilton Volpato).
* Fix crash with </base> tag (yajdbgr02...).
* Somebody found a server that (incorrectly) depends on HTTP
header case, so follow the Title-Case convention. Note that the
Request headers interface(s), which were (somewhat oddly -- this
is an inheritance from urllib2 that should really be fixed in a
better way than it is currently) always case-sensitive still
are; the only thing that changed is what actually eventually
gets sent over the wire.
* Use mechanize (not urllib) to open robots.txt. Don't consult
RobotFileParser instance about non-HTTP URLs.
* Fix OpenerDirector.retrieve(), which was very broken (thanks
Duncan Booth).
* Crash in a much more obvious way if trying to use OpenerDirector
after .close() .
* .reload() on .back() if necessary (necessary iff response was
not fully .read() on first .open()ing ) * Strip fragments before
retrieving URLs (fixed Request.get_selector() to strip fragment)
* Fix catching HTTPError subclasses while still preserving all
their response behaviour
* Correct over-enthusiastic documented guarantees of
closeable_response .
* Fix assumption that httplib.HTTPMessage treats dict-style
__setitem__ as append rather than set (where on earth did I get
that from?).
* Expose History in mechanize/__init__.py (though interface is
still experimental).
* Lots of other "internals" bugs fixed (thanks to reports /
patches from Benji York especially, also Titus Brown, Duncan
Booth, and me ;-), where I'm not 100% sure exactly when they
were introduced, so not listing them here in detail.
* Numerous other minor fixes.
* Some code cleanup.
2006-05-21 John J Lee <jjlpobox.com>