Skip to main content

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

Project description

devpi-server: pypi server for caching and private 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.

user specific indexes

Each user (which can represent a person or a project, team) can have multiple indexes and upload packages and docs via standard setup.py invocations command. Users and indexes can be manipulated 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 complementary devpi-client tool helps to manage users, indexes, logins and typical setup.py-based upload and installation workflows.

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

Changelog

4.9.0 (2019-04-26)

Features

  • implement #93: When creating a user, the password hash can be set directly with pwhash. Upon database initialization allow setting root user password with --root-passwd and the password hash with --root-passwd-hash options. Thanks to Andreas Palsson.

  • decouple devpi server version from database version to enable major releases that do not require export import of data

  • support --hard-links option during import for releases and doc zips.

  • added new endpoint to download multiple changelog entries at once. This will be used for faster replication in the future.

  • add option --replica-file-search-path to point to existing files. If a match is found it will be copied locally instead of fetched from the master. These files could be from a previous replication attempt or separately copied/restored.

  • add --hard-links support for replicas together with the --replica-file-search-path option. When a matching file is found it’s hard linked instead of writing a copy.

Bug Fixes

  • fix multiple triggering of mirror project names initialization.

  • fix updating time stamp of mirror project name cache when no project names have changed. This makes subsequent fetches actually use the cache instead of always fetching the data again from the mirror.

  • use timeout when waiting for data from master in replica on mirror simple pages.

Other Changes

  • slightly improved replica performance by removing unnecessary DB read and using fewer transactions.

4.8.1 (2019-03-14)

Bug Fixes

  • fix #520: uploads work with and without a trailing slash for the index url.

  • fix #597: handle ConnectionError in httpget

  • fix #615: setting of mirror index options with server side patching didn’t work

4.8.0 (2018-11-16)

Features

  • feature #193: ensuring that the description_content_type and provides_extras fields are handled.

    This is used to add support for using alternative content types in the package descriptions such as text/markdown.

  • The PATCH method of indexes supports a list of arguments with operations in the form of key=value for setting values and for lists in the form of key+=value and key-=value to add and remove items. This prevents undoing changes sent in concurrent PATCH requests.

Bug Fixes

  • fix #598: streaming download now uses BytesIO to avoid performance issues for downloads with more than a few MB.

    Thanks to Dom Hudson from http://www.thoughtriver.com for the report and initial benchmark code.

  • handle mirrors that don’t return a correct X-PYPI-LAST-SERIAL header.

4.7.1 (2018-09-10)

Bug Fixes

  • Fix missing releases in simple pages for data from previous devpi-server versions.

  • Fixed key error ‘requires_python’ for data from previous devpi-server versions.

4.7.0 (2018-09-08)

Deprecations and Removals

  • Deprecated DEVPI_SERVERDIR environment variable in favor of DEVPISERVER_SERVERDIR to be consistent with the other option overwrites.

Features

  • fix #502: add support for YAML config files.

  • environment variables can now be used for configuration. The option name needs to be changed to uppercase, prefixed with DEVPISERVER_ and dashes replaced by underscores. For example --restrict-modify becomes DEVPISERVER_RESTRICT_MODIFY.

  • fix #511: support PEP508 requires-python attribute on links. Thanks to Sergey Kolosov for the parsing parts.

  • Allow deletion of mirrored package releases.

  • Allow deletion of mirrored projects and their releases.

  • Allow deletion of specific package versions on a mirror. Only the downloaded files will be removed. The file will be fetched again from the mirror source on request.

  • Better handling of 404s in mirror indexes. Every project not found would create an entry in the database which would grow it unnecessarily.

Bug Fixes

  • Allow deleting releases even if the file was removed from the filesystem outside of devpi.

  • fix #491: when a file was previously fetched in a mirror index, but is now missing and needs to be fetched again then skip writing an empty changeset with new serial.

  • When deleting a mirror, delete all it’s data as well. Previously deleting a mirror and recreating it would result in old entries showing up.

  • In offline mode the full project list returns all projects with locally stored releases.

  • In offline mode no bogus 503 responses show up in the log anymore.

  • when a file was missing on a replica and has to be fetched from master, it is now written to disk, so it doesn’t have to be fetched again.

  • Only projects with locally stored releases show up in the full project list of mirrors if upstream can’t be reached.

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-4.9.0.tar.gz (185.9 kB view hashes)

Uploaded Source

Built Distribution

devpi_server-4.9.0-py2.py3-none-any.whl (190.6 kB view hashes)

Uploaded Python 2 Python 3

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