target-version = "py310" fix = true [lint] # Explicit rule set: ruff >= 0.16 enables 413 rules by default, many of which go # against Odoo idioms (naive UTC datetimes, `self = self.with_context()`, list # `_inherit`). "E4", "E7", "E9" and "F" are the defaults of ruff < 0.16. select = [ "E4", "E7", "E9", "F", "B", "C90", "E501", # line too long (default 88) "I", # isort "UP", # pyupgrade # Autofixed "RET501", "RET502", "RET505", "RET506", "RET507", "RET508", "PLR1711", "PLR5501", "RUF019", "RUF021", "RUF100", "SIM114", "ISC001", "C4", "PIE", "FLY", "FURB", # Few and real: logging format, performance, security "G", "PERF", "S102", "S105", "S106", "S107", "S108", "S301", "S603", "S607", "S704", # Commented-out code, blind except, unused unpacked variables "ERA001", "BLE001", "RUF059", ] extend-safe-fixes = ["UP008"] exclude = ["setup/*"] [format] exclude = ["setup/*"] [lint.per-file-ignores] "__init__.py" = ["F401", "I001"] # ignore unused and unsorted imports in __init__.py "__manifest__.py" = ["B018"] # useless expression [lint.isort] section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"] [lint.isort.sections] "odoo" = ["odoo"] "odoo-addons" = ["odoo.addons"] [lint.mccabe] max-complexity = 16