--- id: setuptools-download version: "1.1.0" license: MIT license_treatment: permissive maintenance: active --- # setuptools-download — setuptools plugin to download external files License: permissive · Maintenance: active · Downloads: 1.7M/mo ## What it is and what it does setuptools-download is a setuptools plugin that automates the download and integration of external files into a Python package during installation. It runs at build time, fetching files from URLs and verifying them against SHA256 checksums before inclusion. The plugin supports platform-specific downloads via PEP 508 markers (checking OS, platform, and architecture), allowing you to bundle different binaries or data for Linux, macOS, and Windows in a single package definition. It can also extract archives (tar or zip) and place specific files from them into your package. The plugin is configured declaratively through setuptools metadata (setup.cfg or pyproject.toml), making it suitable for projects that need to distribute pre-built binaries, large datasets, or platform-specific tools alongside Python code without committing those files to version control. Use it for: - Bundle platform-specific compiled binaries (e.g., different CPU architectures) with a Python package, downloading only what matches the target system. - Include large data files or models in a package by downloading them at install time rather than storing them in the repository. - Distribute a tool that wraps native executables, downloading the correct binary for the user's OS and architecture automatically. - Fetch and extract portions of a remote archive (e.g., a specific directory from a tarball) into your package structure during setup. - Verify file integrity during installation by enforcing SHA256 checksums on all downloaded content. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. A setuptools plugin that downloads external files during package setup, with support for checksums, platform-specific selection, and archive extraction. Yes, if you need to download external files during package installation with integrity verification and platform-specific selection. The low install friction, active maintenance, permissive license, and zero known vulnerabilities make it a safe choice. Not necessary if your package is pure Python or already handles file distribution through other means. ## Install pip install setuptools-download uv add setuptools-download poetry add setuptools-download ## Installing setuptools-download Before you install: Low friction: pure Python wheel with only setuptools as a runtime dependency. Actively maintained with recent commits; last release was about a year ago. License in practice: MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for any project type. Quickstart: # In setup.cfg or pyproject.toml: # [options] # setup_requires = setuptools-download # # [setuptools_download] # download_data_files = # [path/to/file.txt] # url = https://example.com/file.txt # sha256 = # Then run: pip install . Requires Python >=3.8 and setuptools to be available during the build phase. Verify before relying: - Whether the plugin works with modern setuptools versions and PEP 517/518 build backends. - Performance characteristics when downloading large files or many files in parallel. - Behavior when network connectivity is unavailable during setup. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 1.7M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags setuptools download plugin, download files during setup, platform-specific file download, setuptools external files, sha256 checksum verification, extract tar zip in setup, conditional file download, setuptools-plugin, build-automation, binary-distribution [View on SkillFed](https://skillfed.io/packages/setuptools-download) · [View on PyPI](https://pypi.org/project/setuptools-download/)