FIX: :checked rule was too strict with option elements. The specification for :checked does not require an
option element to be under a select element.
FIX: Fix level 4 :lang() wildcard match handling with singletons. Implicit wildcard matching should not
match any singleton. Explicit wildcard matching (* in the language range: *-US) is allowed to match singletons.
FIX: [attr!=value] pattern was mistakenly using :not([attr|=value]) logic instead of :not([attr=value]).
FIX: Remove undocumented _QUIRKS mode flag. Beautiful Soup was meant to use it to help with transition to Soup
Sieve, but never released with it. Help with transition at this point is no longer needed.
FIX: :root, :contains(), :default, :indeterminate, :lang(), and :dir() will properly account for HTML
iframe elements in their logic when selecting or matching an element. Their logic will be restricted to the document
for which the element under consideration applies.
FIX: HTML pseudo-classes will check that all key elements checked are in the XHTML namespace (HTML parsers that do
not provide namespaces will assume the XHTML namespace).
FIX: Ensure that all pseudo-class names are case insensitive and allow CSS escapes.
FIX: Don't install test files when installing the soupsieve package. (#111)
FIX: Improve efficiency of :contains() comparison.
FIX: Null characters should translate to the Unicode REPLACEMENT CHARACTER (U+FFFD) according to the
specification. This applies to CSS escaped NULL characters as well. (#124)
FIX: Escaped EOF should translate to U+FFFD outside of CSS strings. In a string, they should just be ignored,
but as there is no case where we could resolve such a string and still have a valid selector, string handling remains
the same. (#128)
FIX: Provide a way for Beautiful Soup to parse selectors in a quirks mode to mimic some of the quirks of the old
select method prior to Soup Sieve, but with warnings. This is to help old scripts to not break during the transitional
period with newest Beautiful Soup. In the future, these quirks will raise an exception as Soup Sieve requires
selectors to follow the CSS specification.
FIX: More descriptive exceptions. Exceptions will also now mention position in the pattern that is problematic.
FIX: filter ignores NavigableString objects in normal iterables and Tag iterables. Basically, it filters all
Beautiful Soup document parts regardless of iterable type where as it used to only filter out a NavigableString in a
Tag object. This is viewed as fixing an inconsistency.
FIX: DEBUG flag has been added to help with debugging CSS selector parsing. This is mainly for development.
FIX: If forced to search for language in meta tag, and no language is found, cache that there is no language in
the meta tag to prevent searching again during the current select.
FIX: If a non BeautifulSoup/Tag object is given to the API to compare against, raise a TypeError.
NEW: Adds support for [attr!=value] which is equivalent to :not([attr=value]).
NEW: Add support for :active, :focus, :hover, :visited, :target, :focus-within, :focus-visible,
:target-within, :current()/:current, :past, and :future, but they will never match as these states don't
exist in the Soup Sieve environment.
NEW: Add support for :checked, :enabled, :disabled, :required, :optional, :default, and
:placeholder-shown which will only match in HTML documents as these concepts are not defined in XML.
NEW: Add support for :link and :any-link, both of which will target all <a>, <area>, and <link> elements
with an href attribute as all links will be treated as unvisited in Soup Sieve.
NEW: Add support for :lang() (CSS4) which works in XML and HTML.
NEW: Users must install Beautiful Soup themselves. This requirement is removed in the hopes that Beautiful Soup
may use this in the future.
FIX: Attributes in the form prefix:attr can be matched with the form [prefix\:attr] without specifying a
namespaces if desired.
FIX: Fix exception when [type] is used (with no value).