Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add pre-commit #191

Merged
merged 7 commits into from
Aug 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 4 additions & 85 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,89 +23,7 @@ jobs:
run: |
poetry run pytest -sv

black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Check formatting
run: |
poetry run black --check --diff .

flake8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Run flake8
run: |
poetry run flake8

djlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Run djlint
run: |
poetry run djlint --profile django --check --lint .

bandit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Run bandit
run: |
poetry run bandit --configfile bandit.yml -r boogiestats/

pending-migrations:
runs-on: ubuntu-latest
env:
DJANGO_SETTINGS_MODULE: boogiestats.boogiestats.settings
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Check pending migrations
run: |
poetry run django-admin makemigrations --check

poetry-lock:
pre-commit-checks:
runs-on: ubuntu-latest
env:
DJANGO_SETTINGS_MODULE: boogiestats.boogiestats.settings
Expand All @@ -118,6 +36,7 @@ jobs:
- name: Install dependencies
run: |
pip install poetry
- name: Check poetry lock
poetry install
- name: pre-commit checks
run: |
poetry check --no-interaction
poetry run pre-commit run -a
136 changes: 136 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
exclude: '.git/|.tox/|venv/|.venv/'
default_stages: [commit]
fail_fast: true

repos:
- repo: local
hooks:
- id: black
name: black
entry: black
language: system
files: '.*\.py$'

- id: isort
name: isort
entry: isort
language: system
files: '.*\.py$'

- id: flake8
name: flake8
entry: flake8
language: system
files: '.*\.py$'

- id: bandit
name: bandit
entry: bandit --configfile bandit.yml
language: system
files: 'boogiestats/.*\.py$'

- id: djlint reformat
name: djlint reformat
entry: djlint --profile django --reformat
language: system
files: '.*\.html$'

- id: djlint check
name: djlint check
entry: djlint --profile django --check --lint
language: system
files: '.*\.html$'

- id: check pending django migrations
name: check pending django migrations
entry: ./dev/check-pending-migrations.sh
language: system
files: 'boogiestats/.*\.py$'

- id: check poetry lock file
name: check poetry lock file
entry: poetry check --no-interaction
language: system
pass_filenames: false
files: '^pyproject\.toml$'

- id: check-added-large-files
name: check-added-large-files
entry: check-added-large-files
args: [ '--maxkb=512' ]
language: system

- id: check-ast
name: check-ast
entry: check-ast
language: system
files: '.*\.py$'

- id: check-case-conflict
name: check-case-conflict
entry: check-case-conflict
language: system

- id: check-docstring-first
name: check-docstring-first
entry: check-docstring-first
language: system
files: '.*\.py$'

- id: check-json
name: check-json
entry: check-json
language: system
files: '.*\.json$'

- id: check-merge-conflict
name: check-merge-conflict
entry: check-merge-conflict
language: system

- id: check-toml
name: check-toml
entry: check-toml
language: system
files: '.*\.toml$'

- id: check-xml
name: check-xml
entry: check-xml
language: system
files: '.*\.xml$'

- id: check-yaml
name: check-yaml
entry: check-yaml
language: system
types: [yaml]

- id: detect-private-key
name: detect-private-key
entry: detect-private-key
language: system

- id: end-of-file-fixer
name: end-of-file-fixer
entry: end-of-file-fixer
language: system
types: [ text ]

- id: trailing-whitespace-fixer
name: trailing-whitespace-fixer
entry: trailing-whitespace-fixer
language: system
types: [ text ]

- id: debug-statements
name: debug-statements
entry: debug-statement-hook
language: system
files: '.*\.py$'

- id: check-executables-have-shebangs
name: check-executables-have-shebangs
entry: check-executables-have-shebangs
language: system
types: [text, executable]
3 changes: 2 additions & 1 deletion boogiestats/boogie_api/admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.contrib import admin
from boogiestats.boogie_api.models import Score, Player, Song

from boogiestats.boogie_api.models import Player, Score, Song


class PlayerAdmin(admin.ModelAdmin):
Expand Down
4 changes: 2 additions & 2 deletions boogiestats/boogie_api/managers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import uuid
from typing import Optional, TYPE_CHECKING
from typing import TYPE_CHECKING, Optional

from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist
Expand All @@ -8,7 +8,7 @@
from boogiestats.boogie_api.utils import score_to_star_field

if TYPE_CHECKING:
from boogiestats.boogie_api.models import Song, Player
from boogiestats.boogie_api.models import Player, Song

JUDGMENTS_MAP = {
"miss": "misses",
Expand Down
2 changes: 1 addition & 1 deletion boogiestats/boogie_api/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Generated by Django 4.0.4 on 2022-04-22 18:57

from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
2 changes: 1 addition & 1 deletion boogiestats/boogie_api/migrations/0002_player_user.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Generated by Django 4.0.4 on 2022-05-22 19:34

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):
Expand Down
2 changes: 1 addition & 1 deletion boogiestats/boogie_api/migrations/0008_song_highscore.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.1 on 2022-09-20 19:59

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


def fill_highscores(apps, schema_editor):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.1.1 on 2022-09-23 07:12

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.1 on 2022-10-03 17:54

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


def fixup_latest_scores(apps, schema_editor):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Generated by Django 4.1 on 2022-10-08 20:06

import django.core.validators
from django.db import migrations, models
import django.utils.timezone
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.1 on 2022-11-14 20:50

from django.db import migrations, models
import django.utils.timezone
from django.db import migrations, models


def fill_submission_day(apps, schema_editor):
Expand Down
2 changes: 1 addition & 1 deletion boogiestats/boogie_api/migrations/0014_player_join_date.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 4.0 on 2022-11-25 13:28

from django.db import migrations, models
import django.utils.timezone
from django.db import migrations, models


def fill_join_date(apps, schema_editor):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import math

import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


def calculate_ex(score):
Expand Down
4 changes: 2 additions & 2 deletions boogiestats/boogie_api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
from django.db import models
from django.db.models import Count
from django.db.models.signals import m2m_changed
from django.utils.timezone import now
from django.utils.functional import cached_property
from django.utils.timezone import now
from redis import Redis

from boogiestats.boogie_api.managers import ScoreManager, PlayerManager
from boogiestats.boogie_api.managers import PlayerManager, ScoreManager
from boogiestats.boogie_api.utils import get_redis
from boogiestats.boogiestats.exceptions import Managed404Error

Expand Down
8 changes: 6 additions & 2 deletions boogiestats/boogie_api/test/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@
from django.conf import settings

from boogiestats import __version__ as boogiestats_version
from boogiestats.boogie_api.models import Song, Player, Score, LeaderboardSource
from boogiestats.boogie_api.views import GROOVESTATS_RESPONSES, create_headers, LB_SOURCE_MAPPING
from boogiestats.boogie_api.models import LeaderboardSource, Player, Score, Song
from boogiestats.boogie_api.views import (
GROOVESTATS_RESPONSES,
LB_SOURCE_MAPPING,
create_headers,
)

GROOVESTATS_ENDPOINT = settings.BS_UPSTREAM_API_ENDPOINT

Expand Down
2 changes: 1 addition & 1 deletion boogiestats/boogie_api/test/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.core.exceptions import ValidationError
from django.db import transaction

from boogiestats.boogie_api.models import Song, Player
from boogiestats.boogie_api.models import Player, Song


@pytest.fixture
Expand Down
4 changes: 1 addition & 3 deletions boogiestats/boogie_api/utils.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
from typing import Optional
from typing import TYPE_CHECKING, Optional

import redis
import sentry_sdk
from django.conf import settings
from django.http import HttpRequest
from ipware import get_client_ip

from typing import TYPE_CHECKING

if TYPE_CHECKING:
from boogiestats.boogie_api.models import Player, Score

Expand Down
Loading