{ "info": { "author": "Jeff Hammel", "author_email": "jhammel@mozilla.com", "bugtrack_url": null, "classifiers": [], "description": "simpypi\n=======\n\nSimple python package index\n\nHow simpypi works\n-----------------\n\nThe heart of simpypi is ``simpypi.wsgi.SimPyPI``, a simple\n`WSGI `_ web app that\naccepts a uploaded\n`python package `_\ndistribution and places it according to its name and version metadata\nappropriate to the\n`simple index protocol `_ .\n\nFor security, ``SimPyPI`` returns straight\n`HTTP 400 `_ s\nfor invalid requests. This could probably be improved.\n\n``SimPyPI`` itself does not serve this directory. The directory\nshould be served by a fileserver that will generate directory indices\n(as apprpropriate to\nhttp://guide.python-distribute.org/contributing.html#the-simple-index-protocol\n) such as Apache or\n`FileServer `_ .\n``simpypi.factory.factory`` does provide a factory to make a WSGI app\nthat wraps ``FileServer`` in middleware and serves the simple index\nunder ``/index/`` and the ``SimPyPI`` app at ``/``. Additionally, a\n``simpypi`` command line program is provided that front-ends this.\n\nCurrently ``simpypi`` only works on source distributions (that is,\npackages made with ``python setup.py sdist``).\n\nExample\n-------\n\nI installed an instance of ``simpypi`` at http://k0s.org:8080 for\ndemonstration purposes with a package index at http://k0s.org:8080/index/ .\nFor testing purposes, I made a script,\n`upload_mobase.py `_\nthat uploads the\n`mozbase `_ packages to\n``simpypi``. So the\n`index `_ is now populated with them.\n\nYou can upload packages with\n`curl `_ ::\n\n > wget http://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.10.tar.gz\n > curl -F 'package=@PyYAML-3.10.tar.gz' http://k0s.org:8080/\n\nYou can ``easy_install`` mozbase from http://k0s.org:8080/index/ .\nIf a package's dependencies can be found from the ``simpypi`` package\nindex, they will also be installed from the index::\n\n > virtualenv.py tmp\n New python executable in tmp/bin/python\n Installing setuptools............done.\n Installing pip...............done.\n > cd tmp/\n (tmp)\u2502easy_install -i http://k0s.org:8080/index/ mozrunner\n Searching for mozrunner\n Reading http://k0s.org:8080/index/mozrunner/\n Best match: mozrunner 5.1\n Downloading http://k0s.org:8080/index/mozrunner/mozrunner-5.1.tar.gz\n Processing mozrunner-5.1.tar.gz\n Running mozrunner-5.1/setup.py -q bdist_egg --dist-dir\n /tmp/easy_install-gqerOV/mozrunner-5.1/egg-dist-tmp-Qyx3Cr\n Adding mozrunner 5.1 to easy-install.pth file\n Installing mozrunner script to /home/jhammel/tmp/bin\n Installed\n /home/jhammel/tmp/lib/python2.7/site-packages/mozrunner-5.1-py2.7.egg\n Processing dependencies for mozrunner\n Searching for mozprofile>=0.1\n Reading http://k0s.org:8080/index/mozprofile/\n Best match: mozprofile 0.1\n Downloading http://k0s.org:8080/index/mozprofile/mozprofile-0.1.tar.gz\n Processing mozprofile-0.1.tar.gz\n Running mozprofile-0.1/setup.py -q bdist_egg --dist-dir\n /tmp/easy_install-4Im6x0/mozprofile-0.1/egg-dist-tmp-9Jp5TR\n Adding mozprofile 0.1 to easy-install.pth file\n Installing mozprofile script to /home/jhammel/tmp/bin\n Installed\n /home/jhammel/tmp/lib/python2.7/site-packages/mozprofile-0.1-py2.7.egg\n Searching for mozprocess\n Reading http://k0s.org:8080/index/mozprocess/\n Best match: mozprocess 0.1b2\n Downloading\n http://k0s.org:8080/index/mozprocess/mozprocess-0.1b2.tar.gz\n Processing mozprocess-0.1b2.tar.gz\n Running mozprocess-0.1b2/setup.py -q bdist_egg --dist-dir\n /tmp/easy_install-KU6AiF/mozprocess-0.1b2/egg-dist-tmp-4j5CMP\n Adding mozprocess 0.1b2 to easy-install.pth file\n Installed\n /home/jhammel/tmp/lib/python2.7/site-packages/mozprocess-0.1b2-py2.7.egg\n Searching for mozinfo\n Reading http://k0s.org:8080/index/mozinfo/\n Best match: mozinfo 0.3.3\n Downloading http://k0s.org:8080/index/mozinfo/mozinfo-0.3.3.tar.gz\n Processing mozinfo-0.3.3.tar.gz\n Running mozinfo-0.3.3/setup.py -q bdist_egg --dist-dir\n /tmp/easy_install-JaKeaz/mozinfo-0.3.3/egg-dist-tmp-xWojez\n Adding mozinfo 0.3.3 to easy-install.pth file\n Installing mozinfo script to /home/jhammel/tmp/bin\n Installed\n /home/jhammel/tmp/lib/python2.7/site-packages/mozinfo-0.3.3-py2.7.egg\n Searching for ManifestDestiny>=0.5.4\n Reading http://k0s.org:8080/index/ManifestDestiny/\n Best match: ManifestDestiny 0.5.4\n Downloading\n http://k0s.org:8080/index/ManifestDestiny/ManifestDestiny-0.5.4.tar.gz\n Processing ManifestDestiny-0.5.4.tar.gz\n Running ManifestDestiny-0.5.4/setup.py -q bdist_egg --dist-dir\n /tmp/easy_install-2blF3S/ManifestDestiny-0.5.4/egg-dist-tmp-R3KZde\n Adding ManifestDestiny 0.5.4 to easy-install.pth file\n Installing manifestparser script to /home/jhammel/tmp/bin\n Installed\n /home/jhammel/tmp/lib/python2.7/site-packages/ManifestDestiny-0.5.4-py2.7.egg\n Finished processing dependencies for mozrunner\n\nNote that all of the packages come from the k0s.org installation and\nnot from http://pypi.python.org/ .\n\n\nRunning the Tests\n-----------------\n\nThe\n`tests directory `_\ncontains\n`doctests `_ and\nthe test-runner,\n`test.py `_ .\nThese tests illustrate basic functionality and protect from\nregressions if they are run before code is committed.\n``tests-require.txt`` contains dependencies that should be installed\nto run the tests.\n`Paste `_\n`TestApp `_ ,\nthough this could be transitioned to\n`WebTest `_ .\n`virtualenv `_\nis used for isolating python environments.\n\nTo run the tests, do::\n\n python test.py\n\nTODO\n----\n\nWhile simpypi is pretty simple, just because it is only 100 lines of\ncode doesn't mean that it is the *right* 100 lines of code. The\nfollowing issues could be addressed:\n\n * the temporary package should be dealt with entirely in memory,\n ideally. Currently we write to a file and move it.\n\n * ``simpypi`` use ``pkginfo.sdist`` to read the data from a source\n distribution. Instead, the uploaded package should probably be\n unpacked and ``python setup.py sdist`` run and the resulting\n package put in the appropriate place. This will allow archives\n without ``PKG-INFO``\n (e.g. http://hg.mozilla.org/build/talos/archive/tip.tar.gz )\n to be uploaded as well as at least partially correct for the fact\n that currently ``simpypi`` only works for uploaded source\n distributions.\n\n--\n\nhttp://k0s.org/mozilla/hg/simpypi", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://k0s.org/mozilla/hg/simpypi", "keywords": null, "license": "MPL", "maintainer": null, "maintainer_email": null, "name": "simpypi", "package_url": "https://pypi.org/project/simpypi/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/simpypi/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://k0s.org/mozilla/hg/simpypi" }, "release_url": "https://pypi.org/project/simpypi/0.1.3/", "requires_dist": null, "requires_python": null, "summary": "Simple pypi package", "version": "0.1.3" }, "last_serial": 799608, "releases": { "0.0": [ { "comment_text": "", "digests": { "md5": "323b838da27ba0f9303eede254026773", "sha256": "0e713ec105caa81d04a966d68c2e5c462512079888fddcb222c7587579b6839f" }, "downloads": -1, "filename": "simpypi-0.0.tar.gz", "has_sig": false, "md5_digest": "323b838da27ba0f9303eede254026773", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3255, "upload_time": "2012-03-02T19:35:25", "url": "https://files.pythonhosted.org/packages/8d/49/97ef7d32b5fff13e6753c776dcea4248a3721f69818242003d0925c1e9af/simpypi-0.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b5bdfa9086e76ad91e82459808bae61f", "sha256": "61276713046b6ed0f3ba33dc8f5a5baa2cd5fbf1893ede85b7b363b3628a9689" }, "downloads": -1, "filename": "simpypi-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b5bdfa9086e76ad91e82459808bae61f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3330, "upload_time": "2012-03-02T21:52:21", "url": "https://files.pythonhosted.org/packages/9a/e8/6479a614e84b1250cf20f84c78337e63f34a8082ce74982c29d074a8f9a5/simpypi-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0dcf17038d53cf302c643cbd0b391893", "sha256": "ccdd4d5510bfddda57ecc7abea866e028882b33e24f54d118d0bfe56ee54a716" }, "downloads": -1, "filename": "simpypi-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0dcf17038d53cf302c643cbd0b391893", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3337, "upload_time": "2012-03-02T22:14:53", "url": "https://files.pythonhosted.org/packages/45/8c/aaf1409af09c272839aadb6603c2df32b2ed78764f955c8e0a6da9af0b37/simpypi-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e5d4aed17a02ab7ddb1b7272b2a49c53", "sha256": "d77156ea79ffcb06340230a244e40fb40b5b6f88e4940f95726dffbc239969cd" }, "downloads": -1, "filename": "simpypi-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e5d4aed17a02ab7ddb1b7272b2a49c53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6019, "upload_time": "2012-03-03T01:40:36", "url": "https://files.pythonhosted.org/packages/30/da/78f533884b704753af1e7e98f1be05ada15273341b33b6b37abe58466da5/simpypi-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e5d4aed17a02ab7ddb1b7272b2a49c53", "sha256": "d77156ea79ffcb06340230a244e40fb40b5b6f88e4940f95726dffbc239969cd" }, "downloads": -1, "filename": "simpypi-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e5d4aed17a02ab7ddb1b7272b2a49c53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6019, "upload_time": "2012-03-03T01:40:36", "url": "https://files.pythonhosted.org/packages/30/da/78f533884b704753af1e7e98f1be05ada15273341b33b6b37abe58466da5/simpypi-0.1.3.tar.gz" } ] }