{ "info": { "author": "John Carr", "author_email": "john.carr@isotoma.com", "bugtrack_url": null, "classifiers": [ "Framework :: Buildout", "Framework :: Buildout :: Recipe", "Intended Audience :: System Administrators", "License :: OSI Approved :: Zope Public License", "Operating System :: POSIX" ], "description": "missingbits\n===========\n\nThis package provides several recipes you can use if you find your self duplicating\nlots of config. It also has echo, which turned out to be useful for testing.\n\nIt was created for a site which uses 1, 3 or 9 zopes depending on a set of conditions.\n\n\nmissingbits:range\n-------------------\n\nThis recipe takes a string and will make a list out of it. For example, where as you\ncould write::\n\n [buildout]\n parts = cluster\n\n [cluster]\n recipe = plone.recipe.cluster\n start =\n ${buildout:bin-directory}/zope0 start\n ${buildout:bin-directory}/zope1 start\n ${buildout:bin-directory}/zope2 start\n ${buildout:bin-directory}/zope3 start\n ${buildout:bin-directory}/zope4 start\n ${buildout:bin-directory}/zope5 start\n stop =\n ${buildout:bin-directory}/zope5 stop\n ${buildout:bin-directory}/zope4 stop\n ${buildout:bin-directory}/zope3 stop\n ${buildout:bin-directory}/zope2 stop\n ${buildout:bin-directory}/zope1 stop\n ${buildout:bin-directory}/zope0 stop\n\nYou can write::\n\n [buildout]\n parts = cluster\n\n [zopes]\n recipe = missingbits:range\n stop = 6\n cluster-start = ${{buildout:bin-directory}}/zope{0} start\n cluster-stop = ${{buildout:bin-directory}}/zope{0} stop\n\n [cluster]\n recipe = plone.recipe.cluster\n start = ${zopes:cluster-start.forward}\n stop = ${zopes:cluster-stop.reverse}\n\nThis is most useful when the number of zopes might vary for different builds of\nthe same site.\n\nParameters\n~~~~~~~~~~\n\nstart\n Number to start the range at (Default: 0, Optional)\nstop\n Number to stop at, but not including. So start of 0 and stop of 6 will get you [0,1,2,3,4,5]. (Mandatory).\nstep\n Number to increment by. (Default: +1, Optional)\nfoo\n Foo is any variable you choose to set on the recipe. A number of duplicates will be made of it and\n a newline seperated list placed in an output variable. Any occurence of {0} will be replaced with\n a number for the item in the range we are up to. You can delay evaluation of any buildout variables\n you are using by escaping them ({{ and }}). If you don't do this, buildout will have to evaluate them\n before it evaluates this recipe and you might change the order the parts run in.\nfoo.forward\n If you set a variable called foo on the recipe, it will make a foo.forward. This contains the list\n in ascending order.\nfoo.reverse\n If you set a variable called foo on the recipe, it will make a foo.reverse. This contains the list\n in descending order.\n\n\nmissingbits:clone\n-------------------\n\nI don't like copying and pasting things in buildout, i tend to make mistakes. So I clone instead.\n\nA site with 4 zopes might look something like this::\n\n [buildout]\n parts =\n zope0\n zope1\n zope2\n zope3\n\n [zope0]\n <= instance\n http-address = ${hosts:zope}:${ports:zope0}\n event-log = /var/log/zope/www.foo.bar.zope0.event.log\n z2-log = /var/log/zope/www.foo.bar.zope0.Z2.log\n\n [zope1]\n <= instance\n http-address = ${hosts:zope}:${ports:zope1}\n event-log = /var/log/zope/www.foo.bar.zope1.event.log\n z2-log = /var/log/zope/www.foo.bar.zope1.Z2.log\n\n [zope2]\n <= instance\n http-address = ${hosts:zope}:${ports:zope2}\n event-log = /var/log/zope/www.foo.bar.zope2.event.log\n z2-log = /var/log/zope/www.foo.bar.zope2.Z2.log\n\n [zope3]\n <= instance\n http-address = ${hosts:zope}:${ports:zope3}\n event-log = /var/log/zope/www.foo.bar.zope3.event.log\n z2-log = /var/log/zope/www.foo.bar.zope3.Z2.log\n\nWhen the number of zopes can change, we really need to make this more manageable. We\ncould do this instead::\n\n [buildout]\n parts = zope-factory\n\n [zope{0}]\n <= instance\n http-address = ${{hosts:zope}}:${{ports:zope{0}}}\n event-log = /var/log/zope/www.foo.bar.zope{0}.event.log\n z2-log = /var/log/zope/www.foo.bar.zope{0}.Z2.log\n\n [zope-factory]\n recipe = missingbits:clone\n template = zope{0}\n count = 4\n\nParameters\n~~~~~~~~~~\n\ntemplate\n A part to use as a base for cloning. It should not be referenced in parts and it should not be\n reference by other parts, especially if it has a recipe. Any buildout variables it has will\n need to be escaped by using {{ and }}. Any occurences of {0} will be replaced by the number of\n the clone we are on.\nstart\n Number to start the range at (Default: 0, Optional)\nstop\n Number to stop at, but not including. So start of 0 and stop of 6 will get you [0,1,2,3,4,5]. (Mandatory).\nstep\n Number to increment by. (Default: +1, Optional)\nparts\n This variable is set by the recipe and contains a list of the parts that were generated. You can\n pass it to any recipe taking a list of parts, but you cannot pass it to ${buildout:parts} as\n the buildout part is evaluated too early.\n\n\nmissingbits:select\n------------------\n\nThis recipe can be used to change what configuration is used base on other\nvariables. For example, it is most excellent when combined with\nisotoma.recipe.facts::\n\n [facts]\n recipe = isotoma.recipe.facts\n\n [host-lucid]\n somesetting = 1\n\n [host-karmic]\n somesetting = 2\n\n [host]\n recipe = missingbits:select\n case = ${facts:lsb.codename}\n\nWith this example, you would be able to use ``${host:somesetting}`` and know\nthat it is suitable for the environment you are in.\n\n\nmissingbits:echo\n------------------\n\nWhile testing these recipes it was handy to have a no-op recipe that just printed\nsome text. This is that recipe.\n\nYou can print text from your buildout like so::\n\n [buildout]\n parts = echo\n\n [echo]\n recipe = missingbits:echo\n echo = Any text you want here\n\n\nRepository\n----------\n\nThis software is available from our `recipe repository`_ on github.\n\n.. _`recipe repository`: http://github.com/isotoma/missingbits\n\n\nLicense\n-------\n\nCopyright 2011 Isotoma Limited\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n\nChangelog\n=========\n\n0.0.16 (2013-01-23)\n-------------------\n\n- Support loading config from absolute paths.\n\n\n0.0.15 (2012-10-05)\n-------------------\n\n- Update to support 1.6.4.\n\n\n0.0.14 (2012-02-14)\n-------------------\n\n- Improve 1.4.3 support.\n\n\n0.0.13 (2012-02-14)\n-------------------\n\n- Only reset variables that are actually in _raw.\n\n\n0.0.12 (2012-02-14)\n-------------------\n\n- Fix packaging.\n\n\n0.0.11 (2012-02-13)\n-------------------\n\n- The act of importing missingbits will monkey-patch the Options object to\n give you get_bool and get_list helpers.\n\n- Stack: Default buildout options are no longer chosen over values set in the\n stack.\n\n- Stack: More buildout section variables can now be reset from the stack,\n in particular the 'unzip', 'allow-picked-versions', 'newest' and\n 'allowed-eggs-from-site-packages' options.\n\n\n0.0.10 (2012-02-03)\n-------------------\n\n- Add a new recipe called Select. This can be used in conjuction with\n isotoma.recipe.facts to customize your buildout based on the environment you\n are running it in::\n\n [facts]\n recipe = isotoma.recipe.facts\n\n [host-lucid]\n somesetting = 1\n\n [host-karmic]\n somesetting = 2\n\n [host]\n recipe = missingbits:select\n case = ${facts:lsb.codename}\n\n\n0.0.9 (2012-01-30)\n------------------\n\n- Add a method for \"peeking\" at configruation files we haven't loaded yet. This\n is useful if you have awkward inter-dependencies like your Plone config knows\n its preferred version of Zope, but you can't load it till you have loaded\n Zope!\n\n You can use it like this::\n\n value = stack.peek_unloaded(\"someconfig.cfg\", \"somesection\", \"somekey\")\n\n- Add a method for \"peeking\" into data that isn't fully evaluated - data that\n is loaded but before you have called ``apply()``. You can use it like this::\n\n value = stack.peek(\"somesection\", \"somekey\")\n\n\n0.0.8 (2011-09-21)\n------------------\n\n- Don't reset ``self.name`` when resetting things - this works around\n ``${:path}`` being invalid and the settings the stack uses shouldn't be changing\n in flight - its just too weird!\n\n\n0.0.7 (2011-09-15)\n------------------\n\n- Fix optional logic\n\n\n0.0.6 (2011-09-15)\n------------------\n\n- Prior to the injection of any stack configuration, buildout._data is cleared\n (with the exception of the buildout and versions parts), causing any already-\n resolved parts to be re-resolved once the stack has been applied, and the\n original configuration re-applied.\n\n\n0.0.5 (2011-09-09)\n------------------\n\n- Optional config loading support\n\n\n0.0.4 (2011-09-02)\n------------------\n\n- All stacks automatically get a 'path' variable that points to their assets\n- Fix sibpath for namespaced modules\n\n\n0.0.3 (2011-09-02)\n------------------\n\n- Add 'Stack': a utility for packaging buildout as an egg.\n\n\n0.0.2 (2011-08-08)\n------------------\n\n- Fix commit missing from merge\n- Fix python2.4 support\n\n\n0.0.1 (2011-08-05)\n------------------\n\n - Add overlay recipe\n\n0.0.0 (a long long time ago..)\n------------------------------\n\n - Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/isotoma/missingbits", "keywords": "buildout", "license": "Apache Software License", "maintainer": null, "maintainer_email": null, "name": "missingbits", "package_url": "https://pypi.org/project/missingbits/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/missingbits/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/isotoma/missingbits" }, "release_url": "https://pypi.org/project/missingbits/0.0.16/", "requires_dist": null, "requires_python": null, "summary": "Buildout parts that make you smile", "version": "0.0.16" }, "last_serial": 794837, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "dee816fecb33a50ac0ee3b90f53143f2", "sha256": "f3ebd117956c9fc493c0e43a3166863246eefc2c6a4972bbbef2d6e8a3dbcbbe" }, "downloads": -1, "filename": "missingbits-0.0.0.tar.gz", "has_sig": false, "md5_digest": "dee816fecb33a50ac0ee3b90f53143f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4371, "upload_time": "2011-03-09T12:06:29", "url": "https://files.pythonhosted.org/packages/dc/6f/e0ded5081ccdb83194e960d801e41c07b75c81c945f7be7d0e3b24967db0/missingbits-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "5040c118bd3f1bf0aae4f9470d527870", "sha256": "b6cd6aa4df2624d2f506fe51b684a178180a82bc6c73cefa7fb95f6f9c3c16a5" }, "downloads": -1, "filename": "missingbits-0.0.1.zip", "has_sig": false, "md5_digest": "5040c118bd3f1bf0aae4f9470d527870", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11171, "upload_time": "2011-08-05T15:17:38", "url": "https://files.pythonhosted.org/packages/cc/3f/af1e9807cafef0529580ee682200b49a2e94a686815530f9b63d4c7e4255/missingbits-0.0.1.zip" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "ef8f72086d7f41777239ac5f491fd4cb", "sha256": "e9cb501037df972253b4c928b73f988d917bf94891a5db777b0b0766f9b7a7cf" }, "downloads": -1, "filename": "missingbits-0.0.10.zip", "has_sig": false, "md5_digest": "ef8f72086d7f41777239ac5f491fd4cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18437, "upload_time": "2012-02-03T18:34:36", "url": "https://files.pythonhosted.org/packages/37/de/f7b137a72ac8acf574d360ad466f879dd043ba78688f5e848b2ca998b333/missingbits-0.0.10.zip" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "a9d023824b83ea21e2c5ac0840798b1c", "sha256": "8c6496586bcfa6f4175b9b3c277be6139338ca388c4efd014a2d2d067b4c5af8" }, "downloads": -1, "filename": "missingbits-0.0.11.tar.gz", "has_sig": false, "md5_digest": "a9d023824b83ea21e2c5ac0840798b1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12299, "upload_time": "2012-02-14T00:38:17", "url": "https://files.pythonhosted.org/packages/5c/39/c917ddfb2c6851ece918cdc9a0fc0577ed588d52d549a6eb1bb106246896/missingbits-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "4c74790e8565a4271380ccdb6c560a59", "sha256": "6c00dfde5c84d6bcb29ef918ba114e1051e4e9bd0f9a8d4f0ae6e123fbdc81ce" }, "downloads": -1, "filename": "missingbits-0.0.12.tar.gz", "has_sig": false, "md5_digest": "4c74790e8565a4271380ccdb6c560a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12595, "upload_time": "2012-02-14T01:16:31", "url": "https://files.pythonhosted.org/packages/7e/8a/6f1dc0c62d6462ee2ab2bd7034d65773b09066941077e79b3dccf7450f0d/missingbits-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "92fbf74aa0abb661a306f5c9b02befa4", "sha256": "6e65ccd7a680fcea0a86ed65acff037d45267755bcda9c1bdbaf9004956e534f" }, "downloads": -1, "filename": "missingbits-0.0.13.tar.gz", "has_sig": false, "md5_digest": "92fbf74aa0abb661a306f5c9b02befa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12643, "upload_time": "2012-02-14T01:34:00", "url": "https://files.pythonhosted.org/packages/9a/7b/835f1e38bcdda3746a84a0ebea7770aa5358c44040ae58b6d0bbc54154b9/missingbits-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "6b4fbdc01f7727ca54cb344eecb06824", "sha256": "67a3468bfa0e4dd7fe2442050961db78a1226aa234da088d9ce0cf95138c155e" }, "downloads": -1, "filename": "missingbits-0.0.14.tar.gz", "has_sig": false, "md5_digest": "6b4fbdc01f7727ca54cb344eecb06824", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12723, "upload_time": "2012-02-14T11:28:01", "url": "https://files.pythonhosted.org/packages/fd/96/3c401869a5f92aa9e9cc561086ca2fec003f75ed16a4710bc13ab768be62/missingbits-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "6d6050e165c939312cbba7c668f3d2dd", "sha256": "c9dd338caed0599b2c5e56c18549d370467244e1d7a8f288c044fdfff8c88c08" }, "downloads": -1, "filename": "missingbits-0.0.15.zip", "has_sig": false, "md5_digest": "6d6050e165c939312cbba7c668f3d2dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20729, "upload_time": "2012-10-05T10:39:34", "url": "https://files.pythonhosted.org/packages/2c/4c/64f58bc03ca7bf25d13d20496b36f1f7d92b95bc5ecddd769c7c8893d2f7/missingbits-0.0.15.zip" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "89041e55e1a76e385d26e66e056b7fb5", "sha256": "814bfa31f1b0ff2929d2ae7abecc5949e49e85042d621ea9014034c9a0fb9d52" }, "downloads": -1, "filename": "missingbits-0.0.16.zip", "has_sig": false, "md5_digest": "89041e55e1a76e385d26e66e056b7fb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20843, "upload_time": "2013-01-23T11:03:10", "url": "https://files.pythonhosted.org/packages/1c/af/ffe99ac7e1045ad8feaacd5b58a4fe5fdf50efba94a80dbe4a9cd4397826/missingbits-0.0.16.zip" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "c84f68c97ac5d9668859a53b6d150608", "sha256": "892e41734fa46acc896091239b390ac4113f003677ad97dce6eda316ce21050e" }, "downloads": -1, "filename": "missingbits-0.0.2.zip", "has_sig": false, "md5_digest": "c84f68c97ac5d9668859a53b6d150608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11405, "upload_time": "2011-08-08T15:26:05", "url": "https://files.pythonhosted.org/packages/44/c7/580b8293c93f83196d02c5b14aa64ef74f01af0ecb092aea2a1cfea32e46/missingbits-0.0.2.zip" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "94ae92fff555b2cd7fca0a0fc2260b51", "sha256": "c02b8966d5f4618d860398864c7276f2034f211a687317f82f5c9fe693ec96b4" }, "downloads": -1, "filename": "missingbits-0.0.3.zip", "has_sig": false, "md5_digest": "94ae92fff555b2cd7fca0a0fc2260b51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14802, "upload_time": "2011-09-02T15:59:35", "url": "https://files.pythonhosted.org/packages/84/c7/cd98f622eeef5d4435c5cf43b92be5d0d5a550f3a5028afff3903ae2dd57/missingbits-0.0.3.zip" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "4c03be5ddc358e2e6589f9e26bed0420", "sha256": "03a68b37ab07be753244fee88f7f6222dc4cf7f50bffb3c4bc81f1e9ab71b09e" }, "downloads": -1, "filename": "missingbits-0.0.4.zip", "has_sig": false, "md5_digest": "4c03be5ddc358e2e6589f9e26bed0420", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15112, "upload_time": "2011-09-02T17:10:53", "url": "https://files.pythonhosted.org/packages/63/92/8fc141b9830112764e5120ae9703df79f7352f6e366cb01b5b6b453a174b/missingbits-0.0.4.zip" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "85801b31b578fe35efe6bb9b933a338e", "sha256": "71cba5b2c9b5203445d67adb7aa9d3fad8140b45dd621a446b18c93ac787b555" }, "downloads": -1, "filename": "missingbits-0.0.5.zip", "has_sig": false, "md5_digest": "85801b31b578fe35efe6bb9b933a338e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15227, "upload_time": "2011-09-09T16:45:37", "url": "https://files.pythonhosted.org/packages/35/f8/61db15a157eba1fbc3e8e640185cad9e967e5a032f1c41f31d128c06ca7f/missingbits-0.0.5.zip" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "e26f437b0ce0de5196481213959a6c74", "sha256": "5275f801ad50d38e7c83f944e963a81d6f301a713e6a1865aff0f6488d358e97" }, "downloads": -1, "filename": "missingbits-0.0.6.zip", "has_sig": false, "md5_digest": "e26f437b0ce0de5196481213959a6c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15283, "upload_time": "2011-09-12T13:38:33", "url": "https://files.pythonhosted.org/packages/fc/1a/96f01169a8259c6452357b64a278465f34746bec0c06bb3d4a144a6369eb/missingbits-0.0.6.zip" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "1ab876bc129fe52094ad2f9a754e4c74", "sha256": "0d118fe5de432e3b86c3ba98c2a26e2692cd708a0e4886f550375cd915b2712c" }, "downloads": -1, "filename": "missingbits-0.0.7.zip", "has_sig": false, "md5_digest": "1ab876bc129fe52094ad2f9a754e4c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15910, "upload_time": "2011-09-15T18:38:32", "url": "https://files.pythonhosted.org/packages/18/97/63a21583c8d7439a045f397bc20d7257d526d84034b93ab5da67bc999d88/missingbits-0.0.7.zip" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "ee2614345ca6edc686c227747c40ac6e", "sha256": "5d4d960143c777da84efe9a56ac8aa16db343aff1e0a73260fca169e922c9aad" }, "downloads": -1, "filename": "missingbits-0.0.8.zip", "has_sig": false, "md5_digest": "ee2614345ca6edc686c227747c40ac6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16233, "upload_time": "2011-09-21T16:11:05", "url": "https://files.pythonhosted.org/packages/cc/a3/3f35ef4e5b3f2f158f5eb997cb33bbbd2c3ae9474666b3e1e5cecc63040a/missingbits-0.0.8.zip" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "b113a3519ce3c135286f19b3834799cc", "sha256": "689c722608c1fc90b1265c52f303957839e09fdc0068c6617657494d0996d3dd" }, "downloads": -1, "filename": "missingbits-0.0.9.zip", "has_sig": false, "md5_digest": "b113a3519ce3c135286f19b3834799cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17439, "upload_time": "2012-01-30T15:07:37", "url": "https://files.pythonhosted.org/packages/75/1d/9756f46ac051345108e224e7a26b583c01f9ede877c778942ca86d940882/missingbits-0.0.9.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "89041e55e1a76e385d26e66e056b7fb5", "sha256": "814bfa31f1b0ff2929d2ae7abecc5949e49e85042d621ea9014034c9a0fb9d52" }, "downloads": -1, "filename": "missingbits-0.0.16.zip", "has_sig": false, "md5_digest": "89041e55e1a76e385d26e66e056b7fb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20843, "upload_time": "2013-01-23T11:03:10", "url": "https://files.pythonhosted.org/packages/1c/af/ffe99ac7e1045ad8feaacd5b58a4fe5fdf50efba94a80dbe4a9cd4397826/missingbits-0.0.16.zip" } ] }