From a284a9e8d791cd13071bd49cc710673242d52c2b Mon Sep 17 00:00:00 2001 From: Brent O'Connor Date: Sat, 19 Oct 2024 11:38:44 -0500 Subject: [PATCH] Fix linting --- justfile | 12 +++++++++--- pyproject.toml | 3 +++ scripts/update_templates.py | 10 +++++----- src/dj_beat_drop/main_cli.py | 8 ++++---- src/dj_beat_drop/new.py | 10 +++++----- src/dj_beat_drop/utils.py | 6 ++---- tests/test_new_command.py | 6 +++--- 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/justfile b/justfile index 8037764..33ddbd2 100644 --- a/justfile +++ b/justfile @@ -10,13 +10,19 @@ format: format_just format_python @format_just: just _start_command "Formatting Justfile" - ruff format + just --fmt --unstable @format_python: just _start_command "Formatting Python" - ruff format + uv run ruff format -@pre_commit: format test +@lint: lint_python + +@lint_python: + just _start_command "Linting Python" + uv run ruff check + +@pre_commit: format lint test @test: uv run pytest diff --git a/pyproject.toml b/pyproject.toml index 7e4151d..cb25f9f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,3 +47,6 @@ ignore = ["D100", "D101", "D102", "D103", "D104", "D106", "D203", "D212"] [tool.ruff.lint.isort] section-order = ["future", "standard-library", "third-party", "first-party", "local-folder", ] + +[tool.ruff.lint.per-file-ignores] +"**/{tests}/*" = ["S101"] diff --git a/scripts/update_templates.py b/scripts/update_templates.py index a02ebf6..072beb7 100644 --- a/scripts/update_templates.py +++ b/scripts/update_templates.py @@ -5,15 +5,15 @@ import requests -from dj_beat_drop.utils import red, get_latest_django_version, get_lts_django_version +from dj_beat_drop.utils import color, get_latest_django_version, get_lts_django_version def download_django(version): template_url = f"https://github.com/django/django/archive/refs/tags/{version}.zip" - target_dir = f"/tmp/django_template/{version}" - response = requests.get(template_url) + target_dir = f"/tmp/django_template/{version}" # noqa: S108 + response = requests.get(template_url, timeout=10) if response.status_code != 200: - red("Failed to download the Django template.") + color.red("Failed to download the Django template.") else: with zipfile.ZipFile(BytesIO(response.content)) as zip_ref: zip_ref.extractall(target_dir) @@ -36,7 +36,7 @@ def main(): lts_version, lts_minor_version = get_lts_django_version() download_dir = download_django(lts_version) copy_template_dir(download_dir, lts_version, lts_minor_version) - shutil.rmtree("/tmp/django_template") + shutil.rmtree("/tmp/django_template") # noqa: S108 if __name__ == "__main__": diff --git a/src/dj_beat_drop/main_cli.py b/src/dj_beat_drop/main_cli.py index f6ba2b2..0c4270a 100644 --- a/src/dj_beat_drop/main_cli.py +++ b/src/dj_beat_drop/main_cli.py @@ -1,10 +1,9 @@ import argparse import requests - -from dj_beat_drop.new import handle_new from pkg_resources import get_distribution, parse_version +from dj_beat_drop.new import handle_new from dj_beat_drop.utils import green @@ -23,12 +22,13 @@ def check_version(): package_name = "dj-beat-drop" current_version = get_distribution(package_name).version - response = requests.get(f"https://pypi.org/pypi/{package_name}/json") + response = requests.get(f"https://pypi.org/pypi/{package_name}/json", timeout=10) latest_version = response.json()["info"]["version"] if parse_version(current_version) < parse_version(latest_version): green( - f"\033[0;33m\nA new version of {package_name} is available ({latest_version}). You are using {current_version}. To update, run:\n\033[0m" + f"\033[0;33m\nA new version of {package_name} is available ({latest_version}). You are using " + f"{current_version}. To update, run:\n\033[0m" ) print(f" pip install --upgrade {package_name}\n") diff --git a/src/dj_beat_drop/new.py b/src/dj_beat_drop/new.py index c56fd78..9a9ff52 100644 --- a/src/dj_beat_drop/new.py +++ b/src/dj_beat_drop/new.py @@ -91,12 +91,12 @@ def create_new_project( if initialize_uv is True: os.chdir(project_dir) - os.system("uv init") - os.system("rm hello.py") - os.system(f"uv add django~='{minor_version}'") + os.system("uv init") # noqa: S605, S607 + os.system("rm hello.py") # noqa: S605, S607 + os.system(f"uv add django~='{minor_version}'") # noqa: S605 if initialize_env is True: - os.system("uv add environs[django]") - os.system("uv run manage.py migrate") + os.system("uv add environs[django]") # noqa: S605, S607 + os.system("uv run manage.py migrate") # noqa: S605, S607 color.green("New Django project created.\n") diff --git a/src/dj_beat_drop/utils.py b/src/dj_beat_drop/utils.py index 4b4abcd..1a36ad6 100644 --- a/src/dj_beat_drop/utils.py +++ b/src/dj_beat_drop/utils.py @@ -19,7 +19,7 @@ def red(text): @lru_cache def get_django_releases(): - response = requests.get("https://pypi.org/pypi/Django/json") + response = requests.get("https://pypi.org/pypi/Django/json", timeout=10) if response.status_code == 200: data = response.json() return {"latest": data["info"]["version"], "releases": data["releases"]} @@ -63,8 +63,6 @@ def get_template_context(*, use_lts: bool): def get_secret_key(): - """ - Return a 50 character random string usable as a SECRET_KEY setting value. - """ + """Return a 50 character random string usable as a SECRET_KEY setting value.""" chars = "abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)" return "".join(secrets.choice(chars) for _ in range(50)) diff --git a/tests/test_new_command.py b/tests/test_new_command.py index d562dcd..f089522 100644 --- a/tests/test_new_command.py +++ b/tests/test_new_command.py @@ -7,8 +7,7 @@ from dj_beat_drop.new import create_new_project - -ENV_SECRET_KEY_PATTERN = 'SECRET_KEY = env.str("SECRET_KEY")' +ENV_SECRET_KEY_PATTERN = 'SECRET_KEY = env.str("SECRET_KEY")' # noqa: S105 FILE_ASSERTIONS = { "manage.py": [ "os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')", @@ -61,7 +60,8 @@ class SafeDict(dict): def __missing__(self, key): - return f"{{{key}}}" # Keeps the original placeholder if the key is missing + """Make sure to keep the original placeholder if the key is missing.""" + return f"{{{key}}}" class TestNewCommand(TestCase):