pypi soupsieve 4.1

33 minutes ago

4.1

  • NEW: Soup Sieve is now thread safe, and this is now tested, including on free-threaded Python. This is assuming
    read only operations on a document. Check out our documentation for more details.
  • FIX: Fix a race where compiling selectors in multiple threads at the same time could fail with a bogus
    syntax error or silently parse a selector incorrectly.
  • FIX: Fix issue where trailing whitespace and comments can sometimes fail to be consumed properly.
  • FIX: Fix a selector that starts with a comment followed by whitespace, such as /* comment */ div, failing
    with a syntax error.
  • FIX: Custom selector names should be checked with ASCII only lowercase.
  • FIX: Fix [attr=value], [attr$=value], [attr|=value], and [attr!=value] ignoring a trailing newline in
    the attribute value, so [type=hidden] no longer matches type="hidden
".
  • FIX: Cache the language, the contenteditable state, the select of an option, and the tree that an element
    is in, as found from its ancestors, when matching :lang(), :read-write, :read-only, :checked, :default,
    and :indeterminate to avoid quadratic time on deeply nested documents.
  • FIX: Fix :lang('') not matching every element without any language information, which per the HTML spec has
    an empty language tag. It missed the first such element checked, or all of them when there was no head.
  • FIX: :lang() no longer matches an element whose language tag is not well-formed BCP 47 syntax, such as -,
    en-, en_US, or a subtag longer than 8 characters, and a language range that is not well-formed matches
    nothing. Previously, lang="-" matched :lang(''), and ill-formed tags matched :lang('*').
  • FIX: Fix :lang() ranges that end in a wildcard, such as en-* or *-*, never matching. As RFC 4647 extended
    filtering specifies, wildcards after the first subtag are ignored, so en-* matches the same as en.
  • FIX: Fix [attr*=value] and [attr$=value] taking time quadratic in the length of the value when it nearly
    matches a long attribute value, including when matching case insensitive.

Don't miss a new soupsieve release

NewReleases is sending notifications on new releases.