You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
why
Tighten linting rules for
packages/sdk-pythonto catch common bugs (mutable defaults, unchained exceptions, unescaped regexes) early.what changed
ruffto0.16.8and updateduv.lock.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), andexternal = ["S"].__all__insrc/stagehand/__init__.pyand__slots__inStagehandBrowser.raise cleanup_error from error).r"^...").test plan
uv run pytest: 562 passed, 1 skippeduv run ruff check .: all checks passeduv run ruff format --check .: 58 files checked, no formatting changes neededuv run ty check: all checks passeduv lock --check: passedSummary by cubic
Tightens linting for
packages/sdk-pythonso common bug patterns are caught in CI, and upgradesruffto0.16.8.__all__/__slots__.__all__and__slots__, chainingcleanup_errorfrom the originalerror, and converting test regex patterns to raw strings.external = ["S"]so Bandit security rules are excluded from the new lint set.uv.lockand confirmspytest,ruff,ty, anduv lock --checkall pass.Written for commit 9e6d361. Summary will update on new commits.