Skip to content

📋 Dependabot research: Continue manual dependency management until uv support #184

@matrixise

Description

@matrixise

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:

  1. ✅ uv is not yet supported natively by Dependabot
  2. ✅ Current workflow with task dependencies:* commands works well
  3. ✅ Security alerts are already active (most critical feature)
  4. ✅ Migration to pyproject.toml would be a significant change
  5. ✅ 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions