{"id":26246026,"url":"https://github.com/zillow/buildout-platform-versions","last_synced_at":"2025-04-23T20:26:15.323Z","repository":{"id":12053630,"uuid":"14639802","full_name":"zillow/buildout-platform-versions","owner":"zillow","description":"A dependency version management forklift for buildout.","archived":false,"fork":false,"pushed_at":"2014-07-31T02:11:00.000Z","size":241,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":66,"default_branch":"master","last_synced_at":"2025-03-30T03:11:47.307Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zillow.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-23T09:32:49.000Z","updated_at":"2016-06-11T01:30:47.000Z","dependencies_parsed_at":"2022-09-23T03:52:23.938Z","dependency_job_id":null,"html_url":"https://github.com/zillow/buildout-platform-versions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillow%2Fbuildout-platform-versions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillow%2Fbuildout-platform-versions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillow%2Fbuildout-platform-versions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zillow%2Fbuildout-platform-versions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zillow","download_url":"https://codeload.github.com/zillow/buildout-platform-versions/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249826716,"owners_count":21330675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-13T13:17:14.550Z","updated_at":"2025-04-23T20:26:15.298Z","avatar_url":"https://github.com/zillow.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Buildout Platform Versions (BPV)\n================================\n\nBPV lets you switch between sets of pinned dependencies more easily.\n\nIt's useful for testing a build with several dependency chains. For\nexample, you might be using one freeze of Turbogears in production, but\nyou might also want to test a new freeze in development.\n\nSimple Example\n--------------\n\nSuppose that we're using flup 1.0.2 in production. We want the\nproduction build to continue to use the old flup. But, we want to flip\nbetween the production flup and a new flup on the dev box.\n\nDevelopers can build and test with [production], [dev], or\n[newest\\_flup] by setting an environment variable\n\n::\n\n    export PLATFORM\\_ENVIRONMENT\\_VARIABLE=dev\n\nOr writing a custom develop.cfg. Here's how BPV gets the job done:\n\nbuildout.cfg\n~~~~~~~~~~~~\n\n::\n\n    [buildout]\n\n    extensions = buildout_platform_versions\n\n    # optionally\n    # platform-versions-config = WHATEVER_SECTION\n\n    [platform-versions-config]\n    default-platform = production\n    sources =\n        some_config_enhance_file.cfg\n        another_config_enhance_file.cfg\n    platform-env = PLATFORM_ENVIRONMENT_VARIABLE\n\nsome\\_config\\_enhance\\_file.cfg\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n    [base]\n    simplejson = 2.2.1\n    flup = 1.0.2\n    WebOb = 1.1.1\n    Jinja2 = 2.6\n    pymongo = 2.1\n\nanother\\_config\\_enhance\\_file.cfg\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n    [production]\n    # the production environment uses the base config\n    \u003c\u003c= \u003cbase\n\n    [dev_flup]\n    # wait, there's a new flup to try\n    flup = 1.0.3dev\n\n    [dev]\n    # on dev boxes, we'll try the new flup\n    \u003c\u003c= \u003cproduction\n        +dev_flup\n\n    [newest_flup]\n    # we'll unpin and check for a new flup\n    \u003c\u003c= \u003cproduction\n        -dev_flup\n\nVersion File Sources\n====================\n\nBPV can read version rosters from a number of sources. We're\nparticularly proud of the egg source:\n\n::\n\n    egg://eggname/path/to/versions.cfg\n    http://somewhere.com/versions/more_versions.cfg\n    file:///home/me/config/local_versions.cfg\n    relative_versions.cfg\n\nThe egg protocol support is hand crafted. Everything else relies on\nurllib. If no protocol is specified, BPV assumes the sources are local\nfiles relative to the buildout working directory.\n\nA more complicated example\n==========================\n\nUsing BPV to twiddle a single file is a bit overkill. Its power is more\nevident when you have some big freezes to manage and need a longer\ntransition period:\n\n::\n\n    [TG2.1-v1]\n    # frozen 2012-08-12\n    TurboGears2 = 2.1.1\n    transaction = 1.2.0\n    tgext.admin = 0.3.12\n    tgext.crud = 0.3.13\n    ...\n\n    [TG2.1-v2]\n    # frozen 2013-04-01\n    TurboGears2 = 2.1.1\n    transaction = 1.4.1\n    tgext.admin = 0.5.4\n    tgext.crud = 1.0.2\n    ...\n\n    [production]\n    # production versions are collected from a bunch of\n    # frozen projects\n    \u003c\u003c= +TG2.1-v1\n        +several\n\n    [dev]\n    # in dev, use the production versions. But, remove\n    # all the pins for the first freeze of TG, insert the\n    # pins from the new freeze.\n    \u003c\u003c= +production\n        -TG2.1-v1\n        \u003cTG2.1-v2\n\nDevelop Eggs\n===============\n\nBPV loads the current version of develop eggs listed in {buildout:develop} and\nuses those versions to override the explicit pins loaded from other sources.\n\nIt will also check for develop-packages listed in the platform-versions-config\nsection and unpin those entirely, so that they pick up whatever the highest\nversion is.\n\n::\n\n    [platform-versions-config]\n    default-platform = production\n    sources =\n        some_config_enhance_file.cfg\n        another_config_enhance_file.cfg\n    develop-packages = flup\n        tgext.admin\n\n\n\n\nRelated Projects\n================\n\n[config-enhance][https://github.com/zillow/config-enhance]\n[buildout][https://github.com/buildout/buildout]\n\nSource Code\n===========\n\n[contribute][https://github.com/zillow/buildout-platform-versions]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzillow%2Fbuildout-platform-versions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzillow%2Fbuildout-platform-versions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzillow%2Fbuildout-platform-versions/lists"}