# Copyright 2024 The Pigweed Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. # Exclude a variety of commonly ignored directories. exclude = [ 'out', '.environment', 'environment', '.mypy_cache', '.pytype', '.ruff_cache', '__pycache__', '__pypackages__', ] respect-gitignore = true line-length = 80 # Assume Python 3.10. target-version = 'py310' [lint] # Enable the pycodestyle (`E`) and Pyflakes (`F`) rules by default. # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or # McCabe complexity (`C901`) by default. select = [ 'F', # Pyflakes 'E', # pycodestyle 'C90', # mccabe 'I', # isort 'N', # pep8-naming 'D', # pydocstyle 'UP', # pyupgrade 'YTT', # flake8-2020 'ANN', # flake8-annotations 'ASYNC', # flake8-async 'S', # flake8-bandit 'BLE', # flake8-blind-except 'FBT', # flake8-boolean-trap 'B', # flake8-bugbear 'A', # flake8-builtins 'COM', # flake8-commas 'C4', # flake8-comprehensions 'DTZ', # flake8-datetimez 'T10', # flake8-debugger 'DJ', # flake8-django 'EM', # flake8-errmsg 'EXE', # flake8-executable 'FA', # flake8-future-annotations 'ISC', # flake8-implicit-str-concat 'ICN', # flake8-import-conventions 'G', # flake8-logging-format 'INP', # flake8-no-pep420 'PIE', # flake8-pie 'T20', # flake8-print 'PYI', # flake8-pyi 'PT', # flake8-pytest-style # 'Q', # flake8-quotes 'RSE', # flake8-raise 'RET', # flake8-return 'SLF', # flake8-self 'SLOT', # flake8-slots 'SIM', # flake8-simplify 'TID', # flake8-tidy-imports 'TCH', # flake8-type-checking 'INT', # flake8-gettext 'ARG', # flake8-unused-arguments 'PTH', # flake8-use-pathlib 'TD', # flake8-todos 'FIX', # flake8-fixme 'ERA', # eradicate 'PD', # pandas-vet 'PGH', # pygrep-hooks 'PL', # Pylint 'TRY', # tryceratops 'FLY', # flynt 'NPY', # NumPy-specific rules 'AIR', # Airflow 'PERF', # Perflint 'RUF', # Ruff-specific rules ] # All Rule codes: https://docs.astral.sh/ruff/rules/ ignore = [ 'ANN101', # https://docs.astral.sh/ruff/rules/missing-type-self 'COM812', # Trailing comma missing 'D203', # https://docs.astral.sh/ruff/rules/one-blank-line-before-class 'D212', # https://docs.astral.sh/ruff/rules/multi-line-summary-first-line 'D213', # https://docs.astral.sh/ruff/rules/multi-line-summary-second-line 'D400', # First line should end with a period 'D401', # First line of docstring should be in imperative mood 'D404', # First word of the docstring should not be "This"' 'D415', # First line should end with a period, question mark, or exclamation point 'D416', # Section name should end with a colon ("Raises")' 'FIX002', # Line contains TODO, consider resolving the issue 'PGH003', # Use specific rule codes when ignoring type issues 'PT009', # Use a regular `assert` instead of unittest-style `assertEqual` 'PTH123', # `open()` should be replaced by `Path.open()` 'S101', # Use of `assert` detected 'TD003', # Missing issue link on the line following this TODO 'UP006', # Use `list` instead of `List` for type annotation ] # Allow autofix 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]+?))$' # inclusive-language: ignore [lint.per-file-ignores] # pw_python_package tests often live outside any top level module. '**/py/*_test.py' = [ 'INP001', # File is part of an implicit namespace package. Add an `__init__.py`. ] [lint.pycodestyle] ignore-overlong-task-comments = true # Same as .black.toml max-doc-length = 88