{ "info": { "author": "Projekt01 GmbH, 6330 Cham, Switzerland", "author_email": "dev@projekt01.ch", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP" ], "description": "======\nREADME\n======\n\nThis package provides a private python package index server based on Zope 3.\n\nThe MyPyPi server provides everything you need for setup a private or public\npypi mirror. It also allows to release closed source packages. Together with\nlovely.buildouthttp you can setup a secure pypi mirror which you can use\nfor your deploy management of public and private packages. Private packages can\nget protected by security based on groups, roles and users. The mypypi server\nsupports a secure way to mix private and public packages at the same time.\n\nWe recommend to install the mypypi server behind an apache proxy for SSL\noffload like any other SSL secured zope application. But if you like to use a\nvery simple setup without SSL, the mypypi server should work on port 80 as a\nstandalone application server as well.\n\n\nInstall\n-------\n\nThe installation process is very simple and described in the INSTALL.txt file.\n\n\nUsage\n-----\n\nSince version 1.1.0, there is a simpler concept for use the mypypi server as\nan index or for register/upload packages. In previous versions we had to use\nsome undocumented apache rewrite rules. Let's first give an overview what \na pypi server is use for:\n\ndistutils -- can register and upload new packages\n\nsetuptools -- can register and upload new packages\n\neasy_install -- downloads packages starting at a given index\n\nzc.buildout -- downloads packages starting at a given index\n\nmypypi -- can mirror packages from another mypypi server using XML-RPC\n\nxmlrpclib -- can access a defined API, http://wiki.python.org/moin/CheeseShopDev \n\nurllib -- can GET or POST data\n\n\nIn general we use a pypi server for 3 different tasks.\n\n1. as index server for package download (index)\n\n3. register and upload new packages (manage)\n\n3. introspect for additional package information (introspect)\n\nThe mypypi server provides the following pages and methods at the root, e.g.\nhttp://host:port\n\n/ -- the distutils and setuptools API methods using GET and POST requests\n\n/ -- the XML-RPC API methods used for get detailed package and release\n information, see http://wiki.python.org/moin/CheeseShopDev\n\n/simple -- used as PUBLIC python package index page. Note, only public\n accessiible packages get listed in this index without authentication\n \n/private -- used as THE python package index for projects with protected\n packages. Using this index requires authentication (recommended)\n\n/eggs -- a simpler python package index page listing all release files without\n a page for each project (not recommended for large indexes)\n\n\nOther important pages are available at:\n\n/ -- mypypi application root offering the mypypi management. This mypypi root\n also offers the distutils, setuptools and xmlrpc APi methods as described\n above \n\n/pypi -- list the 50 newest packages, inncluding batching\n\n/++projects++ -- supports a (WebDAV) buildout container like used in\n keas.build, see http://pypi.python.org/pypi/keas.build form ore information\n\n\nAuthentication\n--------------\n\nThe authentication is done implicit in each tool. This means you don't have to\ninclude the authentication (e.g. username:password#host:port/page) in any url.\nThis means all tools like distutil, setuptools will use the ``.pypirc`` file\nfor authentication. The mypypi server uses for it's XML-RPC client this\n``.pypirc`` too. You only need this file for mypypi if you like to mirror \na private pypi index server whihc requires authentication.\n\n\nHTTPS\n-----\n\nDistutils and setuptools do not offer SSL support for any method they use.\nI do not know how someone can implement an API using SSL and non SSL. But this\nis how it is. It is possible run a working mypypi server only on an HTTPS port.\nThe important methods register, upload will use a https url but the \nlist-classifiers and verify options do not support using https.\n\n\nRelease\n-------\n\nAfter you have a working MyPyPi server setup, you have to configure your\nprojects if you like to have real protection. We use an enhanced setup.py\nfile in our packages which will prevent a release to pypi.python.org. Such\na setup.py change will also make the release process easier. There are two\noption described below for bind a release process to a given repository.\n\n\nsetup.py (version 1)\n~~~~~~~~~~~~~~~~~~~~\n\nSince we can use more then one server setup data in the ``.pypirc`` file, we\nuse this file as our base for bind release process to a given repository.\n\nNote, this allows to bind the release to a server by it's name and requires\nthat every developer which can release such a package has to use the same\nserver - repository mapping in it's .pypirc file!\n\nThe changed setup.py in your private egg should look like::\n\n ###############################################################################\n #\n # Copyright 2009 by Projekt01 GmbH , CH-6330 Cham\n #\n ###############################################################################\n \"\"\"Setup for smart package\n\n $Id: setup.py 4820 2009-05-12 07:31:00Z adam.groszer $\n \"\"\"\n #---[ START Server locking]--------------------------------------------------\n\n LOCK_PYPI_SERVER = \"http://pypi.your-domain.tld/eggs\"\n\n import os\n import sys\n from setuptools import setup, find_packages\n\n def read(*rnames):\n return open(os.path.join(os.path.dirname(__file__), *rnames)).read()\n\n #---[ repository locking ]-----------------------------------------------------\n \n REPOSITORY = \"myserver\"\n \n def checkRepository(name):\n server = None\n # find repository in .pypirc file\n rc = os.path.join(os.path.expanduser('~'), '.pypirc')\n if os.path.exists(rc):\n config = ConfigParser()\n config.read(rc)\n if 'distutils' in config.sections():\n # let's get the list of servers\n index_servers = config.get('distutils', 'index-servers')\n _servers = [s.strip() for s in index_servers.split('\\n')\n if s.strip() != '']\n for srv in _servers:\n if srv == name:\n repos = config.get(srv, 'repository')\n print \"Found repository %s for %s in '%s'\" % (\n repos, name, rc)\n server = repos\n break\n \n if not server:\n print \"No repository for %s found in '%s'\" % (name, rc)\n sys.exit(1)\n \n COMMANDS_WATCHED = ('register', 'upload')\n changed = False\n \n for command in COMMANDS_WATCHED:\n if command in sys.argv:\n #found one command, check for -r or --repository\n commandpos = sys.argv.index(command)\n i = commandpos+1\n repo = None\n while i\n\n\n=======\nINSTALL\n=======\n\nconfiguration\n-------------\n\nThis package contains a configuration script which is not usual in a \ndistribution package like this. The configure script can be used for initialize\nor change the server configuration before or after you installed this package.\n\nthe recommented steps are::\n\n - python configure.py\n\n - python bootstrap.py\n\n - bin/buildout (on *nix) or bin\\buildout.exe (on windows)\n\nThe configure.py is required by buildout.cfg. The configure.py script allows\nyou to choose devmode, localhost, port and management user login settings. All\nthe collected values get written to the app.cfg file which is included in\nbuildout.cfg.\n\nIf you don't like to use the configure.py script at any time, we recommend to\nwrite your own app.cfg e.g. myapp.cfg and include them in buildout.cfg\n``extends`` and exclude the existing app.cfg. This will prevent you from\noverride the app.cfg by using the configure.py script.\n\n\nstep by step\n------------\n\nFirst checkout the mypypi package from pypi.python.org and store it on your\nmypypi server.\n\nAs next, before we call ``python bootstrap.py``, run the configure.py script\nwith the following command::\n\n python configure.py\n\nThis will ask you for some input like::\n\n Would you like to setup with devmode (y/n): y\n Choose your server hostname: localhost\n Choose your server port: 8080\n Note:\n Distutils does not work with a port other then 80.\n Use a proxy server running at port 80 for access the\n MyPyPi server at port 8080\n\n Choose a managment user login: Manager\n Choose a management user password: password\n Choose a password encryption (plain/md5/sha1): plain\n Generated configuration file 'app.cfg'\n\n ---------------------------------------------------------------\n New buildout configuration files successfully created\n You have to run bootstrap and buildout now\n\n After running buildout there is a configure script installed\n You can run this counfiguration script again with bin/configure\n ---------------------------------------------------------------\n\nAfter setup the app.cfg file within the configure.py script, you can run\nbootstrap.py as usual with the following command::\n\n python bootstrap.py\n\nAfter bootstrap you can run buildout as usual with the following command::\n\n bin/buildout\n\nAfter setup your mypypi server with buildout, you can test your installation\nwith the following command::\n\n bin/test -py1\n\nThere is also a coverage recipe installed which you can use as usual with the\nfollowing commands::\n\n bin/coverage-test\n bin/coverage-report\n\nAfter running the converage scripts, you can see the generated coverage report \nin the new generated ``coverage/report`` folder. There should be an all.html\nfile which you can start with.\n\nCongratulations, you just configured and installed your mypypi server. If you \nlike to use another ip/port, devmode or manager user login, you can just\nreconfigure your setup with calling configure again with the following command::\n\n python configure.py\n\nThis will again ask you for some input like::\n\n Would you like to setup with devmode (y/n): y\n Choose your server hostname: localhost\n Choose your server port: 8080\n Note:\n Distutils does not work with a port other then 80.\n Use a proxy server running at port 80 for access the\n MyPyPi server at port 8080\n\n Choose a managment user login: Manager\n Choose a management user password: password\n Choose a password encryption (plain/md5/sha1): plain\n Generated configuration file 'app.cfg'\n\n ---------------------------------------------------------------\n New buildout configuration files successfully created\n You have to restart your server now\n ---------------------------------------------------------------\n\nRecognize the note in the generated output. Your new app.cfg configuration file\nwill only get used after you restart the mypypi server.\n\nAfter you reconfigured your server, the old configuration file called\n``app.cfg`` get renamed to ``app.cfg---``\nThis means you can simply revert your changes if you rename an old app.cfg*\nfile to app.cfg and restart your server.\n\n\nstart\n-----\n\nNow you can start your new mypypi server with the following command::\n\n bin/app\n\n\nnix\n---\n\nWe recommend to use spervisord as a autostart option for mypypi. But any other\nconcept like using a init.d script should work for mypypi. A simple supervisord\nprogramm like this should work:\n\n [program:mypypi]\n directory = \n command = /bin/app\n priority = 10\n autostart = true\n autorestart = true\n\n\nwindows\n-------\n\nThere is also a windows service installation script. You can simply run the\nwindows service installation with the following command::\n\n python bin\\winservice.py install\n\nYou can also remove the service with the following command::\n\n python bin\\winservice.py remove\n\nrun the follwoing command windows service management for more options::\n\n python bin\\winservice.py help\n\nAfter install your service, go to the serivce controll panel and check the \nservice configuration. The service get installed as ``MYPYPI Windows Service``.\nIf you like to rename the service make sure you removed a previous service\ninstallation, change winservice configuration section in buildout.cfg and\nrun buildout again. After that install your service again like described above.\nChanging your winservice configuration in buildout.cfg should be compatible\nwith the configure.py script concept like any other option in buildout.cfg.\n\n\n=======\nCHANGES\n=======\n\n1.5.1 (2018-06-21)\n------------------\n\n- feature: added support for xml rpc proxy used for fetch package information\n\n- added simple test page for xml rpc proxy setup. See Test menu tab. This page\n will fetch package names from pypi via xml rpc and list the amount of fetched\n package names using the pypi url site setup.\n\n\n1.5.0 (2018-06-05)\n------------------\n\n- feature: added proxy support for download packages using a proxy. Switch from\n urllib to requests.\n\n- feature: added favicon.ico image and view\n\n\n1.4.0 (2018-05-16)\n------------------\n\n- updated package versions\n\n- bugfix: switched from z3c.recipe.paster:serve to p01.recipe.setup recipe.\n\n You need to rename the following [app] section in your app.cfg;\n\n site.zcml to zcml\n zope.conf to conf\n\n because the new paster script requires a different naming.\n\n rename:\n\n [app]\n recipe = z3c.recipe.paster:serve\n eggs = mypypi\n ini = ...\n zope.conf = ...\n site.zcml = ...\n\n to:\n\n [app]\n recipe = p01.recipe.setup:paste\n eggs = mypypi\n ini = ...\n conf = ...\n zcml = ...\n\n- bugfix versions, update some package versions because some package where not\n fixed to a version e.g. >\n\n- feature: use new fsstorage which uses a relative path. This allows to move\n the mypypi installation without to break the file reference. Added generation\n for evolve database and migrate existing storage.\n\n- feature: allow to upload a file to a miror release and enable the release\n upload menu\n\n- adjust MANIFEST.in file\n\n- needs more work, switch to p01.publisher and testing environment.\n The current used zope.testbrowser with version 5.0.0 changed the test browser\n setup. We need to rewrite the browser tests. Currently the browser tests are\n disabled.\n\n\n1.3.0 (2013-05-31)\n------------------\n\n- switch to new zope.app.testing which is compatible with py 2.7 xmlrpclib and\n adjust test storage path which was not compatible with new test runner setup.\n\n- switch to newer ZODB3 release version 3.10.5 which is available for\n python 2.6/2.7 on windows for 32/64 bit.\n\n- bugfix: broken release update because of hard coded http uri. Switched\n to https uri and make them editable at site and mirror package release.\n Currently there is no auto migration. Just edit the pypi url in the site\n edit page and in the package edit page before update a package.\n\n- commit transaction between package downloads\n\n\n1.2.1 (2012-1-18)\n-----------------\n\n- implemented public file management table including public file delete\n\n- bugfix: include missing public.zcml (adjust MANIFEST.in)\n\n\n1.2.0 (2012-07-02)\n------------------\n\n- added MANIFEST.in file\n\n- enhance batch size for simpler navigation\n\n- added an additional ++public++ namspace for public file managment. This is\n usefull for upload KGS files which can't get downloaded within authentication\n if you need to use them as buildout extends.\n Note, since zc.buildout processes extends before extensions, there is no\n way to patch the buildout Downloader class and inject authentication. This\n also means lovely.builouthttp doesn't work for extends.\n\n- bugfix: missing docutils if not installed in system python. Also newer\n docutils version do not provide python.modulparser.py anymore. Implement the\n missing trim_docstring method in mypypi/api.py\n\n\n1.1.0 (2011-01-05)\n------------------\n\n- bugfix: fix sync error if we try to sync LocalPackage. Note, only\n MirrorPackage can get synced\n\n- skip old zope.app.* packages and added zopeupdate script. Run the following\n script:\n\n bin\\zodbupdate.exe -f ......\\Data.fs -v --pack > out.txt 2>&1\n\n- moved storage configuration from WSGI config to zope product config since\n someone broke the WSGI local_conf to zope product configuration chain.\n And we also changed the fsStorage argument to storage since camel case also\n seems to be broken.\n\n NOTE: You need to run configure.py and buildout before you start the\n server!\n\n Otherwise the server wdoesn't start because of the misssing storage\n configuration. (nothing dangerous happens)\n\n- added a second concept for look a release to a single pypi server using the\n .pypirc configuration file. See README.txt for more information\n\n- use newer zope.* packages\n\n- implemented XML-RPC API like pypi.python.org offers. We currently do only\n support the important methods like:\n\n - list_packages\n\n - package_releases\n\n - package_urls # deprecated\n\n - release_urls\n\n - package_data # deprecated\n\n - release_data\n\n we do not support the methods (search, updated_releases, changelog) right now\n Note: you need to use a domain like http://host:port/ as XML-RPC ServerProxy\n url. If you don't use the slash a the end the ServerProxy uses /RPC2 as\n default handler which isn't supported by mypypi.\n\n- removed temporary MultiWidget and TextLinesWidget because I move them\n to the z3c.form 2.0 release which is now used\n\n- moved management pages from browser to admin package\n\n- imporved configuration script, use getpass for password input and adjust text\n message\n\n- bugfix, added explicit find-link for lovely.buildouthttp, couldn't find the\n package during a fresh installation.\n\n- bugfix, added missing buildout.cfg file, same issue as in version 1.0.1.\n This issue was reported 5 month ago but still not fixed see:\n http://bugs.python.org/issue6884\n\n\n1.0.3 (2010-11-02)\n------------------\n\n- bugfix, version conflict. Use ZTK 1.0 and zopeapp-versions 1.0 as base versions\n\n- bugifx, dash vs underscore madness. The package wsgi_intercept at python\n offers a download link to google which defines wsgi-intercept (_ vs -) e.g.\n http://pypi.python.org/simple/wsgi_intercept/\n http://code.google.com/p/wsgi-intercept/\n\n- fix typo (sh1 -> sha1) in configure.py script\n\n\n1.0.2 (2010-06-21)\n------------------\n\n- cleanup buildou.cfg and base.cfg files\n\n\n1.0.1 (2010-06-17)\n------------------\n\n- bugfix, buildout.cfg was missing during a setuptools issue. See:\n http://bugs.python.org/issue6884\n\n- Fix typos\n\n\n1.0.0 (2010-06-16)\n------------------\n\n- Initial pypi release\n\n- Simplify configuration and setup\n\n\n0.6.0 (2009-10-19)\n------------------\n\n- New feature: Project and buildout file support for keas.build\n\n\n0.5.0 (2009-05-19)\n------------------\n\n- Initial Release\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.org/pypi/mypypi", "keywords": "python buildout package index server egg pypi mirror private", "license": "ZPL 2.1", "maintainer": "", "maintainer_email": "", "name": "mypypi", "package_url": "https://pypi.org/project/mypypi/", "platform": "", "project_url": "https://pypi.org/project/mypypi/", "project_urls": { "Homepage": "https://pypi.org/pypi/mypypi" }, "release_url": "https://pypi.org/project/mypypi/1.5.1/", "requires_dist": null, "requires_python": "", "summary": "My Python Package Index (Standalone Server)", "version": "1.5.1" }, "last_serial": 3985928, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "154a9fb95770d767a278784654e54a0d", "sha256": "f8170be6858318660489716b14c3966422875bc8118393fca021b08cc8a434b4" }, "downloads": -1, "filename": "mypypi-1.0.0.zip", "has_sig": false, "md5_digest": "154a9fb95770d767a278784654e54a0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 289027, "upload_time": "2010-06-16T02:35:09", "url": "https://files.pythonhosted.org/packages/4a/0a/8bd313dedd814f1d98ca2406b24d1e636a2d1792237fc99b256c430d5476/mypypi-1.0.0.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "99ea7124c0743c47cd3cc2754352561f", "sha256": "50eea1a24751735d9f51e1f0f6ac98e08bf14dccda4bedde48e1e9f4d2bd2327" }, "downloads": -1, "filename": "mypypi-1.0.1.tar.gz", "has_sig": false, "md5_digest": "99ea7124c0743c47cd3cc2754352561f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 198304, "upload_time": "2010-06-17T23:57:21", "url": "https://files.pythonhosted.org/packages/27/29/21ddd923651126d839997863db6a0b5d712552d1da9d36f3493e0031065d/mypypi-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "528ae4f7812624ee2da2b1ce00b56011", "sha256": "f8ac0fab7d54c0686e6e291b064e8f8aa0cf343b8ac8666a4c52a21ba8b7e501" }, "downloads": -1, "filename": "mypypi-1.0.2.tar.gz", "has_sig": false, "md5_digest": "528ae4f7812624ee2da2b1ce00b56011", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 198298, "upload_time": "2010-06-21T01:53:22", "url": "https://files.pythonhosted.org/packages/44/df/0188ab0a09379cf87df118e87bb12671e56a5aa10c2780f2157b955c5602/mypypi-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "72f699ef478592735ae1737581269327", "sha256": "a4e0258fb6063ce3fbc7314b657475487c64e86048fb2925941906b35f4e06eb" }, "downloads": -1, "filename": "mypypi-1.0.3.zip", "has_sig": false, "md5_digest": "72f699ef478592735ae1737581269327", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 297575, "upload_time": "2010-11-02T06:59:47", "url": "https://files.pythonhosted.org/packages/fd/0a/a9d51d6b7777014a201aaecdb83b37923d44c43d2cd1a3b3bb842acd04af/mypypi-1.0.3.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "713ef4e966129008294cc8df291a6c04", "sha256": "741eeebb29ef565b0ccdbb7e3d6589253d94623ee5ceb40559b56c494685a0a1" }, "downloads": -1, "filename": "mypypi-1.1.0.zip", "has_sig": false, "md5_digest": "713ef4e966129008294cc8df291a6c04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 296386, "upload_time": "2011-01-05T01:18:46", "url": "https://files.pythonhosted.org/packages/7e/40/20d325bb7e0921777f432ae4f4776dd94493fc23689f7dd4a738a6a2c9ca/mypypi-1.1.0.zip" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "9f777e88262f08fd4bacb3cc161ba5fb", "sha256": "ffd92688a69cc20f74cff00502c043df2c6650c32612fe604ce88b7d58abd369" }, "downloads": -1, "filename": "mypypi-1.2.0.zip", "has_sig": false, "md5_digest": "9f777e88262f08fd4bacb3cc161ba5fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 303704, "upload_time": "2012-07-02T01:02:57", "url": "https://files.pythonhosted.org/packages/61/00/fcd41baf51133151096b3f64923c204575827d8a37bd9d8e15e6629b1a7f/mypypi-1.2.0.zip" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "7255b7eb6222e1fc876959bf983287df", "sha256": "2017129f65c1c334e1d7cc62607f0c42a4f149b044f8ab704d8ea5c4b754a5c1" }, "downloads": -1, "filename": "mypypi-1.2.1.zip", "has_sig": false, "md5_digest": "7255b7eb6222e1fc876959bf983287df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 306176, "upload_time": "2012-11-18T01:38:18", "url": "https://files.pythonhosted.org/packages/d8/1f/2c48b26f6161f35aa1f5909158c4ca55f23a7c1a044b3f7e360855d0bf8f/mypypi-1.2.1.zip" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "ab5f741751d3e87712a0c078c5a4935d", "sha256": "d2bce71a9d342b575d27412425dfad52a100915b35fd29d8dcfacceeee6b27a9" }, "downloads": -1, "filename": "mypypi-1.3.0.zip", "has_sig": false, "md5_digest": "ab5f741751d3e87712a0c078c5a4935d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 307241, "upload_time": "2013-05-31T11:09:07", "url": "https://files.pythonhosted.org/packages/32/d2/178df4d969dd73edf7e46afd09dcfc67f771920d699d70eeae32e98c020a/mypypi-1.3.0.zip" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "7bb37eefe64c7c6a8541fbd5385c41a7", "sha256": "59cdd5747830a8726bc2659b82cf3a4aa913c14d5d38cafa411e9257354fa00b" }, "downloads": -1, "filename": "mypypi-1.4.0.tar.gz", "has_sig": false, "md5_digest": "7bb37eefe64c7c6a8541fbd5385c41a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506751, "upload_time": "2018-05-16T15:07:24", "url": "https://files.pythonhosted.org/packages/82/5a/cdec49b1934e9fa5c83079359be0722a19da022d12c6422ea0a0150501c5/mypypi-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "64e4b4be5485fd96774b47dbd56148fc", "sha256": "b5a62f724038ef77052fd051f38e9dd15b689cce7d881fc03798d40bfba4a1f3" }, "downloads": -1, "filename": "mypypi-1.5.0.tar.gz", "has_sig": false, "md5_digest": "64e4b4be5485fd96774b47dbd56148fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 510828, "upload_time": "2018-06-05T12:21:54", "url": "https://files.pythonhosted.org/packages/0b/9f/c1bacc550a1bfe111bfbacce9727bddf221fa1d14d50f6a9990c46a13463/mypypi-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "ba2587f7fe32680631babc26ded44dea", "sha256": "efe64d52b35e1a6c32349b4f2aeb150e04e371f687c23636640e32ca6ae9cf00" }, "downloads": -1, "filename": "mypypi-1.5.1.tar.gz", "has_sig": false, "md5_digest": "ba2587f7fe32680631babc26ded44dea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 511248, "upload_time": "2018-06-21T14:45:34", "url": "https://files.pythonhosted.org/packages/9b/24/4bbd6d011fb91591999e1b16a5be9fd8a20265e438158df243eccf6707f0/mypypi-1.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ba2587f7fe32680631babc26ded44dea", "sha256": "efe64d52b35e1a6c32349b4f2aeb150e04e371f687c23636640e32ca6ae9cf00" }, "downloads": -1, "filename": "mypypi-1.5.1.tar.gz", "has_sig": false, "md5_digest": "ba2587f7fe32680631babc26ded44dea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 511248, "upload_time": "2018-06-21T14:45:34", "url": "https://files.pythonhosted.org/packages/9b/24/4bbd6d011fb91591999e1b16a5be9fd8a20265e438158df243eccf6707f0/mypypi-1.5.1.tar.gz" } ] }