{ "info": { "author": "Marek Cermak", "author_email": "macermak@redhat.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Framework :: IPython", "Framework :: Jupyter", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: JavaScript", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Utilities" ], "description": "***************\njupyter-require\n***************\n\nJupyter nbextension for JavaScript execution and managing linked libraries and CSS stylesheets in Jupyter notebooks.\n\n|\n\nAbout\n=====\n\nThe `jupyter-require`_ library is intended to be used in `Jupyter`_ notebooks.\n\nJupyter-require allows to execute and manage custom `JavaScript`_ and `CSS`_ files and even create and load your own styles and scripts directly from `Jupyter`_ notebook.\n\nJupyter-require provides a unique opportunity to customize Jupyter notebooks and enables users to handcraft their own JavaScript-augmented workflows while keeping in mind synchronicity demands and security implications of such approaches.\n\n|\n\nWhat is this for?\n=================\n\nLet's demonstrate the usage on an example. Note that the usage is limited only by your imagination, this is just a demonstration of a single use case.\n\n|\n\nIf you are into data visualization like me, you've most likely already heard of `d3`_.js JavaScript ecosystem.\nIt's an incredibly powerful tool which can be used to create advanced interactive visualizations.\n\nHowever, it is not very comfortable to use in Jupyter notebooks let alone integrate with Python.\n\n See the article about `Custom D3.js Visualization in a Jupyter Notebook `_.\n\n\n|\n\n\nThat's where `jupyter-require`_ and related `jupyter-d3`_ come into play.\njupyter-require allows you to source custom scripts (like `d3`_) and styles and use them within the notebook with ease.\n\n\nCheck out also `jupyter-d3`_ which takes the `d3`_ workflow in Jupyter notebooks to another level.\n\n|\n\nInstallation\n============\n\nTo install jupyter-require Python package:\n\n\n.. code-block:: bash\n\n pip install jupyter-require\n\n\n[Optional] This step should be optional, but if you find out that the extension did not load properly (or at all),\ntry to execute the following commands first.\n\n.. code-block:: bash\n\n jupyter nbextension install --user --py jupyter_require\n\n\nYou can do all that from the python interpreter as well.\nTo install the nbextension itself and enable it, we have supplied a helper functions in the `jupyter-nbutils `_ ``utils`` module.\n\n\n.. code-block:: python\n\n from jupyter_nbutils import utils\n\n # install jupyter-require extension\n utils.install_nbextension('jupyter_require', overwrite=True) # note there is an underscore, it's Python module name\n\n # load and enable the extension\n utils.load_nbextension('jupyter-require', enable=True)\n\n\nAll of that above can be done from command line, so if you're used to installing nbextensions the regular way, feel free to do so. In fact, you are **recommended** to, this approach is just for lazy people like myself.\n\n NOTE: You may need to reload the page (just hit F5) after these steps for the jupyter-require nbextension to initialize properly.\n\n|\n\nExample usage\n=============\n\nIn `Jupyter`_ notebooks:\n\n.. code-block:: python\n\n # Applicable for version <=0.3.0\n %load_ext jupyter_require\n\n NOTE: Since the version 0.3.1 this extension is autoloaded and this step is no longer required\n\n\nLoading libraries\n-----------------\n\nLoading required libraries is now as simple as:\n\n.. code-block:: python\n\n %requirejs d3 https://d3js.org/d3.v5.min\n %requirejs d3-hierarchy https://d3js.org/d3-hierarchy.v1.min\n\n NOTE: Note that the path does **NOT** contain the `.js` file extension. This is `requireJS`_ standard.\n\n\nThe ``%requirejs`` is *jupyter magic command* and the rest are the parameters. The command takes a lib name and path.\n\n\nCreating custom style elements\n------------------------------\n\n.. code-block: css\n\n %%load_css\n\n /* d3.css */\n\n\n .links text {\n fill: none;\n stroke: #ccc;\n stroke-width: 1px;\n\n }\n\n .nodes {\n z-index: 1;\n font: 13px sans-serif;\n }\n\n .nodes circle {\n fill: darkslateblue;\n stroke: none;\n }\n\nIf you're not a fan of magic commands, you can make use of equivalent API calls.\n\n.. code-block:: python\n\n from jupyter_require import require\n from jupyter_require import load_css\n\n require.config({\n 'd3': 'https://d3js.org/d3.v5.min'\n 'd3-hierarchy': 'https://d3js.org/d3-hierarchy.v1.min'\n })\n\n load_css(...) # stylesheet goes here\n\n|\n\nExecuting custom script\n-----------------------\n\nNow we can actually make use of the bidirectional communication between Python and JS\n\nLet's say we have the following `d3`_ script:\n\n NOTE: I assume that we work in Jupyter notebook environment and hence we have the context cell at our disposal.\n\n\n.. code-block:: javascript\n\n /**\n * @module\n * @description Print coloured circles into the cell output\n * @file d3-simple-example.js\n */\n\n // Inspired by: https://www.d3-graph-gallery.com/intro_d3js.html\n\n // create SVG element in the output area\n // the ``element`` is a contextual binding to the output of the current cell\n let svg = d3.select(element.get(0))\n .append('svg');\n\n // create group\n let g = svg.append('g');\n\n g.append(\"circle\")\n .attr(\"cx\", 2).attr(\"cy\", 2).attr(\"r\", 40).style(\"fill\", \"blue\");\n g.append(\"circle\")\n .attr(\"cx\", 140).attr(\"cy\", 70).attr(\"r\", 40).style(\"fill\", \"red\");\n g.append(\"circle\")\n .attr(\"cx\", 300).attr(\"cy\", 100).attr(\"r\", 40).style(\"fill\", \"green\");\n\n\nNow in order to execute the script in a cell, we will have to tell it to use the `d3`_. The ``execute_with_requirements`` is made exactly for that purpose.\n\n.. code-block:: python\n\n from pathlib import Path\n from jupyter_require import execute_with_requirements\n\n script = Path('d3-simple-example.js').read_text()\n\n execute_with_requirements(script, required=['d3'])\n\n.. image:: ./docs/images/readme_example.svg\n :align: center\n :alt: SVG Example generated by d3\n :target: https://github.com/CermakM/jupyter-require/blob/master/docs/images/readme_example.svg\n\nAnd you should see those three pretty circles :point_up: .\n\n \u26a0\ufe0f It is possible that the current markdown renderer does not render the raw `` element above, all the more reason to try it yourself! :smirk:\n\n|\n\nThere is certainly more to it, but I am gonna leave it to your adventurous desires.\n\n|\n\nSynchronicity\n=============\n\nJavaScript execution is by default asynchronous. All the more in Jupyter notebooks.\nExecuting custom JavaScript script will happen asynchronously and the rest of the notebook won't wait for the execution to complete.\n\nThis is very often not the desired behaviour, since we might to work with the results of the execution in the next cell.\n\nJupyter-require solves this issue by converting every executed script into `Promise `__ and awaiting it while pausing the execution of Python kernel.\n\n|\n\nExecution & Security -- *safe scripts* and *finalization*\n=========================================================\n\nIn Jupyter notebooks, it might be sometimes unfortunate how the JavaScript is stored (and treated) in general in the notebook environment.\n``jupyter-require`` introduces the notion of *safe scripts* and *finalization*. Let's look at the latter first.\n\n**Finalization**\n\nWhen a user executes a script via native Jupyter API, that is typically something like ``display(Javascript(\"\"\"...\"\"\"))``, what happens behind the scenes is actually quite complicated. The one important thing to now, however, is that the *whole* script is embedded into the cell output and the resulting `*.ipynb` file.\nThen, **every time** a cell is copied or re-created (i.e., on notebook reload), the script is **executed**. Since this execution is not sandboxed. In fact, it is executed in **window context** using ``eval`` function.\n\n See: The section `'Do not ever use eval!' `_ from the official `MDN web docs`_).\n\nThis can potentially be a security threat!\nAlso, if you don't want to share the script that produced the output, but you want the output to be present, this does not happen either.\n\nWe try to combat that issue step by step, our approach is not optimal either, but it does yield some improvements and we believe that over time, it will get even better. When executing script *with* jupyter-require ``execute_with_requirements`` function, it is not the script which is embedded, it is the **Function object** itself which the cells carry with. This allows the script to be re-executed when we copy/paste a cell or stored in a clipboard when cutting the cell.\n\nAlso, we do not evaluate the script in window context using the ``eval`` function, as Jupyter by default does. Instead, at the current development state, we **wrap it** in its own **Function scope** and set its ``this`` and ``element`` context manually.\n\nAight, still not a word about *finalization*, right? What finalization means in this context, is **discarding** the JavaScript code which produced the output, cleaning the metadata and **saving the output** displayed in the cell output area into a static state.\nGoing back to the `d3`_ example, finalizing the cells would make the plot that we produced persistent and JSON serializable. The output would then be visible in tools like `nbviewer`_ or `GitHub`_ ``ipynb`` preview.\n\n \u26a0\ufe0f SVG poses another security issue, however, hence GitHub might not display them to prevent that, see for example `this `_ conversation. We will try to act on this issue in the future.\n\n\n|\n\nWe are thinking about the ways we could sandbox the execution and the output even more, but bare in mind that this project is very young, so let's put one foot in front of the other.\n\nTo finalize your outputs, use the ``Save and Finalize`` action button which should be present on the right of the regular ``Save and Checkpoint`` button. The finalization also happens automatically when you *properly* close the notebook. We cannot handle SIGTERMs at the moment, so be aware that in that case the scripts will be discarded and the output lost.\n\n|\n\n**Safe scripts**\n\n \u26a0\ufe0f The notion of safe scripts is something which has been added pretty recently and is under heavy observation.\n\nBy the word *safe* we don't refer to an execution which reduces security threats, no, nothing like that. It is *YOU* who guarantee that the script *is* safe and can be treated as such.\nThe mechanism which we treat *safe scripts* by is very similar to the one described above, with one important change: safe scripts are similar to the default Jupyter notebook behaviour in a sense that they are also **executed on the notebook reload** and are also **stored in the resulting `*.ipynb` notebook file**.\n\nHence you can enjoy the benefits of a sandbox(ish) synchronous execution while still having the scripts stored in the output. The one **limitation** is that they do not allow to specify requirements as the ``execute_with_requirements`` function does by its ``required`` parameter. This is because those scripts can be executed *before* extensions are actually loaded and we can not guarantee (at least we don't know how right now) that the functionality of jupyter-require will be present at that time.\n\nTo treat your script as *safe script*, execute it with ``safe_execute`` function.\n\n\n|\n\n.. _jupyter-require: https://github.com/CermakM/jupyter-require\n.. _jupyter-d3: https://github.com/CermakM/jupyter-d3\n.. _CSS: https://www.w3schools.com/css/\n.. _d3: https://d3js.org\n.. _GitHub: https://github.com/\n.. _JavaScript: https://www.w3schools.com/js/default.asp\n.. _Jupyter: https://jupyter.org/\n.. _nbviewer: https://nbviewer.jupyter.org/\n.. _MDN web docs: https://developer.mozilla.org/en-US/\n.. _RequireJS: https://requirejs.org/\n\n|\n\n----\n\n.. rubric:: Footnotes\n\n+-------------------+------------------------------------------------+\n| resource | link |\n+===================+================================================+\n| jupyter-require | `https://github.com/CermakM/jupyter-require` |\n+-------------------+------------------------------------------------+\n| jupyter-d3 | `https://github.com/CermakM/jupyter-d3` |\n+-------------------+------------------------------------------------+\n| CSS | `https://www.w3schools.com/css/` |\n+-------------------+------------------------------------------------+\n| D3 | `https://d3js.org` |\n+-------------------+------------------------------------------------+\n| GitHub | `https://github.com/` |\n+-------------------+------------------------------------------------+\n| JavaScript | `https://www.w3schools.com/js/default.asp` |\n+-------------------+------------------------------------------------+\n| Jupyter | `https://jupyter.org/` |\n+-------------------+------------------------------------------------+\n| nbviewer | `https://nbviewer.jupyter.org/` |\n+-------------------+------------------------------------------------+\n| MDN web docs | `https://developer.mozilla.org/en-US/` |\n+-------------------+------------------------------------------------+\n| requireJS | `https://requirejs.org/` |\n+-------------------+------------------------------------------------+\n\n|\n\n Author: Marek Cermak \n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/CermakM/jupyter-require", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jupyter-require", "package_url": "https://pypi.org/project/jupyter-require/", "platform": "", "project_url": "https://pypi.org/project/jupyter-require/", "project_urls": { "Homepage": "https://github.com/CermakM/jupyter-require" }, "release_url": "https://pypi.org/project/jupyter-require/0.6.1/", "requires_dist": [ "ipython", "ipykernel", "csscompressor", "daiquiri", "jupyter-nbutils", "jupyter-contrib-nbextensions" ], "requires_python": "", "summary": "Jupyter nbextension for JavaScript execution and managing linked libraries and CSS stylesheets in Jupyter notebooks.", "version": "0.6.1", "yanked": false, "yanked_reason": null }, "last_serial": 6237959, "releases": { "0.1.10": [ { "comment_text": "", "digests": { "md5": "3ff053f06a7daf8d37d0aecf526bd820", "sha256": "1b784904fb31ea9cca39abe2a232a94f1cbc14d7b024e8cc0bbb16cb44848d0c" }, "downloads": -1, "filename": "jupyter_require-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "3ff053f06a7daf8d37d0aecf526bd820", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10683, "upload_time": "2019-03-14T23:15:22", "upload_time_iso_8601": "2019-03-14T23:15:22.627717Z", "url": "https://files.pythonhosted.org/packages/c5/71/62d58bce61f7506c4b72df780afff866e22601d20e6b678ae2d5810fa827/jupyter_require-0.1.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5f4e4206ef66b34c82bdc95a7e513df5", "sha256": "c828c9eda9e54213b1bfd2f40e28b479ffb90cd7900a1d1bca34ec5054423497" }, "downloads": -1, "filename": "jupyter-require-0.1.10.tar.gz", "has_sig": false, "md5_digest": "5f4e4206ef66b34c82bdc95a7e513df5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8148, "upload_time": "2019-03-14T23:15:24", "upload_time_iso_8601": "2019-03-14T23:15:24.410014Z", "url": "https://files.pythonhosted.org/packages/e5/5c/2e3bacf461809259e8640e76cdc55569c493cf58e4784b4c58cadcbc28c8/jupyter-require-0.1.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "aeef3d6b6209bdc145bd8ce80cf2fcff", "sha256": "ee9f37e20bddbe65637be83339b95cf73f40b8ab34f83faf0b7c94881b50744b" }, "downloads": -1, "filename": "jupyter_require-0.1.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aeef3d6b6209bdc145bd8ce80cf2fcff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19420, "upload_time": "2019-03-17T09:17:14", "upload_time_iso_8601": "2019-03-17T09:17:14.655782Z", "url": "https://files.pythonhosted.org/packages/4f/c9/e0f07f75d0a16e8ea3c4b48d44989a591766be17292c2d063c871467c813/jupyter_require-0.1.11-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "88e363ed4dc4af550fb7eab6029671bf", "sha256": "8ea4b095705bae8390e4172f946b1011e3922e9114d0cfa5928380fddd0b82d5" }, "downloads": -1, "filename": "jupyter-require-0.1.11.tar.gz", "has_sig": false, "md5_digest": "88e363ed4dc4af550fb7eab6029671bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 420297, "upload_time": "2019-03-17T09:17:17", "upload_time_iso_8601": "2019-03-17T09:17:17.929458Z", "url": "https://files.pythonhosted.org/packages/b6/ed/08c08bc409565e69d00a2cc7599c1adec2f0278c3ff618baa9b5b76612d8/jupyter-require-0.1.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "1c18a38710a9ef0607f6afdddf3abe63", "sha256": "422fe1b37f3ea103a0a9529e40132d52e3d4f57d3a0ab9fa2408d70c00555129" }, "downloads": -1, "filename": "jupyter_require-0.1.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1c18a38710a9ef0607f6afdddf3abe63", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21066, "upload_time": "2019-03-17T22:11:50", "upload_time_iso_8601": "2019-03-17T22:11:50.515047Z", "url": "https://files.pythonhosted.org/packages/92/36/1af2db5469e0952ddcf01b68af5e18859f832ef81d8df21d2735729cef5b/jupyter_require-0.1.13-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5f1a0fadde24d17a8f08fc2cdd8b5cb4", "sha256": "154b52464575c5f4e328c3efd004dd34f479805dc65924be38ed9938c4b4d3e2" }, "downloads": -1, "filename": "jupyter-require-0.1.13.tar.gz", "has_sig": false, "md5_digest": "5f1a0fadde24d17a8f08fc2cdd8b5cb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 420767, "upload_time": "2019-03-17T22:11:53", "upload_time_iso_8601": "2019-03-17T22:11:53.081422Z", "url": "https://files.pythonhosted.org/packages/24/83/70b14825b380b69c628f2d9dd268784170423cf62a6304a25d446e3de8da/jupyter-require-0.1.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "4498504436e670ae63d1ad4fbe074191", "sha256": "fe77b103386c5c4d9b3d4ebbda24afcfa1536350e1fbd7833aa48d9d1dcdc5f4" }, "downloads": -1, "filename": "jupyter_require-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "4498504436e670ae63d1ad4fbe074191", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10173, "upload_time": "2019-03-08T19:45:49", "upload_time_iso_8601": "2019-03-08T19:45:49.164816Z", "url": "https://files.pythonhosted.org/packages/b2/bd/d1caf92585c50ed15a4b259c14267a1f64bc7c8fc998b5ae36b6e2c57e90/jupyter_require-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "555f7407ab5baab37d1767e95e45314b", "sha256": "6386dba09b7832de58e04ad0e95c99c8f7ee2e1bb8678b718fa4e045e78f385b" }, "downloads": -1, "filename": "jupyter-require-0.1.7.tar.gz", "has_sig": false, "md5_digest": "555f7407ab5baab37d1767e95e45314b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7679, "upload_time": "2019-03-08T19:45:51", "upload_time_iso_8601": "2019-03-08T19:45:51.263897Z", "url": "https://files.pythonhosted.org/packages/67/dc/17324fe68d4566addecb4b528c24d2deed1d37471202f5dc5fc00af0f9cb/jupyter-require-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "70c277d4e457721917e3e6d8d142491e", "sha256": "5136027771087361b8e4c60a6c88fed6549288cc8740281468aa515bcf2b4380" }, "downloads": -1, "filename": "jupyter_require-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "70c277d4e457721917e3e6d8d142491e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10184, "upload_time": "2019-03-11T18:04:45", "upload_time_iso_8601": "2019-03-11T18:04:45.131418Z", "url": "https://files.pythonhosted.org/packages/5a/e9/ea73d998fe9319acc871c230545e95448f2863b4dc982d68defd794c9b15/jupyter_require-0.1.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5ff65ec7bdbc96280f8dbe8f09c5dd20", "sha256": "bd075da3951952e534a92a17a4b737efcf7198936e386ef7d3fe71b25bc8f6ed" }, "downloads": -1, "filename": "jupyter-require-0.1.8.tar.gz", "has_sig": false, "md5_digest": "5ff65ec7bdbc96280f8dbe8f09c5dd20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7683, "upload_time": "2019-03-11T18:04:46", "upload_time_iso_8601": "2019-03-11T18:04:46.976846Z", "url": "https://files.pythonhosted.org/packages/d1/a5/ebe259478e9e9628befbc684b7061c9cb63686207ad9cc269fe98bdb3aea/jupyter-require-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9849ed3558d80f95917e93d826f04c03", "sha256": "7cd0f37bfe30afadb034b65a929980e64920000f21fc4fe5396f7351a363b62a" }, "downloads": -1, "filename": "jupyter_require-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9849ed3558d80f95917e93d826f04c03", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35182, "upload_time": "2019-04-04T18:22:28", "upload_time_iso_8601": "2019-04-04T18:22:28.167904Z", "url": "https://files.pythonhosted.org/packages/f1/45/33a1170adfc0e56edee825ffc3781d7764e57efd95eee483e791640a41bb/jupyter_require-0.2.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1b667af4ca1aa7ac4f08e3ce83e2d7d8", "sha256": "a5e4dad6bc87f88e9e56e8df56b59d123440223b4290a06812b5fe79d7082796" }, "downloads": -1, "filename": "jupyter-require-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1b667af4ca1aa7ac4f08e3ce83e2d7d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 672751, "upload_time": "2019-04-04T18:22:32", "upload_time_iso_8601": "2019-04-04T18:22:32.200346Z", "url": "https://files.pythonhosted.org/packages/de/33/b210436beae5bcc594b23fe19b82b339d6156788068b8bc108f6b8f441b4/jupyter-require-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0rc0": [ { "comment_text": "", "digests": { "md5": "86c3ad88a7fa3b55cb97ac6df9e38a19", "sha256": "d9010324e05ff1edd3110bd4b62761ad3c2ca3b054e768b2bb74e46e15d5a3d6" }, "downloads": -1, "filename": "jupyter_require-0.2.0rc0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "86c3ad88a7fa3b55cb97ac6df9e38a19", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34756, "upload_time": "2019-03-28T15:58:47", "upload_time_iso_8601": "2019-03-28T15:58:47.036423Z", "url": "https://files.pythonhosted.org/packages/32/9c/c42dd6af8716147d248fa1d6c3ab6345cc31a6c69a9eb15370afa758427a/jupyter_require-0.2.0rc0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6fec7bc3a32eb25018020e615abd5567", "sha256": "1e42f28df23f321ccfd0581a73019e48a2bc8e07f4534300cd47b29258c71fa8" }, "downloads": -1, "filename": "jupyter-require-0.2.0rc0.tar.gz", "has_sig": false, "md5_digest": "6fec7bc3a32eb25018020e615abd5567", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 673493, "upload_time": "2019-03-28T15:58:49", "upload_time_iso_8601": "2019-03-28T15:58:49.248183Z", "url": "https://files.pythonhosted.org/packages/3d/84/0d288df26c1e46979d75e308a06c67bc2f82f7f3427ca467f4f6f563db2e/jupyter-require-0.2.0rc0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f107e29631175631984e5f0338f1b882", "sha256": "000cd5ef90d419a0181168c7f57284366d68c2c6f8c6791107653ab5fbf5d6b4" }, "downloads": -1, "filename": "jupyter_require-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f107e29631175631984e5f0338f1b882", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37057, "upload_time": "2019-04-11T16:45:49", "upload_time_iso_8601": "2019-04-11T16:45:49.686688Z", "url": "https://files.pythonhosted.org/packages/dc/22/543c50814def5161425abe6961b84234869aa458058653753feedf24375f/jupyter_require-0.2.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3386ba2ccfb91dec6d0c67c51694a12f", "sha256": "6d9edbc22c59a7dae63acd451710ea12ea57d86f77ed95667fbd766f7d70b95e" }, "downloads": -1, "filename": "jupyter-require-0.2.1.tar.gz", "has_sig": false, "md5_digest": "3386ba2ccfb91dec6d0c67c51694a12f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 673274, "upload_time": "2019-04-11T16:45:51", "upload_time_iso_8601": "2019-04-11T16:45:51.816576Z", "url": "https://files.pythonhosted.org/packages/c3/46/c5631b4bb7bbaa1bd7e3a4f99b7bc8052e068e3b81db46f4f660bfd57078/jupyter-require-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "f314a0918123de3f2f751f1bcf739c69", "sha256": "3f0da822842c42aeaa92117f42695230aa85ccca95d0ff849fb61e110cbc9ba6" }, "downloads": -1, "filename": "jupyter_require-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f314a0918123de3f2f751f1bcf739c69", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37786, "upload_time": "2019-04-24T06:55:52", "upload_time_iso_8601": "2019-04-24T06:55:52.373391Z", "url": "https://files.pythonhosted.org/packages/cd/5f/1e7e393658da8e8367be79ac5aba42fcbc10a1ac3dc7f48308a49f600b66/jupyter_require-0.2.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3572e8755d67e47c8debc294936239dd", "sha256": "ab3a72556591833e21239114ad43e7374b3b5aa55bf7b965d472cc58871b6605" }, "downloads": -1, "filename": "jupyter-require-0.2.4.tar.gz", "has_sig": false, "md5_digest": "3572e8755d67e47c8debc294936239dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 674159, "upload_time": "2019-04-24T06:55:55", "upload_time_iso_8601": "2019-04-24T06:55:55.894907Z", "url": "https://files.pythonhosted.org/packages/a7/a5/cbfa000fdb2e4ffcf0fe2d8279c5e14a45fc16de1983c8fa802ad03c7e2f/jupyter-require-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "dbae8a0c3272e893e3cf13c13cf00fd8", "sha256": "f1a2f4edf80d98a4bcf55009fa5570b2ec05266a074a202470136eff65c2dbff" }, "downloads": -1, "filename": "jupyter_require-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dbae8a0c3272e893e3cf13c13cf00fd8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37442, "upload_time": "2019-05-08T07:21:47", "upload_time_iso_8601": "2019-05-08T07:21:47.938955Z", "url": "https://files.pythonhosted.org/packages/d2/aa/eafdd9e32a3447011725dfebade8065350205e059dcc7fdfda7faf28de74/jupyter_require-0.2.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c28a099ab625b2060ee168f3ead094d7", "sha256": "24348fb1591830c92356c41370c0bf4f6bdd04fca7e02d3d030ca849f7ee5d46" }, "downloads": -1, "filename": "jupyter-require-0.2.5.tar.gz", "has_sig": false, "md5_digest": "c28a099ab625b2060ee168f3ead094d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31330, "upload_time": "2019-05-08T07:21:50", "upload_time_iso_8601": "2019-05-08T07:21:50.408694Z", "url": "https://files.pythonhosted.org/packages/f2/0b/6d548bb21dcd08394486f219d372a112e8646feffddb158d9f90a3b869a6/jupyter-require-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "b3ba0eb133a59643238f7e72cc73d165", "sha256": "4de4997695d10f878b1103b9863981d055a20f33a5811a646c45d5fb559338c1" }, "downloads": -1, "filename": "jupyter_require-0.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3ba0eb133a59643238f7e72cc73d165", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37478, "upload_time": "2019-05-13T14:25:20", "upload_time_iso_8601": "2019-05-13T14:25:20.094249Z", "url": "https://files.pythonhosted.org/packages/66/22/8a2f784941c181fbdc6d3e008381a2257d79e3a1f6aaea21e12ca4d482b0/jupyter_require-0.2.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a1ff1d7ca3cab113c3be1d731e60035a", "sha256": "7d6f6dfc656514cedcd7bab98a514898ab1c5d2730f10ea921c19a37416fafbd" }, "downloads": -1, "filename": "jupyter-require-0.2.6.tar.gz", "has_sig": false, "md5_digest": "a1ff1d7ca3cab113c3be1d731e60035a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31374, "upload_time": "2019-05-13T14:25:21", "upload_time_iso_8601": "2019-05-13T14:25:21.985537Z", "url": "https://files.pythonhosted.org/packages/4f/1e/ae8b755ce741672980f95982bac85a6d8ed1eff1241e548bf27c82e5bdff/jupyter-require-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "86859d15b18f9d8cab52e90943155f4d", "sha256": "8647630b165454ead3625b59ed8f3a7eb7d61783313824f328491f9c6896c079" }, "downloads": -1, "filename": "jupyter_require-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "86859d15b18f9d8cab52e90943155f4d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38173, "upload_time": "2019-07-23T06:37:37", "upload_time_iso_8601": "2019-07-23T06:37:37.376891Z", "url": "https://files.pythonhosted.org/packages/4c/d3/401e4697acf2b06fc7bccf0cf02914825005634f5fc332b0fd28b0f1a2ca/jupyter_require-0.3.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f1f267ffedbf01f42125a7afa860d76a", "sha256": "e42a8d7e238418344ce5108d877dad23429f1d2faf89945a20d0c36b7b4786ca" }, "downloads": -1, "filename": "jupyter-require-0.3.0.tar.gz", "has_sig": false, "md5_digest": "f1f267ffedbf01f42125a7afa860d76a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31876, "upload_time": "2019-07-23T06:37:39", "upload_time_iso_8601": "2019-07-23T06:37:39.128290Z", "url": "https://files.pythonhosted.org/packages/60/d9/1f3495c7d073c3346a7baf91e2e3c6630812f0cdedf46de6e66915c586a6/jupyter-require-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0rc0": [ { "comment_text": "", "digests": { "md5": "5994f7b359dbeb255e5883cd035c5587", "sha256": "3c8ebdac43cef2b4b779747a004c89cca97dac6dd8ffc78535e8765412baede3" }, "downloads": -1, "filename": "jupyter_require-0.3.0rc0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5994f7b359dbeb255e5883cd035c5587", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38183, "upload_time": "2019-07-09T11:15:12", "upload_time_iso_8601": "2019-07-09T11:15:12.236616Z", "url": "https://files.pythonhosted.org/packages/8b/54/38dcb58f7287bb810225adbdca1cd3895e5466467b60a0028a7e009e488d/jupyter_require-0.3.0rc0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6555e8a5352a074cfcda6985ea5dbaf3", "sha256": "f2f9062f2fae0145a7517d73e7cbffffea9fcd9f28a243d570bfa47f32b66679" }, "downloads": -1, "filename": "jupyter-require-0.3.0rc0.tar.gz", "has_sig": false, "md5_digest": "6555e8a5352a074cfcda6985ea5dbaf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31867, "upload_time": "2019-07-09T11:15:14", "upload_time_iso_8601": "2019-07-09T11:15:14.418864Z", "url": "https://files.pythonhosted.org/packages/11/b0/ea2e32971c2167143a9d3395ba792c9991d468915e14c298222ec201bbc6/jupyter-require-0.3.0rc0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0rc1": [ { "comment_text": "", "digests": { "md5": "825b2c93e6c5b1d8f49eb0a725a602cf", "sha256": "2e0d6109dc296efcfc5476f8da3dd2188f00571d26695113af418944c5e776ce" }, "downloads": -1, "filename": "jupyter_require-0.3.0rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "825b2c93e6c5b1d8f49eb0a725a602cf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38242, "upload_time": "2019-07-19T06:06:14", "upload_time_iso_8601": "2019-07-19T06:06:14.838028Z", "url": "https://files.pythonhosted.org/packages/43/04/559fbaa4223909d2b2f6bb2d9ca90663784332ba244e2be410f4eff4d68b/jupyter_require-0.3.0rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2d439c5743aedf579608df4a474c2952", "sha256": "c62d49958b2db01b98b7b858c15f307f787f98d547461d95f86acee93d99394c" }, "downloads": -1, "filename": "jupyter-require-0.3.0rc1.tar.gz", "has_sig": false, "md5_digest": "2d439c5743aedf579608df4a474c2952", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31901, "upload_time": "2019-07-19T06:06:16", "upload_time_iso_8601": "2019-07-19T06:06:16.613978Z", "url": "https://files.pythonhosted.org/packages/18/8c/f1d519e8d59dc9f34bf82d154e946bd82a857f4d7d4878f134e82fa6f539/jupyter-require-0.3.0rc1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "b315c6eb92ed185945519889960d8ec0", "sha256": "321fa6dbda175db97dfe76a01bbf9e1e387adc5c0cca2820bce4b2da6507951e" }, "downloads": -1, "filename": "jupyter_require-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b315c6eb92ed185945519889960d8ec0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38494, "upload_time": "2019-09-28T14:16:45", "upload_time_iso_8601": "2019-09-28T14:16:45.027441Z", "url": "https://files.pythonhosted.org/packages/2b/79/f7a9405e6b6ff162e8ea72395d3679c406f20bdba864d2022251a8724ea4/jupyter_require-0.3.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "baf7cd399dc71c7c11c48d586aaad245", "sha256": "4199f78da296194afb09942d18852e5342949f6a0f67d83681c86ec257d0e2e2" }, "downloads": -1, "filename": "jupyter-require-0.3.2.tar.gz", "has_sig": false, "md5_digest": "baf7cd399dc71c7c11c48d586aaad245", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32268, "upload_time": "2019-09-28T14:16:47", "upload_time_iso_8601": "2019-09-28T14:16:47.391136Z", "url": "https://files.pythonhosted.org/packages/13/50/d33f38bf489d7a289dbac673483fd233535c472fe69977dced6606b88954/jupyter-require-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "96b6950216b78dbc5591dc1d926e32af", "sha256": "2abadb6b5053f334933fa433955c98fe6e8a606dc22920c6fb30b4f69da5fe31" }, "downloads": -1, "filename": "jupyter_require-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96b6950216b78dbc5591dc1d926e32af", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41124, "upload_time": "2019-10-03T15:42:56", "upload_time_iso_8601": "2019-10-03T15:42:56.881777Z", "url": "https://files.pythonhosted.org/packages/91/6c/8aa3bc639a69da68ce1d5d754496e4762f42f075a8a5aaf43c91d3ef7d1d/jupyter_require-0.3.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ded78f536cd7389a8526e24e8c6e984c", "sha256": "d9e61ee3fd53d556ab19af669cfd0a757a43898c4b14819c925bfa955ee854fd" }, "downloads": -1, "filename": "jupyter-require-0.3.3.tar.gz", "has_sig": false, "md5_digest": "ded78f536cd7389a8526e24e8c6e984c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32755, "upload_time": "2019-10-03T15:42:59", "upload_time_iso_8601": "2019-10-03T15:42:59.461031Z", "url": "https://files.pythonhosted.org/packages/79/99/a3ea92e57b06a8448e83192583122667f807a8138837c698ff2ae64aa85e/jupyter-require-0.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "0c90ac305f7bc4037333fc4a307836b8", "sha256": "a2278d5d19e13b4f1d3267fd5beafe165e03db459aa62fd95767da22e3267893" }, "downloads": -1, "filename": "jupyter_require-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0c90ac305f7bc4037333fc4a307836b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41403, "upload_time": "2019-10-26T12:12:24", "upload_time_iso_8601": "2019-10-26T12:12:24.664044Z", "url": "https://files.pythonhosted.org/packages/d3/2b/c7ffeeec8ba2e349012178e6c19499f1f83bd2ac9366572be3eb844cdf7d/jupyter_require-0.4.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f52d6fd195c674ab7b25eeccd9dec816", "sha256": "b4846b4bbf59a8ddf8ea2b5063a505b579490419dcb1fd5dfc1d15496bf4d3db" }, "downloads": -1, "filename": "jupyter-require-0.4.0.tar.gz", "has_sig": false, "md5_digest": "f52d6fd195c674ab7b25eeccd9dec816", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32912, "upload_time": "2019-10-26T12:12:26", "upload_time_iso_8601": "2019-10-26T12:12:26.862836Z", "url": "https://files.pythonhosted.org/packages/df/d8/e01f4ae82e4d76f657b20004efb57fd2948c6a1122c51654750bfd29951c/jupyter-require-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "e0c2898e745fd30b5364da3d1f628851", "sha256": "153f46f0debd4c712eea46b4c650e3200525d0c3bc3e9d92a6be3736d05dbe27" }, "downloads": -1, "filename": "jupyter_require-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e0c2898e745fd30b5364da3d1f628851", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41486, "upload_time": "2019-10-26T13:29:22", "upload_time_iso_8601": "2019-10-26T13:29:22.927282Z", "url": "https://files.pythonhosted.org/packages/b3/cb/45d50fb592bd229db21a98bb7c6db355e11f900e99aa336026b1ef34d897/jupyter_require-0.4.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e2ccecaf498e013422de6f4ae12d1ff5", "sha256": "df60dd83abc7589a62769f32ca0a24d5326d4a91fd07958ecb4077d58c9b2db9" }, "downloads": -1, "filename": "jupyter-require-0.4.1.tar.gz", "has_sig": false, "md5_digest": "e2ccecaf498e013422de6f4ae12d1ff5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32893, "upload_time": "2019-10-26T13:29:25", "upload_time_iso_8601": "2019-10-26T13:29:25.534451Z", "url": "https://files.pythonhosted.org/packages/22/25/3747a23df28954a7bdde8af418e6a9d90e067c285c78c71bc14aa10191f4/jupyter-require-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "b170550b9a75da9463ccd02fa8502354", "sha256": "753c5338b63db4177e9132741765492c99f923ddc597f5d60747895d7449ae79" }, "downloads": -1, "filename": "jupyter_require-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b170550b9a75da9463ccd02fa8502354", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41612, "upload_time": "2019-10-26T14:22:18", "upload_time_iso_8601": "2019-10-26T14:22:18.021109Z", "url": "https://files.pythonhosted.org/packages/e2/f9/c4660c89f43eaa5623a95a4185a204be66e326b94436e5779502ea12082a/jupyter_require-0.4.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "66c09eabaf8a916efbbeaee43a0e09d0", "sha256": "d4b9881148c8be87323eed05b4aa90ee727ded886ce6ec399d5cc3124a739279" }, "downloads": -1, "filename": "jupyter-require-0.4.2.tar.gz", "has_sig": false, "md5_digest": "66c09eabaf8a916efbbeaee43a0e09d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33028, "upload_time": "2019-10-26T14:22:20", "upload_time_iso_8601": "2019-10-26T14:22:20.699358Z", "url": "https://files.pythonhosted.org/packages/0d/d8/cb777d59bdbcb7df338b45d6b179e1c51d37d41bb0e0c27a873b98c9e411/jupyter-require-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "aca888e5acae2600fa1ee8cd9072141a", "sha256": "d5a39acf9e6ddd12eb62aae059dcdf7d476434cea01e8194bfaa08c5c41d2b9c" }, "downloads": -1, "filename": "jupyter_require-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aca888e5acae2600fa1ee8cd9072141a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41902, "upload_time": "2019-11-23T19:17:36", "upload_time_iso_8601": "2019-11-23T19:17:36.691129Z", "url": "https://files.pythonhosted.org/packages/df/89/f42dcf51fbb88209270dac9c6edabf1f13caab54453294b7a34a3d06cb72/jupyter_require-0.4.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0bc00b2d996f08016f18be0c48b96ed9", "sha256": "0ee6018815d75be018b39befde9ccd90b956900d724705a4d86a57dbdc104bfa" }, "downloads": -1, "filename": "jupyter-require-0.4.3.tar.gz", "has_sig": false, "md5_digest": "0bc00b2d996f08016f18be0c48b96ed9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33297, "upload_time": "2019-11-23T19:17:40", "upload_time_iso_8601": "2019-11-23T19:17:40.026309Z", "url": "https://files.pythonhosted.org/packages/e4/6a/0293388710623060effddc8f459526b34537171d3fd565330406f8635eb8/jupyter-require-0.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "e1975918088c9cb7695c8f5da192f673", "sha256": "74acefb8553b7e070b382d5c4feef07c767a7248501e314a37c423fd946ddab2" }, "downloads": -1, "filename": "jupyter_require-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e1975918088c9cb7695c8f5da192f673", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42129, "upload_time": "2019-11-27T22:08:45", "upload_time_iso_8601": "2019-11-27T22:08:45.368973Z", "url": "https://files.pythonhosted.org/packages/3c/89/61e1923f3c454f7861077f6a10493065a9b76bed070dec707abd13477f73/jupyter_require-0.5.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "be00e3a8b1cd3917b5d1c430aa0baa7b", "sha256": "7a9c0580a71de9a5085f934b9c9fce4ac148019c532ecd1dd7e998998470853c" }, "downloads": -1, "filename": "jupyter-require-0.5.0.tar.gz", "has_sig": false, "md5_digest": "be00e3a8b1cd3917b5d1c430aa0baa7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33527, "upload_time": "2019-11-27T22:08:48", "upload_time_iso_8601": "2019-11-27T22:08:48.214323Z", "url": "https://files.pythonhosted.org/packages/28/8c/a4f542a2d4ce06aaf137f5c65daa4d55bd49440e676d6b6da5414324103c/jupyter-require-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2c7b107fa36ef4eb2860e8495c8b625e", "sha256": "ffcae66da9a4bf3664f2e3c91278c802f3ea6df8c5420726a3462244797d8641" }, "downloads": -1, "filename": "jupyter_require-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2c7b107fa36ef4eb2860e8495c8b625e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42248, "upload_time": "2019-12-03T21:02:41", "upload_time_iso_8601": "2019-12-03T21:02:41.380044Z", "url": "https://files.pythonhosted.org/packages/65/49/8b09b641fc24a1fa2ece60ec3ad2987aa8c674633dd5a79d8606a798d0a8/jupyter_require-0.6.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b5439b77419f1fc32d49339a2bd1a5ec", "sha256": "99bdf57362c9b2e4b3a5708b8a8d6647ef06813bda5b6139ea1635f7c8c3d474" }, "downloads": -1, "filename": "jupyter-require-0.6.0.tar.gz", "has_sig": false, "md5_digest": "b5439b77419f1fc32d49339a2bd1a5ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33573, "upload_time": "2019-12-03T21:02:43", "upload_time_iso_8601": "2019-12-03T21:02:43.654392Z", "url": "https://files.pythonhosted.org/packages/00/18/0fc85a95ad5a19196a101b27b6ab3c54d502404a17e1b93b6dc0dbf5b11d/jupyter-require-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "b31cec5b93d81a30dcf912775b5e2dc5", "sha256": "5473bbd3d0ca6e6bcc606281bcaaf7c57c51c2c2bf696c32d451066cb44c1301" }, "downloads": -1, "filename": "jupyter_require-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b31cec5b93d81a30dcf912775b5e2dc5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42307, "upload_time": "2019-12-03T22:06:07", "upload_time_iso_8601": "2019-12-03T22:06:07.512638Z", "url": "https://files.pythonhosted.org/packages/a8/e5/b45148cc02f17141d5641d621c7c1ede03af8915242710746fffba833d09/jupyter_require-0.6.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fe82541c3d4f16486bfbfa2b5cb9caf4", "sha256": "c1aa042e2c17a2f45978abab74e96a7e0474f44dd138678cc177a0ee281dcc00" }, "downloads": -1, "filename": "jupyter-require-0.6.1.tar.gz", "has_sig": false, "md5_digest": "fe82541c3d4f16486bfbfa2b5cb9caf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38549, "upload_time": "2019-12-03T22:06:09", "upload_time_iso_8601": "2019-12-03T22:06:09.777154Z", "url": "https://files.pythonhosted.org/packages/9e/c7/505c66e2b09c0dafcfb28eb49f599424864d0dc7f1fa0c910862ab7131cd/jupyter-require-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b31cec5b93d81a30dcf912775b5e2dc5", "sha256": "5473bbd3d0ca6e6bcc606281bcaaf7c57c51c2c2bf696c32d451066cb44c1301" }, "downloads": -1, "filename": "jupyter_require-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b31cec5b93d81a30dcf912775b5e2dc5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42307, "upload_time": "2019-12-03T22:06:07", "upload_time_iso_8601": "2019-12-03T22:06:07.512638Z", "url": "https://files.pythonhosted.org/packages/a8/e5/b45148cc02f17141d5641d621c7c1ede03af8915242710746fffba833d09/jupyter_require-0.6.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fe82541c3d4f16486bfbfa2b5cb9caf4", "sha256": "c1aa042e2c17a2f45978abab74e96a7e0474f44dd138678cc177a0ee281dcc00" }, "downloads": -1, "filename": "jupyter-require-0.6.1.tar.gz", "has_sig": false, "md5_digest": "fe82541c3d4f16486bfbfa2b5cb9caf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38549, "upload_time": "2019-12-03T22:06:09", "upload_time_iso_8601": "2019-12-03T22:06:09.777154Z", "url": "https://files.pythonhosted.org/packages/9e/c7/505c66e2b09c0dafcfb28eb49f599424864d0dc7f1fa0c910862ab7131cd/jupyter-require-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }