fix(lint): pin ruff version, add pre-commit hook, fix all lint errors
Some checks failed
CI / ruff (push) Successful in 9s
CI / architecture (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / audit (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / pytest (push) Has been cancelled

- Pin ruff==0.8.4 in requirements-dev.txt (was >=0.8.4, CI got newer
  version with different import sorting rules)
- Add ruff to .pre-commit-config.yaml with --fix to auto-sort imports
  on commit (prevents PyCharm import reordering from reaching CI)
- Fix I001 import sorting in 6 files
- Fix F401 unused import (sqlalchemy.Numeric in subscription.py)
- Fix noqa false positive in validate_architecture.py comment

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 21:52:41 +01:00
parent 9c27fa02b0
commit 531487f5c9
11 changed files with 31 additions and 29 deletions

View File

@@ -29,15 +29,9 @@ repos:
- id: check-merge-conflict
- id: debug-statements
# Python formatting (optional - uncomment if you want)
# - repo: https://github.com/psf/black
# rev: 23.12.1
# hooks:
# - id: black
# language_version: python3
# Python import sorting (optional)
# - repo: https://github.com/pycqa/isort
# rev: 5.13.2
# hooks:
# - id: isort
# Ruff - linting and import sorting (replaces black + isort)
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.4
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]

View File

@@ -21,7 +21,10 @@ from sqlalchemy.orm import Session
from app.modules.catalog.models import Product # IMPORT-002
from app.modules.customers.models.customer import Customer # IMPORT-002
from app.modules.inventory.models import Inventory # IMPORT-002
from app.modules.marketplace.models import MarketplaceImportJob, MarketplaceProduct # IMPORT-002
from app.modules.marketplace.models import ( # IMPORT-002
MarketplaceImportJob,
MarketplaceProduct,
)
from app.modules.orders.models import Order # IMPORT-002
from app.modules.tenancy.exceptions import (
AdminOperationException,

View File

@@ -22,7 +22,6 @@ from sqlalchemy import (
ForeignKey,
Index,
Integer,
Numeric,
String,
Text,
)

View File

@@ -21,8 +21,6 @@ from app.modules.billing.schemas.billing import (
CancelRequest,
CancelResponse,
CategoryListResponse,
ChangeTierRequest as BillingChangeTierRequest,
ChangeTierResponse as BillingChangeTierResponse,
# Checkout & Portal schemas
CheckoutRequest,
CheckoutResponse,
@@ -56,12 +54,18 @@ from app.modules.billing.schemas.billing import (
SubscriptionTierListResponse,
SubscriptionTierResponse,
SubscriptionTierUpdate,
TierListResponse,
TierResponse,
# Subscription Tier Admin schemas
TierFeatureLimitEntry,
TierListResponse,
TierResponse,
UpcomingInvoiceResponse,
)
from app.modules.billing.schemas.billing import (
ChangeTierRequest as BillingChangeTierRequest,
)
from app.modules.billing.schemas.billing import (
ChangeTierResponse as BillingChangeTierResponse,
)
from app.modules.billing.schemas.subscription import (
ChangeTierRequest,
ChangeTierResponse,

View File

@@ -32,7 +32,10 @@ from app.modules.messaging.exceptions import (
ConversationClosedException,
ConversationNotFoundException,
)
from app.modules.messaging.models.message import ConversationType, ParticipantType # API-007
from app.modules.messaging.models.message import ( # API-007
ConversationType,
ParticipantType,
)
from app.modules.messaging.schemas import (
ConversationDetailResponse,
ConversationListResponse,

View File

@@ -5,10 +5,9 @@ Monitoring module database models.
Provides monitoring-related models including capacity snapshots.
"""
from app.modules.monitoring.models.capacity_snapshot import CapacitySnapshot
# Admin notification and logging models
from app.modules.messaging.models import AdminNotification
from app.modules.monitoring.models.capacity_snapshot import CapacitySnapshot
from app.modules.tenancy.models import PlatformAlert
__all__ = [

View File

@@ -9,14 +9,14 @@ from app.modules.monitoring.services.admin_audit_service import (
AdminAuditService,
admin_audit_service,
)
from app.modules.monitoring.services.capacity_forecast_service import (
CapacityForecastService,
capacity_forecast_service,
)
from app.modules.monitoring.services.background_tasks_service import (
BackgroundTasksService,
background_tasks_service,
)
from app.modules.monitoring.services.capacity_forecast_service import (
CapacityForecastService,
capacity_forecast_service,
)
from app.modules.monitoring.services.log_service import (
LogService,
log_service,

View File

@@ -26,11 +26,11 @@ from fastapi import Depends, FastAPI, HTTPException, Request, Response
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse, HTMLResponse, RedirectResponse
from fastapi.staticfiles import StaticFiles
from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware
from sentry_sdk.integrations.fastapi import FastApiIntegration
from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration
from sqlalchemy import text
from sqlalchemy.orm import Session
from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware
from app.api.main import api_router
from app.core.config import settings

View File

@@ -5,7 +5,7 @@ alembic>=1.14.0
# Linting and formatting tools
black>=24.10.0
isort>=5.13.2
ruff>=0.8.4 # Modern alternative to flake8, faster and Python 3.13 compatible
ruff==0.8.4 # Pinned — must match pre-commit hook and local version
mypy>=1.13.0
# Optional: More advanced linting (if you prefer flake8 over ruff)

View File

@@ -4663,7 +4663,7 @@ class ArchitectureValidator:
if imported_module == module_name:
continue
# Skip suppression comments (# IMPORT-002 or # noqa: import-002)
# Skip suppression comments (# IMPORT-002)
if "import-002" in line.lower():
continue

View File

@@ -26,8 +26,8 @@ from main import app
from tests.integration.middleware.middleware_test_routes import (
admin_router,
api_router,
storefront_router,
store_router,
storefront_router,
)
from tests.integration.middleware.middleware_test_routes import (
router as test_router,