= 4.6.2 (20180812) * Fix an exception when a custom formatter was asked to format a void element. [bug=1784408] = 4.6.1 (20180728) * Stop data loss when encountering an empty numeric entity, and possibly in other cases. Thanks to tos.kamiya for the fix. [bug=1698503] * Preserve XML namespaces introduced inside an XML document, not just the ones introduced at the top level. [bug=1718787] * Added a new formatter, "html5", which represents void elements as "" rather than "". [bug=1716272] * Fixed a problem where the html.parser tree builder interpreted a string like "&foo " as the character entity "&foo;" [bug=1728706] * Correctly handle invalid HTML numeric character entities like “ which reference code points that are not Unicode code points. Note that this is only fixed when Beautiful Soup is used with the html.parser parser -- html5lib already worked and I couldn't fix it with lxml. [bug=1782933] * Improved the warning given when no parser is specified. [bug=1780571] * When markup contains duplicate elements, a select() call that includes multiple match clauses will match all relevant elements. [bug=1770596] * Fixed code that was causing deprecation warnings in recent Python 3 versions. Includes a patch from Ville Skyttä. [bug=1778909] [bug=1689496] * Fixed a Windows crash in diagnose() when checking whether a long markup string is a filename. [bug=1737121] * Stopped HTMLParser from raising an exception in very rare cases of bad markup. [bug=1708831] * Fixed a bug where find_all() was not working when asked to find a tag with a namespaced name in an XML document that was parsed as HTML. [bug=1723783] * You can get finer control over formatting by subclassing bs4.element.Formatter and passing a Formatter instance into (e.g.) encode(). [bug=1716272] * You can pass a dictionary of `attrs` into BeautifulSoup.new_tag. This makes it possible to create a tag with an attribute like 'name' that would otherwise be masked by another argument of new_tag. [bug=1779276] * Clarified the deprecation warning when accessing tag.fooTag, to cover the possibility that you might really have been looking for a tag called 'fooTag'. = 4.6.0 (20170507) = * Added the `Tag.get_attribute_list` method, which acts like `Tag.get` for getting the value of an attribute, but which always returns a list, whether or not the attribute is a multi-value attribute. [bug=1678589] * It's now possible to use a tag's namespace prefix when searching, e.g. soup.find('namespace:tag') [bug=1655332] * Improved the handling of empty-element tags like
when using the html.parser parser. [bug=1676935] * HTML parsers treat all HTML4 and HTML5 empty element tags (aka void element tags) correctly. [bug=1656909] * Namespace prefix is preserved when an XML tag is copied. Thanks to Vikas for a patch and test. [bug=1685172] = 4.5.3 (20170102) = * Fixed foster parenting when html5lib is the tree builder. Thanks to Geoffrey Sneddon for a patch and test. * Fixed yet another problem that caused the html5lib tree builder to create a disconnected parse tree. [bug=1629825] = 4.5.2 (20170102) = * Apart from the version number, this release is identical to 4.5.3. Due to user error, it could not be completely uploaded to PyPI. Use 4.5.3 instead. = 4.5.1 (20160802) = * Fixed a crash when passing Unicode markup that contained a processing instruction into the lxml HTML parser on Python 3. [bug=1608048] = 4.5.0 (20160719) = * Beautiful Soup is no longer compatible with Python 2.6. This actually happened a few releases ago, but it's now official. * Beautiful Soup will now work with versions of html5lib greater than 0.99999999. [bug=1603299] * If a search against each individual value of a multi-valued attribute fails, the search will be run one final time against the complete attribute value considered as a single string. That is, if a tag has class="foo bar" and neither "foo" nor "bar" matches, but "foo bar" does, the tag is now considered a match. This happened in previous versions, but only when the value being searched for was a string. Now it also works when that value is a regular expression, a list of strings, etc. [bug=1476868] * Fixed a bug that deranged the tree when a whitespace element was reparented into a tag that contained an identical whitespace element. [bug=1505351] * Added support for CSS selector values that contain quoted spaces, such as tag[style="display: foo"]. [bug=1540588] * Corrected handling of XML processing instructions. [bug=1504393] * Corrected an encoding error that happened when a BeautifulSoup object was copied. [bug=1554439] * The contents of