Files
hermes-agent/ruff.toml
2026-10-10 16:37:15 +02:00

474 lines
6.7 KiB
TOML

# Same as Black.
line-length = 88
indent-width = 4
# The oldest Python we support (requires-python): quote-stripping (UP037) and every other
# version-gated fix must stay valid where annotations are evaluated eagerly (< 3.14).
target-version = "py311"
[format]
# Like Black, use double quotes for strings.
quote-style = "double"
# Like Black, indent with spaces, rather than tabs.
indent-style = "space"
# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false
# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"
[lint]
exclude = [
".bzr",
".git",
".pyenv",
".pytest_cache",
".pytype",
".ruff_cache",
".venv",
".vscode",
"__pypackages__",
]
# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
select = [
"YTT101",
"YTT102",
"YTT103",
"YTT201",
"YTT202",
"YTT203",
"YTT204",
"YTT301",
"YTT302",
"YTT303",
"ASYNC100",
"ASYNC105",
"ASYNC115",
"ASYNC116",
"ASYNC210",
"ASYNC220",
"ASYNC221",
"ASYNC222",
"ASYNC230",
"ASYNC251",
# "S102",
# "S110",
# "S112",
# "BLE001",
"B002",
"B003",
"B004",
"B005",
"B006",
# "B008",
"B009",
"B010",
"B012",
"B013",
"B014",
"B015",
"B016",
# "B017",
# "B018",
"B019",
"B020",
"B021",
# "B022",
# "B023",
"B025",
# "B026",
"B029",
# "B030",
"B031",
"B032",
"B033",
"B035",
# "B039",
"C400",
# "C401",
# "C402",
"C403",
"C404",
"C405",
# "C406",
# "C408",
# "C409",
"C410",
"C411",
# "C413",
"C414",
"C415",
# "C417",
"C418",
# "C419",
# "C901",
# "DTZ001",
"DTZ002",
# "DTZ003",
"DTZ004",
# "DTZ005",
# "DTZ006",
# "DTZ007",
# "DTZ011",
"DTZ012",
"DTZ901",
"T100",
# "EXE001",
# "EXE002",
"EXE004",
"EXE005",
"FA100",
"FA102",
"INT001",
"INT002",
"INT003",
# "ISC004",
# "LOG001",
"LOG002",
"LOG009",
# "LOG014",
# "LOG015",
"G010",
"G101",
# "G201",
"G202",
"PIE790",
"PIE794",
"PIE796",
"PIE800",
"PIE804",
"PIE807",
"PIE808",
# "PIE810",
"PYI001",
"PYI002",
"PYI003",
"PYI004",
"PYI005",
"PYI006",
"PYI007",
"PYI008",
"PYI009",
"PYI010",
"PYI012",
"PYI013",
"PYI015",
"PYI016",
"PYI017",
"PYI018",
"PYI019",
"PYI020",
"PYI025",
"PYI026",
"PYI029",
"PYI030",
"PYI032",
"PYI033",
# "PYI034",
"PYI035",
"PYI036",
"PYI041",
"PYI042",
"PYI043",
"PYI044",
"PYI045",
"PYI046",
"PYI047",
"PYI048",
"PYI049",
"PYI050",
"PYI052",
"PYI055",
"PYI057",
"PYI058",
"PYI059",
"PYI061",
"PYI062",
"PYI063",
"PYI064",
"PYI066",
"PT010",
# "PT014",
"PT020",
"PT025",
"PT026",
"PT031",
"RET501",
"SIM101",
# "SIM102",
# "SIM103",
"SIM107",
# "SIM113",
"SIM114",
# "SIM115",
# "SIM117",
# "SIM118",
# "SIM201",
"SIM202",
"SIM208",
"SIM210",
# "SIM211",
"SIM220",
"SIM221",
"SIM222",
"SIM223",
# "SIM401",
# "SIM905",
"SIM911",
"TC004",
"TC005",
"TC007",
"TC010",
"PTH124",
"PTH210",
# "FLY002",
# "I001",
# "N999",
"PERF101",
# "PERF102",
"PERF402",
"E722",
"E902",
"W605",
"D419",
# "F401",
# "F402",
"F404",
"F407",
"F501",
"F502",
"F503",
"F504",
"F505",
"F506",
"F507",
"F508",
"F509",
"F521",
"F522",
"F523",
"F524",
"F525",
"F541",
# "F601",
"F602",
"F621",
"F622",
"F631",
"F632",
"F633",
"F634",
"F701",
"F702",
"F704",
"F706",
"F707",
# "F811",
# "F821",
"F822",
"F823",
"F841",
"F842",
"F901",
"PGH005",
"PLC0105",
"PLC0131",
"PLC0132",
"PLC0205",
"PLC0206",
"PLC0208",
"PLC0414",
"PLC3002",
"PLE0100",
"PLE0101",
"PLE0115",
"PLE0116",
"PLE0117",
"PLE0118",
"PLE0303",
"PLE0304",
"PLE0305",
"PLE0307",
"PLE0308",
"PLE0309",
"PLE0604",
# "PLE0605",
"PLE0643",
# "PLE0704",
"PLE1132",
"PLE1142",
"PLE1205",
"PLE1206",
"PLE1300",
"PLE1307",
"PLE1310",
"PLE1507",
"PLE1519",
"PLE1520",
"PLE1700",
# "PLE2502",
"PLE2510",
"PLE2512",
"PLE2513",
"PLE2514",
"PLE2515",
# "PLR0124",
"PLR0133",
"PLR0206",
"PLR0402",
# "PLR1704",
"PLR1708",
"PLR1711",
"PLR1716",
"PLR1722",
"PLR1730",
"PLR1733",
"PLR1736",
"PLR2044",
"PLW0120",
"PLW0127",
"PLW0128",
"PLW0129",
"PLW0131",
"PLW0133",
"PLW0177",
"PLW0211",
"PLW0245",
"PLW0406",
# "PLW0602",
"PLW0604",
"PLW0642",
"PLW0711",
"PLW1501",
"PLW1507",
# "PLW1508",
"PLW1509",
"PLW1510",
"PLW2101",
"UP001",
"UP003",
"UP004",
"UP005",
"UP006",
"UP007",
"UP008",
"UP009",
"UP010",
"UP011",
"UP012",
"UP014",
"UP017",
"UP018",
"UP019",
"UP020",
"UP021",
"UP022",
"UP023",
"UP024",
"UP025",
"UP026",
"UP028",
"UP029",
"UP030",
"UP031",
"UP032",
"UP033",
"UP034",
# "UP035",
"UP036",
"UP037",
"UP039",
"UP040",
"UP041",
"UP043",
"UP044",
#"UP045",
# "UP046", # deferred: fix is PEP 695 class syntax (3.12+), project floor is py3.11
# "UP047", # deferred: fix is PEP 695 generic-callable syntax (3.12+), project floor is py3.11
"UP049",
"UP050",
"FURB105",
"FURB122",
"FURB129",
"FURB132",
"FURB136",
"FURB157",
"FURB161",
"FURB162",
"FURB163",
"FURB166",
"FURB167",
"FURB168",
"FURB169",
"FURB177",
"FURB181",
"FURB188",
"FURB192",
"RUF007",
"RUF008",
"RUF009",
"RUF010",
# "RUF012",
"RUF013",
"RUF015",
"RUF016",
"RUF017",
"RUF018",
"RUF019",
"RUF020",
"RUF022",
"RUF023",
"RUF024",
"RUF026",
"RUF028",
"RUF030",
"RUF032",
"RUF033",
"RUF034",
"RUF040",
"RUF041",
"RUF046",
"RUF048",
"RUF049",
"RUF051",
"RUF053",
"RUF057",
"RUF058",
"RUF059",
"RUF063",
"RUF068",
"RUF100",
"RUF101",
"RUF200",
# "TRY002",
# "TRY004",
# "TRY201",
# "TRY203",
# "TRY401",
"TID251",
]
[lint.flake8-tidy-imports.banned-api]
"pm.uv".msg = "Use PM's semantic Python operations, not an installer executable."
"pm.client.uv".msg = "Use PM's semantic Python operations."
"pm.install.uv".msg = "The raw uv bridge was removed; use PM operations."
"pm._uv".msg = "Tool acquisition is private to PM."
"pm.environment".msg = "The environment engine is private; use PM operations."
"pm.runtime_stage".msg = "PM stages its own worker runtime; consumers call pm operations."
[lint.per-file-ignores]
"apps/desktop/electron/fixtures/**" = ["TID251"]
"pm/**" = ["TID251"]
"tests/pm/**" = ["TID251"]
[lint.mccabe]
max-complexity = 20