{ "info": { "author": "Whit Morriss (et al.)", "author_email": "whit-at-surveymonkey-dot-com", "bugtrack_url": null, "classifiers": [ "Framework :: Pylons", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" ], "description": "================\n Cheese Prism\n================\n\n.. image:: https://secure.travis-ci.org/whitmo/CheesePrism.png\n\nA simple application for managing a static python package index. It\nborrows heavily from `BasketWeaver\n`_ and `cheese_emporium\n`_. It leverages `pip\n`_ and setuptools/`distribute\n`_ for various package\nmanagement tasks.\n\n\nRunning\n=======\n\nDev\n---\n\nInstall\n~~~~~~~\n\nThere are 3 main ways to get your CheesePrism up and running depending\non your particular needs.\n\n 1. **'Strap it**: \n\n Download the most current strap file that contains\n CheesePrism and all of it's dependencies from `the strappery\n `_::\n\n $ curl https://github.com/downloads/whitmo/Strap/CheesePrism.strap.pybundle\n $ python CheesePrism.strap.pybundle new-prism-env\n\n\n If you are already in an activated virtualenv, the prism is\n installed there.\n\n 2. Pip install the package from pypi:\n\n Activate your virtual env. Then either check out the code to your chosen location::\n\n $ git clone git://github.com/SurveyMonkey/CheesePrism.git\n\n and install::\n\n $ cd CheesePrism; pip install -e ./\n\n 3. Pip install the source:\n\n Use pip to clone and install directly to ``$VIRTUAL_ENV/src``::\n\n $ pip install git+git://github.com/SurveyMonkey/CheesePrism.git#egg=CheesePrism\n $ cd $VIRTUAL_ENV/src/cheeseprism\n\nTest\n~~~~\n\nIf you have installed the source, to run the tests, first install the\ntest requirements::\n \n $ cd CheesePrism\n $ pip install -r tests-require.txt\n \nThen::\n\n $ nosetests -vv\n\nThis will run tests and spit out coverage.\n\n\nRun\n~~~\n\nThe following will start the application and a static file server for\n`CheesePrism` suitable for testing and development::\n\n $ paster serve development.ini\n\nYou will need to install `PasteScript `_\nin order to run this command (``easy_install PasteScript``).\n\n**If** you have not installed the source (ie. you installed the\npackage or from the strap file), you will need to copy the\ndevelopment.ini to a convient location. \n\nYou will also need to set the ini key ``cheeseprism.file_root`` to the\ndirectory you wish your index files to live in. \n\nThis directory may not exist yet, or could be an empty directory. If\nthe directory contains well formed archives, it will build the index\nfrom what it finds there.\n\n\nProduction\n----------\n\n``CheesePrism`` doesn't pretend that it or python servers in general \nexcel at serving flat files.\n\nFor a more durable and performantized setup, you will want to split the\nserving between a wsgi host for the management application and a\nindustrial strength file server (say nginx).\n\n\nConfigure Nginx\n~~~~~~~~~~~~~~~\n\nSee ``doc/sample-nginx.conf`` and replace ``alias CheesePrism/files;`` and\n``alias CheesePrism/static`` with your fileroot and static filepath.\n \n.. todo::\n\n have start up announce static and file_root (and document)\n\n\nServe management app\n~~~~~~~~~~~~~~~~~~~~\n\nUse the prod.ini (edited for your setup) for simplest serving. Be sure\nto remove such things as ``pyramid.includes = pyramid_debugtoolbar``\nif security is a concern::\n\n $ paster serve prod.ini\n\nSane people use something like upstart or `supervisord `_ to manage this process.\n\n.. todo:\n ini config generation script\n \n\nHow to use\n==========\n\n\nRelease into your index\n-----------------------\n\nCheesePrism understand the upload interface of pypi. This means for\npython2.6 and better you can setup your ``~/.pypirc`` and then upload to\nyour prism as you would `pypi `_::\n\n [distutils]\n index-servers =\n pypi\n local\n\n\n [pypi]\n username:user\n password:secret\n\n [local]\n # your prism of fromage\n username:user\n password:secret\n repository:http://mycheese/simple\n\n\nThe you can upload a source ala::\n\n $ cd /src/MyAwesomePyPkg\n $ python setup.py sdist upload -r local\n\n\n**Note**: The prism currently has the *most* basic support for pypi's\nbasic auth scheme. This mainly exists for the purpose of grabbing the\nidentity of who puports to be uploading a package, rather than any\nactual security. If you need more, it should provide a starting point\nfor extension (see `pyramid documentation `_ \nfor more information on extending pyramid apps).\n\n\nInstall from your index\n-----------------------\n\n**Now** your package is available for install from your prism::\n\n $ pip install -i http://mycheese/index/ MyAwesomePyPkg\n\nAll dependencies of ``MyAwesomePyPkg`` will also come from your prism,\nso make sure they are there (coming feature will inspect your release\nand do the needful).\n\n\nPopulate your index with your dependencies \n------------------------------------------\n\nThere are 3 main ways to load files: \n\n 1. If you put archives into the file root of your index and restart\n the app, it will generate index entries for them. There are plans\n to make this automagical soon so a restart is not required.\n\n 2. Through the 'Load Requirements' page you may upload a pip\n requirements files that CheesePrism will use to populate your\n index. Easiest way to create a pip requirements file for a\n virtualenv?::\n\n $ pip freeze -l > myawesomerequirement.txt\n\n 3. Use the \"Find Package\" page to search pypi and load packages into\n the index. Currently this utilizes some state change on GET but \n does remain idempotent (to be fixed soon).\n\n\nJSON API\n--------\n\nThere is also rudimentary read only json api::\n\n $ curl GET http://mycheese/index/index.json\n\nThe resulting json is a hash of objects keyed by md5 hashes of each\narchive. Let's imagine our index only holds webob::\n\n {u'1b6795baf23f6c1553186a0a8b1a2621':{u'added': 1325609450.792506,\n u'filename': u'WebOb-1.2b2.zip',\n u'name': u'WebOb',\n u'version': u'1.2b2'}}\n\nHTTP API\n--------\n\nFiles may be added to the index from pypi via a not so RESTful interface \nthat will soon go away. Provided ``name`` and ``version`` exist in PyPi, the \nfollowing will download the file from pypi and register it with the index::\n\n $ curl GET http://mycheese/package/{name}/{version}\n\n\nFuture\n======\n\nSome features we plan to implement in the near future:\n\n * **Multi-index support**: The general idea is that you can evolve\n indexes rather like requirements files but by explicit limiting of\n membership in a group rather than specification that requires\n talking to an external index. One archive might exist in multiple\n indexes (but always serve from same location to preserve pip\n caching).\n \n This would include a ui for select member archives to compose an new index as\n well as cloning and extending an existing index.\n\n * **Less crap work**: automatic dependency loading for releases and\n packages loaded via find packages. A file watcher for the repo that\n rebuilds the appropriate parts of the index when files are added\n and removed.\n\n * **Better readonly api**: versions.json for each package with the data\n in index.json provided in a more easily consumable fashion.\n \n * **Better REST**: Make ``POST /packages/{name}/{version}`` to grab a package from PyPi. Make ``GET /packages/{name}/{version}``\n provide data about the package and indicate whether the package current lives in index or not.\n\n * **Proper sphinx documentation**: yup.\n\n\nContact / Wanna get involved?\n=============================\n\nPull requests welcome! \n\nI'm on freenode at *#pyramid*, *#surveymonkey*, or *#distutils* as\n``whit`` most days if you have questions or comments.\n\n\n\n\n0.2a3/4\n=======\n\n2013-03-21 Whit \n\n * Cleanup logging\n * Test cleanups and fixes\n\n\n0.2a1\n=====\n\t\n2012-10-31 whit :\n\n * Filter non-source distribution downloads from pypi\n * Fixed bug with index.json generation for add packages via pypi\n * Index regeneration is now package by package\n * initial work on unified 'datafile' handling via transaction\n * Make 'regenerate_all' rebuild the datafile (albeit inefficiently)\n\t\n0.1a1\n=====\n\nInitial alpha release.\n\nDevelopment Log\n---------------\n\n2012-01-09 whit :\n * Recursive download of requirements files and dependencies\n * Search of pypi and download of files\n * Improved test coverage\n * Initialization of index on start up\n * Basic read-only API for index\n * Broader event support\n * Documentation improvements\n\n2011-12-21 whit :\n * Individual leaf update via event on upload\n * Refactor to use pkginfo \n\n2011-12-01 whit :\n * Housekeeping: add static fileserving for index for developments,\n more use of path.py\n * Port over emporium readme.\n\n2011-11-07 whit :\n * Get app basically serving\n\n2011-11-07 whit :\n * Setup initial package structure", "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/SurveyMonkey/CheesePrism", "keywords": "web pyramid pylons", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "CheesePrism", "package_url": "https://pypi.org/project/CheesePrism/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/CheesePrism/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/SurveyMonkey/CheesePrism" }, "release_url": "https://pypi.org/project/CheesePrism/0.3/", "requires_dist": null, "requires_python": null, "summary": "CheesePrism", "version": "0.3" }, "last_serial": 1017895, "releases": { "0.1a1": [ { "comment_text": "", "digests": { "md5": "80df0800a320f3ab93746e4eb218dcef", "sha256": "f91e919e1615b543bb34a60334e1bbc2081b14e98f293db92f4820fffd56575f" }, "downloads": -1, "filename": "CheesePrism-0.1a1.tar.gz", "has_sig": false, "md5_digest": "80df0800a320f3ab93746e4eb218dcef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88401, "upload_time": "2012-01-10T00:27:01", "url": "https://files.pythonhosted.org/packages/1a/0c/d489869f4136b5a5e966ffad9b81a6affa69c2809ffa176b3c267c6f8a2e/CheesePrism-0.1a1.tar.gz" } ], "0.1a3": [ { "comment_text": "", "digests": { "md5": "9674fbec3c2b8e7d439f5a108027541d", "sha256": "26fe02e24031f4477ad7f0e0bbc50bb7cc90e462182e60286aedf70e9940b748" }, "downloads": -1, "filename": "CheesePrism-0.1a3.tar.gz", "has_sig": false, "md5_digest": "9674fbec3c2b8e7d439f5a108027541d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95239, "upload_time": "2012-02-08T23:40:04", "url": "https://files.pythonhosted.org/packages/dc/b4/10ecd93582934a36fae62e7b9c886519119591766efa4c50e181454760d3/CheesePrism-0.1a3.tar.gz" } ], "0.2a1": [ { "comment_text": "", "digests": { "md5": "239f0b3bef0a32c6b4d12570643f8768", "sha256": "8c551de3a13d5e536e5ba522edc1218da4113ddd2b756bb23ca00a097daa29fc" }, "downloads": -1, "filename": "CheesePrism-0.2a1.tar.gz", "has_sig": false, "md5_digest": "239f0b3bef0a32c6b4d12570643f8768", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92470, "upload_time": "2012-09-17T19:43:05", "url": "https://files.pythonhosted.org/packages/62/96/660ce6ad595d6681ef76a782ce2c54b681b8e438ae9564b4bb9f2f735f49/CheesePrism-0.2a1.tar.gz" } ], "0.2a2": [ { "comment_text": "", "digests": { "md5": "a398eee0dcdd7c662feae9c0967bdcde", "sha256": "ec0896ce4caf995d6e7aac392a965ccc9db70e1a821ead52e15a5965359c443f" }, "downloads": -1, "filename": "CheesePrism-0.2a2.tar.gz", "has_sig": false, "md5_digest": "a398eee0dcdd7c662feae9c0967bdcde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92482, "upload_time": "2012-10-03T01:24:51", "url": "https://files.pythonhosted.org/packages/b4/a0/14c309c4a176e94ee16ae0ceace02d5b8c541f5a520041df6dd62dbe94d3/CheesePrism-0.2a2.tar.gz" } ], "0.2a3": [ { "comment_text": "", "digests": { "md5": "cdb235dce47031f07c2d69a05836a50d", "sha256": "e4fde22ec0155942b83fed3b636701b20065217d1df3663da005e1c4fdaeb6bd" }, "downloads": -1, "filename": "CheesePrism-0.2a3.tar.gz", "has_sig": false, "md5_digest": "cdb235dce47031f07c2d69a05836a50d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98162, "upload_time": "2012-10-31T15:34:54", "url": "https://files.pythonhosted.org/packages/a6/e6/ba300c2ab962fd2ae3d9d7ecd893d30405217dcd29855c6a436a20e6fae0/CheesePrism-0.2a3.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "2d97694cce79e754db602bf910ef001b", "sha256": "037d1bb5b0a5f5989decadec5c6625cc95fc4e1064dedebc6c6de6824dea147e" }, "downloads": -1, "filename": "CheesePrism-0.3.tar.gz", "has_sig": false, "md5_digest": "2d97694cce79e754db602bf910ef001b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98604, "upload_time": "2013-03-21T21:40:33", "url": "https://files.pythonhosted.org/packages/54/84/46744e97a66f1df1ccf1b4d36eb11b5cef67e76ac440165d313509ca021e/CheesePrism-0.3.tar.gz" } ], "0.3.5a1": [ { "comment_text": "", "digests": { "md5": "5dd600185f4d5c6c5e449358219ff31d", "sha256": "18afd52e10d5e0beed32cabb312b3196cd6511f383b81c6dbce6d603037ca386" }, "downloads": -1, "filename": "CheesePrism-0.3.5a1.tar.gz", "has_sig": false, "md5_digest": "5dd600185f4d5c6c5e449358219ff31d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98778, "upload_time": "2013-10-16T16:41:34", "url": "https://files.pythonhosted.org/packages/ad/21/5a2fee7779db643461dff9643c766c5d26044a5111b9f8b23be6baf6912b/CheesePrism-0.3.5a1.tar.gz" } ], "0.4.0a1": [ { "comment_text": "", "digests": { "md5": "bbc243e5b9ace3833df9c40faefbe1c3", "sha256": "7df28876a44b29bc87546faa550226110b3d2b7157444cbbf49bc6771bf6bf32" }, "downloads": -1, "filename": "CheesePrism-0.4.0a1.tar.gz", "has_sig": false, "md5_digest": "bbc243e5b9ace3833df9c40faefbe1c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 156758, "upload_time": "2013-10-21T18:28:25", "url": "https://files.pythonhosted.org/packages/5e/f9/08154bc14e66c22d0fb0c150c63d7b35b2fb684efa9761a77c7a54206bf3/CheesePrism-0.4.0a1.tar.gz" } ], "0.4.0a2": [ { "comment_text": "", "digests": { "md5": "f15e6eae18998e311d46c43b8ff9ce89", "sha256": "d0021ca2ebcfa835732f61575b3995b07667d365acce5750b5eb8c48fc0fea35" }, "downloads": -1, "filename": "CheesePrism-0.4.0a2.tar.gz", "has_sig": false, "md5_digest": "f15e6eae18998e311d46c43b8ff9ce89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 156372, "upload_time": "2013-10-23T20:54:45", "url": "https://files.pythonhosted.org/packages/d1/2a/23be61f27a10cca4a037d4d6c9d3b03b5892c117455744e6e5402238e0a8/CheesePrism-0.4.0a2.tar.gz" } ], "0.4.0a3": [ { "comment_text": "", "digests": { "md5": "e3612ff4671d63000dd3cce0f72bd23a", "sha256": "f11908e843f215f8232275c85d242312221546195b300a966d116c10ab885860" }, "downloads": -1, "filename": "CheesePrism-0.4.0a3.tar.gz", "has_sig": false, "md5_digest": "e3612ff4671d63000dd3cce0f72bd23a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 157867, "upload_time": "2013-12-11T21:57:35", "url": "https://files.pythonhosted.org/packages/ea/d2/6f7dfbba2b805d4ead2748fd0c0494166a7e19f9108ee8864b3215b11d8e/CheesePrism-0.4.0a3.tar.gz" } ], "0.4.0a5": [ { "comment_text": "", "digests": { "md5": "bd3c9504077ed2d880772cdd21cae4ef", "sha256": "17ca971a58c3ddda6185e6e60dada8f51232277e1fee5e9be7310a5359352769" }, "downloads": -1, "filename": "CheesePrism-0.4.0a5.tar.gz", "has_sig": false, "md5_digest": "bd3c9504077ed2d880772cdd21cae4ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 158849, "upload_time": "2013-12-19T15:11:38", "url": "https://files.pythonhosted.org/packages/b1/0c/12fb64941c4702d9a0853937e2ad9b934cb99c5a55f12d23aebcbf3321ed/CheesePrism-0.4.0a5.tar.gz" } ], "0.4.0a6": [ { "comment_text": "", "digests": { "md5": "9373ce028305cbfa5567e87473da357d", "sha256": "6da5d8298ff1c1f096369ac2d99fd44157fa1071e445cf121e6082ff56278a5b" }, "downloads": -1, "filename": "CheesePrism-0.4.0a6.tar.gz", "has_sig": false, "md5_digest": "9373ce028305cbfa5567e87473da357d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 160226, "upload_time": "2013-12-19T17:50:20", "url": "https://files.pythonhosted.org/packages/30/d5/2de49adf14b05edfa67d97ee491496bc5f1f3d1e29ffb7756786a6934419/CheesePrism-0.4.0a6.tar.gz" } ], "0.4.0a7": [ { "comment_text": "", "digests": { "md5": "d87b77448f45b588cf57f05b9bb71a27", "sha256": "2c536bf874a498d18b9fd44b8b53db146fe1ac3b7ed9b4e86cb8ea521d110687" }, "downloads": -1, "filename": "CheesePrism-0.4.0a7.tar.gz", "has_sig": false, "md5_digest": "d87b77448f45b588cf57f05b9bb71a27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 159924, "upload_time": "2013-12-19T19:39:17", "url": "https://files.pythonhosted.org/packages/ac/40/2acc0e7337ccf9e875d8df54b433717afb64ee7974a8aaee1c9bdc965b84/CheesePrism-0.4.0a7.tar.gz" } ], "0.4.0a8": [ { "comment_text": "", "digests": { "md5": "e09b19235ef1a95e3c46dec8053d537e", "sha256": "585ee13b7b3658e7c4f6961440c588343f994128447fd9587b5f52653bb49371" }, "downloads": -1, "filename": "CheesePrism-0.4.0a8.tar.gz", "has_sig": false, "md5_digest": "e09b19235ef1a95e3c46dec8053d537e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 160035, "upload_time": "2013-12-19T20:07:20", "url": "https://files.pythonhosted.org/packages/59/a5/76cf549149bcf797a853b6cc75e9f1de2626bb83bf0dae5f566fa0d87246/CheesePrism-0.4.0a8.tar.gz" } ], "0.4.0a9": [ { "comment_text": "", "digests": { "md5": "e807f8c5a6868abc5aac652b1ce1f130", "sha256": "d5eeab6f78714253d57a538d9bb15384c25eca538bd3e7697ddecb53cabde17e" }, "downloads": -1, "filename": "CheesePrism-0.4.0a9.tar.gz", "has_sig": false, "md5_digest": "e807f8c5a6868abc5aac652b1ce1f130", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 160123, "upload_time": "2013-12-19T21:47:34", "url": "https://files.pythonhosted.org/packages/a7/81/37d730b7e7099f7ec0d06710756cf6cba5932e8e8236399fe23b863e288a/CheesePrism-0.4.0a9.tar.gz" } ], "0.4.0b2": [ { "comment_text": "", "digests": { "md5": "2f4b8f787011d785452b66edccec14b6", "sha256": "7dafd8744a58c4c4830be7a8c2e202a6ca6ef4b56ddf82dfbb70406f69d30ad9" }, "downloads": -1, "filename": "CheesePrism-0.4.0b2.tar.gz", "has_sig": false, "md5_digest": "2f4b8f787011d785452b66edccec14b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 162060, "upload_time": "2014-01-27T19:36:43", "url": "https://files.pythonhosted.org/packages/cf/41/6561675dfe2b372d7e6e9d1c1a4779011182f9c184664847552cbbf7357b/CheesePrism-0.4.0b2.tar.gz" } ], "0.4.0b4": [ { "comment_text": "", "digests": { "md5": "33392b63110d9f969c4f72dc186e8af5", "sha256": "9fdbf78ff109a0f56152ada25a39fe2e66b92fb5a1cf89f0e9f2b2881e2eaac1" }, "downloads": -1, "filename": "CheesePrism-0.4.0b4.tar.gz", "has_sig": false, "md5_digest": "33392b63110d9f969c4f72dc186e8af5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 164061, "upload_time": "2014-02-13T18:40:59", "url": "https://files.pythonhosted.org/packages/ff/89/adec84bb597cf41342ec2096a341876c1e0cde1848227b379270ba491cf8/CheesePrism-0.4.0b4.tar.gz" } ], "0.4.0b5": [ { "comment_text": "", "digests": { "md5": "63a24568bc608d4fe7f5be7d559a84a5", "sha256": "6a0821de88fe6b5096477c979f421ed706a96b205765eef9a0de4c2fa4f18eb7" }, "downloads": -1, "filename": "CheesePrism-0.4.0b5.tar.gz", "has_sig": false, "md5_digest": "63a24568bc608d4fe7f5be7d559a84a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 165199, "upload_time": "2014-03-03T21:32:37", "url": "https://files.pythonhosted.org/packages/b2/12/aa6cb49512fc6aa71c53931834849eac2bd910d2efa78b466445c960e320/CheesePrism-0.4.0b5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2d97694cce79e754db602bf910ef001b", "sha256": "037d1bb5b0a5f5989decadec5c6625cc95fc4e1064dedebc6c6de6824dea147e" }, "downloads": -1, "filename": "CheesePrism-0.3.tar.gz", "has_sig": false, "md5_digest": "2d97694cce79e754db602bf910ef001b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98604, "upload_time": "2013-03-21T21:40:33", "url": "https://files.pythonhosted.org/packages/54/84/46744e97a66f1df1ccf1b4d36eb11b5cef67e76ac440165d313509ca021e/CheesePrism-0.3.tar.gz" } ] }