Skip to main content

Dependency version management forklift for buildout.

Project description

Buildout Platform Versions (BPV)

BPV lets you switch between sets of pinned dependencies more easily.

It’s useful for testing a build with several dependency chains. For example, you might be using one freeze of Turbogears in production, but you might also want to test a new freeze in development.

Simple Example

Suppose that we’re using flup 1.0.2 in production. We want the production build to continue to use the old flup. But, we want to flip between the production flup and a new flup on the dev box.

Developers can build and test with [production], [dev], or [newest_flup] by setting an environment variable

export PLATFORM\_ENVIRONMENT\_VARIABLE=dev

Or writing a custom develop.cfg. Here’s how BPV gets the job done:

buildout.cfg

[buildout]

extensions = buildout_platform_versions

# optionally
# platform-versions-config = WHATEVER_SECTION

[platform-versions-config]
default-platform = production
sources =
    some_config_enhance_file.cfg
    another_config_enhance_file.cfg
platform-env = PLATFORM_ENVIRONMENT_VARIABLE

some_config_enhance_file.cfg

[base]
simplejson = 2.2.1
flup = 1.0.2
WebOb = 1.1.1
Jinja2 = 2.6
pymongo = 2.1

another_config_enhance_file.cfg

[production]
# the production environment uses the base config
<<= <base

[dev_flup]
# wait, there's a new flup to try
flup = 1.0.3dev

[dev]
# on dev boxes, we'll try the new flup
<<= <production
    +dev_flup

[newest_flup]
# we'll unpin and check for a new flup
<<= <production
    -dev_flup

Version File Sources

BPV can read version rosters from a number of sources. We’re particularly proud of the egg source:

egg://eggname/path/to/versions.cfg
http://somewhere.com/versions/more_versions.cfg
file:///home/me/config/local_versions.cfg
relative_versions.cfg

The egg protocol support is hand crafted. Everything else relies on urllib. If no protocol is specified, BPV assumes the sources are local files relative to the buildout working directory.

A more complicated example

Using BPV to twiddle a single file is a bit overkill. Its power is more evident when you have some big freezes to manage and need a longer transition period:

[TG2.1-v1]
# frozen 2012-08-12
TurboGears2 = 2.1.1
transaction = 1.2.0
tgext.admin = 0.3.12
tgext.crud = 0.3.13
...

[TG2.1-v2]
# frozen 2013-04-01
TurboGears2 = 2.1.1
transaction = 1.4.1
tgext.admin = 0.5.4
tgext.crud = 1.0.2
...

[production]
# production versions are collected from a bunch of
# frozen projects
<<= +TG2.1-v1
    +several

[dev]
# in dev, use the production versions. But, remove
# all the pins for the first freeze of TG, insert the
# pins from the new freeze.
<<= +production
    -TG2.1-v1
    <TG2.1-v2

Source Code

[contribute][https://github.com/zillow/buildout-platform-versions]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

buildout-platform-versions-1.2.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

buildout_platform_versions-1.2.1-py2.7.egg (10.6 kB view details)

Uploaded Source

File details

Details for the file buildout-platform-versions-1.2.1.tar.gz.

File metadata

File hashes

Hashes for buildout-platform-versions-1.2.1.tar.gz
Algorithm Hash digest
SHA256 fb177bb2cf16dd72ef8e1d69c8e485dce92130ad12147501a15ab1e810c30f54
MD5 0d5b74d0e554f55debf6187b4404ae71
BLAKE2b-256 79eb1a16addef34e685f0344d67f05b1cbfe7061c78dea55d8070091bac3a6f4

See more details on using hashes here.

File details

Details for the file buildout_platform_versions-1.2.1-py2.7.egg.

File metadata

File hashes

Hashes for buildout_platform_versions-1.2.1-py2.7.egg
Algorithm Hash digest
SHA256 4752156e6b556299719c32547420fc7c693338f9ec8f2330f05490598a792a7a
MD5 ec853984811c0ab5ec82e99896a5b519
BLAKE2b-256 ac6df6599cc275d42ebf6611a16f17be8cd9628dc7244535888596bee32fb67a

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