===========
Main changes:
-------------
* We do not rely on BeautifulSoup's default choice of HTML parser.
Instead, we now specify ``lxml`` as default. As a consequence, the
default setting requires ``lxml`` as a dependency.
* Python 2.6 and 3.3 are no longer supported.
* The GitHub URL moved from
https://github.com/hickford/MechanicalSoup/ to
https://github.com/MechanicalSoup/MechanicalSoup. moy and
hemberger are now officially administrators of the project in
addition to hickford, the original author.
* We now have a documentation site: https://mechanicalsoup.readthedocs.io/.
The API is now fully documented, and we have included a tutorial,
several more code examples, and a FAQ.
* ``StatefulBrowser.select_form`` can now be called without argument,
and defaults to ``"form"`` in this case. It also has a new argument,
``nr`` (defaults to 0), which can be used to specify the index of
the form to select if multiple forms match the selection criteria.
* We now use requirement files. You can install the dependencies of
MechanicalSoup with e.g.::
pip install -r requirements.txt -r tests/requirements.txt
* The ``Form`` class was restructured and has a new API. The behavior of
existing code is unchanged, but a new collection of methods has been
added for clarity and consistency with the ``set`` method:
- ``set_input`` deprecates ``input``
- ``set_textarea`` deprecates ``textarea``
- ``set_select`` is new
- ``set_checkbox`` and ``set_radio`` together deprecate ``check``
(checkboxes are handled differently by default)
* A new ``Form.print_summary`` method allows you to write
``browser.get_current_form().print_summary()`` to get a summary of the
fields you need to fill-in (and which ones are already filled-in).
* The ``Form`` class now supports selecting multiple options in
a ``<select multiple>`` element.
Bug fixes
---------
* Checking checkboxes with ``browser["name"] = ("val1", "val2")`` now
unchecks all checkbox except the ones explicitly specified.
* ``StatefulBrowser.submit_selected`` and ``StatefulBrowser.open`` now
reset __current_page to None when the result is not an HTML page.
This fixes a bug where __current_page was still the previous page.
* We don't error out anymore when trying to uncheck a box which
doesn't have a ``checkbox`` attribute.
* ``Form.new_control`` now correctly overrides existing elements.
Internal changes
----------------
* The testsuite has been further improved and reached 100% coverage.
* Tests are now run against the local version of MechanicalSoup, not
against the installed version.
* ``Browser.add_soup`` will now always attach a *soup*-attribute.
If the response is not text/html, then soup is set to None.
* ``Form.set(force=True)`` creates an ``<input type=text ...>``
element instead of an ``<input type=input ...>``.