Back to Explore

facelessuser/soupsieve

GitHub
1 updates · last 90 days1 watchersOpen source

Last release: 1 week ago

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 6 days ago

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

Recent updates

  • 2.8.4

    1 week ago

    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

    4 months ago

    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

    4 months ago

    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

    5 months ago

    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

    9 months ago

    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

    4/20/2025

    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

    8/13/2024

    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

    9/2/2023

    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

    4/16/2023

    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

    2/14/2023

    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

    4/14/2022

    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.