refactor: modernize code quality tooling with Ruff

- Replace black, isort, and flake8 with Ruff (all-in-one linter and formatter)
- Add comprehensive pyproject.toml configuration
- Simplify Makefile code quality targets
- Configure exclusions for venv/.venv in pyproject.toml
- Auto-fix 1,359 linting issues across codebase

Benefits:
- Much faster builds (Ruff is written in Rust)
- Single tool replaces multiple tools
- More comprehensive rule set (UP, B, C4, SIM, PIE, RET, Q)
- All configuration centralized in pyproject.toml
- Better import sorting and formatting consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-28 19:37:38 +01:00
parent 21c13ca39b
commit 238c1ec9b8
169 changed files with 2183 additions and 1784 deletions

View File

@@ -17,10 +17,12 @@ import pytest
from fastapi import HTTPException, Request
from sqlalchemy.orm import Session
from middleware.vendor_context import (VendorContextManager,
VendorContextMiddleware,
get_current_vendor,
require_vendor_context)
from middleware.vendor_context import (
VendorContextManager,
VendorContextMiddleware,
get_current_vendor,
require_vendor_context,
)
@pytest.mark.unit
@@ -197,9 +199,7 @@ class TestVendorContextManager:
mock_vendor.is_active = True
mock_vendor_domain.vendor = mock_vendor
mock_db.query.return_value.filter.return_value.filter.return_value.filter.return_value.first.return_value = (
mock_vendor_domain
)
mock_db.query.return_value.filter.return_value.filter.return_value.filter.return_value.first.return_value = mock_vendor_domain
context = {"detection_method": "custom_domain", "domain": "customdomain1.com"}
@@ -216,9 +216,7 @@ class TestVendorContextManager:
mock_vendor.is_active = False
mock_vendor_domain.vendor = mock_vendor
mock_db.query.return_value.filter.return_value.filter.return_value.filter.return_value.first.return_value = (
mock_vendor_domain
)
mock_db.query.return_value.filter.return_value.filter.return_value.filter.return_value.first.return_value = mock_vendor_domain
context = {"detection_method": "custom_domain", "domain": "customdomain1.com"}
@@ -229,9 +227,7 @@ class TestVendorContextManager:
def test_get_vendor_from_custom_domain_not_found(self):
"""Test custom domain not found in database."""
mock_db = Mock(spec=Session)
mock_db.query.return_value.filter.return_value.filter.return_value.filter.return_value.first.return_value = (
None
)
mock_db.query.return_value.filter.return_value.filter.return_value.filter.return_value.first.return_value = None
context = {"detection_method": "custom_domain", "domain": "nonexistent.com"}
@@ -245,9 +241,7 @@ class TestVendorContextManager:
mock_vendor = Mock()
mock_vendor.is_active = True
mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = (
mock_vendor
)
mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = mock_vendor
context = {"detection_method": "subdomain", "subdomain": "vendor1"}
@@ -261,9 +255,7 @@ class TestVendorContextManager:
mock_vendor = Mock()
mock_vendor.is_active = True
mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = (
mock_vendor
)
mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = mock_vendor
context = {"detection_method": "path", "subdomain": "vendor1"}
@@ -285,9 +277,7 @@ class TestVendorContextManager:
mock_vendor = Mock()
mock_vendor.is_active = True
mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = (
mock_vendor
)
mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = mock_vendor
context = {"detection_method": "subdomain", "subdomain": "VENDOR1"} # Uppercase
@@ -533,16 +523,24 @@ class TestVendorContextMiddleware:
mock_db = MagicMock()
with patch.object(
VendorContextManager, "detect_vendor_context", return_value=vendor_context
), patch.object(
VendorContextManager, "get_vendor_from_context", return_value=mock_vendor
), patch.object(
VendorContextManager, "extract_clean_path", return_value="/shop/products"
), patch(
"middleware.vendor_context.get_db", return_value=iter([mock_db])
with (
patch.object(
VendorContextManager,
"detect_vendor_context",
return_value=vendor_context,
),
patch.object(
VendorContextManager,
"get_vendor_from_context",
return_value=mock_vendor,
),
patch.object(
VendorContextManager,
"extract_clean_path",
return_value="/shop/products",
),
patch("middleware.vendor_context.get_db", return_value=iter([mock_db])),
):
await middleware.dispatch(request, call_next)
assert request.state.vendor is mock_vendor
@@ -566,14 +564,17 @@ class TestVendorContextMiddleware:
mock_db = MagicMock()
with patch.object(
VendorContextManager, "detect_vendor_context", return_value=vendor_context
), patch.object(
VendorContextManager, "get_vendor_from_context", return_value=None
), patch(
"middleware.vendor_context.get_db", return_value=iter([mock_db])
with (
patch.object(
VendorContextManager,
"detect_vendor_context",
return_value=vendor_context,
),
patch.object(
VendorContextManager, "get_vendor_from_context", return_value=None
),
patch("middleware.vendor_context.get_db", return_value=iter([mock_db])),
):
await middleware.dispatch(request, call_next)
assert request.state.vendor is None