diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml new file mode 100644 index 0000000..636f30a --- /dev/null +++ b/.github/workflows/autofix.yml @@ -0,0 +1,29 @@ +name: Auto-fix +on: + push: + pull_request: +jobs: + style: + runs-on: ubuntu-latest + steps: + - name: Download source + uses: actions/checkout@v4 + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install Hatch + run: | + pip install hatch + - name: Install dependencies + run: | + hatch run style:pip freeze + - name: Fix code style + run: | + hatch run style:fix --fix-only + - name: Check if any edits are necessary + run: | + git diff --color --exit-code + - name: Apply automatic fixes using pre-commit-ci-lite + if: failure() && github.event_name == 'pull_request' + uses: pre-commit-ci/lite-action@v1.0.1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 92dc81f..6887eaa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: - name: Download source uses: actions/checkout@v4 - name: Install Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{matrix.python}} - name: Pin to lowest versions @@ -55,7 +55,7 @@ jobs: - name: Download source uses: actions/checkout@v4 - name: Install Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install Hatch @@ -68,11 +68,7 @@ jobs: - name: Check style if: always() run: | - hatch run style:fix - - name: Check formatting - if: always() - run: | - git diff --color --exit-code + hatch run style:check - name: Check types if: always() run: | diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml index 3446498..44fed5b 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/deploy-release.yml @@ -11,7 +11,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install dependencies diff --git a/.tools/copier-answers.yml b/.tools/copier-answers.yml index cc5c380..caa2be7 100644 --- a/.tools/copier-answers.yml +++ b/.tools/copier-answers.yml @@ -1,4 +1,4 @@ -_commit: 7d6f4ceea +_commit: ed37f1413 _src_path: gh:oprypin/py-project-template copyright_date: '2020' mkdocs: false @@ -10,3 +10,4 @@ python_distribution_name: mkdocs-click python_source_path: mkdocs_click repository_name: mkdocs/mkdocs-redirects script_test: true + diff --git a/mkdocs_click/__init__.py b/mkdocs_click/__init__.py index b11f90f..978dc01 100644 --- a/mkdocs_click/__init__.py +++ b/mkdocs_click/__init__.py @@ -5,4 +5,4 @@ from ._exceptions import MkDocsClickException from ._extension import MKClickExtension, makeExtension -__all__ = ["__version__", "MKClickExtension", "MkDocsClickException", "makeExtension"] +__all__ = ["MKClickExtension", "MkDocsClickException", "__version__", "makeExtension"] diff --git a/pyproject.toml b/pyproject.toml index 634faef..872169c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,9 @@ path = "mkdocs_click/__version__.py" [tool.hatch.build.targets.sdist] include = ["/mkdocs_click", "/CHANGELOG.md", "/tests"] +[tool.hatch.env] +requires = ["hatch-pip-compile >=1.7.0"] + [tool.hatch.envs.default.scripts] all = [ "hatch run style:fix", @@ -66,8 +69,8 @@ dependencies = [ ] [tool.hatch.envs.test.scripts] test = [ - "pytest -q", - "bash .tools/test.sh", + "pytest -q {args}", + "bash .tools/test.sh {args}", ] [tool.hatch.envs.types] @@ -76,40 +79,49 @@ dependencies = [ "types-Markdown >=3.4.2", ] [tool.hatch.envs.types.scripts] -check = [ - "mypy mkdocs_click" -] +check = "mypy {args} mkdocs_click" [tool.hatch.envs.style] -skip-install = true +type = "pip-compile" +detached = true dependencies = [ "ruff", ] [tool.hatch.envs.style.scripts] +check = "ruff check mkdocs_click tests {args}" +format = "ruff format -q mkdocs_click tests" fix = [ - "ruff check --fix mkdocs_click tests", + "check --fix --unsafe-fixes", "format", ] -format = [ - "ruff format -q mkdocs_click tests", -] [tool.ruff] line-length = 100 +[tool.ruff.lint] +preview = true select = [ - "I", - "F", "W", "E", "UP", "YTT", "C4", "DTZ", "FA", "ISC", "PIE", "T20", "RSE", "TCH", - "B002", "B003", "B005", "B007", "B009", "B012", "B013", "B014", "B015", "B018", "B020", "B021", "B023", "B026", "B033", "B034", "B905", + "F", "E", "W", "I", "UP", "YTT", "C4", "DTZ", "T10", "FA", "ISC", "PIE", "T20", "RSE", "TCH", + "N803", "N804", "N805", "N806", "N807", "N815", "N816", "N999", + "B002", "B003", "B005", "B007", "B008", "B009", "B010", "B011", "B012", "B013", "B014", "B015", "B016", "B017", "B018", "B020", "B021", "B022", "B023", "B025", "B026", "B029", "B030", "B031", "B032", "B033", "B034", "B035", "B905", "COM818", - "PERF101", - "PGH002", "PGH004", "PGH005", + "G001", "G010", "G202", + "Q004", + "RET502", "RET504", + "SIM101", "SIM103", "SIM105", "SIM107", "SIM118", "SIM201", "SIM202", "SIM208", "SIM210", "SIM211", "SIM212", "SIM220", "SIM221", "SIM222", "SIM223", "SIM300", "SIM401", "SIM910", "SIM911", + "PGH003", "PGH004", "PGH005", + "PLC0105", "PLC0131", "PLC0132", "PLC0205", "PLC0208", "PLC0414", "PLC2401", "PLC2403", "PLC2801", "PLC3002", + "PLE0100", "PLE0101", "PLE0116", "PLE0117", "PLE0118", "PLE0241", "PLE0302", "PLE0307", "PLE0604", "PLE0605", "PLE0704", "PLE1132", "PLE1142", "PLE1205", "PLE1206", "PLE1300", "PLE1307", "PLE1310", "PLE1507", "PLE1700", "PLE2502", "PLE2510", "PLE2512", "PLE2513", "PLE2514", "PLE2515", + "PLR0124", "PLR0133", "PLR0206", "PLR0402", "PLR1701", "PLR1722", "PLR1733", "PLR1736", + "PLW0108", "PLW0120", "PLW0127", "PLW0129", "PLW0131", "PLW0245", "PLW0406", "PLW0602", "PLW0603", "PLW0604", "PLW0711", "PLW1501", "PLW1508", "PLW1514", "PLW2101", "PLW3301", + "TRY302", "TRY401", "FLY002", - "PLC", "PLE", "PLR0124", "PLR0133", "PLR0206", "PLR0402", "PLR1701", "PLR1722", "PLW0120", "PLW0127", "PLW0129", "PLW0131", "PLW0406", "PLW0602", "PLW0603", "PLW0711", - "RUF001", "RUF005", "RUF007", "RUF010", "RUF013", "RUF100", "RUF200", - "SIM101", "SIM107", "SIM201", "SIM202", "SIM208", "SIM210", "SIM211", "SIM300", "SIM401", "SIM910", + "PERF101", "PERF102", "PERF402", "PERF403", + "FURB105", "FURB118", "FURB131", "FURB132", "FURB148", "FURB163", "FURB167", "FURB168", "FURB169", + "LOG001", "LOG009", + "RUF001", "RUF005", "RUF007", "RUF008", "RUF009", "RUF010", "RUF013", "RUF015", "RUF016", "RUF017", "RUF018", "RUF019", "RUF020", "RUF021", "RUF022", "RUF100", "RUF200", ] ignore = ["E501", "E731"] -[tool.ruff.flake8-comprehensions] +[tool.ruff.lint.flake8-comprehensions] allow-dict-calls-with-keyword-arguments = true [tool.mypy] diff --git a/requirements/requirements-style.txt b/requirements/requirements-style.txt new file mode 100644 index 0000000..103d940 --- /dev/null +++ b/requirements/requirements-style.txt @@ -0,0 +1,8 @@ +# +# This file is autogenerated by hatch-pip-compile with Python 3.11 +# +# - ruff +# + +ruff==0.2.0 + # via hatch.envs.style diff --git a/tests/test_loader.py b/tests/test_loader.py index ff0ddb7..7825b6c 100644 --- a/tests/test_loader.py +++ b/tests/test_loader.py @@ -21,5 +21,5 @@ ], ) def test_load_command(module: str, command: str, exc): - with pytest.raises(exc) if exc is not None else nullcontext(): # type: ignore + with pytest.raises(exc) if exc is not None else nullcontext(): load_command(module, command)