Executive Summary
After researching Dependabot integration with our current uv-based dependency management workflow, we've decided to continue with manual dependency management for now and revisit when Dependabot adds native uv support.
Current Dependency Workflow
Our project uses a multi-file requirements approach:
- Source files:
requirements/main.in, requirements/dev.in, requirements/production.in (dependencies without pinned versions)
- Compiled files:
requirements/main.txt, requirements/dev.txt, requirements/production.txt (auto-generated with exact pinned versions via uv pip compile)
Existing tools that work well:
task dependencies:upgrade - Update all dependencies
task dependencies:security - Vulnerability scanning with pip-audit
- Dependabot security alerts - Already active (GitHub default feature)
Research Findings
1. uv is NOT natively supported by Dependabot (December 2024)
Despite strong community interest:
2. Version Pinning Problem
- Our
.in files specify dependencies without exact versions (e.g., Django not Django==6.0)
- Only
.txt files have exact pinned versions (auto-generated)
- Dependabot can't effectively monitor
.in files without version constraints
- Monitoring
.txt files would create PRs for auto-generated files (breaks our workflow)
3. Current Workaround Requires Major Migration
The recommended approach requires:
- Migrating to
pyproject.toml for dependency specification
- GitHub Action to auto-regenerate lockfiles when Dependabot updates
pyproject.toml
- Significant project restructuring
See: Keep uv.lock file up-to-date with Dependabot updates
4. pip-compile Support Has Limitations
While Dependabot supports pip-compile, there are known issues:
- Formatting changes between pip-tools versions
- Transitive dependency conflicts
Decision: Continue Manual Workflow
Reasons:
- ✅ uv is not yet supported natively by Dependabot
- ✅ Current workflow with
task dependencies:* commands works well
- ✅ Security alerts are already active (most critical feature)
- ✅ Migration to pyproject.toml would be a significant change
- ✅ Can revisit when Dependabot adds native uv support
What We Keep Monitoring
- Dependabot security alerts (already active)
- Manual updates via
task dependencies:upgrade
- Vulnerability scanning via
task dependencies:security
- Progress on the uv support issues linked above
When to Revisit
We'll reconsider Dependabot version updates when:
- Native uv support is added to Dependabot, OR
- We migrate to pyproject.toml for other reasons
References
Executive Summary
After researching Dependabot integration with our current
uv-based dependency management workflow, we've decided to continue with manual dependency management for now and revisit when Dependabot adds nativeuvsupport.Current Dependency Workflow
Our project uses a multi-file requirements approach:
requirements/main.in,requirements/dev.in,requirements/production.in(dependencies without pinned versions)requirements/main.txt,requirements/dev.txt,requirements/production.txt(auto-generated with exact pinned versions viauv pip compile)Existing tools that work well:
task dependencies:upgrade- Update all dependenciestask dependencies:security- Vulnerability scanning with pip-auditResearch Findings
1. uv is NOT natively supported by Dependabot (December 2024)
Despite strong community interest:
2. Version Pinning Problem
.infiles specify dependencies without exact versions (e.g.,DjangonotDjango==6.0).txtfiles have exact pinned versions (auto-generated).infiles without version constraints.txtfiles would create PRs for auto-generated files (breaks our workflow)3. Current Workaround Requires Major Migration
The recommended approach requires:
pyproject.tomlfor dependency specificationpyproject.tomlSee: Keep uv.lock file up-to-date with Dependabot updates
4. pip-compile Support Has Limitations
While Dependabot supports pip-compile, there are known issues:
Decision: Continue Manual Workflow
Reasons:
task dependencies:*commands works wellWhat We Keep Monitoring
task dependencies:upgradetask dependencies:securityWhen to Revisit
We'll reconsider Dependabot version updates when:
References