Skip to main content

devpi-server: reliable private and pypi.python.org caching server

Project description

devpi-server: consistent pypi.python.org 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 setup.py 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 setup.py-based upload and installation workflows.

See http://doc.devpi.net for getting started and documentation.

Changelog

2.3.0

  • 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 pypi.python.org 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.

2.1.5 (2015-03-16)

  • fix devpi-ldap issue17: the push command directly used the username instead of using a general permission check, that caused groups in acl_upload to not be honored.

  • fix issue171: “devpi push” of an existing package fails on non volatile index and overwrites on volatile.

  • before devpi-server 2.1.5 it was possible to upload multiple documentation zip files for the same package version if the filename differed in case, this broke export and replication of server state and the documentation view. Now the newest upload will be used and older ones ignored.

  • fix issue217: try harder to avoid using “bytes” in python2 to allow py2/py3 master/replica setups and generally have more type-uniform bytes.

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-2.3.0.tar.gz (126.3 kB view details)

Uploaded Source

Built Distribution

devpi_server-2.3.0-py2.py3-none-any.whl (136.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file devpi-server-2.3.0.tar.gz.

File metadata

File hashes

Hashes for devpi-server-2.3.0.tar.gz
Algorithm Hash digest
SHA256 8d70c4e40f211d3f0311e2f640a684f69b3c1e5dc9ee4a705e12c367c33d0576
MD5 8c6f8f36a865475780329e7e83a1fae4
BLAKE2b-256 8ff65df6fa37e19341f3107b662577529ef9f69145ea5695e795b04cafe519d3

See more details on using hashes here.

File details

Details for the file devpi_server-2.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for devpi_server-2.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ac4e5abaaf8f1c92b71880820b20b21a4181aa448840529f7d6b0bc9a84357d1
MD5 1eff3d4a536deacd780e3d532d6c640f
BLAKE2b-256 4d6695db1ab8ca46d538137772abd6f355f98484c799db9571aceadaab781b6b

See more details on using hashes here.

Supported by

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