{ "info": { "author": "Jupyter Contributors", "author_email": "jupyter@googlegroups.com", "bugtrack_url": null, "classifiers": [], "description": "# kubespawner (jupyterhub-kubespawner) #\n\nThe *kubespawner* (also known as JupyterHub Kubernetes Spawner) enables JupyterHub to spawn\nsingle-user notebook servers on a [Kubernetes](https://kubernetes.io/)\ncluster.\n\nYou can read a list of all the spawner options [available on ReadTheDocs](https://jupyterhub-kubespawner.readthedocs.io/en/latest/spawner.html#module-kubespawner.spawner).\n\n## Features ##\n\nKubernetes is an open-source system for automating deployment, scaling, and\nmanagement of containerized applications. If you want to run a JupyterHub\nsetup that needs to scale across multiple nodes (anything with over ~50\nsimultaneous users), Kubernetes is a wonderful way to do it. Features include:\n\n* Easily and elasticly run anywhere between 2 and thousands of nodes with the\n same set of powerful abstractions. Scale up and down as required by simply\n adding or removing nodes.\n\n* Run JupyterHub itself inside Kubernetes easily. This allows you to manage\n many JupyterHub deployments with only Kubernetes, without requiring an extra\n layer of Ansible / Puppet / Bash scripts. This also provides easy integrated\n monitoring and failover for the hub process itself.\n\n* Spawn multiple hubs in the same kubernetes cluster, with support for\n [namespaces](https://kubernetes.io/docs/admin/namespaces/). You can limit the\n amount of resources each namespace can use, effectively limiting the amount\n of resources a single JupyterHub (and its users) can use. This allows\n organizations to easily maintain multiple JupyterHubs with just one\n kubernetes cluster, allowing for easy maintenance & high resource\n utilization.\n\n* Provide guarantees and limits on the amount of resources (CPU / RAM) that\n single-user notebooks can use. Kubernetes has comprehensive [resource control](https://kubernetes.io/docs/user-guide/compute-resources/) that can\n be used from the spawner.\n\n* Mount various types of [persistent volumes](https://kubernetes.io/docs/user-guide/persistent-volumes/)\n onto the single-user notebook's container.\n\n* Control various security parameters (such as userid/groupid, SELinux, etc)\n via flexible [Pod Security Policies](https://kubernetes.io/docs/user-guide/pod-security-policy/).\n\n* Run easily in multiple clouds (or on your own machines). Helps avoid vendor\n lock-in. You can even spread out your cluster across\n [multiple clouds at the same time](https://kubernetes.io/docs/user-guide/federation/).\n\nIn general, Kubernetes provides a ton of well thought out, useful features -\nand you can use all of them along with this spawner.\n\n## Requirements ##\n\n### Kubernetes ###\n\nEverything should work from Kubernetes v1.6+.\n\nThe [Kube DNS addon](https://kubernetes.io/docs/user-guide/connecting-applications/#dns)\nis not strictly required - the spawner uses\n[environment variable](https://kubernetes.io/docs/user-guide/connecting-applications/#environment-variables)\nbased discovery instead. Your kubernetes cluster will need to be configured to\nsupport the types of volumes you want to use.\n\nIf you are just getting started and want a kubernetes cluster to play with,\n[Google Container Engine](https://cloud.google.com/container-engine/) is\nprobably the nicest option. For AWS/Azure,\n[kops](https://github.com/kubernetes/kops) is probably the way to go.\n\n## Getting help ##\n\nWe encourage you to ask questions on the\n[Jupyter mailing list](https://groups.google.com/forum/#!forum/jupyter).\nYou can also participate in development discussions or get live help on\n[Gitter](https://gitter.im/jupyterhub/jupyterhub).\n\n## License ##\n\nWe use a shared copyright model that enables all contributors to maintain the\ncopyright on their contributions.\n\nAll code is licensed under the terms of the revised BSD license.\n\n## Resources\n\n#### JupyterHub and kubespawner\n\n- [Reporting Issues](https://github.com/jupyterhub/kubespawner/issues)\n- [Documentation for JupyterHub](https://jupyterhub.readthedocs.io)\n- [Documentation for JupyterHub's REST API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter/jupyterhub/master/docs/rest-api.yml#/default)\n\n#### Jupyter\n\n- [Documentation for Project Jupyter](https://jupyter.readthedocs.io/en/latest/index.html) | [PDF](https://media.readthedocs.org/pdf/jupyter/latest/jupyter.pdf)\n- [Project Jupyter website](https://jupyter.org)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/jupyterhub/kubespawner", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "jupyterhub-kubespawner", "package_url": "https://pypi.org/project/jupyterhub-kubespawner/", "platform": "", "project_url": "https://pypi.org/project/jupyterhub-kubespawner/", "project_urls": { "Documentation": "https://jupyterhub-kubespawner.readthedocs.io", "Homepage": "http://github.com/jupyterhub/kubespawner", "Source": "https://github.com/jupyterhub/kubespawner", "Tracker": "https://github.com/jupyterhub/kubespawner/issues" }, "release_url": "https://pypi.org/project/jupyterhub-kubespawner/0.10.1/", "requires_dist": [ "jupyterhub (>=0.8)", "pyYAML", "kubernetes (>=7)", "escapism", "jinja2", "async-generator (>=1.8)", "pytest (>=3.3); extra == 'test'", "pytest-cov; extra == 'test'", "pytest-asyncio; extra == 'test'" ], "requires_python": ">=3.5", "summary": "JupyterHub Spawner for Kubernetes", "version": "0.10.1" }, "last_serial": 4585354, "releases": { "0.1": [], "0.10.0": [ { "comment_text": "", "digests": { "md5": "f19c5d27d1c5edc7621097d03da1cb44", "sha256": "e42c0e9c6e973b765c8427135d5aa1e302413536a05174cdd835b78bbc63eab4" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f19c5d27d1c5edc7621097d03da1cb44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 35617, "upload_time": "2018-12-05T12:45:10", "url": "https://files.pythonhosted.org/packages/20/02/c9c81d838cbc36e0e14c06a5f615295f1075e1a29998d3cf300294332b91/jupyterhub_kubespawner-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b118078be9fce9f103d87ef7eca786c6", "sha256": "9113a2366f2cfe7e4550908bb1aa4e21e58b1af4c5c13848032eac5a8fbb8083" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.10.0.tar.gz", "has_sig": false, "md5_digest": "b118078be9fce9f103d87ef7eca786c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 32689, "upload_time": "2018-12-05T12:45:12", "url": "https://files.pythonhosted.org/packages/0c/49/a88bd5398ea1c8c95f39526b7ed8ae8c63c15702462e6600e1f51afe1242/jupyterhub-kubespawner-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "f570d71be3d51e916a2c5c383ffb5d8e", "sha256": "e8ce69ce0ba550a62e6a5eac1bc70283b6eb733c70e8b1e737d6951f951814c0" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f570d71be3d51e916a2c5c383ffb5d8e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 35649, "upload_time": "2018-12-11T12:57:15", "url": "https://files.pythonhosted.org/packages/99/ae/0df18751e84aff309363253e8b8921eeaf3283145ce3cb04c06175488af7/jupyterhub_kubespawner-0.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba5bbc0d61e666fd36e1a8cde5252fcb", "sha256": "0fa1c93f60e09278c4a6f8e7cc2c18d80db795d4d2d21a3e157b92d2db64254d" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.10.1.tar.gz", "has_sig": false, "md5_digest": "ba5bbc0d61e666fd36e1a8cde5252fcb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 32731, "upload_time": "2018-12-11T12:57:17", "url": "https://files.pythonhosted.org/packages/5e/42/487b830a76dadf93ca9db941ad47c99515ca2f88300205055ddf933f7440/jupyterhub-kubespawner-0.10.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "fd9ec2fb3974f480216e1e54f83bfa28", "sha256": "7f68c9b09f5517d26427f11e5fb7044e1f84578c05b7643080bb3811aaefe86c" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "fd9ec2fb3974f480216e1e54f83bfa28", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 11112, "upload_time": "2016-11-17T04:46:18", "url": "https://files.pythonhosted.org/packages/a8/e0/3a192ede1e8dc88199ca0643c5949abfe26658cdeac6610bc5d63efe6b21/jupyterhub_kubespawner-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f51d11df0262a7ceb76391729d37d456", "sha256": "b2c0dea5f3c1f77546d633f561c989622781571c42a0d906caee1607a21ca396" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.5.tar.gz", "has_sig": false, "md5_digest": "f51d11df0262a7ceb76391729d37d456", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8847, "upload_time": "2016-11-17T04:46:10", "url": "https://files.pythonhosted.org/packages/d3/62/8c535bf6ee12f8a18a7bd5480c783ed1267399b2a3c2dcbd255db05dca28/jupyterhub-kubespawner-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5816b1cef62c1b9790205fd8131ecf3b", "sha256": "0216388e4713127933bb83ada60584b9eaf35800f1c293f1083e8683b682f4d1" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5816b1cef62c1b9790205fd8131ecf3b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 11151, "upload_time": "2016-12-31T00:06:48", "url": "https://files.pythonhosted.org/packages/aa/72/06e7fcfa8ce0c577458ae8025432a61ea5c4ce4a8635d9de03ebc98d8068/jupyterhub_kubespawner-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a9f4da53b7b64f4b134c17b91da47fd", "sha256": "826a3c44b3928db19251115fe4f1b70bc7287f0676c2c4765dc798e0db3ed227" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.5.1.tar.gz", "has_sig": false, "md5_digest": "9a9f4da53b7b64f4b134c17b91da47fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8863, "upload_time": "2016-12-31T00:06:45", "url": "https://files.pythonhosted.org/packages/88/f7/c811fcb01aea020654f7024c950ec45b7a6c74508ebfc1e1b5eab8732d80/jupyterhub-kubespawner-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "38a4cf5b2be693edd7e9dfa225196643", "sha256": "9b46f04369fd5bc71cfd44ad530f8706e3351d748da945a5752b506b640dcb5f" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "38a4cf5b2be693edd7e9dfa225196643", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 18331, "upload_time": "2017-08-29T19:59:51", "url": "https://files.pythonhosted.org/packages/a9/66/30e3a899cf96539e0cb078af465c8bb5fc0d85740a092223b7da6579ffde/jupyterhub_kubespawner-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d185af2ce7f84e198d98a2421ea0c5cf", "sha256": "46970b7361362dbe6ae2d36443cf96d94179d87d8700d1805a05a3a1c9ac4f3d" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.6.0.tar.gz", "has_sig": false, "md5_digest": "d185af2ce7f84e198d98a2421ea0c5cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15350, "upload_time": "2017-08-29T19:59:48", "url": "https://files.pythonhosted.org/packages/1a/8e/55658d40f10aa074a9a33862565ffb5dbfb9ecb06509f1e668b597909eb7/jupyterhub-kubespawner-0.6.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "966e8a747d2d60a94f5c0e527c0520d5", "sha256": "22d6c2f16d21b406ec77a72f167b958ec5cb80d2bfa71e65870bba81f67d2691" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "966e8a747d2d60a94f5c0e527c0520d5", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 19953, "upload_time": "2017-11-28T21:28:53", "url": "https://files.pythonhosted.org/packages/98/39/ee220d82b73a28d552ec94a9699d71c5f7fbb813b1781828517f2eda94c7/jupyterhub_kubespawner-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "698b1e02d6cede2e14e8372d34203ded", "sha256": "7520e6ef833ea27f428355dfd73c7d50d2924683c4c05fc0cf00f850a858ad8a" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.7.1.tar.gz", "has_sig": false, "md5_digest": "698b1e02d6cede2e14e8372d34203ded", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16893, "upload_time": "2017-11-28T21:28:50", "url": "https://files.pythonhosted.org/packages/16/ba/ab1f970de016cbcc7fd282d105d0a44d912c0ab3e169a279f7d899a2ba86/jupyterhub-kubespawner-0.7.1.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "13618970fa6f9d4844360ccbc5eb0910", "sha256": "b1bca153b42e8d9fb108d21132f99ac9267b9b91eec47aa20fc07e2497d40648" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "13618970fa6f9d4844360ccbc5eb0910", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23172, "upload_time": "2018-01-24T19:54:18", "url": "https://files.pythonhosted.org/packages/b8/fa/b12198932d6e1945b9b405308297e49f624117c3a693da823b240241998f/jupyterhub_kubespawner-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1552c089d5259edc2c58cb30421b4e99", "sha256": "c40d6cf56137060caeeb9e61f657ad3ff41033d683d7ec385bb64fd0d963a299" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.8.tar.gz", "has_sig": false, "md5_digest": "1552c089d5259edc2c58cb30421b4e99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19329, "upload_time": "2018-01-24T19:54:16", "url": "https://files.pythonhosted.org/packages/c0/f6/682a1924b10de3c92d13be6fece040d9bbbe67107dc43b93a2a5291e3712/jupyterhub-kubespawner-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "3142006632ab235028bc9cc1180c8e63", "sha256": "e604f95c2321a92d3c22ff2606137feb20ae5feae6dab3f6267ea51d09b01055" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3142006632ab235028bc9cc1180c8e63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23238, "upload_time": "2018-01-30T12:48:13", "url": "https://files.pythonhosted.org/packages/2f/33/2cf3e340abc8b7ce7c6542a1cd22c794bd4008319f02eaf42353b18bbe7e/jupyterhub_kubespawner-0.8.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "430671a2e4636738646a395ad3a14590", "sha256": "b6ec223d5d5f2e8942d229773ac6c6b38fbbed1fd1e933e590e38f0b0e36e032" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.8.1.tar.gz", "has_sig": false, "md5_digest": "430671a2e4636738646a395ad3a14590", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20937, "upload_time": "2018-01-30T12:48:14", "url": "https://files.pythonhosted.org/packages/6d/1a/1167e6f10900a159d2a22d1929120b32f703b346a72945dab2e9ee114a81/jupyterhub-kubespawner-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "04fe3526a8be4de6389b07ef0ea4ae42", "sha256": "46b19903253687ac82c3a254b2e6103b563c31dd6caec3dfe5e470ea3164844c" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "04fe3526a8be4de6389b07ef0ea4ae42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 36161, "upload_time": "2018-09-03T09:43:16", "url": "https://files.pythonhosted.org/packages/44/c4/cc55963a68c17ce9771ec54615e1dae41f262d8f89340ec38d61a2b73443/jupyterhub_kubespawner-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52c044aed789c7c75967150fb725cb0f", "sha256": "2a8a8bf06d89542feb61d34c23360d246b2aca8bd7c44805e6e3f008e0eb6656" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.9.0.tar.gz", "has_sig": false, "md5_digest": "52c044aed789c7c75967150fb725cb0f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 33275, "upload_time": "2018-09-03T09:43:18", "url": "https://files.pythonhosted.org/packages/77/0d/33072d4c06824e96bba04f68e9be62ce9f8341d32d466e6f41214e63b9ef/jupyterhub-kubespawner-0.9.0.tar.gz" } ], "0.9.0b1": [ { "comment_text": "", "digests": { "md5": "2b3753f803f17fb73f24989e7213dbfa", "sha256": "1f02d5bb051856966fc4bdaf3e46177f19ac75ab56f938c26408467340acc4ec" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.9.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "2b3753f803f17fb73f24989e7213dbfa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 35841, "upload_time": "2018-08-19T07:47:26", "url": "https://files.pythonhosted.org/packages/c3/66/2e08ae8aa852c542394ecb1ec852320c0e0fa212d2984338d879457999c1/jupyterhub_kubespawner-0.9.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8e9ac84e8f26105eea0a0b796ee7659", "sha256": "1930e57a7215137853a8aacf0116df19533c541cc65330839481d550c300f9ee" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.9.0b1.tar.gz", "has_sig": false, "md5_digest": "c8e9ac84e8f26105eea0a0b796ee7659", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 32935, "upload_time": "2018-08-19T07:47:27", "url": "https://files.pythonhosted.org/packages/6c/4a/4afb4119d3d3865c2ad16f78785728d2f5a95af22aa3344db3be8280d74e/jupyterhub-kubespawner-0.9.0b1.tar.gz" } ], "0.9.0b2": [ { "comment_text": "", "digests": { "md5": "9a204dee217b6f28e98b7895cf242e78", "sha256": "0629b8c51efc06f4a97214fcb88bade449abfcd9ed7874b8664536c468beb1ff" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.9.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "9a204dee217b6f28e98b7895cf242e78", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 36181, "upload_time": "2018-08-27T09:13:13", "url": "https://files.pythonhosted.org/packages/0b/7f/e5e5366662a1b30b5e2fffccb85aadcfc687d0bbfc044224787643037987/jupyterhub_kubespawner-0.9.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61a8f5ff05ae24500a227ca79d2cb2d4", "sha256": "883ce855409725c7dea388c305480413d36ec28bcf4068ae4bb111e029f62fd0" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.9.0b2.tar.gz", "has_sig": false, "md5_digest": "61a8f5ff05ae24500a227ca79d2cb2d4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 33265, "upload_time": "2018-08-27T09:13:15", "url": "https://files.pythonhosted.org/packages/02/b0/15f4db51b54c5f98814ac1c0e76ac4e2123d2796c151c041141a6ea06f4a/jupyterhub-kubespawner-0.9.0b2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f570d71be3d51e916a2c5c383ffb5d8e", "sha256": "e8ce69ce0ba550a62e6a5eac1bc70283b6eb733c70e8b1e737d6951f951814c0" }, "downloads": -1, "filename": "jupyterhub_kubespawner-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f570d71be3d51e916a2c5c383ffb5d8e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 35649, "upload_time": "2018-12-11T12:57:15", "url": "https://files.pythonhosted.org/packages/99/ae/0df18751e84aff309363253e8b8921eeaf3283145ce3cb04c06175488af7/jupyterhub_kubespawner-0.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba5bbc0d61e666fd36e1a8cde5252fcb", "sha256": "0fa1c93f60e09278c4a6f8e7cc2c18d80db795d4d2d21a3e157b92d2db64254d" }, "downloads": -1, "filename": "jupyterhub-kubespawner-0.10.1.tar.gz", "has_sig": false, "md5_digest": "ba5bbc0d61e666fd36e1a8cde5252fcb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 32731, "upload_time": "2018-12-11T12:57:17", "url": "https://files.pythonhosted.org/packages/5e/42/487b830a76dadf93ca9db941ad47c99515ca2f88300205055ddf933f7440/jupyterhub-kubespawner-0.10.1.tar.gz" } ] }