devpi-server: backend for hosting private package indexes and PyPI on-demand mirrors
Project description
devpi-server: backend for hosting private package indexes and PyPI on-demand mirrors
PyPI on-demand package mirror
You can point uv, pip or another Python package installer to the root/pypi/+simple/ index, serving as a transparent on-demand mirror for PyPI-hosted packages.
User specific indexes
Each user (which can represent a person, project or team) can have multiple indexes, and can upload packages and documents to these indexes via standard twine or setup.py invocations. Users and indexes can be manipulated through devpi-client and a RESTful HTTP API.
Index inheritance
Each index can be configured to merge in other indexes so that it serves both its uploads and all releases from other index(es). For example, an index using root/pypi as a parent is a good place to test out a release candidate before you push it to PyPI.
Sensible defaults for a low friction deployment
Get started easily and deploy a devpi-server instance with pre-configured templates for nginx and process managers.
Separate tool for Packaging/Testing activities
The complementary devpi-client tool helps to manage users, indexes, logins and typical package upload and installation workflows.
See https://doc.devpi.net on how to get started and further documentation.
Support
If you find a bug, use the issue tracker at Github.
For general questions, use GitHub Discussions or the devpi-dev@python.org mailing list.
For support contracts and paid help, contact mail at pyfidelity.com.
Changelog
6.20.0 (2026-04-30)
Features
Add experimental bare bones core-metadata ([PEP 658](https://peps.python.org/pep-0658/), [PEP 714](https://peps.python.org/pep-0714/)) support with --enable-core-metadata command line option and mirror_provides_core_metadata mirror index option. Refs #1018
Bug Fixes
Update replica status when the replica is waiting for new serials using the streaming changelog endpoint.
6.19.3 (2026-04-13)
Bug Fixes
Fix #1112: Parse simple JSON reply even with wrong content-type in reply if the body seems to contain JSON.
Return stale project list for mirrors when the lock can’t be acquired within the timeout.
Fix importing of toxresults from devpi-server 6.5.0 to 6.9.0 where the wrong hash was stored.
6.19.2 (2026-03-17)
Bug Fixes
Preserve log for documentation uploads in export.
Any missing file on mirrors will be ignored during event processing as is already the case in other places.
Use short timeout when project list is requested for has_project call on mirrors instead of the long one used for list_projects. This prevents installers from timing out and retrying several times.
Fix error handling for proxy requests from replica to primary.
Other Changes
Removed limit of reported missing files for devpi-fsck.
6.19.1 (2026-02-09)
Bug Fixes
Pin setuptools as pyramid still requires pkg_resources.
Always allow replicas to access deleted releases to get the proper 410 Gone instead of 403 Forbidden when devpi-lockdown is in use.
6.19.0 (2026-02-06)
Features
Add --autocreate-users server option. Automatically creates users that don’t exist in devpi, but have successfully authenticated via an authentication plugin. A typical example of when to enable this would be when authenticating via an LDAP directory. Automatically created users do not have passwords, and have no password hash to prevent local authentication.
Add replica-files-in-sync-at, replica-init-queue-finished-at and replica-metadata-in-sync-at to status view, the existing replica-in-sync-at is now a combination of all three instead of just metadata.
Warn when an unknown option is found in config file to detect typos. Be aware that some commands don’t use all the options, that is why this only warns instead of exiting.
Add new devpiserver_user_created hook which can be used to create default indexes or other setup for newly created users.
Bug Fixes
Fix +status json encoding errors by making sure the FatalResponse.url attribute is a string.
Ignore existing unknown index options from uninstalled plugins when patching other options with += and -=.
Fix removal with -= of index options with default values from devpiserver_indexconfig_defaults hooks.
Fix #1110: a list for the listen option in a config file stopped working in 6.18.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devpi_server-6.20.0.tar.gz.
File metadata
- Download URL: devpi_server-6.20.0.tar.gz
- Upload date:
- Size: 309.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: devpi-server/6.18.0 (py3.11.2; linux)
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ae90eee2065784cfa638b24e588805cb17b369a4e320a2902f6b81c9201202d
|
|
| MD5 |
c836c6bea3454d5b1fe5503490119aa9
|
|
| BLAKE2b-256 |
96b2d9ffbe4579ce32a20e910769d08da2fb8a75a2e253119586077a05b28551
|
File details
Details for the file devpi_server-6.20.0-py3-none-any.whl.
File metadata
- Download URL: devpi_server-6.20.0-py3-none-any.whl
- Upload date:
- Size: 322.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: devpi-server/6.18.0 (py3.11.2; linux)
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ec5dd401c5ff53f38ddf3bad2e8c9a955a1a81edfdbe34d01cbc25f7283be7f
|
|
| MD5 |
e1f7048045d96508ed7d3a9a59c8339b
|
|
| BLAKE2b-256 |
09bc3406e53703ddba1a0d3fb8e8e948e33b1b583730bd9f54b41750c7857f54
|