Skip to content

Commit

Permalink
🔧 chore: Update pre-commit config
Browse files Browse the repository at this point in the history
- Add pyproject.toml config hook
- Add tox.ini config hook
- Add pyupgrade hook
- Add blacken docs hook for docs
  • Loading branch information
ARYAN-NIKNEZHAD committed Aug 30, 2024
1 parent 1883202 commit be04fdb
Show file tree
Hide file tree
Showing 7 changed files with 235 additions and 187 deletions.
27 changes: 26 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: check-toml
- id: check-yaml
files: \.yaml$
- id: trailing-whitespace
exclude: (migrations/|tests/|docs/|static/|media/).*
- id: end-of-file-fixer
Expand All @@ -15,6 +18,21 @@ repos:
- id: check-docstring-first
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/tox-dev/pyproject-fmt
rev: 2.2.1
hooks:
- id: pyproject-fmt

- repo: https://github.com/tox-dev/tox-ini-fmt
rev: 1.3.1
hooks:
- id: tox-ini-fmt

- repo: https://github.com/asottile/pyupgrade
rev: v3.17.0
hooks:
- id: pyupgrade

- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.5.5
hooks:
Expand All @@ -39,7 +57,6 @@ repos:
rev: v3.28.0
hooks:
- id: commitizen
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/PyCQA/bandit
rev: 1.7.4
Expand All @@ -56,6 +73,14 @@ repos:
args: ["--in-place", "--recursive", "--blank"]
exclude: (migrations/|tests/|docs/|static/|media/).*

- repo: https://github.com/adamchainz/blacken-docs
rev: 1.18.0
hooks:
- id: blacken-docs
additional_dependencies:
- black==24.4.2
files: '\.rst$'

- repo: https://github.com/rstcheck/rstcheck
rev: "v6.2.4"
hooks:
Expand Down
43 changes: 30 additions & 13 deletions docs/pytest_guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,17 @@ Example File Structure
pytestmark = [
pytest.mark.django_db,
pytest.mark.admin,
pytest.mark.skipif(sys.version_info < (3, 8), reason="Python 3.8 or higher required")
pytest.mark.skipif(
sys.version_info < (3, 8), reason="Python 3.8 or higher required"
),
]
User = get_user_model()
class TestMyModelAdmin:
"""Class for testing MyModelAdmin functionality."""
def test_some_functionality(self) -> None:
# Test logic goes here
pass
Expand All @@ -76,7 +79,9 @@ Example of pytestmark
pytestmark = [
pytest.mark.django_db,
pytest.mark.admin,
pytest.mark.skipif(sys.version_info < (3, 8), reason="Python 3.8 or higher required")
pytest.mark.skipif(
sys.version_info < (3, 8), reason="Python 3.8 or higher required"
),
]
Docstrings
Expand Down Expand Up @@ -149,14 +154,17 @@ Admin Model Test Example
pytestmark = [
pytest.mark.django_db,
pytest.mark.admin,
pytest.mark.skipif(sys.version_info < (3, 8), reason="Python 3.8 or higher required")
pytest.mark.skipif(
sys.version_info < (3, 8), reason="Python 3.8 or higher required"
),
]
User = get_user_model()
class TestMyModelAdmin:
"""Class for testing MyModelAdmin functionality."""
def test_formfield_for_foreignkey_sets_queryset(self) -> None:
"""
Test that the formfield for the ForeignKey correctly sets the queryset.
Expand All @@ -165,12 +173,18 @@ Admin Model Test Example
"""
admin_site = AdminSite()
request = HttpRequest()
request.user = User.objects.create_superuser('admin', '[email protected]', 'password')
request.user = User.objects.create_superuser(
"admin", "[email protected]", "password"
)
model_admin = MyModelAdmin(model=MyModel, admin_site=admin_site)
db_field = MyModel._meta.get_field('related_model')
with patch.object(MyModelAdmin, 'get_field_queryset', return_value=MyModel.objects.filter(name="Test")) as mock_get_field_queryset:
db_field = MyModel._meta.get_field("related_model")
with patch.object(
MyModelAdmin,
"get_field_queryset",
return_value=MyModel.objects.filter(name="Test"),
) as mock_get_field_queryset:
formfield = model_admin.formfield_for_foreignkey(db_field, request)
mock_get_field_queryset.assert_called_once_with(None, db_field, request)
assert isinstance(formfield.widget, widgets.ForeignKeyRawIdWidget)
Expand All @@ -189,12 +203,15 @@ Settings Check Test Example
pytestmark = [
pytest.mark.settings_checks,
pytest.mark.skipif(sys.version_info < (3, 8), reason="Python 3.8 or higher required")
pytest.mark.skipif(
sys.version_info < (3, 8), reason="Python 3.8 or higher required"
),
]
class TestMyAppConfig:
"""Test MyApp configuration and settings."""
def test_check_my_app_config_correct_settings(self, settings) -> None:
"""
Test the MyApp configuration checker with correct settings.
Expand All @@ -204,7 +221,7 @@ Settings Check Test Example
settings.MY_SETTING_ENABLED = True
errors = check_my_app_config({})
assert len(errors) == 0
def test_check_my_app_config_invalid_type(self, settings) -> None:
"""
Test the MyApp configuration checker with invalid type settings.
Expand Down
5 changes: 2 additions & 3 deletions docs/quick_start.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@ Quick Start
.. code-block:: python
INSTALLED_APPS = [
...
'iranian_cities',
...
## Other apps
"iranian_cities",
]
3. **Run migrations to apply model changes**:
Expand Down
2 changes: 2 additions & 0 deletions docs/usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ You can use the provided fields and admin mixin in your Django models:
from django.db import models
from iranian_cities.fields import ProvinceField
class TestModel(models.Model):
province = ProvinceField()
Expand All @@ -29,6 +30,7 @@ You can use the provided fields and admin mixin in your Django models:
from iranian_cities.admin import IranianCitiesAdmin
from test_app.models import TestModel
@admin.register(TestModel)
class TestModelAdmin(IranianCitiesAdmin):
pass
Loading

0 comments on commit be04fdb

Please sign in to comment.