Skip to content

Work through the open Dependabot alerts (pillow, soupsieve, idna) #53

Description

@tipatterson-dev

Reminder to work through the open Dependabot alerts. All 16 are against uv.lock; none is a direct runtime dependency of the core install, and none is exploitable from ordinary library use — hence "later", not "now".

Current state (16 open: 12 high, 4 moderate)

Package Locked Patched Alerts Reached via
pillow 12.2.0 12.3.0 13 (11 high, 2 moderate) oshconnect[av] — demo-only
soupsieve 2.8.3 2.8.4 2 high beautifulsoup4 → furo → [dev]
idna 3.13 3.15 1 moderate requests → core, and sphinx → [dev]

Reverse-dependency chains confirmed with uv tree --invert --package <name>.

Why the exposure is limited

  • pillow (13 of the 16) is only pulled by the av extra, which exists solely for examples/axis_video_frame.py (H.264 frame → PNG). It is not installed by pip install oshconnect, nor by any other extra including all, which deliberately excludes av.
  • soupsieve arrives through the docs toolchain (furo → beautifulsoup4). Dev-only; never in a user install.
  • idna is the one that reaches a default install, transitively via requests. Moderate severity.

Suggested fix

The repo already has a pattern for this — pyproject.toml carries explicit "Security floors (Dependabot sweep)" entries for requests, urllib3, and Pygments, with a comment noting floors track the latest patched release rather than the original advisory baseline. Extend it:

av = ["av>=15.0.0", "pillow>=12.3.0"]      # was pillow>=11.0.0
dev = [
    ...
    "soupsieve>=2.8.4",   # transitive via furo → beautifulsoup4
]
dependencies = [
    ...
    "idna>=3.15",         # transitive via requests
]

Then uv lock and confirm uv run pytest -m "not network" plus the strict Sphinx build still pass.

Check before closing

  • pillow>=12.3.0 needs wheels for the whole supported range (3.11–3.14 once Develop on Python 3.14, support 3.11+, add non-blocking 3.15 lane #51 lands). Verify rather than assume — this is exactly the check CLAUDE.md calls for when raising a dependency floor.
  • Re-run gh api repos/{owner}/{repo}/dependabot/alerts?state=open afterwards; some advisories share a package and will clear together.
  • Worth deciding separately whether av/pillow should stay a published extra at all, given it serves one example. Dropping it would retire 13 of the 16 alerts permanently.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions