Back to Explore

facelessuser/soupsieve

GitHub
1 updates · last 90 days1 watchersOpen source

Last release:

Soup Sieve is a CSS selector library for use with Beautiful Soup 4, designed to select, match, and filter HTML or XML using modern CSS selectors (up through CSS Level 4 drafts, with some limitations). It can replace Beautiful Soup’s built-in select feature and can also be used directly via its API for more controlled parsing.

Project status

  • Active maintenance appears strong, with an upstream push on 2026-05-28 and the latest published update (2.8.4) on 2026-05-24, indicating recent attention to performance and selector safety.
  • Update cadence looks somewhat irregular but ongoing, with the last few updates spanning 2026-01-18 to 2026-05-24 (then earlier releases in 2025 and 2024), suggesting a continued evolution rather than a maintenance-only freeze.

AI summary generated

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • 2.8.4

    Release 2.8.4 contains fixes aimed at preventing pathological selector patterns from causing excessive work, plus a regex-related fix for an inefficient attribute pattern. It also adds a hard cap on the number of selectors processed in a pattern, with new tests covering both normal selectors and custom selectors.

    Breaking
  • 2.8.3

    Release 2.8.3 is described as a fix for an inefficient attribute pattern. The code changes show a rework of the selector parsing regex for attribute selectors, plus an added test covering invalid attribute syntax error reporting.

  • 2.8.2

    Release 2.8.2 is described as three small fixes: rejecting non-string keys for custom selectors or namespace dictionaries, correcting `:in-range` and `:out-of-range` behavior at end of year weeks, and fixing a potential infinite loop in a pretty-printing debug function. The release notes do not mention any documentation-site or tooling changes.

  • 2.8.1

    Release 2.8.1 is documented as a test-only fix for compatibility with the latest Python HTML parser behavior. However, the provided diff mostly shows documentation site and GitHub Pages publishing workflow changes, with no clear library/runtime code changes in the snippets shown.

  • 2.8

    Release 2.8 updates the supported Python versions and changes the PyPI deployment approach. It drops Python 3.8, adds Python 3.14, and switches the publish workflow to PyPI Trusted Publisher.

    BreakingFeatures
  • 2.7

    Release 2.7 documents new support for additional CSS pseudo selectors, specifically adding `:open` and `:muted`, and recognizing a set of other pseudo selectors that require a live browser environment to evaluate. It also notes that previously experimental pseudo-classes are no longer labeled as experimental, plus a small typing fix.

    Features
  • 2.6

    Version 2.6 adds official support for Python 3.13 and implements CSS Nesting Level 1 ampersand scoping (treating `&` as `:scope` when not used in a nesting context). It also improves the error messaging for unrecognized pseudo-classes.

    Features
  • 2.5

    Release 2.5 documents only Python version support changes: adding support for Python 3.12 and dropping support for Python 3.7. The provided code diff, however, appears to be entirely documentation updates, focused on MkDocs/Markdown formatting and content presentation rather than library/runtime behavior.

    BreakingFeatures
  • 2.4.1

    Release 2.4.1 primarily fixes CSS attribute selector parsing so that the case-insensitive flag spacing is optional (a space is allowed but not required). The rest of the diff is largely documentation, typing-only changes, and small build configuration updates.

  • 2.4

    Release 2.4 updates Soup Sieve’s selector parsing/matching to track CSS spec changes around :lang() and the handling of forgiving selector lists. It also updates supported Python versions by dropping Python 3.6 and declaring support for Python 3.11.

    BreakingFeatures
  • 2.3.2.post1

    Release 2.3.2.post1 contains documentation updates focused on installation-from-source instructions. The code diff also updates the package version metadata to reflect the post release.