Skip to content

Improve Python SDK linting rules and upgrade Ruff - #2995

Open
antonvishal wants to merge 2 commits into
browserbase:mainfrom
antonvishal:ruff-audit
Open

antonvishal wants to merge 2 commits into
browserbase:mainfrom
antonvishal:ruff-audit

Conversation

@antonvishal

@antonvishal antonvishal commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

why

Tighten linting rules for packages/sdk-python to catch common bugs (mutable defaults, unchained exceptions, unescaped regexes) early.

what changed

  • Upgraded ruff to 0.16.8 and updated uv.lock.
  • Enabled high-value lint rules:
    • B: mutable default arguments (B006), useless comparisons/expressions (B015, B018), explicit exception chaining (B904).
    • C4 (comprehensions), PGH (strict type ignore comments).
    • RUF: sorted __all__/__slots__ (RUF022, RUF023), raw string regexes (RUF039), and stale noqa cleanup (RUF100).
    • T10 (debugger breakpoints), W (pycodestyle warnings), and external = ["S"].
  • Fixed existing violations:
    • Sorted __all__ in src/stagehand/__init__.py and __slots__ in StagehandBrowser.
    • Added explicit exception chaining (raise cleanup_error from error).
    • Converted regex pattern strings in unit tests to raw strings (r"^...").

test plan

  • uv run pytest: 562 passed, 1 skipped
  • uv run ruff check .: all checks passed
  • uv run ruff format --check .: 58 files checked, no formatting changes needed
  • uv run ty check: all checks passed
  • uv lock --check: passed

Summary by cubic

Tightens linting for packages/sdk-python so common bug patterns are caught in CI, and upgrades ruff to 0.16.8.

  • Adds rules for mutable defaults, useless comparisons/expressions, exception chaining, comprehensions, raw regexes, breakpoints, pycodestyle warnings, and sorted __all__/__slots__.
  • Fixes existing violations by sorting __all__ and __slots__, chaining cleanup_error from the original error, and converting test regex patterns to raw strings.
  • Sets external = ["S"] so Bandit security rules are excluded from the new lint set.
  • Updates uv.lock and confirms pytest, ruff, ty, and uv lock --check all pass.

Written for commit 9e6d361. Summary will update on new commits.

Review in cubic

@changeset-bot

changeset-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 9e6d361

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

This PR is from an external contributor and must be approved by a stagehand team member with write access before CI can run.
Approving the latest commit mirrors it into an internal PR owned by the approver.
If new commits are pushed later, the internal PR stays open but is marked stale until someone approves the latest external commit and refreshes it.

@github-actions github-actions Bot added external-contributor Tracks PRs mirrored from external contributor forks. external-contributor:awaiting-approval Waiting for a stagehand team member to approve the latest external commit. labels Sep 20, 2026
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedpypi/​ruff@​0.15.7 ⏵ 0.16.8100 +1100100100100

View full report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external-contributor:awaiting-approval Waiting for a stagehand team member to approve the latest external commit. external-contributor Tracks PRs mirrored from external contributor forks.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant