Skip to main content

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

7.0.0b4 (2026-06-30)

Deprecations and Removals

  • Removed deprecated devpiserver_auth_user hook.

  • Remove --keyfs-cache-size option and replace it with large_cache_size and small_cache_size storage options.

  • Deprecated get_possible_indexconfig_keys, get_default_config_items and normalize_indexconfig_value methods on index customizer in favor of new get_indexconfig_fields.

  • Removed lots of previously deprecated things.

  • Removed experimental --enable-core-metadata command line option, the feature is now always enabled.

  • Removed hash_spec from JSON responses, use hashes instead.

  • Deprecated devpiserver_indexconfig_defaults hook in favor of new devpiserver_indexconfig_fields hook.

  • Removed mirror_whitelist and replaced it with project_inheritance_rules in index configuration and inheritance_rules in the newly added project configuration. The replacement for the former default with an empty mirror_whitelist is block type:remote if local_exists. The replacement for * is allow all. To allow a specific project to be merged with upstream releases the new project config needs the inheritance_rules option to be set to allow all. For now these rules are the only possibilities matching the old functionality of mirror_whitelist.

  • Require at least Python 3.11.

  • Replaced devpiserver_storage_backend with new devpiserver_describe_storage_backend.

  • Fix #930: remove remaining uses of unmaintained py library.

Features

  • Support core-metadata hashes for local indexes. Refs #1018

  • Parse and store PEP 658 metadata hashes if a remote provides them. Refs #1018

  • Completely switch from requests to httpx.

  • Apply project/version filters on all inherited indexes instead of only the current index. This makes devpi-constrained work as a base.

  • The project REST API includes the project configuration and information about inheritance from base indexes when the v=2 query is added to the GET request. The inheritance information also includes warnings about inheritance cycles, missing bases and other problems.

  • The project REST API allows setting configuration via POST.

  • When changing the remote_url any stored remote info like ETAGs or serials is invalidated.

  • Fix #1091: Support truststore as SSL/TLS context provider. The package needs to be installed separately, it is not a default dependency.

  • Support size and upload-time (refs #1061) fields from PEP 700 in JSON simple API version 1.1. If releases from remote indexes are included, the result API version is limited to the minimum supported version of all remotes.

Other Changes

  • Long descriptions in version metadata are now stored in files instead of the database. This is mostly transparent. If the file doesn’t exist (yet) on a replica, the json API will return a dictionary with the file information instead of a string.

  • Renamed the stage index to local. This affects the type field of the HTTP API.

  • Renamed mirror_whitelist_inheritance to trust_inheritance_rules_from and the values intersection to none, and union to type:not remote to make the intention more obvious.

  • Since 6.9.2 only unique values where added when using += via PATCH to all list or tuple types. Now this only applies to ACLList and the new UniqueList and UniqueTuple classes, regular list and tuple allow adding duplicate values again. This restores compatibility with devpi-pr.

  • Renamed devpiserver_get_mirror_auth hook to devpiserver_get_remote_auth.

  • Renamed the mirror index to remote. This affects the type field of the HTTP API and the “mirror_*” index options.

  • Renamed devpiserver_mirror_initialnames hook to devpiserver_remote_initialnames.

  • Renamed --mirror-cache-expiry/mirror_cache_expiry option to --remote-refresh-delay/remote_refresh_delay.

  • By default the password of the root user is not set and you have to either use devpi-passwd after initialization, or one of the --root-passwd or --root-passwd-hash options with devpi-init.

  • Replaced the default storage backend with a new one using SQLAlchemy and optimized database schema for size and performance.

6.20.3 (2026-06-30)

Bug Fixes

  • Fix fetching files from re-created mirrors (for example after import or delete and create) without fetching simple project page first. This happens when uv uses a package URL directly from a lock file.

  • Search for METADATA file if the generated name with normalized project and version doesn’t match. This fixes serving core metadata for older wheels.

6.20.2 (2026-06-11)

Bug Fixes

  • Fix logic error which allowed unauthorized fetching of replication data.

6.20.1 (2026-05-11)

Bug Fixes

  • Pass through request headers when streaming .metadata from mirror. Refs #1018

6.20.0 (2026-04-30)

Features

Bug Fixes

  • Update replica status when the replica is waiting for new serials using the streaming changelog endpoint.

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

devpi_server-7.0.0b4.tar.gz (346.6 kB view details)

Uploaded Source

Built Distribution

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

devpi_server-7.0.0b4-py3-none-any.whl (365.6 kB view details)

Uploaded Python 3

File details

Details for the file devpi_server-7.0.0b4.tar.gz.

File metadata

  • Download URL: devpi_server-7.0.0b4.tar.gz
  • Upload date:
  • Size: 346.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: devpi-server/6.20.1.dev0 (py3.11.2; linux)

File hashes

Hashes for devpi_server-7.0.0b4.tar.gz
Algorithm Hash digest
SHA256 f3cb4ed524971f700973f64d401a0a9fcd8c6164c82ad50e23aacdb3b4d1e0b7
MD5 f744fe84fc36bfb284676119c9929da6
BLAKE2b-256 21efedd2850f2a126cd9327260e11fff6fdc0c8dd9e40dd745ba90bc8b4a97d6

See more details on using hashes here.

File details

Details for the file devpi_server-7.0.0b4-py3-none-any.whl.

File metadata

  • Download URL: devpi_server-7.0.0b4-py3-none-any.whl
  • Upload date:
  • Size: 365.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: devpi-server/6.20.1.dev0 (py3.11.2; linux)

File hashes

Hashes for devpi_server-7.0.0b4-py3-none-any.whl
Algorithm Hash digest
SHA256 384b56c0c30f927fbad5286ae4903951f1e19ba7964544806b02411c16c2155f
MD5 59cf9cbd5f4314ac490144bafe72b3e2
BLAKE2b-256 012b3842d717a3191d95f2e4cf780614bf184e91e5028e9aafaae2ca6b0f84dc

See more details on using hashes here.

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