chore: ruff lint 修复 + 第一优先级全部完成
This commit is contained in:
+2
-2
@@ -1,11 +1,11 @@
|
||||
"""认证与速率限制测试."""
|
||||
import time
|
||||
import threading
|
||||
import time
|
||||
|
||||
import pytest
|
||||
from fastapi import HTTPException
|
||||
|
||||
from src.server.auth import verify_api_key, RateLimiter
|
||||
from src.server.auth import RateLimiter, verify_api_key
|
||||
|
||||
|
||||
class TestVerifyApiKey:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
"""CLI 命令测试."""
|
||||
from typer.testing import CliRunner
|
||||
|
||||
from src.cli.main import app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
"""配置加载模块测试."""
|
||||
import os
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from src.core.config import AppConfig, EmbedConfig, ChunkConfig, load_config
|
||||
from src.core.config import AppConfig, EmbedConfig, load_config
|
||||
|
||||
|
||||
class TestEmbedConfig:
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
"""数据库层测试."""
|
||||
import gc
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
"""AppState 和依赖注入测试."""
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
from src.core.config import load_config
|
||||
from src.server.deps import AppState
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,12 @@ import pytest
|
||||
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.embedder import (
|
||||
LocalEmbedder, OpenAIEmbedder, DashscopeEmbedder,
|
||||
create_embedder, batch_embed, SUPPORTED_PROVIDERS,
|
||||
SUPPORTED_PROVIDERS,
|
||||
DashscopeEmbedder,
|
||||
LocalEmbedder,
|
||||
OpenAIEmbedder,
|
||||
batch_embed,
|
||||
create_embedder,
|
||||
)
|
||||
|
||||
|
||||
|
||||
+5
-14
@@ -4,8 +4,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from src.core.splitters import MarkdownSplitter
|
||||
from src.core.ingest import DocumentIngestor
|
||||
from src.core.splitters import MarkdownSplitter
|
||||
|
||||
|
||||
class TestMarkdownSplitter:
|
||||
@@ -122,7 +122,6 @@ class TestIngestorIntegration:
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
|
||||
db = VectorDB(persist_dir=str(tmp_path))
|
||||
embedder = create_embedder(EmbedConfig(mode="local"))
|
||||
@@ -137,13 +136,12 @@ class TestIngestorIntegration:
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
|
||||
db = VectorDB(persist_dir=str(tmp_path))
|
||||
embedder = create_embedder(EmbedConfig(mode="local"))
|
||||
ingestor = DocumentIngestor(db, embedder, "test_dedup")
|
||||
|
||||
c1 = ingestor.ingest_content("# A", "dup.md")
|
||||
ingestor.ingest_content("# A", "dup.md")
|
||||
c2 = ingestor.ingest_content("# B", "dup.md")
|
||||
assert ingestor.collection.count() == c2
|
||||
|
||||
@@ -156,7 +154,6 @@ class TestIngestFile:
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
|
||||
md_file = tmp_path / "hello.md"
|
||||
md_file.write_text("# 测试\n这是测试内容。", encoding="utf-8")
|
||||
@@ -174,7 +171,6 @@ class TestIngestFile:
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
|
||||
txt_file = tmp_path / "notes.txt"
|
||||
txt_file.write_text("这是一段纯文本内容。\n\n第二段内容在这里。", encoding="utf-8")
|
||||
@@ -195,7 +191,6 @@ class TestIngestDirectory:
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
|
||||
(tmp_path / "a.md").write_text("# A\n内容 A", encoding="utf-8")
|
||||
(tmp_path / "b.txt").write_text("内容 B", encoding="utf-8")
|
||||
@@ -213,7 +208,6 @@ class TestIngestDirectory:
|
||||
from src.core.config import EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
|
||||
db = VectorDB(persist_dir=str(tmp_path / "db"))
|
||||
embedder = create_embedder(EmbedConfig(mode="local"))
|
||||
@@ -228,10 +222,9 @@ class TestIncrementalIngest:
|
||||
|
||||
def test_ingest_file_incremental_skips_unchanged(self, tmp_path):
|
||||
"""增量模式: 未修改的文件跳过入库."""
|
||||
from src.core.config import EmbedConfig, ChunkConfig
|
||||
from src.core.config import ChunkConfig, EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
from src.core.file_tracker import FileTracker
|
||||
|
||||
file = tmp_path / "stable.md"
|
||||
@@ -251,10 +244,9 @@ class TestIncrementalIngest:
|
||||
|
||||
def test_ingest_file_incremental_reingests_modified(self, tmp_path):
|
||||
"""增量模式: 修改后的文件重新入库."""
|
||||
from src.core.config import EmbedConfig, ChunkConfig
|
||||
from src.core.config import ChunkConfig, EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
from src.core.file_tracker import FileTracker
|
||||
|
||||
file = tmp_path / "changing.md"
|
||||
@@ -275,10 +267,9 @@ class TestIncrementalIngest:
|
||||
|
||||
def test_ingest_file_force_mode_always_reingests(self, tmp_path):
|
||||
"""force=True 时始终重新入库(忽略 tracker)."""
|
||||
from src.core.config import EmbedConfig, ChunkConfig
|
||||
from src.core.config import ChunkConfig, EmbedConfig
|
||||
from src.core.db import VectorDB
|
||||
from src.core.embedder import create_embedder
|
||||
from src.core.ingest import DocumentIngestor
|
||||
from src.core.file_tracker import FileTracker
|
||||
|
||||
file = tmp_path / "force.md"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
"""重排序器测试."""
|
||||
import pytest
|
||||
|
||||
from src.core.reranker import Reranker
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
"""is_safe_path 路径遍历防护测试."""
|
||||
import pytest
|
||||
from src.core.security import is_safe_path
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
"""Splitter 注册表和 TextSplitter 测试."""
|
||||
import pytest
|
||||
from src.core.splitters import TextSplitter, MarkdownSplitter, get_splitter, register_splitter, SUPPORTED_SUFFIXES
|
||||
from src.core.splitters import (
|
||||
SUPPORTED_SUFFIXES,
|
||||
MarkdownSplitter,
|
||||
TextSplitter,
|
||||
get_splitter,
|
||||
register_splitter,
|
||||
)
|
||||
|
||||
|
||||
class TestTextSplitter:
|
||||
|
||||
@@ -28,9 +28,10 @@ class TestEPUBSplitter:
|
||||
|
||||
def test_split_simple_epub(self, tmp_path):
|
||||
"""用 ebooklib 创建一个简单 EPUB 并测试分块."""
|
||||
from src.core.splitters.epub import EPUBSplitter
|
||||
from ebooklib import epub
|
||||
|
||||
from src.core.splitters.epub import EPUBSplitter
|
||||
|
||||
epub_path = tmp_path / "test.epub"
|
||||
|
||||
book = epub.EpubBook()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
"""MarkdownSplitter 边界测试."""
|
||||
import pytest
|
||||
|
||||
from src.core.splitters import MarkdownSplitter
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""PDFSplitter 测试."""
|
||||
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
|
||||
pymupdf = pytest.importorskip("fitz", reason="pymupdf 未安装")
|
||||
|
||||
@@ -10,9 +10,10 @@ class TestPDFSplitter:
|
||||
|
||||
def test_split_simple_pdf(self, tmp_path):
|
||||
"""用 pymupdf 创建一个简单 PDF 并测试分块."""
|
||||
from src.core.splitters.pdf import PDFSplitter
|
||||
import fitz
|
||||
|
||||
from src.core.splitters.pdf import PDFSplitter
|
||||
|
||||
pdf_path = tmp_path / "test.pdf"
|
||||
doc = fitz.open()
|
||||
# 插入纯 ASCII 文本避免 CJK 字体编码问题
|
||||
@@ -29,9 +30,10 @@ class TestPDFSplitter:
|
||||
|
||||
def test_empty_pdf(self, tmp_path):
|
||||
"""空 PDF(有页但无文字)返回空列表."""
|
||||
from src.core.splitters.pdf import PDFSplitter
|
||||
import fitz
|
||||
|
||||
from src.core.splitters.pdf import PDFSplitter
|
||||
|
||||
pdf_path = tmp_path / "empty.pdf"
|
||||
doc = fitz.open()
|
||||
doc.new_page() # pymupdf 必须有至少一页才能保存
|
||||
|
||||
Reference in New Issue
Block a user