skip to navigation
skip to content

Not Logged In

devpi-server 2.3.1

devpi-server: reliable private and caching server

devpi-server: consistent cache, github-style internal indexes

consistent robust pypi-cache

You can point pip or easy_install to the root/pypi/+simple/ index, serving as a self-updating transparent cache for pypi-hosted and external packages. Cache-invalidation uses the latest and greatest PyPI protocols. The cache index continues to serve when offline and will resume cache-updates once network is available.

github-style indexes

Each user can have multiple indexes and upload packages and docs via standard invocations. Users, indexes (and soon projects and releases) are manipulaed through 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.

good defaults and easy deployment

Get started easily and create a permanent devpi-server deployment including pre-configured templates for nginx and cron.

separate tool for Packaging/Testing activities

The complimentary devpi-client tool helps to manage users, indexes, logins and typical upload and installation workflows.

See for getting started and documentation.


2.3.1 (2015-09-14)

  • fix issue272: require devpi-common >= 2.0.6
  • recognize newly registered PyPI projects, now that we don’t watch the PyPI changelog anymore

2.3.0 (2015-09-10)

  • switched to semantic versioning. Only major revisions will ever require an export/import cycle.
  • fix issue260: Log identical upload message on level “info”
  • Log upload trigger message on level “warn”
  • The PyPI changelog isn’t watched for changes anymore. Instead we cache release data for 30 minutes, this can be adjusted with the --mirror-cache-expiry option.
  • fix issue251: Require and validate the “X-DEVPI-SERIAL” from master in replica thread
  • fix issue258: fix FileReplicationError representation for proper logging
  • fix issue256: if a project removes all releases from pypi or the project is deleted on pypi, we get a 404 back. In that case we now return an empty list of releases instead of returning an UpstreamError.
  • Change nginx template to serve HEAD in addition to GET requests of files directly instead of proxying to devpi-server
  • make keyfs cache size configurable via “–keyfs-cache-size” option and increase the default size to improve performance for installations with many writes

2.2.2 (2015-07-09)

  • make replica thread more robust by catching more exceptions
  • Remove duplicates in plugin version info
  • track timestamps for event processing and replication and expose in /+status
  • implement devpiweb_get_status_info hook for devpi-web >= 2.4.0 status messages
  • UPGRADE NOTE: if devpi-web is installed, you have to request application/json for /+status, or you might get a html page.
  • address issue246: refuse uploading release files if they do not contain the version that was transferred with the metadata of the upload request.
  • fix issue248: prevent change of index type after creation

2.2.1 (2015-05-20)

  • fix issue237: fix wrong initial replica setup which would prevent initialization. Thanks Stephan Erb.

2.2.0 (2015-05-13)

  • add “–no-events” option to postpone running events after import to server start
  • add new devpiserver_get_credentials plugin hook to extract credentials from request
  • fix issue216: use sha256 instead of md5 checksums for serving own files (BACKWARD INCOMPATIBLE: needs export/import)
  • parse arbitrary checksums from PyPI in preparation for a pending change on which will see it serving sha256 checksums only.
  • fix debug logging to actually show debug logs (logging was not properly reconfigured)
  • make logging fully configurable via a config yaml/json (e.g., log to an external syslog server)
  • fix issue221: avoid looking at file entries who are not part of a project (because they got deleted)
  • fix issue217: systematically avoid using bytes in persisted dictionaries to avoid any py2/py3 bytes/unicode issue.
  • show actual instead of prospective replica serial in master /+status page
  • fix issue165: make off-line serving more robust when we know there is a change but pypi is currently not reachable (just serve the old cached links and issue an error to the logs)
  • fix flaky devpi-server “–start” startup detection which would previously assume success if another server was already running on the address/port we want to run on.
  • fix importing of indexes with custom_data and importing of documentation which follows uncommon package naming
  • fix issue228: when a stage is deleted don’t veriy if it was root/pypi because you cannot delete root/pypi anyway.
  • fix issue232: pypi-refresh now works better for projects which have have a non-nomalized projectname, and also works better across replication.
  • add new devpiserver_indexconfig_defaults plugin hook to add key names for settings in the index configuration.
  • add new devpiserver_on_upload_sync plugin hook and use it to move the Jenkins triggering to the devpi-jenkins plugin.
  • rename hooks: devpiserver_auth_credentials to devpiserver_get_credentials and devpiserver_run_commands to devpiserver_cmdline_run.
  • add --hard-links option to use hard links for releases and doc zips during export.
  • speed up detecting replica/master mismatches and let a replica instantly die if it talks to a master that doesn’t match the master id the replica is operating for.
File Type Py Version Uploaded on Size
devpi-server-2.3.1.tar.gz (md5) Source 2015-09-14 123KB
devpi_server-2.3.1-py2.py3-none-any.whl (md5) Python Wheel 2.7 2015-09-14 133KB
  • Downloads (All Versions):
  • 372 downloads in the last day
  • 2014 downloads in the last week
  • 8483 downloads in the last month