{ "info": { "author": "Nicolas Chotard", "author_email": "nchotard@in2p3.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Astronomy", "Topic :: Software Development :: Build Tools" ], "description": ".. image:: http://readthedocs.org/projects/stackyter/badge/?version=latest\n :target: http://stackyter.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://landscape.io/github/nicolaschotard/stackyter/master/landscape.svg?style=flat\n :target: https://landscape.io/github/nicolaschotard/stackyter/master\n :alt: Code Health\n\t \n.. image:: https://badge.fury.io/py/stackyter.svg\n :target: https://badge.fury.io/py/stackyter\n\n.. inclusion-marker-do-not-remove\n\nQuick install and how-to\n========================\n\nLocal display of a Jupyter notebook running on a distant server\n\n#. Install the lattest version of ``stackyter`` on you local machine::\n\n pip install stackyter\n \n#. Install `Jupyter `_ on your distant host if not done yet\n#. Create a file with instructions to make Jupyter (and anything else\n you need) available (e.g, ``mysetup.sh``)\n#. Run ``stackyter.py`` on your local machine::\n\t\n stackyter.py --host thehost --user myusername --mysetup /path/on/the/host/mysetup.sh\n\t\n#. Copy/paste the given URL into your local browser to display Jupyter\n\nPurpose\n=======\n\nThis script allow you to run a jupyter notebook (or lab) on a distant\nserver while displaying it localy in your local brower. It can be used\nby anyone and on any host using the ``--host`` and ``--mysetup``\noptions. The only prerequisite is that **Jupyter must be available on\nthe distant host for this script to work.**\n\nInstallation\n============\n\nLatest stable version can be installed with ``pip``::\n\n pip install stackyter\n \nTo upgrade to a newer version::\n\n pip install --upgrade stackyter\n\nTo install in a local directory::\n\n pip install --user stackyter # in your home directory\n pip install --prefix mypath stackyter # in 'mypath'\n\n\nUsage\n=====\n\n.. code-block:: shell\n \n stackyter.py [options]\n\nThen click on the green link given by ``stackyter``, as followed::\n \n Copy/paste this URL into your browser to run the notebook localy \n http://localhost:20001/?token=38924c48136091ade71a597218f2722dc49c669d1430db41\n\n``Ctrl-C`` will stop the Jupyter server and close the connection.\n\nYou can use the following set of options to adapt ``stackyter`` to\nyour personal case.\n\n\nOptional arguments\n==================\n\nAn option used on the command line will always overwrite the content\nof the configuration file for the same option, if it exists. See the\nnext section for a description on how to use the configuration\nfile. Available options are::\n\n -h, --help show this help message and exit\n -c CONFIG, --config CONFIG\n Name of the configuration to use, taken from your\n default configuration file (~/.stackyter-config.yaml\n or $STACKYTERCONFIG). Default if to use the\n 'default_config' defined in this file. The content of\n the configuration file will be overwritten by any\n given command line options. (default: None)\n -f CONFIGFILE, --configfile CONFIGFILE\n Configuration file containing a set of option values.\n The content of this file will be overwritten by any\n given command line options. (default: None)\n -H HOST, --host HOST Name of the target host. Allows you to connect to any\n host on which Jupyter is available, or to avoid\n conflit with the content of your $HOME/.ssh/config.\n (default: None)\n -u USERNAME, --username USERNAME\n Your user name on the host. If not given, ssh will try\n to figure it out from you ~/.ssh/config or will use\n your local user name. (default: None)\n -w WORKDIR, --workdir WORKDIR\n Your working directory on the host (default: None)\n -j JUPYTER, --jupyter JUPYTER\n Either launch a jupiter notebook or a jupyter lab.\n (default: notebook)\n --mysetup MYSETUP Path to a setup file (on the host) that will be used\n to set up the working environment. A Python\n installation with Jupyter must be available to make\n this work. (default: None)\n --runbefore RUNBEFORE\n A list of extra commands to run BEFORE sourcing your\n setup file. Coma separated for more than one commands,\n or a list in the config file. (default: None)\n --runafter RUNAFTER A list of extra commands to run AFTER sourcing your\n setup file. Coma separated for more than one commands,\n or a list in the config file. (default: None)\n -C, --compression Activate ssh compression option (-C). (default: False)\n -S, --showconfig Show all available configurations from your default\n file and exit. (default: False)\n\n\nConfiguration file\n==================\n\nA configuration dictionnary can contain any options available through\nthe command line. The options found in the configuration file will\nalways be overwritten by the command line.\n\nThe configuration file can be given in different ways, and can\ncontains from a single configuration dictionnary to several\nconfiguration dictionnaries:\n\n- The **configuration file** can either be a default file located\n under ``~/stackyter-config.yaml`` or defined by the\n ``STACKYTERCONFIG``, or given in command line using the\n ``--configfile`` option.\n\n- The **configuration name**, which should be defined in your\n configuration file, must be given using the command line option\n ``--config``. If not given, a ``default_config``, which should be\n defined in your configration file, will be used by default.\n\nHere are a few example on how to use it::\n\n stackyter.py # 'default_config' in default file if it exists, default option values used otherwise\n stackyter.py --config config1 # 'config1' in default file which must exist\n stackyter.py --config config2 --configfile myfile.yaml # 'config2' in 'myfile.yaml'\n stackyter.py --configfile myfile.yaml # 'default_config' in 'myfile.yaml'\n\nIn principal, your default configuration file should look like that::\n\n {\n 'default_config': 'host1',\n \n 'host1': {\n 'host': 'myhost.domain.fr', # 'myhost' if you have configured your ~/.ssh/config\n 'jupyter': 'lab', # if installed\n 'username': 'myusername',\n 'mysetup': '/path/to/my/setup/file.sh',\n 'workdir': '/path/to/my/directory/'\n },\n \n 'host2': {\n 'host': 'otherhost.fr',\n 'username': 'otherusername',\n 'mysetup': '/path/to/my/setup'\n },\n\n 'host3': {\n 'host': 'somewhere.edu',\n 'username': 'ausername',\n\t # Jupyter is available by default on this host, 'mysetup' is not needed\n }, \n }\n\nor simply as followed if only one configuration is defined::\n\n {\n 'host1': {\n 'host': 'myhost.domain.fr', # or 'myhost' if you have configured your ~/.ssh/config file\n 'jupyter': 'lab', # if installed\n 'username': 'myusername',\n 'mysetup': '/path/to/my/setup/file.sh',\n 'workdir': '/path/to/my/directory/'\n },\n }\n\nYou can use the `example\n`_\nconfiguration file as a template to create your own. You can also find\nseveral example configuration files in the `configs\n`_\ndirectory for different user cases.\n\n\nDistant host configuration\n==========================\n\nThe ``--host`` option allows you to connect to any distant host. The\ndefault option used to create the ``ssh`` tunnel are ``-X -Y -tt\n-L``. If you want to configure your ``ssh`` connection, edit your\n``~/.ssh/config`` file using, for instance, the following template::\n\n Host myjupyter\n Hostname thehostname\n User myusername\n GSSAPIClientIdentity myusername@HOST\n GSSAPIAuthentication yes\n GSSAPIDelegateCredentials yes\n GSSAPITrustDns yes\n\nYpu only need to replace ``thehostname``, ``myusername``, and\n``myusername@HOST`` by the appropriate values. You can then use the\n``stackyter`` script as follows::\n\n stackyter.py --host myjupyter\n\nOr put the value for that option (along with others) in your\n``config.yaml`` file. \n\nWorking environment\n===================\n\nThere are several ways to setup your personnal working environment,\nusing the ``--mysetup``, ``--runbefore``, and ``runafter``\noptions. Given a setup file located on your distant host, you can\nsimply do::\n\n stackyter.py --mysetup /path/to/my/setup.sh (--username myusername)\n\nYour local setup file will be sourced at connection as followed::\n\n source /path/to/my/setup.sh\n\nThe ``runbefore`` and ``runafter`` options allow you to respectively\nrun command lines before or after your setup file is sourced. It can\nbe useful if you need to pass argument to your setup file through\nenvironment variables, or add extra command after the sourcing.\n\nYour setup must **at least** contains what is needed to make\nJupyter available. If Jupyter is available by default on the distant\nhost (it might be set up on connection), you only need to use the\n``--host`` and ``--username`` option to run.\n\nYou can of course add any kind of personal setups with these three\noptions, related of not to Jupyter.\n\nHelp\n====\n\n- If you have any comments or suggestions, or if you find a bug,\n please use the dedicated github `issue tracker\n `_.\n- Why ``stakyter``? For historical reason: ``stackyter`` = LSST\n ``stack`` + ``Jupyter``. It was initially intended for LSST members\n to easily use the LSST software stack and interact with data sets.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nicolaschotard/stackyter", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "stackyter", "package_url": "https://pypi.org/project/stackyter/", "platform": "", "project_url": "https://pypi.org/project/stackyter/", "project_urls": { "Homepage": "https://github.com/nicolaschotard/stackyter" }, "release_url": "https://pypi.org/project/stackyter/0.21/", "requires_dist": null, "requires_python": "", "summary": "Local display of a jupyter notebook running at CC-IN2P3", "version": "0.21" }, "last_serial": 3694467, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "636d5bd9925d25418fb9c0ad6da168c5", "sha256": "78cf5037d0638a62ce674fca3dfccc71ef83c4d41687f33d491d0ad17cf74bde" }, "downloads": -1, "filename": "stackyter-0.1.tar.gz", "has_sig": false, "md5_digest": "636d5bd9925d25418fb9c0ad6da168c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3364, "upload_time": "2017-10-19T13:23:30", "url": "https://files.pythonhosted.org/packages/54/2e/1e4731b81d57bc2d6c35e623a996adf67028db1cb2bb04259e1a13970be6/stackyter-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "54b41799c4eea7df8cc7c773e36844d1", "sha256": "49b7c32e9a0cfe2b0ff77d391b9b1e92174144d1a151ba3cc617a6ad0f304a65" }, "downloads": -1, "filename": "stackyter-0.10.tar.gz", "has_sig": false, "md5_digest": "54b41799c4eea7df8cc7c773e36844d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6400, "upload_time": "2017-11-09T10:19:47", "url": "https://files.pythonhosted.org/packages/90/69/5bb3404f98aad4ff2f31ead5d4ad80afc5d41ae046acd6e1c2d551edc9a0/stackyter-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "5dd43c1cdcd187a8f721af868b30acf9", "sha256": "e7bf451cf9ffdcc1886503090faac7999ba905c672c2715fb3279486d2c1e6f6" }, "downloads": -1, "filename": "stackyter-0.11.tar.gz", "has_sig": false, "md5_digest": "5dd43c1cdcd187a8f721af868b30acf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8378, "upload_time": "2017-11-20T16:34:42", "url": "https://files.pythonhosted.org/packages/c0/20/c2cecaad43a794b9ac3ef634e9caa300e4d0b6f5441ea23609e94780bd38/stackyter-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "91da9b63031554e28ba501c41e354584", "sha256": "d309cae099ca7dc470219539ada7cf1b625a38209b2bc443f4be651cc52419ae" }, "downloads": -1, "filename": "stackyter-0.12.tar.gz", "has_sig": false, "md5_digest": "91da9b63031554e28ba501c41e354584", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10196, "upload_time": "2017-11-24T16:18:57", "url": "https://files.pythonhosted.org/packages/64/9a/763cd09e9a7c9846c0458c02fcc902b1a60b647b998b93ce99d9ed3cf1e7/stackyter-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "f2638ef215d9316cb653d44ee97d905b", "sha256": "e6f4e6042be4f9be56ac1cbdfd2bc39d7bd4cb8bf2e39de2a4b14644f03b6e4a" }, "downloads": -1, "filename": "stackyter-0.13.tar.gz", "has_sig": false, "md5_digest": "f2638ef215d9316cb653d44ee97d905b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10333, "upload_time": "2017-11-27T15:10:03", "url": "https://files.pythonhosted.org/packages/84/a0/686f7269ff6739e06ecfadb8a03e8b4fdcfdd8ee9108949d6aee3348237d/stackyter-0.13.tar.gz" } ], "0.14": [ { "comment_text": "", "digests": { "md5": "cf1824738c1d4bd15edea392de723754", "sha256": "b8a66df29775c45d2d9e8c59211e6c46bd13296ab6c736259c2caf5f386e3af9" }, "downloads": -1, "filename": "stackyter-0.14.tar.gz", "has_sig": false, "md5_digest": "cf1824738c1d4bd15edea392de723754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10439, "upload_time": "2017-11-29T10:08:03", "url": "https://files.pythonhosted.org/packages/b8/d3/c7cba4f0b95487597123ee20cc98faca8b71b5cb25343c6de7387973ef1e/stackyter-0.14.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "b9fa0b2ce0bc9a5b5ea9cc5acfd63f79", "sha256": "603291fe3cd9ed436fc1557bbe5cfeda35246c7fb81006e3e0264465fd7bc595" }, "downloads": -1, "filename": "stackyter-0.15.tar.gz", "has_sig": false, "md5_digest": "b9fa0b2ce0bc9a5b5ea9cc5acfd63f79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10511, "upload_time": "2017-12-12T14:43:21", "url": "https://files.pythonhosted.org/packages/41/d9/c7951a79eeb908ea6ef56f64c39080c611128fba755868a5d7107a5aa90f/stackyter-0.15.tar.gz" } ], "0.16": [ { "comment_text": "", "digests": { "md5": "400974c28100d0c79565dd854411df19", "sha256": "78474da1db43cdfe417daf40f78545bfe79fe733831a7737bf762fc669e05405" }, "downloads": -1, "filename": "stackyter-0.16.tar.gz", "has_sig": false, "md5_digest": "400974c28100d0c79565dd854411df19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10538, "upload_time": "2017-12-18T14:10:33", "url": "https://files.pythonhosted.org/packages/80/d9/5c6b442407f79187e6b3dcd779460b76babfed3dc9adfbc33402a9e9b204/stackyter-0.16.tar.gz" } ], "0.17": [ { "comment_text": "", "digests": { "md5": "a34ddfe9d2ca1c19f73b90eda2e163d2", "sha256": "6b8be0d3ebd761d94f234c640d454b95a23c01d282f00a41499669cf4b9ed956" }, "downloads": -1, "filename": "stackyter-0.17.tar.gz", "has_sig": false, "md5_digest": "a34ddfe9d2ca1c19f73b90eda2e163d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10530, "upload_time": "2018-01-09T09:52:13", "url": "https://files.pythonhosted.org/packages/03/4d/cb8fa56958fbd4fabae6985a40bb92cd2051cec3032159b93fdd89e9d874/stackyter-0.17.tar.gz" } ], "0.18": [ { "comment_text": "", "digests": { "md5": "47cba20122b6fce5e7d575fe8a8e55b0", "sha256": "3e5c99ccde2f2e25a6321486ab4b748d6cf25d37279be95e7bd2296562f5fde3" }, "downloads": -1, "filename": "stackyter-0.18.tar.gz", "has_sig": false, "md5_digest": "47cba20122b6fce5e7d575fe8a8e55b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10533, "upload_time": "2018-01-09T15:55:42", "url": "https://files.pythonhosted.org/packages/57/a9/ee10b00e7a64d46022f3f059b16e4fc6f5df23fdbbb9500484fc1fcf9805/stackyter-0.18.tar.gz" } ], "0.19": [ { "comment_text": "", "digests": { "md5": "025ea51abc4c1f7e976284b346db0b87", "sha256": "9ec0da0ee458530bfa574dd1ceb7afe1f3c612f215ed60f38647a8134ee5ff4c" }, "downloads": -1, "filename": "stackyter-0.19.tar.gz", "has_sig": false, "md5_digest": "025ea51abc4c1f7e976284b346db0b87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10516, "upload_time": "2018-01-16T16:30:55", "url": "https://files.pythonhosted.org/packages/e2/47/69301e1671f523521306beb166343ff96996802087d914b2c5948d92cbdf/stackyter-0.19.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "bae115f74c8468fc898d4dce260a0b1a", "sha256": "a074368b996a9e811e6de7f52c23abd78ac476967d291adebb2c3da620a36eb1" }, "downloads": -1, "filename": "stackyter-0.2.tar.gz", "has_sig": false, "md5_digest": "bae115f74c8468fc898d4dce260a0b1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5292, "upload_time": "2017-10-24T06:58:31", "url": "https://files.pythonhosted.org/packages/83/ec/0f790a7498f2c7ff2f3da6ca34bbe7b42ede9c4a691bfc03d2210fef1ede/stackyter-0.2.tar.gz" } ], "0.20": [ { "comment_text": "", "digests": { "md5": "4072a3d7dffcfcbe97f7a508a32d83ec", "sha256": "d48b83b8271edca8bfb58947c66a65e025e735efe67804cb3ea489739c9f428d" }, "downloads": -1, "filename": "stackyter-0.20.tar.gz", "has_sig": false, "md5_digest": "4072a3d7dffcfcbe97f7a508a32d83ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10527, "upload_time": "2018-01-16T17:10:36", "url": "https://files.pythonhosted.org/packages/ef/e1/9723040280224566a708151f7b4c9a9ed7159db0f9b844f6b39d97a7e79d/stackyter-0.20.tar.gz" } ], "0.21": [ { "comment_text": "", "digests": { "md5": "fc7fd085d77a5bd49fc3e41b22734324", "sha256": "6bd946dab9047d4255a6d3aad64fa43695b2099d640daee57a8501d44d032e09" }, "downloads": -1, "filename": "stackyter-0.21.tar.gz", "has_sig": false, "md5_digest": "fc7fd085d77a5bd49fc3e41b22734324", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7781, "upload_time": "2018-03-22T07:12:26", "url": "https://files.pythonhosted.org/packages/9e/8d/cce4d629a788511b5c10087e8c72ef33c0141e1e8df98e01b1417a5ca7e4/stackyter-0.21.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "4bd35d5026c8b81add303a1daf7dfb8a", "sha256": "e35047ecb03f5084e3da52d8218b33de3c93d62e9106d92b16a50584dc57bff9" }, "downloads": -1, "filename": "stackyter-0.3.tar.gz", "has_sig": false, "md5_digest": "4bd35d5026c8b81add303a1daf7dfb8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5304, "upload_time": "2017-10-24T07:11:55", "url": "https://files.pythonhosted.org/packages/b2/9e/160ae829d1acefc82f4b21dbd368263fd361c220a98a432e0349b32c6621/stackyter-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "08902538a1d8a6c3227b45e922cbc865", "sha256": "e7d9c4a280642bfc92b03c5912af7066ecb0505ff0d9e29d74ac0cb7c08728f5" }, "downloads": -1, "filename": "stackyter-0.4.tar.gz", "has_sig": false, "md5_digest": "08902538a1d8a6c3227b45e922cbc865", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5312, "upload_time": "2017-10-24T07:16:08", "url": "https://files.pythonhosted.org/packages/10/2f/ff40afef9991da3bafa6bff426d4d66d625790b04b639a231530bd596747/stackyter-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "8ef4afbcd0c0829547c30facc5a34a09", "sha256": "a43b6c8e2f007a86ceeb97ff60dbffa57f8a1c4601d5b94cda5ee52c7d08efdf" }, "downloads": -1, "filename": "stackyter-0.5.tar.gz", "has_sig": false, "md5_digest": "8ef4afbcd0c0829547c30facc5a34a09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5240, "upload_time": "2017-10-24T07:23:23", "url": "https://files.pythonhosted.org/packages/b6/a7/d602048e25f635a972ac36944015133f1cac81bce5094b93af2690f0d580/stackyter-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "93bf2d0573f018dc862227f2cbd52e7a", "sha256": "08da1f336a9a62cdcd1e2774484d32fe8e7366c14933c6ff3852b6ffbacf2a4e" }, "downloads": -1, "filename": "stackyter-0.6.tar.gz", "has_sig": false, "md5_digest": "93bf2d0573f018dc862227f2cbd52e7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5679, "upload_time": "2017-10-25T09:31:01", "url": "https://files.pythonhosted.org/packages/2f/db/48628fd64afae3c03b6ae3127a5bf6179428bcf0c62ff507d01ca1c82acd/stackyter-0.6.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "b1f5478006798e481989ed797f60afa7", "sha256": "3361c817fda0fe76b12233984f1eefd018e329fdafd98c8bd40597b710e386c2" }, "downloads": -1, "filename": "stackyter-0.8.tar.gz", "has_sig": false, "md5_digest": "b1f5478006798e481989ed797f60afa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5959, "upload_time": "2017-10-25T12:44:03", "url": "https://files.pythonhosted.org/packages/df/fc/d7e4cbb495078666a21efc00ef716cd3275a1dc3adcf08329c4828c84851/stackyter-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "8ea324af8b6396b6d3021ee75a1b6fdc", "sha256": "bfd945480f06c39f997facf64e7ab02625efb2067077aaf6cf6f9816a7bb9bf4" }, "downloads": -1, "filename": "stackyter-0.9.tar.gz", "has_sig": false, "md5_digest": "8ea324af8b6396b6d3021ee75a1b6fdc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6213, "upload_time": "2017-11-08T10:52:16", "url": "https://files.pythonhosted.org/packages/47/74/65d9fcca7a3d17b764e43c14215f902e0f925030c88c3053023c443f130e/stackyter-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fc7fd085d77a5bd49fc3e41b22734324", "sha256": "6bd946dab9047d4255a6d3aad64fa43695b2099d640daee57a8501d44d032e09" }, "downloads": -1, "filename": "stackyter-0.21.tar.gz", "has_sig": false, "md5_digest": "fc7fd085d77a5bd49fc3e41b22734324", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7781, "upload_time": "2018-03-22T07:12:26", "url": "https://files.pythonhosted.org/packages/9e/8d/cce4d629a788511b5c10087e8c72ef33c0141e1e8df98e01b1417a5ca7e4/stackyter-0.21.tar.gz" } ] }