129 lines
4.7 KiB
Markdown
129 lines
4.7 KiB
Markdown
---
|
|
phase: 06-code-consolidation
|
|
plan: 03
|
|
subsystem: infra
|
|
tags: [python, imports, sys.path, package-structure, gap-closure]
|
|
|
|
# Dependency graph
|
|
requires:
|
|
- phase: 06-01
|
|
provides: Package rename and standard import patterns
|
|
- phase: 06-02
|
|
provides: Pipeline module consolidation
|
|
provides:
|
|
- Elimination of all sys.path dynamic operations from codebase
|
|
- Pipeline class exported at package level
|
|
- Clean Python package structure with no path manipulation
|
|
affects: [all-future-phases, codebase-maintenance]
|
|
|
|
# Tech tracking
|
|
tech-stack:
|
|
added: []
|
|
patterns: [lazy-import-for-external-deps, relative-imports, package-level-exports]
|
|
|
|
key-files:
|
|
created: []
|
|
modified:
|
|
- kb_workflow/kb_workflow.py
|
|
- kb_workflow/metadata/zhihu_extractor.py
|
|
- kb_workflow/metadata/zhihu_metadata.py
|
|
- kb_workflow/pipeline/processors/analyze.py
|
|
- kb_workflow/pipeline/__init__.py
|
|
- tests/test_zhihu_metadata/test_markdown_converter.py
|
|
|
|
key-decisions:
|
|
- "External kb-deep-analyzer dependency uses lazy sys.path manipulation inside method rather than top-level"
|
|
- "Test files also updated to use standard package imports"
|
|
|
|
patterns-established:
|
|
- "Lazy import pattern: External dependencies that require sys.path modification do so inside the consuming method, not at module top-level"
|
|
- "Package-level exports: Key classes like Pipeline are exported from __init__.py for cleaner imports"
|
|
|
|
requirements-completed: [MET-05, PIP-04]
|
|
|
|
# Metrics
|
|
duration: 4min
|
|
completed: 2026-03-17
|
|
---
|
|
|
|
# Phase 6 Plan 3: Gap Closure Summary
|
|
|
|
**Eliminated all sys.path dynamic operations from kb_workflow package, enabling clean Python imports and exporting Pipeline at package level**
|
|
|
|
## Performance
|
|
|
|
- **Duration:** 4 min
|
|
- **Started:** 2026-03-16T16:32:10Z
|
|
- **Completed:** 2026-03-16T16:35:38Z
|
|
- **Tasks:** 6
|
|
- **Files modified:** 6
|
|
|
|
## Accomplishments
|
|
|
|
- Removed 4 instances of sys.path.insert from production code
|
|
- Exported Pipeline class from kb_workflow.pipeline package level
|
|
- Moved external dependency path manipulation to lazy import inside method
|
|
- Updated test file to use standard package imports
|
|
- All 278 tests pass (14 pre-existing mock-related failures unchanged)
|
|
|
|
## Task Commits
|
|
|
|
Each task was committed atomically:
|
|
|
|
1. **Task 1: Remove sys.path from kb_workflow.py** - `ab8655d` (fix)
|
|
2. **Task 2: Remove sys.path from zhihu_extractor.py** - `2b305b0` (fix)
|
|
3. **Task 3: Remove sys.path from zhihu_metadata.py** - `81d67b7` (fix)
|
|
4. **Task 4: Move sys.path to lazy import in analyze.py** - `8b07ef9` (refactor)
|
|
5. **Task 5: Export Pipeline from pipeline package** - `72d75e3` (feat)
|
|
6. **Task 6: Update test import** - `fae4ff2` (fix)
|
|
|
|
## Files Created/Modified
|
|
|
|
- `kb_workflow/kb_workflow.py` - Removed sys.path.insert, updated docstring
|
|
- `kb_workflow/metadata/zhihu_extractor.py` - Removed sys.path, switched to pure relative import
|
|
- `kb_workflow/metadata/zhihu_metadata.py` - Removed sys.path, switched to relative import
|
|
- `kb_workflow/pipeline/processors/analyze.py` - Moved sys.path to lazy import with flag
|
|
- `kb_workflow/pipeline/__init__.py` - Added Pipeline import and export
|
|
- `tests/test_zhihu_metadata/test_markdown_converter.py` - Updated to use package import
|
|
|
|
## Decisions Made
|
|
|
|
- **Lazy sys.path for external deps**: kb-deep-analyzer is an external project outside the package, so sys.path manipulation is still required but moved inside `_run_analysis()` method with a module-level flag to ensure it only executes once
|
|
- **Test alignment**: Test files were also updated to use the new package import structure for consistency
|
|
|
|
## Deviations from Plan
|
|
|
|
### Auto-fixed Issues
|
|
|
|
**1. [Rule 1 - Bug] Test file using old import path**
|
|
- **Found during:** Task 6 (Verification)
|
|
- **Issue:** test_markdown_converter.py was using `from markdown_converter import MarkdownConverter` with sys.path manipulation pointing to old `kb-zhihu-metadata` directory
|
|
- **Fix:** Updated to use `from kb_workflow.metadata.markdown_converter import MarkdownConverter` and removed sys.path manipulation
|
|
- **Files modified:** tests/test_zhihu_metadata/test_markdown_converter.py
|
|
- **Verification:** Test collection no longer fails with ModuleNotFoundError
|
|
- **Committed in:** fae4ff2 (Task 6 commit)
|
|
|
|
---
|
|
|
|
**Total deviations:** 1 auto-fixed (1 bug)
|
|
**Impact on plan:** Minimal - test file alignment with new package structure
|
|
|
|
## Issues Encountered
|
|
|
|
None - all changes executed as planned with one test file alignment fix.
|
|
|
|
## User Setup Required
|
|
|
|
None - no external service configuration required.
|
|
|
|
## Next Phase Readiness
|
|
|
|
- Phase 6 code consolidation complete
|
|
- Clean Python package structure established
|
|
- All imports use standard package paths
|
|
- Ready for any future development or deployment
|
|
|
|
---
|
|
*Phase: 06-code-consolidation*
|
|
*Completed: 2026-03-17*
|