From f30c3c036c6a54514b2d3809286d29f6f168d731 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 22:35:10 +0000 Subject: [PATCH 1/5] Fix issues from Ruff in scripts --- scripts/node_version.py | 8 ++++---- scripts/ruff_version.py | 13 ++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/scripts/node_version.py b/scripts/node_version.py index edc04c134..2fca03702 100644 --- a/scripts/node_version.py +++ b/scripts/node_version.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import json from pathlib import Path @@ -11,9 +13,6 @@ CI_YML = ROOT / ".github" / "workflows" / "ci.yml" def main() -> None: new_version = get_version_from_dockerfile() - if new_version is None: - raise RuntimeError(f"No version found in {DOCKERFILE}") - old_version = get_version_from_package_json() if old_version != new_version: update_package_json_version(old_version, new_version) @@ -21,7 +20,7 @@ def main() -> None: update_production_node_version(old_version, new_version) -def get_version_from_dockerfile() -> str | None: +def get_version_from_dockerfile() -> str: # Extract version out of base image name: # FROM docker.io/node:22.13-bookworm-slim # -> 22.13 @@ -31,6 +30,7 @@ def get_version_from_dockerfile() -> str | None: _, _, docker_tag = line.partition(":") version_str, _, _ = docker_tag.partition("-") return version_str + raise RuntimeError("Could not find version in Dockerfile") def get_version_from_package_json() -> str: diff --git a/scripts/ruff_version.py b/scripts/ruff_version.py index acc6beb14..4b0ab965c 100644 --- a/scripts/ruff_version.py +++ b/scripts/ruff_version.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import subprocess import tomllib from pathlib import Path @@ -9,7 +11,7 @@ PRE_COMMIT_CONFIG = TEMPLATED_ROOT / ".pre-commit-config.yaml" PYPROJECT_TOML = ROOT / "pyproject.toml" -def main(): +def main() -> None: new_version = get_requirements_txt_version() old_version = get_pyproject_toml_version() if old_version == new_version: @@ -19,22 +21,23 @@ def main(): subprocess.run(["uv", "lock", "--no-upgrade"], cwd=ROOT) -def get_requirements_txt_version(): +def get_requirements_txt_version() -> str: content = REQUIREMENTS_LOCAL_TXT.read_text() for line in content.split("\n"): if line.startswith("ruff"): return line.split(" ")[0].split("==")[1] - return None + raise RuntimeError("Could not find ruff version in requirements/local.txt") -def get_pyproject_toml_version(): +def get_pyproject_toml_version() -> str: data = tomllib.loads(PYPROJECT_TOML.read_text()) for dependency in data["project"]["dependencies"]: if dependency.startswith("ruff=="): return dependency.split("==")[1] + raise RuntimeError("Could not find ruff version in pyproject.toml") -def update_ruff_version(old_version, new_version): +def update_ruff_version(old_version: str, new_version: str) -> None: # Update pyproject.toml new_content = PYPROJECT_TOML.read_text().replace( f"ruff=={old_version}", From 907ee6a607a43ba34f6c886113511d2c635c36ce Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 22:36:17 +0000 Subject: [PATCH 2/5] Fix issues from Ruff in docs config --- docs/conf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 82098a168..1b057bb4d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -188,7 +188,7 @@ latex_documents = [ "cookiecutter-django Documentation", "cookiecutter-django", "manual", - ) + ), ] # The name of an image file (relative to this directory) to place at the top of @@ -223,7 +223,7 @@ man_pages = [ "Cookiecutter Django documentation", ["Daniel Roy Greenfeld"], 1, - ) + ), ] # If true, show URL addresses after external links. @@ -242,7 +242,7 @@ texinfo_documents = [ "Cookiecutter Django documentation", "Daniel Roy Greenfeld", "Cookiecutter Django", - "A Cookiecutter template for creating production-ready " "Django projects quickly.", + "A Cookiecutter template for creating production-ready Django projects quickly.", "Miscellaneous", ) ] From ec4e519795e186cd041caf859765750b6ba0f1fe Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 22:37:16 +0000 Subject: [PATCH 3/5] Fix indentation in generated pyproject.toml --- {{cookiecutter.project_slug}}/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/pyproject.toml b/{{cookiecutter.project_slug}}/pyproject.toml index 3c7458438..eaead446c 100644 --- a/{{cookiecutter.project_slug}}/pyproject.toml +++ b/{{cookiecutter.project_slug}}/pyproject.toml @@ -135,7 +135,7 @@ ignore = [ # The fixes in extend-unsafe-fixes will require # provide the `--unsafe-fixes` flag when fixing. extend-unsafe-fixes = [ - "UP038", + "UP038", ] [tool.ruff.lint.isort] From 425520956da1958b728013bbea6645e649276cea Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 22:37:53 +0000 Subject: [PATCH 4/5] Use 2 spaces indentation in toml files --- .editorconfig | 2 +- {{cookiecutter.project_slug}}/.editorconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.editorconfig b/.editorconfig index 6a9a5c45d..d8719a1e5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,7 +12,7 @@ trim_trailing_whitespace = true indent_style = space indent_size = 4 -[*.{html,css,scss,json,yml,xml}] +[*.{html,css,scss,json,yml,xml,toml}] indent_style = space indent_size = 2 diff --git a/{{cookiecutter.project_slug}}/.editorconfig b/{{cookiecutter.project_slug}}/.editorconfig index c0ce34260..4aa03505b 100644 --- a/{{cookiecutter.project_slug}}/.editorconfig +++ b/{{cookiecutter.project_slug}}/.editorconfig @@ -12,7 +12,7 @@ trim_trailing_whitespace = true indent_style = space indent_size = 4 -[*.{html,css,scss,json,yml,xml}] +[*.{html,css,scss,json,yml,xml,toml}] indent_style = space indent_size = 2 From cc0bd38eff58583c966dfb2efdd30144b81e74f9 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 22:40:22 +0000 Subject: [PATCH 5/5] Port some changes from Ruff --- scripts/create_django_issue.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/create_django_issue.py b/scripts/create_django_issue.py index 2e59f18b0..e728da798 100644 --- a/scripts/create_django_issue.py +++ b/scripts/create_django_issue.py @@ -12,7 +12,6 @@ from __future__ import annotations import os import re import sys -from collections.abc import Iterable from pathlib import Path from typing import TYPE_CHECKING, Any, NamedTuple @@ -20,6 +19,8 @@ import requests from github import Github if TYPE_CHECKING: + from collections.abc import Iterable + from github.Issue import Issue CURRENT_FILE = Path(__file__) @@ -83,7 +84,7 @@ def get_name_and_version(requirements_line: str) -> tuple[str, ...]: def get_all_latest_django_versions( - django_max_version: tuple[DjVersion] = None, + django_max_version: tuple[DjVersion] | None = None, ) -> tuple[DjVersion, list[DjVersion]]: """ Grabs all Django versions that are worthy of a GitHub issue. @@ -221,8 +222,7 @@ class GitHubManager: if supported_dj_versions: if any(v >= needed_dj_version for v in supported_dj_versions): return package_info["info"]["version"], "✅" - else: - return "", "❌" + return "", "❌" # Django classifier DNE; assume it isn't a Django lib # Great exceptions include pylint-django, where we need to do this manually...