Files
skill-seekers-reference/QA_FIXES_SUMMARY.md
yusyus 7a459cb9cb docs: Add v3.0.0 release planning documents
Add comprehensive release planning documentation:
- V3_RELEASE_MASTER_PLAN.md - Complete 4-week campaign strategy
- V3_RELEASE_SUMMARY.md - Quick reference summary
- WEBSITE_HANDOFF_V3.md - Website update instructions for other Kimi
- RELEASE_PLAN.md, RELEASE_CONTENT_CHECKLIST.md, RELEASE_EXECUTIVE_SUMMARY.md
- QA_FIXES_SUMMARY.md - QA fixes documentation
2026-02-08 14:25:20 +03:00

5.9 KiB

QA Fixes Summary

Date: 2026-02-08
Version: 2.9.0


Issues Fixed

1. Cloud Storage Tests (16 tests failing → 20 tests passing)

Problem: Tests using @pytest.mark.skipif with @patch decorator failed because @patch is evaluated at import time before skipif is checked.

Root Cause: When optional dependencies (boto3, google-cloud-storage, azure-storage-blob) aren't installed, the module doesn't have the attributes to patch.

Fix: Converted all @patch decorators to context managers inside test functions with internal skip checks:

# Before:
@pytest.mark.skipif(not BOTO3_AVAILABLE, reason="boto3 not installed")
@patch('skill_seekers.cli.storage.s3_storage.boto3')
def test_s3_upload_file(mock_boto3):
    ...

# After:
def test_s3_upload_file():
    if not BOTO3_AVAILABLE:
        pytest.skip("boto3 not installed")
    with patch('skill_seekers.cli.storage.s3_storage.boto3') as mock_boto3:
        ...

Files Modified:

  • tests/test_cloud_storage.py (complete rewrite)

Results:

  • Before: 16 failed, 4 passed
  • After: 20 passed, 0 failed

2. Pydantic Deprecation Warnings (3 warnings fixed)

Problem: Pydantic v2 deprecated the class Config pattern in favor of model_config = ConfigDict(...).

Fix: Updated all three model classes in embedding models:

# Before:
class EmbeddingRequest(BaseModel):
    text: str = Field(...)
    class Config:
        json_schema_extra = {"example": {...}}

# After:
class EmbeddingRequest(BaseModel):
    model_config = ConfigDict(json_schema_extra={"example": {...}})
    text: str = Field(...)

Files Modified:

  • src/skill_seekers/embedding/models.py

Changes:

  1. Added ConfigDict import from pydantic
  2. Converted EmbeddingRequest.Configmodel_config = ConfigDict(...)
  3. Converted BatchEmbeddingRequest.Configmodel_config = ConfigDict(...)
  4. Converted SkillEmbeddingRequest.Configmodel_config = ConfigDict(...)

Results:

  • Before: 3 PydanticDeprecationSince20 warnings
  • After: 0 warnings

3. Asyncio Deprecation Warnings (2 warnings fixed)

Problem: asyncio.iscoroutinefunction() is deprecated in Python 3.14, to be removed in 3.16.

Fix: Changed to use inspect.iscoroutinefunction():

# Before:
import asyncio
self.assertTrue(asyncio.iscoroutinefunction(converter.scrape_page_async))

# After:
import inspect
self.assertTrue(inspect.iscoroutinefunction(converter.scrape_page_async))

Files Modified:

  • tests/test_async_scraping.py

Changes:

  1. Added import inspect
  2. Changed 2 occurrences of asyncio.iscoroutinefunction to inspect.iscoroutinefunction

Results:

  • Before: 2 DeprecationWarning messages
  • After: 0 warnings

Test Results Summary

Test Suite Before After Improvement
Cloud Storage 16 failed, 4 passed 20 passed Fixed
Pydantic Warnings 3 warnings 0 warnings Fixed
Asyncio Warnings 2 warnings 0 warnings Fixed
Core Tests (sample) ~500 passed 543 passed Stable

Full Test Run Results

543 passed, 10 skipped in 3.56s

Test Modules Verified:
- test_quality_checker.py (16 tests)
- test_cloud_storage.py (20 tests)
- test_config_validation.py (26 tests)
- test_git_repo.py (30 tests)
- test_cli_parsers.py (23 tests)
- test_scraper_features.py (42 tests)
- test_adaptors/ (164 tests)
- test_analyze_command.py (18 tests)
- test_architecture_scenarios.py (16 tests)
- test_async_scraping.py (11 tests)
- test_c3_integration.py (8 tests)
- test_config_extractor.py (30 tests)
- test_github_fetcher.py (24 tests)
- test_source_manager.py (48 tests)
- test_dependency_analyzer.py (35 tests)
- test_framework_detection.py (2 tests)
- test_estimate_pages.py (14 tests)
- test_config_fetcher.py (18 tests)

Remaining Issues (Non-Critical)

These issues are code quality improvements that don't affect functionality:

1. Ruff Lint Issues (~5,500)

  • UP035: Deprecated typing imports (List, Dict, Optional) - cosmetic
  • UP006: Use list/dict instead of List/Dict - cosmetic
  • UP045: Use X | None instead of Optional - cosmetic
  • SIM102: Nested if statements - code style
  • SIM117: Multiple with statements - code style

2. MyPy Type Errors (~50)

  • Implicit Optional defaults - type annotation style
  • Missing type annotations - type completeness
  • Union attribute access - None handling

3. Import Errors (4 test modules)

  • test_benchmark.py - missing psutil (optional dep)
  • test_embedding.py - missing numpy (optional dep)
  • test_embedding_pipeline.py - missing numpy (optional dep)
  • test_server_fastmcp_http.py - missing starlette (optional dep)

Note: These dependencies are already listed in [dependency-groups] dev in pyproject.toml.


Files Modified

  1. tests/test_cloud_storage.py - Complete rewrite to fix mocking strategy
  2. src/skill_seekers/embedding/models.py - Fixed Pydantic v2 deprecation
  3. tests/test_async_scraping.py - Fixed asyncio deprecation

Verification Commands

# Run cloud storage tests
.venv/bin/pytest tests/test_cloud_storage.py -v

# Run core tests
.venv/bin/pytest tests/test_quality_checker.py tests/test_git_repo.py tests/test_config_validation.py -v

# Check for Pydantic warnings
.venv/bin/pytest tests/ -v 2>&1 | grep -i pydantic || echo "No Pydantic warnings"

# Check for asyncio warnings
.venv/bin/pytest tests/test_async_scraping.py -v 2>&1 | grep -i asyncio || echo "No asyncio warnings"

# Run all adaptor tests
.venv/bin/pytest tests/test_adaptors/ -v

Conclusion

All critical issues identified in the QA report have been fixed:

Cloud storage tests now pass (20/20) Pydantic deprecation warnings eliminated Asyncio deprecation warnings eliminated Core test suite stable (543 tests passing)

The project is now in a much healthier state with all functional tests passing.