├── .gitignore ├── LICENSE ├── README.md ├── moj ├── __init__.py └── cli.py ├── poetry.lock └── pyproject.toml /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | *.egg-info -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2019, Jacob Kaplan-Moss 3 | 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without modification, 7 | are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, 10 | this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 19 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Moons of Jupyter 2 | 3 | Run a single Jupyter Lab instance, connected to multiple Python environments. 4 | 5 | ⚠ **This is 100% vaporware. It's something I wish existed. Maybe I'll build it some day... want to help?** ⚠ 6 | 7 | ```bash 8 | $ pipx install moons-of-jupyter 9 | 10 | $ moj start 11 | Jupyter Lab running on http://localhost:9876/ 12 | 13 | $ moj add path/to/venv --name "Venv Project" 14 | installing path/to/venv (venv environment, Python 3.7)... done 15 | 16 | $ moj add path/to/poetry-project --name "Poetry Project" 17 | installing path/to/poetry-project (Poetry environment, Python 3.5)... done 18 | 19 | $ moj add path/to/pipenv-project --pythonpath 20 | installing path/to/pipenv-project (Pipenv environment, Python 2.7)... done 21 | 22 | $ moj add /usr/local/bin/python3 23 | installing /usr/local/bin/python3 (base install, Python 3.8)... done 24 | 25 | $ moj remove "Poetry Project" 26 | removed path/to/poetry-project 27 | 28 | $ moj remove /usr/local/bin/python3 29 | removed /usr/local/bin/python3 30 | 31 | $ moj autostart on 32 | installed launchd config 33 | moj will now run automatically on startup 34 | 35 | $ moj autostart off 36 | moj will no longer run on startup 37 | 38 | ``` 39 | 40 | 41 | -------------------------------------------------------------------------------- /moj/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacobian/moons-of-jupyter/ed643935fd6f392b4e5fa04f1835202361bb05c5/moj/__init__.py -------------------------------------------------------------------------------- /moj/cli.py: -------------------------------------------------------------------------------- 1 | import click 2 | 3 | 4 | @click.group() 5 | @click.version_option() 6 | def cli(): 7 | """Manage a Moons of Jupyter installation.""" 8 | 9 | 10 | @cli.command() 11 | def start(): 12 | """Start Jupyter""" 13 | print("✨ running on http://notreally/") 14 | 15 | 16 | @cli.command() 17 | def stop(): 18 | """Stop Jupyter""" 19 | print("🔥 server stopped") 20 | 21 | 22 | @cli.command() 23 | @click.argument( 24 | "environment", 25 | type=click.Path(exists=True, file_okay=True, dir_okay=True, allow_dash=False), 26 | ) 27 | @click.option("-n", "--name", help="Human-readable name for this environment") 28 | def add(environment, name): 29 | """ 30 | Add a Python environment, which can be a virtualenv, Pipenv/Poetry directory, 31 | or python interpreter 32 | """ 33 | print(f"✅ added {environment}") 34 | 35 | 36 | @cli.command() 37 | @click.argument("environment_or_name") 38 | def remove(environment_or_name): 39 | """Remove an environment (by path or name)""" 40 | print(f"🔥 removed {environment_or_name}") 41 | 42 | 43 | @cli.command() 44 | @click.argument("onoff", default="on", type=click.Choice(["on", "off"])) 45 | def autostart(onoff): 46 | """Turn on/off automatically running at startup.""" 47 | if onoff == "on": 48 | print(f"✅ moj will run on startup") 49 | else: 50 | print(f"🔥 moj will no longer start automatically") 51 | -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | category = "main" 3 | description = "Disable App Nap on OS X 10.9" 4 | marker = "sys_platform == \"darwin\" or platform_system == \"Darwin\"" 5 | name = "appnope" 6 | optional = false 7 | python-versions = "*" 8 | version = "0.1.0" 9 | 10 | [[package]] 11 | category = "dev" 12 | description = "Atomic file writes." 13 | name = "atomicwrites" 14 | optional = false 15 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 16 | version = "1.3.0" 17 | 18 | [[package]] 19 | category = "main" 20 | description = "Classes Without Boilerplate" 21 | name = "attrs" 22 | optional = false 23 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 24 | version = "19.3.0" 25 | 26 | [package.extras] 27 | azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] 28 | dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] 29 | docs = ["sphinx", "zope.interface"] 30 | tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] 31 | 32 | [[package]] 33 | category = "main" 34 | description = "Self-service finite-state machines for the programmer on the go." 35 | name = "automat" 36 | optional = false 37 | python-versions = "*" 38 | version = "0.8.0" 39 | 40 | [package.dependencies] 41 | attrs = ">=16.1.0" 42 | six = "*" 43 | 44 | [package.extras] 45 | visualize = ["graphviz (>0.5.1)", "Twisted (>=16.1.1)"] 46 | 47 | [[package]] 48 | category = "main" 49 | description = "Specifications for callback functions passed in to an API" 50 | name = "backcall" 51 | optional = false 52 | python-versions = "*" 53 | version = "0.1.0" 54 | 55 | [[package]] 56 | category = "main" 57 | description = "An easy safelist-based HTML-sanitizing tool." 58 | name = "bleach" 59 | optional = false 60 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 61 | version = "3.1.0" 62 | 63 | [package.dependencies] 64 | six = ">=1.9.0" 65 | webencodings = "*" 66 | 67 | [[package]] 68 | category = "main" 69 | description = "Composable command line interface toolkit" 70 | name = "click" 71 | optional = false 72 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 73 | version = "7.0" 74 | 75 | [[package]] 76 | category = "main" 77 | description = "Cross-platform colored terminal text." 78 | marker = "sys_platform == \"win32\"" 79 | name = "colorama" 80 | optional = false 81 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 82 | version = "0.4.1" 83 | 84 | [[package]] 85 | category = "main" 86 | description = "Symbolic constants in Python" 87 | name = "constantly" 88 | optional = false 89 | python-versions = "*" 90 | version = "15.1.0" 91 | 92 | [[package]] 93 | category = "dev" 94 | description = "Code coverage measurement for Python" 95 | name = "coverage" 96 | optional = false 97 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" 98 | version = "4.5.4" 99 | 100 | [[package]] 101 | category = "main" 102 | description = "Decorators for Humans" 103 | name = "decorator" 104 | optional = false 105 | python-versions = ">=2.6, !=3.0.*, !=3.1.*" 106 | version = "4.4.1" 107 | 108 | [[package]] 109 | category = "main" 110 | description = "XML bomb protection for Python stdlib modules" 111 | name = "defusedxml" 112 | optional = false 113 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 114 | version = "0.6.0" 115 | 116 | [[package]] 117 | category = "main" 118 | description = "Discover and load entry points from installed packages." 119 | name = "entrypoints" 120 | optional = false 121 | python-versions = ">=2.7" 122 | version = "0.3" 123 | 124 | [[package]] 125 | category = "main" 126 | description = "Gather: A gatherer." 127 | name = "gather" 128 | optional = false 129 | python-versions = "*" 130 | version = "17.5.0" 131 | 132 | [package.dependencies] 133 | attrs = "*" 134 | incremental = "*" 135 | six = "*" 136 | venusian = "*" 137 | 138 | [[package]] 139 | category = "main" 140 | description = "A featureful, immutable, and correct URL for Python." 141 | name = "hyperlink" 142 | optional = false 143 | python-versions = "*" 144 | version = "19.0.0" 145 | 146 | [package.dependencies] 147 | idna = ">=2.5" 148 | 149 | [[package]] 150 | category = "main" 151 | description = "Internationalized Domain Names in Applications (IDNA)" 152 | name = "idna" 153 | optional = false 154 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 155 | version = "2.8" 156 | 157 | [[package]] 158 | category = "main" 159 | description = "Read metadata from Python packages" 160 | name = "importlib-metadata" 161 | optional = false 162 | python-versions = ">=2.7,!=3.0,!=3.1,!=3.2,!=3.3" 163 | version = "0.23" 164 | 165 | [package.dependencies] 166 | zipp = ">=0.5" 167 | 168 | [package.extras] 169 | docs = ["sphinx", "rst.linker"] 170 | testing = ["packaging", "importlib-resources"] 171 | 172 | [[package]] 173 | category = "main" 174 | description = "" 175 | name = "incremental" 176 | optional = false 177 | python-versions = "*" 178 | version = "17.5.0" 179 | 180 | [package.extras] 181 | scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] 182 | 183 | [[package]] 184 | category = "main" 185 | description = "IPython Kernel for Jupyter" 186 | name = "ipykernel" 187 | optional = false 188 | python-versions = ">=3.4" 189 | version = "5.1.3" 190 | 191 | [package.dependencies] 192 | appnope = "*" 193 | ipython = ">=5.0.0" 194 | jupyter-client = "*" 195 | tornado = ">=4.2" 196 | traitlets = ">=4.1.0" 197 | 198 | [package.extras] 199 | test = ["pytest", "pytest-cov", "flaky", "nose"] 200 | 201 | [[package]] 202 | category = "main" 203 | description = "IPython: Productive Interactive Computing" 204 | name = "ipython" 205 | optional = false 206 | python-versions = ">=3.5" 207 | version = "7.9.0" 208 | 209 | [package.dependencies] 210 | appnope = "*" 211 | backcall = "*" 212 | colorama = "*" 213 | decorator = "*" 214 | jedi = ">=0.10" 215 | pexpect = "*" 216 | pickleshare = "*" 217 | prompt-toolkit = ">=2.0.0,<2.1.0" 218 | pygments = "*" 219 | setuptools = ">=18.5" 220 | traitlets = ">=4.2" 221 | 222 | [package.extras] 223 | all = ["testpath", "nbformat", "numpy", "notebook", "ipyparallel", "nbconvert", "ipywidgets", "pygments", "requests", "nose (>=0.10.1)", "qtconsole", "ipykernel", "Sphinx (>=1.3)"] 224 | doc = ["Sphinx (>=1.3)"] 225 | kernel = ["ipykernel"] 226 | nbconvert = ["nbconvert"] 227 | nbformat = ["nbformat"] 228 | notebook = ["notebook", "ipywidgets"] 229 | parallel = ["ipyparallel"] 230 | qtconsole = ["qtconsole"] 231 | test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy"] 232 | 233 | [[package]] 234 | category = "main" 235 | description = "Vestigial utilities from IPython" 236 | name = "ipython-genutils" 237 | optional = false 238 | python-versions = "*" 239 | version = "0.2.0" 240 | 241 | [[package]] 242 | category = "main" 243 | description = "An autocompletion tool for Python that can be used for text editors." 244 | name = "jedi" 245 | optional = false 246 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 247 | version = "0.15.1" 248 | 249 | [package.dependencies] 250 | parso = ">=0.5.0" 251 | 252 | [package.extras] 253 | testing = ["colorama", "docopt", "pytest (>=3.1.0,<5.0.0)"] 254 | 255 | [[package]] 256 | category = "main" 257 | description = "A very fast and expressive template engine." 258 | name = "jinja2" 259 | optional = false 260 | python-versions = "*" 261 | version = "2.10.3" 262 | 263 | [package.dependencies] 264 | MarkupSafe = ">=0.23" 265 | 266 | [package.extras] 267 | i18n = ["Babel (>=0.8)"] 268 | 269 | [[package]] 270 | category = "main" 271 | description = "A Python implementation of the JSON5 data format." 272 | name = "json5" 273 | optional = false 274 | python-versions = "*" 275 | version = "0.8.5" 276 | 277 | [[package]] 278 | category = "main" 279 | description = "An implementation of JSON Schema validation for Python" 280 | name = "jsonschema" 281 | optional = false 282 | python-versions = "*" 283 | version = "3.1.1" 284 | 285 | [package.dependencies] 286 | attrs = ">=17.4.0" 287 | importlib-metadata = "*" 288 | pyrsistent = ">=0.14.0" 289 | setuptools = "*" 290 | six = ">=1.11.0" 291 | 292 | [package.extras] 293 | format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] 294 | 295 | [[package]] 296 | category = "main" 297 | description = "Jupyter protocol implementation and client libraries" 298 | name = "jupyter-client" 299 | optional = false 300 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 301 | version = "5.3.4" 302 | 303 | [package.dependencies] 304 | jupyter-core = ">=4.6.0" 305 | python-dateutil = ">=2.1" 306 | pywin32 = ">=1.0" 307 | pyzmq = ">=13" 308 | tornado = ">=4.1" 309 | traitlets = "*" 310 | 311 | [package.extras] 312 | test = ["ipykernel", "ipython", "mock", "pytest"] 313 | 314 | [[package]] 315 | category = "main" 316 | description = "Jupyter core package. A base package on which Jupyter projects rely." 317 | name = "jupyter-core" 318 | optional = false 319 | python-versions = ">=2.7, !=3.0, !=3.1, !=3.2" 320 | version = "4.6.1" 321 | 322 | [package.dependencies] 323 | pywin32 = ">=1.0" 324 | traitlets = "*" 325 | 326 | [[package]] 327 | category = "main" 328 | description = "The JupyterLab notebook server extension." 329 | name = "jupyterlab" 330 | optional = false 331 | python-versions = ">=3.5" 332 | version = "1.2.3" 333 | 334 | [package.dependencies] 335 | jinja2 = ">=2.10" 336 | jupyterlab-server = ">=1.0.0,<1.1.0" 337 | notebook = ">=4.3.1" 338 | tornado = "<6.0.0 || >6.0.0,<6.0.1 || >6.0.1,<6.0.2 || >6.0.2" 339 | 340 | [package.extras] 341 | docs = ["sphinx", "recommonmark", "sphinx-rtd-theme", "sphinx-copybutton"] 342 | test = ["pytest", "pytest-check-links", "requests"] 343 | 344 | [[package]] 345 | category = "main" 346 | description = "JupyterLab Server" 347 | name = "jupyterlab-server" 348 | optional = false 349 | python-versions = ">=3.5" 350 | version = "1.0.6" 351 | 352 | [package.dependencies] 353 | jinja2 = ">=2.10" 354 | json5 = "*" 355 | jsonschema = ">=3.0.1" 356 | notebook = ">=4.2.0" 357 | 358 | [package.extras] 359 | test = ["pytest", "requests"] 360 | 361 | [[package]] 362 | category = "main" 363 | description = "Safely add untrusted strings to HTML/XML markup." 364 | name = "markupsafe" 365 | optional = false 366 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" 367 | version = "1.1.1" 368 | 369 | [[package]] 370 | category = "main" 371 | description = "The fastest markdown parser in pure Python" 372 | name = "mistune" 373 | optional = false 374 | python-versions = "*" 375 | version = "0.8.4" 376 | 377 | [[package]] 378 | category = "main" 379 | description = "More routines for operating on iterables, beyond itertools" 380 | name = "more-itertools" 381 | optional = false 382 | python-versions = ">=3.4" 383 | version = "7.2.0" 384 | 385 | [[package]] 386 | category = "main" 387 | description = "Converting Jupyter Notebooks" 388 | name = "nbconvert" 389 | optional = false 390 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 391 | version = "5.6.1" 392 | 393 | [package.dependencies] 394 | bleach = "*" 395 | defusedxml = "*" 396 | entrypoints = ">=0.2.2" 397 | jinja2 = ">=2.4" 398 | jupyter-core = "*" 399 | mistune = ">=0.8.1,<2" 400 | nbformat = ">=4.4" 401 | pandocfilters = ">=1.4.1" 402 | pygments = "*" 403 | testpath = "*" 404 | traitlets = ">=4.2" 405 | 406 | [package.extras] 407 | all = ["pytest", "pytest-cov", "ipykernel", "jupyter-client (>=5.3.1)", "ipywidgets (>=7)", "pebble", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "sphinxcontrib-github-alt", "ipython", "mock"] 408 | docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "sphinxcontrib-github-alt", "ipython", "jupyter-client (>=5.3.1)"] 409 | execute = ["jupyter-client (>=5.3.1)"] 410 | serve = ["tornado (>=4.0)"] 411 | test = ["pytest", "pytest-cov", "ipykernel", "jupyter-client (>=5.3.1)", "ipywidgets (>=7)", "pebble", "mock"] 412 | 413 | [[package]] 414 | category = "main" 415 | description = "The Jupyter Notebook format" 416 | name = "nbformat" 417 | optional = false 418 | python-versions = "*" 419 | version = "4.4.0" 420 | 421 | [package.dependencies] 422 | ipython-genutils = "*" 423 | jsonschema = ">=2.4,<2.5.0 || >2.5.0" 424 | jupyter-core = "*" 425 | traitlets = ">=4.1" 426 | 427 | [package.extras] 428 | test = ["pytest", "pytest-cov", "testpath"] 429 | 430 | [[package]] 431 | category = "main" 432 | description = "A process starter/monitor" 433 | name = "ncolony" 434 | optional = false 435 | python-versions = "*" 436 | version = "18.6.0" 437 | 438 | [package.dependencies] 439 | Twisted = "*" 440 | gather = "*" 441 | incremental = "*" 442 | six = "*" 443 | 444 | [[package]] 445 | category = "main" 446 | description = "A web-based notebook environment for interactive computing" 447 | name = "notebook" 448 | optional = false 449 | python-versions = ">=3.5" 450 | version = "6.0.2" 451 | 452 | [package.dependencies] 453 | Send2Trash = "*" 454 | ipykernel = "*" 455 | ipython-genutils = "*" 456 | jinja2 = "*" 457 | jupyter-client = ">=5.3.4" 458 | jupyter-core = ">=4.6.0" 459 | nbconvert = "*" 460 | nbformat = "*" 461 | prometheus-client = "*" 462 | pyzmq = ">=17" 463 | terminado = ">=0.8.1" 464 | tornado = ">=5.0" 465 | traitlets = ">=4.2.1" 466 | 467 | [package.extras] 468 | test = ["nose", "coverage", "requests", "nose-warnings-filters", "nbval", "nose-exclude", "selenium", "pytest", "pytest-cov", "nose-exclude"] 469 | 470 | [[package]] 471 | category = "dev" 472 | description = "Core utilities for Python packages" 473 | name = "packaging" 474 | optional = false 475 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 476 | version = "19.2" 477 | 478 | [package.dependencies] 479 | pyparsing = ">=2.0.2" 480 | six = "*" 481 | 482 | [[package]] 483 | category = "main" 484 | description = "Utilities for writing pandoc filters in python" 485 | name = "pandocfilters" 486 | optional = false 487 | python-versions = "*" 488 | version = "1.4.2" 489 | 490 | [[package]] 491 | category = "main" 492 | description = "A Python Parser" 493 | name = "parso" 494 | optional = false 495 | python-versions = "*" 496 | version = "0.5.1" 497 | 498 | [package.extras] 499 | testing = ["docopt", "pytest (>=3.0.7)"] 500 | 501 | [[package]] 502 | category = "main" 503 | description = "Pexpect allows easy control of interactive console applications." 504 | marker = "sys_platform != \"win32\"" 505 | name = "pexpect" 506 | optional = false 507 | python-versions = "*" 508 | version = "4.7.0" 509 | 510 | [package.dependencies] 511 | ptyprocess = ">=0.5" 512 | 513 | [[package]] 514 | category = "main" 515 | description = "Tiny 'shelve'-like database with concurrency support" 516 | name = "pickleshare" 517 | optional = false 518 | python-versions = "*" 519 | version = "0.7.5" 520 | 521 | [[package]] 522 | category = "dev" 523 | description = "plugin and hook calling mechanisms for python" 524 | name = "pluggy" 525 | optional = false 526 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 527 | version = "0.13.0" 528 | 529 | [package.dependencies] 530 | [package.dependencies.importlib-metadata] 531 | python = "<3.8" 532 | version = ">=0.12" 533 | 534 | [package.extras] 535 | dev = ["pre-commit", "tox"] 536 | 537 | [[package]] 538 | category = "main" 539 | description = "Python client for the Prometheus monitoring system." 540 | name = "prometheus-client" 541 | optional = false 542 | python-versions = "*" 543 | version = "0.7.1" 544 | 545 | [package.extras] 546 | twisted = ["twisted"] 547 | 548 | [[package]] 549 | category = "main" 550 | description = "Library for building powerful interactive command lines in Python" 551 | name = "prompt-toolkit" 552 | optional = false 553 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" 554 | version = "2.0.10" 555 | 556 | [package.dependencies] 557 | six = ">=1.9.0" 558 | wcwidth = "*" 559 | 560 | [[package]] 561 | category = "main" 562 | description = "Run a subprocess in a pseudo terminal" 563 | marker = "sys_platform != \"win32\" or os_name != \"nt\"" 564 | name = "ptyprocess" 565 | optional = false 566 | python-versions = "*" 567 | version = "0.6.0" 568 | 569 | [[package]] 570 | category = "dev" 571 | description = "library with cross-python path, ini-parsing, io, code, log facilities" 572 | name = "py" 573 | optional = false 574 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 575 | version = "1.8.0" 576 | 577 | [[package]] 578 | category = "main" 579 | description = "Pygments is a syntax highlighting package written in Python." 580 | name = "pygments" 581 | optional = false 582 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 583 | version = "2.4.2" 584 | 585 | [[package]] 586 | category = "main" 587 | description = "Hamcrest framework for matcher objects" 588 | name = "pyhamcrest" 589 | optional = false 590 | python-versions = "*" 591 | version = "1.9.0" 592 | 593 | [package.dependencies] 594 | setuptools = "*" 595 | six = "*" 596 | 597 | [[package]] 598 | category = "dev" 599 | description = "Python parsing module" 600 | name = "pyparsing" 601 | optional = false 602 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" 603 | version = "2.4.5" 604 | 605 | [[package]] 606 | category = "main" 607 | description = "Persistent/Functional/Immutable data structures" 608 | name = "pyrsistent" 609 | optional = false 610 | python-versions = "*" 611 | version = "0.15.5" 612 | 613 | [package.dependencies] 614 | six = "*" 615 | 616 | [[package]] 617 | category = "dev" 618 | description = "pytest: simple powerful testing with Python" 619 | name = "pytest" 620 | optional = false 621 | python-versions = ">=3.5" 622 | version = "5.2.3" 623 | 624 | [package.dependencies] 625 | atomicwrites = ">=1.0" 626 | attrs = ">=17.4.0" 627 | colorama = "*" 628 | more-itertools = ">=4.0.0" 629 | packaging = "*" 630 | pluggy = ">=0.12,<1.0" 631 | py = ">=1.5.0" 632 | wcwidth = "*" 633 | 634 | [package.dependencies.importlib-metadata] 635 | python = "<3.8" 636 | version = ">=0.12" 637 | 638 | [package.extras] 639 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] 640 | 641 | [[package]] 642 | category = "dev" 643 | description = "Pytest plugin for measuring coverage." 644 | name = "pytest-cov" 645 | optional = false 646 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 647 | version = "2.8.1" 648 | 649 | [package.dependencies] 650 | coverage = ">=4.4" 651 | pytest = ">=3.6" 652 | 653 | [package.extras] 654 | testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "virtualenv"] 655 | 656 | [[package]] 657 | category = "main" 658 | description = "Extensions to the standard Python datetime module" 659 | name = "python-dateutil" 660 | optional = false 661 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 662 | version = "2.8.1" 663 | 664 | [package.dependencies] 665 | six = ">=1.5" 666 | 667 | [[package]] 668 | category = "main" 669 | description = "Python for Window Extensions" 670 | marker = "sys_platform == \"win32\"" 671 | name = "pywin32" 672 | optional = false 673 | python-versions = "*" 674 | version = "227" 675 | 676 | [[package]] 677 | category = "main" 678 | description = "Python bindings for the winpty library" 679 | marker = "os_name == \"nt\"" 680 | name = "pywinpty" 681 | optional = false 682 | python-versions = "*" 683 | version = "0.5.5" 684 | 685 | [[package]] 686 | category = "main" 687 | description = "Python bindings for 0MQ" 688 | name = "pyzmq" 689 | optional = false 690 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" 691 | version = "18.1.1" 692 | 693 | [[package]] 694 | category = "main" 695 | description = "Send file to trash natively under Mac OS X, Windows and Linux." 696 | name = "send2trash" 697 | optional = false 698 | python-versions = "*" 699 | version = "1.5.0" 700 | 701 | [[package]] 702 | category = "main" 703 | description = "Python 2 and 3 compatibility utilities" 704 | name = "six" 705 | optional = false 706 | python-versions = ">=2.6, !=3.0.*, !=3.1.*" 707 | version = "1.13.0" 708 | 709 | [[package]] 710 | category = "main" 711 | description = "Terminals served to xterm.js using Tornado websockets" 712 | name = "terminado" 713 | optional = false 714 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 715 | version = "0.8.3" 716 | 717 | [package.dependencies] 718 | ptyprocess = "*" 719 | pywinpty = ">=0.5" 720 | tornado = ">=4" 721 | 722 | [[package]] 723 | category = "main" 724 | description = "Test utilities for code working with files and commands" 725 | name = "testpath" 726 | optional = false 727 | python-versions = "*" 728 | version = "0.4.4" 729 | 730 | [package.extras] 731 | test = ["pathlib2"] 732 | 733 | [[package]] 734 | category = "main" 735 | description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." 736 | name = "tornado" 737 | optional = false 738 | python-versions = ">= 3.5" 739 | version = "6.0.3" 740 | 741 | [[package]] 742 | category = "main" 743 | description = "Traitlets Python config system" 744 | name = "traitlets" 745 | optional = false 746 | python-versions = "*" 747 | version = "4.3.3" 748 | 749 | [package.dependencies] 750 | decorator = "*" 751 | ipython-genutils = "*" 752 | six = "*" 753 | 754 | [package.extras] 755 | test = ["pytest", "mock"] 756 | 757 | [[package]] 758 | category = "main" 759 | description = "An asynchronous networking framework written in Python" 760 | name = "twisted" 761 | optional = false 762 | python-versions = "*" 763 | version = "19.10.0" 764 | 765 | [package.dependencies] 766 | Automat = ">=0.3.0" 767 | PyHamcrest = ">=1.9.0" 768 | attrs = ">=17.4.0" 769 | constantly = ">=15.1" 770 | hyperlink = ">=17.1.1" 771 | incremental = ">=16.10.1" 772 | "zope.interface" = ">=4.4.2" 773 | 774 | [package.extras] 775 | all_non_platform = ["pyopenssl (>=16.0.0)", "service_identity (>=18.1.0)", "idna (>=0.6,<2.3 || >2.3)", "pyasn1", "cryptography (>=2.5)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "soappy", "pyserial (>=3.0)", "h2 (>=3.0,<4.0)", "priority (>=1.1.0,<2.0)", "pywin32"] 776 | conch = ["pyasn1", "cryptography (>=2.5)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)"] 777 | dev = ["pyflakes (>=1.0.0)", "twisted-dev-tools (>=0.0.2)", "python-subunit", "sphinx (>=1.3.1)", "towncrier (>=17.4.0)"] 778 | http2 = ["h2 (>=3.0,<4.0)", "priority (>=1.1.0,<2.0)"] 779 | macos_platform = ["pyobjc-core", "pyobjc-framework-cfnetwork", "pyobjc-framework-cocoa", "pyopenssl (>=16.0.0)", "service_identity (>=18.1.0)", "idna (>=0.6,<2.3 || >2.3)", "pyasn1", "cryptography (>=2.5)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "soappy", "pyserial (>=3.0)", "h2 (>=3.0,<4.0)", "priority (>=1.1.0,<2.0)", "pywin32"] 780 | osx_platform = ["pyobjc-core", "pyobjc-framework-cfnetwork", "pyobjc-framework-cocoa", "pyopenssl (>=16.0.0)", "service_identity (>=18.1.0)", "idna (>=0.6,<2.3 || >2.3)", "pyasn1", "cryptography (>=2.5)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "soappy", "pyserial (>=3.0)", "h2 (>=3.0,<4.0)", "priority (>=1.1.0,<2.0)", "pywin32"] 781 | serial = ["pyserial (>=3.0)", "pywin32"] 782 | soap = ["soappy"] 783 | tls = ["pyopenssl (>=16.0.0)", "service_identity (>=18.1.0)", "idna (>=0.6,<2.3 || >2.3)"] 784 | windows_platform = ["pywin32", "pyopenssl (>=16.0.0)", "service_identity (>=18.1.0)", "idna (>=0.6,<2.3 || >2.3)", "pyasn1", "cryptography (>=2.5)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "soappy", "pyserial (>=3.0)", "h2 (>=3.0,<4.0)", "priority (>=1.1.0,<2.0)", "pywin32"] 785 | 786 | [[package]] 787 | category = "main" 788 | description = "A library for deferring decorator actions" 789 | name = "venusian" 790 | optional = false 791 | python-versions = ">=3.5" 792 | version = "3.0.0" 793 | 794 | [package.extras] 795 | docs = ["sphinx", "repoze.sphinx.autointerface"] 796 | testing = ["pytest", "pytest-cov", "coverage"] 797 | 798 | [[package]] 799 | category = "main" 800 | description = "Measures number of Terminal column cells of wide-character codes" 801 | name = "wcwidth" 802 | optional = false 803 | python-versions = "*" 804 | version = "0.1.7" 805 | 806 | [[package]] 807 | category = "main" 808 | description = "Character encoding aliases for legacy web content" 809 | name = "webencodings" 810 | optional = false 811 | python-versions = "*" 812 | version = "0.5.1" 813 | 814 | [[package]] 815 | category = "main" 816 | description = "Backport of pathlib-compatible object wrapper for zip files" 817 | name = "zipp" 818 | optional = false 819 | python-versions = ">=2.7" 820 | version = "0.6.0" 821 | 822 | [package.dependencies] 823 | more-itertools = "*" 824 | 825 | [package.extras] 826 | docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] 827 | testing = ["pathlib2", "contextlib2", "unittest2"] 828 | 829 | [[package]] 830 | category = "main" 831 | description = "Interfaces for Python" 832 | name = "zope.interface" 833 | optional = false 834 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 835 | version = "4.7.1" 836 | 837 | [package.dependencies] 838 | setuptools = "*" 839 | 840 | [package.extras] 841 | docs = ["sphinx", "repoze.sphinx.autointerface"] 842 | test = ["zope.event"] 843 | testing = ["coverage", "nose", "zope.event"] 844 | 845 | [metadata] 846 | content-hash = "99365fd808cf89fd84c1572784ee1e7d36b4c299fdba5523440b180acfe518a8" 847 | python-versions = "^3.7" 848 | 849 | [metadata.files] 850 | appnope = [ 851 | {file = "appnope-0.1.0-py2.py3-none-any.whl", hash = "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0"}, 852 | {file = "appnope-0.1.0.tar.gz", hash = "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71"}, 853 | ] 854 | atomicwrites = [ 855 | {file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"}, 856 | {file = "atomicwrites-1.3.0.tar.gz", hash = "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"}, 857 | ] 858 | attrs = [ 859 | {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, 860 | {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, 861 | ] 862 | automat = [ 863 | {file = "Automat-0.8.0-py2.py3-none-any.whl", hash = "sha256:81c93c55d2742c55e74e6497a48e048a859fa01d7aa0b91a032be432229837e2"}, 864 | {file = "Automat-0.8.0.tar.gz", hash = "sha256:269a09dfb063a3b078983f4976d83f0a0d3e6e7aaf8e27d8df1095e09dc4a484"}, 865 | ] 866 | backcall = [ 867 | {file = "backcall-0.1.0.tar.gz", hash = "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4"}, 868 | {file = "backcall-0.1.0.zip", hash = "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"}, 869 | ] 870 | bleach = [ 871 | {file = "bleach-3.1.0-py2.py3-none-any.whl", hash = "sha256:213336e49e102af26d9cde77dd2d0397afabc5a6bf2fed985dc35b5d1e285a16"}, 872 | {file = "bleach-3.1.0.tar.gz", hash = "sha256:3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa"}, 873 | ] 874 | click = [ 875 | {file = "Click-7.0-py2.py3-none-any.whl", hash = "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13"}, 876 | {file = "Click-7.0.tar.gz", hash = "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"}, 877 | ] 878 | colorama = [ 879 | {file = "colorama-0.4.1-py2.py3-none-any.whl", hash = "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"}, 880 | {file = "colorama-0.4.1.tar.gz", hash = "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d"}, 881 | ] 882 | constantly = [ 883 | {file = "constantly-15.1.0-py2.py3-none-any.whl", hash = "sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d"}, 884 | {file = "constantly-15.1.0.tar.gz", hash = "sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"}, 885 | ] 886 | coverage = [ 887 | {file = "coverage-4.5.4-cp26-cp26m-macosx_10_12_x86_64.whl", hash = "sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28"}, 888 | {file = "coverage-4.5.4-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c"}, 889 | {file = "coverage-4.5.4-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce"}, 890 | {file = "coverage-4.5.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe"}, 891 | {file = "coverage-4.5.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888"}, 892 | {file = "coverage-4.5.4-cp27-cp27m-win32.whl", hash = "sha256:63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc"}, 893 | {file = "coverage-4.5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24"}, 894 | {file = "coverage-4.5.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437"}, 895 | {file = "coverage-4.5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6"}, 896 | {file = "coverage-4.5.4-cp33-cp33m-macosx_10_10_x86_64.whl", hash = "sha256:6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5"}, 897 | {file = "coverage-4.5.4-cp34-cp34m-macosx_10_12_x86_64.whl", hash = "sha256:331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef"}, 898 | {file = "coverage-4.5.4-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e"}, 899 | {file = "coverage-4.5.4-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca"}, 900 | {file = "coverage-4.5.4-cp34-cp34m-win32.whl", hash = "sha256:fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0"}, 901 | {file = "coverage-4.5.4-cp34-cp34m-win_amd64.whl", hash = "sha256:df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1"}, 902 | {file = "coverage-4.5.4-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7"}, 903 | {file = "coverage-4.5.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47"}, 904 | {file = "coverage-4.5.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025"}, 905 | {file = "coverage-4.5.4-cp35-cp35m-win32.whl", hash = "sha256:bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e"}, 906 | {file = "coverage-4.5.4-cp35-cp35m-win_amd64.whl", hash = "sha256:19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d"}, 907 | {file = "coverage-4.5.4-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9"}, 908 | {file = "coverage-4.5.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755"}, 909 | {file = "coverage-4.5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9"}, 910 | {file = "coverage-4.5.4-cp36-cp36m-win32.whl", hash = "sha256:6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f"}, 911 | {file = "coverage-4.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5"}, 912 | {file = "coverage-4.5.4-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca"}, 913 | {file = "coverage-4.5.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650"}, 914 | {file = "coverage-4.5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2"}, 915 | {file = "coverage-4.5.4-cp37-cp37m-win32.whl", hash = "sha256:93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5"}, 916 | {file = "coverage-4.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351"}, 917 | {file = "coverage-4.5.4-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5"}, 918 | {file = "coverage-4.5.4.tar.gz", hash = "sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c"}, 919 | ] 920 | decorator = [ 921 | {file = "decorator-4.4.1-py2.py3-none-any.whl", hash = "sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d"}, 922 | {file = "decorator-4.4.1.tar.gz", hash = "sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce"}, 923 | ] 924 | defusedxml = [ 925 | {file = "defusedxml-0.6.0-py2.py3-none-any.whl", hash = "sha256:6687150770438374ab581bb7a1b327a847dd9c5749e396102de3fad4e8a3ef93"}, 926 | {file = "defusedxml-0.6.0.tar.gz", hash = "sha256:f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5"}, 927 | ] 928 | entrypoints = [ 929 | {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, 930 | {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, 931 | ] 932 | gather = [ 933 | {file = "gather-17.5.0-py2.py3-none-any.whl", hash = "sha256:135a994f6744b5c43736d395d10568449d4c7d3aad072812de903a72d454919e"}, 934 | {file = "gather-17.5.0.tar.gz", hash = "sha256:645e1295487ed6f3ad87c38ea16806d9635c6c10c2901c753a2c3faefe4bcaba"}, 935 | ] 936 | hyperlink = [ 937 | {file = "hyperlink-19.0.0-py2.py3-none-any.whl", hash = "sha256:ab4a308feb039b04f855a020a6eda3b18ca5a68e6d8f8c899cbe9e653721d04f"}, 938 | {file = "hyperlink-19.0.0.tar.gz", hash = "sha256:4288e34705da077fada1111a24a0aa08bb1e76699c9ce49876af722441845654"}, 939 | ] 940 | idna = [ 941 | {file = "idna-2.8-py2.py3-none-any.whl", hash = "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"}, 942 | {file = "idna-2.8.tar.gz", hash = "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"}, 943 | ] 944 | importlib-metadata = [ 945 | {file = "importlib_metadata-0.23-py2.py3-none-any.whl", hash = "sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af"}, 946 | {file = "importlib_metadata-0.23.tar.gz", hash = "sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26"}, 947 | ] 948 | incremental = [ 949 | {file = "incremental-17.5.0-py2.py3-none-any.whl", hash = "sha256:717e12246dddf231a349175f48d74d93e2897244939173b01974ab6661406b9f"}, 950 | {file = "incremental-17.5.0.tar.gz", hash = "sha256:7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3"}, 951 | ] 952 | ipykernel = [ 953 | {file = "ipykernel-5.1.3-py3-none-any.whl", hash = "sha256:1a7def9c986f1ee018c1138d16951932d4c9d4da01dad45f9d34e9899565a22f"}, 954 | {file = "ipykernel-5.1.3.tar.gz", hash = "sha256:b368ad13edb71fa2db367a01e755a925d7f75ed5e09fbd3f06c85e7a8ef108a8"}, 955 | ] 956 | ipython = [ 957 | {file = "ipython-7.9.0-py3-none-any.whl", hash = "sha256:ed7ebe1cba899c1c3ccad6f7f1c2d2369464cc77dba8eebc65e2043e19cda995"}, 958 | {file = "ipython-7.9.0.tar.gz", hash = "sha256:dfd303b270b7b5232b3d08bd30ec6fd685d8a58cabd54055e3d69d8f029f7280"}, 959 | ] 960 | ipython-genutils = [ 961 | {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, 962 | {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, 963 | ] 964 | jedi = [ 965 | {file = "jedi-0.15.1-py2.py3-none-any.whl", hash = "sha256:786b6c3d80e2f06fd77162a07fed81b8baa22dde5d62896a790a331d6ac21a27"}, 966 | {file = "jedi-0.15.1.tar.gz", hash = "sha256:ba859c74fa3c966a22f2aeebe1b74ee27e2a462f56d3f5f7ca4a59af61bfe42e"}, 967 | ] 968 | jinja2 = [ 969 | {file = "Jinja2-2.10.3-py2.py3-none-any.whl", hash = "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f"}, 970 | {file = "Jinja2-2.10.3.tar.gz", hash = "sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"}, 971 | ] 972 | json5 = [ 973 | {file = "json5-0.8.5-py2.py3-none-any.whl", hash = "sha256:32bd17e0553bf53927f6c29b6089f3a320c12897120a4bcfea76ea81c10b2d9c"}, 974 | {file = "json5-0.8.5.tar.gz", hash = "sha256:124b0f0da1ed2ff3bfe3a3e9b8630abd3c650852465cb52c15ef60b8e82a73b0"}, 975 | ] 976 | jsonschema = [ 977 | {file = "jsonschema-3.1.1-py2.py3-none-any.whl", hash = "sha256:94c0a13b4a0616458b42529091624e66700a17f847453e52279e35509a5b7631"}, 978 | {file = "jsonschema-3.1.1.tar.gz", hash = "sha256:2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f"}, 979 | ] 980 | jupyter-client = [ 981 | {file = "jupyter_client-5.3.4-py2.py3-none-any.whl", hash = "sha256:d0c077c9aaa4432ad485e7733e4d91e48f87b4f4bab7d283d42bb24cbbba0a0f"}, 982 | {file = "jupyter_client-5.3.4.tar.gz", hash = "sha256:60e6faec1031d63df57f1cc671ed673dced0ed420f4377ea33db37b1c188b910"}, 983 | ] 984 | jupyter-core = [ 985 | {file = "jupyter_core-4.6.1-py2.py3-none-any.whl", hash = "sha256:464769f7387d7a62a2403d067f1ddc616655b7f77f5d810c0dd62cb54bfd0fb9"}, 986 | {file = "jupyter_core-4.6.1.tar.gz", hash = "sha256:a183e0ec2e8f6adddf62b0a3fc6a2237e3e0056d381e536d3e7c7ecc3067e244"}, 987 | ] 988 | jupyterlab = [ 989 | {file = "jupyterlab-1.2.3-py2.py3-none-any.whl", hash = "sha256:e458312c9afe0386399be1cc808178ef7014ef88c562084856b6830e9602afa1"}, 990 | {file = "jupyterlab-1.2.3.tar.gz", hash = "sha256:2188a9bcaaf0b6a68ff9098a481f37ece8231634b862fd3c9adedc466aac79f2"}, 991 | ] 992 | jupyterlab-server = [ 993 | {file = "jupyterlab_server-1.0.6-py3-none-any.whl", hash = "sha256:d9c3bcf097f7ad8d8fd2f8d0c1e8a1b833671c02808e5f807088975495364447"}, 994 | {file = "jupyterlab_server-1.0.6.tar.gz", hash = "sha256:d0977527bfce6f47c782cb6bf79d2c949ebe3f22ac695fa000b730c671445dad"}, 995 | ] 996 | markupsafe = [ 997 | {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, 998 | {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, 999 | {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, 1000 | {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, 1001 | {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, 1002 | {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, 1003 | {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, 1004 | {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, 1005 | {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, 1006 | {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, 1007 | {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, 1008 | {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, 1009 | {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, 1010 | {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, 1011 | {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, 1012 | {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, 1013 | {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, 1014 | {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, 1015 | {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, 1016 | {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, 1017 | {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, 1018 | {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, 1019 | {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, 1020 | {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, 1021 | {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, 1022 | {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, 1023 | {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, 1024 | {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, 1025 | ] 1026 | mistune = [ 1027 | {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, 1028 | {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, 1029 | ] 1030 | more-itertools = [ 1031 | {file = "more-itertools-7.2.0.tar.gz", hash = "sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832"}, 1032 | {file = "more_itertools-7.2.0-py3-none-any.whl", hash = "sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"}, 1033 | ] 1034 | nbconvert = [ 1035 | {file = "nbconvert-5.6.1-py2.py3-none-any.whl", hash = "sha256:f0d6ec03875f96df45aa13e21fd9b8450c42d7e1830418cccc008c0df725fcee"}, 1036 | {file = "nbconvert-5.6.1.tar.gz", hash = "sha256:21fb48e700b43e82ba0e3142421a659d7739b65568cc832a13976a77be16b523"}, 1037 | ] 1038 | nbformat = [ 1039 | {file = "nbformat-4.4.0-py2.py3-none-any.whl", hash = "sha256:b9a0dbdbd45bb034f4f8893cafd6f652ea08c8c1674ba83f2dc55d3955743b0b"}, 1040 | {file = "nbformat-4.4.0.tar.gz", hash = "sha256:f7494ef0df60766b7cabe0a3651556345a963b74dbc16bc7c18479041170d402"}, 1041 | ] 1042 | ncolony = [ 1043 | {file = "ncolony-18.6.0-py2.py3-none-any.whl", hash = "sha256:e8e88455044de37c52b7200ed15598a278fd6987707a0da96a9147abd2bbee92"}, 1044 | {file = "ncolony-18.6.0.zip", hash = "sha256:a7b259cf422f302d4577ce3f0aa21fdb9a24c78d3847b6c64025c639cbbf51dc"}, 1045 | ] 1046 | notebook = [ 1047 | {file = "notebook-6.0.2-py3-none-any.whl", hash = "sha256:f67d76a68b1074a91693e95dea903ea01fd02be7c9fac5a4b870b8475caed805"}, 1048 | {file = "notebook-6.0.2.tar.gz", hash = "sha256:399a4411e171170173344761e7fd4491a3625659881f76ce47c50231ed714d9b"}, 1049 | ] 1050 | packaging = [ 1051 | {file = "packaging-19.2-py2.py3-none-any.whl", hash = "sha256:d9551545c6d761f3def1677baf08ab2a3ca17c56879e70fecba2fc4dde4ed108"}, 1052 | {file = "packaging-19.2.tar.gz", hash = "sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47"}, 1053 | ] 1054 | pandocfilters = [ 1055 | {file = "pandocfilters-1.4.2.tar.gz", hash = "sha256:b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9"}, 1056 | ] 1057 | parso = [ 1058 | {file = "parso-0.5.1-py2.py3-none-any.whl", hash = "sha256:63854233e1fadb5da97f2744b6b24346d2750b85965e7e399bec1620232797dc"}, 1059 | {file = "parso-0.5.1.tar.gz", hash = "sha256:666b0ee4a7a1220f65d367617f2cd3ffddff3e205f3f16a0284df30e774c2a9c"}, 1060 | ] 1061 | pexpect = [ 1062 | {file = "pexpect-4.7.0-py2.py3-none-any.whl", hash = "sha256:2094eefdfcf37a1fdbfb9aa090862c1a4878e5c7e0e7e7088bdb511c558e5cd1"}, 1063 | {file = "pexpect-4.7.0.tar.gz", hash = "sha256:9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb"}, 1064 | ] 1065 | pickleshare = [ 1066 | {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, 1067 | {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, 1068 | ] 1069 | pluggy = [ 1070 | {file = "pluggy-0.13.0-py2.py3-none-any.whl", hash = "sha256:0db4b7601aae1d35b4a033282da476845aa19185c1e6964b25cf324b5e4ec3e6"}, 1071 | {file = "pluggy-0.13.0.tar.gz", hash = "sha256:fa5fa1622fa6dd5c030e9cad086fa19ef6a0cf6d7a2d12318e10cb49d6d68f34"}, 1072 | ] 1073 | prometheus-client = [ 1074 | {file = "prometheus_client-0.7.1.tar.gz", hash = "sha256:71cd24a2b3eb335cb800c7159f423df1bd4dcd5171b234be15e3f31ec9f622da"}, 1075 | ] 1076 | prompt-toolkit = [ 1077 | {file = "prompt_toolkit-2.0.10-py2-none-any.whl", hash = "sha256:e7f8af9e3d70f514373bf41aa51bc33af12a6db3f71461ea47fea985defb2c31"}, 1078 | {file = "prompt_toolkit-2.0.10-py3-none-any.whl", hash = "sha256:46642344ce457641f28fc9d1c9ca939b63dadf8df128b86f1b9860e59c73a5e4"}, 1079 | {file = "prompt_toolkit-2.0.10.tar.gz", hash = "sha256:f15af68f66e664eaa559d4ac8a928111eebd5feda0c11738b5998045224829db"}, 1080 | ] 1081 | ptyprocess = [ 1082 | {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, 1083 | {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, 1084 | ] 1085 | py = [ 1086 | {file = "py-1.8.0-py2.py3-none-any.whl", hash = "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa"}, 1087 | {file = "py-1.8.0.tar.gz", hash = "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"}, 1088 | ] 1089 | pygments = [ 1090 | {file = "Pygments-2.4.2-py2.py3-none-any.whl", hash = "sha256:71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127"}, 1091 | {file = "Pygments-2.4.2.tar.gz", hash = "sha256:881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"}, 1092 | ] 1093 | pyhamcrest = [ 1094 | {file = "PyHamcrest-1.9.0-py2.6.egg", hash = "sha256:f30e9a310bcc1808de817a92e95169ffd16b60cbc5a016a49c8d0e8ababfae79"}, 1095 | {file = "PyHamcrest-1.9.0-py2.py3-none-any.whl", hash = "sha256:6b672c02fdf7470df9674ab82263841ce8333fb143f32f021f6cb26f0e512420"}, 1096 | {file = "PyHamcrest-1.9.0-py3.2.egg", hash = "sha256:bac0bea7358666ce52e3c6c85139632ed89f115e9af52d44b3c36e0bf8cf16a9"}, 1097 | {file = "PyHamcrest-1.9.0-py3.4.egg", hash = "sha256:7a4bdade0ed98c699d728191a058a60a44d2f9c213c51e2dd1e6fb42f2c6128a"}, 1098 | {file = "PyHamcrest-1.9.0.tar.gz", hash = "sha256:8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd"}, 1099 | ] 1100 | pyparsing = [ 1101 | {file = "pyparsing-2.4.5-py2.py3-none-any.whl", hash = "sha256:20f995ecd72f2a1f4bf6b072b63b22e2eb457836601e76d6e5dfcd75436acc1f"}, 1102 | {file = "pyparsing-2.4.5.tar.gz", hash = "sha256:4ca62001be367f01bd3e92ecbb79070272a9d4964dce6a48a82ff0b8bc7e683a"}, 1103 | ] 1104 | pyrsistent = [ 1105 | {file = "pyrsistent-0.15.5.tar.gz", hash = "sha256:eb6545dbeb1aa69ab1fb4809bfbf5a8705e44d92ef8fc7c2361682a47c46c778"}, 1106 | ] 1107 | pytest = [ 1108 | {file = "pytest-5.2.3-py3-none-any.whl", hash = "sha256:b6cf7ad9064049ee486586b3a0ddd70dc5136c40e1147e7d286efd77ba66c5eb"}, 1109 | {file = "pytest-5.2.3.tar.gz", hash = "sha256:15837d2880cb94821087bc07476892ea740696b20e90288fd6c19e44b435abdb"}, 1110 | ] 1111 | pytest-cov = [ 1112 | {file = "pytest-cov-2.8.1.tar.gz", hash = "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b"}, 1113 | {file = "pytest_cov-2.8.1-py2.py3-none-any.whl", hash = "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626"}, 1114 | ] 1115 | python-dateutil = [ 1116 | {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, 1117 | {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, 1118 | ] 1119 | pywin32 = [ 1120 | {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, 1121 | {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, 1122 | {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, 1123 | {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, 1124 | {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, 1125 | {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, 1126 | {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, 1127 | {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, 1128 | {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, 1129 | {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, 1130 | {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, 1131 | {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, 1132 | ] 1133 | pywinpty = [ 1134 | {file = "pywinpty-0.5.5-cp27-cp27m-win32.whl", hash = "sha256:53d94d574c3d4da2df5b1c3ae728b8d90e4d33502b0388576bbd4ddeb4de0f77"}, 1135 | {file = "pywinpty-0.5.5-cp27-cp27m-win_amd64.whl", hash = "sha256:c3955f162c53dde968f3fc11361658f1d83b683bfe601d4b6f94bb01ea4300bc"}, 1136 | {file = "pywinpty-0.5.5-cp35-cp35m-win32.whl", hash = "sha256:333e0bc5fca8ad9e9a1516ebedb2a65da38dc1f399f8b2ea57d6cccec1ff2cc8"}, 1137 | {file = "pywinpty-0.5.5-cp35-cp35m-win_amd64.whl", hash = "sha256:3ca3123aa6340ab31bbf9bd012b92e72f9ec905e4c9ee152cc997403e1778cd3"}, 1138 | {file = "pywinpty-0.5.5-cp36-cp36m-win32.whl", hash = "sha256:0e01321e53a230233358a6d608a1a8bc86c3882cf82769ba3c62ca387dc9cc51"}, 1139 | {file = "pywinpty-0.5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:f2bcdd9a2ffd8b223752a971b3d377fb7bfed85f140ec9710f1218d760f2ccb7"}, 1140 | {file = "pywinpty-0.5.5-cp37-cp37m-win32.whl", hash = "sha256:44a6dddcf2abf402e22f87e2c9a341f7d0b296afbec3d28184c8de4d7f514ee4"}, 1141 | {file = "pywinpty-0.5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:dcd45912e2fe2e6f72cee997a4da6ed1ad2056165a277ce5ec7f7ac98dcdf667"}, 1142 | {file = "pywinpty-0.5.5.tar.gz", hash = "sha256:cec9894ecb34de3d7b1ca121dd98433035b9f8949b5095e84b103b349231509c"}, 1143 | ] 1144 | pyzmq = [ 1145 | {file = "pyzmq-18.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:0573b9790aa26faff33fba40f25763657271d26f64bffb55a957a3d4165d6098"}, 1146 | {file = "pyzmq-18.1.1-cp27-cp27m-win32.whl", hash = "sha256:972d723a36ab6a60b7806faa5c18aa3c080b7d046c407e816a1d8673989e2485"}, 1147 | {file = "pyzmq-18.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:0fa82b9fc3334478be95a5566f35f23109f763d1669bb762e3871a8fa2a4a037"}, 1148 | {file = "pyzmq-18.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:80c928d5adcfa12346b08d31360988d843b54b94154575cccd628f1fe91446bc"}, 1149 | {file = "pyzmq-18.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:efdde21febb9b5d7a8e0b87ea2549d7e00fda1936459cfb27fb6fca0c36af6c1"}, 1150 | {file = "pyzmq-18.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:aa3872f2ebfc5f9692ef8957fe69abe92d905a029c0608e45ebfcd451ad30ab5"}, 1151 | {file = "pyzmq-18.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:01b588911714a6696283de3904f564c550c9e12e8b4995e173f1011755e01086"}, 1152 | {file = "pyzmq-18.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8ff946b20d13a99dc5c21cb76f4b8b253eeddf3eceab4218df8825b0c65ab23d"}, 1153 | {file = "pyzmq-18.1.1-cp35-cp35m-win32.whl", hash = "sha256:2a294b4f44201bb21acc2c1a17ff87fbe57b82060b10ddb00ac03e57f3d7fcfa"}, 1154 | {file = "pyzmq-18.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:6fca7d11310430e751f9832257866a122edf9d7b635305c5d8c51f74a5174d3d"}, 1155 | {file = "pyzmq-18.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:f4e72646bfe79ff3adbf1314906bbd2d67ef9ccc71a3a98b8b2ccbcca0ab7bec"}, 1156 | {file = "pyzmq-18.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1e59b7b19396f26e360f41411a5d4603356d18871049cd7790f1a7d18f65fb2c"}, 1157 | {file = "pyzmq-18.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:cf08435b14684f7f2ca2df32c9df38a79cdc17c20dc461927789216cb43d8363"}, 1158 | {file = "pyzmq-18.1.1-cp36-cp36m-win32.whl", hash = "sha256:75d73ee7ca4b289a2a2dfe0e6bd8f854979fc13b3fe4ebc19381be3b04e37a4a"}, 1159 | {file = "pyzmq-18.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7369656f89878455a5bcd5d56ca961884f5d096268f71c0750fc33d6732a25e5"}, 1160 | {file = "pyzmq-18.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4ec47f2b50bdb97df58f1697470e5c58c3c5109289a623e30baf293481ff0166"}, 1161 | {file = "pyzmq-18.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:5541dc8cad3a8486d58bbed076cb113b65b5dd6b91eb94fb3e38a3d1d3022f20"}, 1162 | {file = "pyzmq-18.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ed6205ca0de035f252baa0fd26fdd2bc8a8f633f92f89ca866fd423ff26c6f25"}, 1163 | {file = "pyzmq-18.1.1-cp37-cp37m-win32.whl", hash = "sha256:8b8498ceee33a7023deb2f3db907ca41d6940321e282297327a9be41e3983792"}, 1164 | {file = "pyzmq-18.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e37f22eb4bfbf69cd462c7000616e03b0cdc1b65f2d99334acad36ea0e4ddf6b"}, 1165 | {file = "pyzmq-18.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:355b38d7dd6f884b8ee9771f59036bcd178d98539680c4f87e7ceb2c6fd057b6"}, 1166 | {file = "pyzmq-18.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4b73d20aec63933bbda7957e30add233289d86d92a0bb9feb3f4746376f33527"}, 1167 | {file = "pyzmq-18.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d30db4566177a6205ed1badb8dbbac3c043e91b12a2db5ef9171b318c5641b75"}, 1168 | {file = "pyzmq-18.1.1-cp38-cp38-win32.whl", hash = "sha256:83ce18b133dc7e6789f64cb994e7376c5aa6b4aeced993048bf1d7f9a0fe6d3a"}, 1169 | {file = "pyzmq-18.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:d5ac84f38575a601ab20c1878818ffe0d09eb51d6cb8511b636da46d0fd8949a"}, 1170 | {file = "pyzmq-18.1.1-pp271-pypy_41-macosx_10_15_x86_64.whl", hash = "sha256:e6549dd80de7b23b637f586217a4280facd14ac01e9410a037a13854a6977299"}, 1171 | {file = "pyzmq-18.1.1-pp371-pypy3_71-macosx_10_15_x86_64.whl", hash = "sha256:a6c9c42bbdba3f9c73aedbb7671815af1943ae8073e532c2b66efb72f39f4165"}, 1172 | {file = "pyzmq-18.1.1.tar.gz", hash = "sha256:8c69a6cbfa94da29a34f6b16193e7c15f5d3220cb772d6d17425ff3faa063a6d"}, 1173 | ] 1174 | send2trash = [ 1175 | {file = "Send2Trash-1.5.0-py3-none-any.whl", hash = "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"}, 1176 | {file = "Send2Trash-1.5.0.tar.gz", hash = "sha256:60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2"}, 1177 | ] 1178 | six = [ 1179 | {file = "six-1.13.0-py2.py3-none-any.whl", hash = "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd"}, 1180 | {file = "six-1.13.0.tar.gz", hash = "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"}, 1181 | ] 1182 | terminado = [ 1183 | {file = "terminado-0.8.3-py2.py3-none-any.whl", hash = "sha256:a43dcb3e353bc680dd0783b1d9c3fc28d529f190bc54ba9a229f72fe6e7a54d7"}, 1184 | {file = "terminado-0.8.3.tar.gz", hash = "sha256:4804a774f802306a7d9af7322193c5390f1da0abb429e082a10ef1d46e6fb2c2"}, 1185 | ] 1186 | testpath = [ 1187 | {file = "testpath-0.4.4-py2.py3-none-any.whl", hash = "sha256:bfcf9411ef4bf3db7579063e0546938b1edda3d69f4e1fb8756991f5951f85d4"}, 1188 | {file = "testpath-0.4.4.tar.gz", hash = "sha256:60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e"}, 1189 | ] 1190 | tornado = [ 1191 | {file = "tornado-6.0.3-cp35-cp35m-win32.whl", hash = "sha256:c9399267c926a4e7c418baa5cbe91c7d1cf362d505a1ef898fde44a07c9dd8a5"}, 1192 | {file = "tornado-6.0.3-cp35-cp35m-win_amd64.whl", hash = "sha256:398e0d35e086ba38a0427c3b37f4337327231942e731edaa6e9fd1865bbd6f60"}, 1193 | {file = "tornado-6.0.3-cp36-cp36m-win32.whl", hash = "sha256:4e73ef678b1a859f0cb29e1d895526a20ea64b5ffd510a2307b5998c7df24281"}, 1194 | {file = "tornado-6.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:349884248c36801afa19e342a77cc4458caca694b0eda633f5878e458a44cb2c"}, 1195 | {file = "tornado-6.0.3-cp37-cp37m-win32.whl", hash = "sha256:559bce3d31484b665259f50cd94c5c28b961b09315ccd838f284687245f416e5"}, 1196 | {file = "tornado-6.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:abbe53a39734ef4aba061fca54e30c6b4639d3e1f59653f0da37a0003de148c7"}, 1197 | {file = "tornado-6.0.3.tar.gz", hash = "sha256:c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9"}, 1198 | ] 1199 | traitlets = [ 1200 | {file = "traitlets-4.3.3-py2.py3-none-any.whl", hash = "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44"}, 1201 | {file = "traitlets-4.3.3.tar.gz", hash = "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7"}, 1202 | ] 1203 | twisted = [ 1204 | {file = "Twisted-19.10.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:257dbc78e72bc69c2970035fc74df54b04573d5ddd380251a8a23f74d619db03"}, 1205 | {file = "Twisted-19.10.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a1de7598ce977943b3edbcc0a7d2112f134cc1b98b2fd7e348ee9e0bef092e50"}, 1206 | {file = "Twisted-19.10.0-cp27-cp27m-win32.whl", hash = "sha256:ef1396d1680d6a1ae6dff293d778755c8e10d471f286aff678877b2cee235d42"}, 1207 | {file = "Twisted-19.10.0-cp27-cp27m-win_amd64.whl", hash = "sha256:8b2f7f4dded5ad02931bed38042e55329d1e4919b63078f5a29f05502a163f1d"}, 1208 | {file = "Twisted-19.10.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:6338e5b987e95c94360acb14e78b41097be9b45d44d15a68060db9c3bf89e102"}, 1209 | {file = "Twisted-19.10.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:776c65270b57ac074d5b7a471142f434b0ac5a8b39d9c974769c855c32abfd91"}, 1210 | {file = "Twisted-19.10.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:f7cc56a45c983e4e48601fbeec879b62c740cb848c75164f69a48ac0c6e8a21c"}, 1211 | {file = "Twisted-19.10.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:3f651c52ad78cc5a643f61e3b786a6b5c9b4ee68eced975c04fdf6b02026f470"}, 1212 | {file = "Twisted-19.10.0-cp35-cp35m-win32.whl", hash = "sha256:58b581ae4eee5a831aac9d03edc331d662fa028f601015bb3df47f8704bfe876"}, 1213 | {file = "Twisted-19.10.0-cp35-cp35m-win_amd64.whl", hash = "sha256:1f0919a0363b4fbed5def5315383db36fd581464bca80290764f8c4465e91c04"}, 1214 | {file = "Twisted-19.10.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0f39698c2aac318032ed4fe95e28ee2bd7d72327c2f6927139811ad403770885"}, 1215 | {file = "Twisted-19.10.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:f28355e61ce0b5c1ce47784522022322cc5059c8ed80638e0caae8c7301e1705"}, 1216 | {file = "Twisted-19.10.0-cp36-cp36m-win32.whl", hash = "sha256:d145c418a46f8a7021030a3246b9e5111f64531278e5252f2073f23c1661c8be"}, 1217 | {file = "Twisted-19.10.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d9037ff5e07909b1d31f81db71a3bbc8227ba1ed20c87332bdb2eb48e55f326e"}, 1218 | {file = "Twisted-19.10.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:97f8a76632bf051a27179337fe937df315920a08e9bd146126e0126629db3721"}, 1219 | {file = "Twisted-19.10.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:611ef7696d406605962d9a7b040d357f3e91df20cf75c0b06e350947f541538b"}, 1220 | {file = "Twisted-19.10.0-cp37-cp37m-win32.whl", hash = "sha256:d53e1f883bc429b14fd2999d355352974f9d7b4ae7554154bbfe3f90aecede5f"}, 1221 | {file = "Twisted-19.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f1fe9139fdcf7721d308e36c51cf975474678a8241a9799af02a7bb1c531b722"}, 1222 | {file = "Twisted-19.10.0.tar.bz2", hash = "sha256:7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d"}, 1223 | ] 1224 | venusian = [ 1225 | {file = "venusian-3.0.0-py3-none-any.whl", hash = "sha256:06e7385786ad3a15c70740b2af8d30dfb063a946a851dcb4159f9e2a2302578f"}, 1226 | {file = "venusian-3.0.0.tar.gz", hash = "sha256:f6842b7242b1039c0c28f6feef29016e7e7dd3caaeb476a193acf737db31ee38"}, 1227 | ] 1228 | wcwidth = [ 1229 | {file = "wcwidth-0.1.7-py2.py3-none-any.whl", hash = "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"}, 1230 | {file = "wcwidth-0.1.7.tar.gz", hash = "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e"}, 1231 | ] 1232 | webencodings = [ 1233 | {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, 1234 | {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, 1235 | ] 1236 | zipp = [ 1237 | {file = "zipp-0.6.0-py2.py3-none-any.whl", hash = "sha256:f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"}, 1238 | {file = "zipp-0.6.0.tar.gz", hash = "sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e"}, 1239 | ] 1240 | "zope.interface" = [ 1241 | {file = "zope.interface-4.7.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:14157421f4121a57625002cc4f48ac7521ea238d697c4a4459a884b62132b977"}, 1242 | {file = "zope.interface-4.7.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:35dbe4e8c73003dff40dfaeb15902910a4360699375e7b47d3c909a83ff27cd0"}, 1243 | {file = "zope.interface-4.7.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:18dc895945694f397a0be86be760ff664b790f95d8e7752d5bab80284ff9105d"}, 1244 | {file = "zope.interface-4.7.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:52303a20902ca0888dfb83230ca3ee6fbe63c0ad1dd60aa0bba7958ccff454d8"}, 1245 | {file = "zope.interface-4.7.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:73b5921c5c6ce3358c836461b5470bf675601c96d5e5d8f2a446951470614f67"}, 1246 | {file = "zope.interface-4.7.1-cp27-cp27m-win32.whl", hash = "sha256:c94b77a13d4f47883e4f97f9fa00f5feadd38af3e6b3c7be45cfdb0a14c7149b"}, 1247 | {file = "zope.interface-4.7.1-cp27-cp27m-win_amd64.whl", hash = "sha256:c56db7d10b25ce8918b6aec6b08ac401842b47e6c136773bfb3b590753f7fb67"}, 1248 | {file = "zope.interface-4.7.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b68814a322835d8ad671b7acc23a3b2acecba527bb14f4b53fc925f8a27e44d8"}, 1249 | {file = "zope.interface-4.7.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:6e0a897d4e09859cc80c6a16a29697406ead752292ace17f1805126a4f63c838"}, 1250 | {file = "zope.interface-4.7.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f6ca36dc1e9eeb46d779869c60001b3065fb670b5775c51421c099ea2a77c3c9"}, 1251 | {file = "zope.interface-4.7.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:455cc8c01de3bac6f9c223967cea41f4449f58b4c2e724ec8177382ddd183ab4"}, 1252 | {file = "zope.interface-4.7.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:8a27b4d3ea9c6d086ce8e7cdb3e8d319b6752e2a03238a388ccc83ccbe165f50"}, 1253 | {file = "zope.interface-4.7.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2e8fdd625e9aba31228e7ddbc36bad5c38dc3ee99a86aa420f89a290bd987ce9"}, 1254 | {file = "zope.interface-4.7.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:23cfeea25d1e42ff3bf4f9a0c31e9d5950aa9e7c4b12f0c4bd086f378f7b7a71"}, 1255 | {file = "zope.interface-4.7.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:1962c9f838bd6ae4075d0014f72697510daefc7e1c7e48b2607df0b6e157989c"}, 1256 | {file = "zope.interface-4.7.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:24f84ce24eb6b5fcdcb38ad9761524f1ae96f7126abb5e597f8a3973d9921409"}, 1257 | {file = "zope.interface-4.7.1-cp35-cp35m-win32.whl", hash = "sha256:8093cd45cdb5f6c8591cfd1af03d32b32965b0f79b94684cd0c9afdf841982bb"}, 1258 | {file = "zope.interface-4.7.1-cp35-cp35m-win_amd64.whl", hash = "sha256:3f7866365df5a36a7b8de8056cd1c605648f56f9a226d918ed84c85d25e8d55f"}, 1259 | {file = "zope.interface-4.7.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24b6fce1fb71abf9f4093e3259084efcc0ef479f89356757780685bd2b06ef37"}, 1260 | {file = "zope.interface-4.7.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:fb62f2cbe790a50d95593fb40e8cca261c31a2f5637455ea39440d6457c2ba25"}, 1261 | {file = "zope.interface-4.7.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:21bf781076dd616bd07cf0223f79d61ab4f45176076f90bc2890e18c48195da4"}, 1262 | {file = "zope.interface-4.7.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:e6487d01c8b7ed86af30ea141fcc4f93f8a7dde26f94177c1ad637c353bd5c07"}, 1263 | {file = "zope.interface-4.7.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:048b16ac882a05bc7ef534e8b9f15c9d7a6c190e24e8938a19b7617af4ed854a"}, 1264 | {file = "zope.interface-4.7.1-cp36-cp36m-win32.whl", hash = "sha256:6e1816e7c10966330d77af45f77501f9a68818c065dec0ad11d22b50a0e212e7"}, 1265 | {file = "zope.interface-4.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:35d24be9d04d50da3a6f4d61de028c1dd087045385a0ff374d93ef85af61b584"}, 1266 | {file = "zope.interface-4.7.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:e86923fa728dfba39c5bb6046a450bd4eec8ad949ac404eca728cfce320d1732"}, 1267 | {file = "zope.interface-4.7.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:bcb50a032c3b6ec7fb281b3a83d2b31ab5246c5b119588725b1350d3a1d9f6a3"}, 1268 | {file = "zope.interface-4.7.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2f3bc2f49b67b1bea82b942d25bc958d4f4ea6709b411cb2b6b9718adf7914ce"}, 1269 | {file = "zope.interface-4.7.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:864b4a94b60db301899cf373579fd9ef92edddbf0fb2cd5ae99f53ef423ccc56"}, 1270 | {file = "zope.interface-4.7.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:25e0ef4a824017809d6d8b0ce4ab3288594ba283e4d4f94d8cfb81d73ed65114"}, 1271 | {file = "zope.interface-4.7.1-cp37-cp37m-win32.whl", hash = "sha256:065d6a1ac89d35445168813bed45048ed4e67a4cdfc5a68fdb626a770378869f"}, 1272 | {file = "zope.interface-4.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1a67408cacd198c7e6274a19920bb4568d56459e659e23c4915528686ac1763a"}, 1273 | {file = "zope.interface-4.7.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:91b847969d4784abd855165a2d163f72ac1e58e6dce09a5e46c20e58f19cc96d"}, 1274 | {file = "zope.interface-4.7.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:21c0a5d98650aebb84efa16ce2c8df1a46bdc4fe8a9e33237d0ca0b23f416ead"}, 1275 | {file = "zope.interface-4.7.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:3dfce831b824ab5cf446ed0c350b793ac6fa5fe33b984305cb4c966a86a8fb79"}, 1276 | {file = "zope.interface-4.7.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:05816cf8e7407cf62f2ec95c0a5d69ec4fa5741d9ccd10db9f21691916a9a098"}, 1277 | {file = "zope.interface-4.7.1-cp38-cp38-win32.whl", hash = "sha256:db381f6fdaef483ad435f778086ccc4890120aff8df2ba5cfeeac24d280b3145"}, 1278 | {file = "zope.interface-4.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:b47b1028be4758c3167e474884ccc079b94835f058984b15c145966c4df64d27"}, 1279 | {file = "zope.interface-4.7.1.tar.gz", hash = "sha256:4bb937e998be9d5e345f486693e477ba79e4344674484001a0b646be1d530487"}, 1280 | ] 1281 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "moons-of-jupyter" 3 | packages = [{include = "moj"}] 4 | version = "1.0.0" 5 | description = "Run a single Jupyter Lab instance, connected to many Python environments" 6 | authors = ["Jacob Kaplan-Moss "] 7 | license = "wtfpl" 8 | readme = "README.md" 9 | repository = "https://github.com/jacobian/moons-of-jupyter/" 10 | 11 | [tool.poetry.scripts] 12 | moj = "moj.cli:cli" 13 | 14 | [tool.poetry.dependencies] 15 | python = "^3.7" 16 | jupyterlab = "^1.2.3" 17 | ncolony = "^18.6.0" 18 | click = "^7.0" 19 | 20 | [tool.poetry.dev-dependencies] 21 | pytest = "^5.2.3" 22 | pytest-cov = "^2.8.1" 23 | 24 | [build-system] 25 | requires = ["poetry>=0.12"] 26 | build-backend = "poetry.masonry.api" 27 | --------------------------------------------------------------------------------