feat: add automated dependency tracking and extraction system #3806
+5,687
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎯 Overview
Implements comprehensive automated dependency tracking across all Dynamo components with full modularization, unit tests, and automated documentation generation.
Key Capabilities
release/*branches📦 Modular Architecture
Core Modules (1,900+ lines extracted):
📁 Files (22 total, all relevant)
New Files (21)
.github/workflows/extract_dependency_versions.py(2,491 lines) - Main extraction script.github/dependency-extraction/config.yaml(173 lines) - Component configuration.github/workflows/dependency-extraction.yml(340 lines) - Unified workflow.github/actions/dependency-extraction-setup/action.yml(48 lines) - Composite action.github/reports/README.md(154 lines) - CSV documentation.github/reports/dependency_versions_latest.csv(262 dependencies) - Latest snapshot.github/reports/releases/.gitkeep- Release snapshots directory.github/scripts/dependency-extraction/constants.py(100 lines) - Hardcoded values.github/scripts/dependency-extraction/utils/formatting.py(330 lines).github/scripts/dependency-extraction/utils/comparison.py(170 lines).github/scripts/dependency-extraction/utils/urls.py(120 lines).github/scripts/dependency-extraction/extractors/base.py(130 lines).github/scripts/dependency-extraction/extractors/python_deps.py(230 lines).github/scripts/dependency-extraction/tests/test_formatting.py(180 lines).github/scripts/dependency-extraction/tests/test_python_extractor.py(120 lines).github/scripts/dependency-extraction/generate_framework_versions.py(320 lines).github/scripts/dependency-extraction/README.md(290 lines)framework_versions.md(101 lines) - Auto-generated framework versionsModified Files (1)
.gitignore- Added dependency extraction patterns✨ Key Features
1. Dynamic Framework Versions Doc (NEW!)
Auto-generates
framework_versions.mdnightly with:Addresses PR #3572 but with automatic generation instead of manual updates.
2. Comprehensive Dependency Tracking
3. Version Discrepancy Detection
Automatically detects and warns when dependencies are pinned differently:
4. Modular, Testable Code
🧪 Testing
Unit Tests: 145+ test cases
test_formatting.py: 95 tests for name formatting/normalizationtest_python_extractor.py: 50 tests for requirements.txt/pyproject.toml parsingMarkers:
@pytest.mark.unit,@pytest.mark.weekly,@pytest.mark.gpu_0📚 Documentation
.github/scripts/dependency-extraction/README.md(290 lines).github/reports/README.md(154 lines)framework_versions.md(101 lines, auto-generated).github/dependency-extraction/config.yaml🔄 Workflows
Nightly Mode (2 AM UTC):
Release Mode (on
release/*push):.github/reports/releases/✅ Compliance
Related Issues
Fixes #DYN-1235
Addresses PR #3572 (framework versions doc, but auto-generated)
Supersedes PR #3547 (had merge conflicts)
Credits
Addresses review feedback from: