🎨 add wps linting

This commit is contained in:
Ondřej Samohel 2024-02-27 11:03:27 +01:00
parent 6af376e761
commit 6fd86dcad0
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
3 changed files with 205 additions and 7 deletions

55
.github/workflows/pr_linting.yml vendored Normal file
View file

@ -0,0 +1,55 @@
name: 📇 Code Linting
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number}}
cancel-in-progress: true
permissions:
contents: read
pull-requests: write
jobs:
files_changed:
runs-on: ubuntu-latest
outputs:
changed_python: ${{ steps.changes.outputs.python }}
steps:
- uses: actions/checkout@v3-4
if: github.event_name == 'push'
- uses: dorny/paths-filter@master
id: changes
with:
filters: |
python:
- ["**/*.py"]
linting:
needs: files_changed
if: ${{ needs.files_changed.outputs.changed_python == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
fetch-depth: 0
- name: Get changed Python files
id: py-changes
run: |
echo "py_files_list=$(git diff --name-only --diff-filter=ACMRT \
${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} \
| grep .py$ | xargs)" >> $GITHUB_OUTPUT
- name: Code Check
uses: wemake-services/wemake-python-styleguide@master
with:
reporter: 'github-pr-review'
path: ${{ steps.py-changes.outputs.py_files_list }}
env:
GITHUB_TOKEN: "${{ secrets.YNPUT_BOT_TOKEN }}"

View file

@ -29,6 +29,8 @@ pytest = "^8.0"
pytest-print = "^1.0"
ayon-python-api = "^1.0"
arrow = "^1.3.0"
wemake-python-styleguide = "*"
isort="*"
[build-system]
requires = ["poetry-core"]

155
setup.cfg
View file

@ -2,6 +2,7 @@
# ignore = D203
ignore = BLK100, W504, W503
max-line-length = 79
strictness = short
exclude =
.git,
__pycache__,
@ -9,6 +10,153 @@ exclude =
max-complexity = 30
ignore =
# line break before binary operator
W503,
# line break occurred after a binary operator
W504,
# wemake-python-styleguide warnings
# See https://wemake-python-stylegui.de/en/latest/pages/usage/violations/index.html for doc
# Found incorrect module name pattern
WPS102,
# Found wrong variable name
WPS110,
# Found too short name
WPS111,
# Found upper-case constant in a class
WPS115,
# Found module with too many imports
WPS201,
# Found too many module members
WPS202,
# Found overused expression
WPS204,
# Found too many local variables
WPS210,
# Found too many arguments
WPS211,
# Found too many return statements
WPS212,
# Found too many expressions
WPS213,
# Found too many methods
WPS214,
# Found too many await expressions
WPS217,
# Found line with high Jones Complexity
WPS221,
# Found too many `elif` branches
WPS223,
# Found string constant over-use
WPS226,
# Found too long try body length
WPS229,
# Found too many public instance attributes
WPS230,
# Found function with too much cognitive complexity
WPS231,
# Found module cognitive complexity that is too high
WPS232,
# Found too many imported names from a module
WPS235,
# Found too many raises in a function
WPS238,
# Found too deep nesting
WPS220,
# Found `f` string
WPS305,
# Found incorrect multi-line parameters
WPS317,
# Found extra indentation
WPS318,
# Found bracket in wrong position
WPS319,
# Found percent string formatting
WPS323,
# Found implicit string concatenation
WPS326,
# Found variables that are only used for `return`
WPS331,
# Found explicit string concatenation
WPS336,
# Found multiline conditions
WPS337,
# Found incorrect order of methods in a class
WPS338,
# Found line starting with a dot
WPS348,
# Found multiline loop
WPS352,
# Found incorrect unpacking target
WPS414,
# Found wrong keyword
WPS420,
# Found wrong function
WPS421,
# Found statement that has no effect
WPS428,
# Found nested function
WPS430,
# Found magic number
WPS432,
# Found protected attribute usage
WPS437,
# Found block variables overlap
WPS440,
# Found an infinite while loop
WPS457,
# Found a getter without a return value
WPS463,
# Found negated condition
WPS504,
# flake8-quotes warnings
# Remove bad quotes
Q000,
# Remove bad quotes from multiline string
Q001,
# Darglint warnings
# Incorrect indentation
DAR003,
# Excess parameter(s) in Docstring
DAR102,
# Excess exception(s) in Raises section
DAR402,
# pydocstyle warnings
# Missing docstring in __init_
D107,
# White space formatting for doc strings
D2,
# First line should end with a period
D400,
# Others
# function name
N802,
# Found backslash that is used for line breaking
N400,
E501,
S105,
RST,
# Black would make changes error
BLK100,
# Imperative mood of the first line on docstrings
D401,
# Found using `@staticmethod`
WPS602,
[isort]
profile=wemake
src_paths=isort,test
# isort configuration:
# https://github.com/timothycrosley/isort/wiki/isort-Settings
include_trailing_comma = true
use_parentheses = true
# See https://github.com/timothycrosley/isort#multi-line-output-modes
multi_line_output = 3
# Is the same as 80 in flake8:
line_length = 79
force_grid_wrap = 0
combine_as_imports = True
[pylint.'MESSAGES CONTROL']
disable = no-member
@ -18,10 +166,3 @@ omit = /tests
[coverage:html]
directory = ./coverage
[isort]
line_length = 79
multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
combine_as_imports = True