{ "info": { "author": "Serge Renfer", "author_email": "serge.renfer@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Buildout", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Topic :: Software Development :: Build Tools" ], "description": "- Code repository:https://github.com/renfers/ageliaco.recipe.csvconfig\n- Questions and comments to serge.renfer at gmail dot com\n\n=========================\nageliaco.recipe.csvconfig\n=========================\n\nThe idea behind this recipe is to have only one source of information for your buildout\nvariable settings.\n\nWhen one is confronted with several deployments which are very similar, then you gather\nthe variable elements into a csv file (just like a flat representation of several columns).\n\nFor instance, let's say you need to generate several Plone instances and you want to gather\nthem in a same buildout, because you will add a supervisor and a cache with varnish, plus\na config for the nginx that runs on your server.\n\nYour CSV file, main.csv::\n\n instance,port,domain,subdomain,plone,emailadmin\n albertcair,15004,albertcair.ch,base.albertcair.ch,/,albert.cair@gmail.com\n albertcair,15004,albertcair.ch,albertcair.ch,/alberto,albert.cair@gmail.com\n albertcair,15004,albertcair.ch,www.albertcair.ch,/alberto,albert.cair@gmail.com\n albertcair,15004,albertcair.ch,histoire.albertcair.ch,/bestie,albert.cair@gmail.com\n albertcair,15004,albertcair.ch,images.albertcair.ch,/images,albert.cair@gmail.com\n albertcair,15004,albertcair.ch,italiano.albertcair.ch,/italiano,albert.cair@gmail.com\n bopip,15005,bopip.ch,base.bopip.ch,/,jm.del@gmail.com\n bopip,15005,bopip.ch,bopip.ch,/bopip,jm.del@gmail.com\n bopip,15005,bopip.ch,www.bopip.ch,/bopip,jm.del@gmail.com\n bopip,15005,bopip.ch,jaun.bopip.ch,/jaun,jm.del@gmail.com\n bopip,15005,bopip.ch,java.bopip.ch,/java,jm.del@gmail.com\n bopip,15005,bopip.ch,math.bopip.ch,/math,jm.del@gmail.com\n bopip,15005,bopip.ch,ecole-en-sauvygnon.ch,/ensauvygnon,jm.del@gmail.com\n bopip,15005,bopip.ch,www.ecole-en-sauvygnon.ch,/ensauvygnon,jm.del@gmail.com\n\nIn your buildout you will be able to spread those information at different levels, \nthat means on different templates.\nLet's make a *templates* directory in our buildout and we put our first template\n\ninstances.cfg.in::\n\n [$${subdomain}-parameters]\n port = $${port}\n host = 127.0.0.1\n plone = $${plone}\n name = $${instance}\n\nand a second one\n\nvarsetting.cfg.in::\n\n [var-settings]\n vh-targets =\n $${subdomain}:$${subdomain}-parameters\n \n instances-targets =\n $${instance}:$${instance}-parameters\n \n backup-targets =\n backup-$${instance}:$${instance}-parameters\n \n cron-targets =\n cron-$${instance}:$${instance}-parameters\n \n supervisor =\n 20 $${instance} ${buildout:directory}/bin/$${instance} [console] true ${users:zope}\n \n eventlistener =\n $${instance}-HttpOk TICK_60 ${buildout:bin-directory}/httpok [-m $${emailadmin} -p $${instance} http://localhost:11011]\n\n\nNotice that our variables have the ``$${var}`` format.\n\nIn a buildout file you will have a part that has the following form:\n\nmain.cfg::\n\n [buildout]\n parts = main\n \n eggs = ageliaco.recipe.csvconfig\n \n \n [main]\n recipe = ageliaco.recipe.csvconfig:default\n csvfile = main.csv\n templates = templates/varsetting.cfg.in\n templates/instances.cfg.in\n\nRunning the following commands::\n\n ../Python-2.7/bin/python bootstrap.py -c main.cfg\n bin/buildout -c main.cfg\n \nIt will generate 2 files in your buildout directory, \n\nvarsetting.cfg::\n\n [var-settings]\n vh-targets = \n base.albertcair.ch:base.albertcair.ch-parameters \n albertcair.ch:albertcair.ch-parameters \n www.albertcair.ch:www.albertcair.ch-parameters \n histoire.albertcair.ch:histoire.albertcair.ch-parameters \n images.albertcair.ch:images.albertcair.ch-parameters \n italiano.albertcair.ch:italiano.albertcair.ch-parameters \n base.bopip.ch:base.bopip.ch-parameters \n bopip.ch:bopip.ch-parameters \n www.bopip.ch:www.bopip.ch-parameters \n jaun.bopip.ch:jaun.bopip.ch-parameters \n java.bopip.ch:java.bopip.ch-parameters \n math.bopip.ch:math.bopip.ch-parameters \n ecole-en-sauvygnon.ch:ecole-en-sauvygnon.ch-parameters \n www.ecole-en-sauvygnon.ch:www.ecole-en-sauvygnon.ch-parameters\n instances-targets = \n albertcair:albertcair-parameters \n bopip:bopip-parameters\n backup-targets = \n backup-albertcair:albertcair-parameters \n backup-bopip:bopip-parameters\n cron-targets = \n cron-albertcair:albertcair-parameters \n cron-bopip:bopip-parameters\n supervisor = \n 20 albertcair ${buildout:directory}/bin/albertcair [console] true ${users:zope} \n 20 bopip ${buildout:directory}/bin/bopip [console] true ${users:zope}\n eventlistener = \n albertcair-HttpOk TICK_60 ${buildout:bin-directory}/httpok [-m albert.cair@gmail.com -p albertcair http://localhost:11011] \n bopip-HttpOk TICK_60 ${buildout:bin-directory}/httpok [-m jm.del@gmail.com -p bopip http://localhost:11011]\n\nand \n\ninstances.cfg::\n\n [base.albertcair.ch-parameters]\n port = 15004\n host = 127.0.0.1\n plone = /\n name = albertcair\n \n [albertcair.ch-parameters]\n port = 15004\n host = 127.0.0.1\n plone = /alberto\n name = albertcair\n \n [www.albertcair.ch-parameters]\n port = 15004\n host = 127.0.0.1\n plone = /alberto\n name = albertcair\n \n [histoire.albertcair.ch-parameters]\n port = 15004\n host = 127.0.0.1\n plone = /bestie\n name = albertcair\n \n [images.albertcair.ch-parameters]\n port = 15004\n host = 127.0.0.1\n plone = /images\n name = albertcair\n \n [italiano.albertcair.ch-parameters]\n port = 15004\n host = 127.0.0.1\n plone = /italiano\n name = albertcair\n \n [base.bopip.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /\n name = bopip\n \n [bopip.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /bopip\n name = bopip\n \n [www.bopip.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /bopip\n name = bopip\n \n [jaun.bopip.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /jaun\n name = bopip\n \n [java.bopip.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /java\n name = bopip\n \n [math.bopip.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /math\n name = bopip\n \n [ecole-en-sauvygnon.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /ensauvygnon\n name = bopip\n \n [www.ecole-en-sauvygnon.ch-parameters]\n port = 15005\n host = 127.0.0.1\n plone = /ensauvygnon\n name = bopip\n \nvarsetting.cfg.in exposes one kind of variable substitution, when a variable is present in\nan option value => the option value is repeated based on the number of different result we \nhave in the csv file configuration, for instance the \"instance\" column in my csv file has \n2 different values then, based on that the \"eventlistner\" option expands in a 2 lines value.\n\ninstances.cfg.in exposes another kind of variable substitution, where the variable is present\nin the section identifier => the section with the \"subdomain\" variable will epxand in as\nmany sections as there are different values for this variable in the csv file.\n\nCSV as flat database :\n----------------------\nLet's see another example to show you that the csv file can be just a flat representation \nof a relational database.\n\nThe csv file, testmultikey.csv::\n\n prenom, nom, naissance, profession\n bob,wut,1961,doc\n marie,wut,1962,maitresse\n serge,ren,1960,prof\n coco,ren,1961,maitresse\n \nThe template, templates/contact.cfg.in::\n\n [contact]\n $${prenom}-$${nom}-$${naissance} = $${profession}\n \n [famille-$${nom}]\n $${prenom}-naissance = $${naissance}\n $${prenom}-profession = $${profession}\n \n [annee-de-naissance-$${naissance}]\n $${prenom}-$${nom} = $${profession}\n \n [$${profession}]\n nom = $${prenom}-$${nom}-$${naissance}\n\nand now the buildout, buildout.cfg::\n\n [buildout]\n \n parts = main\n \n develop = src/ageliaco.recipe.csvconfig\n eggs =\n ageliaco.recipe.csvconfig\n \n [main]\n recipe = ageliaco.recipe.csvconfig\n templates = templates/contact.cfg.in\n csvfile = testmultikey.csv\n\nand the result of `bin/buildout`, contact.cfg::\n\n [contact]\n bob-wut-1961 = doc\n coco-ren-1961 = maitresse\n marie-wut-1962 = maitresse\n serge-ren-1960 = prof\n \n [famille-ren]\n coco-naissance = 1961\n serge-naissance = 1960\n coco-profession = maitresse\n serge-profession = prof\n \n [famille-wut]\n bob-naissance = 1961\n marie-naissance = 1962\n bob-profession = doc\n marie-profession = maitresse\n \n [annee-de-naissance-1961]\n bob-wut = doc\n coco-ren = maitresse\n \n [annee-de-naissance-1962]\n marie-wut = maitresse\n \n [annee-de-naissance-1960]\n serge-ren = prof\n \n [maitresse]\n nom = marie-wut-1962\n coco-ren-1961\n \n [doc]\n nom = bob-wut-1961\n \n [prof]\n nom = serge-ren-1960\n\n\nDetailed Documentation\n**********************\n\nSupported options\n=================\n\nThe recipe supports the following options:\n\n.. Note to recipe author!\n ----------------------\n For each option the recipe uses you should include a description\n about the purpose of the option, the format and semantics of the\n values it accepts, whether it is mandatory or optional and what the\n default value is if it is omitted.\n\ncsvfile\n this is a path (relative or absolute) to csv file that will be used by the recipe\n\ntemplates\n one (or more) path to a template file => by default, it is expected a name with \".in\" \n suffix and a file with the same name without the suffix \".in\" will be generate in the\n buildout directory. If you want to use another suffix or naming convention you will have\n to use an alternative format with a \":\" to separate the template path to the target path,\n \n This alternate format with \":\" is also interesting if you want to generate a file in\n a different directory than the buildout-directory!\n \nfor instance::\n\n templates = templates/instances.cfg.in\n \nthat will generate a ./instances.cfg file (in the buildout directory) or\n\n templates = templates/init-cache.cfg:production/cache.cfg\n \nthat will generate a production/cache.cfg file (notice that in this example it is a relative path, \nbut it can also be a full path)\n \n\n\n\n\nContributors\n************\n\n\"renfers\", Author\n\n\nChange history\n**************\n\n0.7 (2013-01-10)\n----------------\n\n- changed from ConfigParser to configparser\n- added \"+=\" and \"-=\" to the delimiters, but could not recreate the same operator on options\n it passes automatically to \"=\" (=> still a feature to implement)\n [\"renfers\"]\n \n0.6 (2013-01-07)\n----------------\n\n- change variable call from ${} to $${} to easily substitute variables embedded in buildout variables\n- added \"+\" to the generated file mode (\"wb+\" instead of \"wb\")\n [\"renfers\"]\n\n0.5 (2012-12-28)\n----------------\n\n- Documentation updated\n [\"renfers\"]\n\n\n0.4 (2012-12-26)\n----------------\n\n- rewrite to be sure to take into account multiple value keys. For instance, if you have\none or several variables on a part name, you can consider this set becomes a key and if there are\nvariables in the options we only consider values that for which key values match those of\nthe part. The same can apply when the left part of an option has one or several variables\nthen variables on the right part can only apply to values that have the same key values\n(the ones from the left part).\n [\"renfers\"]\n\n\n\n0.3 (2012-12-19)\n----------------\n\n- Documentation updated\n [\"renfers\"]\n\n0.2 (2012-12-19)\n----------------\n\n- Changed \"update\" to redo the install on update\n [\"renfers\"]\n\n0.1 (2012-12-18)\n----------------\n\n- Created recipe with ZopeSkel\n [\"renfers\"]\n\n\nDownload\n********", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/renfers/ageliaco.recipe.csvconfig", "keywords": "buildout recipe", "license": "ZPL", "maintainer": null, "maintainer_email": null, "name": "ageliaco.recipe.csvconfig", "package_url": "https://pypi.org/project/ageliaco.recipe.csvconfig/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ageliaco.recipe.csvconfig/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/renfers/ageliaco.recipe.csvconfig" }, "release_url": "https://pypi.org/project/ageliaco.recipe.csvconfig/0.12/", "requires_dist": null, "requires_python": null, "summary": "Use a CSV file to populate buildout templates", "version": "0.12" }, "last_serial": 1661773, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "826ecfcbdd5f263cf901956b7b86fa60", "sha256": "7c978fd0d4b85fc3a0a93b51b79848587c3c7b4b4c8ec198f2d83c86fabb3fbc" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.1-py2.6.egg", "has_sig": false, "md5_digest": "826ecfcbdd5f263cf901956b7b86fa60", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 11323, "upload_time": "2012-12-19T13:42:34", "url": "https://files.pythonhosted.org/packages/f0/b2/22e61abd4ba3cc888edd8f67a132b8a1e502f3d7b321fa6a0b8a560465f5/ageliaco.recipe.csvconfig-0.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "c91264f1dcbff506b0545e5bd5307b02", "sha256": "2bc6ce193b12bb3c7e6e8cff37de8d8860d9787d2cddda3034a05b2ad787c8b0" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.1.tar.gz", "has_sig": false, "md5_digest": "c91264f1dcbff506b0545e5bd5307b02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6328, "upload_time": "2012-12-19T13:42:33", "url": "https://files.pythonhosted.org/packages/e3/c4/fe3021daf02225a580e11057bd6779e396fb851e3fdf9b40c177cd00e49a/ageliaco.recipe.csvconfig-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "7e99e264b567298ba321383cbd6b22c9", "sha256": "bb847826a763b8ba51f5460156e01ad1bc0ddeece9c7f005721c11f98efb2443" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.10-py2.7.egg", "has_sig": false, "md5_digest": "7e99e264b567298ba321383cbd6b22c9", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 15005, "upload_time": "2015-08-03T10:17:38", "url": "https://files.pythonhosted.org/packages/d5/e2/66c7fd52b68cff0cea16a90e3e1f88152109d1624d684efa60b68e7a0ff4/ageliaco.recipe.csvconfig-0.10-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "66c6d12d7e1b9de6991ebe1eac318fe5", "sha256": "95d000f61bfa2bdb6219d06fdcf2a6514e2fd1f02e0473944bffc3c960edb1de" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.10.tar.gz", "has_sig": false, "md5_digest": "66c6d12d7e1b9de6991ebe1eac318fe5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10315, "upload_time": "2015-08-03T10:17:32", "url": "https://files.pythonhosted.org/packages/10/f0/ca736929f38e82f1fe6da50b9a757e3ddd5eb2bab815b39f6b8aff88244d/ageliaco.recipe.csvconfig-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "3786ae021711130d7a39e535c2114321", "sha256": "98966afa925b9948586803afe08531073108a400f2ed50e7f1e29de5ae302f4d" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.11-py2.7.egg", "has_sig": false, "md5_digest": "3786ae021711130d7a39e535c2114321", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 15031, "upload_time": "2015-08-03T10:22:01", "url": "https://files.pythonhosted.org/packages/fc/15/6747c54b8ebb1987ee6be9a531d2c6e95fa53e8d37191e6357de19f1ecb3/ageliaco.recipe.csvconfig-0.11-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "61138105d955058f10c6ec1a1fe51759", "sha256": "589619fd4c9a49b43a5023e01e9938397278a474e9824813342ceeeea03ecc75" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.11.tar.gz", "has_sig": false, "md5_digest": "61138105d955058f10c6ec1a1fe51759", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 77705, "upload_time": "2015-08-03T10:21:56", "url": "https://files.pythonhosted.org/packages/fd/84/de532106264eb98f15abe9a43f7376bab2b253a5b02dd0b107ba33a94433/ageliaco.recipe.csvconfig-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "ec541c721beda46efbb4cf5efc4bc2fe", "sha256": "0e1e7dce1ce578c75ef06a4162cf4d8cf049642f20f5294ffc3899149c3f1edf" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.12-py2.7.egg", "has_sig": false, "md5_digest": "ec541c721beda46efbb4cf5efc4bc2fe", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 15056, "upload_time": "2015-08-03T11:20:06", "url": "https://files.pythonhosted.org/packages/55/06/0ac2a29086b72fa9e0d1140fcfa54e7e277b36e1bb5b915ac9c85812a8c1/ageliaco.recipe.csvconfig-0.12-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1deef09c16a11e129644ac1f839231fd", "sha256": "db481fbf9383b70f6b862503f2b448fd3694d04423a166c83b0eb1c06cde1719" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.12.tar.gz", "has_sig": false, "md5_digest": "1deef09c16a11e129644ac1f839231fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 169121, "upload_time": "2015-08-03T11:20:02", "url": "https://files.pythonhosted.org/packages/f3/35/549ec7c909ed2c9df8698e746e91c510ea39d376cce1dafd0d2d354aece7/ageliaco.recipe.csvconfig-0.12.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "5fd28b12388b303d6cac71502b1500cc", "sha256": "de78ab52f85e5661feca30f357b1036fc4896f4b6bacd168f1aba62614fc6e25" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.2-py2.6.egg", "has_sig": false, "md5_digest": "5fd28b12388b303d6cac71502b1500cc", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 12943, "upload_time": "2012-12-19T15:29:51", "url": "https://files.pythonhosted.org/packages/48/15/6ef48fbcd84e14b78bd9d9379b609b275399d11f7fd56d2e2bb0e376253e/ageliaco.recipe.csvconfig-0.2-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "c312c42a51accf348711346c6987f285", "sha256": "54192c413add0c50974160c8ff47103156a181887fdac40a0cc764f822372ef2" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.2.tar.gz", "has_sig": false, "md5_digest": "c312c42a51accf348711346c6987f285", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8668, "upload_time": "2012-12-19T15:29:50", "url": "https://files.pythonhosted.org/packages/2b/8f/228e5928beee75874a3a87d8ebfdb4a5f1177f020a2b8b1a2de659252281/ageliaco.recipe.csvconfig-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "0e1922259325ac3a354f032d841aa058", "sha256": "63eda7bcf7f95d25b734db381095c241e72b55c1c6327544f2af56b7d035abc8" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.3-py2.6.egg", "has_sig": false, "md5_digest": "0e1922259325ac3a354f032d841aa058", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 12521, "upload_time": "2012-12-19T15:55:53", "url": "https://files.pythonhosted.org/packages/00/dc/707a9a09184a9defa7c18faeedc1f319d87b1927366918dab54ad232c5e5/ageliaco.recipe.csvconfig-0.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "7eefecd91e2e7d06592f7ec5f316f8c4", "sha256": "1723ce23f53339b64cd103d901749238e6111aafd636921930ac667b3393b069" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.3.tar.gz", "has_sig": false, "md5_digest": "7eefecd91e2e7d06592f7ec5f316f8c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8439, "upload_time": "2012-12-19T15:55:50", "url": "https://files.pythonhosted.org/packages/52/85/9bd93b0e5437c6324c4c45fe0215fb8ac9856d8ddee2ee67a0b72fff7bcc/ageliaco.recipe.csvconfig-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "90ea296b059dff061c86a782280c770b", "sha256": "beb2487b778f19e610e75019e6201c90e9f9a9b1ba700a0aa18ab5812b016db7" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.4-py2.6.egg", "has_sig": false, "md5_digest": "90ea296b059dff061c86a782280c770b", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 13553, "upload_time": "2012-12-26T00:21:25", "url": "https://files.pythonhosted.org/packages/50/b1/e47537ccc690cf1815bda564045ac399987b36ba1ead943caa8f2770ac54/ageliaco.recipe.csvconfig-0.4-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "129660075bde0ab75784091916004dc2", "sha256": "646c3e73eefdfd3d8911b7eefb7f104301f8c7e7aa38f3b7536d975d591a5c62" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.4.tar.gz", "has_sig": false, "md5_digest": "129660075bde0ab75784091916004dc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8842, "upload_time": "2012-12-26T00:21:23", "url": "https://files.pythonhosted.org/packages/d2/45/de402edf37ab4cd18a03feb6651c3530cf49a4a28179b7cc67b07bef51f7/ageliaco.recipe.csvconfig-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "835cb2f2b3050f3f8162c3008b3581b5", "sha256": "f81703735b303bf106c7cc46aca6ac4a3459f42977a6abd90ef9973845c9703b" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.5-py2.6.egg", "has_sig": false, "md5_digest": "835cb2f2b3050f3f8162c3008b3581b5", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 14228, "upload_time": "2012-12-28T22:21:12", "url": "https://files.pythonhosted.org/packages/17/5c/8af4e84cb2e64d7a208ecd54973dbee0cb4f7ea2504de4ca556a7493bd97/ageliaco.recipe.csvconfig-0.5-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "34f0fc47e8634e37d64c1b5ea8f6f0fe", "sha256": "3eed26ae11874da7dd3af596f9945a85f87903c03a1d5e0af52eec29efeffff3" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.5.tar.gz", "has_sig": false, "md5_digest": "34f0fc47e8634e37d64c1b5ea8f6f0fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9778, "upload_time": "2012-12-28T22:21:11", "url": "https://files.pythonhosted.org/packages/ec/03/e7a7a623260aae02dcd42de27375df321b18648e063f4891cee4ae041b1d/ageliaco.recipe.csvconfig-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "c423e36f2ac6dbe50eb8b8704e768238", "sha256": "7248ca8aee5acea38f6e8b535a0e9657efe18b54a5d01954183a176865a8a82c" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.6-py2.6.egg", "has_sig": false, "md5_digest": "c423e36f2ac6dbe50eb8b8704e768238", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 14322, "upload_time": "2013-01-07T20:34:53", "url": "https://files.pythonhosted.org/packages/37/58/2b33e9e1de3ce03ce1846535e69b700a5916853bd01a425ba7da2555c50c/ageliaco.recipe.csvconfig-0.6-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "d6633f0f5cd159d37318eda0c3995b9c", "sha256": "6ae319c1560d21f781f36beb5a7f9c9f832935ecf2ed9f11eb171b431b71dd2d" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.6.tar.gz", "has_sig": false, "md5_digest": "d6633f0f5cd159d37318eda0c3995b9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9870, "upload_time": "2013-01-07T20:34:51", "url": "https://files.pythonhosted.org/packages/d9/72/6912845550187853bc038ae6ae5cbe8262df6dded9c3a230cb8f5fbc8d43/ageliaco.recipe.csvconfig-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "48e1cb74da8ef358d96d505c5fae5fca", "sha256": "256191922bfe12ca6891eb408155567ed27a396c42acd1041c9d04f117fc0e45" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.7-py2.6.egg", "has_sig": false, "md5_digest": "48e1cb74da8ef358d96d505c5fae5fca", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 15008, "upload_time": "2013-01-10T17:22:14", "url": "https://files.pythonhosted.org/packages/77/77/e7d90adffb04e4e0fac00be448ad287402df1596266d8015123b0a1f297b/ageliaco.recipe.csvconfig-0.7-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "18f98cf117becca7e5fa86d2dc612889", "sha256": "661a21989f1bb41f3c50eff0aa4c6176546c7f6fbffc4e9cb1e428b2bd32ed93" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.7.tar.gz", "has_sig": false, "md5_digest": "18f98cf117becca7e5fa86d2dc612889", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10935, "upload_time": "2013-01-10T17:22:11", "url": "https://files.pythonhosted.org/packages/21/19/c9dc14dd6ebc30902fb9f750035a8d1341f993c713cc7b816b9c3fc4d32f/ageliaco.recipe.csvconfig-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "89f26ed5b177d4cb6894e58d32d26675", "sha256": "1f03ffec39da2ce4d378880b054929608082cf6ae57243e1c1366f807c5c2e7b" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.8-py2.7.egg", "has_sig": false, "md5_digest": "89f26ed5b177d4cb6894e58d32d26675", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 14978, "upload_time": "2013-03-21T14:38:58", "url": "https://files.pythonhosted.org/packages/2b/21/1f1351af39c998a400bba65016351c19ad820f57134c412293fcf7eb124e/ageliaco.recipe.csvconfig-0.8-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "50b1eb78bfc6dbcb2a75d09b71806d14", "sha256": "9293171df5e64753d04638ba3efd0e47f77248a7e4a7c359b02b8c81b97a0bcc" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.8.tar.gz", "has_sig": false, "md5_digest": "50b1eb78bfc6dbcb2a75d09b71806d14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10306, "upload_time": "2013-03-21T14:38:53", "url": "https://files.pythonhosted.org/packages/4d/41/1273fe597078be3431ebbeb67b02f99fabcaf3c8122da814f0b0e296249c/ageliaco.recipe.csvconfig-0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ec541c721beda46efbb4cf5efc4bc2fe", "sha256": "0e1e7dce1ce578c75ef06a4162cf4d8cf049642f20f5294ffc3899149c3f1edf" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.12-py2.7.egg", "has_sig": false, "md5_digest": "ec541c721beda46efbb4cf5efc4bc2fe", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 15056, "upload_time": "2015-08-03T11:20:06", "url": "https://files.pythonhosted.org/packages/55/06/0ac2a29086b72fa9e0d1140fcfa54e7e277b36e1bb5b915ac9c85812a8c1/ageliaco.recipe.csvconfig-0.12-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1deef09c16a11e129644ac1f839231fd", "sha256": "db481fbf9383b70f6b862503f2b448fd3694d04423a166c83b0eb1c06cde1719" }, "downloads": -1, "filename": "ageliaco.recipe.csvconfig-0.12.tar.gz", "has_sig": false, "md5_digest": "1deef09c16a11e129644ac1f839231fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 169121, "upload_time": "2015-08-03T11:20:02", "url": "https://files.pythonhosted.org/packages/f3/35/549ec7c909ed2c9df8698e746e91c510ea39d376cce1dafd0d2d354aece7/ageliaco.recipe.csvconfig-0.12.tar.gz" } ] }