Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
CI: Use common linting workflow
Browse files Browse the repository at this point in the history
After #12107 it's much easier for black, isort and flake8 to find the
scripts we want them to lint.
  • Loading branch information
David Robertson committed Mar 30, 2022
1 parent 5d03d94 commit ceb8634
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 72 deletions.
18 changes: 5 additions & 13 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,11 @@ jobs:
- run: scripts-dev/config-lint.sh

lint:
runs-on: ubuntu-latest
strategy:
matrix:
toxenv:
- "check_codestyle"
- "check_isort"
- "mypy"

steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- run: pip install tox
- run: tox -e ${{ matrix.toxenv }}
# This does a vanilla `poetry install` - no extras. I'm slightly anxious
# that we might skip some typechecks on code that uses extras. However,
# I think the right way to fix this is to turn up mypy's strictness:
# disallow unknown imports and be accept fewer uses of `Any`.
uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v1"

lint-crlf:
runs-on: ubuntu-latest
Expand Down
8 changes: 3 additions & 5 deletions docs/code_style.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ pip install -e ".[lint,mypy]"
functionality) with:

```sh
black . --exclude="\.tox|build|env"
black .
```

- **flake8**
Expand All @@ -35,7 +35,7 @@ pip install -e ".[lint,mypy]"
Check all application and test code with:

```sh
flake8 synapse tests
flake8 .
```

- **isort**
Expand All @@ -46,11 +46,9 @@ pip install -e ".[lint,mypy]"
Auto-fix imports with:

```sh
isort -rc synapse tests
isort .
```

`-rc` means to recursively search the given directories.

It's worth noting that modern IDEs and text editors can run these tools
automatically on save. It may be worth looking into whether this
functionality is supported in your editor for a more convenient
Expand Down
22 changes: 4 additions & 18 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,9 @@

[tool.black]
target-version = ['py37', 'py38', 'py39', 'py310']
exclude = '''
(
/(
\.eggs # exclude a few common directories in the
| \.git # root of the project
| \.tox
| \.venv
| \.env
| env
| _build
| _trial_temp.*
| build
| dist
| debian
)/
)
'''
# black ignores everything in .gitignore by default, see
# https://black.readthedocs.io/en/stable/usage_and_configuration/file_collection_and_discovery.html#gitignore
# Use `extend-exclude` if you want to exclude something in addition to this.

[tool.isort]
line_length = 88
Expand All @@ -65,6 +50,7 @@ known_twisted = ["twisted", "OpenSSL"]
multi_line_output = 3
include_trailing_comma = true
combine_as_imports = true
skip_gitignore = true

[tool.poetry]
name = "matrix-synapse"
Expand Down
8 changes: 1 addition & 7 deletions scripts-dev/lint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,7 @@ else
# then lint everything!
if [[ -z ${files+x} ]]; then
# Lint all source code files and directories
# Note: this list aims to mirror the one in tox.ini
files=(
"synapse" "docker" "tests"
# annoyingly, black doesn't find these so we have to list them
"scripts-dev"
"contrib" "setup.py" "synmark" "stubs" ".ci"
)
files=( "." )
fi
fi

Expand Down
30 changes: 1 addition & 29 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py37, py38, py39, py310, check_codestyle, check_isort
envlist = py37, py38, py39, py310

# we require tox>=2.3.2 for the fix to https://github.com/tox-dev/tox/issues/208
minversion = 2.3.2
Expand Down Expand Up @@ -32,19 +32,6 @@ deps =
# install the "enum34" dependency of cryptography.
pip>=10

# directories/files we run the linters on.
# if you update this list, make sure to do the same in scripts-dev/lint.sh
lint_targets =
setup.py
synapse
tests
# annoyingly, black doesn't find these so we have to list them
scripts-dev
stubs
contrib
synmark
.ci
docker

# default settings for all tox environments
[testenv]
Expand Down Expand Up @@ -138,18 +125,3 @@ setenv =
commands =
python -m synmark {posargs:}

[testenv:check_codestyle]
extras = lint
commands =
python -m black --check --diff {[base]lint_targets}
flake8 {[base]lint_targets} {env:PEP8SUFFIX:}

[testenv:check_isort]
extras = lint
commands = isort -c --df {[base]lint_targets}

[testenv:mypy]
deps =
{[base]deps}
extras = all,mypy
commands = mypy

0 comments on commit ceb8634

Please sign in to comment.