mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-12 03:42:08 +00:00
lint: enable PLW1514 as a blocking ruff rule
Turns the existing 'all lints disabled' stance into 'exactly one lint
enabled' — PLW1514 (unspecified-encoding) catches bare open() /
read_text() / write_text() calls that default to locale encoding on
Windows (cp1252), silently corrupting non-ASCII content.
Changes:
1. pyproject.toml
- Migrate [tool.ruff] top-level select → [tool.ruff.lint].select
(deprecated config location, ruff was warning on every run)
- Add preview = true (PLW1514 is a preview rule in ruff 0.15.x)
- select = ['PLW1514'] (exactly one rule, deliberately minimal)
- per-file-ignores exempt tests/, plugins/, skills/, optional-skills/ —
those have their own conventions or intentionally exercise edge cases
2. website/scripts/extract-skills.py
- Fix 3 remaining bare opens (website/ was excluded from the main
sweep but needed for ruff check . to go green)
3. tests/test_lint_config.py (new, 5 tests)
- Guards against accidental rule removal. If someone deletes PLW1514
from the select list or disables preview mode, these tests fail
with a loud message explaining why the rule exists.
Paired with a companion commit (held locally for now, pending a token
with workflow scope) that adds a blocking ruff step to .github/workflows/
lint.yml. Without that companion commit, ruff is configured correctly
but nothing in CI enforces it yet — the advisory PR comment will still
surface new PLW1514 violations though, so authors see them.
Verified: ruff check . → exit 0, 0 violations across the repo.
Test suite: 90 passed, 14 skipped, 0 failed.
This commit is contained in:
parent
cbce5e93fc
commit
3be853a9b8
3 changed files with 137 additions and 4 deletions
|
|
@ -193,7 +193,25 @@ exclude = ["tinker-atropos"]
|
|||
|
||||
[tool.ruff]
|
||||
exclude = ["tinker-atropos"]
|
||||
select = [] # disable all lints for now, until we've wrangled typechecks a bit more :3
|
||||
preview = true # required for PLW1514 (unspecified-encoding) — preview rule
|
||||
|
||||
[tool.ruff.lint]
|
||||
# All other lints are intentionally disabled (see comment history on this
|
||||
# file) while we wrangle typechecks — but PLW1514 is too load-bearing to
|
||||
# keep off. Bare open()/read_text()/write_text() in text mode defaults to
|
||||
# the system locale encoding on Windows (cp1252 on US-locale installs),
|
||||
# which silently corrupts any non-ASCII file content. We had three
|
||||
# separate Windows sandbox regressions in one debug session before
|
||||
# adding the explicit encoding. This rule keeps new code honest.
|
||||
select = ["PLW1514"]
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
# Tests can intentionally exercise locale-encoding edge cases.
|
||||
"tests/**" = ["PLW1514"]
|
||||
# Skills and plugins are partially user-authored — their own conventions.
|
||||
"skills/**" = ["PLW1514"]
|
||||
"optional-skills/**" = ["PLW1514"]
|
||||
"plugins/**" = ["PLW1514"]
|
||||
|
||||
[tool.uv]
|
||||
exclude-newer = "7 days"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue