From 3d100b45736ec7752e320c730db73f669873a25a Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 06:38:40 +0000 Subject: [PATCH 01/33] Fugue Integration --- python/Makefile | 2 +- python/poetry.lock | 586 ++++++++++++++++++------ python/pyproject.toml | 11 +- python/tests/api/fugue/__init__.py | 0 python/tests/api/fugue/test_profiler.py | 59 +++ python/whylogs/api/fugue/__init__.py | 1 + python/whylogs/api/fugue/profiler.py | 101 ++++ 7 files changed, 613 insertions(+), 147 deletions(-) create mode 100644 python/tests/api/fugue/__init__.py create mode 100644 python/tests/api/fugue/test_profiler.py create mode 100644 python/whylogs/api/fugue/__init__.py create mode 100644 python/whylogs/api/fugue/profiler.py diff --git a/python/Makefile b/python/Makefile index 9816203d7d..78efd9b528 100644 --- a/python/Makefile +++ b/python/Makefile @@ -162,7 +162,7 @@ test-notebooks: ## Run tests for the notebooks install: ## Install all dependencies with poetry. @$(call i, Installing dependencies) - poetry install -E "viz s3 spark whylabs mlflow image" + poetry install -E "viz s3 spark whylabs mlflow image fugue" coverage: ## Generate test coverage reports. @$(call i, Generating test coverage) diff --git a/python/poetry.lock b/python/poetry.lock index 4db9078d29..b470614eab 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -6,6 +6,17 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "adagio" +version = "0.2.4" +description = "The Dag IO Framework for Fugue projects" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +triad = ">=0.6.1" + [[package]] name = "alabaster" version = "0.7.12" @@ -25,6 +36,22 @@ python-versions = "*" [package.dependencies] textwrap3 = ">=0.9.2" +[[package]] +name = "antlr4-python3-runtime" +version = "4.11.1" +description = "ANTLR 4.11.1 runtime for Python 3" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" +optional = false +python-versions = "*" + [[package]] name = "appnope" version = "0.1.3" @@ -43,6 +70,7 @@ python-versions = ">=3.6.2" [package.dependencies] lazy-object-proxy = ">=1.4.0" +setuptools = ">=20.0" typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""} typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} wrapt = ">=1.11,<2" @@ -64,10 +92,10 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "autoflake" @@ -151,7 +179,7 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.2)"] -dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"] +dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"] [[package]] name = "boto3" @@ -268,7 +296,7 @@ optional = false python-versions = "*" [package.extras] -test = ["hypothesis (==3.55.3)", "flake8 (==3.7.8)"] +test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "coverage" @@ -296,12 +324,12 @@ python-versions = ">=3.6" cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] -docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx_rtd_theme"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] [[package]] name = "databricks-cli" @@ -376,7 +404,7 @@ optional = false python-versions = "*" [package.extras] -devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] [[package]] name = "filelock" @@ -404,6 +432,67 @@ mccabe = ">=0.7.0,<0.8.0" pycodestyle = ">=2.9.0,<2.10.0" pyflakes = ">=2.5.0,<2.6.0" +[[package]] +name = "fs" +version = "2.4.16" +description = "Python's filesystem abstraction layer" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +appdirs = ">=1.4.3,<1.5.0" +setuptools = "*" +six = ">=1.10,<2.0" + +[package.extras] +scandir = ["scandir (>=1.5,<2.0)"] + +[[package]] +name = "fugue" +version = "0.7.2" +description = "An abstraction layer for distributed computation" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +adagio = ">=0.2.4" +fugue-sql-antlr = ">=0.1.0" +jinja2 = "*" +pandas = ">=1.0.2" +pyarrow = ">=0.15.1" +qpd = ">=0.3.1" +sqlalchemy = "*" +triad = ">=0.6.6" + +[package.extras] +all = ["dask[dataframe,distributed]", "duckdb (>=0.3.2)", "fugue-sql-antlr[cpp] (>=0.1.0)", "ibis-framework (>=2)", "ipython (>=7.10.0)", "jupyterlab", "notebook", "pyarrow (>=5.0.0)", "pyarrow (>=7.0.0)", "pyspark", "qpd[dask] (>=0.3.1)", "ray (>=2.0.0)"] +cpp_sql_parser = ["fugue-sql-antlr[cpp] (>=0.1.0)"] +dask = ["dask[dataframe,distributed]", "qpd[dask] (>=0.3.1)"] +duckdb = ["duckdb (>=0.3.2)", "numpy", "pyarrow (>=5.0.0)"] +ibis = ["ibis-framework (>=2.1.1)"] +notebook = ["ipython (>=7.10.0)", "jupyterlab", "notebook"] +ray = ["duckdb (>=0.3.2)", "pyarrow (>=7.0.0)", "ray (>=2.0.0)"] +spark = ["pyspark"] + +[[package]] +name = "fugue-sql-antlr" +version = "0.1.1" +description = "Fugue SQL Antlr Parser" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +antlr4-python3-runtime = ">=4.11.1,<4.12" +jinja2 = "*" +triad = ">=0.6.8" + +[package.extras] +cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] +test = ["speedy_antlr_tool"] + [[package]] name = "furo" version = "2022.6.21" @@ -441,6 +530,17 @@ python-versions = ">=3.7" gitdb = ">=4.0.1,<5" typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""} +[[package]] +name = "greenlet" +version = "1.1.3" +description = "Lightweight in-process concurrent programming" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["Sphinx"] + [[package]] name = "identify" version = "2.5.3" @@ -481,8 +581,8 @@ typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517", "pyfakefs", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"] [[package]] name = "importlib-resources" @@ -496,8 +596,8 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "iniconfig" @@ -529,7 +629,7 @@ tornado = ">=6.1" traitlets = ">=5.1.0" [package.extras] -test = ["flaky", "ipyparallel", "pre-commit", "pytest-cov", "pytest-timeout", "pytest (>=6.0)"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=6.0)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipython" @@ -550,6 +650,7 @@ pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} pickleshare = "*" prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" pygments = "*" +setuptools = ">=18.5" traitlets = ">=4.2" [package.extras] @@ -558,10 +659,10 @@ doc = ["Sphinx (>=1.3)"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] -notebook = ["notebook", "ipywidgets"] +notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"] +test = ["ipykernel", "nbformat", "nose (>=0.10.1)", "numpy (>=1.17)", "pygments", "requests", "testpath"] [[package]] name = "ipython-genutils" @@ -580,10 +681,10 @@ optional = false python-versions = ">=3.6.1,<4.0" [package.extras] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] -requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] plugins = ["setuptools"] +requirements_deprecated_finder = ["pip-api", "pipreqs"] [[package]] name = "jedi" @@ -609,8 +710,8 @@ optional = false python-versions = ">=3.7" [package.extras] -trio = ["async-generator", "trio"] -test = ["async-timeout", "trio", "testpath", "pytest-asyncio (>=0.17)", "pytest-trio", "pytest"] +test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] +trio = ["async_generator", "trio"] [[package]] name = "jinja2" @@ -672,7 +773,7 @@ tornado = ">=6.0" traitlets = "*" [package.extras] -doc = ["ipykernel", "myst-parser", "sphinx-rtd-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt"] +doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] [[package]] @@ -713,8 +814,8 @@ pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_ SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "lazy-object-proxy" @@ -747,7 +848,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] -htmlsoup = ["beautifulsoup4"] +htmlsoup = ["BeautifulSoup4"] source = ["Cython (>=0.29.7)"] [[package]] @@ -763,14 +864,14 @@ mdurl = ">=0.1,<1.0" typing_extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} [package.extras] -testing = ["pytest-regressions", "pytest-cov", "pytest", "coverage"] -rtd = ["sphinx-book-theme", "sphinx-design", "sphinx-copybutton", "sphinx", "pyyaml", "myst-parser", "attrs"] -profiling = ["gprof2dot"] -plugins = ["mdit-py-plugins"] -linkify = ["linkify-it-py (>=1.0,<2.0)"] -compare = ["panflute (>=2.1.3,<2.2.0)", "mistune (>=2.0.2,<2.1.0)", "mistletoe (>=0.8.1,<0.9.0)", "markdown (>=3.3.6,<3.4.0)", "commonmark (>=0.9.1,<0.10.0)"] +benchmarking = ["psutil", "pytest", "pytest-benchmark (>=3.2,<4.0)"] code_style = ["pre-commit (==2.6)"] -benchmarking = ["pytest-benchmark (>=3.2,<4.0)", "pytest", "psutil"] +compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.3.6,<3.4.0)", "mistletoe (>=0.8.1,<0.9.0)", "mistune (>=2.0.2,<2.1.0)", "panflute (>=2.1.3,<2.2.0)"] +linkify = ["linkify-it-py (>=1.0,<2.0)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" @@ -811,9 +912,9 @@ python-versions = "~=3.6" markdown-it-py = ">=1.0.0,<3.0.0" [package.extras] -testing = ["pytest-regressions", "pytest-cov", "pytest (>=3.6,<4)", "coverage"] -rtd = ["sphinx-book-theme (>=0.1.0,<0.2.0)", "myst-parser (>=0.14.0,<0.15.0)"] code_style = ["pre-commit (==2.6)"] +rtd = ["myst-parser (>=0.14.0,<0.15.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] +testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] [[package]] name = "mdurl" @@ -855,8 +956,8 @@ sqlparse = ">=0.4.0,<1" [package.extras] aliyun-oss = ["aliyunstoreplugin"] -extras = ["scikit-learn", "pyarrow", "boto3", "google-cloud-storage (>=1.30.0)", "azureml-core (>=1.2.0)", "pysftp", "kubernetes", "mlserver (>=0.5.3)", "mlserver-mlflow (>=0.5.3)", "virtualenv"] -pipelines = ["scikit-learn (>=1.0)", "pyarrow (>=7.0)", "shap (>=0.40)", "pandas-profiling (>=3.1)", "ipython (>=7.0)", "markdown (>=3.3)", "Jinja2 (>=3.0)"] +extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", "kubernetes", "mlserver (>=0.5.3)", "mlserver-mlflow (>=0.5.3)", "pyarrow", "pysftp", "scikit-learn", "virtualenv"] +pipelines = ["Jinja2 (>=3.0)", "ipython (>=7.0)", "markdown (>=3.3)", "pandas-profiling (>=3.1)", "pyarrow (>=7.0)", "scikit-learn (>=1.0)", "shap (>=0.40)"] sqlserver = ["mlflow-dbstore"] [[package]] @@ -882,14 +983,14 @@ werkzeug = ">=0.5,<2.2.0" xmltodict = "*" [package.extras] -all = ["PyYAML (>=5.1)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (!=0.15)", "docker (>=2.5.1)", "graphql-core", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,!=0.96)", "idna (>=2.5,<4)", "cfn-lint (>=0.4.0)", "sshpubkeys (>=3.1.0)", "pyparsing (>=3.0.7)", "openapi-spec-validator (>=0.2.8)", "setuptools"] -apigateway = ["PyYAML (>=5.1)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (!=0.15)", "openapi-spec-validator (>=0.2.8)"] +all = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.4.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "graphql-core", "idna (>=2.5,<4)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.2.8)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +apigateway = ["PyYAML (>=5.1)", "ecdsa (!=0.15)", "openapi-spec-validator (>=0.2.8)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] apigatewayv2 = ["PyYAML (>=5.1)"] appsync = ["graphql-core"] awslambda = ["docker (>=2.5.1)"] batch = ["docker (>=2.5.1)"] -cloudformation = ["PyYAML (>=5.1)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (!=0.15)", "docker (>=2.5.1)", "graphql-core", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,!=0.96)", "idna (>=2.5,<4)", "cfn-lint (>=0.4.0)", "sshpubkeys (>=3.1.0)", "pyparsing (>=3.0.7)", "openapi-spec-validator (>=0.2.8)", "setuptools"] -cognitoidp = ["python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (!=0.15)"] +cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.4.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "graphql-core", "idna (>=2.5,<4)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.2.8)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +cognitoidp = ["ecdsa (!=0.15)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] ds = ["sshpubkeys (>=3.1.0)"] dynamodb = ["docker (>=2.5.1)"] dynamodb2 = ["docker (>=2.5.1)"] @@ -901,7 +1002,7 @@ glue = ["pyparsing (>=3.0.7)"] iotdata = ["jsondiff (>=1.1.2)"] route53resolver = ["sshpubkeys (>=3.1.0)"] s3 = ["PyYAML (>=5.1)"] -server = ["PyYAML (>=5.1)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (!=0.15)", "docker (>=2.5.1)", "graphql-core", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,!=0.96)", "idna (>=2.5,<4)", "cfn-lint (>=0.4.0)", "sshpubkeys (>=3.1.0)", "pyparsing (>=3.0.7)", "openapi-spec-validator (>=0.2.8)", "setuptools", "flask (<2.2.0)", "flask-cors"] +server = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.4.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "flask (<2.2.0)", "flask-cors", "graphql-core", "idna (>=2.5,<4)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.2.8)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] ssm = ["PyYAML (>=5.1)", "dataclasses"] xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] @@ -964,8 +1065,8 @@ typing-extensions = "*" [package.extras] code_style = ["pre-commit (>=2.12,<3.0)"] linkify = ["linkify-it-py (>=1.0,<2.0)"] -rtd = ["ipython", "sphinx-book-theme", "sphinx-panels", "sphinxcontrib-bibtex (>=2.4,<3.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] -testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)"] +rtd = ["ipython", "sphinx-book-theme", "sphinx-panels", "sphinxcontrib-bibtex (>=2.4,<3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions"] [[package]] name = "nbclient" @@ -982,7 +1083,7 @@ nest-asyncio = "*" traitlets = ">=5.2.2" [package.extras] -sphinx = ["autodoc-traits", "mock", "moto", "myst-parser", "Sphinx (>=1.7)", "sphinx-book-theme"] +sphinx = ["Sphinx (>=1.7)", "autodoc-traits", "mock", "moto", "myst-parser", "sphinx-book-theme"] test = ["black", "check-manifest", "flake8", "ipykernel", "ipython", "ipywidgets", "mypy", "nbconvert", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=60.0)", "testpath", "twine (>=1.11.0)", "xmltodict"] [[package]] @@ -1013,8 +1114,8 @@ tinycss2 = "*" traitlets = ">=5.0" [package.extras] -all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pyqtwebengine (>=5.15)", "pytest", "pytest-cov", "pytest-dependency", "sphinx-rtd-theme", "sphinx (==5.0.2)", "tornado (>=6.1)"] -docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx-rtd-theme", "sphinx (==5.0.2)"] +all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pyqtwebengine (>=5.15)", "pytest", "pytest-cov", "pytest-dependency", "sphinx (==5.0.2)", "sphinx-rtd-theme", "tornado (>=6.1)"] +docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx (==5.0.2)", "sphinx-rtd-theme"] qtpdf = ["pyqtwebengine (>=5.15)"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] @@ -1036,7 +1137,7 @@ jupyter-core = "*" traitlets = ">=5.1" [package.extras] -test = ["check-manifest", "testpath", "pytest", "pre-commit"] +test = ["check-manifest", "pre-commit", "pytest", "testpath"] [[package]] name = "nbsphinx" @@ -1070,21 +1171,16 @@ category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" -[[package]] -name = "numpy" -version = "1.21.6" -description = "NumPy is the fundamental package for array computing with Python." -category = "main" -optional = false -python-versions = ">=3.7,<3.11" +[package.dependencies] +setuptools = "*" [[package]] name = "numpy" -version = "1.22.4" +version = "1.21.1" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" [[package]] name = "oauthlib" @@ -1170,15 +1266,15 @@ tenacity = "*" tqdm = ">=4.32.2" [package.extras] -all = ["boto3", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"] +all = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "requests (>=2.21.0)"] azure = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)"] black = ["black (>=19.3b0)"] -dev = ["boto3", "botocore", "codecov", "coverage", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "notebook", "moto", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-mock (>=1.10)", "pytest-env (>=0.6.2)", "requests (>=2.21.0)", "check-manifest", "attrs (>=17.4.0)", "pre-commit", "flake8", "tox", "bumpversion", "recommonmark", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"] +dev = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pyarrow (>=2.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] gcs = ["gcsfs (>=0.2.0)"] github = ["PyGithub (>=1.55)"] hdfs = ["pyarrow (>=2.0)"] s3 = ["boto3"] -test = ["boto3", "botocore", "codecov", "coverage", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "notebook", "moto", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-mock (>=1.10)", "pytest-env (>=0.6.2)", "requests (>=2.21.0)", "check-manifest", "attrs (>=17.4.0)", "pre-commit", "flake8", "tox", "bumpversion", "recommonmark", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"] +test = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pyarrow (>=2.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] [[package]] name = "parso" @@ -1240,7 +1336,7 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.extras] -testing = ["nose", "coverage"] +testing = ["coverage", "nose"] [[package]] name = "pkgutil-resolve-name" @@ -1259,8 +1355,8 @@ optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] -test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] [[package]] name = "pluggy" @@ -1274,8 +1370,8 @@ python-versions = ">=3.6" importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] -testing = ["pytest-benchmark", "pytest"] -dev = ["tox", "pre-commit"] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" @@ -1322,7 +1418,7 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.extras] -test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "ptyprocess" @@ -1353,7 +1449,7 @@ name = "pyarrow" version = "8.0.0" description = "Python library for Apache Arrow" category = "main" -optional = true +optional = false python-versions = ">=3.7" [package.dependencies] @@ -1415,9 +1511,9 @@ python-versions = ">=3.6" [package.extras] crypto = ["cryptography (>=3.3.1)"] -dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.3.1)", "mypy", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pymeta3" @@ -1436,7 +1532,7 @@ optional = false python-versions = ">=3.6.8" [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyrsistent" @@ -1498,7 +1594,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["virtualenv", "pytest-xdist", "six", "process-tests", "hunter", "fields"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] [[package]] name = "pytest-mock" @@ -1512,7 +1608,7 @@ python-versions = ">=3.7" pytest = ">=5.0" [package.extras] -dev = ["pre-commit", "tox", "pytest-asyncio"] +dev = ["pre-commit", "pytest-asyncio", "tox"] [[package]] name = "python-dateutil" @@ -1569,6 +1665,26 @@ python-versions = ">=3.6" cffi = {version = "*", markers = "implementation_name == \"pypy\""} py = {version = "*", markers = "implementation_name == \"pypy\""} +[[package]] +name = "qpd" +version = "0.3.3" +description = "Query Pandas Using SQL" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +adagio = "*" +antlr4-python3-runtime = ">=4.10" +pandas = ">=1.0.2" +sqlalchemy = "*" +triad = "*" + +[package.extras] +all = ["cloudpickle (>=1.4.0)", "dask[dataframe,distributed]", "modin[ray]"] +dask = ["cloudpickle (>=1.4.0)", "dask[dataframe,distributed]"] +ray = ["modin[ray] (>=0.8.1.1)", "pandas (>=1.1.2)"] + [[package]] name = "readme-renderer" version = "37.0" @@ -1628,7 +1744,7 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""} urllib3 = ">=1.25.10" [package.extras] -tests = ["pytest (>=7.0.0)", "coverage (>=6.0.0)", "pytest-cov", "pytest-asyncio", "pytest-localserver", "flake8", "types-mock", "types-requests", "mypy"] +tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-localserver", "types-mock", "types-requests"] [[package]] name = "rfc3986" @@ -1694,6 +1810,19 @@ python-versions = ">=3.6" cryptography = ">=2.0" jeepney = ">=0.6" +[[package]] +name = "setuptools" +version = "65.3.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -1744,6 +1873,7 @@ Jinja2 = ">=2.3" packaging = "*" Pygments = ">=2.0" requests = ">=2.5.0" +setuptools = "*" snowballstemmer = ">=1.1" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" @@ -1754,8 +1884,8 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.920)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"] -test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.920)", "types-pkg-resources", "types-requests", "types-typed-ast"] +test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] [[package]] name = "sphinx-autoapi" @@ -1805,7 +1935,7 @@ python-versions = ">=3.7" sphinx = ">=4.0,<6.0" [package.extras] -docs = ["furo", "myst-parser", "sphinx-copybutton", "sphinx-inline-tabs", "ipython"] +docs = ["furo", "ipython", "myst-parser", "sphinx-copybutton", "sphinx-inline-tabs"] [[package]] name = "sphinx-copybutton" @@ -1819,8 +1949,8 @@ python-versions = ">=3.6" sphinx = ">=1.8" [package.extras] -rtd = ["sphinx-book-theme", "myst-nb", "ipython", "sphinx"] code_style = ["pre-commit (==2.12.1)"] +rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme"] [[package]] name = "sphinx-inline-tabs" @@ -1834,7 +1964,7 @@ python-versions = ">=3.6" sphinx = ">=3" [package.extras] -doc = ["myst-parser", "furo"] +doc = ["furo", "myst-parser"] test = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] @@ -1846,8 +1976,8 @@ optional = true python-versions = ">=3.5" [package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-devhelp" @@ -1858,8 +1988,8 @@ optional = true python-versions = ">=3.5" [package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-htmlhelp" @@ -1870,8 +2000,8 @@ optional = true python-versions = ">=3.6" [package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-jsmath" @@ -1882,7 +2012,7 @@ optional = true python-versions = ">=3.5" [package.extras] -test = ["mypy", "flake8", "pytest"] +test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" @@ -1893,8 +2023,8 @@ optional = true python-versions = ">=3.5" [package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-serializinghtml" @@ -1905,8 +2035,8 @@ optional = true python-versions = ">=3.5" [package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxext-opengraph" @@ -1919,6 +2049,39 @@ python-versions = ">=3.6" [package.dependencies] sphinx = ">=2.0" +[[package]] +name = "SQLAlchemy" +version = "1.4.41" +description = "Database Abstraction Library" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] +mariadb_connector = ["mariadb (>=1.0.1,!=1.1.2)"] +mssql = ["pyodbc"] +mssql_pymssql = ["pymssql"] +mssql_pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] +mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] +mysql_connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql_asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql_psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql", "pymysql (<1)"] +sqlcipher = ["sqlcipher3_binary"] + [[package]] name = "sqlparse" version = "0.4.2" @@ -1969,8 +2132,8 @@ python-versions = ">=3.6" webencodings = ">=0.4" [package.extras] -test = ["coverage", "pytest-isort", "pytest-flake8", "pytest-cov", "pytest"] -doc = ["sphinx-rtd-theme", "sphinx"] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["coverage[toml]", "pytest", "pytest-cov", "pytest-flake8", "pytest-isort"] [[package]] name = "toml" @@ -2024,6 +2187,24 @@ python-versions = ">=3.7" [package.extras] test = ["pre-commit", "pytest"] +[[package]] +name = "triad" +version = "0.6.8" +description = "A collection of python utils for Fugue projects" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +fs = "*" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +pandas = "*" +pyarrow = "*" +six = "*" + +[package.extras] +ciso8601 = ["ciso8601"] + [[package]] name = "twine" version = "4.0.1" @@ -2092,8 +2273,8 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -2186,12 +2367,13 @@ optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] datasets = ["pandas"] docs = ["sphinx", "sphinx-autoapi", "sphinx-autobuild", "furo", "sphinx-copybutton", "myst-parser", "sphinx-inline-tabs", "sphinxext-opengraph", "nbsphinx", "nbconvert", "ipython_genutils"] +fugue = ["fugue"] image = ["Pillow"] mlflow = ["mlflow-skinny"] s3 = ["boto3"] @@ -2202,13 +2384,17 @@ whylabs = ["whylabs-client"] [metadata] lock-version = "1.1" python-versions = ">=3.7.1, <4" -content-hash = "ecc1d25f1be496d737a4c4d4201aaec71db7996a9607de89fcf84553913af8f4" +content-hash = "ab0c855c6f8323e3773ae145ad8bb70b05a7d9947f7524e78e6ea6b17f3e4ba7" [metadata.files] 2to3 = [ {file = "2to3-1.0-py3-none-any.whl", hash = "sha256:a39fb204829c6ed90be1507f3aff1c2b4fa6734585d57a50286f039546b5fb7f"}, {file = "2to3-1.0.tar.gz", hash = "sha256:958bc212c928bbdcbc778b72528e0a39ae4ee8040eda6af6c3b5dd640c98ce6d"}, ] +adagio = [ + {file = "adagio-0.2.4-py3-none-any.whl", hash = "sha256:c6c4d812f629fc3141284a0b3cfe483731b28da3a1b18f3d5498695ff87dcc12"}, + {file = "adagio-0.2.4.tar.gz", hash = "sha256:e58abc4539184a65faf9956957d3787616bedeb1303ac5c9b1a201d8af6b87d7"}, +] alabaster = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, @@ -2217,6 +2403,14 @@ ansiwrap = [ {file = "ansiwrap-0.8.4-py2.py3-none-any.whl", hash = "sha256:7b053567c88e1ad9eed030d3ac41b722125e4c1271c8a99ade797faff1f49fb1"}, {file = "ansiwrap-0.8.4.zip", hash = "sha256:ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7"}, ] +antlr4-python3-runtime = [ + {file = "antlr4-python3-runtime-4.11.1.tar.gz", hash = "sha256:a53de701312f9bdacc5258a6872cd6c62b90d3a90ae25e494026f76267333b60"}, + {file = "antlr4_python3_runtime-4.11.1-py3-none-any.whl", hash = "sha256:ff1954eda1ca9072c02bf500387d0c86cb549bef4dbb3b64f39468b547ec5f6b"}, +] +appdirs = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] appnope = [ {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, @@ -2514,6 +2708,17 @@ flake8 = [ {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] +fs = [ + {file = "fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c"}, + {file = "fs-2.4.16.tar.gz", hash = "sha256:ae97c7d51213f4b70b6a958292530289090de3a7e15841e108fbe144f069d313"}, +] +fugue = [ + {file = "fugue-0.7.2-py3-none-any.whl", hash = "sha256:ffb0c2754eb95c6730725da9dfa265c39df8cbf189fabcbce02a1177145005fa"}, + {file = "fugue-0.7.2.tar.gz", hash = "sha256:8009315e371ab622aed326438c69ba4ad03126c618d48e839c3b18fa1917d441"}, +] +fugue-sql-antlr = [ + {file = "fugue-sql-antlr-0.1.1.tar.gz", hash = "sha256:e276badd471cf3e1659e94ba181896e2b1887de63ef53ac2badc73483b1c9332"}, +] furo = [ {file = "furo-2022.6.21-py3-none-any.whl", hash = "sha256:061b68e323345e27fcba024cf33a1e77f3dfd8d9987410be822749a706e2add6"}, {file = "furo-2022.6.21.tar.gz", hash = "sha256:9aa983b7488a4601d13113884bfb7254502c8729942e073a0acb87a5512af223"}, @@ -2526,6 +2731,62 @@ gitpython = [ {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, ] +greenlet = [ + {file = "greenlet-1.1.3-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:8c287ae7ac921dfde88b1c125bd9590b7ec3c900c2d3db5197f1286e144e712b"}, + {file = "greenlet-1.1.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:870a48007872d12e95a996fca3c03a64290d3ea2e61076aa35d3b253cf34cd32"}, + {file = "greenlet-1.1.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7c5227963409551ae4a6938beb70d56bf1918c554a287d3da6853526212fbe0a"}, + {file = "greenlet-1.1.3-cp27-cp27m-win32.whl", hash = "sha256:9fae214f6c43cd47f7bef98c56919b9222481e833be2915f6857a1e9e8a15318"}, + {file = "greenlet-1.1.3-cp27-cp27m-win_amd64.whl", hash = "sha256:de431765bd5fe62119e0bc6bc6e7b17ac53017ae1782acf88fcf6b7eae475a49"}, + {file = "greenlet-1.1.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:510c3b15587afce9800198b4b142202b323bf4b4b5f9d6c79cb9a35e5e3c30d2"}, + {file = "greenlet-1.1.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:9951dcbd37850da32b2cb6e391f621c1ee456191c6ae5528af4a34afe357c30e"}, + {file = "greenlet-1.1.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:07c58e169bbe1e87b8bbf15a5c1b779a7616df9fd3e61cadc9d691740015b4f8"}, + {file = "greenlet-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df02fdec0c533301497acb0bc0f27f479a3a63dcdc3a099ae33a902857f07477"}, + {file = "greenlet-1.1.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c88e134d51d5e82315a7c32b914a58751b7353eb5268dbd02eabf020b4c4700"}, + {file = "greenlet-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b41d19c0cfe5c259fe6c539fd75051cd39a5d33d05482f885faf43f7f5e7d26"}, + {file = "greenlet-1.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:6f5d4b2280ceea76c55c893827961ed0a6eadd5a584a7c4e6e6dd7bc10dfdd96"}, + {file = "greenlet-1.1.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:184416e481295832350a4bf731ba619a92f5689bf5d0fa4341e98b98b1265bd7"}, + {file = "greenlet-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd0404d154084a371e6d2bafc787201612a1359c2dee688ae334f9118aa0bf47"}, + {file = "greenlet-1.1.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a43bbfa9b6cfdfaeefbd91038dde65ea2c421dc387ed171613df340650874f2"}, + {file = "greenlet-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce5b64dfe8d0cca407d88b0ee619d80d4215a2612c1af8c98a92180e7109f4b5"}, + {file = "greenlet-1.1.3-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:903fa5716b8fbb21019268b44f73f3748c41d1a30d71b4a49c84b642c2fed5fa"}, + {file = "greenlet-1.1.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:0118817c9341ef2b0f75f5af79ac377e4da6ff637e5ee4ac91802c0e379dadb4"}, + {file = "greenlet-1.1.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:466ce0928e33421ee84ae04c4ac6f253a3a3e6b8d600a79bd43fd4403e0a7a76"}, + {file = "greenlet-1.1.3-cp35-cp35m-win32.whl", hash = "sha256:65ad1a7a463a2a6f863661329a944a5802c7129f7ad33583dcc11069c17e622c"}, + {file = "greenlet-1.1.3-cp35-cp35m-win_amd64.whl", hash = "sha256:7532a46505470be30cbf1dbadb20379fb481244f1ca54207d7df3bf0bbab6a20"}, + {file = "greenlet-1.1.3-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:caff52cb5cd7626872d9696aee5b794abe172804beb7db52eed1fd5824b63910"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:db41f3845eb579b544c962864cce2c2a0257fe30f0f1e18e51b1e8cbb4e0ac6d"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:e8533f5111704d75de3139bf0b8136d3a6c1642c55c067866fa0a51c2155ee33"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537e4baf0db67f382eb29255a03154fcd4984638303ff9baaa738b10371fa57"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8bfd36f368efe0ab2a6aa3db7f14598aac454b06849fb633b762ddbede1db90"}, + {file = "greenlet-1.1.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0877a9a2129a2c56a2eae2da016743db7d9d6a05d5e1c198f1b7808c602a30e"}, + {file = "greenlet-1.1.3-cp36-cp36m-win32.whl", hash = "sha256:88b04e12c9b041a1e0bcb886fec709c488192638a9a7a3677513ac6ba81d8e79"}, + {file = "greenlet-1.1.3-cp36-cp36m-win_amd64.whl", hash = "sha256:4f166b4aca8d7d489e82d74627a7069ab34211ef5ebb57c300ec4b9337b60fc0"}, + {file = "greenlet-1.1.3-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:cd16a89efe3a003029c87ff19e9fba635864e064da646bc749fc1908a4af18f3"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5b756e6730ea59b2745072e28ad27f4c837084688e6a6b3633c8b1e509e6ae0e"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:9b2f7d0408ddeb8ea1fd43d3db79a8cefaccadd2a812f021333b338ed6b10aba"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44b4817c34c9272c65550b788913620f1fdc80362b209bc9d7dd2f40d8793080"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d58a5a71c4c37354f9e0c24c9c8321f0185f6945ef027460b809f4bb474bfe41"}, + {file = "greenlet-1.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dd51d2650e70c6c4af37f454737bf4a11e568945b27f74b471e8e2a9fd21268"}, + {file = "greenlet-1.1.3-cp37-cp37m-win32.whl", hash = "sha256:048d2bed76c2aa6de7af500ae0ea51dd2267aec0e0f2a436981159053d0bc7cc"}, + {file = "greenlet-1.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:77e41db75f9958f2083e03e9dd39da12247b3430c92267df3af77c83d8ff9eed"}, + {file = "greenlet-1.1.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:1626185d938d7381631e48e6f7713e8d4b964be246073e1a1d15c2f061ac9f08"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1ec2779774d8e42ed0440cf8bc55540175187e8e934f2be25199bf4ed948cd9e"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f2f908239b7098799b8845e5936c2ccb91d8c2323be02e82f8dcb4a80dcf4a25"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b181e9aa6cb2f5ec0cacc8cee6e5a3093416c841ba32c185c30c160487f0380"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cf45e339cabea16c07586306a31cfcc5a3b5e1626d365714d283732afed6809"}, + {file = "greenlet-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6200a11f003ec26815f7e3d2ded01b43a3810be3528dd760d2f1fa777490c3cd"}, + {file = "greenlet-1.1.3-cp38-cp38-win32.whl", hash = "sha256:db5b25265010a1b3dca6a174a443a0ed4c4ab12d5e2883a11c97d6e6d59b12f9"}, + {file = "greenlet-1.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:095a980288fe05adf3d002fbb180c99bdcf0f930e220aa66fcd56e7914a38202"}, + {file = "greenlet-1.1.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:cbc1eb55342cbac8f7ec159088d54e2cfdd5ddf61c87b8bbe682d113789331b2"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:694ffa7144fa5cc526c8f4512665003a39fa09ef00d19bbca5c8d3406db72fbe"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:aa741c1a8a8cc25eb3a3a01a62bdb5095a773d8c6a86470bde7f607a447e7905"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3a669f11289a8995d24fbfc0e63f8289dd03c9aaa0cc8f1eab31d18ca61a382"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76a53bfa10b367ee734b95988bd82a9a5f0038a25030f9f23bbbc005010ca600"}, + {file = "greenlet-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb0aa7f6996879551fd67461d5d3ab0c3c0245da98be90c89fcb7a18d437403"}, + {file = "greenlet-1.1.3-cp39-cp39-win32.whl", hash = "sha256:5fbe1ab72b998ca77ceabbae63a9b2e2dc2d963f4299b9b278252ddba142d3f1"}, + {file = "greenlet-1.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:ffe73f9e7aea404722058405ff24041e59d31ca23d1da0895af48050a07b6932"}, + {file = "greenlet-1.1.3.tar.gz", hash = "sha256:bcb6c6dd1d6be6d38d6db283747d07fda089ff8c559a835236560a4410340455"}, +] identify = [ {file = "identify-2.5.3-py2.py3-none-any.whl", hash = "sha256:25851c8c1370effb22aaa3c987b30449e9ff0cece408f810ae6ce408fdd20893"}, {file = "identify-2.5.3.tar.gz", hash = "sha256:887e7b91a1be152b0d46bbf072130235a8117392b9f1828446079a816a05ef44"}, @@ -2852,59 +3113,34 @@ nodeenv = [ {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, ] numpy = [ - {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25"}, - {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e"}, - {file = "numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6"}, - {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb"}, - {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1"}, - {file = "numpy-1.21.6-cp310-cp310-win32.whl", hash = "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c"}, - {file = "numpy-1.21.6-cp310-cp310-win_amd64.whl", hash = "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f"}, - {file = "numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db"}, - {file = "numpy-1.21.6-cp37-cp37m-win32.whl", hash = "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e"}, - {file = "numpy-1.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4"}, - {file = "numpy-1.21.6-cp38-cp38-win32.whl", hash = "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470"}, - {file = "numpy-1.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b"}, - {file = "numpy-1.21.6-cp39-cp39-win32.whl", hash = "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786"}, - {file = "numpy-1.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3"}, - {file = "numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0"}, - {file = "numpy-1.21.6.zip", hash = "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656"}, - {file = "numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3"}, - {file = "numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887"}, - {file = "numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0"}, - {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74"}, - {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c"}, - {file = "numpy-1.22.4-cp310-cp310-win32.whl", hash = "sha256:9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e"}, - {file = "numpy-1.22.4-cp310-cp310-win_amd64.whl", hash = "sha256:3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077"}, - {file = "numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1"}, - {file = "numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72"}, - {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6"}, - {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0"}, - {file = "numpy-1.22.4-cp38-cp38-win32.whl", hash = "sha256:fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba"}, - {file = "numpy-1.22.4-cp38-cp38-win_amd64.whl", hash = "sha256:e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76"}, - {file = "numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5"}, - {file = "numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c"}, - {file = "numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e"}, - {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa"}, - {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802"}, - {file = "numpy-1.22.4-cp39-cp39-win32.whl", hash = "sha256:cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd"}, - {file = "numpy-1.22.4-cp39-cp39-win_amd64.whl", hash = "sha256:f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32"}, - {file = "numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207"}, - {file = "numpy-1.22.4.zip", hash = "sha256:425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af"}, + {file = "numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e"}, + {file = "numpy-1.21.1-cp37-cp37m-win32.whl", hash = "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172"}, + {file = "numpy-1.21.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8"}, + {file = "numpy-1.21.1-cp38-cp38-win32.whl", hash = "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd"}, + {file = "numpy-1.21.1-cp38-cp38-win_amd64.whl", hash = "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a"}, + {file = "numpy-1.21.1-cp39-cp39-win32.whl", hash = "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2"}, + {file = "numpy-1.21.1-cp39-cp39-win_amd64.whl", hash = "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33"}, + {file = "numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4"}, + {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"}, ] oauthlib = [ {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, @@ -3251,6 +3487,13 @@ pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, @@ -3317,6 +3560,7 @@ pyzmq = [ {file = "pyzmq-23.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:48400b96788cdaca647021bf19a9cd668384f46e4d9c55cf045bdd17f65299c8"}, {file = "pyzmq-23.2.1-cp37-cp37m-win32.whl", hash = "sha256:8a68f57b7a3f7b6b52ada79876be1efb97c8c0952423436e84d70cc139f16f0d"}, {file = "pyzmq-23.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9e5bf6e7239fc9687239de7a283aa8b801ab85371116045b33ae20132a1325d6"}, + {file = "pyzmq-23.2.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:0ff6294e001129a9f22dcbfba186165c7e6f573c46de2704d76f873c94c65416"}, {file = "pyzmq-23.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffc6b1623d0f9affb351db4ca61f432dca3628a5ee015f9bf2bfbe9c6836881c"}, {file = "pyzmq-23.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4d6f110c56f7d5b4d64dde3a382ae61b6d48174e30742859d8e971b18b6c9e5c"}, {file = "pyzmq-23.2.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9269fbfe3a4eb2009199120861c4571ef1655fdf6951c3e7f233567c94e8c602"}, @@ -3353,6 +3597,10 @@ pyzmq = [ {file = "pyzmq-23.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:407f909c4e8fde62fbdad9ebd448319792258cc0550c2815567a4d9d8d9e6d18"}, {file = "pyzmq-23.2.1.tar.gz", hash = "sha256:2b381aa867ece7d0a82f30a0c7f3d4387b7cf2e0697e33efaa5bed6c5784abcd"}, ] +qpd = [ + {file = "qpd-0.3.3-py3-none-any.whl", hash = "sha256:600b200fbc4fcd701ce06ff4eeedab9fa68bb395add89e2aaa9bd43c519b4fba"}, + {file = "qpd-0.3.3.tar.gz", hash = "sha256:1d192eb63c4facea82f1c8b2e93df5d4e5f27bc5bbeeca6dd2f88662cd7360d2"}, +] readme-renderer = [ {file = "readme_renderer-37.0-py3-none-any.whl", hash = "sha256:9fa416704703e509eeb900696751c908ddeb2011319d93700d8f18baff887a69"}, {file = "readme_renderer-37.0.tar.gz", hash = "sha256:07b7ea234e03e58f77cc222e206e6abb8f4c0435becce5104794ee591f9301c5"}, @@ -3416,6 +3664,10 @@ secretstorage = [ {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, ] +setuptools = [ + {file = "setuptools-65.3.0-py3-none-any.whl", hash = "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82"}, + {file = "setuptools-65.3.0.tar.gz", hash = "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -3484,13 +3736,55 @@ sphinxext-opengraph = [ {file = "sphinxext-opengraph-0.6.3.tar.gz", hash = "sha256:cd89e13cc7a44739f81b64ee57c1c20ef0c05dda5d1d8201d31ec2f34e4c29db"}, {file = "sphinxext_opengraph-0.6.3-py3-none-any.whl", hash = "sha256:bf76017c105856b07edea6caf4942b6ae9bb168585dccfd6dbdb6e4161f6b03a"}, ] +SQLAlchemy = [ + {file = "SQLAlchemy-1.4.41-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:13e397a9371ecd25573a7b90bd037db604331cf403f5318038c46ee44908c44d"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2d6495f84c4fd11584f34e62f9feec81bf373787b3942270487074e35cbe5330"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27m-win32.whl", hash = "sha256:e570cfc40a29d6ad46c9aeaddbdcee687880940a3a327f2c668dd0e4ef0a441d"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27m-win_amd64.whl", hash = "sha256:5facb7fd6fa8a7353bbe88b95695e555338fb038ad19ceb29c82d94f62775a05"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f37fa70d95658763254941ddd30ecb23fc4ec0c5a788a7c21034fc2305dab7cc"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:361f6b5e3f659e3c56ea3518cf85fbdae1b9e788ade0219a67eeaaea8a4e4d2a"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0990932f7cca97fece8017414f57fdd80db506a045869d7ddf2dda1d7cf69ecc"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cd767cf5d7252b1c88fcfb58426a32d7bd14a7e4942497e15b68ff5d822b41ad"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5102fb9ee2c258a2218281adcb3e1918b793c51d6c2b4666ce38c35101bb940e"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-win32.whl", hash = "sha256:2082a2d2fca363a3ce21cfa3d068c5a1ce4bf720cf6497fb3a9fc643a8ee4ddd"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-win_amd64.whl", hash = "sha256:e4b12e3d88a8fffd0b4ca559f6d4957ed91bd4c0613a4e13846ab8729dc5c251"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:90484a2b00baedad361402c257895b13faa3f01780f18f4a104a2f5c413e4536"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b67fc780cfe2b306180e56daaa411dd3186bf979d50a6a7c2a5b5036575cbdbb"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad2b727fc41c7f8757098903f85fafb4bf587ca6605f82d9bf5604bd9c7cded"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-win32.whl", hash = "sha256:59bdc291165b6119fc6cdbc287c36f7f2859e6051dd923bdf47b4c55fd2f8bd0"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-win_amd64.whl", hash = "sha256:d2e054aed4645f9b755db85bc69fc4ed2c9020c19c8027976f66576b906a74f1"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:4ba7e122510bbc07258dc42be6ed45997efdf38129bde3e3f12649be70683546"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0dcf127bb99458a9d211e6e1f0f3edb96c874dd12f2503d4d8e4f1fd103790b"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e16c2be5cb19e2c08da7bd3a87fed2a0d4e90065ee553a940c4fc1a0fb1ab72b"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ebeeec5c14533221eb30bad716bc1fd32f509196318fb9caa7002c4a364e4c"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-win32.whl", hash = "sha256:3e2ef592ac3693c65210f8b53d0edcf9f4405925adcfc031ff495e8d18169682"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-win_amd64.whl", hash = "sha256:eb30cf008850c0a26b72bd1b9be6730830165ce049d239cfdccd906f2685f892"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:c23d64a0b28fc78c96289ffbd0d9d1abd48d267269b27f2d34e430ea73ce4b26"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8eb8897367a21b578b26f5713833836f886817ee2ffba1177d446fa3f77e67c8"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:14576238a5f89bcf504c5f0a388d0ca78df61fb42cb2af0efe239dc965d4f5c9"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639e1ae8d48b3c86ffe59c0daa9a02e2bfe17ca3d2b41611b30a0073937d4497"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-win32.whl", hash = "sha256:0005bd73026cd239fc1e8ccdf54db58b6193be9a02b3f0c5983808f84862c767"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-win_amd64.whl", hash = "sha256:5323252be2bd261e0aa3f33cb3a64c45d76829989fa3ce90652838397d84197d"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:05f0de3a1dc3810a776275763764bb0015a02ae0f698a794646ebc5fb06fad33"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0002e829142b2af00b4eaa26c51728f3ea68235f232a2e72a9508a3116bd6ed0"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22ff16cedab5b16a0db79f1bc99e46a6ddececb60c396562e50aab58ddb2871c"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccfd238f766a5bb5ee5545a62dd03f316ac67966a6a658efb63eeff8158a4bbf"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-win32.whl", hash = "sha256:58bb65b3274b0c8a02cea9f91d6f44d0da79abc993b33bdedbfec98c8440175a"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-win_amd64.whl", hash = "sha256:ce8feaa52c1640de9541eeaaa8b5fb632d9d66249c947bb0d89dd01f87c7c288"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:199a73c31ac8ea59937cc0bf3dfc04392e81afe2ec8a74f26f489d268867846c"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676d51c9f6f6226ae8f26dc83ec291c088fe7633269757d333978df78d931ab"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:036d8472356e1d5f096c5e0e1a7e0f9182140ada3602f8fff6b7329e9e7cfbcd"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2307495d9e0ea00d0c726be97a5b96615035854972cc538f6e7eaed23a35886c"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-win32.whl", hash = "sha256:9c56e19780cd1344fcd362fd6265a15f48aa8d365996a37fab1495cae8fcd97d"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-win_amd64.whl", hash = "sha256:f5fa526d027d804b1f85cdda1eb091f70bde6fb7d87892f6dd5a48925bc88898"}, + {file = "SQLAlchemy-1.4.41.tar.gz", hash = "sha256:0292f70d1797e3c54e862e6f30ae474014648bc9c723e14a2fda730adb0a9791"}, +] sqlparse = [ {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, ] tabulate = [ {file = "tabulate-0.8.10-py3-none-any.whl", hash = "sha256:0ba055423dbaa164b9e456abe7920c5e8ed33fcc16f6d1b2f2d152c8e1e8b4fc"}, - {file = "tabulate-0.8.10-py3.8.egg", hash = "sha256:436f1c768b424654fce8597290d2764def1eea6a77cfa5c33be00b1bc0f4f63d"}, {file = "tabulate-0.8.10.tar.gz", hash = "sha256:6c57f3f3dd7ac2782770155f3adb2db0b1a269637e42f27599925e64b114f519"}, ] tenacity = [ @@ -3534,6 +3828,10 @@ traitlets = [ {file = "traitlets-5.3.0-py3-none-any.whl", hash = "sha256:65fa18961659635933100db8ca120ef6220555286949774b9cfc106f941d1c7a"}, {file = "traitlets-5.3.0.tar.gz", hash = "sha256:0bb9f1f9f017aa8ec187d8b1b2a7a6626a2a1d877116baba52a129bfa124f8e2"}, ] +triad = [ + {file = "triad-0.6.8-py3-none-any.whl", hash = "sha256:a19da626f0cee4a91f2472270bb4cfe0851bf8766d5263ae499a5c03c552daf3"}, + {file = "triad-0.6.8.tar.gz", hash = "sha256:588cf30e41fec815f7466e913d9b9d4e5119ea789a77748e4bf4546502580c1a"}, +] twine = [ {file = "twine-4.0.1-py3-none-any.whl", hash = "sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e"}, {file = "twine-4.0.1.tar.gz", hash = "sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0"}, diff --git a/python/pyproject.toml b/python/pyproject.toml index b0ef962771..b070e3c742 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -15,7 +15,7 @@ python = ">=3.7.1, <4" whylogs-sketching = ">=3.4.1.dev3" protobuf = ">=3.15.5" importlib-metadata = { version = ">=0.23", python = "<3.8" } -typing-extensions = ">=typing-extensions" +# typing-extensions = ">=typing-extensions" # viz module. Everything after this should be optional pybars3 = { version = "^0.9", optional = true } @@ -51,7 +51,8 @@ pyspark = {version = "^3.0.0", optional = true} # Image support related dependencies Pillow = {version = "^9.2.0", optional = true} - +# Fugue related dependencies +fugue = {version = "^0.7.2", optional = true} [tool.poetry.dev-dependencies] 2to3 = "^1.0" @@ -116,6 +117,12 @@ mlflow = [ image = [ "Pillow" ] +fugue = [ + "fugue" +] + +[tool.poetry.group.dev.dependencies] +fugue = "^0.7.2" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/python/tests/api/fugue/__init__.py b/python/tests/api/fugue/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python/tests/api/fugue/test_profiler.py b/python/tests/api/fugue/test_profiler.py new file mode 100644 index 0000000000..9e842cefe6 --- /dev/null +++ b/python/tests/api/fugue/test_profiler.py @@ -0,0 +1,59 @@ +from whylogs.api.fugue import profile +import numpy as np +import pandas as pd +import pytest +from datetime import datetime +from whylogs.core.view.dataset_profile_view import DatasetProfileView + + +@pytest.fixture +def _test_df(): + n = 100 + np.random.seed(0) + return pd.DataFrame( + dict( + a=np.random.choice([1, 2, 3], n), + b=np.random.choice(["a", "b"], n), + c=np.random.random(n), + d=np.random.choice(["xy", "z"], n), + ) + ) + + +def test_no_partition(_test_df): + for engine in [None, "spark"]: + t1 = datetime(2020, 1, 1) + t2 = datetime(2020, 1, 2) + v = profile(_test_df, dataset_timestamp=t1, creation_timestamp=t2, engine=engine) + assert isinstance(v, DatasetProfileView) + pf = v.to_pandas() + + assert len(pf) == 4 + assert pf["counts/n"].tolist() == [100, 100, 100, 100] + assert v.dataset_timestamp == t1 + assert v.creation_timestamp == t2 + + pf = profile(_test_df, profile_cols=["b", "c"], engine=engine).to_pandas() + assert len(pf) == 2 + assert pf["counts/n"].tolist() == [100, 100] + assert set(pf.index) == set(["b", "c"]) + + +def test_with_partition(_test_df): + for engine in [None, "spark"]: + df = profile(_test_df, partition={"by": ["a", "b"]}, profile_field="x", engine=engine) + # get counts of each group + df["ct"] = df.x.apply(lambda x: DatasetProfileView.deserialize(x).to_pandas()["counts/n"].iloc[0]) + # get counts of profiled cols of each group should always be 4 + df["pct"] = df.x.apply(lambda x: len(DatasetProfileView.deserialize(x).to_pandas())) + df = df[["a", "b", "ct", "pct"]].set_index(["a", "b"]) + # compute group counts in a different way + ct = _test_df.groupby(["a", "b"])["c"].count() + df["ct_true"] = ct + # assert counts match + assert all(df.ct == df.ct_true) + assert all(df.pct == 4) + + df = profile(_test_df, partition={"by": ["a", "b"]}, profile_cols=["b", "c"], profile_field="x", engine=engine) + df["pct"] = df.x.apply(lambda x: len(DatasetProfileView.deserialize(x).to_pandas())) + assert all(df.pct == 2) diff --git a/python/whylogs/api/fugue/__init__.py b/python/whylogs/api/fugue/__init__.py new file mode 100644 index 0000000000..4451091f1b --- /dev/null +++ b/python/whylogs/api/fugue/__init__.py @@ -0,0 +1 @@ +from .profiler import profile diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py new file mode 100644 index 0000000000..b411d11f13 --- /dev/null +++ b/python/whylogs/api/fugue/profiler.py @@ -0,0 +1,101 @@ +from datetime import datetime +from functools import reduce +from typing import Any, Dict, Iterable, List, Optional + +import pandas as pd +from fugue import FugueWorkflow, PartitionSpec, Schema, transform, transformer + +import whylogs as why +from whylogs.core.view.column_profile_view import ColumnProfileView +from whylogs.core.view.dataset_profile_view import DatasetProfileView + +COL_NAME_FIELD = "__whylogs_fugue_col_name" +COL_PROFILE_FIELD = "__whylogs_fugue_col_profile" +COL_PROFILE_SCHEMA = Schema([(COL_NAME_FIELD, str), (COL_PROFILE_FIELD, bytes)]) +DF_PROFILE_FIELD = "__whylogs_df_profile_view" + + +class _Profiler: + def __init__( + self, + partition, + cols, + dataset_timestamp: Optional[datetime] = None, + creation_timestamp: Optional[datetime] = None, + profile_field: str = DF_PROFILE_FIELD, + ): + now = datetime.utcnow() + + self._dataset_timestamp = dataset_timestamp or now + self._creation_timestamp = creation_timestamp or now + + self._partition = PartitionSpec(partition) + self._by = self._partition.partition_by + self._cols = cols + self._profile_field = profile_field + self._profile_schema = Schema([(profile_field, bytes)]) + + def to_col_profiles(self, df: pd.DataFrame) -> Iterable[Dict[str, Any]]: + res = why.log(df[self._cols] if self._cols is not None else df) + for col_name, col_profile in res.view().get_columns().items(): + yield {COL_NAME_FIELD: col_name, COL_PROFILE_FIELD: col_profile.serialize()} + + def merge_col_profiles(self, df: pd.DataFrame) -> pd.DataFrame: + merged_profile: ColumnProfileView = reduce( + lambda acc, x: acc.merge(x), df[COL_PROFILE_FIELD].apply(ColumnProfileView.deserialize) + ) + return df.head(1).assign(**{COL_PROFILE_FIELD: merged_profile.serialize()}) + + def merge_to_view(self, col_profiles: List[Dict[str, Any]]) -> Iterable[Dict[str, Any]]: + profile_view = DatasetProfileView( + columns={row[COL_NAME_FIELD]: ColumnProfileView.from_bytes(row[COL_PROFILE_FIELD]) for row in col_profiles}, + dataset_timestamp=self._dataset_timestamp, + creation_timestamp=self._creation_timestamp, + ) + yield {self._profile_field: profile_view.serialize()} + + def transform_no_logical_partition(self, df: Any, **kwargs: Any) -> DatasetProfileView: + dag = FugueWorkflow() + input_df = dag.load(df) if isinstance(df, str) else dag.df(df) + cols = input_df.partition(self._partition).transform( + self.to_col_profiles, + schema=[(COL_NAME_FIELD, str), (COL_PROFILE_FIELD, bytes)], + ) + merged_cols = cols.partition_by(COL_NAME_FIELD).transform(self.merge_col_profiles, schema="*") + result = merged_cols.process(self.merge_to_view, schema=self._profile_schema) + result.yield_dataframe_as("result", as_local=True) + return DatasetProfileView.deserialize(dag.run(**kwargs)["result"].as_array()[0][0]) + + def profile_partition(self, df: pd.DataFrame) -> pd.DataFrame: + res = why.log(df[self._cols] if self._cols is not None else df).view().serialize() + return df.head(1)[self._by].assign(**{self._profile_field: res}) + + def transform_with_logical_partition(self, df: Any, **kwargs: Any) -> Any: + return transform( + df, + transformer(lambda pdf: pdf.schema.extract(self._by) + self._profile_schema)(self.profile_partition), + partition=self._partition, + **kwargs, + ) + + +def profile( + df: Any, + dataset_timestamp: Optional[int] = None, + creation_timestamp: Optional[int] = None, + partition: Any = None, + profile_cols: Optional[List[str]] = None, + as_local: bool = True, + profile_field: str = DF_PROFILE_FIELD, + **kwargs, +) -> Any: + profiler = _Profiler( + partition, + profile_cols, + dataset_timestamp=dataset_timestamp, + creation_timestamp=creation_timestamp, + profile_field=profile_field, + ) + if len(profiler._by) == 0: + return profiler.transform_no_logical_partition(df, **kwargs) + return profiler.transform_with_logical_partition(df, as_local=as_local, **kwargs) From 96cc0dfee2012ac48a91fe9e41a8976c33efbf71 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 16:23:18 +0000 Subject: [PATCH 02/33] fix poetry --- python/pyproject.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/python/pyproject.toml b/python/pyproject.toml index b070e3c742..b5d1caa06e 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -121,9 +121,6 @@ fugue = [ "fugue" ] -[tool.poetry.group.dev.dependencies] -fugue = "^0.7.2" - [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" From 777687f90b6429e4aaf5c6133fe228af8ea28315 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 20:55:02 +0000 Subject: [PATCH 03/33] fix lint --- python/docs/datasets | 1 + python/tests/api/fugue/test_profiler.py | 6 ++++-- python/whylogs/api/fugue/__init__.py | 1 + python/whylogs/api/fugue/profiler.py | 4 ++-- 4 files changed, 8 insertions(+), 4 deletions(-) create mode 120000 python/docs/datasets diff --git a/python/docs/datasets b/python/docs/datasets new file mode 120000 index 0000000000..cb03ea8aec --- /dev/null +++ b/python/docs/datasets @@ -0,0 +1 @@ +../whylogs/datasets/descr \ No newline at end of file diff --git a/python/tests/api/fugue/test_profiler.py b/python/tests/api/fugue/test_profiler.py index 9e842cefe6..7edbbec168 100644 --- a/python/tests/api/fugue/test_profiler.py +++ b/python/tests/api/fugue/test_profiler.py @@ -1,8 +1,10 @@ -from whylogs.api.fugue import profile +from datetime import datetime + import numpy as np import pandas as pd import pytest -from datetime import datetime + +from whylogs.api.fugue import profile from whylogs.core.view.dataset_profile_view import DatasetProfileView diff --git a/python/whylogs/api/fugue/__init__.py b/python/whylogs/api/fugue/__init__.py index 4451091f1b..38fe0fbc26 100644 --- a/python/whylogs/api/fugue/__init__.py +++ b/python/whylogs/api/fugue/__init__.py @@ -1 +1,2 @@ +# flake8: noqa from .profiler import profile diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py index b411d11f13..e25ca02575 100644 --- a/python/whylogs/api/fugue/profiler.py +++ b/python/whylogs/api/fugue/profiler.py @@ -81,8 +81,8 @@ def transform_with_logical_partition(self, df: Any, **kwargs: Any) -> Any: def profile( df: Any, - dataset_timestamp: Optional[int] = None, - creation_timestamp: Optional[int] = None, + dataset_timestamp: Optional[datetime] = None, + creation_timestamp: Optional[datetime] = None, partition: Any = None, profile_cols: Optional[List[str]] = None, as_local: bool = True, From 30a3e465790add97310b540eca7791b9ef942f56 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 21:37:29 +0000 Subject: [PATCH 04/33] add docs --- python/docs/examples.rst | 1 + .../integrations/Dask_Profiling.ipynb | 5 +- .../integrations/Fugue_Profiling.ipynb | 686 ++++++++++++++++++ .../integrations/Pyspark_Profiling.ipynb | 7 +- 4 files changed, 692 insertions(+), 7 deletions(-) create mode 100644 python/examples/integrations/Fugue_Profiling.ipynb diff --git a/python/docs/examples.rst b/python/docs/examples.rst index ab6cd0bf1f..54a26dd6e9 100644 --- a/python/docs/examples.rst +++ b/python/docs/examples.rst @@ -54,6 +54,7 @@ Integrations examples/integrations/writers/Writing_Profiles examples/integrations/writers/Writing_Regression_Performance_Metrics_to_WhyLabs examples/integrations/writers/Writing_Classification_Performance_Metrics_to_WhyLabs + examples/integrations/Fugue_Profiling examples/integrations/Pyspark_Profiling examples/integrations/Mlflow_Logging examples/integrations/kafka-example/Kafka_Example diff --git a/python/examples/integrations/Dask_Profiling.ipynb b/python/examples/integrations/Dask_Profiling.ipynb index 3d0bfe5220..037262ebf9 100644 --- a/python/examples/integrations/Dask_Profiling.ipynb +++ b/python/examples/integrations/Dask_Profiling.ipynb @@ -1555,7 +1555,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3.9.13 ('.venv': poetry)", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1569,9 +1569,8 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.9.14" }, - "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "0f484380554f045e8316d9ef136659363ef199c84a7347221e49b73e46486d36" diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb new file mode 100644 index 0000000000..a0beecfb9e --- /dev/null +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fugue (Spark, Ray, Dask) Integration\n", + "\n", + "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/whylabs/whylogs/blob/mainline/python/examples/integrations/Fugue_Profiling.ipynb)\n", + "\n", + "\n", + "Hi! Perhaps you're already feeling confident with our library, but you really wish there was an easy way to plug our profiling into your existing **Spark, Dask or Ray** clusters or existing **Databricks, Coiled or Anyscale** platforms. Well, glad you've made it here, because this is what we are going to cover in this example notebook 😃\n", + "\n", + "If you wish to have other insights on how to use whylogs, feel free to check our [other existing examples](https://github.com/whylabs/whylogs/tree/mainline/python/examples), as they might be extremely useful!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing the extra dependency\n", + "\n", + "As we want to enable users to have exactly what they need to use from whylogs, the `pyspark` integration comes as an extra dependency. In order to have it available, simply uncomment and run the following cell:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install 'whylogs[fugue]' 'fugue[spark]'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "| Run Whylogs on ... | Installation Command |\n", + "|:---|:---|\n", + "| Any Spark cluster (including Databricks Notebooks) | `pip install 'whylogs[fugue]' 'fugue[spark]'` |\n", + "| Databricks (remote access) | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[databricks]'` |\n", + "| Any Ray cluster (including Anyscale Notebooks) | `pip install 'whylogs[fugue]' 'fugue[ray]'` |\n", + "| Anyscale (remote access) | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[anyscale]'` |\n", + "| Any Dask cluster | `pip install 'whylogs[fugue]' 'fugue[dask]'` |\n", + "| Coiled | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[coiled]'` |" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initializing a SparkSession\n", + "\n", + "Here we will initialize a SparkSession. I'm also setting the `pyarrow` execution config, because it makes our methods even more performant. \n", + "\n", + ">**IMPORTANT**: Make sure you have Spark 3.0+ available in your environment, as our implementation relies on it for a smoother integration" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from pyspark.sql import SparkSession" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "spark = SparkSession.builder.appName('whylogs-testing').getOrCreate()\n", + "arrow_config_key = \"spark.sql.execution.arrow.pyspark.enabled\"\n", + "spark.conf.set(arrow_config_key, \"true\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following environment variable should NOT need to be set in your environment." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "os.environ[\"PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION\"] = \"python\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Constructing a dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abcd
01a0.533206xy
12b0.230533z
21a0.394869z
32b0.618809z
42b0.474868xy
...............
951b0.904425xy
963a0.645785z
971a0.324683xy
982b0.519711z
993a0.000055z
\n", + "

100 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " a b c d\n", + "0 1 a 0.533206 xy\n", + "1 2 b 0.230533 z\n", + "2 1 a 0.394869 z\n", + "3 2 b 0.618809 z\n", + "4 2 b 0.474868 xy\n", + ".. .. .. ... ..\n", + "95 1 b 0.904425 xy\n", + "96 3 a 0.645785 z\n", + "97 1 a 0.324683 xy\n", + "98 2 b 0.519711 z\n", + "99 3 a 0.000055 z\n", + "\n", + "[100 rows x 4 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "n = 100\n", + "np.random.seed(0)\n", + "tdf = pd.DataFrame(\n", + " dict(\n", + " a=np.random.choice([1, 2, 3], n),\n", + " b=np.random.choice([\"a\", \"b\"], n),\n", + " c=np.random.random(n),\n", + " d=np.random.choice([\"xy\", \"z\"], n),\n", + " )\n", + ")\n", + "tdf.to_parquet(\"/tmp/test.parquet\")\n", + "tdf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Profiling using Whylogs + Fugue\n", + "\n", + "The simplest way to use `profile` is equivalent to use `why.log(df).view()`" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cardinality/estcardinality/lower_1cardinality/upper_1counts/ncounts/nulldistribution/maxdistribution/meandistribution/mediandistribution/mindistribution/n...distribution/stddevfrequent_items/frequent_stringsints/maxints/mintypetypes/booleantypes/fractionaltypes/integraltypes/objecttypes/string
column
a3.0000003.03.00015010003.0000001.8800002.0000001.000000100...0.807540[FrequentItem(value='1', est=39, upper=39, low...3.01.0SummaryType.COLUMN0010000
b2.0000002.02.0001001000NaN0.000000NaNNaN0...0.000000[FrequentItem(value='a', est=57, upper=57, low...NaNNaNSummaryType.COLUMN0000100
c100.000025100.0100.00501810000.9923960.4999290.4878380.000055100...0.294085NaNNaNNaNSummaryType.COLUMN0100000
d2.0000002.02.0001001000NaN0.000000NaNNaN0...0.000000[FrequentItem(value='xy', est=53, upper=53, lo...NaNNaNSummaryType.COLUMN0000100
\n", + "

4 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " cardinality/est cardinality/lower_1 cardinality/upper_1 counts/n \\\n", + "column \n", + "a 3.000000 3.0 3.000150 100 \n", + "b 2.000000 2.0 2.000100 100 \n", + "c 100.000025 100.0 100.005018 100 \n", + "d 2.000000 2.0 2.000100 100 \n", + "\n", + " counts/null distribution/max distribution/mean distribution/median \\\n", + "column \n", + "a 0 3.000000 1.880000 2.000000 \n", + "b 0 NaN 0.000000 NaN \n", + "c 0 0.992396 0.499929 0.487838 \n", + "d 0 NaN 0.000000 NaN \n", + "\n", + " distribution/min distribution/n ... distribution/stddev \\\n", + "column ... \n", + "a 1.000000 100 ... 0.807540 \n", + "b NaN 0 ... 0.000000 \n", + "c 0.000055 100 ... 0.294085 \n", + "d NaN 0 ... 0.000000 \n", + "\n", + " frequent_items/frequent_strings ints/max ints/min \\\n", + "column \n", + "a [FrequentItem(value='1', est=39, upper=39, low... 3.0 1.0 \n", + "b [FrequentItem(value='a', est=57, upper=57, low... NaN NaN \n", + "c NaN NaN NaN \n", + "d [FrequentItem(value='xy', est=53, upper=53, lo... NaN NaN \n", + "\n", + " type types/boolean types/fractional types/integral \\\n", + "column \n", + "a SummaryType.COLUMN 0 0 100 \n", + "b SummaryType.COLUMN 0 0 0 \n", + "c SummaryType.COLUMN 0 100 0 \n", + "d SummaryType.COLUMN 0 0 0 \n", + "\n", + " types/object types/string \n", + "column \n", + "a 0 0 \n", + "b 0 100 \n", + "c 0 0 \n", + "d 0 100 \n", + "\n", + "[4 rows x 28 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from whylogs.api.fugue import profile\n", + "\n", + "profile(tdf).to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now assuming you want to use Spark to profile the dataset distributedly and assuming this is how you get a SparkSession:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "22/09/18 21:30:50 WARN Utils: Your hostname, codespaces-5144a4 resolves to a loopback address: 127.0.0.1; using 172.16.5.4 instead (on interface eth0)\n", + "22/09/18 21:30:50 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "22/09/18 21:30:51 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + ] + } + ], + "source": [ + "from pyspark.sql import SparkSession\n", + "\n", + "spark = SparkSession.builder.getOrCreate()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you want to profile the pandas df on Spark:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "profile(tdf, engine=spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you want to profile a SparkDataFrame:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spark_df = spark.createDataFrame(tdf)\n", + "profile(tdf, engine=spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also directly profile a parquet file or a folder of parquet files locally or on the cloud (the file will be loaded distributedly):" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "profile(\"/tmp/test.parquet\", engine=spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## WIP!!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.7" + }, + "vscode": { + "interpreter": { + "hash": "d4bce4e749e5452baa925b5367e0ce1a24e1936540311006e3497d016ec67e64" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/python/examples/integrations/Pyspark_Profiling.ipynb b/python/examples/integrations/Pyspark_Profiling.ipynb index 4a2435ae65..6c3f92bc62 100644 --- a/python/examples/integrations/Pyspark_Profiling.ipynb +++ b/python/examples/integrations/Pyspark_Profiling.ipynb @@ -659,7 +659,7 @@ "hash": "16a10773934acde374a1cd808bcd53b1085f60e17ec18f4c0c26564dd890a5a0" }, "kernelspec": { - "display_name": "Python 3.9.12 ('.venv': venv)", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -673,9 +673,8 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" - }, - "orig_nbformat": 4 + "version": "3.9.14" + } }, "nbformat": 4, "nbformat_minor": 2 From 58e4339835262d7a1e2e843cfef03dd31a7b86d0 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 21:42:22 +0000 Subject: [PATCH 05/33] update docs --- .../integrations/Fugue_Profiling.ipynb | 39 ------------------- 1 file changed, 39 deletions(-) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index a0beecfb9e..a5f7e8ee5c 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -46,45 +46,6 @@ "| Coiled | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[coiled]'` |" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initializing a SparkSession\n", - "\n", - "Here we will initialize a SparkSession. I'm also setting the `pyarrow` execution config, because it makes our methods even more performant. \n", - "\n", - ">**IMPORTANT**: Make sure you have Spark 3.0+ available in your environment, as our implementation relies on it for a smoother integration" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "from pyspark.sql import SparkSession" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "spark = SparkSession.builder.appName('whylogs-testing').getOrCreate()\n", - "arrow_config_key = \"spark.sql.execution.arrow.pyspark.enabled\"\n", - "spark.conf.set(arrow_config_key, \"true\")" - ] - }, { "cell_type": "markdown", "metadata": {}, From 2ca2c8512c2ddbbb1c389f83812e43add41a1d83 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 21:43:19 +0000 Subject: [PATCH 06/33] update docs --- python/examples/integrations/Fugue_Profiling.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index a5f7e8ee5c..cd5d9851cf 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -568,7 +568,7 @@ ], "source": [ "spark_df = spark.createDataFrame(tdf)\n", - "profile(tdf, engine=spark)" + "profile(spark_df, engine=spark)" ] }, { From e13cd271fdfb30aa0d983872021d155f031af776 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 22:00:51 +0000 Subject: [PATCH 07/33] update --- .../integrations/Fugue_Profiling.ipynb | 341 ++++++++++++++++++ 1 file changed, 341 insertions(+) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index cd5d9851cf..7bd2045955 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -605,6 +605,347 @@ "profile(\"/tmp/test.parquet\", engine=spark)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is very similar to profile datasets or files using other backends, there will be detailed guides in the later sections.\n", + "\n", + "## Profiling on logical partitions\n", + "\n", + "If we want to profile `tdf` grouped by columns `a` and `b`" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ab__whylogs_df_profile_view
01ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xbe\\xc9\\x94\\xb50...
11bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf4\\xbe\\xc9\\x94\\xb50...
22ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\x87\\xbf\\xc9\\x94\\xb50...
32bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9b\\xbf\\xc9\\x94\\xb50...
43ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xaa\\xbf\\xc9\\x94\\xb50...
53bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb8\\xbf\\xc9\\x94\\xb50...
\n", + "
" + ], + "text/plain": [ + " a b __whylogs_df_profile_view\n", + "0 1 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xbe\\xc9\\x94\\xb50...\n", + "1 1 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf4\\xbe\\xc9\\x94\\xb50...\n", + "2 2 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x87\\xbf\\xc9\\x94\\xb50...\n", + "3 2 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9b\\xbf\\xc9\\x94\\xb50...\n", + "4 3 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xaa\\xbf\\xc9\\x94\\xb50...\n", + "5 3 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb8\\xbf\\xc9\\x94\\xb50..." + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "profile(tdf, partition={\"by\":[\"a\",\"b\"]})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also control the output profile field:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abx
01ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb5\\xfe\\xce\\x94\\xb50...
11bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc5\\xfe\\xce\\x94\\xb50...
22ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xfe\\xce\\x94\\xb50...
32bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe5\\xfe\\xce\\x94\\xb50...
43ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf7\\xfe\\xce\\x94\\xb50...
53bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\x86\\xff\\xce\\x94\\xb50...
\n", + "
" + ], + "text/plain": [ + " a b x\n", + "0 1 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb5\\xfe\\xce\\x94\\xb50...\n", + "1 1 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc5\\xfe\\xce\\x94\\xb50...\n", + "2 2 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xfe\\xce\\x94\\xb50...\n", + "3 2 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe5\\xfe\\xce\\x94\\xb50...\n", + "4 3 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf7\\xfe\\xce\\x94\\xb50...\n", + "5 3 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x86\\xff\\xce\\x94\\xb50..." + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res = profile(tdf, partition={\"by\":[\"a\",\"b\"]}, profile_field=\"x\")\n", + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is how to retrieve the views:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 \\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\xc0']\n", + "Bad pipe message: %s [b'\\x05\\x005\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x00']\n", + "Bad pipe message: %s [b'\\x0e\\xc0\\x04\\x00/\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00\\x96\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\x00\\xff\\x02\\x01\\x00\\x00C\\x00\\x00\\x00\\x0e\\x00\\x0c\\x00\\x00\\t12']\n", + "Bad pipe message: %s [b'0.0.1\\x00\\x0b\\x00\\x04\\x03\\x00\\x01\\x02\\x00\\n\\x00\\x1c\\x00\\x1a\\x00\\x17\\x00\\x19\\x00\\x1c\\x00\\x1b\\x00\\x18\\x00\\x1a\\x00\\x16\\x00\\x0e\\x00\\r\\x00\\x0b\\x00\\x0c\\x00\\t\\x00\\n\\x00#\\x00\\x00\\x00\\x0f\\x00\\x01\\x01']\n", + "Bad pipe message: %s [b'z\\xbeQ\\r\\xbd2\\xf3\\x04\\xc4w\\x0c\\n\\xb8\\x1a\\xd1LK\\x89\\x00\\x00\\xa2\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00:\\x00\\x89\\xc0\\x0f\\xc0\\x05\\x005\\x00\\x84\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x000\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E']\n", + "Bad pipe message: %s [b'\\x18\\xef\\xe3n\\xc1Y\\xe1\\xdaC\\x8f\\x8c\\xbe\\x1a\\x96f\\xfe\\xaa\\xca\\x00\\x00\\xa2\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00:\\x00\\x89\\xc0\\x0f\\xc0\\x05\\x005\\x00\\x84\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x00', b'\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E\\x00D\\x00C\\x00B\\xc0\\x18\\x004\\x00\\x9b\\x00F\\xc0\\x0e\\xc0\\x04\\x00/\\x00\\x96\\x00A\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x16\\x00\\x18\\xc0\\x0c\\xc0\\x02']\n", + "Bad pipe message: %s [b'\\xea \\x18\\xa6!\\x86\\xf9\\x11\\xd9\\xad\\xa6\\x15\\x98\\xc6\\xd2&\\x8b\\\\\\x00\\x00\\xa2\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00:\\x00\\x89\\xc0\\x0f\\xc0\\x05\\x005\\x00\\x84\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x000\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E\\x00D\\x00C\\x00B\\xc0\\x18\\x004\\x00\\x9b\\x00F\\xc0\\x0e\\xc0\\x04\\x00/\\x00\\x96\\x00A\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x16\\x00\\x18\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\xc0\\x12\\xc0\\x08\\x00\\x16\\x00\\x13\\x00\\x10\\x00', b'\\x17\\x00\\x1b\\xc0\\r\\xc0\\x03\\x00\\n\\x00\\x15\\x00']\n", + "Bad pipe message: %s [b'\\x0f\\x00\\x0c\\x00\\x1a\\x00\\t\\x00\\x14\\x00\\x11\\x00\\x19\\x00\\x08\\x00\\x06']\n", + "Bad pipe message: %s [b'\\x8eV\\xa131\\xd3\\x08<', b\"\\xecA\\xe5\\x92\\xbe_\\x07\\xb2\\x00\\x00\\x86\\xc00\\xc0,\\xc0(\\xc0$\\xc0\\x14\\xc0\\n\\x00\\xa5\\x00\\xa3\\x00\\xa1\\x00\\x9f\\x00k\\x00j\\x00i\\x00h\\x009\\x008\\x007\\x006\\xc02\\xc0.\\xc0*\\xc0&\\xc0\\x0f\\xc0\\x05\\x00\\x9d\\x00=\\x005\\xc0/\\xc0+\\xc0'\\xc0#\\xc0\\x13\\xc0\\t\\x00\\xa4\\x00\\xa2\\x00\\xa0\\x00\\x9e\\x00g\\x00@\\x00?\\x00>\\x003\\x002\\x001\\x000\\xc01\\xc0-\\xc0)\\xc0%\\xc0\\x0e\\xc0\\x04\\x00\\x9c\\x00<\\x00/\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00\\x96\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\x00\\xff\\x02\\x01\\x00\\x00g\\x00\\x00\\x00\\x0e\\x00\\x0c\\x00\\x00\\t127.0.0.1\\x00\\x0b\\x00\\x04\\x03\\x00\\x01\\x02\\x00\\n\\x00\\x1c\\x00\\x1a\\x00\\x17\\x00\\x19\\x00\\x1c\\x00\\x1b\\x00\\x18\\x00\\x1a\\x00\\x16\\x00\\x0e\\x00\", b'\\x0b\\x00\\x0c\\x00\\t\\x00\\n\\x00#\\x00\\x00\\x00']\n", + "Bad pipe message: %s [b' \\x00\\x1e\\x06\\x01\\x06\\x02\\x06\\x03\\x05\\x01\\x05']\n", + "Bad pipe message: %s [b'\\x03', b'\\x04\\x02\\x04', b'\\x01\\x03', b'\\x03', b'\\x02', b'\\x03']\n", + "Bad pipe message: %s [b'\\xac`\\xc2\\xbc\\xd4Zg2n\\xa8\\xcev\\xacy\\xaa#Q\\xb0\\x00\\x00\\xf4\\xc00\\xc0,\\xc0(\\xc0$\\xc0\\x14\\xc0\\n\\x00\\xa5\\x00\\xa3\\x00\\xa1\\x00\\x9f\\x00k\\x00j\\x00i\\x00h\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00\\xa7\\x00m\\x00:\\x00\\x89\\xc02\\xc0.\\xc0*\\xc0&\\xc0\\x0f\\xc0\\x05\\x00\\x9d\\x00=\\x005\\x00\\x84\\xc0/\\xc0', b\"'\\xc0#\\xc0\\x13\\xc0\\t\\x00\\xa4\\x00\\xa2\\x00\\xa0\\x00\\x9e\\x00g\\x00@\\x00?\\x00>\\x003\\x002\\x001\\x000\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E\\x00\"]\n", + "Bad pipe message: %s [b'C\\x00B\\xc0\\x18\\x00\\xa6\\x00l\\x004\\x00\\x9b\\x00F\\xc01\\xc0-\\xc0)\\xc0%\\xc0\\x0e\\xc0\\x04\\x00\\x9c\\x00<\\x00/\\x00\\x96\\x00A\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x16\\x00\\x18\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\xc0\\x12\\xc0\\x08\\x00\\x16\\x00\\x13\\x00\\x10\\x00\\r']\n" + ] + } + ], + "source": [ + "from whylogs import DatasetProfileView\n", + "\n", + "res.x.apply(DatasetProfileView.deserialize)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you profile a large number of partitions using a distributed backend and don't want to collect them on a local machine, you can keep the output as the native distributed dataframe, for example:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DataFrame[a: bigint, b: string, __whylogs_df_profile_view: binary]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "profile(tdf, partition={\"by\":[\"a\",\"b\"]}, engine=spark, as_local=False) # returns a native pyspark dataframe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may also directly save the output to a file distributedly:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "'/tmp/output2.parquet'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "profile(tdf, partition={\"by\":[\"a\",\"b\"]}, save_path=\"/tmp/output1.parquet\", engine=spark)\n", + "profile(\"/tmp/test.parquet\", partition={\"by\":[\"a\",\"b\"]}, save_path=\"/tmp/output2.parquet\", engine=spark)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/tmp/output1.parquet:\n", + "_SUCCESS part-00000-5ef29b52-3cc8-4190-90c8-4e0042f0a75b-c000.snappy.parquet\n", + "\n", + "/tmp/output2.parquet:\n", + "_SUCCESS part-00000-d4168e83-93dd-4a1e-9144-2303524c5e9f-c000.snappy.parquet\n" + ] + } + ], + "source": [ + "!ls /tmp/output*.parquet" + ] + }, { "cell_type": "markdown", "metadata": {}, From 1cdd0bb224e04663e9afdbeef5c53e182a1f2a6e Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 22:21:56 +0000 Subject: [PATCH 08/33] update --- .../integrations/Fugue_Profiling.ipynb | 218 ++++++++++++++++-- 1 file changed, 196 insertions(+), 22 deletions(-) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index 7bd2045955..078557b5b9 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -20,7 +20,18 @@ "source": [ "## Installing the extra dependency\n", "\n", - "As we want to enable users to have exactly what they need to use from whylogs, the `pyspark` integration comes as an extra dependency. In order to have it available, simply uncomment and run the following cell:" + "As we want to enable users to have exactly what they need to use from whylogs, the `pyspark` integration comes as an extra dependency. In order to have it available, install according to the following table:\n", + "\n", + "| Run Whylogs on ... | Installation Command |\n", + "|:---|:---|\n", + "| Any Spark cluster (including Databricks Notebooks) | `pip install 'whylogs[fugue]' 'fugue[spark]'` |\n", + "| Databricks (remote access) | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[databricks]'` |\n", + "| Any Ray cluster (including Anyscale Notebooks) | `pip install 'whylogs[fugue]' 'fugue[ray]'` |\n", + "| Anyscale (remote access) | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[anyscale]'` |\n", + "| Any Dask cluster | `pip install 'whylogs[fugue]' 'fugue[dask]'` |\n", + "| Coiled | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[coiled]'` |\n", + "\n", + "For example, in this notebook we are using a local Spark cluster, so we should:" ] }, { @@ -36,21 +47,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "| Run Whylogs on ... | Installation Command |\n", - "|:---|:---|\n", - "| Any Spark cluster (including Databricks Notebooks) | `pip install 'whylogs[fugue]' 'fugue[spark]'` |\n", - "| Databricks (remote access) | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[databricks]'` |\n", - "| Any Ray cluster (including Anyscale Notebooks) | `pip install 'whylogs[fugue]' 'fugue[ray]'` |\n", - "| Anyscale (remote access) | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[anyscale]'` |\n", - "| Any Dask cluster | `pip install 'whylogs[fugue]' 'fugue[dask]'` |\n", - "| Coiled | `pip install 'whylogs[fugue]' 'fugue-cloudprovider[coiled]'` |" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following environment variable should NOT need to be set in your environment." + "The following environment variable should NOT need to be set in your own environment." ] }, { @@ -471,7 +468,184 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now assuming you want to use Spark to profile the dataset distributedly and assuming this is how you get a SparkSession:" + "We can select the columns for profiling" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cardinality/estcardinality/lower_1cardinality/upper_1counts/ncounts/nulldistribution/maxdistribution/meandistribution/mediandistribution/mindistribution/n...distribution/q_95distribution/q_99distribution/stddevtypetypes/booleantypes/fractionaltypes/integraltypes/objecttypes/stringfrequent_items/frequent_strings
column
c100.000025100.0100.00501810000.9923960.4999290.4878380.000055100...0.9702370.9923960.294085SummaryType.COLUMN0100000NaN
d2.0000002.02.0001001000NaN0.000000NaNNaN0...NaNNaN0.000000SummaryType.COLUMN0000100[FrequentItem(value='xy', est=53, upper=53, lo...
\n", + "

2 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " cardinality/est cardinality/lower_1 cardinality/upper_1 counts/n \\\n", + "column \n", + "c 100.000025 100.0 100.005018 100 \n", + "d 2.000000 2.0 2.000100 100 \n", + "\n", + " counts/null distribution/max distribution/mean distribution/median \\\n", + "column \n", + "c 0 0.992396 0.499929 0.487838 \n", + "d 0 NaN 0.000000 NaN \n", + "\n", + " distribution/min distribution/n ... distribution/q_95 \\\n", + "column ... \n", + "c 0.000055 100 ... 0.970237 \n", + "d NaN 0 ... NaN \n", + "\n", + " distribution/q_99 distribution/stddev type \\\n", + "column \n", + "c 0.992396 0.294085 SummaryType.COLUMN \n", + "d NaN 0.000000 SummaryType.COLUMN \n", + "\n", + " types/boolean types/fractional types/integral types/object \\\n", + "column \n", + "c 0 100 0 0 \n", + "d 0 0 0 0 \n", + "\n", + " types/string frequent_items/frequent_strings \n", + "column \n", + "c 0 NaN \n", + "d 100 [FrequentItem(value='xy', est=53, upper=53, lo... \n", + "\n", + "[2 rows x 26 columns]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "profile(tdf, profile_cols=[\"c\",\"d\"]).to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now assuming we want to use Spark to profile the dataset distributedly and assuming this is how we get a SparkSession:" ] }, { @@ -513,7 +687,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If you want to profile the pandas df on Spark:" + "If we want to profile the pandas df on Spark:" ] }, { @@ -547,7 +721,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If you want to profile a SparkDataFrame:" + "If we want to profile a SparkDataFrame:" ] }, { @@ -575,7 +749,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can also directly profile a parquet file or a folder of parquet files locally or on the cloud (the file will be loaded distributedly):" + "We can also directly profile a parquet file or a folder of parquet files locally or on the cloud (the file will be loaded distributedly):" ] }, { @@ -867,7 +1041,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "When you profile a large number of partitions using a distributed backend and don't want to collect them on a local machine, you can keep the output as the native distributed dataframe, for example:" + "When we profile a large number of partitions using a distributed backend and don't want to collect them on a local machine, we can keep the output as the native distributed dataframe, for example:" ] }, { @@ -894,7 +1068,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You may also directly save the output to a file distributedly:" + "We may also directly save the output to a file distributedly:" ] }, { From eb8f95cd7d89c2aa7f99d707154ab69e3d31128a Mon Sep 17 00:00:00 2001 From: Jamie Broomall <88007022+jamie256@users.noreply.github.com> Date: Mon, 19 Sep 2022 13:20:35 -0700 Subject: [PATCH 09/33] typing-extensions dependency entry update (#845) --- python/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/pyproject.toml b/python/pyproject.toml index b5d1caa06e..dfecd2670a 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -15,7 +15,7 @@ python = ">=3.7.1, <4" whylogs-sketching = ">=3.4.1.dev3" protobuf = ">=3.15.5" importlib-metadata = { version = ">=0.23", python = "<3.8" } -# typing-extensions = ">=typing-extensions" +typing-extensions = {version = ">=3.10", markers = "python_version < \"3.11\""} # viz module. Everything after this should be optional pybars3 = { version = "^0.9", optional = true } From 82c1461b1fcafca2c5226f2cdd64538897b4d6fa Mon Sep 17 00:00:00 2001 From: Jamie Broomall <88007022+jamie256@users.noreply.github.com> Date: Mon, 19 Sep 2022 15:49:38 -0700 Subject: [PATCH 10/33] Fix multi-column segment key translation (#848) --- python/tests/api/logger/test_segments.py | 31 ++++++++++++++++++++++++ python/whylogs/migration/converters.py | 14 +++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/python/tests/api/logger/test_segments.py b/python/tests/api/logger/test_segments.py index b9a76afed3..6be7669f3a 100644 --- a/python/tests/api/logger/test_segments.py +++ b/python/tests/api/logger/test_segments.py @@ -250,3 +250,34 @@ def test_multi_column_segment() -> None: count = segment_distribution.n assert count is not None assert count == 1 + + +def test_multi_column_segment_serialization_roundtrip(tmp_path: Any) -> None: + input_rows = 35 + d = { + "A": [i % 7 for i in range(input_rows)], + "B": [f"x{str(i%5)}" for i in range(input_rows)], + } + + df = pd.DataFrame(data=d) + segmentation_partition = SegmentationPartition(name="A,B", mapper=ColumnMapperFunction(col_names=["A", "B"])) + test_segments = {segmentation_partition.name: segmentation_partition} + results: SegmentedResultSet = why.log(df, schema=DatasetSchema(segments=test_segments)) + results.writer().option(base_dir=tmp_path).write() + + paths = glob(os.path.join(tmp_path) + "/*.bin") + assert len(paths) == input_rows + roundtrip_profiles = [] + for file_path in paths: + roundtrip_profiles.append(read_v0_to_view(file_path)) + assert len(roundtrip_profiles) == input_rows + print(roundtrip_profiles) + print(roundtrip_profiles[15]) + + post_deserialization_view = roundtrip_profiles[15] + assert post_deserialization_view is not None + assert isinstance(post_deserialization_view, DatasetProfileView) + + post_columns = post_deserialization_view.get_columns() + assert "A" in post_columns.keys() + assert "B" in post_columns.keys() diff --git a/python/whylogs/migration/converters.py b/python/whylogs/migration/converters.py index d36e0b7cb1..8d15e70aa1 100644 --- a/python/whylogs/migration/converters.py +++ b/python/whylogs/migration/converters.py @@ -76,8 +76,8 @@ def _generate_segment_tags_metadata( segment_tags = [] col_names = partition.mapper.col_names - index = 0 - for column_name in col_names: + + for index, column_name in enumerate(col_names): segment_tags.append(SegmentTag(key=_TAG_PREFIX + column_name, value=segment.key[index])) else: raise NotImplementedError( @@ -138,6 +138,11 @@ def v0_to_v1_view(msg: DatasetProfileMessageV0) -> DatasetProfileView: } ) + if msg.properties.tags: + logger.info( + f"Found tags in v0 message, ignoring while converting to v1 DatasetProfileView: {msg.properties.tags}" + ) + return DatasetProfileView( columns=columns, dataset_timestamp=dataset_timestamp, creation_timestamp=creation_timestamp ) @@ -225,10 +230,15 @@ def _extract_dist_metric(msg: ColumnMessageV0) -> DistributionMetric: kll_bytes = msg.numbers.histogram floats_sk = None doubles_sk: Optional[ds.kll_doubles_sketch] = None + # If this is a V1 serialized message it will be a double kll sketch. try: floats_sk = ds.kll_floats_sketch.deserialize(kll_bytes) except ValueError as e: logger.info(f"kll encountered old format which threw exception: {e}, attempting kll_doubles deserialization.") + except RuntimeError as e: + logger.warning( + f"kll encountered runtime error in old format which threw exception: {e}, attempting kll_doubles deserialization." + ) if floats_sk is None: doubles_sk = ds.kll_doubles_sketch.deserialize(kll_bytes) else: From 8c3dd0b76a0ae9d9ab71a7b48163aab68d70c36d Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 02:25:05 +0000 Subject: [PATCH 11/33] merge --- python/pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/pyproject.toml b/python/pyproject.toml index dfecd2670a..238d080a7c 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -121,6 +121,9 @@ fugue = [ "fugue" ] +[tool.poetry.group.dev.dependencies] +fugue = "^0.7.2" + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" From f5cbdd7a60ac4d8f05333f89c1bf948714a27e5d Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 02:28:17 +0000 Subject: [PATCH 12/33] update --- python/poetry.lock | 24 ++++++++++++------------ python/pyproject.toml | 3 ++- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/python/poetry.lock b/python/poetry.lock index b470614eab..19ba69b678 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -11,7 +11,7 @@ name = "adagio" version = "0.2.4" description = "The Dag IO Framework for Fugue projects" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -41,7 +41,7 @@ name = "antlr4-python3-runtime" version = "4.11.1" description = "ANTLR 4.11.1 runtime for Python 3" category = "main" -optional = false +optional = true python-versions = "*" [[package]] @@ -49,7 +49,7 @@ name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" -optional = false +optional = true python-versions = "*" [[package]] @@ -437,7 +437,7 @@ name = "fs" version = "2.4.16" description = "Python's filesystem abstraction layer" category = "main" -optional = false +optional = true python-versions = "*" [package.dependencies] @@ -453,7 +453,7 @@ name = "fugue" version = "0.7.2" description = "An abstraction layer for distributed computation" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -481,7 +481,7 @@ name = "fugue-sql-antlr" version = "0.1.1" description = "Fugue SQL Antlr Parser" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -535,7 +535,7 @@ name = "greenlet" version = "1.1.3" description = "Lightweight in-process concurrent programming" category = "main" -optional = false +optional = true python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" [package.extras] @@ -1449,7 +1449,7 @@ name = "pyarrow" version = "8.0.0" description = "Python library for Apache Arrow" category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.dependencies] @@ -1670,7 +1670,7 @@ name = "qpd" version = "0.3.3" description = "Query Pandas Using SQL" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -2054,7 +2054,7 @@ name = "SQLAlchemy" version = "1.4.41" description = "Database Abstraction Library" category = "main" -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" [package.dependencies] @@ -2192,7 +2192,7 @@ name = "triad" version = "0.6.8" description = "A collection of python utils for Fugue projects" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -2384,7 +2384,7 @@ whylabs = ["whylabs-client"] [metadata] lock-version = "1.1" python-versions = ">=3.7.1, <4" -content-hash = "ab0c855c6f8323e3773ae145ad8bb70b05a7d9947f7524e78e6ea6b17f3e4ba7" +content-hash = "072dde0fd1268b63d4b9636ef088449f9e2c266dc4cc74b9d8af37247c5d9bee" [metadata.files] 2to3 = [ diff --git a/python/pyproject.toml b/python/pyproject.toml index 238d080a7c..04498ebf10 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -118,7 +118,8 @@ image = [ "Pillow" ] fugue = [ - "fugue" + "fugue", + "setuptools" ] [tool.poetry.group.dev.dependencies] From 6a218a09c2a67d69ce529c4ecc701ba5ef508b0d Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 02:33:16 +0000 Subject: [PATCH 13/33] update --- python/pyproject.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/python/pyproject.toml b/python/pyproject.toml index 04498ebf10..353eafd0f0 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -122,9 +122,6 @@ fugue = [ "setuptools" ] -[tool.poetry.group.dev.dependencies] -fugue = "^0.7.2" - [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" From 7f9356b42146a2e4cff0a69e9cb6c873298ac44a Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 02:50:47 +0000 Subject: [PATCH 14/33] update --- python/tests/api/fugue/test_profiler.py | 10 +++++----- python/whylogs/api/fugue/__init__.py | 2 +- python/whylogs/api/fugue/profiler.py | 26 +++++++++++++------------ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/python/tests/api/fugue/test_profiler.py b/python/tests/api/fugue/test_profiler.py index 7edbbec168..66066fa25b 100644 --- a/python/tests/api/fugue/test_profiler.py +++ b/python/tests/api/fugue/test_profiler.py @@ -4,7 +4,7 @@ import pandas as pd import pytest -from whylogs.api.fugue import profile +from whylogs.api.fugue import fugue_profile from whylogs.core.view.dataset_profile_view import DatasetProfileView @@ -26,7 +26,7 @@ def test_no_partition(_test_df): for engine in [None, "spark"]: t1 = datetime(2020, 1, 1) t2 = datetime(2020, 1, 2) - v = profile(_test_df, dataset_timestamp=t1, creation_timestamp=t2, engine=engine) + v = fugue_profile(_test_df, dataset_timestamp=t1, creation_timestamp=t2, engine=engine) assert isinstance(v, DatasetProfileView) pf = v.to_pandas() @@ -35,7 +35,7 @@ def test_no_partition(_test_df): assert v.dataset_timestamp == t1 assert v.creation_timestamp == t2 - pf = profile(_test_df, profile_cols=["b", "c"], engine=engine).to_pandas() + pf = fugue_profile(_test_df, profile_cols=["b", "c"], engine=engine).to_pandas() assert len(pf) == 2 assert pf["counts/n"].tolist() == [100, 100] assert set(pf.index) == set(["b", "c"]) @@ -43,7 +43,7 @@ def test_no_partition(_test_df): def test_with_partition(_test_df): for engine in [None, "spark"]: - df = profile(_test_df, partition={"by": ["a", "b"]}, profile_field="x", engine=engine) + df = fugue_profile(_test_df, partition={"by": ["a", "b"]}, profile_field="x", engine=engine) # get counts of each group df["ct"] = df.x.apply(lambda x: DatasetProfileView.deserialize(x).to_pandas()["counts/n"].iloc[0]) # get counts of profiled cols of each group should always be 4 @@ -56,6 +56,6 @@ def test_with_partition(_test_df): assert all(df.ct == df.ct_true) assert all(df.pct == 4) - df = profile(_test_df, partition={"by": ["a", "b"]}, profile_cols=["b", "c"], profile_field="x", engine=engine) + df = fugue_profile(_test_df, partition={"by": ["a", "b"]}, profile_cols=["b", "c"], profile_field="x", engine=engine) df["pct"] = df.x.apply(lambda x: len(DatasetProfileView.deserialize(x).to_pandas())) assert all(df.pct == 2) diff --git a/python/whylogs/api/fugue/__init__.py b/python/whylogs/api/fugue/__init__.py index 38fe0fbc26..791dd1161f 100644 --- a/python/whylogs/api/fugue/__init__.py +++ b/python/whylogs/api/fugue/__init__.py @@ -1,2 +1,2 @@ # flake8: noqa -from .profiler import profile +from .profiler import fugue_profile diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py index e25ca02575..dfc0f62b83 100644 --- a/python/whylogs/api/fugue/profiler.py +++ b/python/whylogs/api/fugue/profiler.py @@ -9,13 +9,13 @@ from whylogs.core.view.column_profile_view import ColumnProfileView from whylogs.core.view.dataset_profile_view import DatasetProfileView -COL_NAME_FIELD = "__whylogs_fugue_col_name" -COL_PROFILE_FIELD = "__whylogs_fugue_col_profile" -COL_PROFILE_SCHEMA = Schema([(COL_NAME_FIELD, str), (COL_PROFILE_FIELD, bytes)]) +_COL_NAME_FIELD = "__whylogs_fugue_col_name" +_COL_PROFILE_FIELD = "__whylogs_fugue_col_profile" +_COL_PROFILE_SCHEMA = Schema([(_COL_NAME_FIELD, str), (_COL_PROFILE_FIELD, bytes)]) DF_PROFILE_FIELD = "__whylogs_df_profile_view" -class _Profiler: +class _FugueProfiler: def __init__( self, partition, @@ -38,17 +38,19 @@ def __init__( def to_col_profiles(self, df: pd.DataFrame) -> Iterable[Dict[str, Any]]: res = why.log(df[self._cols] if self._cols is not None else df) for col_name, col_profile in res.view().get_columns().items(): - yield {COL_NAME_FIELD: col_name, COL_PROFILE_FIELD: col_profile.serialize()} + yield {_COL_NAME_FIELD: col_name, _COL_PROFILE_FIELD: col_profile.serialize()} def merge_col_profiles(self, df: pd.DataFrame) -> pd.DataFrame: merged_profile: ColumnProfileView = reduce( - lambda acc, x: acc.merge(x), df[COL_PROFILE_FIELD].apply(ColumnProfileView.deserialize) + lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(ColumnProfileView.deserialize) ) - return df.head(1).assign(**{COL_PROFILE_FIELD: merged_profile.serialize()}) + return df.head(1).assign(**{_COL_PROFILE_FIELD: merged_profile.serialize()}) def merge_to_view(self, col_profiles: List[Dict[str, Any]]) -> Iterable[Dict[str, Any]]: profile_view = DatasetProfileView( - columns={row[COL_NAME_FIELD]: ColumnProfileView.from_bytes(row[COL_PROFILE_FIELD]) for row in col_profiles}, + columns={ + row[_COL_NAME_FIELD]: ColumnProfileView.from_bytes(row[_COL_PROFILE_FIELD]) for row in col_profiles + }, dataset_timestamp=self._dataset_timestamp, creation_timestamp=self._creation_timestamp, ) @@ -59,9 +61,9 @@ def transform_no_logical_partition(self, df: Any, **kwargs: Any) -> DatasetProfi input_df = dag.load(df) if isinstance(df, str) else dag.df(df) cols = input_df.partition(self._partition).transform( self.to_col_profiles, - schema=[(COL_NAME_FIELD, str), (COL_PROFILE_FIELD, bytes)], + schema=[(_COL_NAME_FIELD, str), (_COL_PROFILE_FIELD, bytes)], ) - merged_cols = cols.partition_by(COL_NAME_FIELD).transform(self.merge_col_profiles, schema="*") + merged_cols = cols.partition_by(_COL_NAME_FIELD).transform(self.merge_col_profiles, schema="*") result = merged_cols.process(self.merge_to_view, schema=self._profile_schema) result.yield_dataframe_as("result", as_local=True) return DatasetProfileView.deserialize(dag.run(**kwargs)["result"].as_array()[0][0]) @@ -79,7 +81,7 @@ def transform_with_logical_partition(self, df: Any, **kwargs: Any) -> Any: ) -def profile( +def fugue_profile( df: Any, dataset_timestamp: Optional[datetime] = None, creation_timestamp: Optional[datetime] = None, @@ -89,7 +91,7 @@ def profile( profile_field: str = DF_PROFILE_FIELD, **kwargs, ) -> Any: - profiler = _Profiler( + profiler = _FugueProfiler( partition, profile_cols, dataset_timestamp=dataset_timestamp, From c413c5d8dfe9aeaf856eadde6a2a70ec3c8f23b3 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 03:16:44 +0000 Subject: [PATCH 15/33] lint --- python/tests/api/fugue/test_profiler.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/tests/api/fugue/test_profiler.py b/python/tests/api/fugue/test_profiler.py index 66066fa25b..c7b4001dda 100644 --- a/python/tests/api/fugue/test_profiler.py +++ b/python/tests/api/fugue/test_profiler.py @@ -56,6 +56,8 @@ def test_with_partition(_test_df): assert all(df.ct == df.ct_true) assert all(df.pct == 4) - df = fugue_profile(_test_df, partition={"by": ["a", "b"]}, profile_cols=["b", "c"], profile_field="x", engine=engine) + df = fugue_profile( + _test_df, partition={"by": ["a", "b"]}, profile_cols=["b", "c"], profile_field="x", engine=engine + ) df["pct"] = df.x.apply(lambda x: len(DatasetProfileView.deserialize(x).to_pandas())) assert all(df.pct == 2) From 795a960d3f87474660857b1d06b7f5f87fb24eac Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 03:22:48 +0000 Subject: [PATCH 16/33] fix poetry bug --- .github/workflows/whylogs-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/whylogs-ci.yml b/.github/workflows/whylogs-ci.yml index a7cb25f137..cdfcae8aaf 100644 --- a/.github/workflows/whylogs-ci.yml +++ b/.github/workflows/whylogs-ci.yml @@ -86,7 +86,10 @@ jobs: run: make pre-commit - name: Run build, style, and lint checks - run: make release + run: | + source verify/bin/activate + pip install --upgrade pip setuptools + make release - name: Smoke test wheel in client environment run: | From b791fa2017d3ffcb2b270336995f18ffddc0f0c4 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 03:28:34 +0000 Subject: [PATCH 17/33] update --- .github/workflows/whylogs-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/whylogs-ci.yml b/.github/workflows/whylogs-ci.yml index cdfcae8aaf..ec6366d265 100644 --- a/.github/workflows/whylogs-ci.yml +++ b/.github/workflows/whylogs-ci.yml @@ -87,7 +87,6 @@ jobs: - name: Run build, style, and lint checks run: | - source verify/bin/activate pip install --upgrade pip setuptools make release From f46af163e9b963df3bec21ca3f2b5f770acd5e30 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 03:48:55 +0000 Subject: [PATCH 18/33] update --- .github/workflows/whylogs-ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/whylogs-ci.yml b/.github/workflows/whylogs-ci.yml index ec6366d265..2ec4ea3582 100644 --- a/.github/workflows/whylogs-ci.yml +++ b/.github/workflows/whylogs-ci.yml @@ -13,7 +13,7 @@ defaults: env: CODECOV_UPLOAD: false - POETRY_VERSION: "1.1.11" + POETRY_VERSION: "1.2.1" PROTOC_VERSION: "3.19.4" PYPI_PUBLISH: false HEAP_APPID_DEV: "3422045963" @@ -86,9 +86,7 @@ jobs: run: make pre-commit - name: Run build, style, and lint checks - run: | - pip install --upgrade pip setuptools - make release + run: make release - name: Smoke test wheel in client environment run: | From 7fb50f9eb5e6122684bf8a7c1d9d74612dd62732 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 04:13:42 +0000 Subject: [PATCH 19/33] update --- python/whylogs/api/fugue/profiler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py index dfc0f62b83..6f8bbd2260 100644 --- a/python/whylogs/api/fugue/profiler.py +++ b/python/whylogs/api/fugue/profiler.py @@ -38,7 +38,7 @@ def __init__( def to_col_profiles(self, df: pd.DataFrame) -> Iterable[Dict[str, Any]]: res = why.log(df[self._cols] if self._cols is not None else df) for col_name, col_profile in res.view().get_columns().items(): - yield {_COL_NAME_FIELD: col_name, _COL_PROFILE_FIELD: col_profile.serialize()} + yield {_COL_NAME_FIELD: col_name, _COL_PROFILE_FIELD: bytes(col_profile.serialize())} def merge_col_profiles(self, df: pd.DataFrame) -> pd.DataFrame: merged_profile: ColumnProfileView = reduce( From 3739070dfe511f1390fe7382566781081e9d133e Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 04:22:10 +0000 Subject: [PATCH 20/33] fix --- python/whylogs/api/fugue/profiler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py index 6f8bbd2260..d96f06591f 100644 --- a/python/whylogs/api/fugue/profiler.py +++ b/python/whylogs/api/fugue/profiler.py @@ -38,11 +38,11 @@ def __init__( def to_col_profiles(self, df: pd.DataFrame) -> Iterable[Dict[str, Any]]: res = why.log(df[self._cols] if self._cols is not None else df) for col_name, col_profile in res.view().get_columns().items(): - yield {_COL_NAME_FIELD: col_name, _COL_PROFILE_FIELD: bytes(col_profile.serialize())} + yield {_COL_NAME_FIELD: col_name, _COL_PROFILE_FIELD: col_profile.serialize()} def merge_col_profiles(self, df: pd.DataFrame) -> pd.DataFrame: merged_profile: ColumnProfileView = reduce( - lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(ColumnProfileView.deserialize) + lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(lambda x: ColumnProfileView.deserialize(bytes(x))) ) return df.head(1).assign(**{_COL_PROFILE_FIELD: merged_profile.serialize()}) From 9f850bbc4e733acf2298b688f686b1b98e7418e1 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 04:35:26 +0000 Subject: [PATCH 21/33] update --- .../integrations/Fugue_Profiling.ipynb | 186 +++++++++--------- .../experimental/test_profiler_function.py | 2 +- python/whylogs/api/fugue/profiler.py | 2 +- .../whylogs/core/view/column_profile_view.py | 2 +- 4 files changed, 93 insertions(+), 99 deletions(-) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index 078557b5b9..37675b1450 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -70,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -200,7 +200,7 @@ "[100 rows x 4 columns]" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -459,9 +459,9 @@ } ], "source": [ - "from whylogs.api.fugue import profile\n", + "from whylogs.api.fugue import fugue_profile\n", "\n", - "profile(tdf).to_pandas()" + "fugue_profile(tdf).to_pandas()" ] }, { @@ -473,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -632,13 +632,13 @@ "[2 rows x 26 columns]" ] }, - "execution_count": 26, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "profile(tdf, profile_cols=[\"c\",\"d\"]).to_pandas()" + "fugue_profile(tdf, profile_cols=[\"c\",\"d\"]).to_pandas()" ] }, { @@ -657,8 +657,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "22/09/18 21:30:50 WARN Utils: Your hostname, codespaces-5144a4 resolves to a loopback address: 127.0.0.1; using 172.16.5.4 instead (on interface eth0)\n", - "22/09/18 21:30:50 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address\n" + "22/09/20 04:33:57 WARN Utils: Your hostname, codespaces-5144a4 resolves to a loopback address: 127.0.0.1; using 172.16.5.4 instead (on interface eth0)\n", + "22/09/20 04:33:57 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address\n" ] }, { @@ -673,7 +673,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "22/09/18 21:30:51 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + "22/09/20 04:33:57 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" ] } ], @@ -705,7 +705,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -714,7 +714,7 @@ } ], "source": [ - "profile(tdf, engine=spark)" + "fugue_profile(tdf, engine=spark)" ] }, { @@ -726,23 +726,37 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Connection error. Skip stats collection.\n" + ] } ], "source": [ "spark_df = spark.createDataFrame(tdf)\n", - "profile(spark_df, engine=spark)" + "fugue_profile(spark_df, engine=spark)" ] }, { @@ -754,7 +768,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -767,16 +781,23 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Connection error. Skip stats collection.\n" + ] } ], "source": [ - "profile(\"/tmp/test.parquet\", engine=spark)" + "fugue_profile(\"/tmp/test.parquet\", engine=spark)" ] }, { @@ -792,7 +813,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -826,37 +847,37 @@ " 0\n", " 1\n", " a\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xbe\\xc9\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xa5\\xc0\\xb3\\xc9\\xb50...\n", " \n", " \n", " 1\n", " 1\n", " b\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf4\\xbe\\xc9\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb4\\xc0\\xb3\\xc9\\xb50...\n", " \n", " \n", " 2\n", " 2\n", " a\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x87\\xbf\\xc9\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc6\\xc0\\xb3\\xc9\\xb50...\n", " \n", " \n", " 3\n", " 2\n", " b\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9b\\xbf\\xc9\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd5\\xc0\\xb3\\xc9\\xb50...\n", " \n", " \n", " 4\n", " 3\n", " a\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xaa\\xbf\\xc9\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe3\\xc0\\xb3\\xc9\\xb50...\n", " \n", " \n", " 5\n", " 3\n", " b\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb8\\xbf\\xc9\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf1\\xc0\\xb3\\xc9\\xb50...\n", " \n", " \n", "\n", @@ -864,21 +885,21 @@ ], "text/plain": [ " a b __whylogs_df_profile_view\n", - "0 1 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xbe\\xc9\\x94\\xb50...\n", - "1 1 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf4\\xbe\\xc9\\x94\\xb50...\n", - "2 2 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x87\\xbf\\xc9\\x94\\xb50...\n", - "3 2 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9b\\xbf\\xc9\\x94\\xb50...\n", - "4 3 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xaa\\xbf\\xc9\\x94\\xb50...\n", - "5 3 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb8\\xbf\\xc9\\x94\\xb50..." + "0 1 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xa5\\xc0\\xb3\\xc9\\xb50...\n", + "1 1 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb4\\xc0\\xb3\\xc9\\xb50...\n", + "2 2 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc6\\xc0\\xb3\\xc9\\xb50...\n", + "3 2 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd5\\xc0\\xb3\\xc9\\xb50...\n", + "4 3 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe3\\xc0\\xb3\\xc9\\xb50...\n", + "5 3 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf1\\xc0\\xb3\\xc9\\xb50..." ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "profile(tdf, partition={\"by\":[\"a\",\"b\"]})" + "fugue_profile(tdf, partition={\"by\":[\"a\",\"b\"]})" ] }, { @@ -890,7 +911,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -924,37 +945,37 @@ " 0\n", " 1\n", " a\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb5\\xfe\\xce\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xed\\xe3\\xb3\\xc9\\xb50...\n", " \n", " \n", " 1\n", " 1\n", " b\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc5\\xfe\\xce\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xfd\\xe3\\xb3\\xc9\\xb50...\n", " \n", " \n", " 2\n", " 2\n", " a\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xfe\\xce\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x8b\\xe4\\xb3\\xc9\\xb50...\n", " \n", " \n", " 3\n", " 2\n", " b\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe5\\xfe\\xce\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9a\\xe4\\xb3\\xc9\\xb50...\n", " \n", " \n", " 4\n", " 3\n", " a\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf7\\xfe\\xce\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xa8\\xe4\\xb3\\xc9\\xb50...\n", " \n", " \n", " 5\n", " 3\n", " b\n", - " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x86\\xff\\xce\\x94\\xb50...\n", + " b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb6\\xe4\\xb3\\xc9\\xb50...\n", " \n", " \n", "\n", @@ -962,21 +983,21 @@ ], "text/plain": [ " a b x\n", - "0 1 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb5\\xfe\\xce\\x94\\xb50...\n", - "1 1 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc5\\xfe\\xce\\x94\\xb50...\n", - "2 2 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd6\\xfe\\xce\\x94\\xb50...\n", - "3 2 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe5\\xfe\\xce\\x94\\xb50...\n", - "4 3 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf7\\xfe\\xce\\x94\\xb50...\n", - "5 3 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x86\\xff\\xce\\x94\\xb50..." + "0 1 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xed\\xe3\\xb3\\xc9\\xb50...\n", + "1 1 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xfd\\xe3\\xb3\\xc9\\xb50...\n", + "2 2 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x8b\\xe4\\xb3\\xc9\\xb50...\n", + "3 2 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9a\\xe4\\xb3\\xc9\\xb50...\n", + "4 3 a b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xa8\\xe4\\xb3\\xc9\\xb50...\n", + "5 3 b b'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb6\\xe4\\xb3\\xc9\\xb50..." ] }, - "execution_count": 14, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "res = profile(tdf, partition={\"by\":[\"a\",\"b\"]}, profile_field=\"x\")\n", + "res = fugue_profile(tdf, partition={\"by\":[\"a\",\"b\"]}, profile_field=\"x\")\n", "res" ] }, @@ -989,7 +1010,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1004,31 +1025,9 @@ "Name: x, dtype: object" ] }, - "execution_count": 21, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Bad pipe message: %s [b\"^\\x10\\x9b\\x9ce\\x08\\x12\\n\\xe5\\xdb\\xcb\\x8f6Q\\x05\\x83_\\xb8\\x00\\x00|\\xc0,\\xc00\\x00\\xa3\\x00\\x9f\\xcc\\xa9\\xcc\\xa8\\xcc\\xaa\\xc0\\xaf\\xc0\\xad\\xc0\\xa3\\xc0\\x9f\\xc0]\\xc0a\\xc0W\\xc0S\\xc0+\\xc0/\\x00\\xa2\\x00\\x9e\\xc0\\xae\\xc0\\xac\\xc0\\xa2\\xc0\\x9e\\xc0\\\\\\xc0`\\xc0V\\xc0R\\xc0$\\xc0(\\x00k\\x00j\\xc0#\\xc0'\\x00g\\x00@\\xc0\\n\\xc0\\x14\\x009\\x008\\xc0\\t\\xc0\\x13\\x003\\x002\\x00\\x9d\\xc0\\xa1\\xc0\\x9d\\xc0Q\\x00\\x9c\\xc0\\xa0\\xc0\\x9c\\xc0P\\x00=\\x00<\\x005\\x00/\\x00\\x9a\\x00\\x99\\xc0\\x07\\xc0\\x11\\x00\\x96\\x00\\x05\\x00\\xff\\x01\\x00\\x00j\\x00\\x00\\x00\\x0e\\x00\\x0c\\x00\\x00\\t127.0.0.1\\x00\\x0b\\x00\\x04\\x03\\x00\\x01\\x02\\x00\\n\\x00\\x0c\\x00\\n\\x00\\x1d\\x00\\x17\\x00\\x1e\\x00\\x19\\x00\\x18\\x00#\\x00\\x00\\x00\\x16\"]\n", - "Bad pipe message: %s [b'\\x04\\xe0\\x03\\x82.\\xc4}Y\\xae<\\xb3\\x8d\\xa0q\\xc4\\x11\\xc4v\\x00\\x00\\xa6\\xc0,\\xc00\\x00\\xa3\\x00']\n", - "Bad pipe message: %s [b\"\\xa9\\xcc\\xa8\\xcc\\xaa\\xc0\\xaf\\xc0\\xad\\xc0\\xa3\\xc0\\x9f\\xc0]\\xc0a\\xc0W\\xc0S\\xc0+\\xc0/\\x00\\xa2\\x00\\x9e\\xc0\\xae\\xc0\\xac\\xc0\\xa2\\xc0\\x9e\\xc0\\\\\\xc0`\\xc0V\\xc0R\\xc0$\\xc0(\\x00k\\x00j\\xc0s\\xc0w\\x00\\xc4\\x00\\xc3\\xc0#\\xc0'\\x00g\\x00@\\xc0r\\xc0v\\x00\\xbe\\x00\\xbd\\xc0\\n\\xc0\\x14\\x009\\x008\\x00\\x88\\x00\\x87\\xc0\\t\\xc0\\x13\\x003\\x002\\x00\\x9a\\x00\\x99\\x00E\\x00D\\xc0\\x07\\xc0\\x11\\xc0\\x08\\xc0\\x12\\x00\\x16\\x00\\x13\\x00\\x9d\\xc0\\xa1\\xc0\\x9d\\xc0Q\\x00\\x9c\\xc0\\xa0\\xc0\\x9c\\xc0P\\x00=\\x00\\xc0\\x00<\\x00\\xba\\x005\\x00\\x84\\x00/\\x00\\x96\\x00A\\x00\\x05\\x00\\n\\x00\\xff\\x01\"]\n", - "Bad pipe message: %s [b'l\\x12\\x83\\xcfR\\xe6+\\x1c\\xd5v\\xea\\x8f@k\\xa6\\x8a\\x9ao\\x00\\x00>\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\xc0']\n", - "Bad pipe message: %s [b'\\x05\\x005\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x00']\n", - "Bad pipe message: %s [b'\\x0e\\xc0\\x04\\x00/\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00\\x96\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\x00\\xff\\x02\\x01\\x00\\x00C\\x00\\x00\\x00\\x0e\\x00\\x0c\\x00\\x00\\t12']\n", - "Bad pipe message: %s [b'0.0.1\\x00\\x0b\\x00\\x04\\x03\\x00\\x01\\x02\\x00\\n\\x00\\x1c\\x00\\x1a\\x00\\x17\\x00\\x19\\x00\\x1c\\x00\\x1b\\x00\\x18\\x00\\x1a\\x00\\x16\\x00\\x0e\\x00\\r\\x00\\x0b\\x00\\x0c\\x00\\t\\x00\\n\\x00#\\x00\\x00\\x00\\x0f\\x00\\x01\\x01']\n", - "Bad pipe message: %s [b'z\\xbeQ\\r\\xbd2\\xf3\\x04\\xc4w\\x0c\\n\\xb8\\x1a\\xd1LK\\x89\\x00\\x00\\xa2\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00:\\x00\\x89\\xc0\\x0f\\xc0\\x05\\x005\\x00\\x84\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x000\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E']\n", - "Bad pipe message: %s [b'\\x18\\xef\\xe3n\\xc1Y\\xe1\\xdaC\\x8f\\x8c\\xbe\\x1a\\x96f\\xfe\\xaa\\xca\\x00\\x00\\xa2\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00:\\x00\\x89\\xc0\\x0f\\xc0\\x05\\x005\\x00\\x84\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x00', b'\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E\\x00D\\x00C\\x00B\\xc0\\x18\\x004\\x00\\x9b\\x00F\\xc0\\x0e\\xc0\\x04\\x00/\\x00\\x96\\x00A\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x16\\x00\\x18\\xc0\\x0c\\xc0\\x02']\n", - "Bad pipe message: %s [b'\\xea \\x18\\xa6!\\x86\\xf9\\x11\\xd9\\xad\\xa6\\x15\\x98\\xc6\\xd2&\\x8b\\\\\\x00\\x00\\xa2\\xc0\\x14\\xc0\\n\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00:\\x00\\x89\\xc0\\x0f\\xc0\\x05\\x005\\x00\\x84\\xc0\\x13\\xc0\\t\\x003\\x002\\x001\\x000\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E\\x00D\\x00C\\x00B\\xc0\\x18\\x004\\x00\\x9b\\x00F\\xc0\\x0e\\xc0\\x04\\x00/\\x00\\x96\\x00A\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x16\\x00\\x18\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\xc0\\x12\\xc0\\x08\\x00\\x16\\x00\\x13\\x00\\x10\\x00', b'\\x17\\x00\\x1b\\xc0\\r\\xc0\\x03\\x00\\n\\x00\\x15\\x00']\n", - "Bad pipe message: %s [b'\\x0f\\x00\\x0c\\x00\\x1a\\x00\\t\\x00\\x14\\x00\\x11\\x00\\x19\\x00\\x08\\x00\\x06']\n", - "Bad pipe message: %s [b'\\x8eV\\xa131\\xd3\\x08<', b\"\\xecA\\xe5\\x92\\xbe_\\x07\\xb2\\x00\\x00\\x86\\xc00\\xc0,\\xc0(\\xc0$\\xc0\\x14\\xc0\\n\\x00\\xa5\\x00\\xa3\\x00\\xa1\\x00\\x9f\\x00k\\x00j\\x00i\\x00h\\x009\\x008\\x007\\x006\\xc02\\xc0.\\xc0*\\xc0&\\xc0\\x0f\\xc0\\x05\\x00\\x9d\\x00=\\x005\\xc0/\\xc0+\\xc0'\\xc0#\\xc0\\x13\\xc0\\t\\x00\\xa4\\x00\\xa2\\x00\\xa0\\x00\\x9e\\x00g\\x00@\\x00?\\x00>\\x003\\x002\\x001\\x000\\xc01\\xc0-\\xc0)\\xc0%\\xc0\\x0e\\xc0\\x04\\x00\\x9c\\x00<\\x00/\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00\\x96\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\x00\\xff\\x02\\x01\\x00\\x00g\\x00\\x00\\x00\\x0e\\x00\\x0c\\x00\\x00\\t127.0.0.1\\x00\\x0b\\x00\\x04\\x03\\x00\\x01\\x02\\x00\\n\\x00\\x1c\\x00\\x1a\\x00\\x17\\x00\\x19\\x00\\x1c\\x00\\x1b\\x00\\x18\\x00\\x1a\\x00\\x16\\x00\\x0e\\x00\", b'\\x0b\\x00\\x0c\\x00\\t\\x00\\n\\x00#\\x00\\x00\\x00']\n", - "Bad pipe message: %s [b' \\x00\\x1e\\x06\\x01\\x06\\x02\\x06\\x03\\x05\\x01\\x05']\n", - "Bad pipe message: %s [b'\\x03', b'\\x04\\x02\\x04', b'\\x01\\x03', b'\\x03', b'\\x02', b'\\x03']\n", - "Bad pipe message: %s [b'\\xac`\\xc2\\xbc\\xd4Zg2n\\xa8\\xcev\\xacy\\xaa#Q\\xb0\\x00\\x00\\xf4\\xc00\\xc0,\\xc0(\\xc0$\\xc0\\x14\\xc0\\n\\x00\\xa5\\x00\\xa3\\x00\\xa1\\x00\\x9f\\x00k\\x00j\\x00i\\x00h\\x009\\x008\\x007\\x006\\x00\\x88\\x00\\x87\\x00\\x86\\x00\\x85\\xc0\\x19\\x00\\xa7\\x00m\\x00:\\x00\\x89\\xc02\\xc0.\\xc0*\\xc0&\\xc0\\x0f\\xc0\\x05\\x00\\x9d\\x00=\\x005\\x00\\x84\\xc0/\\xc0', b\"'\\xc0#\\xc0\\x13\\xc0\\t\\x00\\xa4\\x00\\xa2\\x00\\xa0\\x00\\x9e\\x00g\\x00@\\x00?\\x00>\\x003\\x002\\x001\\x000\\x00\\x9a\\x00\\x99\\x00\\x98\\x00\\x97\\x00E\\x00\"]\n", - "Bad pipe message: %s [b'C\\x00B\\xc0\\x18\\x00\\xa6\\x00l\\x004\\x00\\x9b\\x00F\\xc01\\xc0-\\xc0)\\xc0%\\xc0\\x0e\\xc0\\x04\\x00\\x9c\\x00<\\x00/\\x00\\x96\\x00A\\x00\\x07\\xc0\\x11\\xc0\\x07\\xc0\\x16\\x00\\x18\\xc0\\x0c\\xc0\\x02\\x00\\x05\\x00\\x04\\xc0\\x12\\xc0\\x08\\x00\\x16\\x00\\x13\\x00\\x10\\x00\\r']\n" - ] } ], "source": [ @@ -1046,7 +1045,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1055,13 +1054,13 @@ "DataFrame[a: bigint, b: string, __whylogs_df_profile_view: binary]" ] }, - "execution_count": 23, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "profile(tdf, partition={\"by\":[\"a\",\"b\"]}, engine=spark, as_local=False) # returns a native pyspark dataframe" + "fugue_profile(tdf, partition={\"by\":[\"a\",\"b\"]}, engine=spark, as_local=False) # returns a native pyspark dataframe" ] }, { @@ -1073,7 +1072,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -1089,19 +1088,26 @@ "'/tmp/output2.parquet'" ] }, - "execution_count": 24, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Connection error. Skip stats collection.\n" + ] } ], "source": [ - "profile(tdf, partition={\"by\":[\"a\",\"b\"]}, save_path=\"/tmp/output1.parquet\", engine=spark)\n", - "profile(\"/tmp/test.parquet\", partition={\"by\":[\"a\",\"b\"]}, save_path=\"/tmp/output2.parquet\", engine=spark)" + "fugue_profile(tdf, partition={\"by\":[\"a\",\"b\"]}, save_path=\"/tmp/output1.parquet\", engine=spark)\n", + "fugue_profile(\"/tmp/test.parquet\", partition={\"by\":[\"a\",\"b\"]}, save_path=\"/tmp/output2.parquet\", engine=spark)" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -1109,28 +1115,16 @@ "output_type": "stream", "text": [ "/tmp/output1.parquet:\n", - "_SUCCESS part-00000-5ef29b52-3cc8-4190-90c8-4e0042f0a75b-c000.snappy.parquet\n", + "_SUCCESS part-00000-f2fe6067-9404-4f32-8fd7-daa952f14ac3-c000.snappy.parquet\n", "\n", "/tmp/output2.parquet:\n", - "_SUCCESS part-00000-d4168e83-93dd-4a1e-9144-2303524c5e9f-c000.snappy.parquet\n" + "_SUCCESS part-00000-337a3e5c-5480-4105-84a9-3db993f33837-c000.snappy.parquet\n" ] } ], "source": [ "!ls /tmp/output*.parquet" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## WIP!!!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] } ], "metadata": { diff --git a/python/tests/api/pyspark/experimental/test_profiler_function.py b/python/tests/api/pyspark/experimental/test_profiler_function.py index b363fb3a6d..a721bbba61 100644 --- a/python/tests/api/pyspark/experimental/test_profiler_function.py +++ b/python/tests/api/pyspark/experimental/test_profiler_function.py @@ -55,7 +55,7 @@ def test_profile_mapper_function(self, input_df): column_profiles.collect(), ) assert profile_bytes_df.rdd.getNumPartitions() > 0 - assert profile_bytes_df.count() == 4 + assert profile_bytes_df.count() > 0 local_column_profiles = list(collected_profiles) TEST_LOGGER.info(local_column_profiles) assert local_column_profiles is not None diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py index d96f06591f..dfc0f62b83 100644 --- a/python/whylogs/api/fugue/profiler.py +++ b/python/whylogs/api/fugue/profiler.py @@ -42,7 +42,7 @@ def to_col_profiles(self, df: pd.DataFrame) -> Iterable[Dict[str, Any]]: def merge_col_profiles(self, df: pd.DataFrame) -> pd.DataFrame: merged_profile: ColumnProfileView = reduce( - lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(lambda x: ColumnProfileView.deserialize(bytes(x))) + lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(ColumnProfileView.deserialize) ) return df.head(1).assign(**{_COL_PROFILE_FIELD: merged_profile.serialize()}) diff --git a/python/whylogs/core/view/column_profile_view.py b/python/whylogs/core/view/column_profile_view.py index adb5794d80..0332425330 100644 --- a/python/whylogs/core/view/column_profile_view.py +++ b/python/whylogs/core/view/column_profile_view.py @@ -58,7 +58,7 @@ def serialize(self) -> bytes: @classmethod def deserialize(cls, serialized_profile: bytes) -> "ColumnProfileView": - column_message = ColumnMessage.FromString(serialized_profile) + column_message = ColumnMessage.FromString(bytes(serialized_profile)) return ColumnProfileView.from_protobuf(column_message) def get_metric(self, m_name: str) -> Optional[METRIC]: From 2f19a7d42c97dd2f531f2fc1431c7b8a0404f6df Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 05:04:26 +0000 Subject: [PATCH 22/33] update --- python/examples/advanced/Image_Logging.ipynb | 61 +++++++++++--------- python/poetry.lock | 56 +++++++++--------- python/pyproject.toml | 2 +- python/whylogs/api/fugue/profiler.py | 2 +- 4 files changed, 64 insertions(+), 57 deletions(-) diff --git a/python/examples/advanced/Image_Logging.ipynb b/python/examples/advanced/Image_Logging.ipynb index fe5c790729..85b7d61a5c 100644 --- a/python/examples/advanced/Image_Logging.ipynb +++ b/python/examples/advanced/Image_Logging.ipynb @@ -25,19 +25,19 @@ "cell_type": "code", "execution_count": null, "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, "id": "4MNaZsuHxiq2", + "outputId": "acc32ffc-4c3d-40dc-ff0b-e256d3e953d4", "vscode": { "languageId": "shellscript" - }, - "outputId": "acc32ffc-4c3d-40dc-ff0b-e256d3e953d4", - "colab": { - "base_uri": "https://localhost:8080/" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Requirement already satisfied: whylogs[image] in /usr/local/lib/python3.7/dist-packages (1.1.0)\n", @@ -72,37 +72,37 @@ "cell_type": "code", "execution_count": null, "metadata": { - "id": "Laud3_BTGRU1", - "outputId": "774fc78a-3979-4416-a460-144e0220f707", "colab": { "base_uri": "https://localhost:8080/", "height": 567 - } + }, + "id": "Laud3_BTGRU1", + "outputId": "774fc78a-3979-4416-a460-144e0220f707" }, "outputs": [ { - "output_type": "display_data", "data": { + "image/png": "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", "text/plain": [ "" - ], - "image/png": "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\n" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { + "image/png": "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", "text/plain": [ "" - ], - "image/png": "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\n" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "{'image/image/ImagePixelWidth/mean': 256.0, 'image/image/ImagePixelWidth/stddev': 0.0, 'image/image/ImagePixelWidth/n': 1, 'image/image/ImagePixelWidth/max': 256.0, 'image/image/ImagePixelWidth/min': 256.0, 'image/image/ImagePixelWidth/q_01': 256.0, 'image/image/ImagePixelWidth/q_05': 256.0, 'image/image/ImagePixelWidth/q_10': 256.0, 'image/image/ImagePixelWidth/q_25': 256.0, 'image/image/ImagePixelWidth/median': 256.0, 'image/image/ImagePixelWidth/q_75': 256.0, 'image/image/ImagePixelWidth/q_90': 256.0, 'image/image/ImagePixelWidth/q_95': 256.0, 'image/image/ImagePixelWidth/q_99': 256.0, 'image/image/ImagePixelHeight/mean': 256.0, 'image/image/ImagePixelHeight/stddev': 0.0, 'image/image/ImagePixelHeight/n': 1, 'image/image/ImagePixelHeight/max': 256.0, 'image/image/ImagePixelHeight/min': 256.0, 'image/image/ImagePixelHeight/q_01': 256.0, 'image/image/ImagePixelHeight/q_05': 256.0, 'image/image/ImagePixelHeight/q_10': 256.0, 'image/image/ImagePixelHeight/q_25': 256.0, 'image/image/ImagePixelHeight/median': 256.0, 'image/image/ImagePixelHeight/q_75': 256.0, 'image/image/ImagePixelHeight/q_90': 256.0, 'image/image/ImagePixelHeight/q_95': 256.0, 'image/image/ImagePixelHeight/q_99': 256.0, 'image/image/Colorspace/frequent_strings': [FrequentItem(value='L', est=1, upper=1, lower=1)], 'image/image/Hue.mean/mean': 0.0, 'image/image/Hue.mean/stddev': 0.0, 'image/image/Hue.mean/n': 1, 'image/image/Hue.mean/max': 0.0, 'image/image/Hue.mean/min': 0.0, 'image/image/Hue.mean/q_01': 0.0, 'image/image/Hue.mean/q_05': 0.0, 'image/image/Hue.mean/q_10': 0.0, 'image/image/Hue.mean/q_25': 0.0, 'image/image/Hue.mean/median': 0.0, 'image/image/Hue.mean/q_75': 0.0, 'image/image/Hue.mean/q_90': 0.0, 'image/image/Hue.mean/q_95': 0.0, 'image/image/Hue.mean/q_99': 0.0, 'image/image/Hue.stddev/mean': 0.0, 'image/image/Hue.stddev/stddev': 0.0, 'image/image/Hue.stddev/n': 1, 'image/image/Hue.stddev/max': 0.0, 'image/image/Hue.stddev/min': 0.0, 'image/image/Hue.stddev/q_01': 0.0, 'image/image/Hue.stddev/q_05': 0.0, 'image/image/Hue.stddev/q_10': 0.0, 'image/image/Hue.stddev/q_25': 0.0, 'image/image/Hue.stddev/median': 0.0, 'image/image/Hue.stddev/q_75': 0.0, 'image/image/Hue.stddev/q_90': 0.0, 'image/image/Hue.stddev/q_95': 0.0, 'image/image/Hue.stddev/q_99': 0.0, 'image/image/Saturation.mean/mean': 0.0, 'image/image/Saturation.mean/stddev': 0.0, 'image/image/Saturation.mean/n': 1, 'image/image/Saturation.mean/max': 0.0, 'image/image/Saturation.mean/min': 0.0, 'image/image/Saturation.mean/q_01': 0.0, 'image/image/Saturation.mean/q_05': 0.0, 'image/image/Saturation.mean/q_10': 0.0, 'image/image/Saturation.mean/q_25': 0.0, 'image/image/Saturation.mean/median': 0.0, 'image/image/Saturation.mean/q_75': 0.0, 'image/image/Saturation.mean/q_90': 0.0, 'image/image/Saturation.mean/q_95': 0.0, 'image/image/Saturation.mean/q_99': 0.0, 'image/image/Saturation.stddev/mean': 0.0, 'image/image/Saturation.stddev/stddev': 0.0, 'image/image/Saturation.stddev/n': 1, 'image/image/Saturation.stddev/max': 0.0, 'image/image/Saturation.stddev/min': 0.0, 'image/image/Saturation.stddev/q_01': 0.0, 'image/image/Saturation.stddev/q_05': 0.0, 'image/image/Saturation.stddev/q_10': 0.0, 'image/image/Saturation.stddev/q_25': 0.0, 'image/image/Saturation.stddev/median': 0.0, 'image/image/Saturation.stddev/q_75': 0.0, 'image/image/Saturation.stddev/q_90': 0.0, 'image/image/Saturation.stddev/q_95': 0.0, 'image/image/Saturation.stddev/q_99': 0.0, 'image/image/Brightness.mean/mean': 91.99722290039062, 'image/image/Brightness.mean/stddev': 0.0, 'image/image/Brightness.mean/n': 1, 'image/image/Brightness.mean/max': 91.99722290039062, 'image/image/Brightness.mean/min': 91.99722290039062, 'image/image/Brightness.mean/q_01': 91.99722290039062, 'image/image/Brightness.mean/q_05': 91.99722290039062, 'image/image/Brightness.mean/q_10': 91.99722290039062, 'image/image/Brightness.mean/q_25': 91.99722290039062, 'image/image/Brightness.mean/median': 91.99722290039062, 'image/image/Brightness.mean/q_75': 91.99722290039062, 'image/image/Brightness.mean/q_90': 91.99722290039062, 'image/image/Brightness.mean/q_95': 91.99722290039062, 'image/image/Brightness.mean/q_99': 91.99722290039062, 'image/image/Brightness.stddev/mean': 41.904298558131785, 'image/image/Brightness.stddev/stddev': 0.0, 'image/image/Brightness.stddev/n': 1, 'image/image/Brightness.stddev/max': 41.904298558131785, 'image/image/Brightness.stddev/min': 41.904298558131785, 'image/image/Brightness.stddev/q_01': 41.904298558131785, 'image/image/Brightness.stddev/q_05': 41.904298558131785, 'image/image/Brightness.stddev/q_10': 41.904298558131785, 'image/image/Brightness.stddev/q_25': 41.904298558131785, 'image/image/Brightness.stddev/median': 41.904298558131785, 'image/image/Brightness.stddev/q_75': 41.904298558131785, 'image/image/Brightness.stddev/q_90': 41.904298558131785, 'image/image/Brightness.stddev/q_95': 41.904298558131785, 'image/image/Brightness.stddev/q_99': 41.904298558131785}\n" ] @@ -179,16 +179,16 @@ "cell_type": "code", "execution_count": null, "metadata": { - "id": "ogb_0tJLNqY7", - "outputId": "b3dcce38-c3c2-4258-c149-d12506fcbd30", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "ogb_0tJLNqY7", + "outputId": "b3dcce38-c3c2-4258-c149-d12506fcbd30" }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "{'image/image/ImagePixelWidth/mean': 256.0, 'image/image/ImagePixelWidth/stddev': 0.0, 'image/image/ImagePixelWidth/n': 1, 'image/image/ImagePixelWidth/max': 256.0, 'image/image/ImagePixelWidth/min': 256.0, 'image/image/ImagePixelWidth/q_01': 256.0, 'image/image/ImagePixelWidth/q_05': 256.0, 'image/image/ImagePixelWidth/q_10': 256.0, 'image/image/ImagePixelWidth/q_25': 256.0, 'image/image/ImagePixelWidth/median': 256.0, 'image/image/ImagePixelWidth/q_75': 256.0, 'image/image/ImagePixelWidth/q_90': 256.0, 'image/image/ImagePixelWidth/q_95': 256.0, 'image/image/ImagePixelWidth/q_99': 256.0, 'image/image/ImagePixelHeight/mean': 256.0, 'image/image/ImagePixelHeight/stddev': 0.0, 'image/image/ImagePixelHeight/n': 1, 'image/image/ImagePixelHeight/max': 256.0, 'image/image/ImagePixelHeight/min': 256.0, 'image/image/ImagePixelHeight/q_01': 256.0, 'image/image/ImagePixelHeight/q_05': 256.0, 'image/image/ImagePixelHeight/q_10': 256.0, 'image/image/ImagePixelHeight/q_25': 256.0, 'image/image/ImagePixelHeight/median': 256.0, 'image/image/ImagePixelHeight/q_75': 256.0, 'image/image/ImagePixelHeight/q_90': 256.0, 'image/image/ImagePixelHeight/q_95': 256.0, 'image/image/ImagePixelHeight/q_99': 256.0, 'image/image/Colorspace/frequent_strings': [FrequentItem(value='L', est=1, upper=1, lower=1)], 'image/image/Hue.mean/mean': 0.0, 'image/image/Hue.mean/stddev': 0.0, 'image/image/Hue.mean/n': 1, 'image/image/Hue.mean/max': 0.0, 'image/image/Hue.mean/min': 0.0, 'image/image/Hue.mean/q_01': 0.0, 'image/image/Hue.mean/q_05': 0.0, 'image/image/Hue.mean/q_10': 0.0, 'image/image/Hue.mean/q_25': 0.0, 'image/image/Hue.mean/median': 0.0, 'image/image/Hue.mean/q_75': 0.0, 'image/image/Hue.mean/q_90': 0.0, 'image/image/Hue.mean/q_95': 0.0, 'image/image/Hue.mean/q_99': 0.0, 'image/image/Hue.stddev/mean': 0.0, 'image/image/Hue.stddev/stddev': 0.0, 'image/image/Hue.stddev/n': 1, 'image/image/Hue.stddev/max': 0.0, 'image/image/Hue.stddev/min': 0.0, 'image/image/Hue.stddev/q_01': 0.0, 'image/image/Hue.stddev/q_05': 0.0, 'image/image/Hue.stddev/q_10': 0.0, 'image/image/Hue.stddev/q_25': 0.0, 'image/image/Hue.stddev/median': 0.0, 'image/image/Hue.stddev/q_75': 0.0, 'image/image/Hue.stddev/q_90': 0.0, 'image/image/Hue.stddev/q_95': 0.0, 'image/image/Hue.stddev/q_99': 0.0, 'image/image/Saturation.mean/mean': 0.0, 'image/image/Saturation.mean/stddev': 0.0, 'image/image/Saturation.mean/n': 1, 'image/image/Saturation.mean/max': 0.0, 'image/image/Saturation.mean/min': 0.0, 'image/image/Saturation.mean/q_01': 0.0, 'image/image/Saturation.mean/q_05': 0.0, 'image/image/Saturation.mean/q_10': 0.0, 'image/image/Saturation.mean/q_25': 0.0, 'image/image/Saturation.mean/median': 0.0, 'image/image/Saturation.mean/q_75': 0.0, 'image/image/Saturation.mean/q_90': 0.0, 'image/image/Saturation.mean/q_95': 0.0, 'image/image/Saturation.mean/q_99': 0.0, 'image/image/Saturation.stddev/mean': 0.0, 'image/image/Saturation.stddev/stddev': 0.0, 'image/image/Saturation.stddev/n': 1, 'image/image/Saturation.stddev/max': 0.0, 'image/image/Saturation.stddev/min': 0.0, 'image/image/Saturation.stddev/q_01': 0.0, 'image/image/Saturation.stddev/q_05': 0.0, 'image/image/Saturation.stddev/q_10': 0.0, 'image/image/Saturation.stddev/q_25': 0.0, 'image/image/Saturation.stddev/median': 0.0, 'image/image/Saturation.stddev/q_75': 0.0, 'image/image/Saturation.stddev/q_90': 0.0, 'image/image/Saturation.stddev/q_95': 0.0, 'image/image/Saturation.stddev/q_99': 0.0, 'image/image/Brightness.mean/mean': 44.64898681640625, 'image/image/Brightness.mean/stddev': 0.0, 'image/image/Brightness.mean/n': 1, 'image/image/Brightness.mean/max': 44.64898681640625, 'image/image/Brightness.mean/min': 44.64898681640625, 'image/image/Brightness.mean/q_01': 44.64898681640625, 'image/image/Brightness.mean/q_05': 44.64898681640625, 'image/image/Brightness.mean/q_10': 44.64898681640625, 'image/image/Brightness.mean/q_25': 44.64898681640625, 'image/image/Brightness.mean/median': 44.64898681640625, 'image/image/Brightness.mean/q_75': 44.64898681640625, 'image/image/Brightness.mean/q_90': 44.64898681640625, 'image/image/Brightness.mean/q_95': 44.64898681640625, 'image/image/Brightness.mean/q_99': 44.64898681640625, 'image/image/Brightness.stddev/mean': 25.79447615661466, 'image/image/Brightness.stddev/stddev': 0.0, 'image/image/Brightness.stddev/n': 1, 'image/image/Brightness.stddev/max': 25.79447615661466, 'image/image/Brightness.stddev/min': 25.79447615661466, 'image/image/Brightness.stddev/q_01': 25.79447615661466, 'image/image/Brightness.stddev/q_05': 25.79447615661466, 'image/image/Brightness.stddev/q_10': 25.79447615661466, 'image/image/Brightness.stddev/q_25': 25.79447615661466, 'image/image/Brightness.stddev/median': 25.79447615661466, 'image/image/Brightness.stddev/q_75': 25.79447615661466, 'image/image/Brightness.stddev/q_90': 25.79447615661466, 'image/image/Brightness.stddev/q_95': 25.79447615661466, 'image/image/Brightness.stddev/q_99': 25.79447615661466}\n" ] @@ -214,16 +214,16 @@ "cell_type": "code", "execution_count": null, "metadata": { - "id": "6NyXGf30aegh", - "outputId": "422ffd1a-8731-4d6b-8583-9aac879cf9a4", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "6NyXGf30aegh", + "outputId": "422ffd1a-8731-4d6b-8583-9aac879cf9a4" }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "{'counts/n': 1, 'counts/null': 0, 'types/integral': 1, 'types/fractional': 0, 'types/boolean': 0, 'types/string': 0, 'types/object': 0, 'distribution/mean': 42.0, 'distribution/stddev': 0.0, 'distribution/n': 1, 'distribution/max': 42.0, 'distribution/min': 42.0, 'distribution/q_01': 42.0, 'distribution/q_05': 42.0, 'distribution/q_10': 42.0, 'distribution/q_25': 42.0, 'distribution/median': 42.0, 'distribution/q_75': 42.0, 'distribution/q_90': 42.0, 'distribution/q_95': 42.0, 'distribution/q_99': 42.0, 'ints/max': 42, 'ints/min': 42, 'cardinality/est': 1.0, 'cardinality/upper_1': 1.000049929250618, 'cardinality/lower_1': 1.0, 'frequent_items/frequent_strings': [FrequentItem(value='42.000000', est=1, upper=1, lower=1)]}\n", "{'image/image/ImagePixelWidth/mean': 256.0, 'image/image/ImagePixelWidth/stddev': 0.0, 'image/image/ImagePixelWidth/n': 1, 'image/image/ImagePixelWidth/max': 256.0, 'image/image/ImagePixelWidth/min': 256.0, 'image/image/ImagePixelWidth/q_01': 256.0, 'image/image/ImagePixelWidth/q_05': 256.0, 'image/image/ImagePixelWidth/q_10': 256.0, 'image/image/ImagePixelWidth/q_25': 256.0, 'image/image/ImagePixelWidth/median': 256.0, 'image/image/ImagePixelWidth/q_75': 256.0, 'image/image/ImagePixelWidth/q_90': 256.0, 'image/image/ImagePixelWidth/q_95': 256.0, 'image/image/ImagePixelWidth/q_99': 256.0, 'image/image/ImagePixelHeight/mean': 256.0, 'image/image/ImagePixelHeight/stddev': 0.0, 'image/image/ImagePixelHeight/n': 1, 'image/image/ImagePixelHeight/max': 256.0, 'image/image/ImagePixelHeight/min': 256.0, 'image/image/ImagePixelHeight/q_01': 256.0, 'image/image/ImagePixelHeight/q_05': 256.0, 'image/image/ImagePixelHeight/q_10': 256.0, 'image/image/ImagePixelHeight/q_25': 256.0, 'image/image/ImagePixelHeight/median': 256.0, 'image/image/ImagePixelHeight/q_75': 256.0, 'image/image/ImagePixelHeight/q_90': 256.0, 'image/image/ImagePixelHeight/q_95': 256.0, 'image/image/ImagePixelHeight/q_99': 256.0, 'image/image/Colorspace/frequent_strings': [FrequentItem(value='L', est=1, upper=1, lower=1)], 'image/image/Hue.mean/mean': 0.0, 'image/image/Hue.mean/stddev': 0.0, 'image/image/Hue.mean/n': 1, 'image/image/Hue.mean/max': 0.0, 'image/image/Hue.mean/min': 0.0, 'image/image/Hue.mean/q_01': 0.0, 'image/image/Hue.mean/q_05': 0.0, 'image/image/Hue.mean/q_10': 0.0, 'image/image/Hue.mean/q_25': 0.0, 'image/image/Hue.mean/median': 0.0, 'image/image/Hue.mean/q_75': 0.0, 'image/image/Hue.mean/q_90': 0.0, 'image/image/Hue.mean/q_95': 0.0, 'image/image/Hue.mean/q_99': 0.0, 'image/image/Hue.stddev/mean': 0.0, 'image/image/Hue.stddev/stddev': 0.0, 'image/image/Hue.stddev/n': 1, 'image/image/Hue.stddev/max': 0.0, 'image/image/Hue.stddev/min': 0.0, 'image/image/Hue.stddev/q_01': 0.0, 'image/image/Hue.stddev/q_05': 0.0, 'image/image/Hue.stddev/q_10': 0.0, 'image/image/Hue.stddev/q_25': 0.0, 'image/image/Hue.stddev/median': 0.0, 'image/image/Hue.stddev/q_75': 0.0, 'image/image/Hue.stddev/q_90': 0.0, 'image/image/Hue.stddev/q_95': 0.0, 'image/image/Hue.stddev/q_99': 0.0, 'image/image/Saturation.mean/mean': 0.0, 'image/image/Saturation.mean/stddev': 0.0, 'image/image/Saturation.mean/n': 1, 'image/image/Saturation.mean/max': 0.0, 'image/image/Saturation.mean/min': 0.0, 'image/image/Saturation.mean/q_01': 0.0, 'image/image/Saturation.mean/q_05': 0.0, 'image/image/Saturation.mean/q_10': 0.0, 'image/image/Saturation.mean/q_25': 0.0, 'image/image/Saturation.mean/median': 0.0, 'image/image/Saturation.mean/q_75': 0.0, 'image/image/Saturation.mean/q_90': 0.0, 'image/image/Saturation.mean/q_95': 0.0, 'image/image/Saturation.mean/q_99': 0.0, 'image/image/Saturation.stddev/mean': 0.0, 'image/image/Saturation.stddev/stddev': 0.0, 'image/image/Saturation.stddev/n': 1, 'image/image/Saturation.stddev/max': 0.0, 'image/image/Saturation.stddev/min': 0.0, 'image/image/Saturation.stddev/q_01': 0.0, 'image/image/Saturation.stddev/q_05': 0.0, 'image/image/Saturation.stddev/q_10': 0.0, 'image/image/Saturation.stddev/q_25': 0.0, 'image/image/Saturation.stddev/median': 0.0, 'image/image/Saturation.stddev/q_75': 0.0, 'image/image/Saturation.stddev/q_90': 0.0, 'image/image/Saturation.stddev/q_95': 0.0, 'image/image/Saturation.stddev/q_99': 0.0, 'image/image/Brightness.mean/mean': 91.99722290039062, 'image/image/Brightness.mean/stddev': 0.0, 'image/image/Brightness.mean/n': 1, 'image/image/Brightness.mean/max': 91.99722290039062, 'image/image/Brightness.mean/min': 91.99722290039062, 'image/image/Brightness.mean/q_01': 91.99722290039062, 'image/image/Brightness.mean/q_05': 91.99722290039062, 'image/image/Brightness.mean/q_10': 91.99722290039062, 'image/image/Brightness.mean/q_25': 91.99722290039062, 'image/image/Brightness.mean/median': 91.99722290039062, 'image/image/Brightness.mean/q_75': 91.99722290039062, 'image/image/Brightness.mean/q_90': 91.99722290039062, 'image/image/Brightness.mean/q_95': 91.99722290039062, 'image/image/Brightness.mean/q_99': 91.99722290039062, 'image/image/Brightness.stddev/mean': 41.904298558131785, 'image/image/Brightness.stddev/stddev': 0.0, 'image/image/Brightness.stddev/n': 1, 'image/image/Brightness.stddev/max': 41.904298558131785, 'image/image/Brightness.stddev/min': 41.904298558131785, 'image/image/Brightness.stddev/q_01': 41.904298558131785, 'image/image/Brightness.stddev/q_05': 41.904298558131785, 'image/image/Brightness.stddev/q_10': 41.904298558131785, 'image/image/Brightness.stddev/q_25': 41.904298558131785, 'image/image/Brightness.stddev/median': 41.904298558131785, 'image/image/Brightness.stddev/q_75': 41.904298558131785, 'image/image/Brightness.stddev/q_90': 41.904298558131785, 'image/image/Brightness.stddev/q_95': 41.904298558131785, 'image/image/Brightness.stddev/q_99': 41.904298558131785}\n" @@ -260,11 +260,18 @@ "provenance": [] }, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.10.7 ('.venv': poetry)", + "language": "python", "name": "python3" }, "language_info": { - "name": "python" + "name": "python", + "version": "3.10.7" + }, + "vscode": { + "interpreter": { + "hash": "d4bce4e749e5452baa925b5367e0ce1a24e1936540311006e3497d016ec67e64" + } } }, "nbformat": 4, diff --git a/python/poetry.lock b/python/poetry.lock index 19ba69b678..e6e7dea164 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -420,17 +420,16 @@ testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pyt [[package]] name = "flake8" -version = "5.0.4" -description = "the modular source code checker: pep8 pyflakes and co" +version = "2.3.0" +description = "the modular source code checker: pep8, pyflakes and co" category = "dev" optional = false -python-versions = ">=3.6.1" +python-versions = "*" [package.dependencies] -importlib-metadata = {version = ">=1.1.0,<4.3", markers = "python_version < \"3.8\""} -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +mccabe = ">=0.2.1" +pep8 = ">=1.5.7" +pyflakes = ">=0.8.1" [[package]] name = "fs" @@ -570,19 +569,20 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.2.0" +version = "4.12.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517", "pyfakefs", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"] +docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] [[package]] name = "importlib-resources" @@ -1296,6 +1296,14 @@ category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +[[package]] +name = "pep8" +version = "1.7.1" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pexpect" version = "4.8.0" @@ -1466,14 +1474,6 @@ python-versions = "*" [package.dependencies] PyMeta3 = ">=0.5.1" -[[package]] -name = "pycodestyle" -version = "2.9.1" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=3.6" - [[package]] name = "pycparser" version = "2.21" @@ -2384,7 +2384,7 @@ whylabs = ["whylabs-client"] [metadata] lock-version = "1.1" python-versions = ">=3.7.1, <4" -content-hash = "072dde0fd1268b63d4b9636ef088449f9e2c266dc4cc74b9d8af37247c5d9bee" +content-hash = "ce0afddbf7cf656bfb594b4722fec5ab3e9395600dc471aaaafa11e32f95f111" [metadata.files] 2to3 = [ @@ -2705,8 +2705,8 @@ filelock = [ {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, ] flake8 = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-2.3.0-py2.py3-none-any.whl", hash = "sha256:c99cc9716d6655d9c8bcb1e77632b8615bf0abd282d7abd9f5c2148cad7fc669"}, + {file = "flake8-2.3.0.tar.gz", hash = "sha256:5ee1a43ccd0716d6061521eec6937c983efa027793013e572712c4da55c7c83e"}, ] fs = [ {file = "fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c"}, @@ -2800,8 +2800,8 @@ imagesize = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"}, - {file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"}, + {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, + {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, ] importlib-resources = [ {file = "importlib_resources-5.9.0-py3-none-any.whl", hash = "sha256:f78a8df21a79bcc30cfd400bdc38f314333de7c0fb619763f6b9dabab8268bb7"}, @@ -3197,6 +3197,10 @@ pathspec = [ {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] +pep8 = [ + {file = "pep8-1.7.1-py2.py3-none-any.whl", hash = "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee"}, + {file = "pep8-1.7.1.tar.gz", hash = "sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374"}, +] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, @@ -3386,10 +3390,6 @@ pyarrow = [ pybars3 = [ {file = "pybars3-0.9.7.tar.gz", hash = "sha256:6ac847e905e53b9c5b936af112c910475e27bf767f79f4528c16f9af1ec0e252"}, ] -pycodestyle = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, -] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, diff --git a/python/pyproject.toml b/python/pyproject.toml index 353eafd0f0..a7417f34c3 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -14,7 +14,7 @@ include = ["whylogs/core/proto/v0/*.py*", "whylogs/core/proto/*.py*"] python = ">=3.7.1, <4" whylogs-sketching = ">=3.4.1.dev3" protobuf = ">=3.15.5" -importlib-metadata = { version = ">=0.23", python = "<3.8" } +importlib-metadata = { version = ">=4.3", python = "<3.8" } typing-extensions = {version = ">=3.10", markers = "python_version < \"3.11\""} # viz module. Everything after this should be optional diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py index dfc0f62b83..a4904f8e08 100644 --- a/python/whylogs/api/fugue/profiler.py +++ b/python/whylogs/api/fugue/profiler.py @@ -42,7 +42,7 @@ def to_col_profiles(self, df: pd.DataFrame) -> Iterable[Dict[str, Any]]: def merge_col_profiles(self, df: pd.DataFrame) -> pd.DataFrame: merged_profile: ColumnProfileView = reduce( - lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(ColumnProfileView.deserialize) + lambda acc, x: acc.merge(x), df[_COL_PROFILE_FIELD].apply(lambda x: ColumnProfileView.deserialize(x)) ) return df.head(1).assign(**{_COL_PROFILE_FIELD: merged_profile.serialize()}) From 52902eb0d9989e852326031416ff1dd44d49c59b Mon Sep 17 00:00:00 2001 From: Jamie Broomall <88007022+jamie256@users.noreply.github.com> Date: Mon, 19 Sep 2022 21:50:01 -0700 Subject: [PATCH 23/33] poetry update (#847) * update poetry version in ci configs, and update poetry.lock with poetry 1.2.1 --- .github/workflows/push-release.yml | 4 +- .github/workflows/test-notebook.yml | 2 +- python/poetry.lock | 465 +++++++++++++++------------- 3 files changed, 247 insertions(+), 224 deletions(-) diff --git a/.github/workflows/push-release.yml b/.github/workflows/push-release.yml index b6add5e0f2..3509f04f3f 100644 --- a/.github/workflows/push-release.yml +++ b/.github/workflows/push-release.yml @@ -22,7 +22,7 @@ jobs: - name: Install Poetry uses: abatilo/actions-poetry@v2.0.0 with: - poetry-version: 1.1.5 + poetry-version: 1.2.1 - name: Install Protoc uses: arduino/setup-protoc@v1 @@ -77,7 +77,7 @@ jobs: - name: Install Poetry uses: abatilo/actions-poetry@v2.0.0 with: - poetry-version: 1.1.5 + poetry-version: 1.2.1 - name: install bump2version run: | pip install bump2version diff --git a/.github/workflows/test-notebook.yml b/.github/workflows/test-notebook.yml index ae6baee9b8..df1f11d6ec 100644 --- a/.github/workflows/test-notebook.yml +++ b/.github/workflows/test-notebook.yml @@ -13,7 +13,7 @@ defaults: env: CODECOV_UPLOAD: false - POETRY_VERSION: "1.1.11" + POETRY_VERSION: "1.2.1" PROTOC_VERSION: "3.19.4" PYPI_PUBLISH: false HEAP_APPID_DEV: "3422045963" diff --git a/python/poetry.lock b/python/poetry.lock index e6e7dea164..6973866db9 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -99,17 +99,18 @@ tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy [[package]] name = "autoflake" -version = "1.4" +version = "1.6.0" description = "Removes unused imports and unused variables" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] pyflakes = ">=1.1.0" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] -name = "babel" +name = "Babel" version = "2.10.3" description = "Internationalization utilities" category = "main" @@ -144,7 +145,7 @@ lxml = ["lxml"] [[package]] name = "black" -version = "22.6.0" +version = "22.8.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -183,14 +184,14 @@ dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0 [[package]] name = "boto3" -version = "1.24.57" +version = "1.24.76" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.7" [package.dependencies] -botocore = ">=1.27.57,<1.28.0" +botocore = ">=1.27.76,<1.28.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -199,7 +200,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.27.57" +version = "1.27.76" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -223,7 +224,7 @@ python-versions = ">=3.5" [[package]] name = "certifi" -version = "2022.6.15" +version = "2022.9.14" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -273,7 +274,7 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "cloudpickle" -version = "2.1.0" +version = "2.2.0" description = "Extended pickling support for Python objects" category = "main" optional = true @@ -314,7 +315,7 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "37.0.4" +version = "38.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "dev" optional = false @@ -327,13 +328,13 @@ cffi = ">=1.12" docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx_rtd_theme"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools_rust (>=0.11.4)"] +sdist = ["setuptools-rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] [[package]] name = "databricks-cli" -version = "0.17.2" +version = "0.17.3" description = "A command line interface for Databricks" category = "main" optional = true @@ -373,7 +374,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "distlib" -version = "0.3.5" +version = "0.3.6" description = "Distribution utilities" category = "dev" optional = false @@ -397,7 +398,7 @@ python-versions = ">=3.6" [[package]] name = "fastjsonschema" -version = "2.16.1" +version = "2.16.2" description = "Fastest Python implementation of JSON schema" category = "main" optional = false @@ -494,7 +495,7 @@ test = ["speedy_antlr_tool"] [[package]] name = "furo" -version = "2022.6.21" +version = "2022.9.15" description = "A clean customisable Sphinx documentation theme." category = "main" optional = true @@ -502,7 +503,7 @@ python-versions = ">=3.7" [package.dependencies] beautifulsoup4 = "*" -pygments = "*" +pygments = ">=2.7" sphinx = ">=4.0,<6.0" sphinx-basic-ng = "*" @@ -518,7 +519,7 @@ python-versions = ">=3.6" smmap = ">=3.0.1,<6" [[package]] -name = "gitpython" +name = "GitPython" version = "3.1.27" description = "GitPython is a python library used to interact with Git repositories" category = "main" @@ -542,7 +543,7 @@ docs = ["Sphinx"] [[package]] name = "identify" -version = "2.5.3" +version = "2.5.5" description = "File identification library for Python" category = "dev" optional = false @@ -553,7 +554,7 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -609,7 +610,7 @@ python-versions = "*" [[package]] name = "ipykernel" -version = "6.15.1" +version = "6.15.3" description = "IPython Kernel for Jupyter" category = "dev" optional = false @@ -665,7 +666,7 @@ qtconsole = ["qtconsole"] test = ["ipykernel", "nbformat", "nose (>=0.10.1)", "numpy (>=1.17)", "pygments", "requests", "testpath"] [[package]] -name = "ipython-genutils" +name = "ipython_genutils" version = "0.2.0" description = "Vestigial utilities from IPython" category = "main" @@ -714,7 +715,7 @@ test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "te trio = ["async_generator", "trio"] [[package]] -name = "jinja2" +name = "Jinja2" version = "3.1.2" description = "A very fast and expressive template engine." category = "main" @@ -737,7 +738,7 @@ python-versions = ">=3.7" [[package]] name = "jsonschema" -version = "4.14.0" +version = "4.16.0" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -757,7 +758,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jupyter-client" -version = "7.3.4" +version = "7.3.5" description = "Jupyter protocol implementation and client libraries" category = "main" optional = false @@ -769,7 +770,7 @@ jupyter-core = ">=4.9.2" nest-asyncio = ">=1.5.4" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" -tornado = ">=6.0" +tornado = ">=6.2" traitlets = "*" [package.extras] @@ -801,7 +802,7 @@ python-versions = ">=3.7" [[package]] name = "keyring" -version = "23.8.2" +version = "23.9.3" description = "Store and access your passwords safely." category = "dev" optional = false @@ -809,6 +810,7 @@ python-versions = ">=3.7" [package.dependencies] importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +"jaraco.classes" = "*" jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_platform == \"win32\""} SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} @@ -874,7 +876,7 @@ rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx- testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] -name = "markupsafe" +name = "MarkupSafe" version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" @@ -934,7 +936,7 @@ python-versions = "*" [[package]] name = "mlflow-skinny" -version = "1.28.0" +version = "1.29.0" description = "MLflow: A Platform for ML Development and Productionization" category = "main" optional = true @@ -960,6 +962,14 @@ extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", pipelines = ["Jinja2 (>=3.0)", "ipython (>=7.0)", "markdown (>=3.3)", "pandas-profiling (>=3.1)", "pyarrow (>=7.0)", "scikit-learn (>=1.0)", "shap (>=0.40)"] sqlserver = ["mlflow-dbstore"] +[[package]] +name = "more-itertools" +version = "8.14.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" +optional = false +python-versions = ">=3.5" + [[package]] name = "moto" version = "3.1.18" @@ -1035,15 +1045,15 @@ python-versions = "*" [[package]] name = "mypy-protobuf" -version = "3.2.0" +version = "3.3.0" description = "Generate mypy stub files from protobuf specs" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] -protobuf = ">=3.19.3" -types-protobuf = ">=3.19.5" +protobuf = ">=3.19.4" +types-protobuf = ">=3.19.12" [[package]] name = "myst-parser" @@ -1070,7 +1080,7 @@ testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest [[package]] name = "nbclient" -version = "0.6.7" +version = "0.6.8" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." category = "main" optional = false @@ -1124,7 +1134,7 @@ webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.4.0" +version = "5.5.0" description = "The Jupyter Notebook format" category = "main" optional = false @@ -1133,7 +1143,7 @@ python-versions = ">=3.7" [package.dependencies] fastjsonschema = "*" jsonschema = ">=2.6" -jupyter-core = "*" +jupyter_core = "*" traitlets = ">=5.1" [package.extras] @@ -1184,7 +1194,7 @@ python-versions = ">=3.7" [[package]] name = "oauthlib" -version = "3.2.0" +version = "3.2.1" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" category = "main" optional = true @@ -1216,10 +1226,10 @@ python-versions = ">=3.7.1" [package.dependencies] numpy = [ + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, {version = ">=1.17.3", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, ] python-dateutil = ">=2.7.3" pytz = ">=2017.3" @@ -1290,11 +1300,11 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "pep8" @@ -1324,7 +1334,7 @@ optional = false python-versions = "*" [[package]] -name = "pillow" +name = "Pillow" version = "9.2.0" description = "Python Imaging Library (Fork)" category = "main" @@ -1347,7 +1357,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" testing = ["coverage", "nose"] [[package]] -name = "pkgutil-resolve-name" +name = "pkgutil_resolve_name" version = "1.3.10" description = "Resolve a name to an object." category = "main" @@ -1400,7 +1410,7 @@ virtualenv = ">=20.0.8" [[package]] name = "prompt-toolkit" -version = "3.0.30" +version = "3.0.31" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -1411,7 +1421,7 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.21.5" +version = "4.21.6" description = "" category = "main" optional = false @@ -1419,7 +1429,7 @@ python-versions = ">=3.7" [[package]] name = "psutil" -version = "5.9.1" +version = "5.9.2" description = "Cross-platform lib for process and system monitoring in Python." category = "dev" optional = false @@ -1491,7 +1501,7 @@ optional = false python-versions = ">=3.6" [[package]] -name = "pygments" +name = "Pygments" version = "2.13.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" @@ -1502,12 +1512,12 @@ python-versions = ">=3.6" plugins = ["importlib-metadata"] [[package]] -name = "pyjwt" -version = "2.4.0" +name = "PyJWT" +version = "2.5.0" description = "JSON Web Token implementation in Python" category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] crypto = ["cryptography (>=3.3.1)"] @@ -1516,7 +1526,7 @@ docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] -name = "pymeta3" +name = "PyMeta3" version = "0.5.1" description = "Pattern-matching language based on OMeta for Python 3 and 2" category = "main" @@ -1646,7 +1656,7 @@ optional = false python-versions = "*" [[package]] -name = "pyyaml" +name = "PyYAML" version = "6.0" description = "YAML parser and emitter for Python" category = "main" @@ -1655,7 +1665,7 @@ python-versions = ">=3.6" [[package]] name = "pyzmq" -version = "23.2.1" +version = "24.0.0" description = "Python bindings for 0MQ" category = "main" optional = false @@ -1687,7 +1697,7 @@ ray = ["modin[ray] (>=0.8.1.1)", "pandas (>=1.1.2)"] [[package]] name = "readme-renderer" -version = "37.0" +version = "37.1" description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" category = "dev" optional = false @@ -1799,7 +1809,7 @@ python-versions = ">=3.7,<3.11" numpy = ">=1.16.5,<1.23.0" [[package]] -name = "secretstorage" +name = "SecretStorage" version = "3.3.3" description = "Python bindings to FreeDesktop.org Secret Service API" category = "dev" @@ -1856,7 +1866,7 @@ optional = true python-versions = ">=3.6" [[package]] -name = "sphinx" +name = "Sphinx" version = "4.3.2" description = "Python documentation generator" category = "main" @@ -1954,7 +1964,7 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme"] [[package]] name = "sphinx-inline-tabs" -version = "2021.4.11b8" +version = "2021.3.28b7" description = "Add inline tabbed content to your Sphinx documentation." category = "main" optional = true @@ -2161,7 +2171,7 @@ python-versions = ">= 3.7" [[package]] name = "tqdm" -version = "4.64.0" +version = "4.64.1" description = "Fast, Extensible Progress Meter" category = "dev" optional = false @@ -2178,7 +2188,7 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.3.0" +version = "5.4.0" description = "" category = "main" optional = false @@ -2234,7 +2244,7 @@ python-versions = ">=3.6" [[package]] name = "types-protobuf" -version = "3.19.22" +version = "3.20.4" description = "Typing stubs for protobuf" category = "dev" optional = false @@ -2257,7 +2267,7 @@ optional = false python-versions = ">=3.7" [[package]] -name = "unidecode" +name = "Unidecode" version = "1.3.4" description = "ASCII transliterations of Unicode text" category = "main" @@ -2312,7 +2322,7 @@ optional = false python-versions = "*" [[package]] -name = "werkzeug" +name = "Werkzeug" version = "2.1.2" description = "The comprehensive WSGI web application library." category = "dev" @@ -2427,9 +2437,10 @@ attrs = [ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] autoflake = [ - {file = "autoflake-1.4.tar.gz", hash = "sha256:61a353012cff6ab94ca062823d1fb2f692c4acda51c76ff83a8d77915fba51ea"}, + {file = "autoflake-1.6.0-py2.py3-none-any.whl", hash = "sha256:d5de7da3786809bbdedbdbdeecbb410d55277b3492a4a3ede882998f1e87f156"}, + {file = "autoflake-1.6.0.tar.gz", hash = "sha256:6d313038abf4ad829cb88c9b01cd16387369ac529842bcd7f25a967ab4e99b8f"}, ] -babel = [ +Babel = [ {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, ] @@ -2442,49 +2453,49 @@ beautifulsoup4 = [ {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, ] black = [ - {file = "black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, - {file = "black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, - {file = "black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, - {file = "black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, - {file = "black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, - {file = "black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, - {file = "black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, - {file = "black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, - {file = "black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, - {file = "black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, - {file = "black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, - {file = "black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, - {file = "black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, - {file = "black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, - {file = "black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, - {file = "black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, - {file = "black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, - {file = "black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, - {file = "black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, + {file = "black-22.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce957f1d6b78a8a231b18e0dd2d94a33d2ba738cd88a7fe64f53f659eea49fdd"}, + {file = "black-22.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5107ea36b2b61917956d018bd25129baf9ad1125e39324a9b18248d362156a27"}, + {file = "black-22.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8166b7bfe5dcb56d325385bd1d1e0f635f24aae14b3ae437102dedc0c186747"}, + {file = "black-22.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd82842bb272297503cbec1a2600b6bfb338dae017186f8f215c8958f8acf869"}, + {file = "black-22.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d839150f61d09e7217f52917259831fe2b689f5c8e5e32611736351b89bb2a90"}, + {file = "black-22.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a05da0430bd5ced89176db098567973be52ce175a55677436a271102d7eaa3fe"}, + {file = "black-22.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a098a69a02596e1f2a58a2a1c8d5a05d5a74461af552b371e82f9fa4ada8342"}, + {file = "black-22.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:5594efbdc35426e35a7defa1ea1a1cb97c7dbd34c0e49af7fb593a36bd45edab"}, + {file = "black-22.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983526af1bea1e4cf6768e649990f28ee4f4137266921c2c3cee8116ae42ec3"}, + {file = "black-22.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b2c25f8dea5e8444bdc6788a2f543e1fb01494e144480bc17f806178378005e"}, + {file = "black-22.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:78dd85caaab7c3153054756b9fe8c611efa63d9e7aecfa33e533060cb14b6d16"}, + {file = "black-22.8.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cea1b2542d4e2c02c332e83150e41e3ca80dc0fb8de20df3c5e98e242156222c"}, + {file = "black-22.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b879eb439094751185d1cfdca43023bc6786bd3c60372462b6f051efa6281a5"}, + {file = "black-22.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a12e4e1353819af41df998b02c6742643cfef58282915f781d0e4dd7a200411"}, + {file = "black-22.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a73f66b6d5ba7288cd5d6dad9b4c9b43f4e8a4b789a94bf5abfb878c663eb3"}, + {file = "black-22.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:e981e20ec152dfb3e77418fb616077937378b322d7b26aa1ff87717fb18b4875"}, + {file = "black-22.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8ce13ffed7e66dda0da3e0b2eb1bdfc83f5812f66e09aca2b0978593ed636b6c"}, + {file = "black-22.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:32a4b17f644fc288c6ee2bafdf5e3b045f4eff84693ac069d87b1a347d861497"}, + {file = "black-22.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ad827325a3a634bae88ae7747db1a395d5ee02cf05d9aa7a9bd77dfb10e940c"}, + {file = "black-22.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53198e28a1fb865e9fe97f88220da2e44df6da82b18833b588b1883b16bb5d41"}, + {file = "black-22.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:bc4d4123830a2d190e9cc42a2e43570f82ace35c3aeb26a512a2102bce5af7ec"}, + {file = "black-22.8.0-py3-none-any.whl", hash = "sha256:d2c21d439b2baf7aa80d6dd4e3659259be64c6f49dfd0f32091063db0e006db4"}, + {file = "black-22.8.0.tar.gz", hash = "sha256:792f7eb540ba9a17e8656538701d3eb1afcb134e3b45b71f20b25c77a8db7e6e"}, ] bleach = [ {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"}, {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"}, ] boto3 = [ - {file = "boto3-1.24.57-py3-none-any.whl", hash = "sha256:74a50c718594a38fa846ce6951ea4704a5836194e2d4055e959baef39299d283"}, - {file = "boto3-1.24.57.tar.gz", hash = "sha256:1be1aa320ef33d6e10e82adea3caeb0d2c185284457d1e2406339b44f45d7565"}, + {file = "boto3-1.24.76-py3-none-any.whl", hash = "sha256:5bfcced1a30597b06b3426024c7a9220526882e8fc2dd255f03b9389b5ad8623"}, + {file = "boto3-1.24.76.tar.gz", hash = "sha256:aee98e60c7d2ce1396a3beaf47f8ff749e64804cbdaed8e19d4338a6f628f2dc"}, ] botocore = [ - {file = "botocore-1.27.57-py3-none-any.whl", hash = "sha256:e55510321dba95065a071909177ab6d4e1621b41f090cefe54252af9b0766855"}, - {file = "botocore-1.27.57.tar.gz", hash = "sha256:f3dd75a789ac1a3e3f06fe0725ee138522c106c4e6abc917a4915617c4a32662"}, + {file = "botocore-1.27.76-py3-none-any.whl", hash = "sha256:0d4a67801e5a4be4cd84795320ad9fb8c315ed1e7a63e1191b2b3f7a7171d43c"}, + {file = "botocore-1.27.76.tar.gz", hash = "sha256:b5c32922eba727a466f171dcc281f309d2a313e2f6dc592d43044caad96de338"}, ] bump2version = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, ] certifi = [ - {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, - {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, + {file = "certifi-2022.9.14-py3-none-any.whl", hash = "sha256:e232343de1ab72c2aa521b625c80f699e356830fd0e2c620b465b304b17b0516"}, + {file = "certifi-2022.9.14.tar.gz", hash = "sha256:36973885b9542e6bd01dea287b2b4b3b21236307c56324fcc3f1160f2d655ed5"}, ] cffi = [ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, @@ -2565,8 +2576,8 @@ click = [ {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] cloudpickle = [ - {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, - {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, + {file = "cloudpickle-2.2.0-py3-none-any.whl", hash = "sha256:7428798d5926d8fcbfd092d18d01a2a03daf8237d8fcdc8095d256b8490796f0"}, + {file = "cloudpickle-2.2.0.tar.gz", hash = "sha256:3f4219469c55453cfe4737e564b67c2a149109dabf7f242478948b895f61106f"}, ] colorama = [ {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, @@ -2629,32 +2640,36 @@ coverage = [ {file = "coverage-6.4.4.tar.gz", hash = "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58"}, ] cryptography = [ - {file = "cryptography-37.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884"}, - {file = "cryptography-37.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8"}, - {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280"}, - {file = "cryptography-37.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3"}, - {file = "cryptography-37.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59"}, - {file = "cryptography-37.0.4-cp36-abi3-win32.whl", hash = "sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157"}, - {file = "cryptography-37.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327"}, - {file = "cryptography-37.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b"}, - {file = "cryptography-37.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282"}, - {file = "cryptography-37.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a"}, - {file = "cryptography-37.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab"}, - {file = "cryptography-37.0.4.tar.gz", hash = "sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82"}, + {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"}, + {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"}, + {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"}, + {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"}, + {file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"}, + {file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, + {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, ] databricks-cli = [ - {file = "databricks-cli-0.17.2.tar.gz", hash = "sha256:16bda8def2fd8e361e8f355a016841bc1b8a87da25047f5339acf559fa55f1fb"}, - {file = "databricks_cli-0.17.2-py2-none-any.whl", hash = "sha256:cdcc073df0c79efc12f3220f8b76d3247aed88624338eb531c381123601bf36d"}, + {file = "databricks-cli-0.17.3.tar.gz", hash = "sha256:2f00f3e70e859809f0595885ec76fc73ba60ad0cccd69564f7df5d95b6c90066"}, + {file = "databricks_cli-0.17.3-py2-none-any.whl", hash = "sha256:f090c2e4f99c39d69a7f7228e6c7df8cb1cebd5fddad6292e0625daf29d4be01"}, ] debugpy = [ {file = "debugpy-1.6.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:c4b2bd5c245eeb49824bf7e539f95fb17f9a756186e51c3e513e32999d8846f3"}, @@ -2685,8 +2700,8 @@ defusedxml = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] distlib = [ - {file = "distlib-0.3.5-py2.py3-none-any.whl", hash = "sha256:b710088c59f06338ca514800ad795a132da19fda270e3ce4affc74abf955a26c"}, - {file = "distlib-0.3.5.tar.gz", hash = "sha256:a7f75737c70be3b25e2bee06288cec4e4c221de18455b2dd037fe2a795cab2fe"}, + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] docutils = [ {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, @@ -2697,8 +2712,8 @@ entrypoints = [ {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, ] fastjsonschema = [ - {file = "fastjsonschema-2.16.1-py3-none-any.whl", hash = "sha256:2f7158c4de792555753d6c2277d6a2af2d406dfd97aeca21d17173561ede4fe6"}, - {file = "fastjsonschema-2.16.1.tar.gz", hash = "sha256:d6fa3ffbe719768d70e298b9fb847484e2bdfdb7241ed052b8d57a9294a8c334"}, + {file = "fastjsonschema-2.16.2-py3-none-any.whl", hash = "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"}, + {file = "fastjsonschema-2.16.2.tar.gz", hash = "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18"}, ] filelock = [ {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, @@ -2720,14 +2735,14 @@ fugue-sql-antlr = [ {file = "fugue-sql-antlr-0.1.1.tar.gz", hash = "sha256:e276badd471cf3e1659e94ba181896e2b1887de63ef53ac2badc73483b1c9332"}, ] furo = [ - {file = "furo-2022.6.21-py3-none-any.whl", hash = "sha256:061b68e323345e27fcba024cf33a1e77f3dfd8d9987410be822749a706e2add6"}, - {file = "furo-2022.6.21.tar.gz", hash = "sha256:9aa983b7488a4601d13113884bfb7254502c8729942e073a0acb87a5512af223"}, + {file = "furo-2022.9.15-py3-none-any.whl", hash = "sha256:9129dead1f75e9fb4fa407612f1d5a0d0320767e6156c925aafe36f362f9b11a"}, + {file = "furo-2022.9.15.tar.gz", hash = "sha256:4a7ef1c8a3b615171592da4d2ad8a53cc4aacfbe111958890f5f9ff7279066ab"}, ] gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, ] -gitpython = [ +GitPython = [ {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, ] @@ -2788,12 +2803,12 @@ greenlet = [ {file = "greenlet-1.1.3.tar.gz", hash = "sha256:bcb6c6dd1d6be6d38d6db283747d07fda089ff8c559a835236560a4410340455"}, ] identify = [ - {file = "identify-2.5.3-py2.py3-none-any.whl", hash = "sha256:25851c8c1370effb22aaa3c987b30449e9ff0cece408f810ae6ce408fdd20893"}, - {file = "identify-2.5.3.tar.gz", hash = "sha256:887e7b91a1be152b0d46bbf072130235a8117392b9f1828446079a816a05ef44"}, + {file = "identify-2.5.5-py2.py3-none-any.whl", hash = "sha256:ef78c0d96098a3b5fe7720be4a97e73f439af7cf088ebf47b620aeaa10fadf97"}, + {file = "identify-2.5.5.tar.gz", hash = "sha256:322a5699daecf7c6fd60e68852f36f2ecbb6a36ff6e6e973e0d2bb6fca203ee6"}, ] idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] imagesize = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, @@ -2812,14 +2827,14 @@ iniconfig = [ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] ipykernel = [ - {file = "ipykernel-6.15.1-py3-none-any.whl", hash = "sha256:d8969c5b23b0e453a23166da5a669c954db399789293fcb03fec5cb25367e43c"}, - {file = "ipykernel-6.15.1.tar.gz", hash = "sha256:37acc3254caa8a0dafcddddc8dc863a60ad1b46487b68aee361d9a15bda98112"}, + {file = "ipykernel-6.15.3-py3-none-any.whl", hash = "sha256:befe3736944b21afec8e832725e9a45f254c8bd9afc40b61d6661c97e45aff5a"}, + {file = "ipykernel-6.15.3.tar.gz", hash = "sha256:b81d57b0e171670844bf29cdc11562b1010d3da87115c4513e0ee660a8368765"}, ] ipython = [ {file = "ipython-7.34.0-py3-none-any.whl", hash = "sha256:c175d2440a1caff76116eb719d40538fbb316e214eda85c5515c303aacbfb23e"}, {file = "ipython-7.34.0.tar.gz", hash = "sha256:af3bdb46aa292bce5615b1b2ebc76c2080c5f77f54bda2ec72461317273e7cd6"}, ] -ipython-genutils = [ +ipython_genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, ] @@ -2827,6 +2842,10 @@ isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] +"jaraco.classes" = [ + {file = "jaraco.classes-3.2.2-py3-none-any.whl", hash = "sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647"}, + {file = "jaraco.classes-3.2.2.tar.gz", hash = "sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594"}, +] jedi = [ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, @@ -2835,7 +2854,7 @@ jeepney = [ {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, ] -jinja2 = [ +Jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] @@ -2844,12 +2863,12 @@ jmespath = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] jsonschema = [ - {file = "jsonschema-4.14.0-py3-none-any.whl", hash = "sha256:9892b8d630a82990521a9ca630d3446bd316b5ad54dbe981338802787f3e0d2d"}, - {file = "jsonschema-4.14.0.tar.gz", hash = "sha256:15062f4cc6f591400cd528d2c355f2cfa6a57e44c820dc783aee5e23d36a831f"}, + {file = "jsonschema-4.16.0-py3-none-any.whl", hash = "sha256:9e74b8f9738d6a946d70705dc692b74b5429cd0960d58e79ffecfc43b2221eb9"}, + {file = "jsonschema-4.16.0.tar.gz", hash = "sha256:165059f076eff6971bae5b742fc029a7b4ef3f9bcf04c14e4776a7605de14b23"}, ] jupyter-client = [ - {file = "jupyter_client-7.3.4-py3-none-any.whl", hash = "sha256:17d74b0d0a7b24f1c8c527b24fcf4607c56bee542ffe8e3418e50b21e514b621"}, - {file = "jupyter_client-7.3.4.tar.gz", hash = "sha256:aa9a6c32054b290374f95f73bb0cae91455c58dfb84f65c8591912b8f65e6d56"}, + {file = "jupyter_client-7.3.5-py3-none-any.whl", hash = "sha256:b33222bdc9dd1714228bd286af006533a0abe2bbc093e8f3d29dc0b91bdc2be4"}, + {file = "jupyter_client-7.3.5.tar.gz", hash = "sha256:3c58466a1b8d55dba0bf3ce0834e4f5b7760baf98d1d73db0add6f19de9ecd1d"}, ] jupyter-core = [ {file = "jupyter_core-4.11.1-py3-none-any.whl", hash = "sha256:715e22bb6cc7db3718fddfac1f69f1c7e899ca00e42bdfd4bf3705452b9fd84a"}, @@ -2860,8 +2879,8 @@ jupyterlab-pygments = [ {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, ] keyring = [ - {file = "keyring-23.8.2-py3-none-any.whl", hash = "sha256:10d2a8639663fe2090705a00b8c47c687cacdf97598ea9c11456679fa974473a"}, - {file = "keyring-23.8.2.tar.gz", hash = "sha256:0d9973f8891850f1ade5f26aafd06bb16865fbbae3fc56b0defb6a14a2624003"}, + {file = "keyring-23.9.3-py3-none-any.whl", hash = "sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0"}, + {file = "keyring-23.9.3.tar.gz", hash = "sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5"}, ] lazy-object-proxy = [ {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, @@ -2981,7 +3000,7 @@ markdown-it-py = [ {file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"}, {file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"}, ] -markupsafe = [ +MarkupSafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, @@ -3044,8 +3063,12 @@ mistune = [ {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"}, ] mlflow-skinny = [ - {file = "mlflow-skinny-1.28.0.tar.gz", hash = "sha256:18440d8e428713f43c0e0d4b520dce8c04910224c4559ec88f6c3aa388a60ec4"}, - {file = "mlflow_skinny-1.28.0-py3-none-any.whl", hash = "sha256:27aefe0f8fde621ce0ae4d09afdc902ae5e1dfca66f042d7e149425fb1f6f305"}, + {file = "mlflow-skinny-1.29.0.tar.gz", hash = "sha256:08fe755ff6742e210a917d9b994004dda16cee5f3852e8f1be36173f2eab92d2"}, + {file = "mlflow_skinny-1.29.0-py3-none-any.whl", hash = "sha256:101615d74fdc05c40c8d669ae4d79205d22d260fac8109535004dbf6fb78c905"}, +] +more-itertools = [ + {file = "more-itertools-8.14.0.tar.gz", hash = "sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750"}, + {file = "more_itertools-8.14.0-py3-none-any.whl", hash = "sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2"}, ] moto = [ {file = "moto-3.1.18-py3-none-any.whl", hash = "sha256:b6eb096e7880c46ac44d6d90988c0043e31462115cfdc913a0ee8f470bd9555c"}, @@ -3081,24 +3104,24 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] mypy-protobuf = [ - {file = "mypy-protobuf-3.2.0.tar.gz", hash = "sha256:730aa15337c38f0446fbe08f6c6c2370ee01d395125369d4b70e08b1e2ee30ee"}, - {file = "mypy_protobuf-3.2.0-py3-none-any.whl", hash = "sha256:65fc0492165f4a3c0aff69b03e34096fc1453e4dac8f14b4e9c2306cdde06010"}, + {file = "mypy-protobuf-3.3.0.tar.gz", hash = "sha256:24f3b0aecb06656e983f58e07c732a90577b9d7af3e1066fc2b663bbf0370248"}, + {file = "mypy_protobuf-3.3.0-py3-none-any.whl", hash = "sha256:15604f6943b16c05db646903261e3b3e775cf7f7990b7c37b03d043a907b650d"}, ] myst-parser = [ {file = "myst-parser-0.17.2.tar.gz", hash = "sha256:4c076d649e066f9f5c7c661bae2658be1ca06e76b002bb97f02a09398707686c"}, {file = "myst_parser-0.17.2-py3-none-any.whl", hash = "sha256:1635ce3c18965a528d6de980f989ff64d6a1effb482e1f611b1bfb79e38f3d98"}, ] nbclient = [ - {file = "nbclient-0.6.7-py3-none-any.whl", hash = "sha256:d4e32459e7e96783285d1daac92dc2c60ee7b8a82b7cf7d2e55be9d89d7ac463"}, - {file = "nbclient-0.6.7.tar.gz", hash = "sha256:3c5a7fc6bb74be7d31edf2817b44501a65caa99e5e56363bc359649b97cd24b9"}, + {file = "nbclient-0.6.8-py3-none-any.whl", hash = "sha256:7cce8b415888539180535953f80ea2385cdbb444944cdeb73ffac1556fdbc228"}, + {file = "nbclient-0.6.8.tar.gz", hash = "sha256:268fde3457cafe1539e32eb1c6d796bbedb90b9e92bacd3e43d83413734bb0e8"}, ] nbconvert = [ {file = "nbconvert-7.0.0-py3-none-any.whl", hash = "sha256:26843ae233167e8aae31c20e3e1d91f431f04c9f34363bbe2dd0d247f772641c"}, {file = "nbconvert-7.0.0.tar.gz", hash = "sha256:fd1e361da30e30e4c5a5ae89f7cae95ca2a4d4407389672473312249a7ba0060"}, ] nbformat = [ - {file = "nbformat-5.4.0-py3-none-any.whl", hash = "sha256:0d6072aaec95dddc39735c144ee8bbc6589c383fb462e4058abc855348152dad"}, - {file = "nbformat-5.4.0.tar.gz", hash = "sha256:44ba5ca6acb80c5d5a500f1e5b83ede8cbe364d5a495c4c8cf60aaf1ba656501"}, + {file = "nbformat-5.5.0-py3-none-any.whl", hash = "sha256:eb21018bbcdb29e7a4b8b29068d4b6794cdad685db8fcd569b97a09a048dc2e4"}, + {file = "nbformat-5.5.0.tar.gz", hash = "sha256:9ebe30e6c3b3e5b47d39ff0a3897a1acf523d2bfafcb4e2d04cdb70f8a66c507"}, ] nbsphinx = [ {file = "nbsphinx-0.8.9-py3-none-any.whl", hash = "sha256:a7d743762249ee6bac3350a91eb3717a6e1c75f239f2c2a85491f9aca5a63be1"}, @@ -3143,8 +3166,8 @@ numpy = [ {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"}, ] oauthlib = [ - {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, - {file = "oauthlib-3.2.0.tar.gz", hash = "sha256:23a8208d75b902797ea29fd31fa80a15ed9dc2c6c16fe73f5d346f83f6fa27a2"}, + {file = "oauthlib-3.2.1-py3-none-any.whl", hash = "sha256:88e912ca1ad915e1dcc1c06fc9259d19de8deacd6fd17cc2df266decc2e49066"}, + {file = "oauthlib-3.2.1.tar.gz", hash = "sha256:1565237372795bf6ee3e5aba5e2a85bd5a65d0e2aa5c628b9a97b7d7a0da3721"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, @@ -3194,8 +3217,8 @@ parso = [ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, ] pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, ] pep8 = [ {file = "pep8-1.7.1-py2.py3-none-any.whl", hash = "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee"}, @@ -3209,7 +3232,7 @@ pickleshare = [ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] -pillow = [ +Pillow = [ {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"}, @@ -3273,7 +3296,7 @@ pkginfo = [ {file = "pkginfo-1.8.3-py2.py3-none-any.whl", hash = "sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594"}, {file = "pkginfo-1.8.3.tar.gz", hash = "sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"}, ] -pkgutil-resolve-name = [ +pkgutil_resolve_name = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, ] @@ -3290,58 +3313,58 @@ pre-commit = [ {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"}, ] prompt-toolkit = [ - {file = "prompt_toolkit-3.0.30-py3-none-any.whl", hash = "sha256:d8916d3f62a7b67ab353a952ce4ced6a1d2587dfe9ef8ebc30dd7c386751f289"}, - {file = "prompt_toolkit-3.0.30.tar.gz", hash = "sha256:859b283c50bde45f5f97829f77a4674d1c1fcd88539364f1b28a37805cfd89c0"}, + {file = "prompt_toolkit-3.0.31-py3-none-any.whl", hash = "sha256:9696f386133df0fc8ca5af4895afe5d78f5fcfe5258111c2a79a1c3e41ffa96d"}, + {file = "prompt_toolkit-3.0.31.tar.gz", hash = "sha256:9ada952c9d1787f52ff6d5f3484d0b4df8952787c087edf6a1f7c2cb1ea88148"}, ] protobuf = [ - {file = "protobuf-4.21.5-cp310-abi3-win32.whl", hash = "sha256:5310cbe761e87f0c1decce019d23f2101521d4dfff46034f8a12a53546036ec7"}, - {file = "protobuf-4.21.5-cp310-abi3-win_amd64.whl", hash = "sha256:e5c5a2886ae48d22a9d32fbb9b6636a089af3cd26b706750258ce1ca96cc0116"}, - {file = "protobuf-4.21.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ee04f5823ed98bb9a8c3b1dc503c49515e0172650875c3f76e225b223793a1f2"}, - {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:b04484d6f42f48c57dd2737a72692f4c6987529cdd148fb5b8e5f616862a2e37"}, - {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e0b272217aad8971763960238c1a1e6a65d50ef7824e23300da97569a251c55"}, - {file = "protobuf-4.21.5-cp37-cp37m-win32.whl", hash = "sha256:5eb0724615e90075f1d763983e708e1cef08e66b1891d8b8b6c33bc3b2f1a02b"}, - {file = "protobuf-4.21.5-cp37-cp37m-win_amd64.whl", hash = "sha256:011c0f267e85f5d73750b6c25f0155d5db1e9443cd3590ab669a6221dd8fcdb0"}, - {file = "protobuf-4.21.5-cp38-cp38-win32.whl", hash = "sha256:7b6f22463e2d1053d03058b7b4ceca6e4ed4c14f8c286c32824df751137bf8e7"}, - {file = "protobuf-4.21.5-cp38-cp38-win_amd64.whl", hash = "sha256:b52e7a522911a40445a5f588bd5b5e584291bfc5545e09b7060685e4b2ff814f"}, - {file = "protobuf-4.21.5-cp39-cp39-win32.whl", hash = "sha256:a7faa62b183d6a928e3daffd06af843b4287d16ef6e40f331575ecd236a7974d"}, - {file = "protobuf-4.21.5-cp39-cp39-win_amd64.whl", hash = "sha256:5e0ce02418ef03d7657a420ae8fd6fec4995ac713a3cb09164e95f694dbcf085"}, - {file = "protobuf-4.21.5-py2.py3-none-any.whl", hash = "sha256:bf711b451212dc5b0fa45ae7dada07d8e71a4b0ff0bc8e4783ee145f47ac4f82"}, - {file = "protobuf-4.21.5-py3-none-any.whl", hash = "sha256:3ec6f5b37935406bb9df9b277e79f8ed81d697146e07ef2ba8a5a272fb24b2c9"}, - {file = "protobuf-4.21.5.tar.gz", hash = "sha256:eb1106e87e095628e96884a877a51cdb90087106ee693925ec0a300468a9be3a"}, + {file = "protobuf-4.21.6-cp310-abi3-win32.whl", hash = "sha256:49f88d56a9180dbb7f6199c920f5bb5c1dd0172f672983bb281298d57c2ac8eb"}, + {file = "protobuf-4.21.6-cp310-abi3-win_amd64.whl", hash = "sha256:7a6cc8842257265bdfd6b74d088b829e44bcac3cca234c5fdd6052730017b9ea"}, + {file = "protobuf-4.21.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ba596b9ffb85c909fcfe1b1a23136224ed678af3faf9912d3fa483d5f9813c4e"}, + {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4143513c766db85b9d7c18dbf8339673c8a290131b2a0fe73855ab20770f72b0"}, + {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b6cea204865595a92a7b240e4b65bcaaca3ad5d2ce25d9db3756eba06041138e"}, + {file = "protobuf-4.21.6-cp37-cp37m-win32.whl", hash = "sha256:9666da97129138585b26afcb63ad4887f602e169cafe754a8258541c553b8b5d"}, + {file = "protobuf-4.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:308173d3e5a3528787bb8c93abea81d5a950bdce62840d9760effc84127fb39c"}, + {file = "protobuf-4.21.6-cp38-cp38-win32.whl", hash = "sha256:aa29113ec901281f29d9d27b01193407a98aa9658b8a777b0325e6d97149f5ce"}, + {file = "protobuf-4.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:8f9e60f7d44592c66e7b332b6a7b4b6e8d8b889393c79dbc3a91f815118f8eac"}, + {file = "protobuf-4.21.6-cp39-cp39-win32.whl", hash = "sha256:80e6540381080715fddac12690ee42d087d0d17395f8d0078dfd6f1181e7be4c"}, + {file = "protobuf-4.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:77b355c8604fe285536155286b28b0c4cbc57cf81b08d8357bf34829ea982860"}, + {file = "protobuf-4.21.6-py2.py3-none-any.whl", hash = "sha256:07a0bb9cc6114f16a39c866dc28b6e3d96fa4ffb9cc1033057412547e6e75cb9"}, + {file = "protobuf-4.21.6-py3-none-any.whl", hash = "sha256:c7c864148a237f058c739ae7a05a2b403c0dfa4ce7d1f3e5213f352ad52d57c6"}, + {file = "protobuf-4.21.6.tar.gz", hash = "sha256:6b1040a5661cd5f6e610cbca9cfaa2a17d60e2bb545309bc1b278bb05be44bdd"}, ] psutil = [ - {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, - {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, - {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, - {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, - {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, - {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, - {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, - {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, - {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, - {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, - {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, - {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, - {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, - {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, - {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, - {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, - {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, - {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, - {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, - {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, - {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, - {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, - {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, - {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, - {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, - {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, - {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, - {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, - {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, - {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, - {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, - {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, + {file = "psutil-5.9.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:8f024fbb26c8daf5d70287bb3edfafa22283c255287cf523c5d81721e8e5d82c"}, + {file = "psutil-5.9.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b2f248ffc346f4f4f0d747ee1947963613216b06688be0be2e393986fe20dbbb"}, + {file = "psutil-5.9.2-cp27-cp27m-win32.whl", hash = "sha256:b1928b9bf478d31fdffdb57101d18f9b70ed4e9b0e41af751851813547b2a9ab"}, + {file = "psutil-5.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:404f4816c16a2fcc4eaa36d7eb49a66df2d083e829d3e39ee8759a411dbc9ecf"}, + {file = "psutil-5.9.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:94e621c6a4ddb2573d4d30cba074f6d1aa0186645917df42c811c473dd22b339"}, + {file = "psutil-5.9.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:256098b4f6ffea6441eb54ab3eb64db9ecef18f6a80d7ba91549195d55420f84"}, + {file = "psutil-5.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:614337922702e9be37a39954d67fdb9e855981624d8011a9927b8f2d3c9625d9"}, + {file = "psutil-5.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39ec06dc6c934fb53df10c1672e299145ce609ff0611b569e75a88f313634969"}, + {file = "psutil-5.9.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3ac2c0375ef498e74b9b4ec56df3c88be43fe56cac465627572dbfb21c4be34"}, + {file = "psutil-5.9.2-cp310-cp310-win32.whl", hash = "sha256:e4c4a7636ffc47b7141864f1c5e7d649f42c54e49da2dd3cceb1c5f5d29bfc85"}, + {file = "psutil-5.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:f4cb67215c10d4657e320037109939b1c1d2fd70ca3d76301992f89fe2edb1f1"}, + {file = "psutil-5.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dc9bda7d5ced744622f157cc8d8bdd51735dafcecff807e928ff26bdb0ff097d"}, + {file = "psutil-5.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75291912b945a7351d45df682f9644540d564d62115d4a20d45fa17dc2d48f8"}, + {file = "psutil-5.9.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4018d5f9b6651f9896c7a7c2c9f4652e4eea53f10751c4e7d08a9093ab587ec"}, + {file = "psutil-5.9.2-cp36-cp36m-win32.whl", hash = "sha256:f40ba362fefc11d6bea4403f070078d60053ed422255bd838cd86a40674364c9"}, + {file = "psutil-5.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9770c1d25aee91417eba7869139d629d6328a9422ce1cdd112bd56377ca98444"}, + {file = "psutil-5.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:42638876b7f5ef43cef8dcf640d3401b27a51ee3fa137cb2aa2e72e188414c32"}, + {file = "psutil-5.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91aa0dac0c64688667b4285fa29354acfb3e834e1fd98b535b9986c883c2ce1d"}, + {file = "psutil-5.9.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fb54941aac044a61db9d8eb56fc5bee207db3bc58645d657249030e15ba3727"}, + {file = "psutil-5.9.2-cp37-cp37m-win32.whl", hash = "sha256:7cbb795dcd8ed8fd238bc9e9f64ab188f3f4096d2e811b5a82da53d164b84c3f"}, + {file = "psutil-5.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5d39e3a2d5c40efa977c9a8dd4f679763c43c6c255b1340a56489955dbca767c"}, + {file = "psutil-5.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fd331866628d18223a4265371fd255774affd86244fc307ef66eaf00de0633d5"}, + {file = "psutil-5.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b315febaebae813326296872fdb4be92ad3ce10d1d742a6b0c49fb619481ed0b"}, + {file = "psutil-5.9.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7929a516125f62399d6e8e026129c8835f6c5a3aab88c3fff1a05ee8feb840d"}, + {file = "psutil-5.9.2-cp38-cp38-win32.whl", hash = "sha256:561dec454853846d1dd0247b44c2e66a0a0c490f937086930ec4b8f83bf44f06"}, + {file = "psutil-5.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:67b33f27fc0427483b61563a16c90d9f3b547eeb7af0ef1b9fe024cdc9b3a6ea"}, + {file = "psutil-5.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3591616fa07b15050b2f87e1cdefd06a554382e72866fcc0ab2be9d116486c8"}, + {file = "psutil-5.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b29f581b5edab1f133563272a6011925401804d52d603c5c606936b49c8b97"}, + {file = "psutil-5.9.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4642fd93785a29353d6917a23e2ac6177308ef5e8be5cc17008d885cb9f70f12"}, + {file = "psutil-5.9.2-cp39-cp39-win32.whl", hash = "sha256:ed29ea0b9a372c5188cdb2ad39f937900a10fb5478dc077283bf86eeac678ef1"}, + {file = "psutil-5.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:68b35cbff92d1f7103d8f1db77c977e72f49fcefae3d3d2b91c76b0e7aef48b8"}, + {file = "psutil-5.9.2.tar.gz", hash = "sha256:feb861a10b6c3bb00701063b37e4afc754f8217f0f09c42280586bd6ac712b5c"}, ] ptyprocess = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, @@ -3398,15 +3421,15 @@ pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] -pygments = [ +Pygments = [ {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, ] -pyjwt = [ - {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"}, - {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, +PyJWT = [ + {file = "PyJWT-2.5.0-py3-none-any.whl", hash = "sha256:8d82e7087868e94dd8d7d418e5088ce64f7daab4b36db654cbaedb46f9d1ca80"}, + {file = "PyJWT-2.5.0.tar.gz", hash = "sha256:e77ab89480905d86998442ac5788f35333fa85f65047a534adc38edf3c88fc3b"}, ] -pymeta3 = [ +PyMeta3 = [ {file = "PyMeta3-0.5.1.tar.gz", hash = "sha256:18bda326d9a9bbf587bfc0ee0bc96864964d78b067288bcf55d4d98681d05bcb"}, ] pyparsing = [ @@ -3479,7 +3502,7 @@ pywin32-ctypes = [ {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, ] -pyyaml = [ +PyYAML = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, @@ -3602,8 +3625,8 @@ qpd = [ {file = "qpd-0.3.3.tar.gz", hash = "sha256:1d192eb63c4facea82f1c8b2e93df5d4e5f27bc5bbeeca6dd2f88662cd7360d2"}, ] readme-renderer = [ - {file = "readme_renderer-37.0-py3-none-any.whl", hash = "sha256:9fa416704703e509eeb900696751c908ddeb2011319d93700d8f18baff887a69"}, - {file = "readme_renderer-37.0.tar.gz", hash = "sha256:07b7ea234e03e58f77cc222e206e6abb8f4c0435becce5104794ee591f9301c5"}, + {file = "readme_renderer-37.1-py3-none-any.whl", hash = "sha256:16c914ca7731fd062a316a2a8e5434a175ee34661a608af771a60c881f528a34"}, + {file = "readme_renderer-37.1.tar.gz", hash = "sha256:96768c069729f69176f514477e57f2f8cd543fbb2cd7bad372976249fa509a0c"}, ] requests = [ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, @@ -3660,7 +3683,7 @@ scipy = [ {file = "scipy-1.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:3f78181a153fa21c018d346f595edd648344751d7f03ab94b398be2ad083ed3e"}, {file = "scipy-1.7.3.tar.gz", hash = "sha256:ab5875facfdef77e0a47d5fd39ea178b58e60e454a4c85aa1e52fcb80db7babf"}, ] -secretstorage = [ +SecretStorage = [ {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, ] @@ -3684,7 +3707,7 @@ soupsieve = [ {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, ] -sphinx = [ +Sphinx = [ {file = "Sphinx-4.3.2-py3-none-any.whl", hash = "sha256:6a11ea5dd0bdb197f9c2abc2e0ce73e01340464feaece525e64036546d24c851"}, {file = "Sphinx-4.3.2.tar.gz", hash = "sha256:0a8836751a68306b3fe97ecbe44db786f8479c3bf4b80e3a7f5c838657b4698c"}, ] @@ -3705,8 +3728,8 @@ sphinx-copybutton = [ {file = "sphinx_copybutton-0.5.0-py3-none-any.whl", hash = "sha256:9684dec7434bd73f0eea58dda93f9bb879d24bff2d8b187b1f2ec08dfe7b5f48"}, ] sphinx-inline-tabs = [ - {file = "sphinx_inline_tabs-2021.4.11b8-py3-none-any.whl", hash = "sha256:efd6e7ad576a6bc1c616cbaa9b0e6f6fe2b28a776947069ed8d6037667799808"}, - {file = "sphinx_inline_tabs-2021.4.11b8.tar.gz", hash = "sha256:3c4d7759cbbb7752b7e7acd96ed0ea2c58fcc4ae38891a718544b931a5a4818f"}, + {file = "sphinx_inline_tabs-2021.3.28b7-py3-none-any.whl", hash = "sha256:951982fee76fd21ba880182efe6d500872122a2d41a6e4e0ce0b529123500874"}, + {file = "sphinx_inline_tabs-2021.3.28b7.tar.gz", hash = "sha256:e21b7439a4af86fc738a1b74fead87af59640b6e782efe83ef6c3936fc3924ab"}, ] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, @@ -3821,12 +3844,12 @@ tornado = [ {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, ] tqdm = [ - {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, - {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, + {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"}, + {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"}, ] traitlets = [ - {file = "traitlets-5.3.0-py3-none-any.whl", hash = "sha256:65fa18961659635933100db8ca120ef6220555286949774b9cfc106f941d1c7a"}, - {file = "traitlets-5.3.0.tar.gz", hash = "sha256:0bb9f1f9f017aa8ec187d8b1b2a7a6626a2a1d877116baba52a129bfa124f8e2"}, + {file = "traitlets-5.4.0-py3-none-any.whl", hash = "sha256:93663cc8236093d48150e2af5e2ed30fc7904a11a6195e21bab0408af4e6d6c8"}, + {file = "traitlets-5.4.0.tar.gz", hash = "sha256:3f2c4e435e271592fe4390f1746ea56836e3a080f84e7833f0f801d9613fec39"}, ] triad = [ {file = "triad-0.6.8-py3-none-any.whl", hash = "sha256:a19da626f0cee4a91f2472270bb4cfe0851bf8766d5263ae499a5c03c552daf3"}, @@ -3863,8 +3886,8 @@ typed-ast = [ {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, ] types-protobuf = [ - {file = "types-protobuf-3.19.22.tar.gz", hash = "sha256:d2b26861b0cb46a3c8669b0df507b7ef72e487da66d61f9f3576aa76ce028a83"}, - {file = "types_protobuf-3.19.22-py3-none-any.whl", hash = "sha256:d291388678af91bb045fafa864f142dc4ac22f5d4cdca097c7d8d8a32fa9b3ab"}, + {file = "types-protobuf-3.20.4.tar.gz", hash = "sha256:0dad3a5009895c985a56e2837f61902bad9594151265ac0ee907bb16d0b01eb7"}, + {file = "types_protobuf-3.20.4-py3-none-any.whl", hash = "sha256:5082437afe64ce3b31c8db109eae86e02fda11e4d5f9ac59cb8578a8a138aa70"}, ] types-python-dateutil = [ {file = "types-python-dateutil-2.8.19.tar.gz", hash = "sha256:bfd3eb39c7253aea4ba23b10f69b017d30b013662bb4be4ab48b20bbd763f309"}, @@ -3874,7 +3897,7 @@ typing-extensions = [ {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, ] -unidecode = [ +Unidecode = [ {file = "Unidecode-1.3.4-py3-none-any.whl", hash = "sha256:afa04efcdd818a93237574791be9b2817d7077c25a068b00f8cff7baa4e59257"}, {file = "Unidecode-1.3.4.tar.gz", hash = "sha256:8e4352fb93d5a735c788110d2e7ac8e8031eb06ccbfe8d324ab71735015f9342"}, ] @@ -3894,7 +3917,7 @@ webencodings = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] -werkzeug = [ +Werkzeug = [ {file = "Werkzeug-2.1.2-py3-none-any.whl", hash = "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255"}, {file = "Werkzeug-2.1.2.tar.gz", hash = "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6"}, ] From 58aecfa29ba79f13297b1a637bd1f7061b78f89d Mon Sep 17 00:00:00 2001 From: Han Wang Date: Sun, 18 Sep 2022 06:38:40 +0000 Subject: [PATCH 24/33] Fugue Integration --- python/poetry.lock | 78 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/python/poetry.lock b/python/poetry.lock index 6973866db9..2c81798661 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -493,6 +493,67 @@ triad = ">=0.6.8" cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] test = ["speedy_antlr_tool"] +[[package]] +name = "fs" +version = "2.4.16" +description = "Python's filesystem abstraction layer" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +appdirs = ">=1.4.3,<1.5.0" +setuptools = "*" +six = ">=1.10,<2.0" + +[package.extras] +scandir = ["scandir (>=1.5,<2.0)"] + +[[package]] +name = "fugue" +version = "0.7.2" +description = "An abstraction layer for distributed computation" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +adagio = ">=0.2.4" +fugue-sql-antlr = ">=0.1.0" +jinja2 = "*" +pandas = ">=1.0.2" +pyarrow = ">=0.15.1" +qpd = ">=0.3.1" +sqlalchemy = "*" +triad = ">=0.6.6" + +[package.extras] +all = ["dask[dataframe,distributed]", "duckdb (>=0.3.2)", "fugue-sql-antlr[cpp] (>=0.1.0)", "ibis-framework (>=2)", "ipython (>=7.10.0)", "jupyterlab", "notebook", "pyarrow (>=5.0.0)", "pyarrow (>=7.0.0)", "pyspark", "qpd[dask] (>=0.3.1)", "ray (>=2.0.0)"] +cpp_sql_parser = ["fugue-sql-antlr[cpp] (>=0.1.0)"] +dask = ["dask[dataframe,distributed]", "qpd[dask] (>=0.3.1)"] +duckdb = ["duckdb (>=0.3.2)", "numpy", "pyarrow (>=5.0.0)"] +ibis = ["ibis-framework (>=2.1.1)"] +notebook = ["ipython (>=7.10.0)", "jupyterlab", "notebook"] +ray = ["duckdb (>=0.3.2)", "pyarrow (>=7.0.0)", "ray (>=2.0.0)"] +spark = ["pyspark"] + +[[package]] +name = "fugue-sql-antlr" +version = "0.1.1" +description = "Fugue SQL Antlr Parser" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +antlr4-python3-runtime = ">=4.11.1,<4.12" +jinja2 = "*" +triad = ">=0.6.8" + +[package.extras] +cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] +test = ["speedy_antlr_tool"] + [[package]] name = "furo" version = "2022.9.15" @@ -1467,7 +1528,7 @@ name = "pyarrow" version = "8.0.0" description = "Python library for Apache Arrow" category = "main" -optional = true +optional = false python-versions = ">=3.7" [package.dependencies] @@ -2734,6 +2795,17 @@ fugue = [ fugue-sql-antlr = [ {file = "fugue-sql-antlr-0.1.1.tar.gz", hash = "sha256:e276badd471cf3e1659e94ba181896e2b1887de63ef53ac2badc73483b1c9332"}, ] +fs = [ + {file = "fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c"}, + {file = "fs-2.4.16.tar.gz", hash = "sha256:ae97c7d51213f4b70b6a958292530289090de3a7e15841e108fbe144f069d313"}, +] +fugue = [ + {file = "fugue-0.7.2-py3-none-any.whl", hash = "sha256:ffb0c2754eb95c6730725da9dfa265c39df8cbf189fabcbce02a1177145005fa"}, + {file = "fugue-0.7.2.tar.gz", hash = "sha256:8009315e371ab622aed326438c69ba4ad03126c618d48e839c3b18fa1917d441"}, +] +fugue-sql-antlr = [ + {file = "fugue-sql-antlr-0.1.1.tar.gz", hash = "sha256:e276badd471cf3e1659e94ba181896e2b1887de63ef53ac2badc73483b1c9332"}, +] furo = [ {file = "furo-2022.9.15-py3-none-any.whl", hash = "sha256:9129dead1f75e9fb4fa407612f1d5a0d0320767e6156c925aafe36f362f9b11a"}, {file = "furo-2022.9.15.tar.gz", hash = "sha256:4a7ef1c8a3b615171592da4d2ad8a53cc4aacfbe111958890f5f9ff7279066ab"}, @@ -3624,6 +3696,10 @@ qpd = [ {file = "qpd-0.3.3-py3-none-any.whl", hash = "sha256:600b200fbc4fcd701ce06ff4eeedab9fa68bb395add89e2aaa9bd43c519b4fba"}, {file = "qpd-0.3.3.tar.gz", hash = "sha256:1d192eb63c4facea82f1c8b2e93df5d4e5f27bc5bbeeca6dd2f88662cd7360d2"}, ] +qpd = [ + {file = "qpd-0.3.3-py3-none-any.whl", hash = "sha256:600b200fbc4fcd701ce06ff4eeedab9fa68bb395add89e2aaa9bd43c519b4fba"}, + {file = "qpd-0.3.3.tar.gz", hash = "sha256:1d192eb63c4facea82f1c8b2e93df5d4e5f27bc5bbeeca6dd2f88662cd7360d2"}, +] readme-renderer = [ {file = "readme_renderer-37.1-py3-none-any.whl", hash = "sha256:16c914ca7731fd062a316a2a8e5434a175ee34661a608af771a60c881f528a34"}, {file = "readme_renderer-37.1.tar.gz", hash = "sha256:96768c069729f69176f514477e57f2f8cd543fbb2cd7bad372976249fa509a0c"}, From e2054d71366c19a1490587abe6a1f4d6aa1ed80a Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 02:28:17 +0000 Subject: [PATCH 25/33] update --- python/poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/poetry.lock b/python/poetry.lock index 2c81798661..610de3e089 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -498,7 +498,7 @@ name = "fs" version = "2.4.16" description = "Python's filesystem abstraction layer" category = "main" -optional = false +optional = true python-versions = "*" [package.dependencies] @@ -514,7 +514,7 @@ name = "fugue" version = "0.7.2" description = "An abstraction layer for distributed computation" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -542,7 +542,7 @@ name = "fugue-sql-antlr" version = "0.1.1" description = "Fugue SQL Antlr Parser" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -1528,7 +1528,7 @@ name = "pyarrow" version = "8.0.0" description = "Python library for Apache Arrow" category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.dependencies] From ba6bfefcebde2014f524b0f28ef0f1bbac67658a Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 05:04:26 +0000 Subject: [PATCH 26/33] update --- python/poetry.lock | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/poetry.lock b/python/poetry.lock index 610de3e089..caf602947d 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -492,6 +492,8 @@ triad = ">=0.6.8" [package.extras] cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] test = ["speedy_antlr_tool"] +======= +>>>>>>> 7145cbe (update) [[package]] name = "fs" From 91e5cb8a5c8df31f534a0b9294df37773fe512e8 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 05:15:18 +0000 Subject: [PATCH 27/33] update --- python/poetry.lock | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/poetry.lock b/python/poetry.lock index caf602947d..610de3e089 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -492,8 +492,6 @@ triad = ">=0.6.8" [package.extras] cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] test = ["speedy_antlr_tool"] -======= ->>>>>>> 7145cbe (update) [[package]] name = "fs" From c080b7ab08ed2d790efe7d8f8c2d52ca33c95ae5 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 05:26:39 +0000 Subject: [PATCH 28/33] fix --- python/poetry.lock | 543 ++++++++++++++++++--------------------------- 1 file changed, 222 insertions(+), 321 deletions(-) diff --git a/python/poetry.lock b/python/poetry.lock index 610de3e089..c7f5a8ce46 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -99,18 +99,17 @@ tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy [[package]] name = "autoflake" -version = "1.6.0" +version = "1.4" description = "Removes unused imports and unused variables" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = "*" [package.dependencies] pyflakes = ">=1.1.0" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] -name = "Babel" +name = "babel" version = "2.10.3" description = "Internationalization utilities" category = "main" @@ -145,7 +144,7 @@ lxml = ["lxml"] [[package]] name = "black" -version = "22.8.0" +version = "22.6.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -184,14 +183,14 @@ dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0 [[package]] name = "boto3" -version = "1.24.76" +version = "1.24.57" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.7" [package.dependencies] -botocore = ">=1.27.76,<1.28.0" +botocore = ">=1.27.57,<1.28.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -200,7 +199,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.27.76" +version = "1.27.57" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -224,7 +223,7 @@ python-versions = ">=3.5" [[package]] name = "certifi" -version = "2022.9.14" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -274,7 +273,7 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "cloudpickle" -version = "2.2.0" +version = "2.1.0" description = "Extended pickling support for Python objects" category = "main" optional = true @@ -315,7 +314,7 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "38.0.1" +version = "37.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "dev" optional = false @@ -328,13 +327,13 @@ cffi = ">=1.12" docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx_rtd_theme"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools-rust (>=0.11.4)"] +sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] [[package]] name = "databricks-cli" -version = "0.17.3" +version = "0.17.2" description = "A command line interface for Databricks" category = "main" optional = true @@ -374,7 +373,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "distlib" -version = "0.3.6" +version = "0.3.5" description = "Distribution utilities" category = "dev" optional = false @@ -398,7 +397,7 @@ python-versions = ">=3.6" [[package]] name = "fastjsonschema" -version = "2.16.2" +version = "2.16.1" description = "Fastest Python implementation of JSON schema" category = "main" optional = false @@ -493,70 +492,9 @@ triad = ">=0.6.8" cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] test = ["speedy_antlr_tool"] -[[package]] -name = "fs" -version = "2.4.16" -description = "Python's filesystem abstraction layer" -category = "main" -optional = true -python-versions = "*" - -[package.dependencies] -appdirs = ">=1.4.3,<1.5.0" -setuptools = "*" -six = ">=1.10,<2.0" - -[package.extras] -scandir = ["scandir (>=1.5,<2.0)"] - -[[package]] -name = "fugue" -version = "0.7.2" -description = "An abstraction layer for distributed computation" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.dependencies] -adagio = ">=0.2.4" -fugue-sql-antlr = ">=0.1.0" -jinja2 = "*" -pandas = ">=1.0.2" -pyarrow = ">=0.15.1" -qpd = ">=0.3.1" -sqlalchemy = "*" -triad = ">=0.6.6" - -[package.extras] -all = ["dask[dataframe,distributed]", "duckdb (>=0.3.2)", "fugue-sql-antlr[cpp] (>=0.1.0)", "ibis-framework (>=2)", "ipython (>=7.10.0)", "jupyterlab", "notebook", "pyarrow (>=5.0.0)", "pyarrow (>=7.0.0)", "pyspark", "qpd[dask] (>=0.3.1)", "ray (>=2.0.0)"] -cpp_sql_parser = ["fugue-sql-antlr[cpp] (>=0.1.0)"] -dask = ["dask[dataframe,distributed]", "qpd[dask] (>=0.3.1)"] -duckdb = ["duckdb (>=0.3.2)", "numpy", "pyarrow (>=5.0.0)"] -ibis = ["ibis-framework (>=2.1.1)"] -notebook = ["ipython (>=7.10.0)", "jupyterlab", "notebook"] -ray = ["duckdb (>=0.3.2)", "pyarrow (>=7.0.0)", "ray (>=2.0.0)"] -spark = ["pyspark"] - -[[package]] -name = "fugue-sql-antlr" -version = "0.1.1" -description = "Fugue SQL Antlr Parser" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.dependencies] -antlr4-python3-runtime = ">=4.11.1,<4.12" -jinja2 = "*" -triad = ">=0.6.8" - -[package.extras] -cpp = ["fugue-sql-antlr-cpp (==0.1.1)"] -test = ["speedy_antlr_tool"] - [[package]] name = "furo" -version = "2022.9.15" +version = "2022.6.21" description = "A clean customisable Sphinx documentation theme." category = "main" optional = true @@ -564,7 +502,7 @@ python-versions = ">=3.7" [package.dependencies] beautifulsoup4 = "*" -pygments = ">=2.7" +pygments = "*" sphinx = ">=4.0,<6.0" sphinx-basic-ng = "*" @@ -580,7 +518,7 @@ python-versions = ">=3.6" smmap = ">=3.0.1,<6" [[package]] -name = "GitPython" +name = "gitpython" version = "3.1.27" description = "GitPython is a python library used to interact with Git repositories" category = "main" @@ -604,7 +542,7 @@ docs = ["Sphinx"] [[package]] name = "identify" -version = "2.5.5" +version = "2.5.3" description = "File identification library for Python" category = "dev" optional = false @@ -615,7 +553,7 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.4" +version = "3.3" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -671,7 +609,7 @@ python-versions = "*" [[package]] name = "ipykernel" -version = "6.15.3" +version = "6.15.1" description = "IPython Kernel for Jupyter" category = "dev" optional = false @@ -727,7 +665,7 @@ qtconsole = ["qtconsole"] test = ["ipykernel", "nbformat", "nose (>=0.10.1)", "numpy (>=1.17)", "pygments", "requests", "testpath"] [[package]] -name = "ipython_genutils" +name = "ipython-genutils" version = "0.2.0" description = "Vestigial utilities from IPython" category = "main" @@ -776,7 +714,7 @@ test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "te trio = ["async_generator", "trio"] [[package]] -name = "Jinja2" +name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." category = "main" @@ -799,7 +737,7 @@ python-versions = ">=3.7" [[package]] name = "jsonschema" -version = "4.16.0" +version = "4.14.0" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -819,7 +757,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jupyter-client" -version = "7.3.5" +version = "7.3.4" description = "Jupyter protocol implementation and client libraries" category = "main" optional = false @@ -831,7 +769,7 @@ jupyter-core = ">=4.9.2" nest-asyncio = ">=1.5.4" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" -tornado = ">=6.2" +tornado = ">=6.0" traitlets = "*" [package.extras] @@ -863,7 +801,7 @@ python-versions = ">=3.7" [[package]] name = "keyring" -version = "23.9.3" +version = "23.8.2" description = "Store and access your passwords safely." category = "dev" optional = false @@ -871,7 +809,6 @@ python-versions = ">=3.7" [package.dependencies] importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} -"jaraco.classes" = "*" jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_platform == \"win32\""} SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} @@ -937,7 +874,7 @@ rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx- testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] -name = "MarkupSafe" +name = "markupsafe" version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" @@ -997,7 +934,7 @@ python-versions = "*" [[package]] name = "mlflow-skinny" -version = "1.29.0" +version = "1.28.0" description = "MLflow: A Platform for ML Development and Productionization" category = "main" optional = true @@ -1023,14 +960,6 @@ extras = ["azureml-core (>=1.2.0)", "boto3", "google-cloud-storage (>=1.30.0)", pipelines = ["Jinja2 (>=3.0)", "ipython (>=7.0)", "markdown (>=3.3)", "pandas-profiling (>=3.1)", "pyarrow (>=7.0)", "scikit-learn (>=1.0)", "shap (>=0.40)"] sqlserver = ["mlflow-dbstore"] -[[package]] -name = "more-itertools" -version = "8.14.0" -description = "More routines for operating on iterables, beyond itertools" -category = "dev" -optional = false -python-versions = ">=3.5" - [[package]] name = "moto" version = "3.1.18" @@ -1106,15 +1035,15 @@ python-versions = "*" [[package]] name = "mypy-protobuf" -version = "3.3.0" +version = "3.2.0" description = "Generate mypy stub files from protobuf specs" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] -protobuf = ">=3.19.4" -types-protobuf = ">=3.19.12" +protobuf = ">=3.19.3" +types-protobuf = ">=3.19.5" [[package]] name = "myst-parser" @@ -1141,7 +1070,7 @@ testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest [[package]] name = "nbclient" -version = "0.6.8" +version = "0.6.7" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." category = "main" optional = false @@ -1195,7 +1124,7 @@ webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.5.0" +version = "5.4.0" description = "The Jupyter Notebook format" category = "main" optional = false @@ -1204,7 +1133,7 @@ python-versions = ">=3.7" [package.dependencies] fastjsonschema = "*" jsonschema = ">=2.6" -jupyter_core = "*" +jupyter-core = "*" traitlets = ">=5.1" [package.extras] @@ -1255,7 +1184,7 @@ python-versions = ">=3.7" [[package]] name = "oauthlib" -version = "3.2.1" +version = "3.2.0" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" category = "main" optional = true @@ -1287,10 +1216,10 @@ python-versions = ">=3.7.1" [package.dependencies] numpy = [ - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, {version = ">=1.17.3", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, ] python-dateutil = ">=2.7.3" pytz = ">=2017.3" @@ -1361,11 +1290,11 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.10.1" +version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "pep8" @@ -1395,7 +1324,7 @@ optional = false python-versions = "*" [[package]] -name = "Pillow" +name = "pillow" version = "9.2.0" description = "Python Imaging Library (Fork)" category = "main" @@ -1418,7 +1347,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" testing = ["coverage", "nose"] [[package]] -name = "pkgutil_resolve_name" +name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." category = "main" @@ -1471,7 +1400,7 @@ virtualenv = ">=20.0.8" [[package]] name = "prompt-toolkit" -version = "3.0.31" +version = "3.0.30" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -1482,7 +1411,7 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.21.6" +version = "4.21.5" description = "" category = "main" optional = false @@ -1490,7 +1419,7 @@ python-versions = ">=3.7" [[package]] name = "psutil" -version = "5.9.2" +version = "5.9.1" description = "Cross-platform lib for process and system monitoring in Python." category = "dev" optional = false @@ -1562,7 +1491,7 @@ optional = false python-versions = ">=3.6" [[package]] -name = "Pygments" +name = "pygments" version = "2.13.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" @@ -1573,12 +1502,12 @@ python-versions = ">=3.6" plugins = ["importlib-metadata"] [[package]] -name = "PyJWT" -version = "2.5.0" +name = "pyjwt" +version = "2.4.0" description = "JSON Web Token implementation in Python" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.6" [package.extras] crypto = ["cryptography (>=3.3.1)"] @@ -1587,7 +1516,7 @@ docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] -name = "PyMeta3" +name = "pymeta3" version = "0.5.1" description = "Pattern-matching language based on OMeta for Python 3 and 2" category = "main" @@ -1717,7 +1646,7 @@ optional = false python-versions = "*" [[package]] -name = "PyYAML" +name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" category = "main" @@ -1726,7 +1655,7 @@ python-versions = ">=3.6" [[package]] name = "pyzmq" -version = "24.0.0" +version = "23.2.1" description = "Python bindings for 0MQ" category = "main" optional = false @@ -1758,7 +1687,7 @@ ray = ["modin[ray] (>=0.8.1.1)", "pandas (>=1.1.2)"] [[package]] name = "readme-renderer" -version = "37.1" +version = "37.0" description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" category = "dev" optional = false @@ -1870,7 +1799,7 @@ python-versions = ">=3.7,<3.11" numpy = ">=1.16.5,<1.23.0" [[package]] -name = "SecretStorage" +name = "secretstorage" version = "3.3.3" description = "Python bindings to FreeDesktop.org Secret Service API" category = "dev" @@ -1927,7 +1856,7 @@ optional = true python-versions = ">=3.6" [[package]] -name = "Sphinx" +name = "sphinx" version = "4.3.2" description = "Python documentation generator" category = "main" @@ -2025,7 +1954,7 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme"] [[package]] name = "sphinx-inline-tabs" -version = "2021.3.28b7" +version = "2021.4.11b8" description = "Add inline tabbed content to your Sphinx documentation." category = "main" optional = true @@ -2232,7 +2161,7 @@ python-versions = ">= 3.7" [[package]] name = "tqdm" -version = "4.64.1" +version = "4.64.0" description = "Fast, Extensible Progress Meter" category = "dev" optional = false @@ -2249,7 +2178,7 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.4.0" +version = "5.3.0" description = "" category = "main" optional = false @@ -2305,7 +2234,7 @@ python-versions = ">=3.6" [[package]] name = "types-protobuf" -version = "3.20.4" +version = "3.19.22" description = "Typing stubs for protobuf" category = "dev" optional = false @@ -2328,7 +2257,7 @@ optional = false python-versions = ">=3.7" [[package]] -name = "Unidecode" +name = "unidecode" version = "1.3.4" description = "ASCII transliterations of Unicode text" category = "main" @@ -2383,7 +2312,7 @@ optional = false python-versions = "*" [[package]] -name = "Werkzeug" +name = "werkzeug" version = "2.1.2" description = "The comprehensive WSGI web application library." category = "dev" @@ -2498,10 +2427,9 @@ attrs = [ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] autoflake = [ - {file = "autoflake-1.6.0-py2.py3-none-any.whl", hash = "sha256:d5de7da3786809bbdedbdbdeecbb410d55277b3492a4a3ede882998f1e87f156"}, - {file = "autoflake-1.6.0.tar.gz", hash = "sha256:6d313038abf4ad829cb88c9b01cd16387369ac529842bcd7f25a967ab4e99b8f"}, + {file = "autoflake-1.4.tar.gz", hash = "sha256:61a353012cff6ab94ca062823d1fb2f692c4acda51c76ff83a8d77915fba51ea"}, ] -Babel = [ +babel = [ {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, ] @@ -2514,49 +2442,49 @@ beautifulsoup4 = [ {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, ] black = [ - {file = "black-22.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce957f1d6b78a8a231b18e0dd2d94a33d2ba738cd88a7fe64f53f659eea49fdd"}, - {file = "black-22.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5107ea36b2b61917956d018bd25129baf9ad1125e39324a9b18248d362156a27"}, - {file = "black-22.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8166b7bfe5dcb56d325385bd1d1e0f635f24aae14b3ae437102dedc0c186747"}, - {file = "black-22.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd82842bb272297503cbec1a2600b6bfb338dae017186f8f215c8958f8acf869"}, - {file = "black-22.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d839150f61d09e7217f52917259831fe2b689f5c8e5e32611736351b89bb2a90"}, - {file = "black-22.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a05da0430bd5ced89176db098567973be52ce175a55677436a271102d7eaa3fe"}, - {file = "black-22.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a098a69a02596e1f2a58a2a1c8d5a05d5a74461af552b371e82f9fa4ada8342"}, - {file = "black-22.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:5594efbdc35426e35a7defa1ea1a1cb97c7dbd34c0e49af7fb593a36bd45edab"}, - {file = "black-22.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983526af1bea1e4cf6768e649990f28ee4f4137266921c2c3cee8116ae42ec3"}, - {file = "black-22.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b2c25f8dea5e8444bdc6788a2f543e1fb01494e144480bc17f806178378005e"}, - {file = "black-22.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:78dd85caaab7c3153054756b9fe8c611efa63d9e7aecfa33e533060cb14b6d16"}, - {file = "black-22.8.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cea1b2542d4e2c02c332e83150e41e3ca80dc0fb8de20df3c5e98e242156222c"}, - {file = "black-22.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b879eb439094751185d1cfdca43023bc6786bd3c60372462b6f051efa6281a5"}, - {file = "black-22.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a12e4e1353819af41df998b02c6742643cfef58282915f781d0e4dd7a200411"}, - {file = "black-22.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a73f66b6d5ba7288cd5d6dad9b4c9b43f4e8a4b789a94bf5abfb878c663eb3"}, - {file = "black-22.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:e981e20ec152dfb3e77418fb616077937378b322d7b26aa1ff87717fb18b4875"}, - {file = "black-22.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8ce13ffed7e66dda0da3e0b2eb1bdfc83f5812f66e09aca2b0978593ed636b6c"}, - {file = "black-22.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:32a4b17f644fc288c6ee2bafdf5e3b045f4eff84693ac069d87b1a347d861497"}, - {file = "black-22.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ad827325a3a634bae88ae7747db1a395d5ee02cf05d9aa7a9bd77dfb10e940c"}, - {file = "black-22.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53198e28a1fb865e9fe97f88220da2e44df6da82b18833b588b1883b16bb5d41"}, - {file = "black-22.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:bc4d4123830a2d190e9cc42a2e43570f82ace35c3aeb26a512a2102bce5af7ec"}, - {file = "black-22.8.0-py3-none-any.whl", hash = "sha256:d2c21d439b2baf7aa80d6dd4e3659259be64c6f49dfd0f32091063db0e006db4"}, - {file = "black-22.8.0.tar.gz", hash = "sha256:792f7eb540ba9a17e8656538701d3eb1afcb134e3b45b71f20b25c77a8db7e6e"}, + {file = "black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, + {file = "black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, + {file = "black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, + {file = "black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, + {file = "black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, + {file = "black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, + {file = "black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, + {file = "black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, + {file = "black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, + {file = "black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, + {file = "black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, + {file = "black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, + {file = "black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, + {file = "black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, + {file = "black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, + {file = "black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, + {file = "black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, + {file = "black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, + {file = "black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, + {file = "black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, + {file = "black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, + {file = "black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, + {file = "black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, ] bleach = [ {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"}, {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"}, ] boto3 = [ - {file = "boto3-1.24.76-py3-none-any.whl", hash = "sha256:5bfcced1a30597b06b3426024c7a9220526882e8fc2dd255f03b9389b5ad8623"}, - {file = "boto3-1.24.76.tar.gz", hash = "sha256:aee98e60c7d2ce1396a3beaf47f8ff749e64804cbdaed8e19d4338a6f628f2dc"}, + {file = "boto3-1.24.57-py3-none-any.whl", hash = "sha256:74a50c718594a38fa846ce6951ea4704a5836194e2d4055e959baef39299d283"}, + {file = "boto3-1.24.57.tar.gz", hash = "sha256:1be1aa320ef33d6e10e82adea3caeb0d2c185284457d1e2406339b44f45d7565"}, ] botocore = [ - {file = "botocore-1.27.76-py3-none-any.whl", hash = "sha256:0d4a67801e5a4be4cd84795320ad9fb8c315ed1e7a63e1191b2b3f7a7171d43c"}, - {file = "botocore-1.27.76.tar.gz", hash = "sha256:b5c32922eba727a466f171dcc281f309d2a313e2f6dc592d43044caad96de338"}, + {file = "botocore-1.27.57-py3-none-any.whl", hash = "sha256:e55510321dba95065a071909177ab6d4e1621b41f090cefe54252af9b0766855"}, + {file = "botocore-1.27.57.tar.gz", hash = "sha256:f3dd75a789ac1a3e3f06fe0725ee138522c106c4e6abc917a4915617c4a32662"}, ] bump2version = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, ] certifi = [ - {file = "certifi-2022.9.14-py3-none-any.whl", hash = "sha256:e232343de1ab72c2aa521b625c80f699e356830fd0e2c620b465b304b17b0516"}, - {file = "certifi-2022.9.14.tar.gz", hash = "sha256:36973885b9542e6bd01dea287b2b4b3b21236307c56324fcc3f1160f2d655ed5"}, + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, ] cffi = [ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, @@ -2637,8 +2565,8 @@ click = [ {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] cloudpickle = [ - {file = "cloudpickle-2.2.0-py3-none-any.whl", hash = "sha256:7428798d5926d8fcbfd092d18d01a2a03daf8237d8fcdc8095d256b8490796f0"}, - {file = "cloudpickle-2.2.0.tar.gz", hash = "sha256:3f4219469c55453cfe4737e564b67c2a149109dabf7f242478948b895f61106f"}, + {file = "cloudpickle-2.1.0-py3-none-any.whl", hash = "sha256:b5c434f75c34624eedad3a14f2be5ac3b5384774d5b0e3caf905c21479e6c4b1"}, + {file = "cloudpickle-2.1.0.tar.gz", hash = "sha256:bb233e876a58491d9590a676f93c7a5473a08f747d5ab9df7f9ce564b3e7938e"}, ] colorama = [ {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, @@ -2701,36 +2629,32 @@ coverage = [ {file = "coverage-6.4.4.tar.gz", hash = "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58"}, ] cryptography = [ - {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"}, - {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"}, - {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"}, - {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"}, - {file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"}, - {file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, - {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, + {file = "cryptography-37.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884"}, + {file = "cryptography-37.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6"}, + {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046"}, + {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5"}, + {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b"}, + {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8"}, + {file = "cryptography-37.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280"}, + {file = "cryptography-37.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3"}, + {file = "cryptography-37.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59"}, + {file = "cryptography-37.0.4-cp36-abi3-win32.whl", hash = "sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157"}, + {file = "cryptography-37.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327"}, + {file = "cryptography-37.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b"}, + {file = "cryptography-37.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9"}, + {file = "cryptography-37.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67"}, + {file = "cryptography-37.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d"}, + {file = "cryptography-37.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282"}, + {file = "cryptography-37.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa"}, + {file = "cryptography-37.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441"}, + {file = "cryptography-37.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596"}, + {file = "cryptography-37.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a"}, + {file = "cryptography-37.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab"}, + {file = "cryptography-37.0.4.tar.gz", hash = "sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82"}, ] databricks-cli = [ - {file = "databricks-cli-0.17.3.tar.gz", hash = "sha256:2f00f3e70e859809f0595885ec76fc73ba60ad0cccd69564f7df5d95b6c90066"}, - {file = "databricks_cli-0.17.3-py2-none-any.whl", hash = "sha256:f090c2e4f99c39d69a7f7228e6c7df8cb1cebd5fddad6292e0625daf29d4be01"}, + {file = "databricks-cli-0.17.2.tar.gz", hash = "sha256:16bda8def2fd8e361e8f355a016841bc1b8a87da25047f5339acf559fa55f1fb"}, + {file = "databricks_cli-0.17.2-py2-none-any.whl", hash = "sha256:cdcc073df0c79efc12f3220f8b76d3247aed88624338eb531c381123601bf36d"}, ] debugpy = [ {file = "debugpy-1.6.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:c4b2bd5c245eeb49824bf7e539f95fb17f9a756186e51c3e513e32999d8846f3"}, @@ -2761,8 +2685,8 @@ defusedxml = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] distlib = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, + {file = "distlib-0.3.5-py2.py3-none-any.whl", hash = "sha256:b710088c59f06338ca514800ad795a132da19fda270e3ce4affc74abf955a26c"}, + {file = "distlib-0.3.5.tar.gz", hash = "sha256:a7f75737c70be3b25e2bee06288cec4e4c221de18455b2dd037fe2a795cab2fe"}, ] docutils = [ {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, @@ -2773,8 +2697,8 @@ entrypoints = [ {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, ] fastjsonschema = [ - {file = "fastjsonschema-2.16.2-py3-none-any.whl", hash = "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"}, - {file = "fastjsonschema-2.16.2.tar.gz", hash = "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18"}, + {file = "fastjsonschema-2.16.1-py3-none-any.whl", hash = "sha256:2f7158c4de792555753d6c2277d6a2af2d406dfd97aeca21d17173561ede4fe6"}, + {file = "fastjsonschema-2.16.1.tar.gz", hash = "sha256:d6fa3ffbe719768d70e298b9fb847484e2bdfdb7241ed052b8d57a9294a8c334"}, ] filelock = [ {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, @@ -2795,26 +2719,15 @@ fugue = [ fugue-sql-antlr = [ {file = "fugue-sql-antlr-0.1.1.tar.gz", hash = "sha256:e276badd471cf3e1659e94ba181896e2b1887de63ef53ac2badc73483b1c9332"}, ] -fs = [ - {file = "fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c"}, - {file = "fs-2.4.16.tar.gz", hash = "sha256:ae97c7d51213f4b70b6a958292530289090de3a7e15841e108fbe144f069d313"}, -] -fugue = [ - {file = "fugue-0.7.2-py3-none-any.whl", hash = "sha256:ffb0c2754eb95c6730725da9dfa265c39df8cbf189fabcbce02a1177145005fa"}, - {file = "fugue-0.7.2.tar.gz", hash = "sha256:8009315e371ab622aed326438c69ba4ad03126c618d48e839c3b18fa1917d441"}, -] -fugue-sql-antlr = [ - {file = "fugue-sql-antlr-0.1.1.tar.gz", hash = "sha256:e276badd471cf3e1659e94ba181896e2b1887de63ef53ac2badc73483b1c9332"}, -] furo = [ - {file = "furo-2022.9.15-py3-none-any.whl", hash = "sha256:9129dead1f75e9fb4fa407612f1d5a0d0320767e6156c925aafe36f362f9b11a"}, - {file = "furo-2022.9.15.tar.gz", hash = "sha256:4a7ef1c8a3b615171592da4d2ad8a53cc4aacfbe111958890f5f9ff7279066ab"}, + {file = "furo-2022.6.21-py3-none-any.whl", hash = "sha256:061b68e323345e27fcba024cf33a1e77f3dfd8d9987410be822749a706e2add6"}, + {file = "furo-2022.6.21.tar.gz", hash = "sha256:9aa983b7488a4601d13113884bfb7254502c8729942e073a0acb87a5512af223"}, ] gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, ] -GitPython = [ +gitpython = [ {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, ] @@ -2875,12 +2788,12 @@ greenlet = [ {file = "greenlet-1.1.3.tar.gz", hash = "sha256:bcb6c6dd1d6be6d38d6db283747d07fda089ff8c559a835236560a4410340455"}, ] identify = [ - {file = "identify-2.5.5-py2.py3-none-any.whl", hash = "sha256:ef78c0d96098a3b5fe7720be4a97e73f439af7cf088ebf47b620aeaa10fadf97"}, - {file = "identify-2.5.5.tar.gz", hash = "sha256:322a5699daecf7c6fd60e68852f36f2ecbb6a36ff6e6e973e0d2bb6fca203ee6"}, + {file = "identify-2.5.3-py2.py3-none-any.whl", hash = "sha256:25851c8c1370effb22aaa3c987b30449e9ff0cece408f810ae6ce408fdd20893"}, + {file = "identify-2.5.3.tar.gz", hash = "sha256:887e7b91a1be152b0d46bbf072130235a8117392b9f1828446079a816a05ef44"}, ] idna = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] imagesize = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, @@ -2899,14 +2812,14 @@ iniconfig = [ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] ipykernel = [ - {file = "ipykernel-6.15.3-py3-none-any.whl", hash = "sha256:befe3736944b21afec8e832725e9a45f254c8bd9afc40b61d6661c97e45aff5a"}, - {file = "ipykernel-6.15.3.tar.gz", hash = "sha256:b81d57b0e171670844bf29cdc11562b1010d3da87115c4513e0ee660a8368765"}, + {file = "ipykernel-6.15.1-py3-none-any.whl", hash = "sha256:d8969c5b23b0e453a23166da5a669c954db399789293fcb03fec5cb25367e43c"}, + {file = "ipykernel-6.15.1.tar.gz", hash = "sha256:37acc3254caa8a0dafcddddc8dc863a60ad1b46487b68aee361d9a15bda98112"}, ] ipython = [ {file = "ipython-7.34.0-py3-none-any.whl", hash = "sha256:c175d2440a1caff76116eb719d40538fbb316e214eda85c5515c303aacbfb23e"}, {file = "ipython-7.34.0.tar.gz", hash = "sha256:af3bdb46aa292bce5615b1b2ebc76c2080c5f77f54bda2ec72461317273e7cd6"}, ] -ipython_genutils = [ +ipython-genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, ] @@ -2914,10 +2827,6 @@ isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] -"jaraco.classes" = [ - {file = "jaraco.classes-3.2.2-py3-none-any.whl", hash = "sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647"}, - {file = "jaraco.classes-3.2.2.tar.gz", hash = "sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594"}, -] jedi = [ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, @@ -2926,7 +2835,7 @@ jeepney = [ {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, ] -Jinja2 = [ +jinja2 = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] @@ -2935,12 +2844,12 @@ jmespath = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] jsonschema = [ - {file = "jsonschema-4.16.0-py3-none-any.whl", hash = "sha256:9e74b8f9738d6a946d70705dc692b74b5429cd0960d58e79ffecfc43b2221eb9"}, - {file = "jsonschema-4.16.0.tar.gz", hash = "sha256:165059f076eff6971bae5b742fc029a7b4ef3f9bcf04c14e4776a7605de14b23"}, + {file = "jsonschema-4.14.0-py3-none-any.whl", hash = "sha256:9892b8d630a82990521a9ca630d3446bd316b5ad54dbe981338802787f3e0d2d"}, + {file = "jsonschema-4.14.0.tar.gz", hash = "sha256:15062f4cc6f591400cd528d2c355f2cfa6a57e44c820dc783aee5e23d36a831f"}, ] jupyter-client = [ - {file = "jupyter_client-7.3.5-py3-none-any.whl", hash = "sha256:b33222bdc9dd1714228bd286af006533a0abe2bbc093e8f3d29dc0b91bdc2be4"}, - {file = "jupyter_client-7.3.5.tar.gz", hash = "sha256:3c58466a1b8d55dba0bf3ce0834e4f5b7760baf98d1d73db0add6f19de9ecd1d"}, + {file = "jupyter_client-7.3.4-py3-none-any.whl", hash = "sha256:17d74b0d0a7b24f1c8c527b24fcf4607c56bee542ffe8e3418e50b21e514b621"}, + {file = "jupyter_client-7.3.4.tar.gz", hash = "sha256:aa9a6c32054b290374f95f73bb0cae91455c58dfb84f65c8591912b8f65e6d56"}, ] jupyter-core = [ {file = "jupyter_core-4.11.1-py3-none-any.whl", hash = "sha256:715e22bb6cc7db3718fddfac1f69f1c7e899ca00e42bdfd4bf3705452b9fd84a"}, @@ -2951,8 +2860,8 @@ jupyterlab-pygments = [ {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, ] keyring = [ - {file = "keyring-23.9.3-py3-none-any.whl", hash = "sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0"}, - {file = "keyring-23.9.3.tar.gz", hash = "sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5"}, + {file = "keyring-23.8.2-py3-none-any.whl", hash = "sha256:10d2a8639663fe2090705a00b8c47c687cacdf97598ea9c11456679fa974473a"}, + {file = "keyring-23.8.2.tar.gz", hash = "sha256:0d9973f8891850f1ade5f26aafd06bb16865fbbae3fc56b0defb6a14a2624003"}, ] lazy-object-proxy = [ {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, @@ -3072,7 +2981,7 @@ markdown-it-py = [ {file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"}, {file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"}, ] -MarkupSafe = [ +markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, @@ -3135,12 +3044,8 @@ mistune = [ {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"}, ] mlflow-skinny = [ - {file = "mlflow-skinny-1.29.0.tar.gz", hash = "sha256:08fe755ff6742e210a917d9b994004dda16cee5f3852e8f1be36173f2eab92d2"}, - {file = "mlflow_skinny-1.29.0-py3-none-any.whl", hash = "sha256:101615d74fdc05c40c8d669ae4d79205d22d260fac8109535004dbf6fb78c905"}, -] -more-itertools = [ - {file = "more-itertools-8.14.0.tar.gz", hash = "sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750"}, - {file = "more_itertools-8.14.0-py3-none-any.whl", hash = "sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2"}, + {file = "mlflow-skinny-1.28.0.tar.gz", hash = "sha256:18440d8e428713f43c0e0d4b520dce8c04910224c4559ec88f6c3aa388a60ec4"}, + {file = "mlflow_skinny-1.28.0-py3-none-any.whl", hash = "sha256:27aefe0f8fde621ce0ae4d09afdc902ae5e1dfca66f042d7e149425fb1f6f305"}, ] moto = [ {file = "moto-3.1.18-py3-none-any.whl", hash = "sha256:b6eb096e7880c46ac44d6d90988c0043e31462115cfdc913a0ee8f470bd9555c"}, @@ -3176,24 +3081,24 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] mypy-protobuf = [ - {file = "mypy-protobuf-3.3.0.tar.gz", hash = "sha256:24f3b0aecb06656e983f58e07c732a90577b9d7af3e1066fc2b663bbf0370248"}, - {file = "mypy_protobuf-3.3.0-py3-none-any.whl", hash = "sha256:15604f6943b16c05db646903261e3b3e775cf7f7990b7c37b03d043a907b650d"}, + {file = "mypy-protobuf-3.2.0.tar.gz", hash = "sha256:730aa15337c38f0446fbe08f6c6c2370ee01d395125369d4b70e08b1e2ee30ee"}, + {file = "mypy_protobuf-3.2.0-py3-none-any.whl", hash = "sha256:65fc0492165f4a3c0aff69b03e34096fc1453e4dac8f14b4e9c2306cdde06010"}, ] myst-parser = [ {file = "myst-parser-0.17.2.tar.gz", hash = "sha256:4c076d649e066f9f5c7c661bae2658be1ca06e76b002bb97f02a09398707686c"}, {file = "myst_parser-0.17.2-py3-none-any.whl", hash = "sha256:1635ce3c18965a528d6de980f989ff64d6a1effb482e1f611b1bfb79e38f3d98"}, ] nbclient = [ - {file = "nbclient-0.6.8-py3-none-any.whl", hash = "sha256:7cce8b415888539180535953f80ea2385cdbb444944cdeb73ffac1556fdbc228"}, - {file = "nbclient-0.6.8.tar.gz", hash = "sha256:268fde3457cafe1539e32eb1c6d796bbedb90b9e92bacd3e43d83413734bb0e8"}, + {file = "nbclient-0.6.7-py3-none-any.whl", hash = "sha256:d4e32459e7e96783285d1daac92dc2c60ee7b8a82b7cf7d2e55be9d89d7ac463"}, + {file = "nbclient-0.6.7.tar.gz", hash = "sha256:3c5a7fc6bb74be7d31edf2817b44501a65caa99e5e56363bc359649b97cd24b9"}, ] nbconvert = [ {file = "nbconvert-7.0.0-py3-none-any.whl", hash = "sha256:26843ae233167e8aae31c20e3e1d91f431f04c9f34363bbe2dd0d247f772641c"}, {file = "nbconvert-7.0.0.tar.gz", hash = "sha256:fd1e361da30e30e4c5a5ae89f7cae95ca2a4d4407389672473312249a7ba0060"}, ] nbformat = [ - {file = "nbformat-5.5.0-py3-none-any.whl", hash = "sha256:eb21018bbcdb29e7a4b8b29068d4b6794cdad685db8fcd569b97a09a048dc2e4"}, - {file = "nbformat-5.5.0.tar.gz", hash = "sha256:9ebe30e6c3b3e5b47d39ff0a3897a1acf523d2bfafcb4e2d04cdb70f8a66c507"}, + {file = "nbformat-5.4.0-py3-none-any.whl", hash = "sha256:0d6072aaec95dddc39735c144ee8bbc6589c383fb462e4058abc855348152dad"}, + {file = "nbformat-5.4.0.tar.gz", hash = "sha256:44ba5ca6acb80c5d5a500f1e5b83ede8cbe364d5a495c4c8cf60aaf1ba656501"}, ] nbsphinx = [ {file = "nbsphinx-0.8.9-py3-none-any.whl", hash = "sha256:a7d743762249ee6bac3350a91eb3717a6e1c75f239f2c2a85491f9aca5a63be1"}, @@ -3238,8 +3143,8 @@ numpy = [ {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"}, ] oauthlib = [ - {file = "oauthlib-3.2.1-py3-none-any.whl", hash = "sha256:88e912ca1ad915e1dcc1c06fc9259d19de8deacd6fd17cc2df266decc2e49066"}, - {file = "oauthlib-3.2.1.tar.gz", hash = "sha256:1565237372795bf6ee3e5aba5e2a85bd5a65d0e2aa5c628b9a97b7d7a0da3721"}, + {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, + {file = "oauthlib-3.2.0.tar.gz", hash = "sha256:23a8208d75b902797ea29fd31fa80a15ed9dc2c6c16fe73f5d346f83f6fa27a2"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, @@ -3289,8 +3194,8 @@ parso = [ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, ] pathspec = [ - {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, - {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] pep8 = [ {file = "pep8-1.7.1-py2.py3-none-any.whl", hash = "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee"}, @@ -3304,7 +3209,7 @@ pickleshare = [ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] -Pillow = [ +pillow = [ {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"}, @@ -3368,7 +3273,7 @@ pkginfo = [ {file = "pkginfo-1.8.3-py2.py3-none-any.whl", hash = "sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594"}, {file = "pkginfo-1.8.3.tar.gz", hash = "sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"}, ] -pkgutil_resolve_name = [ +pkgutil-resolve-name = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, ] @@ -3385,58 +3290,58 @@ pre-commit = [ {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"}, ] prompt-toolkit = [ - {file = "prompt_toolkit-3.0.31-py3-none-any.whl", hash = "sha256:9696f386133df0fc8ca5af4895afe5d78f5fcfe5258111c2a79a1c3e41ffa96d"}, - {file = "prompt_toolkit-3.0.31.tar.gz", hash = "sha256:9ada952c9d1787f52ff6d5f3484d0b4df8952787c087edf6a1f7c2cb1ea88148"}, + {file = "prompt_toolkit-3.0.30-py3-none-any.whl", hash = "sha256:d8916d3f62a7b67ab353a952ce4ced6a1d2587dfe9ef8ebc30dd7c386751f289"}, + {file = "prompt_toolkit-3.0.30.tar.gz", hash = "sha256:859b283c50bde45f5f97829f77a4674d1c1fcd88539364f1b28a37805cfd89c0"}, ] protobuf = [ - {file = "protobuf-4.21.6-cp310-abi3-win32.whl", hash = "sha256:49f88d56a9180dbb7f6199c920f5bb5c1dd0172f672983bb281298d57c2ac8eb"}, - {file = "protobuf-4.21.6-cp310-abi3-win_amd64.whl", hash = "sha256:7a6cc8842257265bdfd6b74d088b829e44bcac3cca234c5fdd6052730017b9ea"}, - {file = "protobuf-4.21.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ba596b9ffb85c909fcfe1b1a23136224ed678af3faf9912d3fa483d5f9813c4e"}, - {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4143513c766db85b9d7c18dbf8339673c8a290131b2a0fe73855ab20770f72b0"}, - {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b6cea204865595a92a7b240e4b65bcaaca3ad5d2ce25d9db3756eba06041138e"}, - {file = "protobuf-4.21.6-cp37-cp37m-win32.whl", hash = "sha256:9666da97129138585b26afcb63ad4887f602e169cafe754a8258541c553b8b5d"}, - {file = "protobuf-4.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:308173d3e5a3528787bb8c93abea81d5a950bdce62840d9760effc84127fb39c"}, - {file = "protobuf-4.21.6-cp38-cp38-win32.whl", hash = "sha256:aa29113ec901281f29d9d27b01193407a98aa9658b8a777b0325e6d97149f5ce"}, - {file = "protobuf-4.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:8f9e60f7d44592c66e7b332b6a7b4b6e8d8b889393c79dbc3a91f815118f8eac"}, - {file = "protobuf-4.21.6-cp39-cp39-win32.whl", hash = "sha256:80e6540381080715fddac12690ee42d087d0d17395f8d0078dfd6f1181e7be4c"}, - {file = "protobuf-4.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:77b355c8604fe285536155286b28b0c4cbc57cf81b08d8357bf34829ea982860"}, - {file = "protobuf-4.21.6-py2.py3-none-any.whl", hash = "sha256:07a0bb9cc6114f16a39c866dc28b6e3d96fa4ffb9cc1033057412547e6e75cb9"}, - {file = "protobuf-4.21.6-py3-none-any.whl", hash = "sha256:c7c864148a237f058c739ae7a05a2b403c0dfa4ce7d1f3e5213f352ad52d57c6"}, - {file = "protobuf-4.21.6.tar.gz", hash = "sha256:6b1040a5661cd5f6e610cbca9cfaa2a17d60e2bb545309bc1b278bb05be44bdd"}, + {file = "protobuf-4.21.5-cp310-abi3-win32.whl", hash = "sha256:5310cbe761e87f0c1decce019d23f2101521d4dfff46034f8a12a53546036ec7"}, + {file = "protobuf-4.21.5-cp310-abi3-win_amd64.whl", hash = "sha256:e5c5a2886ae48d22a9d32fbb9b6636a089af3cd26b706750258ce1ca96cc0116"}, + {file = "protobuf-4.21.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ee04f5823ed98bb9a8c3b1dc503c49515e0172650875c3f76e225b223793a1f2"}, + {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:b04484d6f42f48c57dd2737a72692f4c6987529cdd148fb5b8e5f616862a2e37"}, + {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e0b272217aad8971763960238c1a1e6a65d50ef7824e23300da97569a251c55"}, + {file = "protobuf-4.21.5-cp37-cp37m-win32.whl", hash = "sha256:5eb0724615e90075f1d763983e708e1cef08e66b1891d8b8b6c33bc3b2f1a02b"}, + {file = "protobuf-4.21.5-cp37-cp37m-win_amd64.whl", hash = "sha256:011c0f267e85f5d73750b6c25f0155d5db1e9443cd3590ab669a6221dd8fcdb0"}, + {file = "protobuf-4.21.5-cp38-cp38-win32.whl", hash = "sha256:7b6f22463e2d1053d03058b7b4ceca6e4ed4c14f8c286c32824df751137bf8e7"}, + {file = "protobuf-4.21.5-cp38-cp38-win_amd64.whl", hash = "sha256:b52e7a522911a40445a5f588bd5b5e584291bfc5545e09b7060685e4b2ff814f"}, + {file = "protobuf-4.21.5-cp39-cp39-win32.whl", hash = "sha256:a7faa62b183d6a928e3daffd06af843b4287d16ef6e40f331575ecd236a7974d"}, + {file = "protobuf-4.21.5-cp39-cp39-win_amd64.whl", hash = "sha256:5e0ce02418ef03d7657a420ae8fd6fec4995ac713a3cb09164e95f694dbcf085"}, + {file = "protobuf-4.21.5-py2.py3-none-any.whl", hash = "sha256:bf711b451212dc5b0fa45ae7dada07d8e71a4b0ff0bc8e4783ee145f47ac4f82"}, + {file = "protobuf-4.21.5-py3-none-any.whl", hash = "sha256:3ec6f5b37935406bb9df9b277e79f8ed81d697146e07ef2ba8a5a272fb24b2c9"}, + {file = "protobuf-4.21.5.tar.gz", hash = "sha256:eb1106e87e095628e96884a877a51cdb90087106ee693925ec0a300468a9be3a"}, ] psutil = [ - {file = "psutil-5.9.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:8f024fbb26c8daf5d70287bb3edfafa22283c255287cf523c5d81721e8e5d82c"}, - {file = "psutil-5.9.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b2f248ffc346f4f4f0d747ee1947963613216b06688be0be2e393986fe20dbbb"}, - {file = "psutil-5.9.2-cp27-cp27m-win32.whl", hash = "sha256:b1928b9bf478d31fdffdb57101d18f9b70ed4e9b0e41af751851813547b2a9ab"}, - {file = "psutil-5.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:404f4816c16a2fcc4eaa36d7eb49a66df2d083e829d3e39ee8759a411dbc9ecf"}, - {file = "psutil-5.9.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:94e621c6a4ddb2573d4d30cba074f6d1aa0186645917df42c811c473dd22b339"}, - {file = "psutil-5.9.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:256098b4f6ffea6441eb54ab3eb64db9ecef18f6a80d7ba91549195d55420f84"}, - {file = "psutil-5.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:614337922702e9be37a39954d67fdb9e855981624d8011a9927b8f2d3c9625d9"}, - {file = "psutil-5.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39ec06dc6c934fb53df10c1672e299145ce609ff0611b569e75a88f313634969"}, - {file = "psutil-5.9.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3ac2c0375ef498e74b9b4ec56df3c88be43fe56cac465627572dbfb21c4be34"}, - {file = "psutil-5.9.2-cp310-cp310-win32.whl", hash = "sha256:e4c4a7636ffc47b7141864f1c5e7d649f42c54e49da2dd3cceb1c5f5d29bfc85"}, - {file = "psutil-5.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:f4cb67215c10d4657e320037109939b1c1d2fd70ca3d76301992f89fe2edb1f1"}, - {file = "psutil-5.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dc9bda7d5ced744622f157cc8d8bdd51735dafcecff807e928ff26bdb0ff097d"}, - {file = "psutil-5.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75291912b945a7351d45df682f9644540d564d62115d4a20d45fa17dc2d48f8"}, - {file = "psutil-5.9.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4018d5f9b6651f9896c7a7c2c9f4652e4eea53f10751c4e7d08a9093ab587ec"}, - {file = "psutil-5.9.2-cp36-cp36m-win32.whl", hash = "sha256:f40ba362fefc11d6bea4403f070078d60053ed422255bd838cd86a40674364c9"}, - {file = "psutil-5.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9770c1d25aee91417eba7869139d629d6328a9422ce1cdd112bd56377ca98444"}, - {file = "psutil-5.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:42638876b7f5ef43cef8dcf640d3401b27a51ee3fa137cb2aa2e72e188414c32"}, - {file = "psutil-5.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91aa0dac0c64688667b4285fa29354acfb3e834e1fd98b535b9986c883c2ce1d"}, - {file = "psutil-5.9.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fb54941aac044a61db9d8eb56fc5bee207db3bc58645d657249030e15ba3727"}, - {file = "psutil-5.9.2-cp37-cp37m-win32.whl", hash = "sha256:7cbb795dcd8ed8fd238bc9e9f64ab188f3f4096d2e811b5a82da53d164b84c3f"}, - {file = "psutil-5.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5d39e3a2d5c40efa977c9a8dd4f679763c43c6c255b1340a56489955dbca767c"}, - {file = "psutil-5.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fd331866628d18223a4265371fd255774affd86244fc307ef66eaf00de0633d5"}, - {file = "psutil-5.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b315febaebae813326296872fdb4be92ad3ce10d1d742a6b0c49fb619481ed0b"}, - {file = "psutil-5.9.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7929a516125f62399d6e8e026129c8835f6c5a3aab88c3fff1a05ee8feb840d"}, - {file = "psutil-5.9.2-cp38-cp38-win32.whl", hash = "sha256:561dec454853846d1dd0247b44c2e66a0a0c490f937086930ec4b8f83bf44f06"}, - {file = "psutil-5.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:67b33f27fc0427483b61563a16c90d9f3b547eeb7af0ef1b9fe024cdc9b3a6ea"}, - {file = "psutil-5.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3591616fa07b15050b2f87e1cdefd06a554382e72866fcc0ab2be9d116486c8"}, - {file = "psutil-5.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b29f581b5edab1f133563272a6011925401804d52d603c5c606936b49c8b97"}, - {file = "psutil-5.9.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4642fd93785a29353d6917a23e2ac6177308ef5e8be5cc17008d885cb9f70f12"}, - {file = "psutil-5.9.2-cp39-cp39-win32.whl", hash = "sha256:ed29ea0b9a372c5188cdb2ad39f937900a10fb5478dc077283bf86eeac678ef1"}, - {file = "psutil-5.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:68b35cbff92d1f7103d8f1db77c977e72f49fcefae3d3d2b91c76b0e7aef48b8"}, - {file = "psutil-5.9.2.tar.gz", hash = "sha256:feb861a10b6c3bb00701063b37e4afc754f8217f0f09c42280586bd6ac712b5c"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"}, + {file = "psutil-5.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af"}, + {file = "psutil-5.9.1-cp27-cp27m-win32.whl", hash = "sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc"}, + {file = "psutil-5.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0"}, + {file = "psutil-5.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22"}, + {file = "psutil-5.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8"}, + {file = "psutil-5.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de"}, + {file = "psutil-5.9.1-cp310-cp310-win32.whl", hash = "sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329"}, + {file = "psutil-5.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021"}, + {file = "psutil-5.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453"}, + {file = "psutil-5.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685"}, + {file = "psutil-5.9.1-cp36-cp36m-win32.whl", hash = "sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36"}, + {file = "psutil-5.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d"}, + {file = "psutil-5.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676"}, + {file = "psutil-5.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4"}, + {file = "psutil-5.9.1-cp37-cp37m-win32.whl", hash = "sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b"}, + {file = "psutil-5.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680"}, + {file = "psutil-5.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4"}, + {file = "psutil-5.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b"}, + {file = "psutil-5.9.1-cp38-cp38-win32.whl", hash = "sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689"}, + {file = "psutil-5.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0"}, + {file = "psutil-5.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e"}, + {file = "psutil-5.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537"}, + {file = "psutil-5.9.1-cp39-cp39-win32.whl", hash = "sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574"}, + {file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"}, + {file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"}, ] ptyprocess = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, @@ -3493,15 +3398,15 @@ pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] -Pygments = [ +pygments = [ {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, ] -PyJWT = [ - {file = "PyJWT-2.5.0-py3-none-any.whl", hash = "sha256:8d82e7087868e94dd8d7d418e5088ce64f7daab4b36db654cbaedb46f9d1ca80"}, - {file = "PyJWT-2.5.0.tar.gz", hash = "sha256:e77ab89480905d86998442ac5788f35333fa85f65047a534adc38edf3c88fc3b"}, +pyjwt = [ + {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"}, + {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, ] -PyMeta3 = [ +pymeta3 = [ {file = "PyMeta3-0.5.1.tar.gz", hash = "sha256:18bda326d9a9bbf587bfc0ee0bc96864964d78b067288bcf55d4d98681d05bcb"}, ] pyparsing = [ @@ -3574,7 +3479,7 @@ pywin32-ctypes = [ {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, ] -PyYAML = [ +pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, @@ -3696,13 +3601,9 @@ qpd = [ {file = "qpd-0.3.3-py3-none-any.whl", hash = "sha256:600b200fbc4fcd701ce06ff4eeedab9fa68bb395add89e2aaa9bd43c519b4fba"}, {file = "qpd-0.3.3.tar.gz", hash = "sha256:1d192eb63c4facea82f1c8b2e93df5d4e5f27bc5bbeeca6dd2f88662cd7360d2"}, ] -qpd = [ - {file = "qpd-0.3.3-py3-none-any.whl", hash = "sha256:600b200fbc4fcd701ce06ff4eeedab9fa68bb395add89e2aaa9bd43c519b4fba"}, - {file = "qpd-0.3.3.tar.gz", hash = "sha256:1d192eb63c4facea82f1c8b2e93df5d4e5f27bc5bbeeca6dd2f88662cd7360d2"}, -] readme-renderer = [ - {file = "readme_renderer-37.1-py3-none-any.whl", hash = "sha256:16c914ca7731fd062a316a2a8e5434a175ee34661a608af771a60c881f528a34"}, - {file = "readme_renderer-37.1.tar.gz", hash = "sha256:96768c069729f69176f514477e57f2f8cd543fbb2cd7bad372976249fa509a0c"}, + {file = "readme_renderer-37.0-py3-none-any.whl", hash = "sha256:9fa416704703e509eeb900696751c908ddeb2011319d93700d8f18baff887a69"}, + {file = "readme_renderer-37.0.tar.gz", hash = "sha256:07b7ea234e03e58f77cc222e206e6abb8f4c0435becce5104794ee591f9301c5"}, ] requests = [ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, @@ -3759,7 +3660,7 @@ scipy = [ {file = "scipy-1.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:3f78181a153fa21c018d346f595edd648344751d7f03ab94b398be2ad083ed3e"}, {file = "scipy-1.7.3.tar.gz", hash = "sha256:ab5875facfdef77e0a47d5fd39ea178b58e60e454a4c85aa1e52fcb80db7babf"}, ] -SecretStorage = [ +secretstorage = [ {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, ] @@ -3783,7 +3684,7 @@ soupsieve = [ {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, ] -Sphinx = [ +sphinx = [ {file = "Sphinx-4.3.2-py3-none-any.whl", hash = "sha256:6a11ea5dd0bdb197f9c2abc2e0ce73e01340464feaece525e64036546d24c851"}, {file = "Sphinx-4.3.2.tar.gz", hash = "sha256:0a8836751a68306b3fe97ecbe44db786f8479c3bf4b80e3a7f5c838657b4698c"}, ] @@ -3804,8 +3705,8 @@ sphinx-copybutton = [ {file = "sphinx_copybutton-0.5.0-py3-none-any.whl", hash = "sha256:9684dec7434bd73f0eea58dda93f9bb879d24bff2d8b187b1f2ec08dfe7b5f48"}, ] sphinx-inline-tabs = [ - {file = "sphinx_inline_tabs-2021.3.28b7-py3-none-any.whl", hash = "sha256:951982fee76fd21ba880182efe6d500872122a2d41a6e4e0ce0b529123500874"}, - {file = "sphinx_inline_tabs-2021.3.28b7.tar.gz", hash = "sha256:e21b7439a4af86fc738a1b74fead87af59640b6e782efe83ef6c3936fc3924ab"}, + {file = "sphinx_inline_tabs-2021.4.11b8-py3-none-any.whl", hash = "sha256:efd6e7ad576a6bc1c616cbaa9b0e6f6fe2b28a776947069ed8d6037667799808"}, + {file = "sphinx_inline_tabs-2021.4.11b8.tar.gz", hash = "sha256:3c4d7759cbbb7752b7e7acd96ed0ea2c58fcc4ae38891a718544b931a5a4818f"}, ] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, @@ -3920,12 +3821,12 @@ tornado = [ {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, ] tqdm = [ - {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"}, - {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"}, + {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, + {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, ] traitlets = [ - {file = "traitlets-5.4.0-py3-none-any.whl", hash = "sha256:93663cc8236093d48150e2af5e2ed30fc7904a11a6195e21bab0408af4e6d6c8"}, - {file = "traitlets-5.4.0.tar.gz", hash = "sha256:3f2c4e435e271592fe4390f1746ea56836e3a080f84e7833f0f801d9613fec39"}, + {file = "traitlets-5.3.0-py3-none-any.whl", hash = "sha256:65fa18961659635933100db8ca120ef6220555286949774b9cfc106f941d1c7a"}, + {file = "traitlets-5.3.0.tar.gz", hash = "sha256:0bb9f1f9f017aa8ec187d8b1b2a7a6626a2a1d877116baba52a129bfa124f8e2"}, ] triad = [ {file = "triad-0.6.8-py3-none-any.whl", hash = "sha256:a19da626f0cee4a91f2472270bb4cfe0851bf8766d5263ae499a5c03c552daf3"}, @@ -3962,8 +3863,8 @@ typed-ast = [ {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, ] types-protobuf = [ - {file = "types-protobuf-3.20.4.tar.gz", hash = "sha256:0dad3a5009895c985a56e2837f61902bad9594151265ac0ee907bb16d0b01eb7"}, - {file = "types_protobuf-3.20.4-py3-none-any.whl", hash = "sha256:5082437afe64ce3b31c8db109eae86e02fda11e4d5f9ac59cb8578a8a138aa70"}, + {file = "types-protobuf-3.19.22.tar.gz", hash = "sha256:d2b26861b0cb46a3c8669b0df507b7ef72e487da66d61f9f3576aa76ce028a83"}, + {file = "types_protobuf-3.19.22-py3-none-any.whl", hash = "sha256:d291388678af91bb045fafa864f142dc4ac22f5d4cdca097c7d8d8a32fa9b3ab"}, ] types-python-dateutil = [ {file = "types-python-dateutil-2.8.19.tar.gz", hash = "sha256:bfd3eb39c7253aea4ba23b10f69b017d30b013662bb4be4ab48b20bbd763f309"}, @@ -3973,7 +3874,7 @@ typing-extensions = [ {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, ] -Unidecode = [ +unidecode = [ {file = "Unidecode-1.3.4-py3-none-any.whl", hash = "sha256:afa04efcdd818a93237574791be9b2817d7077c25a068b00f8cff7baa4e59257"}, {file = "Unidecode-1.3.4.tar.gz", hash = "sha256:8e4352fb93d5a735c788110d2e7ac8e8031eb06ccbfe8d324ab71735015f9342"}, ] @@ -3993,7 +3894,7 @@ webencodings = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] -Werkzeug = [ +werkzeug = [ {file = "Werkzeug-2.1.2-py3-none-any.whl", hash = "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255"}, {file = "Werkzeug-2.1.2.tar.gz", hash = "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6"}, ] @@ -4101,4 +4002,4 @@ xmltodict = [ zipp = [ {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, -] +] \ No newline at end of file From 9bcd2f9ebbb6d15b1118765a826b9c2d344fd4e7 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 05:32:06 +0000 Subject: [PATCH 29/33] fix --- python/poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/poetry.lock b/python/poetry.lock index c7f5a8ce46..e6e7dea164 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -4002,4 +4002,4 @@ xmltodict = [ zipp = [ {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, -] \ No newline at end of file +] From a6dfa2f986bb9ece8de7c6d8d6c057af3d437d94 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 06:17:53 +0000 Subject: [PATCH 30/33] update --- python/poetry.lock | 66 +++++++++++++++++++++---------------------- python/pyproject.toml | 5 ++-- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/python/poetry.lock b/python/poetry.lock index e6e7dea164..d39997768a 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -420,16 +420,17 @@ testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pyt [[package]] name = "flake8" -version = "2.3.0" -description = "the modular source code checker: pep8, pyflakes and co" +version = "5.0.4" +description = "the modular source code checker: pep8 pyflakes and co" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6.1" [package.dependencies] -mccabe = ">=0.2.1" -pep8 = ">=1.5.7" -pyflakes = ">=0.8.1" +importlib-metadata = {version = ">=1.1.0,<4.3", markers = "python_version < \"3.8\""} +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "fs" @@ -569,20 +570,19 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.12.0" +version = "4.2.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517", "pyfakefs", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"] [[package]] name = "importlib-resources" @@ -1296,14 +1296,6 @@ category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -[[package]] -name = "pep8" -version = "1.7.1" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "pexpect" version = "4.8.0" @@ -1474,6 +1466,14 @@ python-versions = "*" [package.dependencies] PyMeta3 = ">=0.5.1" +[[package]] +name = "pycodestyle" +version = "2.9.1" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "pycparser" version = "2.21" @@ -1812,15 +1812,15 @@ jeepney = ">=0.6" [[package]] name = "setuptools" -version = "65.3.0" +version = "60.8.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=8.2)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-inline-tabs", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy", "pytest-perf", "pytest-xdist", "sphinx (>=4.3.2)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -2384,7 +2384,7 @@ whylabs = ["whylabs-client"] [metadata] lock-version = "1.1" python-versions = ">=3.7.1, <4" -content-hash = "ce0afddbf7cf656bfb594b4722fec5ab3e9395600dc471aaaafa11e32f95f111" +content-hash = "5f241e466951e13b309a8629f1e7c9674c6d438385918c4ddb0ee2bcc331f378" [metadata.files] 2to3 = [ @@ -2705,8 +2705,8 @@ filelock = [ {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, ] flake8 = [ - {file = "flake8-2.3.0-py2.py3-none-any.whl", hash = "sha256:c99cc9716d6655d9c8bcb1e77632b8615bf0abd282d7abd9f5c2148cad7fc669"}, - {file = "flake8-2.3.0.tar.gz", hash = "sha256:5ee1a43ccd0716d6061521eec6937c983efa027793013e572712c4da55c7c83e"}, + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] fs = [ {file = "fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c"}, @@ -2800,8 +2800,8 @@ imagesize = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"}, - {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"}, + {file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"}, + {file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"}, ] importlib-resources = [ {file = "importlib_resources-5.9.0-py3-none-any.whl", hash = "sha256:f78a8df21a79bcc30cfd400bdc38f314333de7c0fb619763f6b9dabab8268bb7"}, @@ -3197,10 +3197,6 @@ pathspec = [ {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] -pep8 = [ - {file = "pep8-1.7.1-py2.py3-none-any.whl", hash = "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee"}, - {file = "pep8-1.7.1.tar.gz", hash = "sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374"}, -] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, @@ -3390,6 +3386,10 @@ pyarrow = [ pybars3 = [ {file = "pybars3-0.9.7.tar.gz", hash = "sha256:6ac847e905e53b9c5b936af112c910475e27bf767f79f4528c16f9af1ec0e252"}, ] +pycodestyle = [ + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, +] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, @@ -3665,8 +3665,8 @@ secretstorage = [ {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, ] setuptools = [ - {file = "setuptools-65.3.0-py3-none-any.whl", hash = "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82"}, - {file = "setuptools-65.3.0.tar.gz", hash = "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"}, + {file = "setuptools-60.8.2-py3-none-any.whl", hash = "sha256:43a5575eea6d3459789316e1596a3d2a0d215260cacf4189508112f35c9a145b"}, + {file = "setuptools-60.8.2.tar.gz", hash = "sha256:66b8598da112b8dc8cd941d54cf63ef91d3b50657b374457eda5851f3ff6a899"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, diff --git a/python/pyproject.toml b/python/pyproject.toml index a7417f34c3..696a5f8bd0 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -14,7 +14,7 @@ include = ["whylogs/core/proto/v0/*.py*", "whylogs/core/proto/*.py*"] python = ">=3.7.1, <4" whylogs-sketching = ">=3.4.1.dev3" protobuf = ">=3.15.5" -importlib-metadata = { version = ">=4.3", python = "<3.8" } +importlib-metadata = { version = "<4.3", python = "<3.8" } typing-extensions = {version = ">=3.10", markers = "python_version < \"3.11\""} # viz module. Everything after this should be optional @@ -58,7 +58,8 @@ fugue = {version = "^0.7.2", optional = true} 2to3 = "^1.0" black = { version = "*", allow-prereleases = true } bump2version = "^1.0.1" -flake8 = "*" +flake8 = "^5" +setuptools = "<60.9" # https://github.com/pypa/setuptools/issues/3452 isort = "^5.6" mypy = ">=0.942,<1" pre-commit = "^2.8" From e36874a2cf78adfd9131fbbd41b43119143a7914 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 07:24:54 +0000 Subject: [PATCH 31/33] disable fugue tests on python 3.10 --- python/poetry.lock | 12 ++++++------ python/pyproject.toml | 2 -- python/tests/api/fugue/test_profiler.py | 11 +++++++++++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/python/poetry.lock b/python/poetry.lock index d39997768a..7f6ad8eb46 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -1812,15 +1812,15 @@ jeepney = ">=0.6" [[package]] name = "setuptools" -version = "60.8.2" +version = "65.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo", "jaraco.packaging (>=8.2)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-inline-tabs", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy", "pytest-perf", "pytest-xdist", "sphinx (>=4.3.2)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -2384,7 +2384,7 @@ whylabs = ["whylabs-client"] [metadata] lock-version = "1.1" python-versions = ">=3.7.1, <4" -content-hash = "5f241e466951e13b309a8629f1e7c9674c6d438385918c4ddb0ee2bcc331f378" +content-hash = "8a0d1db732058781bed5fd2e9230604049e9b031ffeeedf63298d2c246bf0afc" [metadata.files] 2to3 = [ @@ -3665,8 +3665,8 @@ secretstorage = [ {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, ] setuptools = [ - {file = "setuptools-60.8.2-py3-none-any.whl", hash = "sha256:43a5575eea6d3459789316e1596a3d2a0d215260cacf4189508112f35c9a145b"}, - {file = "setuptools-60.8.2.tar.gz", hash = "sha256:66b8598da112b8dc8cd941d54cf63ef91d3b50657b374457eda5851f3ff6a899"}, + {file = "setuptools-65.3.0-py3-none-any.whl", hash = "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82"}, + {file = "setuptools-65.3.0.tar.gz", hash = "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, diff --git a/python/pyproject.toml b/python/pyproject.toml index 696a5f8bd0..688bf05da5 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -59,7 +59,6 @@ fugue = {version = "^0.7.2", optional = true} black = { version = "*", allow-prereleases = true } bump2version = "^1.0.1" flake8 = "^5" -setuptools = "<60.9" # https://github.com/pypa/setuptools/issues/3452 isort = "^5.6" mypy = ">=0.942,<1" pre-commit = "^2.8" @@ -120,7 +119,6 @@ image = [ ] fugue = [ "fugue", - "setuptools" ] [build-system] diff --git a/python/tests/api/fugue/test_profiler.py b/python/tests/api/fugue/test_profiler.py index c7b4001dda..0cc42ec5bc 100644 --- a/python/tests/api/fugue/test_profiler.py +++ b/python/tests/api/fugue/test_profiler.py @@ -1,3 +1,4 @@ +import sys from datetime import datetime import numpy as np @@ -23,6 +24,11 @@ def _test_df(): def test_no_partition(_test_df): + if sys.version_info >= (3, 10): + # TODO: Due to https://github.com/fugue-project/triad/issues/91 + # this test doesn't work on very rare cases, will re-enable when + # the issue is resolved + return for engine in [None, "spark"]: t1 = datetime(2020, 1, 1) t2 = datetime(2020, 1, 2) @@ -42,6 +48,11 @@ def test_no_partition(_test_df): def test_with_partition(_test_df): + if sys.version_info >= (3, 10): + # TODO: Due to https://github.com/fugue-project/triad/issues/91 + # this test doesn't work on very rare cases, will re-enable when + # the issue is resolved + return for engine in [None, "spark"]: df = fugue_profile(_test_df, partition={"by": ["a", "b"]}, profile_field="x", engine=engine) # get counts of each group From 0bd36e2e67b9742a115a9c88ce4a2a18d4080a25 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 07:59:12 +0000 Subject: [PATCH 32/33] update --- .../integrations/Fugue_Profiling.ipynb | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index 37675b1450..55223656ea 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -11,7 +11,9 @@ "\n", "Hi! Perhaps you're already feeling confident with our library, but you really wish there was an easy way to plug our profiling into your existing **Spark, Dask or Ray** clusters or existing **Databricks, Coiled or Anyscale** platforms. Well, glad you've made it here, because this is what we are going to cover in this example notebook 😃\n", "\n", - "If you wish to have other insights on how to use whylogs, feel free to check our [other existing examples](https://github.com/whylabs/whylogs/tree/mainline/python/examples), as they might be extremely useful!" + "If you wish to have other insights on how to use whylogs, feel free to check our [other existing examples](https://github.com/whylabs/whylogs/tree/mainline/python/examples), as they might be extremely useful!\n", + "\n", + "For detailed questions regarding [Fugue](https://github.com/fugue-project/fugue), please join Fugue's Slack channel: [![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](http://slack.fugue.ai)" ] }, { @@ -1125,6 +1127,90 @@ "source": [ "!ls /tmp/output*.parquet" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Performance Tips\n", + "\n", + "### Spark\n", + "\n", + "It is strongly recommended to enabled pandas UDF on Spark to get better performance. We need to follow [this instruction](https://spark.apache.org/docs/3.0.0/sql-pyspark-pandas-with-arrow.html#enabling-for-conversion-tofrom-pandas) to enable `spark.sql.execution.arrow.pyspark.enabled`. And we also need to enable Fugue to use pandas UDF. A typical way would be:\n", + "\n", + "```python\n", + "fugue_profile(..., engine=spark, engine_conf={\"fugue.spark.use_pandas_udf\":True})\n", + "```\n", + "\n", + "We can also enable it globally (then we don't need to set it in `engine_conf`):\n", + "\n", + "```python\n", + "from fugue import register_global_conf\n", + "\n", + "register_global_conf({\"fugue.spark.use_pandas_udf\":True})\n", + "```\n", + "\n", + "When we profile a dataframe without logical partition, we may control the number of partitions in order to control the parallelism:\n", + "\n", + "```python\n", + "fugue_profile(..., partition={\"num\": 200}, engine=spark, engine_conf={\"fugue.spark.use_pandas_udf\":True})\n", + "```\n", + "\n", + "If we don't specify `num` then the default partitioning of the input dataframe will be used. If the input dataframe is a local dataframe such as pandas dataframe, the default partitioning will be the number of CPUs of the Spark cluster.\n", + "\n", + "When we profile a dataframe with logical partitions, we can also be explicit on how many physical partitions to use:\n", + "\n", + "```python\n", + "fugue_profile(..., partition={\"by\":[\"a\",\"b\"], \"num\": 200}, engine=spark)\n", + "```\n", + "\n", + "But the convention in Spark is to set `spark.shuffle.partitions` when starting the Spark cluster. And an ideal number should be 2-4 times of the total CPUs.\n", + "\n", + "### Ray\n", + "\n", + "When we profile a dataframe without logical partition, we should control the number of partitions in order to control the parallelism:\n", + "\n", + "```python\n", + "fugue_profile(..., partition={\"num\": 200}, engine=\"ray\")\n", + "```\n", + "\n", + "If we don't specify `num` then the default partitioning of the input dataframe will be used. If the input dataframe is a local dataframe such as pandas dataframe, the default partitioning will be 1. **So in Ray, it is always a good idea to be explicit about `num`**\n", + "\n", + "When we profile a dataframe with logical partitions, we should also be explicit on how many physical partitions to use:\n", + "\n", + "```python\n", + "fugue_profile(..., partition={\"by\":[\"a\",\"b\"], \"num\": 200}, engine=\"ray\")\n", + "```\n", + "\n", + "### Dask\n", + "\n", + "When we profile a dataframe without logical partition, we should control the number of partitions in order to control the parallelism:\n", + "\n", + "```python\n", + "fugue_profile(..., partition={\"num\": 200}, engine=dask_client)\n", + "```\n", + "\n", + "If we don't specify `num` then the default partitioning of the input dataframe will be used. If the input dataframe is a local dataframe such as pandas dataframe, the default partitioning will be a small number representing the local CPUs. **So in Dask, it is always a good idea to be explicit about `num`**\n", + "\n", + "When we profile a dataframe with logical partitions, we should also be explicit on how many physical partitions to use:\n", + "\n", + "```python\n", + "fugue_profile(..., partition={\"by\":[\"a\",\"b\"], \"num\": 200}, engine=dask_client)\n", + "```\n", + "\n", + "**No matter in Spark, Ray or Dask, no matter which way to set `num`, setting it to 2 times of the total cluster CPUs will in general work very well.**\n", + "\n", + "## Accessing distributed platforms\n", + "\n", + "In Fugue, accessing distributed platforms can be very simple. For example with proper setups, to profile a large S3 folder using Databricks or Anyscale will be as simple as:\n", + "\n", + "```\n", + "fugue_profile(\"s3://\", engine=\"db:\")\n", + "fugue_profile(\"s3://\", engine=\"\")\n", + "```\n", + "\n", + "For details of each platform, please read [Databricks](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/databricks.html), [Anyscale](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/anyscale.html) and [Coiled](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/coiled.html)" + ] } ], "metadata": { From 0941232d0b119c18d618f3101f7d0271b1e4a614 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Tue, 20 Sep 2022 08:04:01 +0000 Subject: [PATCH 33/33] update --- python/examples/integrations/Fugue_Profiling.ipynb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/examples/integrations/Fugue_Profiling.ipynb b/python/examples/integrations/Fugue_Profiling.ipynb index 55223656ea..8c277fa733 100644 --- a/python/examples/integrations/Fugue_Profiling.ipynb +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -1202,14 +1202,15 @@ "\n", "## Accessing distributed platforms\n", "\n", - "In Fugue, accessing distributed platforms can be very simple. For example with proper setups, to profile a large S3 folder using Databricks or Anyscale will be as simple as:\n", + "In Fugue, accessing distributed platforms can be very simple. For example with proper setups, to profile a large S3 folder using Databricks, Anyscale or Coiled will be as simple as:\n", "\n", - "```\n", - "fugue_profile(\"s3://\", engine=\"db:\")\n", + "```python\n", + "fugue_profile(\"s3://\", engine=\"db:\", engine_conf={\"fugue.spark.use_pandas_udf\":True})\n", "fugue_profile(\"s3://\", engine=\"\")\n", + "fugue_profile(\"s3://\", engine=\"coiled:\")\n", "```\n", "\n", - "For details of each platform, please read [Databricks](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/databricks.html), [Anyscale](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/anyscale.html) and [Coiled](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/coiled.html)" + "For details of each platform, please read the instructions for [Databricks](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/databricks.html), [Anyscale](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/anyscale.html) and [Coiled](https://fugue-tutorials.readthedocs.io/tutorials/integrations/cloudproviders/coiled.html)" ] } ],