From f967b613af52689a76b6049156df5b8784a244b9 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Thu, 27 Dec 2018 22:39:53 +0000 Subject: [PATCH 01/12] Try and report coverage once --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 546d7ae7..aad7e887 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,13 +17,14 @@ install: script: - poetry run pytest --cov=stylo -q -after_success: - - if [ "$TRAVIS_PYTHON_VERSION" == "3.6" ]; then pip install coveralls; coveralls; fi - jobs: include: - python: 3.5 - python: 3.6 + after_success: + - pip install coveralls + - coveralls + - python: 3.7 dist: xenial From 913430b6c70e4a1c8dedd4d82f23815bf798e02b Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Mon, 31 Dec 2018 18:01:39 +0000 Subject: [PATCH 02/12] Import commonly used items into top level namespace Closes #76 --- stylo/__init__.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/stylo/__init__.py b/stylo/__init__.py index 3a8d6d5c..a473a0a3 100644 --- a/stylo/__init__.py +++ b/stylo/__init__.py @@ -1 +1,21 @@ +from .color import FillColor # noqa: F401 +from .domain.transform import ( # noqa: F401 + horizontal_shear, + rotate, + translate, + vertical_shear, +) +from .image import LayeredImage, SimpleImage # noqa: F401 +from .math import anded, lerp # noqa: F401 +from .shape import ( # noqa: F401 + Circle, + Ellipse, + ImplicitXY, + Rectangle, + Shape, + Square, + Triangle, +) +from .time import Timeline # noqa: F401 + from ._version import __version__ # noqa: F401 From cc7d18557c7ec8aa92bdadff2b25cbec4436e2d7 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Mon, 31 Dec 2018 18:04:03 +0000 Subject: [PATCH 03/12] Prototype of a helper function. Instead of users having to deal with numpy and details like the use of `np.logical_and` it would be good to use something like `sty.anded(a, b, c)` and have stylo handle the details of combining the conditions. While the protoyped function works, I'm pretty sure the implementation will change in response to other work. --- stylo/math/__init__.py | 1 + stylo/math/logic.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 stylo/math/logic.py diff --git a/stylo/math/__init__.py b/stylo/math/__init__.py index 61b5f31a..9cd515c9 100644 --- a/stylo/math/__init__.py +++ b/stylo/math/__init__.py @@ -1 +1,2 @@ +from .logic import anded # noqa: F401 from .interpolation import lerp # noqa: F401 diff --git a/stylo/math/logic.py b/stylo/math/logic.py new file mode 100644 index 00000000..d0242126 --- /dev/null +++ b/stylo/math/logic.py @@ -0,0 +1,26 @@ +import numpy as np + + +class LogicalAnd: + """Represents a logical AND between N values. + + Yes, there is currently no reason to use a class but where I want to + take this in the near future will require a class. + """ + + def __init__(self, values): + self.values = values + + def __call__(self): + + result = True + + for v in self.values: + result = np.logical_and(result, v) + + return result + + +def anded(*args): + logical_and = LogicalAnd(args) + return logical_and() From 47395ca4e8a204bf978873532e5e3adce5933185 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 16:38:44 +0000 Subject: [PATCH 04/12] Update changelog --- CHANGES.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 1c2b7af1..13e3b3bb 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,21 @@ +v0.9.2 - 2019-01-06 +------------------- + +Changed +^^^^^^^ + +- Most commonly used objects have been imported into the top level namespace. + This means that it is now possible to write code like the following. + + .. code-block:: python + + import stylo as st + + black = st.FillColor() + circle = st.Circle(fill=True) + + image = st.SimpleImage(circle, black) + v0.9.1 - 2018-12-27 ------------------- From 179efb3fd251a09143e002ce66fbe9bfa169044c Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 17:14:04 +0000 Subject: [PATCH 05/12] Extras! There are now 2 extras defined - `testing`: This will install hypothesis and pytest as required for the `stylo.testing` package - `jupyter`: This will install jupyter and matplotlib as required for previewing images and using them interactively Now I just need to fix the import issues! :D --- pyproject.toml | 26 +++++++++++++++++++------- stylo/_version.py | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 888db9e2..d7ebba9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "stylo" -version = "0.9.1" +version = "0.9.2" description = "Drawing images with a blend of Python and Mathematics" readme = "README.md" @@ -23,16 +23,25 @@ include = ["CHANGES.rst"] python = "^3.5" numpy = "*" -matplotlib = "*" -hypothesis = "*" Pillow = "*" -pytest = "*" +click = "*" + +# TODO: Click has a progress bar, use that instead. tqdm = "*" +hypothesis = { version = "^3.0", optional = true} +pytest = {version = "^4.0", optional = true} +matplotlib = {version = "^3.0", optional = true} +jupyter = {version = "^1.0", optional = true} + +[tool.poetry.extras] +testing = ["pytest", "hypothesis"] +jupyter = ["jupyter", "matplotlib"] + [tool.poetry.dev-dependencies] -pytest = "*" -pytest-cov = "*" -hypothesis = "*" +pytest = "^4.0" +pytest-cov = "^2.6" +hypothesis = "3.0" sphinx = "^1.8" sphinx-stylo = "^0.1.1" topos-theme = "^0.0.11" @@ -40,3 +49,6 @@ topos-theme = "^0.0.11" [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" + + +# vim: ft=dosini diff --git a/stylo/_version.py b/stylo/_version.py index d69d16e9..a2fecb45 100644 --- a/stylo/_version.py +++ b/stylo/_version.py @@ -1 +1 @@ -__version__ = "0.9.1" +__version__ = "0.9.2" From 1748976c3bdf13352701373216aae0028da98941 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 19:31:34 +0000 Subject: [PATCH 06/12] Matplotlib detection --- stylo/error.py | 10 ++++++++++ stylo/image/image.py | 25 +++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 stylo/error.py diff --git a/stylo/error.py b/stylo/error.py new file mode 100644 index 00000000..c423af64 --- /dev/null +++ b/stylo/error.py @@ -0,0 +1,10 @@ +class StyloError(Exception): + """An exception to group all stylo related errors under.""" + + pass + + +class MissingDependencyError(StyloError): + """An exception to represent a missing dependency.""" + + pass diff --git a/stylo/image/image.py b/stylo/image/image.py index c1259888..efa7b0de 100644 --- a/stylo/image/image.py +++ b/stylo/image/image.py @@ -1,9 +1,17 @@ import base64 import io import PIL as P -import matplotlib.pyplot as plt from abc import ABC, abstractmethod +from stylo.error import MissingDependencyError + +try: + import matplotlib.pyplot as plt + + MATPLOTLIB = True + +except ImportError: + MATPLOTLIB = False class Drawable: @@ -18,7 +26,13 @@ def __iter__(self): class Image(ABC): def __call__( - self, width, height, filename=None, plot_size=None, encode=None, preview=True + self, + width, + height, + filename=None, + plot_size=None, + encode=None, + preview=MATPLOTLIB, ): self.data = self._render(width, height) @@ -43,6 +57,13 @@ def preview(self, plot_size): :returns: A matplotlib AxesImage object. """ + if not MATPLOTLIB: + message = ( + "Unable to generate image preview. Run `pip install stylo[jupyter]`" + " to install the required dependencies." + ) + raise MissingDependencyError(message) + if plot_size is None: plot_size = 12 From 0d14b23621f76b1b4967191e4abd618927e43f81 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 20:39:52 +0000 Subject: [PATCH 07/12] Refinements to the `testing` package - Similar to stylo itself, most items have been imported into the `stylo.testing` package. - Catching imports and printing a helpful message for people who install the package without the [testing] extra --- stylo/design/_param_factory.py | 18 +++++++++++++++++- stylo/testing/__init__.py | 19 +++++++++++++++++++ stylo/testing/_domain_factory.py | 13 +++++++++++-- stylo/testing/_param_factory.py | 12 ++++++++++-- stylo/testing/color.py | 12 ++++++++++-- stylo/testing/image.py | 11 +++++++++-- stylo/testing/shape.py | 13 +++++++++++-- stylo/testing/strategies.py | 15 ++++++++++++--- 8 files changed, 99 insertions(+), 14 deletions(-) diff --git a/stylo/design/_param_factory.py b/stylo/design/_param_factory.py index 2d2aebc2..fbd1d373 100644 --- a/stylo/design/_param_factory.py +++ b/stylo/design/_param_factory.py @@ -16,7 +16,16 @@ """ from abc import ABC, abstractmethod import numpy as np -import matplotlib.pyplot as plt + +from stylo.error import MissingDependencyError + +try: + import matplotlib.pyplot as plt + + MATPLOTLIB = True + +except ImportError: + MATPLOTLIB = False def pgroup_keys(params): @@ -221,6 +230,13 @@ def tdpgroup_plot(): def plot(self, start=0, stop=1, N=128, plot_size=8): + if not MATPLOTLIB: + message = ( + "Unable to plot parameter group. Run `pip install stylo[jupyter]`" + " to install the required dependencies." + ) + raise MissingDependencyError(message) + cls = self.__class__ name = cls.__name__ base_name = cls.__base__.__name__ diff --git a/stylo/testing/__init__.py b/stylo/testing/__init__.py index e69de29b..a7783990 100644 --- a/stylo/testing/__init__.py +++ b/stylo/testing/__init__.py @@ -0,0 +1,19 @@ +from .strategies import ( # noqa: F401 + real, + angle, + dimension, + small_dimension, + image_size, + domain_values, + shape_mask, +) +from .color import BaseColorMapTest # noqa: F401 +from .design import ( # noqa: F401 + define_parameter_group_test, + define_time_dependent_parameter_group_test, + BasePositionTest, + BaseTrajectoryTest, +) +from .domain import define_domain_test, BaseRealDomainTest # noqa: F401 +from .image import BaseImageTest # noqa: F401 +from .shape import BaseShapeTest # noqa: F401 diff --git a/stylo/testing/_domain_factory.py b/stylo/testing/_domain_factory.py index e3d3f282..e0e14e3a 100644 --- a/stylo/testing/_domain_factory.py +++ b/stylo/testing/_domain_factory.py @@ -4,9 +4,18 @@ """ import pytest import numpy as np -from hypothesis import given -from stylo.testing.strategies import dimension +from stylo.error import MissingDependencyError + +try: + from hypothesis import given + from stylo.testing import dimension + +except ImportError as err: + raise MissingDependencyError( + "The testing package requires additional dependencies." + " Run `pip install stylo[testing]` to install them." + ) from err DOMAIN_TEST_DOCSTRING = """ diff --git a/stylo/testing/_param_factory.py b/stylo/testing/_param_factory.py index e62efbe5..2ca8e66f 100644 --- a/stylo/testing/_param_factory.py +++ b/stylo/testing/_param_factory.py @@ -3,8 +3,16 @@ """ import pytest import numpy as np -from hypothesis import given -from stylo.testing.strategies import real + +try: + from hypothesis import given + from stylo.testing.strategies import real + +except ImportError as err: + raise MissingDependencyError( + "The testing package requires additional dependencies." + " Run `pip install stylo[testing]` to install them." + ) from err PARAM_TEST_DOCSTRING = """ diff --git a/stylo/testing/color.py b/stylo/testing/color.py index 2907d5e0..b9b801ff 100644 --- a/stylo/testing/color.py +++ b/stylo/testing/color.py @@ -1,7 +1,15 @@ import numpy as np -from hypothesis import given +from stylo.error import MissingDependencyError -from stylo.testing.strategies import shape_mask +try: + from hypothesis import given + from stylo.testing import shape_mask + +except ImportError as err: + raise MissingDependencyError( + "The testing package requires additional dependencies." + " Run `pip install stylo[testing]` to install them." + ) from err class BaseColorMapTest: diff --git a/stylo/testing/image.py b/stylo/testing/image.py index a678b727..3b6aeaad 100644 --- a/stylo/testing/image.py +++ b/stylo/testing/image.py @@ -1,7 +1,14 @@ import base64 -from hypothesis import given -from stylo.testing.strategies import dimension +try: + from hypothesis import given + from stylo.testing.strategies import dimension + +except ImportError as err: + raise MissingDependencyError( + "The testing package requires additional dependencies." + " Run `pip install stylo[testing]` to install them." + ) from err class BaseImageTest: diff --git a/stylo/testing/shape.py b/stylo/testing/shape.py index eeaba439..dfab20f1 100644 --- a/stylo/testing/shape.py +++ b/stylo/testing/shape.py @@ -1,11 +1,20 @@ import numpy as np -from hypothesis import given +from stylo.error import MissingDependencyError from stylo.domain import UnitSquare, RealDomain from stylo.shape.shape import InvertedShape, ANDedShape, ORedShape, XORedShape -from stylo.testing.strategies import dimension from stylo.utils import get_parameters +try: + from hypothesis import given + from stylo.testing import dimension + +except ImportError as err: + raise MissingDependencyError( + "The testing package requires additional dependencies." + " Run `pip install stylo[testing]` to install them." + ) from err + class BaseShapeTest: """A base class for testing :code:`Shape` implementations. diff --git a/stylo/testing/strategies.py b/stylo/testing/strategies.py index 08d75229..44261bf0 100644 --- a/stylo/testing/strategies.py +++ b/stylo/testing/strategies.py @@ -6,11 +6,20 @@ sizes etc. - :code:`real`: Represents a real number in the range +/-1 million """ +import numpy as np from math import pi -import numpy as np -from hypothesis.strategies import integers, floats, tuples -from hypothesis.extra.numpy import arrays +from stylo.error import MissingDependencyError + +try: + from hypothesis.strategies import integers, floats, tuples + from hypothesis.extra.numpy import arrays + +except ImportError as err: + raise MissingDependencyError( + "The testing package requires additional dependencies." + " Run `pip install stylo[testing]` to install them." + ) from err # Basic types real = floats(min_value=-1e6, max_value=1e6) From b176bdea9ab21960f5328a19024566ec19fc7af2 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 20:45:29 +0000 Subject: [PATCH 08/12] Update changelog --- CHANGES.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 13e3b3bb..16f34a7d 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,18 @@ Changed image = st.SimpleImage(circle, black) +- The way stylo has been packaged has been changed. It now comes with a couple + of "extras". Instead of requiring dependencies for everything, the default + installation now only contains the packages that are absolutely required to + run stylo. + + The other dependencies have been split into a couple of extras + + + :code:`testing`: The dependencies required to import items from the + `stylo.testing` package. + + :code:`jupyer`: Dependencies required to use stylo interactively in a + jupyter notebook. + v0.9.1 - 2018-12-27 ------------------- From b9ada9c8fe1375af407f1465ddc7f93e4abb2ec7 Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 20:52:00 +0000 Subject: [PATCH 09/12] Fix imports --- stylo/testing/_param_factory.py | 2 ++ stylo/testing/image.py | 1 + 2 files changed, 3 insertions(+) diff --git a/stylo/testing/_param_factory.py b/stylo/testing/_param_factory.py index 2ca8e66f..3d6efe8e 100644 --- a/stylo/testing/_param_factory.py +++ b/stylo/testing/_param_factory.py @@ -4,6 +4,8 @@ import pytest import numpy as np +from stylo.error import MissingDependencyError + try: from hypothesis import given from stylo.testing.strategies import real diff --git a/stylo/testing/image.py b/stylo/testing/image.py index 3b6aeaad..52df2ebc 100644 --- a/stylo/testing/image.py +++ b/stylo/testing/image.py @@ -1,4 +1,5 @@ import base64 +from stylo.error import MissingDependencyError try: from hypothesis import given From 8ebdf420d6a09c2273935fda59db2beb8a96d33d Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 21:06:21 +0000 Subject: [PATCH 10/12] Fix deps --- poetry.lock | 530 +++++++++++++++++++++++++++++++++++++++++++++++-- pyproject.toml | 10 +- 2 files changed, 518 insertions(+), 22 deletions(-) diff --git a/poetry.lock b/poetry.lock index 08d2bf92..419feede 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6,6 +6,15 @@ optional = false python-versions = "*" version = "0.7.12" +[[package]] +category = "main" +description = "Disable App Nap on OS X 10.9" +marker = "python_version >= \"3.3\" and sys_platform == \"darwin\" or sys_platform == \"darwin\"" +name = "appnope" +optional = true +python-versions = "*" +version = "0.1.0" + [[package]] category = "main" description = "Atomic file writes." @@ -33,6 +42,26 @@ version = "2.6.0" [package.dependencies] pytz = ">=0a" +[[package]] +category = "main" +description = "Specifications for callback functions passed in to an API" +name = "backcall" +optional = true +python-versions = "*" +version = "0.1.0" + +[[package]] +category = "main" +description = "An easy safelist-based HTML-sanitizing tool." +name = "bleach" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.0.2" + +[package.dependencies] +six = "*" +webencodings = "*" + [[package]] category = "dev" description = "Python package for providing Mozilla's CA Bundle." @@ -49,10 +78,18 @@ optional = false python-versions = "*" version = "3.0.4" +[[package]] +category = "main" +description = "Composable command line interface toolkit" +name = "click" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "7.0" + [[package]] category = "main" description = "Cross-platform colored terminal text." -marker = "sys_platform == \"win32\"" +marker = "python_version >= \"3.3\" and sys_platform == \"win32\" or sys_platform == \"win32\"" name = "colorama" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" @@ -70,13 +107,29 @@ version = "4.5.2" category = "main" description = "Composable style cycles" name = "cycler" -optional = false +optional = true python-versions = "*" version = "0.10.0" [package.dependencies] six = "*" +[[package]] +category = "main" +description = "Better living through Python with decorators" +name = "decorator" +optional = true +python-versions = "*" +version = "4.3.0" + +[[package]] +category = "main" +description = "XML bomb protection for Python stdlib modules" +name = "defusedxml" +optional = true +python-versions = "*" +version = "0.5.0" + [[package]] category = "dev" description = "Docutils -- Python Documentation Utilities" @@ -85,13 +138,21 @@ optional = false python-versions = "*" version = "0.14" +[[package]] +category = "main" +description = "Discover and load entry points from installed packages." +name = "entrypoints" +optional = true +python-versions = ">=2.7" +version = "0.2.3" + [[package]] category = "main" description = "A library for property based testing" name = "hypothesis" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.84.5" +version = "3.86.5" [package.dependencies] attrs = ">=16.0.0" @@ -113,7 +174,83 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "1.1.0" [[package]] -category = "dev" +category = "main" +description = "IPython Kernel for Jupyter" +name = "ipykernel" +optional = true +python-versions = ">=3.4" +version = "5.1.0" + +[package.dependencies] +ipython = ">=5.0.0" +jupyter-client = "*" +tornado = ">=4.2" +traitlets = ">=4.1.0" + +[[package]] +category = "main" +description = "IPython: Productive Interactive Computing" +name = "ipython" +optional = true +python-versions = ">=3.5" +version = "7.2.0" + +[package.dependencies] +appnope = "*" +backcall = "*" +colorama = "*" +decorator = "*" +jedi = ">=0.10" +pexpect = "*" +pickleshare = "*" +prompt-toolkit = ">=2.0.0,<2.1.0" +pygments = "*" +setuptools = ">=18.5" +traitlets = ">=4.2" + +[package.dependencies.win-unicode-console] +python = "<3.6" +version = ">=0.5" + +[[package]] +category = "main" +description = "Vestigial utilities from IPython" +name = "ipython-genutils" +optional = true +python-versions = "*" +version = "0.2.0" + +[[package]] +category = "main" +description = "IPython HTML widgets for Jupyter" +name = "ipywidgets" +optional = true +python-versions = "*" +version = "7.4.2" + +[package.dependencies] +ipykernel = ">=4.5.1" +nbformat = ">=4.2.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=3.4.0,<3.5.0" + +[package.dependencies.ipython] +python = ">=3.3" +version = ">=4.0.0" + +[[package]] +category = "main" +description = "An autocompletion tool for Python that can be used for text editors." +name = "jedi" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.2" + +[package.dependencies] +parso = ">=0.3.0" + +[[package]] +category = "main" description = "A small but fast and easy to use stand-alone template engine written in pure python." name = "jinja2" optional = false @@ -123,11 +260,76 @@ version = "2.10" [package.dependencies] MarkupSafe = ">=0.23" +[[package]] +category = "main" +description = "An implementation of JSON Schema validation for Python" +name = "jsonschema" +optional = true +python-versions = "*" +version = "2.6.0" + +[[package]] +category = "main" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +name = "jupyter" +optional = true +python-versions = "*" +version = "1.0.0" + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +nbconvert = "*" +notebook = "*" +qtconsole = "*" + +[[package]] +category = "main" +description = "Jupyter protocol implementation and client libraries" +name = "jupyter-client" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "5.2.4" + +[package.dependencies] +jupyter-core = "*" +python-dateutil = ">=2.1" +pyzmq = ">=13" +tornado = ">=4.1" +traitlets = "*" + +[[package]] +category = "main" +description = "Jupyter terminal console" +name = "jupyter-console" +optional = true +python-versions = ">=3.5" +version = "6.0.0" + +[package.dependencies] +ipykernel = "*" +ipython = "*" +jupyter-client = "*" +prompt-toolkit = ">=2.0.0,<2.1.0" +pygments = "*" + +[[package]] +category = "main" +description = "Jupyter core package. A base package on which Jupyter projects rely." +name = "jupyter-core" +optional = true +python-versions = "*" +version = "4.4.0" + +[package.dependencies] +traitlets = "*" + [[package]] category = "main" description = "A fast implementation of the Cassowary constraint solver" name = "kiwisolver" -optional = false +optional = true python-versions = "*" version = "1.0.1" @@ -135,7 +337,7 @@ version = "1.0.1" setuptools = "*" [[package]] -category = "dev" +category = "main" description = "Safely add untrusted strings to HTML/XML markup." name = "markupsafe" optional = false @@ -146,7 +348,7 @@ version = "1.1.0" category = "main" description = "Python plotting package" name = "matplotlib" -optional = false +optional = true python-versions = ">=3.5" version = "3.0.2" @@ -157,17 +359,83 @@ numpy = ">=1.10.0" pyparsing = ">=2.0.1,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" python-dateutil = ">=2.1" +[[package]] +category = "main" +description = "The fastest markdown parser in pure Python" +name = "mistune" +optional = true +python-versions = "*" +version = "0.8.4" + [[package]] category = "main" description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" optional = false python-versions = "*" -version = "4.3.0" +version = "5.0.0" [package.dependencies] six = ">=1.0.0,<2.0.0" +[[package]] +category = "main" +description = "Converting Jupyter Notebooks" +name = "nbconvert" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "5.4.0" + +[package.dependencies] +bleach = "*" +defusedxml = "*" +entrypoints = ">=0.2.2" +jinja2 = "*" +jupyter-core = "*" +mistune = ">=0.8.1" +nbformat = ">=4.4" +pandocfilters = ">=1.4.1" +pygments = "*" +testpath = "*" +traitlets = ">=4.2" + +[[package]] +category = "main" +description = "The Jupyter Notebook format" +name = "nbformat" +optional = true +python-versions = "*" +version = "4.4.0" + +[package.dependencies] +ipython-genutils = "*" +jsonschema = ">=2.4,<2.5.0 || >2.5.0" +jupyter-core = "*" +traitlets = ">=4.1" + +[[package]] +category = "main" +description = "A web-based notebook environment for interactive computing" +name = "notebook" +optional = true +python-versions = "*" +version = "5.7.4" + +[package.dependencies] +Send2Trash = "*" +ipykernel = "*" +ipython-genutils = "*" +jinja2 = "*" +jupyter-client = ">=5.2.0" +jupyter-core = ">=4.4.0" +nbconvert = "*" +nbformat = "*" +prometheus-client = "*" +pyzmq = ">=17" +terminado = ">=0.8.1" +tornado = ">=4" +traitlets = ">=4.2.1" + [[package]] category = "main" description = "NumPy: array processing for numbers, strings, records, and objects." @@ -188,6 +456,22 @@ version = "18.0" pyparsing = ">=2.0.2" six = "*" +[[package]] +category = "main" +description = "Utilities for writing pandoc filters in python" +name = "pandocfilters" +optional = true +python-versions = "*" +version = "1.4.2" + +[[package]] +category = "main" +description = "A Python Parser" +name = "parso" +optional = true +python-versions = "*" +version = "0.3.1" + [[package]] category = "main" description = "Object-oriented filesystem paths" @@ -200,13 +484,33 @@ version = "2.3.3" [package.dependencies] six = "*" +[[package]] +category = "main" +description = "Pexpect allows easy control of interactive console applications." +marker = "python_version >= \"3.3\" and sys_platform != \"win32\" or sys_platform != \"win32\"" +name = "pexpect" +optional = true +python-versions = "*" +version = "4.6.0" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +category = "main" +description = "Tiny 'shelve'-like database with concurrency support" +name = "pickleshare" +optional = true +python-versions = "*" +version = "0.7.5" + [[package]] category = "main" description = "Python Imaging Library (Fork)" name = "pillow" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "5.3.0" +version = "5.4.1" [[package]] category = "main" @@ -216,6 +520,35 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "0.8.0" +[[package]] +category = "main" +description = "Python client for the Prometheus monitoring system." +name = "prometheus-client" +optional = true +python-versions = "*" +version = "0.5.0" + +[[package]] +category = "main" +description = "Library for building powerful interactive command lines in Python" +name = "prompt-toolkit" +optional = true +python-versions = "*" +version = "2.0.7" + +[package.dependencies] +six = ">=1.9.0" +wcwidth = "*" + +[[package]] +category = "main" +description = "Run a subprocess in a pseudo terminal" +marker = "sys_platform != \"win32\" or os_name != \"nt\" or python_version >= \"3.3\" and sys_platform != \"win32\"" +name = "ptyprocess" +optional = true +python-versions = "*" +version = "0.6.0" + [[package]] category = "main" description = "library with cross-python path, ini-parsing, io, code, log facilities" @@ -225,7 +558,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "1.7.0" [[package]] -category = "dev" +category = "main" description = "Pygments is a syntax highlighting package written in Python." name = "pygments" optional = false @@ -246,7 +579,7 @@ description = "pytest: simple powerful testing with Python" name = "pytest" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "4.0.2" +version = "4.1.0" [package.dependencies] atomicwrites = ">=1.0" @@ -278,7 +611,7 @@ pytest = ">=2.9" category = "main" description = "Extensions to the standard Python datetime module" name = "python-dateutil" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" version = "2.7.5" @@ -293,6 +626,39 @@ optional = false python-versions = "*" version = "2018.7" +[[package]] +category = "main" +description = "Python bindings for the winpty library" +marker = "os_name == \"nt\"" +name = "pywinpty" +optional = true +python-versions = "*" +version = "0.5.5" + +[[package]] +category = "main" +description = "Python bindings for 0MQ" +name = "pyzmq" +optional = true +python-versions = ">=2.7,!=3.0*,!=3.1*,!=3.2*" +version = "17.1.2" + +[[package]] +category = "main" +description = "Jupyter Qt console" +name = "qtconsole" +optional = true +python-versions = "*" +version = "4.4.3" + +[package.dependencies] +ipykernel = ">=4.1" +ipython-genutils = "*" +jupyter-client = ">=4.1" +jupyter-core = "*" +pygments = "*" +traitlets = "*" + [[package]] category = "dev" description = "Python HTTP for Humans." @@ -307,6 +673,14 @@ chardet = ">=3.0.2,<3.1.0" idna = ">=2.5,<2.9" urllib3 = ">=1.21.1,<1.25" +[[package]] +category = "main" +description = "Send file to trash natively under Mac OS X, Windows and Linux." +name = "send2trash" +optional = true +python-versions = "*" +version = "1.5.0" + [[package]] category = "main" description = "Python 2 and 3 compatibility utilities" @@ -366,6 +740,27 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "1.1.0" +[[package]] +category = "main" +description = "Terminals served to xterm.js using Tornado websockets" +name = "terminado" +optional = true +python-versions = "*" +version = "0.8.1" + +[package.dependencies] +ptyprocess = "*" +pywinpty = ">=0.5" +tornado = ">=4" + +[[package]] +category = "main" +description = "Test utilities for code working with files and commands" +name = "testpath" +optional = true +python-versions = "*" +version = "0.4.2" + [[package]] category = "dev" description = "Topos theme for sphinx" @@ -377,6 +772,14 @@ version = "0.0.11" [package.dependencies] sphinx = "*" +[[package]] +category = "main" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "tornado" +optional = true +python-versions = ">= 2.7, !=3.0.*, !=3.1.*, !=3.2.*, != 3.3.*" +version = "5.1.1" + [[package]] category = "main" description = "Fast, Extensible Progress Meter" @@ -385,6 +788,19 @@ optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" version = "4.28.1" +[[package]] +category = "main" +description = "Traitlets Python config system" +name = "traitlets" +optional = true +python-versions = "*" +version = "4.3.2" + +[package.dependencies] +decorator = "*" +ipython-genutils = "*" +six = "*" + [[package]] category = "dev" description = "HTTP library with thread-safe connection pooling, file post, and more." @@ -393,47 +809,127 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" version = "1.24.1" +[[package]] +category = "main" +description = "Measures number of Terminal column cells of wide-character codes" +name = "wcwidth" +optional = true +python-versions = "*" +version = "0.1.7" + +[[package]] +category = "main" +description = "Character encoding aliases for legacy web content" +name = "webencodings" +optional = true +python-versions = "*" +version = "0.5.1" + +[[package]] +category = "main" +description = "IPython HTML widgets for Jupyter" +name = "widgetsnbextension" +optional = true +python-versions = "*" +version = "3.4.2" + +[package.dependencies] +notebook = ">=4.4.1" + +[[package]] +category = "main" +description = "Enable Unicode input and display when running Python from Windows console." +marker = "sys_platform == \"win32\" and python_version < \"3.6\" or sys_platform == \"win32\" and python_version < \"3.6\" and python_version >= \"3.3\"" +name = "win-unicode-console" +optional = true +python-versions = "*" +version = "0.5" + +[extras] +jupyter = ["jupyter", "matplotlib"] +testing = ["pytest", "hypothesis"] + [metadata] -content-hash = "6cc2921f632eb954380ed4ed142e404dcb21b4d21d74b6d5ce9578a56ae9d29a" +content-hash = "a288778cf8da021508483d5f8c3d3a070300bc9560812620eec05efe3ef3e0e3" python-versions = "^3.5" [metadata.hashes] alabaster = ["446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359", "a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"] +appnope = ["5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", "8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71"] atomicwrites = ["0312ad34fcad8fac3704d441f7b317e50af620823353ec657a53e981f92920c0", "ec9ae8adaae229e4f8446952d204a3e4b5fdd2d099f9be3aaf556120135fb3ee"] attrs = ["10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69", "ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb"] babel = ["6778d85147d5d85345c14a26aada5e478ab04e39b078b0745ee6870c2b5cf669", "8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23"] +backcall = ["38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", "bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"] +bleach = ["48d39675b80a75f6d1c3bdbffec791cf0bbbab665cf01e20da701c77de278718", "73d26f018af5d5adcdabf5c1c974add4361a9c76af215fe32fdec8a6fc5fb9b9"] certifi = ["47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7", "993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"] chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"] +click = ["2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"] colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"] coverage = ["06123b58a1410873e22134ca2d88bd36680479fe354955b3579fb8ff150e4d27", "09e47c529ff77bf042ecfe858fb55c3e3eb97aac2c87f0349ab5a7efd6b3939f", "0a1f9b0eb3aa15c990c328535655847b3420231af299386cfe5efc98f9c250fe", "0cc941b37b8c2ececfed341444a456912e740ecf515d560de58b9a76562d966d", "0d34245f824cc3140150ab7848d08b7e2ba67ada959d77619c986f2062e1f0e8", "10e8af18d1315de936d67775d3a814cc81d0747a1a0312d84e27ae5610e313b0", "1b4276550b86caa60606bd3572b52769860a81a70754a54acc8ba789ce74d607", "1e8a2627c48266c7b813975335cfdea58c706fe36f607c97d9392e61502dc79d", "258b21c5cafb0c3768861a6df3ab0cfb4d8b495eee5ec660e16f928bf7385390", "2b224052bfd801beb7478b03e8a66f3f25ea56ea488922e98903914ac9ac930b", "3ad59c84c502cd134b0088ca9038d100e8fb5081bbd5ccca4863f3804d81f61d", "447c450a093766744ab53bf1e7063ec82866f27bcb4f4c907da25ad293bba7e3", "46101fc20c6f6568561cdd15a54018bb42980954b79aa46da8ae6f008066a30e", "4710dc676bb4b779c4361b54eb308bc84d64a2fa3d78e5f7228921eccce5d815", "510986f9a280cd05189b42eee2b69fecdf5bf9651d4cd315ea21d24a964a3c36", "5535dda5739257effef56e49a1c51c71f1d37a6e5607bb25a5eee507c59580d1", "5a7524042014642b39b1fcae85fb37556c200e64ec90824ae9ecf7b667ccfc14", "5f55028169ef85e1fa8e4b8b1b91c0b3b0fa3297c4fb22990d46ff01d22c2d6c", "6694d5573e7790a0e8d3d177d7a416ca5f5c150742ee703f3c18df76260de794", "6831e1ac20ac52634da606b658b0b2712d26984999c9d93f0c6e59fe62ca741b", "71afc1f5cd72ab97330126b566bbf4e8661aab7449f08895d21a5d08c6b051ff", "7349c27128334f787ae63ab49d90bf6d47c7288c63a0a5dfaa319d4b4541dd2c", "77f0d9fa5e10d03aa4528436e33423bfa3718b86c646615f04616294c935f840", "828ad813c7cdc2e71dcf141912c685bfe4b548c0e6d9540db6418b807c345ddd", "859714036274a75e6e57c7bab0c47a4602d2a8cfaaa33bbdb68c8359b2ed4f5c", "85a06c61598b14b015d4df233d249cd5abfa61084ef5b9f64a48e997fd829a82", "869ef4a19f6e4c6987e18b315721b8b971f7048e6eaea29c066854242b4e98d9", "8cb4febad0f0b26c6f62e1628f2053954ad2c555d67660f28dfb1b0496711952", "977e2d9a646773cc7428cdd9a34b069d6ee254fadfb4d09b3f430e95472f3cf3", "99bd767c49c775b79fdcd2eabff405f1063d9d959039c0bdd720527a7738748a", "a5c58664b23b248b16b96253880b2868fb34358911400a7ba39d7f6399935389", "aaa0f296e503cda4bc07566f592cd7a28779d433f3a23c48082af425d6d5a78f", "ab235d9fe64833f12d1334d29b558aacedfbca2356dfb9691f2d0d38a8a7bfb4", "b3b0c8f660fae65eac74fbf003f3103769b90012ae7a460863010539bb7a80da", "bab8e6d510d2ea0f1d14f12642e3f35cefa47a9b2e4c7cea1852b52bc9c49647", "c45297bbdbc8bb79b02cf41417d63352b70bcb76f1bbb1ee7d47b3e89e42f95d", "d19bca47c8a01b92640c614a9147b081a1974f69168ecd494687c827109e8f42", "d64b4340a0c488a9e79b66ec9f9d77d02b99b772c8b8afd46c1294c1d39ca478", "da969da069a82bbb5300b59161d8d7c8d423bc4ccd3b410a9b4d8932aeefc14b", "ed02c7539705696ecb7dc9d476d861f3904a8d2b7e894bd418994920935d36bb", "ee5b8abc35b549012e03a7b1e86c09491457dba6c94112a2482b18589cc2bdb9"] cycler = ["1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d", "cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"] +decorator = ["2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82", "c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c"] +defusedxml = ["24d7f2f94f7f3cb6061acb215685e5125fbcdc40a857eff9de22518820b0a4f4", "702a91ade2968a82beb0db1e0766a6a273f33d4616a6ce8cde475d8e09853b20"] docutils = ["02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", "51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", "7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"] -hypothesis = ["22ce150601845c55a0c075da37b3725f5746e398ab4213d1d66553fd3782f905", "a04407a8ab27d32608c4b5005953c4b1b018e7b09c7bc2e65805785014ce4bef", "c206a6b785da5beef329cb68051ed7ec44d21be4bce7df312becb77a081ad982"] +entrypoints = ["10ad569bb245e7e2ba425285b9fa3e8178a0dc92fc53b1e1c553805e15a8825b", "d2d587dde06f99545fb13a383d2cd336a8ff1f359c5839ce3a64c917d10c029f"] +hypothesis = ["986cbb676797086a3744459b88522fb5309d5f4a1a313754ae748ad9f2d5ed8e", "cdd75d1ecb57131d7ef5d96becbc893b1579d3db829fdcd15193e8467013f011", "fcbfa3da3f76450502a9c724f2fcf7cbd1de39c06ed1890bc99c389c278b6189"] idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"] imagesize = ["3f349de3eb99145973fefb7dbe38554414e5c30abd0c8e4b970a7c9d09f3a1d8", "f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5"] +ipykernel = ["0aeb7ec277ac42cc2b59ae3d08b10909b2ec161dc6908096210527162b53675d", "0fc0bf97920d454102168ec2008620066878848fcfca06c22b669696212e292f"] +ipython = ["6a9496209b76463f1dec126ab928919aaf1f55b38beb9219af3fe202f6bbdd12", "f69932b1e806b38a7818d9a1e918e5821b685715040b48e59c657b3c7961b742"] +ipython-genutils = ["72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", "eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"] +ipywidgets = ["0f2b5cde9f272cb49d52f3f0889fdd1a7ae1e74f37b48dac35a83152780d2b7b", "a3e224f430163f767047ab9a042fc55adbcab0c24bbe6cf9f306c4f89fdf0ba3"] +jedi = ["571702b5bd167911fe9036e5039ba67f820d6502832285cde8c881ab2b2149fd", "c8481b5e59d34a5c7c42e98f6625e633f6ef59353abea6437472c7ec2093f191"] jinja2 = ["74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", "f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4"] +jsonschema = ["000e68abd33c972a5248544925a0cae7d1125f9bf6c58280d37546b946769a08", "6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02"] +jupyter = ["3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7", "5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78", "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"] +jupyter-client = ["b5f9cb06105c1d2d30719db5ffb3ea67da60919fb68deaefa583deccd8813551", "c44411eb1463ed77548bc2d5ec0d744c9b81c4a542d9637c7a52824e2121b987"] +jupyter-console = ["308ce876354924fb6c540b41d5d6d08acfc946984bf0c97777c1ddcb42e0b2f5", "cc80a97a5c389cbd30252ffb5ce7cefd4b66bde98219edd16bf5cb6f84bb3568"] +jupyter-core = ["927d713ffa616ea11972534411544589976b2493fc7e09ad946e010aa7eb9970", "ba70754aa680300306c699790128f6fbd8c306ee5927976cbe48adacf240c0b7"] kiwisolver = ["0ee4ed8b3ae8f5f712b0aa9ebd2858b5b232f1b9a96b0943dceb34df2a223bc3", "0f7f532f3c94e99545a29f4c3f05637f4d2713e7fd91b4dd8abfc18340b86cd5", "1a078f5dd7e99317098f0e0d490257fd0349d79363e8c923d5bb76428f318421", "1aa0b55a0eb1bd3fa82e704f44fb8f16e26702af1a073cc5030eea399e617b56", "2874060b91e131ceeff00574b7c2140749c9355817a4ed498e82a4ffa308ecbc", "379d97783ba8d2934d52221c833407f20ca287b36d949b4bba6c75274bcf6363", "3b791ddf2aefc56382aadc26ea5b352e86a2921e4e85c31c1f770f527eb06ce4", "4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa", "45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b", "53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20", "574f24b9805cb1c72d02b9f7749aa0cc0b81aa82571be5201aa1453190390ae5", "66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861", "79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138", "83410258eb886f3456714eea4d4304db3a1fc8624623fc3f38a487ab36c0f653", "8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965", "9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996", "95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195", "a424f048bebc4476620e77f3e4d1f282920cef9bc376ba16d0b8fe97eec87cde", "aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85", "acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7", "b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f", "b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b", "c595693de998461bcd49b8d20568c8870b3209b8ea323b2a7b0ea86d85864694", "ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278", "e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc", "ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c", "efabbcd4f406b532206b8801058c8bab9e79645b9880329253ae3322b7b02cd5", "f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"] markupsafe = ["048ef924c1623740e70204aa7143ec592504045ae4429b59c30054cb31e3c432", "130f844e7f5bdd8e9f3f42e7102ef1d49b2e6fdf0d7526df3f87281a532d8c8b", "19f637c2ac5ae9da8bfd98cef74d64b7e1bb8a63038a3505cd182c3fac5eb4d9", "1b8a7a87ad1b92bd887568ce54b23565f3fd7018c4180136e1cf412b405a47af", "1c25694ca680b6919de53a4bb3bdd0602beafc63ff001fea2f2fc16ec3a11834", "1f19ef5d3908110e1e891deefb5586aae1b49a7440db952454b4e281b41620cd", "1fa6058938190ebe8290e5cae6c351e14e7bb44505c4a7624555ce57fbbeba0d", "31cbb1359e8c25f9f48e156e59e2eaad51cd5242c05ed18a8de6dbe85184e4b7", "3e835d8841ae7863f64e40e19477f7eb398674da6a47f09871673742531e6f4b", "4e97332c9ce444b0c2c38dd22ddc61c743eb208d916e4265a2a3b575bdccb1d3", "525396ee324ee2da82919f2ee9c9e73b012f23e7640131dd1b53a90206a0f09c", "52b07fbc32032c21ad4ab060fec137b76eb804c4b9a1c7c7dc562549306afad2", "52ccb45e77a1085ec5461cde794e1aa037df79f473cbc69b974e73940655c8d7", "5c3fbebd7de20ce93103cb3183b47671f2885307df4a17a0ad56a1dd51273d36", "5e5851969aea17660e55f6a3be00037a25b96a9b44d2083651812c99d53b14d1", "5edfa27b2d3eefa2210fb2f5d539fbed81722b49f083b2c6566455eb7422fd7e", "7d263e5770efddf465a9e31b78362d84d015cc894ca2c131901a4445eaa61ee1", "83381342bfc22b3c8c06f2dd93a505413888694302de25add756254beee8449c", "857eebb2c1dc60e4219ec8e98dfa19553dae33608237e107db9c6078b1167856", "98e439297f78fca3a6169fd330fbe88d78b3bb72f967ad9961bcac0d7fdd1550", "bf54103892a83c64db58125b3f2a43df6d2cb2d28889f14c78519394feb41492", "d9ac82be533394d341b41d78aca7ed0e0f4ba5a2231602e2f05aa87f25c51672", "e982fe07ede9fada6ff6705af70514a52beb1b2c3d25d4e873e82114cf3c5401", "edce2ea7f3dfc981c4ddc97add8a61381d9642dc3273737e756517cc03e84dd6", "efdc45ef1afc238db84cb4963aa689c0408912a0239b0721cb172b4016eb31d6", "f137c02498f8b935892d5c0172560d7ab54bc45039de8805075e19079c639a9c", "f82e347a72f955b7017a39708a3667f106e6ad4d10b25f237396a7115d8ed5fd", "fb7c206e01ad85ce57feeaaa0bf784b97fa3cad0d4a5737bc5295785f5c613a1"] matplotlib = ["16aa61846efddf91df623bbb4598e63be1068a6b6a2e6361cc802b41c7a286eb", "1975b71a33ac986bb39b6d5cfbc15c7b1f218f1134efb4eb3881839d6ae69984", "2b222744bd54781e6cc0b717fa35a54e5f176ba2ced337f27c5b435b334ef854", "317643c0e88fad55414347216362b2e229c130edd5655fea5f8159a803098468", "4269ce3d1b897d46fc3cc2273a0cc2a730345bb47e4456af662e6fca85c89dd7", "65214fd668975077cdf8d408ccf2b2d6bdf73b4e6895a79f8e99ce4f0b43fcdb", "74bc213ab8a92d86a0b304d9359d1e1d14168d4c6121b83862c9d8a88b89a738", "88949be0db54755995dfb0210d0099a8712a3c696c860441971354c3debfc4af", "8e1223d868be89423ec95ada5f37aa408ee64fe76ccb8e4d5f533699ba4c0e4a", "9fa00f2d7a552a95fa6016e498fdeb6d74df537853dda79a9055c53dfc8b6e1a", "c27fd46cab905097ba4bc28d5ba5289930f313fb1970c9d41092c9975b80e9b4", "c94b792af431f6adb6859eb218137acd9a35f4f7442cea57e4a59c54751c36af", "f4c12a01eb2dc16693887a874ba948b18c92f425c4d329639ece6d3bb8e631bb"] -more-itertools = ["c187a73da93e7a8acc0001572aebc7e3c69daf7bf6881a2cea10650bd4420092", "c476b5d3a34e12d40130bc2f935028b5f636df8f372dc2c1c01dc19681b2039e", "fcbfeaea0be121980e15bc97b3817b5202ca73d0eae185b4550cbfce2a3ebb3d"] +mistune = ["59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e", "88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"] +more-itertools = ["38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4", "c0a5785b1109a6bd7fac76d6837fd1feca158e54e521ccd2ae8bfe393cc9d4fc", "fe7a7cae1ccb57d33952113ff4fa1bc5f879963600ed74918f1236e212ee50b9"] +nbconvert = ["08d21cf4203fabafd0d09bbd63f06131b411db8ebeede34b0fd4be4548351779", "a8a2749f972592aa9250db975304af6b7337f32337e523a2c995cc9e12c07807"] +nbformat = ["b9a0dbdbd45bb034f4f8893cafd6f652ea08c8c1674ba83f2dc55d3955743b0b", "f7494ef0df60766b7cabe0a3651556345a963b74dbc16bc7c18479041170d402"] +notebook = ["3ab2db8bc10e6edbd264c3c4b800bee276c99818386ee0c146d98d7e6bcf0a67", "d908673a4010787625c8952e91a22adf737db031f2aa0793ad92f6558918a74a"] numpy = ["0df89ca13c25eaa1621a3f09af4c8ba20da849692dcae184cb55e80952c453fb", "154c35f195fd3e1fad2569930ca51907057ae35e03938f89a8aedae91dd1b7c7", "18e84323cdb8de3325e741a7a8dd4a82db74fde363dce32b625324c7b32aa6d7", "1e8956c37fc138d65ded2d96ab3949bd49038cc6e8a4494b1515b0ba88c91565", "23557bdbca3ccbde3abaa12a6e82299bc92d2b9139011f8c16ca1bb8c75d1e95", "24fd645a5e5d224aa6e39d93e4a722fafa9160154f296fd5ef9580191c755053", "36e36b6868e4440760d4b9b44587ea1dc1f06532858d10abba98e851e154ca70", "3d734559db35aa3697dadcea492a423118c5c55d176da2f3be9c98d4803fc2a7", "416a2070acf3a2b5d586f9a6507bb97e33574df5bd7508ea970bbf4fc563fa52", "4a22dc3f5221a644dfe4a63bf990052cc674ef12a157b1056969079985c92816", "4d8d3e5aa6087490912c14a3c10fbdd380b40b421c13920ff468163bc50e016f", "4f41fd159fba1245e1958a99d349df49c616b133636e0cf668f169bce2aeac2d", "561ef098c50f91fbac2cc9305b68c915e9eb915a74d9038ecf8af274d748f76f", "56994e14b386b5c0a9b875a76d22d707b315fa037affc7819cda08b6d0489756", "73a1f2a529604c50c262179fcca59c87a05ff4614fe8a15c186934d84d09d9a5", "7da99445fd890206bfcc7419f79871ba8e73d9d9e6b82fe09980bc5bb4efc35f", "99d59e0bcadac4aa3280616591fb7bcd560e2218f5e31d5223a2e12a1425d495", "a4cc09489843c70b22e8373ca3dfa52b3fab778b57cf81462f1203b0852e95e3", "a61dc29cfca9831a03442a21d4b5fd77e3067beca4b5f81f1a89a04a71cf93fa", "b1853df739b32fa913cc59ad9137caa9cc3d97ff871e2bbd89c2a2a1d4a69451", "b1f44c335532c0581b77491b7715a871d0dd72e97487ac0f57337ccf3ab3469b", "b261e0cb0d6faa8fd6863af26d30351fd2ffdb15b82e51e81e96b9e9e2e7ba16", "c857ae5dba375ea26a6228f98c195fec0898a0fd91bcf0e8a0cae6d9faf3eca7", "cf5bb4a7d53a71bb6a0144d31df784a973b36d8687d615ef6a7e9b1809917a9b", "db9814ff0457b46f2e1d494c1efa4111ca089e08c8b983635ebffb9c1573361f", "df04f4bad8a359daa2ff74f8108ea051670cafbca533bb2636c58b16e962989e", "ecf81720934a0e18526177e645cbd6a8a21bb0ddc887ff9738de07a1df5c6b61", "edfa6fba9157e0e3be0f40168eb142511012683ac3dc82420bee4a3f3981b30e"] packaging = ["0886227f54515e592aaa2e5a553332c73962917f2831f1b0f9b9f4380a4b9807", "f95a1e147590f204328170981833854229bb2912ac3d5f89e2a8ccd2834800c9"] +pandocfilters = ["b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9"] +parso = ["35704a43a3c113cce4de228ddb39aab374b8004f4f2407d070b6a2ca784ce8a2", "895c63e93b94ac1e1690f5fdd40b65f07c8171e3e53cbd7793b5b96c0e0a7f24"] pathlib2 = ["25199318e8cc3c25dcb45cbe084cc061051336d5a9ea2a12448d3d8cb748f742", "5887121d7f7df3603bca2f710e7219f3eca0eb69e0b7cc6e0a022e155ac931a7"] -pillow = ["00203f406818c3f45d47bb8fe7e67d3feddb8dcbbd45a289a1de7dd789226360", "0616f800f348664e694dddb0b0c88d26761dd5e9f34e1ed7b7a7d2da14b40cb7", "091136f2a37e9ed6bd8ce96fbf5269199ba6edee490d64de7ac934316f31ecca", "0d67ae9a5937b1348fa1d97c7dcb6b56aaef828ca6655298e96f2f3114ad829d", "0e1aaddd00ee9014fe7a61b9da61427233fcd7c7f193b5efd6689e0ec36bc42f", "1f7908aab90c92ad85af9d2fec5fc79456a89b3adcc26314d2cde0e238bd789e", "2ea3517cd5779843de8a759c2349a3cd8d3893e03ab47053b66d5ec6f8bc4f93", "39b662f65a067709a62943003c1e807d140e7fcf631fcfc66ebe905f8149b9f4", "3ddc19447cf42ef3ec564ab7ebbd4f67838ba9816d739befe29dd70149c775bd", "48a9f0538c91fc136b3a576bee0e7cd174773dc9920b310c21dcb5519722e82c", "5280ebc42641a1283b7b1f2c20e5b936692198b9dd9995527c18b794850be1a8", "576a8a7a57065dab968d9d18befa2594a7673dcdab78c9b1f34248410cc6118f", "5e334a23c8f7cb6079987a2ed9978821a42b4323a3a3bdbc132945348737f9a9", "5e34e4b5764af65551647f5cc67cf5198c1d05621781d5173b342e5e55bf023b", "63b120421ab85cad909792583f83b6ca3584610c2fe70751e23f606a3c2e87f0", "696b5e0109fe368d0057f484e2e91717b49a03f1e310f857f133a4acec9f91dd", "6cb528de694f503ea164541c151da6c18267727a7558e0c9716cc0383d89658a", "7306d851d5a0cfac9ea07f1177783836f4b37292e5f224a534a52111cb6a6451", "7e3e32346d991f1788026917d0a9c182d6d32dc757163eee7ca990f1f831499e", "870ed021a42b1b02b5fe4a739ea735f671a84128c0a666c705db2cb9abd528eb", "916da1c19e4012d06a372127d7140dae894806fad67ef44330e5600d77833581", "9303a289fa0811e1c6abd9ddebfc770556d7c3311cb2b32eff72164ddc49bc64", "9577888ecc0ad7d06c3746afaba339c94d62b59da16f7a5d1cff9e491f23dace", "987e1c94a33c93d9b209315bfda9faa54b8edfce6438a1e93ae866ba20de5956", "99a3bbdbb844f4fb5d6dd59fac836a40749781c1fa63c563bc216c27aef63f60", "99db8dc3097ceafbcff9cb2bff384b974795edeb11d167d391a02c7bfeeb6e16", "a379526415f54f9462bc65a4da76fb0acc05e3b2a21717dde79621cf4377e0e6", "a5a96cf49eb580756a44ecf12949e52f211e20bffbf5a95760ac14b1e499cd37", "a844b5d8120f99fb7cd276ff544ac5bd562b0c053760d59694e6bf747c6ca7f5", "a9284368e81a67a7f47d5ef1ef7e4f11a4f688485879f44cf5f9090bba1f9d94", "aa6ca3eb56704cdc0d876fc6047ffd5ee960caad52452fbee0f99908a141a0ae", "aade5e66795c94e4a2b2624affeea8979648d1b0ae3fcee17e74e2c647fc4a8a", "b78905860336c1d292409e3df6ad39cc1f1c7f0964e66844bbc2ebfca434d073", "b92f521cdc4e4a3041cc343625b699f20b0b5f976793fb45681aac1efda565f8", "bb2baf44e97811687893873eab8cf9f18b40321cc15d15ff9f91dc031e30631f", "bfde84bbd6ae5f782206d454b67b7ee8f7f818c29b99fd02bf022fd33bab14cb", "c2b62d3df80e694c0e4a0ed47754c9480521e25642251b3ab1dff050a4e60409", "c55d348c1c65896c1bd804527de4880d251ae832acf90d74ad525bb79e77d55c", "c5e2be6c263b64f6f7656e23e18a4a9980cffc671442795682e8c4e4f815dd9f", "c99aa3c63104e0818ec566f8ff3942fb7c7a8f35f9912cb63fd8e12318b214b2", "dae06620d3978da346375ebf88b9e2dd7d151335ba668c995aea9ed07af7add4", "db5499d0710823fa4fb88206050d46544e8f0e0136a9a5f5570b026584c8fd74", "dcd3cd17d291e01e47636101c4a6638ffb44c842d009973e3b5c1b67ff718c58", "f12df6b45abc18f27f6e21ce26f7cbf7aa19820911462e46536e22085658ca1e", "f36baafd82119c4a114b9518202f2a983819101dcc14b26e43fc12cbefdce00e", "f52b79c8796d81391ab295b04e520bda6feed54d54931708872e8f9ae9db0ea1", "fa2a50f762d06d84125db0b95d0121e9c640afa7edc23fc0848896760a390f8e", "fa49bb60792b542b95ca93a39041e7113843093ce3cfd216870118eb3798fcc9", "ff8cff01582fa1a7e533cb97f628531c4014af4b5f38e33cdcfe5eec29b6d888", "ffbccfe1c077b5f41738bd719518213c217be7a7a12a7e74113d05a0d6617390"] +pexpect = ["2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba", "3fbd41d4caf27fa4a377bfd16fef87271099463e6fa73e92a52f92dfee5d425b"] +pickleshare = ["87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", "9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"] +pillow = ["01a501be4ae05fd714d269cb9c9f145518e58e73faa3f140ddb67fae0c2607b1", "051de330a06c99d6f84bcf582960487835bcae3fc99365185dc2d4f65a390c0e", "07c35919f983c2c593498edcc126ad3a94154184899297cc9d27a6587672cbaa", "0ae5289948c5e0a16574750021bd8be921c27d4e3527800dc9c2c1d2abc81bf7", "0b1efce03619cdbf8bcc61cfae81fcda59249a469f31c6735ea59badd4a6f58a", "0cf0208500df8d0c3cad6383cd98a2d038b0678fd4f777a8f7e442c5faeee81d", "163136e09bd1d6c6c6026b0a662976e86c58b932b964f255ff384ecc8c3cefa3", "18e912a6ccddf28defa196bd2021fe33600cbe5da1aa2f2e2c6df15f720b73d1", "24ec3dea52339a610d34401d2d53d0fb3c7fd08e34b20c95d2ad3973193591f1", "267f8e4c0a1d7e36e97c6a604f5b03ef58e2b81c1becb4fccecddcb37e063cc7", "3273a28734175feebbe4d0a4cde04d4ed20f620b9b506d26f44379d3c72304e1", "39fbd5d62167197318a0371b2a9c699ce261b6800bb493eadde2ba30d868fe8c", "4132c78200372045bb348fcad8d52518c8f5cfc077b1089949381ee4a61f1c6d", "4baab2d2da57b0d9d544a2ce0f461374dd90ccbcf723fe46689aff906d43a964", "4c678e23006798fc8b6f4cef2eaad267d53ff4c1779bd1af8725cc11b72a63f3", "4d4bc2e6bb6861103ea4655d6b6f67af8e5336e7216e20fff3e18ffa95d7a055", "505738076350a337c1740a31646e1de09a164c62c07db3b996abdc0f9d2e50cf", "5233664eadfa342c639b9b9977190d64ad7aca4edc51a966394d7e08e7f38a9f", "52e2e56fc3706d8791761a157115dc8391319720ad60cc32992350fda74b6be2", "5337ac3280312aa065ed0a8ec1e4b6142e9f15c31baed36b5cd964745853243f", "5ccd97e0f01f42b7e35907272f0f8ad2c3660a482d799a0c564c7d50e83604d4", "5d95cb9f6cced2628f3e4de7e795e98b2659dfcc7176ab4a01a8b48c2c2f488f", "634209852cc06c0c1243cc74f8fdc8f7444d866221de51125f7b696d775ec5ca", "75d1f20bd8072eff92c5f457c266a61619a02d03ece56544195c56d41a1a0522", "7eda4c737637af74bac4b23aa82ea6fbb19002552be85f0b89bc27e3a762d239", "801ddaa69659b36abf4694fed5aa9f61d1ecf2daaa6c92541bbbbb775d97b9fe", "825aa6d222ce2c2b90d34a0ea31914e141a85edefc07e17342f1d2fdf121c07c", "87fe838f9dac0597f05f2605c0700b1926f9390c95df6af45d83141e0c514bd9", "9c215442ff8249d41ff58700e91ef61d74f47dfd431a50253e1a1ca9436b0697", "a3d90022f2202bbb14da991f26ca7a30b7e4c62bf0f8bf9825603b22d7e87494", "a631fd36a9823638fe700d9225f9698fb59d049c942d322d4c09544dc2115356", "a6523a23a205be0fe664b6b8747a5c86d55da960d9586db039eec9f5c269c0e6", "a756ecf9f4b9b3ed49a680a649af45a8767ad038de39e6c030919c2f443eb000", "ac036b6a6bac7010c58e643d78c234c2f7dc8bb7e591bd8bc3555cf4b1527c28", "b117287a5bdc81f1bac891187275ec7e829e961b8032c9e5ff38b70fd036c78f", "ba04f57d1715ca5ff74bb7f8a818bf929a204b3b3c2c2826d1e1cc3b1c13398c", "ba6ef2bd62671c7fb9cdb3277414e87a5cd38b86721039ada1464f7452ad30b2", "c8939dba1a37960a502b1a030a4465c46dd2c2bca7adf05fa3af6bea594e720e", "cd878195166723f30865e05d87cbaf9421614501a4bd48792c5ed28f90fd36ca", "cee815cc62d136e96cf76771b9d3eb58e0777ec18ea50de5cfcede8a7c429aa8", "d1722b7aa4b40cf93ac3c80d3edd48bf93b9208241d166a14ad8e7a20ee1d4f3", "d7c1c06246b05529f9984435fc4fa5a545ea26606e7f450bdbe00c153f5aeaad", "db418635ea20528f247203bf131b40636f77c8209a045b89fa3badb89e1fcea0", "e1555d4fda1db8005de72acf2ded1af660febad09b4708430091159e8ae1963e", "e9c8066249c040efdda84793a2a669076f92a301ceabe69202446abb4c5c5ef9", "e9f13711780c981d6eadd6042af40e172548c54b06266a1aabda7de192db0838", "f0e3288b92ca5dbb1649bd00e80ef652a72b657dc94989fa9c348253d179054b", "f227d7e574d050ff3996049e086e1f18c7bd2d067ef24131e50a1d3fe5831fbc", "f62b1aeb5c2ced8babd4fbba9c74cbef9de309f5ed106184b12d9778a3971f15", "f71ff657e63a9b24cac254bb8c9bd3c89c7a1b5e00ee4b3997ca1c18100dac28", "fc9a12aad714af36cf3ad0275a96a733526571e52710319855628f476dcb144e"] pluggy = ["447ba94990e8014ee25ec853339faf7b0fc8050cdc3289d4d71f7f410fb90095", "bde19360a8ec4dfd8a20dcb811780a30998101f078fc7ded6162f0076f50508f"] +prometheus-client = ["e8c11ff5ca53de6c3d91e1510500611cafd1d247a937ec6c588a0a7cc3bef93c"] +prompt-toolkit = ["c1d6aff5252ab2ef391c2fe498ed8c088066f66bc64a8d5c095bbf795d9fec34", "d4c47f79b635a0e70b84fdb97ebd9a274203706b1ee5ed44c10da62755cf3ec9", "fd17048d8335c1e6d5ee403c3569953ba3eb8555d710bfc548faf0712666ea39"] +ptyprocess = ["923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", "d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"] py = ["bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694", "e76826342cefe3c3d5f7e8ee4316b80d1dd8a300781612ddbc765c17ba25a6c6"] pygments = ["5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a", "e8218dd399a61674745138520d0d4cf2621d7e032439341bc3f647bff125818d"] pyparsing = ["40856e74d4987de5d01761a22d1621ae1c7f8774585acae358aa5c5936c6c90b", "f353aab21fd474459d97b709e527b5571314ee5f067441dc9f88e33eecd96592"] -pytest = ["f689bf2fc18c4585403348dd56f47d87780bf217c53ed9ae7a3e2d7faa45f8e9", "f812ea39a0153566be53d88f8de94839db1e8a05352ed8a49525d7d7f37861e9"] +pytest = ["3e65a22eb0d4f1bdbc1eacccf4a3198bf8d4049dea5112d70a0c61b00e748d02", "5924060b374f62608a078494b909d341720a050b5224ff87e17e12377486a71d"] pytest-cov = ["513c425e931a0344944f84ea47f3956be0e416d95acbd897a44970c8d926d5d7", "e360f048b7dae3f2f2a9a4d067b2dd6b6a015d384d1577c994a43f3f7cbad762"] python-dateutil = ["063df5763652e21de43de7d9e00ccf239f953a832941e37be541614732cdfc93", "88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02"] pytz = ["31cb35c89bd7d333cd32c5f278fca91b523b0834369e757f4c5641ea252236ca", "8e0f8568c118d3077b46be7d654cc8167fa916092e28320cde048e54bfc9f1e6"] +pywinpty = ["0e01321e53a230233358a6d608a1a8bc86c3882cf82769ba3c62ca387dc9cc51", "333e0bc5fca8ad9e9a1516ebedb2a65da38dc1f399f8b2ea57d6cccec1ff2cc8", "3ca3123aa6340ab31bbf9bd012b92e72f9ec905e4c9ee152cc997403e1778cd3", "44a6dddcf2abf402e22f87e2c9a341f7d0b296afbec3d28184c8de4d7f514ee4", "53d94d574c3d4da2df5b1c3ae728b8d90e4d33502b0388576bbd4ddeb4de0f77", "c3955f162c53dde968f3fc11361658f1d83b683bfe601d4b6f94bb01ea4300bc", "cec9894ecb34de3d7b1ca121dd98433035b9f8949b5095e84b103b349231509c", "dcd45912e2fe2e6f72cee997a4da6ed1ad2056165a277ce5ec7f7ac98dcdf667", "f2bcdd9a2ffd8b223752a971b3d377fb7bfed85f140ec9710f1218d760f2ccb7"] +pyzmq = ["25a0715c8f69cf72f67cfe5a68a3f3ed391c67c063d2257bec0fe7fc2c7f08f8", "2bab63759632c6b9e0d5bf19cc63c3b01df267d660e0abcf230cf0afaa966349", "30ab49d99b24bf0908ebe1cdfa421720bfab6f93174e4883075b7ff38cc555ba", "32c7ca9fc547a91e3c26fc6080b6982e46e79819e706eb414dd78f635a65d946", "41219ae72b3cc86d97557fe5b1ef5d1adc1057292ec597b50050874a970a39cf", "4b8c48a9a13cea8f1f16622f9bd46127108af14cd26150461e3eab71e0de3e46", "55724997b4a929c0d01b43c95051318e26ddbae23565018e138ae2dc60187e59", "65f0a4afae59d4fc0aad54a917ab599162613a761b760ba167d66cc646ac3786", "6f88591a8b246f5c285ee6ce5c1bf4f6bd8464b7f090b1333a446b6240a68d40", "75022a4c60dcd8765bb9ca32f6de75a0ec83b0d96e0309dc479f4c7b21f26cb7", "76ea493bfab18dcb090d825f3662b5612e2def73dffc196d51a5194b0294a81d", "7b60c045b80709e4e3c085bab9b691e71761b44c2b42dbb047b8b498e7bc16b3", "8e6af2f736734aef8ed6f278f9f552ec7f37b1a6b98e59b887484a840757f67d", "9ac2298e486524331e26390eac14e4627effd3f8e001d4266ed9d8f1d2d31cce", "9ba650f493a9bc1f24feca1d90fce0e5dd41088a252ac9840131dfbdbf3815ca", "a02a4a385e394e46012dc83d2e8fd6523f039bb52997c1c34a2e0dd49ed839c1", "a3ceee84114d9f5711fa0f4db9c652af0e4636c89eabc9b7f03a3882569dd1ed", "a72b82ac1910f2cf61a49139f4974f994984475f771b0faa730839607eeedddf", "ab136ac51027e7c484c53138a0fab4a8a51e80d05162eb7b1585583bcfdbad27", "c095b224300bcac61e6c445e27f9046981b1ac20d891b2f1714da89d34c637c8", "c5cc52d16c06dc2521340d69adda78a8e1031705924e103c0eb8fc8af861d810", "d612e9833a89e8177f8c1dc68d7b4ff98d3186cd331acd616b01bbdab67d3a7b", "e828376a23c66c6fe90dcea24b4b72cd774f555a6ee94081670872918df87a19", "e9767c7ab2eb552796440168d5c6e23a99ecaade08dda16266d43ad461730192", "ebf8b800d42d217e4710d1582b0c8bff20cdcb4faad7c7213e52644034300924"] +qtconsole = ["1ac4a65e81a27b0838330a6d351c2f8435d4013d98a95373e8a41119b2968390", "bc1ba15f50c29ed50f1268ad823bb6543be263c18dd093b80495e9df63b003ac"] requests = ["502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", "7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"] +send2trash = ["60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2", "f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"] six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"] snowballstemmer = ["919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128", "9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"] sphinx = ["429e3172466df289f0f742471d7e30ba3ee11f3b5aecd9a840480d03f14bcfe5", "c4cb17ba44acffae3d3209646b6baec1e215cad3065e852c68cc569d4df1b9f8"] sphinx-stylo = ["2c53983054468455e2b3c6b66332932f8349a71aebeda6211ad42c819e60a03f", "dc9ef2ec95d30f08619f4b3264308fbf365bb2c8442de165c3eac0025800b7d4"] sphinxcontrib-websupport = ["68ca7ff70785cbe1e7bccc71a48b5b6d965d79ca50629606c7861a21b206d9dd", "9de47f375baf1ea07cdb3436ff39d7a9c76042c10a769c52353ec46e4e8fc3b9"] +terminado = ["55abf9ade563b8f9be1f34e4233c7b7bde726059947a593322e8a553cc4c067a", "65011551baff97f5414c67018e908110693143cfbaeb16831b743fe7cad8b927"] +testpath = ["46c89ebb683f473ffe2aab0ed9f12581d4d078308a3cb3765d79c6b2317b0109", "b694b3d9288dbd81685c5d2e7140b81365d46c29f5db4bc659de5aa6b98780f8"] topos-theme = ["5a3c188fe28d448d47d8bae6b31d40e0f9ca44534a16545f14edc42ae597a38d"] +tornado = ["0662d28b1ca9f67108c7e3b77afabfb9c7e87bde174fbda78186ecedc2499a9d", "4e5158d97583502a7e2739951553cbd88a72076f152b4b11b64b9a10c4c49409", "732e836008c708de2e89a31cb2fa6c0e5a70cb60492bee6f1ea1047500feaf7f", "8154ec22c450df4e06b35f131adc4f2f3a12ec85981a203301d310abf580500f", "8e9d728c4579682e837c92fdd98036bd5cdefa1da2aaf6acf26947e6dd0c01c5", "d4b3e5329f572f055b587efc57d29bd051589fb5a43ec8898c77a47ec2fa2bbb", "e5f2585afccbff22390cddac29849df463b252b711aa2ce7c5f3f342a5b3b444"] tqdm = ["3c4d4a5a41ef162dd61f1edb86b0e1c7859054ab656b2e7c7b77e7fbf6d9f392", "5b4d5549984503050883bc126280b386f5f4ca87e6c023c5d015655ad75bdebb"] +traitlets = ["9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835", "c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9"] urllib3 = ["61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", "de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"] +wcwidth = ["3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", "f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"] +webencodings = ["a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", "b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"] +widgetsnbextension = ["14b2c65f9940c9a7d3b70adbe713dbd38b5ec69724eebaba034d1036cf3d4740", "fa618be8435447a017fd1bf2c7ae922d0428056cfc7449f7a8641edf76b48265"] +win-unicode-console = ["d4142d4d56d46f449d6f00536a73625a871cba040f0bc1a2e305a04578f07d1e"] diff --git a/pyproject.toml b/pyproject.toml index d7ebba9a..baf7e4f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,9 +29,9 @@ click = "*" # TODO: Click has a progress bar, use that instead. tqdm = "*" -hypothesis = { version = "^3.0", optional = true} -pytest = {version = "^4.0", optional = true} -matplotlib = {version = "^3.0", optional = true} +hypothesis = { version = "^3.*", optional = true} +pytest = {version = "^4.*", optional = true} +matplotlib = {version = "^3.*", optional = true} jupyter = {version = "^1.0", optional = true} [tool.poetry.extras] @@ -39,9 +39,9 @@ testing = ["pytest", "hypothesis"] jupyter = ["jupyter", "matplotlib"] [tool.poetry.dev-dependencies] -pytest = "^4.0" +pytest = "^4.*" pytest-cov = "^2.6" -hypothesis = "3.0" +hypothesis = "3.*" sphinx = "^1.8" sphinx-stylo = "^0.1.1" topos-theme = "^0.0.11" From 3d81863cea69f21ebe4b4d48ce397583ac97cbfd Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Sun, 6 Jan 2019 21:19:45 +0000 Subject: [PATCH 11/12] Fix dep issue - take 2 --- poetry.lock | 6 +++--- pyproject.toml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 419feede..52861010 100644 --- a/poetry.lock +++ b/poetry.lock @@ -579,7 +579,7 @@ description = "pytest: simple powerful testing with Python" name = "pytest" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "4.1.0" +version = "4.0.2" [package.dependencies] atomicwrites = ">=1.0" @@ -850,7 +850,7 @@ jupyter = ["jupyter", "matplotlib"] testing = ["pytest", "hypothesis"] [metadata] -content-hash = "a288778cf8da021508483d5f8c3d3a070300bc9560812620eec05efe3ef3e0e3" +content-hash = "fac75fc78187af52f6fb613d63a973105c4652c88002aed634f29ce16320cd34" python-versions = "^3.5" [metadata.hashes] @@ -908,7 +908,7 @@ ptyprocess = ["923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0" py = ["bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694", "e76826342cefe3c3d5f7e8ee4316b80d1dd8a300781612ddbc765c17ba25a6c6"] pygments = ["5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a", "e8218dd399a61674745138520d0d4cf2621d7e032439341bc3f647bff125818d"] pyparsing = ["40856e74d4987de5d01761a22d1621ae1c7f8774585acae358aa5c5936c6c90b", "f353aab21fd474459d97b709e527b5571314ee5f067441dc9f88e33eecd96592"] -pytest = ["3e65a22eb0d4f1bdbc1eacccf4a3198bf8d4049dea5112d70a0c61b00e748d02", "5924060b374f62608a078494b909d341720a050b5224ff87e17e12377486a71d"] +pytest = ["f689bf2fc18c4585403348dd56f47d87780bf217c53ed9ae7a3e2d7faa45f8e9", "f812ea39a0153566be53d88f8de94839db1e8a05352ed8a49525d7d7f37861e9"] pytest-cov = ["513c425e931a0344944f84ea47f3956be0e416d95acbd897a44970c8d926d5d7", "e360f048b7dae3f2f2a9a4d067b2dd6b6a015d384d1577c994a43f3f7cbad762"] python-dateutil = ["063df5763652e21de43de7d9e00ccf239f953a832941e37be541614732cdfc93", "88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02"] pytz = ["31cb35c89bd7d333cd32c5f278fca91b523b0834369e757f4c5641ea252236ca", "8e0f8568c118d3077b46be7d654cc8167fa916092e28320cde048e54bfc9f1e6"] diff --git a/pyproject.toml b/pyproject.toml index baf7e4f0..b93a4353 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ click = "*" tqdm = "*" hypothesis = { version = "^3.*", optional = true} -pytest = {version = "^4.*", optional = true} +pytest = {version = "4.0.2", optional = true} matplotlib = {version = "^3.*", optional = true} jupyter = {version = "^1.0", optional = true} @@ -39,7 +39,7 @@ testing = ["pytest", "hypothesis"] jupyter = ["jupyter", "matplotlib"] [tool.poetry.dev-dependencies] -pytest = "^4.*" +pytest = "4.0.2" pytest-cov = "^2.6" hypothesis = "3.*" sphinx = "^1.8" From 1200f257082f51c7a9ef927c8ede10842ba3f0cd Mon Sep 17 00:00:00 2001 From: Alex Carney Date: Mon, 7 Jan 2019 17:32:23 +0000 Subject: [PATCH 12/12] How did this ever work?? --- stylo/image/image.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stylo/image/image.py b/stylo/image/image.py index efa7b0de..626f0319 100644 --- a/stylo/image/image.py +++ b/stylo/image/image.py @@ -1,6 +1,6 @@ import base64 import io -import PIL as P +import PIL.Image from abc import ABC, abstractmethod from stylo.error import MissingDependencyError @@ -112,7 +112,9 @@ def _to_pil_image(self): """Convert the numpy representation of the image into a PIL.Image object.""" height, width, _ = self.data.shape - return P.Image.frombuffer("RGB", (width, height), self.data, "raw", "RGB", 0, 1) + return PIL.Image.frombuffer( + "RGB", (width, height), self.data, "raw", "RGB", 0, 1 + ) @property def data(self):