From 70ce5c57e13ce7a434e341361b6c6002e2b0acf5 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 12 Jul 2026 20:04:45 +0800 Subject: [PATCH 1/6] style: fix black formatting for test_render_adapter.py --- tests/unit/test_render_adapter.py | 48 +++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/tests/unit/test_render_adapter.py b/tests/unit/test_render_adapter.py index 706075a4e..6169d337e 100755 --- a/tests/unit/test_render_adapter.py +++ b/tests/unit/test_render_adapter.py @@ -13,7 +13,6 @@ from unittest.mock import MagicMock, patch import pytest from video_processing.render_adapter import RenderAdapter, RenderAdapterResult - # ── Fixtures ────────────────────────────────────────────────────────────────── @@ -105,7 +104,9 @@ class TestValidatePlan: adapter, mock_plan_repo, _ = _make_adapter(plan=None) mock_plan_repo.get.return_value = None - valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") + valid, errors, warnings, ready_count, total_count = adapter.validate_plan( + "plan_001" + ) assert not valid assert len(errors) == 1 @@ -118,7 +119,9 @@ class TestValidatePlan: plan = FakePlan(id="plan_001", status="editing") adapter, _, mock_clip_repo = _make_adapter(plan=plan, clips=[]) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") + valid, errors, warnings, ready_count, total_count = adapter.validate_plan( + "plan_001" + ) assert not valid assert any("没有任何片段" in e for e in errors) @@ -132,7 +135,9 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") + valid, errors, warnings, ready_count, total_count = adapter.validate_plan( + "plan_001" + ) assert not valid assert any("没有就绪" in e for e in errors) @@ -147,7 +152,9 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") + valid, errors, warnings, ready_count, total_count = adapter.validate_plan( + "plan_001" + ) assert not valid assert any("没有分配素材" in e for e in errors) @@ -161,7 +168,9 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") + valid, errors, warnings, ready_count, total_count = adapter.validate_plan( + "plan_001" + ) assert valid assert len(errors) == 0 @@ -189,7 +198,9 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") + valid, errors, warnings, ready_count, total_count = adapter.validate_plan( + "plan_001" + ) assert valid assert any("pending" in w for w in warnings) @@ -241,8 +252,11 @@ class TestRenderPlan: @patch("video_processing.render_adapter.upload_to_oss") @patch("video_processing.render_adapter.UnifiedRenderService") @patch("video_processing.render_adapter.download_asset") - def test_successful_render(self, mock_download, mock_render_cls, mock_upload, tmp_path): + def test_successful_render( + self, mock_download, mock_render_cls, mock_upload, tmp_path + ): """完整渲染流程成功。""" + # 素材下载成功 def _fake_download(asset_id, local_path): local_path.parent.mkdir(parents=True, exist_ok=True) @@ -263,7 +277,9 @@ class TestRenderPlan: mock_render_cls.return_value = mock_render # 上传成功 - mock_upload.return_value = "https://oss.example.com/rendered/plan_001/job_001.mp4" + mock_upload.return_value = ( + "https://oss.example.com/rendered/plan_001/job_001.mp4" + ) plan = FakePlan(id="plan_001", status="editing") clips = [ @@ -295,6 +311,7 @@ class TestRenderPlan: @patch("video_processing.render_adapter.download_asset") def test_progress_callback(self, mock_download, tmp_path): """进度回调被正确触发。""" + def _fake_download(asset_id, local_path): local_path.parent.mkdir(parents=True, exist_ok=True) local_path.write_bytes(b"fake data") @@ -303,7 +320,9 @@ class TestRenderPlan: mock_download.side_effect = _fake_download # 模拟渲染异常,避免走到最后 - with patch("video_processing.render_adapter.UnifiedRenderService") as mock_render_cls: + with patch( + "video_processing.render_adapter.UnifiedRenderService" + ) as mock_render_cls: mock_render = MagicMock() mock_render.render.side_effect = RuntimeError("render error") mock_render_cls.return_value = mock_render @@ -343,7 +362,9 @@ class TestRenderPlan: mock_download.side_effect = _fake_download - with patch("video_processing.render_adapter.UnifiedRenderService") as mock_render_cls: + with patch( + "video_processing.render_adapter.UnifiedRenderService" + ) as mock_render_cls: mock_render = MagicMock() mock_render.render.return_value = MagicMock( output_path=tmp_path / "out.mp4", @@ -354,7 +375,10 @@ class TestRenderPlan: ) mock_render_cls.return_value = mock_render - with patch("video_processing.render_adapter.upload_to_oss", return_value="https://example.com/out.mp4"): + with patch( + "video_processing.render_adapter.upload_to_oss", + return_value="https://example.com/out.mp4", + ): plan = FakePlan(id="plan_001", status="editing") clips = [ _make_clip("c1", order=0, duration=3.0, asset_id="asset_001.mp4"), -- 2.54.0 From f1ba9f8b649c253e02e0deb8b2c0660656c79c98 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 12 Jul 2026 20:17:33 +0800 Subject: [PATCH 2/6] style: fix black formatting for test_render_adapter.py (line-length=120) --- tests/unit/test_render_adapter.py | 45 ++++++++----------------------- 1 file changed, 11 insertions(+), 34 deletions(-) diff --git a/tests/unit/test_render_adapter.py b/tests/unit/test_render_adapter.py index 6169d337e..6f1e05a8e 100755 --- a/tests/unit/test_render_adapter.py +++ b/tests/unit/test_render_adapter.py @@ -104,9 +104,7 @@ class TestValidatePlan: adapter, mock_plan_repo, _ = _make_adapter(plan=None) mock_plan_repo.get.return_value = None - valid, errors, warnings, ready_count, total_count = adapter.validate_plan( - "plan_001" - ) + valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") assert not valid assert len(errors) == 1 @@ -119,9 +117,7 @@ class TestValidatePlan: plan = FakePlan(id="plan_001", status="editing") adapter, _, mock_clip_repo = _make_adapter(plan=plan, clips=[]) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan( - "plan_001" - ) + valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") assert not valid assert any("没有任何片段" in e for e in errors) @@ -135,9 +131,7 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan( - "plan_001" - ) + valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") assert not valid assert any("没有就绪" in e for e in errors) @@ -152,9 +146,7 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan( - "plan_001" - ) + valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") assert not valid assert any("没有分配素材" in e for e in errors) @@ -168,9 +160,7 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan( - "plan_001" - ) + valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") assert valid assert len(errors) == 0 @@ -198,9 +188,7 @@ class TestValidatePlan: ] adapter, _, _ = _make_adapter(plan=plan, clips=clips) - valid, errors, warnings, ready_count, total_count = adapter.validate_plan( - "plan_001" - ) + valid, errors, warnings, ready_count, total_count = adapter.validate_plan("plan_001") assert valid assert any("pending" in w for w in warnings) @@ -252,9 +240,7 @@ class TestRenderPlan: @patch("video_processing.render_adapter.upload_to_oss") @patch("video_processing.render_adapter.UnifiedRenderService") @patch("video_processing.render_adapter.download_asset") - def test_successful_render( - self, mock_download, mock_render_cls, mock_upload, tmp_path - ): + def test_successful_render(self, mock_download, mock_render_cls, mock_upload, tmp_path): """完整渲染流程成功。""" # 素材下载成功 @@ -277,9 +263,7 @@ class TestRenderPlan: mock_render_cls.return_value = mock_render # 上传成功 - mock_upload.return_value = ( - "https://oss.example.com/rendered/plan_001/job_001.mp4" - ) + mock_upload.return_value = "https://oss.example.com/rendered/plan_001/job_001.mp4" plan = FakePlan(id="plan_001", status="editing") clips = [ @@ -320,9 +304,7 @@ class TestRenderPlan: mock_download.side_effect = _fake_download # 模拟渲染异常,避免走到最后 - with patch( - "video_processing.render_adapter.UnifiedRenderService" - ) as mock_render_cls: + with patch("video_processing.render_adapter.UnifiedRenderService") as mock_render_cls: mock_render = MagicMock() mock_render.render.side_effect = RuntimeError("render error") mock_render_cls.return_value = mock_render @@ -362,9 +344,7 @@ class TestRenderPlan: mock_download.side_effect = _fake_download - with patch( - "video_processing.render_adapter.UnifiedRenderService" - ) as mock_render_cls: + with patch("video_processing.render_adapter.UnifiedRenderService") as mock_render_cls: mock_render = MagicMock() mock_render.render.return_value = MagicMock( output_path=tmp_path / "out.mp4", @@ -375,10 +355,7 @@ class TestRenderPlan: ) mock_render_cls.return_value = mock_render - with patch( - "video_processing.render_adapter.upload_to_oss", - return_value="https://example.com/out.mp4", - ): + with patch("video_processing.render_adapter.upload_to_oss", return_value="https://example.com/out.mp4"): plan = FakePlan(id="plan_001", status="editing") clips = [ _make_clip("c1", order=0, duration=3.0, asset_id="asset_001.mp4"), -- 2.54.0 From 6a89870ec7a7bc8102829e909127bfe6631b8c5c Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 12 Jul 2026 20:26:42 +0800 Subject: [PATCH 3/6] ci: add black fix workflow --- .gitea/workflows/fix-black.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .gitea/workflows/fix-black.yml diff --git a/.gitea/workflows/fix-black.yml b/.gitea/workflows/fix-black.yml new file mode 100644 index 000000000..2143b7ff5 --- /dev/null +++ b/.gitea/workflows/fix-black.yml @@ -0,0 +1,30 @@ +name: Fix Black Formatting + +on: + push: + branches: + - fix/black-format-render-adapter + +jobs: + fix-black: + runs-on: host + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITEA_TOKEN }} + + - name: Install black and fix formatting + run: | + pip install black -q + black tests/unit/test_render_adapter.py + git config user.name "CI Bot" + git config user.email "ci@xiaoxia.local" + git add tests/unit/test_render_adapter.py + if git diff --cached --quiet; then + echo "No changes needed" + else + git commit -m "style: fix black formatting for test_render_adapter.py" + git push origin fix/black-format-render-adapter + fi -- 2.54.0 From c1784f423264fb3b745ae5b554669152b47cf3ec Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 12 Jul 2026 20:31:20 +0800 Subject: [PATCH 4/6] ci: update fix workflow to also fix isort --- .gitea/workflows/fix-black.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/fix-black.yml b/.gitea/workflows/fix-black.yml index 2143b7ff5..4dfd6a584 100644 --- a/.gitea/workflows/fix-black.yml +++ b/.gitea/workflows/fix-black.yml @@ -1,4 +1,4 @@ -name: Fix Black Formatting +name: Fix Black + iSort Formatting on: push: @@ -6,7 +6,7 @@ on: - fix/black-format-render-adapter jobs: - fix-black: + fix-format: runs-on: host steps: - name: Checkout @@ -15,16 +15,24 @@ jobs: fetch-depth: 0 token: ${{ secrets.GITEA_TOKEN }} - - name: Install black and fix formatting + - name: Install and fix formatting run: | - pip install black -q + pip install black isort -q + + # Fix isort issues in the specific files + isort apps/worker/video_processing/render_adapter.py + isort apps/worker/video_processing/__init__.py + isort tests/unit/test_render_adapter.py + + # Also run black to be safe black tests/unit/test_render_adapter.py + git config user.name "CI Bot" git config user.email "ci@xiaoxia.local" - git add tests/unit/test_render_adapter.py + git add -A if git diff --cached --quiet; then echo "No changes needed" else - git commit -m "style: fix black formatting for test_render_adapter.py" + git commit -m "style: fix isort imports + black formatting" git push origin fix/black-format-render-adapter fi -- 2.54.0 From 423342085c95a78e2870937cba1ba3681441e5e2 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sun, 12 Jul 2026 20:32:08 +0800 Subject: [PATCH 5/6] style: fix isort imports + black formatting --- apps/worker/video_processing/__init__.py | 2 +- apps/worker/video_processing/render_adapter.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/worker/video_processing/__init__.py b/apps/worker/video_processing/__init__.py index 7012f2e1c..af9b6b47d 100755 --- a/apps/worker/video_processing/__init__.py +++ b/apps/worker/video_processing/__init__.py @@ -5,8 +5,8 @@ # 共享工具模块(供 editing_modes / generation / edit_plan_generation 等复用) from . import dedup_helpers, ffmpeg_utils, oss_helpers from .processor import VideoProcessor, VideoResult -from .unified_render_service import RenderResult, UnifiedRenderService from .render_adapter import RenderAdapter, RenderAdapterResult +from .unified_render_service import RenderResult, UnifiedRenderService __all__ = [ "VideoProcessor", diff --git a/apps/worker/video_processing/render_adapter.py b/apps/worker/video_processing/render_adapter.py index 8e0635391..69d517ac3 100755 --- a/apps/worker/video_processing/render_adapter.py +++ b/apps/worker/video_processing/render_adapter.py @@ -20,6 +20,11 @@ from pathlib import Path from typing import Any, Callable from sqlalchemy.orm import Session +from video_processing.oss_helpers import download_asset, upload_to_oss +from video_processing.unified_render_service import ( + RenderResult, + UnifiedRenderService, +) from packages.adapters.sqlalchemy_impl.edit_plan_clip_repository import ( SQLAlchemyEditPlanClipRepository, @@ -29,11 +34,6 @@ from packages.adapters.sqlalchemy_impl.edit_plan_repository import ( ) from packages.domain.edit_plan import EditPlan, EditPlanStatus from packages.domain.edit_plan_clip import EditPlanClip, EditPlanClipStatus -from video_processing.oss_helpers import download_asset, upload_to_oss -from video_processing.unified_render_service import ( - RenderResult, - UnifiedRenderService, -) logger = logging.getLogger(__name__) -- 2.54.0 From b430c6dfe2b0b17b0fd8ca06f6252220ffeca663 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 12 Jul 2026 20:45:34 +0800 Subject: [PATCH 6/6] chore: remove temporary fix workflow --- .gitea/workflows/fix-black.yml | 38 ---------------------------------- 1 file changed, 38 deletions(-) delete mode 100644 .gitea/workflows/fix-black.yml diff --git a/.gitea/workflows/fix-black.yml b/.gitea/workflows/fix-black.yml deleted file mode 100644 index 4dfd6a584..000000000 --- a/.gitea/workflows/fix-black.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Fix Black + iSort Formatting - -on: - push: - branches: - - fix/black-format-render-adapter - -jobs: - fix-format: - runs-on: host - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.GITEA_TOKEN }} - - - name: Install and fix formatting - run: | - pip install black isort -q - - # Fix isort issues in the specific files - isort apps/worker/video_processing/render_adapter.py - isort apps/worker/video_processing/__init__.py - isort tests/unit/test_render_adapter.py - - # Also run black to be safe - black tests/unit/test_render_adapter.py - - git config user.name "CI Bot" - git config user.email "ci@xiaoxia.local" - git add -A - if git diff --cached --quiet; then - echo "No changes needed" - else - git commit -m "style: fix isort imports + black formatting" - git push origin fix/black-format-render-adapter - fi -- 2.54.0