Skip to main content

A vendoring tool for fetching and managing external dependencies.

Project description

Codacy Badge Codacy Badge Documentation Status Build Code style: black GitHub Gitter Libraries.io dependency status for GitHub repo Maintenance GitHub issues PyPI - Python Version PyPI Contribute with Codespaces OpenSSF Best Practices

Vendor dependencies without the pain.

Dfetch copies source code directly into your project — no Git submodules, no SVN externals, no hidden external links. Fetch from Git, SVN, or plain archive URLs. Dependencies live as plain, readable files inside your own repository. You stay in full control of every line.

Dfetch supports Git, SVN, and archive files (.tar.gz, .tgz, .tar.bz2, .tar.xz, .zip). Archives can be verified with a cryptographic hash (sha256, sha384, or sha512) to guarantee integrity on every fetch. No proprietary formats, no lock-in — switch tools any time.

Other tools that do similar things are Zephyr's West, CMake ExternalProject, and other meta tools. See alternatives for a complete list. The broader concept is known as vendoring.

Getting started | Commands | Troubleshooting | Contributing

What Dfetch Does

  • Vendor source-only dependencies — fully self-contained, no external links at build time
  • VCS-agnostic: mix Git, SVN, and plain archive URLs freely in one manifest
  • Fetch and verify archives with cryptographic integrity checks
  • Apply local patches while keeping upstream syncable (dfetch diff / dfetch format-patch)
  • Supply-chain ready: SBOM generation, license detection, multi-format CI reports
  • Migrate from Git submodules or SVN externals in seconds (dfetch import)
  • Declarative code reuse across projects (inner sourcing)

Install

Stable

pip install dfetch

latest version

pip install git+https://github.com/dfetch-org/dfetch.git#egg=dfetch

Binary distributions

Each release on the releases page provides installers for all major platforms.

  • Linux .deb & .rpm
  • macOS .pkg
  • Windows .msi

Example manifest

manifest:
  version: 0.0

  remotes:                                                        # declare common sources in one place
  - name: github
    url-base: https://github.com/                                 # Allow git modules
    default: true                                                 # Set it as default

  - name: sourceforge
    url-base: svn://svn.code.sf.net/p/

  projects:

  - name: cpputest-git-tag
    dst: Tests/cpputest-git-tag
    url: https://github.com/cpputest/cpputest.git                 # Use external git directly
    tag: v3.4                                                     # revision can also be a tag

  - name: tortoise-svn-branch-rev
    dst: Tests/tortoise-svn-branch-rev/
    remote: sourceforge
    branch: 1.10.x
    revision: '28553'
    src: src/*
    vcs: svn
    repo-path: tortoisesvn/code

  - name: tortoise-svn-tag
    dst: Tests/tortoise-svn-tag/
    remote: sourceforge
    tag: version-1.13.1
    src: src/*.txt
    vcs: svn
    repo-path: tortoisesvn/code

  - name: cpputest-git-src
    dst: Tests/cpputest-git-src
    repo-path: cpputest/cpputest.git
    src: src

  - name: my-library
    dst: ext/my-library
    url: https://example.com/releases/my-library-1.0.tar.gz
    vcs: archive
    integrity:
      hash: sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

GitHub Action

You can use Dfetch in your GitHub Actions workflow to check your dependencies. The results will be uploaded to GitHub. Add the following to your workflow file:

jobs:
  dfetch-check:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - name: Run Dfetch Check
        uses: dfetch-org/dfetch@main
        with:
          working-directory: '.' # optional, defaults to project root

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dfetch-0.14.3.tar.gz (5.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dfetch-0.14.3-py3-none-any.whl (158.5 kB view details)

Uploaded Python 3

File details

Details for the file dfetch-0.14.3.tar.gz.

File metadata

  • Download URL: dfetch-0.14.3.tar.gz
  • Upload date:
  • Size: 5.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for dfetch-0.14.3.tar.gz
Algorithm Hash digest
SHA256 241d4a6f81e444e70eb5f742037c0a2e9b9f4322ca46737027e95e19b471a48e
MD5 334a24dec49beb4ef721379ffb626078
BLAKE2b-256 ebfd4785537dd51ba9821243e788f7f3562e503dd9af53f9fb62386af8d3330e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfetch-0.14.3.tar.gz:

Publisher: python-publish.yml on dfetch-org/dfetch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfetch-0.14.3-py3-none-any.whl.

File metadata

  • Download URL: dfetch-0.14.3-py3-none-any.whl
  • Upload date:
  • Size: 158.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for dfetch-0.14.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b19c3701c89d0caba836b2c4c25a356f0d5bd9d0e02ccb1ec2966dd15d016032
MD5 c482887ce5aa0e9086b06cdff893ccd3
BLAKE2b-256 ba3ee5087628739b6a2d6432b9e07a757f035cfd40e1277cc4883ca1651ec0e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfetch-0.14.3-py3-none-any.whl:

Publisher: python-publish.yml on dfetch-org/dfetch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page