diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index ec4d9ee..814b3f1 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,5 +1,5 @@ name: Linting -# Linting tools use `pyproject.toml` and `setup.cfg` for config. +# Linting tools use `pyproject.toml` for config. on: - pull_request @@ -9,9 +9,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.10' - name: Install requirements diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 49eb5dc..493d5d4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,17 +8,17 @@ jobs: strategy: matrix: include: - - python-version: '3.11' - pytest-version: 8 + - python-version: '3.12' + pytest-version: 9 - python-version: '3.10' pytest-version: 7 runs-on: ubuntu-latest name: pytest ${{ matrix.pytest-version }} steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '${{ matrix.python-version }}' - name: Install requirements diff --git a/pyproject.toml b/pyproject.toml index 001a499..33b33b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,20 @@ disable_error_code = 'annotation-unchecked' ignore_missing_imports = true module = ['invoke'] +[tool.flake8] +max-line-length = 100 +# Errors being ignored: +# E203 is not PEP8 compliant and clashes with black +# E701,E704 multiple statements on one line (colon) +# Conflict with `black`, where empty class definitions (with Ellipsis) are formatted to be in +# one line in `black`, ex `class FileUpdateError(Exception): ...` +# W503 line break before binary operator clashes with black +# F811 redefinition of unused import happens when importing pytest fixtures in test modules +extend-ignore = ['E203', 'E266', 'E501', 'E701', 'E704', 'W503', 'F811'] +exclude = [ + '.git', '.github', '__pycache__', '.venv*', 'venv*', 'build', 'dist' +] + [tool.pytest.ini_options] testpaths = ['tests'] markers = ['flaky', 'nightly', 'performance', 'pri1'] diff --git a/requirements-dev.in b/requirements-dev.in index a9356bf..8a35876 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -7,6 +7,7 @@ pip-tools # Package management # Linting black # Linter flake8 # Linter +flake8-pyproject # Flake8 in pyproject.toml isort # Linter mypy # Code inspector diff --git a/requirements-dev.txt b/requirements-dev.txt index 7150d16..db880a8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,46 +1,52 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile requirements-dev.in -# -black==25.1.0 +black==26.1.0 # via -r requirements-dev.in -build==1.2.2.post1 +build==1.4.0 # via pip-tools -certifi==2025.4.26 +certifi==2026.1.4 # via requests -charset-normalizer==3.4.1 +charset-normalizer==3.4.4 # via requests -click==8.1.8 +click==8.3.1 # via # black # pip-tools -docutils==0.21.2 +colorama==0.4.6 + # via + # -r requirements.txt + # build + # click + # pytest +docutils==0.22.4 # via flit -exceptiongroup==1.2.2 +exceptiongroup==1.3.1 # via # -r requirements.txt # pytest -flake8==7.2.0 +flake8==7.3.0 + # via + # -r requirements-dev.in + # flake8-pyproject +flake8-pyproject==1.2.4 # via -r requirements-dev.in flit==3.12.0 # via -r requirements-dev.in flit-core==3.12.0 # via flit -idna==3.10 +idna==3.11 # via requests -iniconfig==2.1.0 +iniconfig==2.3.0 # via # -r requirements.txt # pytest -invoke==2.2.0 +invoke==2.2.1 # via -r requirements-dev.in -isort==6.0.1 +isort==7.0.0 # via -r requirements-dev.in +librt==0.7.8 + # via mypy mccabe==0.7.0 # via flake8 -mypy==1.15.0 +mypy==1.19.1 # via -r requirements-dev.in mypy-extensions==1.1.0 # via @@ -52,47 +58,56 @@ packaging==25.0 # black # build # pytest -pathspec==0.12.1 - # via black -pip-tools==7.4.1 +pathspec==1.0.3 + # via + # black + # mypy +pip-tools==7.5.2 # via -r requirements-dev.in -platformdirs==4.3.7 +platformdirs==4.5.1 # via black -pluggy==1.5.0 +pluggy==1.6.0 # via # -r requirements.txt # pytest -pycodestyle==2.13.0 +pycodestyle==2.14.0 # via flake8 -pyflakes==3.3.2 +pyflakes==3.4.0 # via flake8 +pygments==2.19.2 + # via + # -r requirements.txt + # pytest pyproject-hooks==1.2.0 # via # build # pip-tools -pytest==8.3.5 +pytest==9.0.2 # via - # -r requirements.txt # -r requirements-dev.in -requests==2.32.3 + # -r requirements.txt +pytokens==0.3.0 + # via black +requests==2.32.5 # via flit -semantic-version==2.10.0 - # via -r requirements-dev.in -tomli==2.2.1 +tomli==2.4.0 # via # -r requirements.txt # black # build + # flake8-pyproject # mypy # pip-tools # pytest tomli-w==1.2.0 # via flit -typing-extensions==4.13.2 +typing-extensions==4.15.0 # via + # -r requirements.txt # black + # exceptiongroup # mypy -urllib3==2.4.0 +urllib3==2.6.3 # via requests wheel==0.45.1 # via pip-tools diff --git a/requirements.txt b/requirements.txt index 3ade496..8d516d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,18 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile requirements.in -# -exceptiongroup==1.2.2 +colorama==0.4.6 # via pytest -iniconfig==2.1.0 +exceptiongroup==1.3.1 + # via pytest +iniconfig==2.3.0 # via pytest packaging==25.0 # via pytest -pluggy==1.5.0 +pluggy==1.6.0 + # via pytest +pygments==2.19.2 # via pytest -pytest==8.3.5 +pytest==9.0.2 # via -r requirements.in -tomli==2.2.1 +tomli==2.4.0 # via pytest +typing-extensions==4.15.0 + # via exceptiongroup diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 955148b..0000000 --- a/setup.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Configuration for tools that don't support `pyproject.toml`. - -[flake8] -extend-exclude = src/show_dialog/ui/forms,.venv*,venv*,.git,.github,assets,dist,docs,site,__pycache__ -max-line-length = 100 -# Errors being ignored: -# E203 is not PEP8 compliant and clashes with black -# E701,E704 multiple statements on one line (colon) -# Conflict with `black`, where empty class definitions (with Ellipsis) are formatted to be in -# one line in `black`, ex `class FileUpdateError(Exception): ...` -# W503 line break before binary operator clashes with black -# F811 redefinition of unused import happens when importing pytest fixtures in test modules -ignore = E203,E701,E704,W503,F811