Releases: facelessuser/soupsieve
Releases · facelessuser/soupsieve
2.1.0
2.1.0
- NEW: Officially support Python 3.9.
- NEW: Drop official support for Python 3.5.
- NEW: In order to avoid conflicts with future CSS specification changes, non-standard pseudo classes will now start with the
:-soup-
prefix. As a consequence,:contains()
will now be known as:-soup-contains()
, though for a time the deprecated form of:contains()
will still be allowed with a warning that users should migrate over to:-soup-contains()
. - NEW: Added new non-standard pseudo class
:-soup-contains-own()
which operates similar to:-soup-contains()
except that it only looks at text nodes directly associated with the currently scoped element and not its descendants. - FIX: Import
bs4
globally instead of in local functions as it appears there are no adverse affects due to
circular imports asbs4
does not immediately referencesoupsieve
functions andsoupsieve
does not immediately referencebs4
functions. This should give a performance boost to functions that had previously includedbs4
locally.
2.0.1
2.0.1
- FIX: Remove unused code.
1.9.6
1.9.6
Note: Last version for Python 2.7
- FIX: Prune dead code.
- FIX: Corner case with splitting namespace and tag name that that have an escaped
|
.
2.0.0
2.0.0
- NEW:
SelectorSyntaxError
is derived fromException
notSyntaxError
. - NEW: Remove deprecated
comments
andicomments
from the API. - NEW: Drop support for EOL Python versions (Python 2 and Python < 3.5).
- FIX: Corner case with splitting namespace and tag name that have an escaped
|
.
1.9.5
1.9.5
- FIX:
:placeholder-shown
should not match if the element has content that overrides the placeholder.
1.9.4
1.9.4
- FIX:
:checked
rule was too strict withoption
elements. The specification for:checked
does not require an
option
element to be under aselect
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.
1.9.3
1.9.3
- 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.
1.9.2
1.9.2
- FIX: Shortcut last descendant calculation if possible for performance.
- FIX: Fix issue where
Doctype
strings can be mistaken for a normal text node in some cases. - FIX: A top level tag is not a
:root
tag if it has sibling text nodes or tag nodes. This is an issue that mostly manifests when usinghtml.parser
as the parser will allow multiple root nodes.
1.9.1
1.9.1
- FIX:
:root
,:contains()
,:default
,:indeterminate
,:lang()
, and:dir()
will properly account for HTMLiframe
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.
1.9.0
1.9.0
- NEW: Allow
:contains()
to accept a list of text to search for. (#115) - NEW: Add new
escape
function for escaping CSS identifiers. (#125) - NEW: Deprecate
comments
andicomments
functions in the API to ensure Soup Sieve focuses only in CSS selectors.comments
andicomments
will most likely be removed in 2.0. (#130) - NEW: Add Python 3.8 support. (#133)
- 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)