From 01fb00c38c1f384a54f536d9238c3be084cea4b8 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 17 Feb 2025 17:44:02 +0100 Subject: [PATCH] Replaced pylint by ruff --- .pre-commit-config.yaml | 8 ++++---- modoboa/admin/api/v1/serializers.py | 1 - modoboa/admin/api/v2/serializers.py | 4 +--- modoboa/admin/app_settings.py | 4 +--- modoboa/admin/lib.py | 2 +- modoboa/admin/management/commands/subcommands/_import.py | 1 - .../admin/migrations/0002_migrate_from_modoboa_admin.py | 2 +- modoboa/admin/tests/test_alarms.py | 2 -- modoboa/admin/views/import_.py | 7 ------- modoboa/calendars/apps.py | 2 +- modoboa/calendars/backends/__init__.py | 3 --- modoboa/contacts/apps.py | 2 +- modoboa/contacts/tests.py | 6 +++--- modoboa/core/api/v2/views.py | 4 ++-- modoboa/core/app_settings.py | 2 +- modoboa/core/commands/deploy.py | 2 +- modoboa/core/factories.py | 2 -- modoboa/core/migrations/0002_delete_extension.py | 2 +- modoboa/core/tests/test_checks.py | 1 - modoboa/dmarc/admin.py | 2 -- modoboa/dmarc/apps.py | 2 +- modoboa/dmarc/lib.py | 2 +- modoboa/dnstools/lib.py | 2 -- modoboa/lib/cryptutils.py | 5 ----- modoboa/lib/migrations/0002_rename_parameters.py | 2 +- modoboa/lib/migrations/0003_rename_parameters.py | 2 +- modoboa/lib/migrations/0004_auto_20151114_1409.py | 2 +- modoboa/limits/migrations/0002_auto_20151114_1518.py | 2 +- modoboa/limits/migrations/0004_auto_20160413_1312.py | 2 +- modoboa/limits/tests/test_user_limits.py | 4 ++-- modoboa/maillog/apps.py | 2 +- modoboa/maillog/handlers.py | 1 - modoboa/maillog/lib.py | 2 +- modoboa/maillog/management/commands/logparser.py | 1 - modoboa/maillog/parser.py | 2 +- modoboa/pdfcredentials/api/v2/views.py | 3 --- modoboa/pdfcredentials/apps.py | 2 +- modoboa/pdfcredentials/handlers.py | 2 +- modoboa/pdfcredentials/lib.py | 2 +- modoboa/pdfcredentials/models.py | 2 -- modoboa/pdfcredentials/tests/test_lib.py | 3 --- modoboa/pdfcredentials/tests/test_views.py | 2 +- modoboa/postfix_autoreply/migrations/0003_move_aliases.py | 2 +- modoboa/postfix_autoreply/migrations/0004_delete_alias.py | 2 +- .../migrations/0005_auto_20151202_1623.py | 2 +- modoboa/postfix_autoreply/tests.py | 2 +- .../0002_migrate_from_modoboa_admin_relaydomains.py | 2 +- pyproject.toml | 4 ++-- 48 files changed, 41 insertions(+), 81 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 98931c989..a2d036117 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,12 +3,12 @@ repos: - repo: local hooks: - - id: pylint - name: pylint - entry: pylint + - id: ruff + name: ruff + entry: ruff language: system types: [python] - args: ["-rn", "-sn", "--fail-under=5"] + args: ["check"] - id: prettier name: prettier entry: prettier --config frontend/.prettierrc.json --write --ignore-unknown diff --git a/modoboa/admin/api/v1/serializers.py b/modoboa/admin/api/v1/serializers.py index c2cd1b7f4..48f9c037c 100644 --- a/modoboa/admin/api/v1/serializers.py +++ b/modoboa/admin/api/v1/serializers.py @@ -2,7 +2,6 @@ from typing import List -from django.conf import settings from django.contrib.auth import password_validation from django.core.exceptions import ValidationError from django.shortcuts import get_object_or_404 diff --git a/modoboa/admin/api/v2/serializers.py b/modoboa/admin/api/v2/serializers.py index b64860118..d3de5bdad 100644 --- a/modoboa/admin/api/v2/serializers.py +++ b/modoboa/admin/api/v2/serializers.py @@ -240,9 +240,7 @@ class AdminGlobalParametersSerializer(serializers.Serializer): if not value: return value try: - ip_addresses = [ - ipaddress.ip_network(v.strip()) for v in value.split() if v.strip() - ] + [ipaddress.ip_network(v.strip()) for v in value.split() if v.strip()] except ValueError: raise serializers.ValidationError( _("This field only allows valid IP addresses (or networks)") diff --git a/modoboa/admin/app_settings.py b/modoboa/admin/app_settings.py index c75292c96..36581f9b6 100644 --- a/modoboa/admin/app_settings.py +++ b/modoboa/admin/app_settings.py @@ -255,9 +255,7 @@ class AdminParametersForm(param_forms.AdminParametersForm): if not value: return value try: - ip_addresses = [ - ipaddress.ip_network(v.strip()) for v in value.split() if v.strip() - ] + [ipaddress.ip_network(v.strip()) for v in value.split() if v.strip()] except ValueError: raise forms.ValidationError( gettext_lazy("This field only allows valid IP addresses (or networks)") diff --git a/modoboa/admin/lib.py b/modoboa/admin/lib.py index bfbb07a8e..f03da82ad 100644 --- a/modoboa/admin/lib.py +++ b/modoboa/admin/lib.py @@ -205,7 +205,7 @@ def get_authoritative_server(domain, resolver=None): return str(first_answer.target) if hasattr(first_answer, "address"): return str(first_answer.address) - except dns.resolver.NoAnswer as e: + except dns.resolver.NoAnswer: dnsname = dnsname.parent() else: dnsname = dnsname.parent() diff --git a/modoboa/admin/management/commands/subcommands/_import.py b/modoboa/admin/management/commands/subcommands/_import.py index 0be4e2575..b55788811 100644 --- a/modoboa/admin/management/commands/subcommands/_import.py +++ b/modoboa/admin/management/commands/subcommands/_import.py @@ -7,7 +7,6 @@ import os import progressbar from chardet.universaldetector import UniversalDetector -from django.core.exceptions import ValidationError from django.core.management.base import BaseCommand, CommandError from django.db import transaction from django.utils.translation import gettext as _ diff --git a/modoboa/admin/migrations/0002_migrate_from_modoboa_admin.py b/modoboa/admin/migrations/0002_migrate_from_modoboa_admin.py index 13d831adb..900f543ea 100644 --- a/modoboa/admin/migrations/0002_migrate_from_modoboa_admin.py +++ b/modoboa/admin/migrations/0002_migrate_from_modoboa_admin.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations def rename_and_clean(apps, schema_editor): diff --git a/modoboa/admin/tests/test_alarms.py b/modoboa/admin/tests/test_alarms.py index 07691f3f0..e81e6bdc6 100644 --- a/modoboa/admin/tests/test_alarms.py +++ b/modoboa/admin/tests/test_alarms.py @@ -1,7 +1,5 @@ """Alarm related tests.""" -from django.urls import reverse - from modoboa.lib.tests import ModoTestCase from ..factories import populate_database from ..models import Alarm, Domain diff --git a/modoboa/admin/views/import_.py b/modoboa/admin/views/import_.py index 80744e10d..fd7f184d4 100644 --- a/modoboa/admin/views/import_.py +++ b/modoboa/admin/views/import_.py @@ -1,8 +1,5 @@ """Import related views.""" -import csv -import io - from reversion import revisions as reversion from django.contrib.auth.decorators import ( @@ -10,15 +7,11 @@ from django.contrib.auth.decorators import ( permission_required, user_passes_test, ) -from django.db import transaction from django.shortcuts import render from django.urls import reverse -from django.utils.encoding import smart_str from django.utils.translation import gettext as _ -from modoboa.lib.exceptions import Conflict, ModoboaException from .. import lib -from .. import signals from ..forms import ImportDataForm, ImportIdentitiesForm diff --git a/modoboa/calendars/apps.py b/modoboa/calendars/apps.py index 8b847e87e..ffbace58f 100644 --- a/modoboa/calendars/apps.py +++ b/modoboa/calendars/apps.py @@ -10,7 +10,7 @@ class CalendarsConfig(AppConfig): verbose_name = "Modoboa calendars" def ready(self): - from modoboa.calendars import handlers + from modoboa.calendars import handlers # noqa from modoboa.calendars.app_settings import load_settings load_settings() diff --git a/modoboa/calendars/backends/__init__.py b/modoboa/calendars/backends/__init__.py index 8d463a517..3187ca110 100644 --- a/modoboa/calendars/backends/__init__.py +++ b/modoboa/calendars/backends/__init__.py @@ -2,8 +2,6 @@ from importlib import import_module -from modoboa.lib.cryptutils import decrypt - class CalendarBackend(object): """Base backend class.""" @@ -37,5 +35,4 @@ def get_backend(name, *args, **kwargs): def get_backend_from_request(name, request, calendar=None): """Return a backend instance from a request.""" - # password = decrypt(request.session["password"]) return get_backend(name, request.user.email, request.auth, calendar=calendar) diff --git a/modoboa/contacts/apps.py b/modoboa/contacts/apps.py index fb3cab3ff..8f002beb8 100644 --- a/modoboa/contacts/apps.py +++ b/modoboa/contacts/apps.py @@ -7,7 +7,7 @@ class ModoboaContactsConfig(AppConfig): name = "modoboa.contacts" def ready(self): - from . import handlers + from . import handlers # noqa from modoboa.contacts.app_settings import load_settings load_settings() diff --git a/modoboa/contacts/tests.py b/modoboa/contacts/tests.py index ce87e273b..38019fa76 100644 --- a/modoboa/contacts/tests.py +++ b/modoboa/contacts/tests.py @@ -339,7 +339,7 @@ class ImportTestCase(TestDataMixin, ModoTestCase): def test_import_from_outlook_auto(self): management.call_command("import_contacts", "user@test.com", self.path) address = models.EmailAddress.objects.get(address="toto@titi.com") - phone = models.PhoneNumber.objects.get(number="12345678") + models.PhoneNumber.objects.get(number="12345678") self.assertEqual(address.contact.first_name, "Toto Tata") self.assertEqual(address.contact.addressbook.user.email, "user@test.com") self.assertEqual(address.contact.address, "Street 1 Street 2") @@ -352,7 +352,7 @@ class ImportTestCase(TestDataMixin, ModoTestCase): backend="outlook", ) address = models.EmailAddress.objects.get(address="toto@titi.com") - phone = models.PhoneNumber.objects.get(number="12345678") + models.PhoneNumber.objects.get(number="12345678") self.assertEqual(address.contact.first_name, "Toto Tata") self.assertEqual(address.contact.addressbook.user.email, "user@test.com") self.assertEqual(address.contact.address, "Street 1 Street 2") @@ -366,7 +366,7 @@ class ImportTestCase(TestDataMixin, ModoTestCase): carddav_password="Toto1234", ) address = models.EmailAddress.objects.get(address="toto@titi.com") - phone = models.PhoneNumber.objects.get(number="12345678") + models.PhoneNumber.objects.get(number="12345678") self.assertEqual(address.contact.first_name, "Toto Tata") self.assertEqual(address.contact.addressbook.user.email, "user@test.com") self.assertEqual(address.contact.address, "Street 1 Street 2") diff --git a/modoboa/core/api/v2/views.py b/modoboa/core/api/v2/views.py index 40b2dce4f..5e2a6c6f0 100644 --- a/modoboa/core/api/v2/views.py +++ b/modoboa/core/api/v2/views.py @@ -25,11 +25,11 @@ from . import serializers logger = logging.getLogger("modoboa.auth") -def delete_cache_key(class_target, throttles, request): +def delete_cache_key(class_target, throttles: list, request) -> None: """Attempt to delete cache key from throttling on login/password reset success.""" for throttle in throttles: - if type(throttle) == class_target: + if isinstance(throttle, class_target): throttle.reset_cache(request) return diff --git a/modoboa/core/app_settings.py b/modoboa/core/app_settings.py index 5fdb42c7f..a3b200990 100644 --- a/modoboa/core/app_settings.py +++ b/modoboa/core/app_settings.py @@ -680,7 +680,7 @@ class GeneralParametersForm(param_forms.AdminParametersForm): Doing so, we can use the django_auth_ldap module. """ try: - import ldap + import ldap # noqa ldap_available = True except ImportError: diff --git a/modoboa/core/commands/deploy.py b/modoboa/core/commands/deploy.py index 0a3efc0c5..522fa86bc 100644 --- a/modoboa/core/commands/deploy.py +++ b/modoboa/core/commands/deploy.py @@ -114,7 +114,7 @@ class DeployCommand(Command): if p.returncode: if output: print( - "\n".join([l.decode() for l in output if l is not None]), + "\n".join([line.decode() for line in output if line is not None]), file=sys.stderr, ) print("%s failed, check your configuration" % cmd, file=sys.stderr) diff --git a/modoboa/core/factories.py b/modoboa/core/factories.py index 7c77d9feb..36784176e 100644 --- a/modoboa/core/factories.py +++ b/modoboa/core/factories.py @@ -1,7 +1,5 @@ """Factories for core application.""" -import base64 - import factory from django.contrib.auth.models import Group diff --git a/modoboa/core/migrations/0002_delete_extension.py b/modoboa/core/migrations/0002_delete_extension.py index c43cf011f..49ac4aa32 100644 --- a/modoboa/core/migrations/0002_delete_extension.py +++ b/modoboa/core/migrations/0002_delete_extension.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations class Migration(migrations.Migration): diff --git a/modoboa/core/tests/test_checks.py b/modoboa/core/tests/test_checks.py index 0c538b865..51d56d9b5 100644 --- a/modoboa/core/tests/test_checks.py +++ b/modoboa/core/tests/test_checks.py @@ -6,7 +6,6 @@ from django.test.utils import override_settings from modoboa.core import checks from modoboa.lib.tests import SimpleModoTestCase -from modoboa.core.password_hashers.base import CRYPTHasher class CheckSessionCookieSecureTest(SimpleModoTestCase): diff --git a/modoboa/dmarc/admin.py b/modoboa/dmarc/admin.py index 8c38f3f3d..846f6b406 100644 --- a/modoboa/dmarc/admin.py +++ b/modoboa/dmarc/admin.py @@ -1,3 +1 @@ -from django.contrib import admin - # Register your models here. diff --git a/modoboa/dmarc/apps.py b/modoboa/dmarc/apps.py index d2c14dd1d..e2c202075 100644 --- a/modoboa/dmarc/apps.py +++ b/modoboa/dmarc/apps.py @@ -13,4 +13,4 @@ class DmarcConfig(AppConfig): def ready(self): load_settings() - from . import handlers + from . import handlers # noqa diff --git a/modoboa/dmarc/lib.py b/modoboa/dmarc/lib.py index 565cfacd5..7e2bc1ee4 100644 --- a/modoboa/dmarc/lib.py +++ b/modoboa/dmarc/lib.py @@ -129,7 +129,7 @@ def import_report(content): else: print(f"Report skipped because of malformed data (empty {attr})") return - value = setattr(report, "policy_{}".format(attr), node.text) + setattr(report, "policy_{}".format(attr), node.text) report.save() for record in root.findall("record"): import_record(record, report) diff --git a/modoboa/dnstools/lib.py b/modoboa/dnstools/lib.py index eb48b5068..3920e4595 100644 --- a/modoboa/dnstools/lib.py +++ b/modoboa/dnstools/lib.py @@ -161,9 +161,7 @@ def check_spf_syntax(record): for part in parts: if part == "": continue - qualifier = None if part[0] in ["+", "-", "~", "?"]: - qualifier = part[0] part = part[1:] if part == "all": continue diff --git a/modoboa/lib/cryptutils.py b/modoboa/lib/cryptutils.py index 19d3f004b..303aed64a 100644 --- a/modoboa/lib/cryptutils.py +++ b/modoboa/lib/cryptutils.py @@ -1,13 +1,8 @@ """Crypto related utilities.""" import base64 -import time from cryptography.fernet import Fernet -from cryptography.hazmat.backends import default_backend -from cryptography.hazmat.primitives.twofactor import InvalidToken -from cryptography.hazmat.primitives.twofactor.totp import TOTP -from cryptography.hazmat.primitives.hashes import SHA1 from django.conf import settings from django.utils.crypto import get_random_string diff --git a/modoboa/lib/migrations/0002_rename_parameters.py b/modoboa/lib/migrations/0002_rename_parameters.py index 1127cd699..68adbbb9f 100644 --- a/modoboa/lib/migrations/0002_rename_parameters.py +++ b/modoboa/lib/migrations/0002_rename_parameters.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations APPLICATIONS = [ ("admin", "modoboa_admin"), diff --git a/modoboa/lib/migrations/0003_rename_parameters.py b/modoboa/lib/migrations/0003_rename_parameters.py index be11772ce..7baa563b2 100644 --- a/modoboa/lib/migrations/0003_rename_parameters.py +++ b/modoboa/lib/migrations/0003_rename_parameters.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations APPS = ( ("modoboa_admin", "admin"), diff --git a/modoboa/lib/migrations/0004_auto_20151114_1409.py b/modoboa/lib/migrations/0004_auto_20151114_1409.py index 2804d63ed..5fa5fb82b 100644 --- a/modoboa/lib/migrations/0004_auto_20151114_1409.py +++ b/modoboa/lib/migrations/0004_auto_20151114_1409.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations def move_language_preference(apps, schema_editor): diff --git a/modoboa/limits/migrations/0002_auto_20151114_1518.py b/modoboa/limits/migrations/0002_auto_20151114_1518.py index f54808265..5bff06849 100644 --- a/modoboa/limits/migrations/0002_auto_20151114_1518.py +++ b/modoboa/limits/migrations/0002_auto_20151114_1518.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations class Migration(migrations.Migration): diff --git a/modoboa/limits/migrations/0004_auto_20160413_1312.py b/modoboa/limits/migrations/0004_auto_20160413_1312.py index cc5468074..00253451d 100644 --- a/modoboa/limits/migrations/0004_auto_20160413_1312.py +++ b/modoboa/limits/migrations/0004_auto_20160413_1312.py @@ -1,4 +1,4 @@ -from django.db import migrations, models +from django.db import migrations class Migration(migrations.Migration): diff --git a/modoboa/limits/tests/test_user_limits.py b/modoboa/limits/tests/test_user_limits.py index b5fa2ae00..5fd184b97 100644 --- a/modoboa/limits/tests/test_user_limits.py +++ b/modoboa/limits/tests/test_user_limits.py @@ -288,8 +288,8 @@ class ResellerTestCase(ResourceTestCase): self._create_domain("domain.tld") self._create_account("admin1@domain.tld", role="DomainAdmins") domadmin = User.objects.get(username="admin1@domain.tld") - for l in ["mailboxes", "mailbox_aliases"]: - self.assertEqual(domadmin.userobjectlimit_set.get(name=l).max_value, 0) + for name in ["mailboxes", "mailbox_aliases"]: + self.assertEqual(domadmin.userobjectlimit_set.get(name=name).max_value, 0) def test_domain_admins_limit_from_domain_tpl(self): self.user.userobjectlimit_set.filter(name="domains").update(max_value=3) diff --git a/modoboa/maillog/apps.py b/modoboa/maillog/apps.py index c264e4e2a..92d8d4787 100644 --- a/modoboa/maillog/apps.py +++ b/modoboa/maillog/apps.py @@ -73,4 +73,4 @@ class MaillogConfig(AppConfig): def ready(self): load_maillog_settings() - from . import handlers + from . import handlers # noqa diff --git a/modoboa/maillog/handlers.py b/modoboa/maillog/handlers.py index 57286d2af..0deb2e4ff 100644 --- a/modoboa/maillog/handlers.py +++ b/modoboa/maillog/handlers.py @@ -4,7 +4,6 @@ from django.urls import reverse from django.dispatch import receiver from django.utils.translation import gettext as _ -from modoboa.admin import signals as admin_signals from modoboa.core import signals as core_signals from modoboa.parameters import tools as param_tools diff --git a/modoboa/maillog/lib.py b/modoboa/maillog/lib.py index fa5e04184..c5cb5f90b 100644 --- a/modoboa/maillog/lib.py +++ b/modoboa/maillog/lib.py @@ -18,6 +18,6 @@ def date_to_timestamp(timetuple): try: local = time.strptime(date, fmt) except ValueError: - print >> sys.stderr, "Error: failed to convert date and time" + print("Error: failed to convert date and time", file=sys.stderr) return 0 return int(time.mktime(local)) diff --git a/modoboa/maillog/management/commands/logparser.py b/modoboa/maillog/management/commands/logparser.py index 93cc0e98a..d16ddde55 100644 --- a/modoboa/maillog/management/commands/logparser.py +++ b/modoboa/maillog/management/commands/logparser.py @@ -19,7 +19,6 @@ Predefined events are: """ from datetime import datetime -import io import os import re import sys diff --git a/modoboa/maillog/parser.py b/modoboa/maillog/parser.py index 093b91e56..eb0fee1d0 100644 --- a/modoboa/maillog/parser.py +++ b/modoboa/maillog/parser.py @@ -273,7 +273,7 @@ class MaillogParser: if not parser(log, host, pid, subprog): self._dprint("[parser] ignoring %r log: %r" % (prog, log)) except AttributeError: - self._dprint('[parser] no log handler for "%r": %r'.format(prog, log)) + self._dprint('[parser] no log handler for "%r": %r' % (prog, log)) def parse(self, logfile): """Process the log file.""" diff --git a/modoboa/pdfcredentials/api/v2/views.py b/modoboa/pdfcredentials/api/v2/views.py index 15f7fc581..f1756f4b0 100644 --- a/modoboa/pdfcredentials/api/v2/views.py +++ b/modoboa/pdfcredentials/api/v2/views.py @@ -1,8 +1,5 @@ """PDF Credentials API v2 views.""" -import os - -from django.utils.translation import gettext as _ from django.http import HttpResponse from rest_framework import permissions diff --git a/modoboa/pdfcredentials/apps.py b/modoboa/pdfcredentials/apps.py index 45439ef86..1bce5fa4b 100644 --- a/modoboa/pdfcredentials/apps.py +++ b/modoboa/pdfcredentials/apps.py @@ -35,6 +35,6 @@ class PDFCredentialsConfig(AppConfig): verbose_name = "PDF credentials for Modoboa" def ready(self): - from . import handlers + from . import handlers # noqa load_pdfcredential_settings() diff --git a/modoboa/pdfcredentials/handlers.py b/modoboa/pdfcredentials/handlers.py index c67ca2ec4..1e9ae5ec0 100644 --- a/modoboa/pdfcredentials/handlers.py +++ b/modoboa/pdfcredentials/handlers.py @@ -28,7 +28,7 @@ def password_updated(sender, account, password, created, **kwargs): return try: init_storage_dir() - except InternalError as e: + except InternalError: logger = logging.getLogger("modoboa.admin") logger.error( _( diff --git a/modoboa/pdfcredentials/lib.py b/modoboa/pdfcredentials/lib.py index 72897fac9..84695bbd2 100644 --- a/modoboa/pdfcredentials/lib.py +++ b/modoboa/pdfcredentials/lib.py @@ -74,7 +74,7 @@ def crypt_and_save_to_file(content, filename, length, chunksize=64 * 512): chunk += b" " * (16 - len(chunk) % 16) fp.write(encryptor.update(force_bytes(chunk))) fp.write(encryptor.finalize()) - except FileNotFoundError as e: + except FileNotFoundError: logger = logging.getLogger("modoboa.admin") logger.error( _( diff --git a/modoboa/pdfcredentials/models.py b/modoboa/pdfcredentials/models.py index 71a836239..6b2021999 100644 --- a/modoboa/pdfcredentials/models.py +++ b/modoboa/pdfcredentials/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/modoboa/pdfcredentials/tests/test_lib.py b/modoboa/pdfcredentials/tests/test_lib.py index c66aea3e2..37f4d95c0 100644 --- a/modoboa/pdfcredentials/tests/test_lib.py +++ b/modoboa/pdfcredentials/tests/test_lib.py @@ -2,13 +2,10 @@ import os import shutil -import tempfile -from django.test import override_settings from django.urls import reverse from modoboa.admin import factories -from modoboa.core import models as core_models from modoboa.lib.tests import ModoAPITestCase from modoboa.lib.exceptions import InternalError diff --git a/modoboa/pdfcredentials/tests/test_views.py b/modoboa/pdfcredentials/tests/test_views.py index 96ef17db4..548d9293a 100644 --- a/modoboa/pdfcredentials/tests/test_views.py +++ b/modoboa/pdfcredentials/tests/test_views.py @@ -141,7 +141,7 @@ class EventsTestCase(ModoTestCase): """Test storage directory creation.""" self.set_global_parameter("storage_dir", "/nonexistentdir") with self.assertLogs(logger="modoboa.admin", level="ERROR") as log: - resp = self._create_account("leon@test.com") + self._create_account("leon@test.com") self.assertIn( "ERROR:modoboa.admin:Failed to create PDF_credentials directory. " "Please check the permissions or the path.", diff --git a/modoboa/postfix_autoreply/migrations/0003_move_aliases.py b/modoboa/postfix_autoreply/migrations/0003_move_aliases.py index a45a0d27a..aba8e5c53 100644 --- a/modoboa/postfix_autoreply/migrations/0003_move_aliases.py +++ b/modoboa/postfix_autoreply/migrations/0003_move_aliases.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations def move_aliases(apps, schema_editor): diff --git a/modoboa/postfix_autoreply/migrations/0004_delete_alias.py b/modoboa/postfix_autoreply/migrations/0004_delete_alias.py index 4e23ae3fb..86df2b121 100644 --- a/modoboa/postfix_autoreply/migrations/0004_delete_alias.py +++ b/modoboa/postfix_autoreply/migrations/0004_delete_alias.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations class Migration(migrations.Migration): diff --git a/modoboa/postfix_autoreply/migrations/0005_auto_20151202_1623.py b/modoboa/postfix_autoreply/migrations/0005_auto_20151202_1623.py index eb2c5b0cb..18873c578 100644 --- a/modoboa/postfix_autoreply/migrations/0005_auto_20151202_1623.py +++ b/modoboa/postfix_autoreply/migrations/0005_auto_20151202_1623.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import migrations, models +from django.db import migrations def remove_useless_aliases(apps, schema_editor): diff --git a/modoboa/postfix_autoreply/tests.py b/modoboa/postfix_autoreply/tests.py index 4b252a325..c92e74887 100644 --- a/modoboa/postfix_autoreply/tests.py +++ b/modoboa/postfix_autoreply/tests.py @@ -13,7 +13,7 @@ from django.utils.formats import date_format from modoboa.admin import factories as admin_factories, models as admin_models from modoboa.core.models import User -from modoboa.lib.tests import ModoTestCase, ModoAPITestCase +from modoboa.lib.tests import ModoTestCase from modoboa.transport import models as tr_models from . import factories, models diff --git a/modoboa/relaydomains/migrations/0002_migrate_from_modoboa_admin_relaydomains.py b/modoboa/relaydomains/migrations/0002_migrate_from_modoboa_admin_relaydomains.py index 8b28b733d..bdeae0015 100644 --- a/modoboa/relaydomains/migrations/0002_migrate_from_modoboa_admin_relaydomains.py +++ b/modoboa/relaydomains/migrations/0002_migrate_from_modoboa_admin_relaydomains.py @@ -1,4 +1,4 @@ -from django.db import models, migrations +from django.db import migrations class Migration(migrations.Migration): diff --git a/pyproject.toml b/pyproject.toml index e46718e1e..f7076a334 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,10 +19,10 @@ classifiers = [ "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: OS Independent", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Topic :: Communications :: Email", "Topic :: Internet :: WWW/HTTP", ] @@ -87,7 +87,7 @@ dev = [ "django-debug-toolbar", "pre-commit", "black", - "pylint", + "ruff", "django-extensions", "Werkzeug", "pyOpenSSL"