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/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/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/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/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..8c277fa733 --- /dev/null +++ b/python/examples/integrations/Fugue_Profiling.ipynb @@ -0,0 +1,1243 @@ +{ + "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!\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)" + ] + }, + { + "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, 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:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install 'whylogs[fugue]' 'fugue[spark]'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following environment variable should NOT need to be set in your own 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": 2, + "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": 2, + "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 fugue_profile\n", + "\n", + "fugue_profile(tdf).to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can select the columns for profiling" + ] + }, + { + "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", + " \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": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fugue_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:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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" + ] + }, + { + "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/20 04:33:57 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 we 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": [ + "fugue_profile(tdf, engine=spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want to profile a SparkDataFrame:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "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", + "fugue_profile(spark_df, engine=spark)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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):" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Connection error. Skip stats collection.\n" + ] + } + ], + "source": [ + "fugue_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": 9, + "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 \\xa5\\xc0\\xb3\\xc9\\xb50...
11bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb4\\xc0\\xb3\\xc9\\xb50...
22ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xc6\\xc0\\xb3\\xc9\\xb50...
32bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xd5\\xc0\\xb3\\xc9\\xb50...
43ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xe3\\xc0\\xb3\\xc9\\xb50...
53bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xf1\\xc0\\xb3\\xc9\\xb50...
\n", + "
" + ], + "text/plain": [ + " a b __whylogs_df_profile_view\n", + "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": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fugue_profile(tdf, partition={\"by\":[\"a\",\"b\"]})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also control the output profile field:" + ] + }, + { + "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", + "
abx
01ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xed\\xe3\\xb3\\xc9\\xb50...
11bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xfd\\xe3\\xb3\\xc9\\xb50...
22ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\x8b\\xe4\\xb3\\xc9\\xb50...
32bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\x9a\\xe4\\xb3\\xc9\\xb50...
43ab'WHY1\\x00\\xd6\\x02\\n\\x0e \\xa8\\xe4\\xb3\\xc9\\xb50...
53bb'WHY1\\x00\\xd6\\x02\\n\\x0e \\xb6\\xe4\\xb3\\xc9\\xb50...
\n", + "
" + ], + "text/plain": [ + " a b x\n", + "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": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res = fugue_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": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 \", 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 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)" + ] + } + ], + "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 diff --git a/python/poetry.lock b/python/poetry.lock index 71bad1586a..7f6ad8eb46 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 = true +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 = true +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 = true +python-versions = "*" + [[package]] name = "appnope" version = "0.1.3" @@ -72,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" @@ -118,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 @@ -157,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" @@ -173,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 @@ -197,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 @@ -247,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 @@ -288,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 @@ -298,16 +324,16 @@ 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"] +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 @@ -347,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 @@ -371,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 @@ -406,9 +432,70 @@ 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 = 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 @@ -416,7 +503,7 @@ python-versions = ">=3.7" [package.dependencies] beautifulsoup4 = "*" -pygments = ">=2.7" +pygments = "*" sphinx = ">=4.0,<6.0" sphinx-basic-ng = "*" @@ -432,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" @@ -443,9 +530,20 @@ 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 = true +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["Sphinx"] + [[package]] name = "identify" -version = "2.5.5" +version = "2.5.3" description = "File identification library for Python" category = "dev" optional = false @@ -456,7 +554,7 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.4" +version = "3.3" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -511,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 @@ -567,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" @@ -588,21 +686,6 @@ pipfile_deprecated_finder = ["pipreqs", "requirementslib"] plugins = ["setuptools"] requirements_deprecated_finder = ["pip-api", "pipreqs"] -[[package]] -name = "jaraco.classes" -version = "3.2.2" -description = "Utility functions for Python class constructs" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -more-itertools = "*" - -[package.extras] -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 = "jedi" version = "0.18.1" @@ -631,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" @@ -654,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 @@ -674,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 @@ -686,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] @@ -718,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 @@ -726,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\""} @@ -792,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" @@ -852,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 @@ -878,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" @@ -961,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" @@ -996,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 @@ -1050,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 @@ -1059,11 +1133,11 @@ python-versions = ">=3.7" [package.dependencies] fastjsonschema = "*" jsonschema = ">=2.6" -jupyter_core = "*" +jupyter-core = "*" traitlets = ">=5.1" [package.extras] -test = ["check-manifest", "pep440", "pre-commit", "pytest", "testpath"] +test = ["check-manifest", "pre-commit", "pytest", "testpath"] [[package]] name = "nbsphinx" @@ -1110,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 @@ -1142,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" @@ -1216,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 = "pexpect" @@ -1242,7 +1316,7 @@ optional = false python-versions = "*" [[package]] -name = "Pillow" +name = "pillow" version = "9.2.0" description = "Python Imaging Library (Fork)" category = "main" @@ -1265,7 +1339,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" @@ -1318,7 +1392,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 @@ -1329,7 +1403,7 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.21.6" +version = "4.21.5" description = "" category = "main" optional = false @@ -1337,7 +1411,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 @@ -1417,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" @@ -1428,21 +1502,21 @@ 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)", "types-cryptography (>=3.3.21)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.3.1)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "types-cryptography (>=3.3.21)", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +crypto = ["cryptography (>=3.3.1)"] +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 = ["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" @@ -1572,7 +1646,7 @@ optional = false python-versions = "*" [[package]] -name = "PyYAML" +name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" category = "main" @@ -1581,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 @@ -1591,9 +1665,29 @@ 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 = true +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.1" +version = "37.0" description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" category = "dev" optional = false @@ -1705,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" @@ -1762,7 +1856,7 @@ optional = true python-versions = ">=3.6" [[package]] -name = "Sphinx" +name = "sphinx" version = "4.3.2" description = "Python documentation generator" category = "main" @@ -1860,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 @@ -1955,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 = true +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" @@ -2034,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 @@ -2051,7 +2178,7 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.4.0" +version = "5.3.0" description = "" category = "main" optional = false @@ -2060,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 = true +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" @@ -2089,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 @@ -2112,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" @@ -2167,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" @@ -2228,6 +2373,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [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"] @@ -2238,13 +2384,17 @@ whylabs = ["whylabs-client"] [metadata] lock-version = "1.1" python-versions = ">=3.7.1, <4" -content-hash = "e6f07932c7c5895b32371daf72a84387bf840826668df9fa24703b7ecf7fc502" +content-hash = "8a0d1db732058781bed5fd2e9230604049e9b031ffeeedf63298d2c246bf0afc" [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"}, @@ -2253,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"}, @@ -2269,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"}, ] @@ -2285,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"}, @@ -2408,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"}, @@ -2472,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"}, @@ -2532,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"}, @@ -2544,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"}, @@ -2555,25 +2708,92 @@ 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.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"}, ] +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.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"}, @@ -2592,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"}, ] @@ -2607,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"}, @@ -2619,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"}, ] @@ -2628,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"}, @@ -2644,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"}, @@ -2765,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"}, @@ -2828,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"}, @@ -2869,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"}, @@ -2931,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"}, @@ -2982,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"}, ] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, @@ -2993,7 +3205,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"}, @@ -3057,7 +3269,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"}, ] @@ -3074,58 +3286,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"}, @@ -3186,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 = [ @@ -3267,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"}, @@ -3275,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"}, @@ -3303,84 +3522,88 @@ PyYAML = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] pyzmq = [ - {file = "pyzmq-24.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:38e9ff2918d50a588e56aa80dae0373ef9f67512fc5691f95db2f59edabc083e"}, - {file = "pyzmq-24.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5439bef77fd3818c20e1bf5657836e105e4e48e1a7996e24ebb55402a681934e"}, - {file = "pyzmq-24.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8698db54fd49af74333190fb154448dcfc67a382aa2b2d784ffe981b7cf421ec"}, - {file = "pyzmq-24.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e24d7bda7a32ff35d0c914a52dd920a408f73d7e4b93d6755d7c67e819a8cd8c"}, - {file = "pyzmq-24.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00a8a4f83259b91b238244c999a33e0a77c0427d496902fb75fdf1601e4c9d3d"}, - {file = "pyzmq-24.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4985a82958d67eafd3f8c9c215c3da8f633592024f771420477f22f011846235"}, - {file = "pyzmq-24.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0775b65e79cccfca2b017e80ffe6dbd224b035a47245c4140b08e93996425942"}, - {file = "pyzmq-24.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e5a398955b1cfdd85dd699f2390661b7bbe9edcbadd70a444c79c69e6c31c91"}, - {file = "pyzmq-24.0.0-cp310-cp310-win32.whl", hash = "sha256:1bdec8988cad1f9a8453b4d00fd11598a91604cd9b205640e98b2f22e0435921"}, - {file = "pyzmq-24.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:eadf1d3841c2155b68ef49147253fd4ac1447a972d01c08248114edc4d3ba9d5"}, - {file = "pyzmq-24.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:99bb8cff279f7d1f516919d82b35ed0796c53ce7da7dca191fabfa4c53f47740"}, - {file = "pyzmq-24.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:452c3d5bfbaf96f32ef20673e6ba238355891884009f0c87e0f97a985293ef42"}, - {file = "pyzmq-24.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65b532c95a4cde95bb4787b5545321ed5624fa8d7391bce17c4e2a0717b97bb7"}, - {file = "pyzmq-24.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9cd5c7449f297a1b53a4803413db907a8cad1178435e2879c1b92816f2bbe56"}, - {file = "pyzmq-24.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f81f4065ff8ccd207204129463fd587b25c9f593128176a717dbabc03af9b233"}, - {file = "pyzmq-24.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3b5107313c7f28b0e074da7a9d8c0132cb8dc32fdd3b5a4c6a224d30e50d6324"}, - {file = "pyzmq-24.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f200cdca2fc842749a3f263ccf9e4b50e732ad14f53b60faf68ef656b75c32a"}, - {file = "pyzmq-24.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ae33cb195304ac16996184b115f9e27eb9f0b14062e97fbd1d446e3e4a594ff0"}, - {file = "pyzmq-24.0.0-cp311-cp311-win32.whl", hash = "sha256:62ee069fe338d0b057b81e752dad2b9b6b206ba8570a878dbbe8b93b7b99ebb1"}, - {file = "pyzmq-24.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:e9e3fa94fa1e58763a7b824b8e0015d93c9fdd8e449d0218d13d01172e3d1539"}, - {file = "pyzmq-24.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b94a3453a18bb914b2cac1ac38c09f980a3c86a8cd0bb744dd6bd03ab8ff958a"}, - {file = "pyzmq-24.0.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e66d3237a7e8a11cdb8b470c77a6fb43f49fe9407936a2c9ac468ba2ba0982e"}, - {file = "pyzmq-24.0.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44c1dc858b76d2ab28f5ea040dd5e816a71624a8cf38d4ca3208006fd2a9375e"}, - {file = "pyzmq-24.0.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:761016baa6ca720677ce01d453801e41db2d0e53cf052ed00ba8c2e6cae4d2cd"}, - {file = "pyzmq-24.0.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:ef4bd725c06d6ee9e502419ceeb5dfaccb6bbe36f359fd0366b90a56b6dae647"}, - {file = "pyzmq-24.0.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:40cdb50e82393253d340b6a357474588eb01cfd90b06231d5bfbc14490490b1b"}, - {file = "pyzmq-24.0.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:eb3b8acb5dc33ec812d79f35b85fddc43d8f75b65c00c635ee3c0b527e11c8ea"}, - {file = "pyzmq-24.0.0-cp36-cp36m-win32.whl", hash = "sha256:8988209d5efae9b5c9297fb48d153e2528384c1afe2c9fd8eeb474cd6e765199"}, - {file = "pyzmq-24.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:52d881c33f8db5ffcb0aabc14cc71098453f4700511195cebca846000b44b080"}, - {file = "pyzmq-24.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:844040d44cc4320cdffb258fe03768ff0b37e710d56a70dd1f6c2902738f1e28"}, - {file = "pyzmq-24.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05524f7cfa4f7398259a428fbb22ec4c3f0665c6a303a0d6afdd98457b19af3"}, - {file = "pyzmq-24.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ff4e510a9509d36359c7af4684e73489cdd53c781dd4bc9b07dc808fab56cc48"}, - {file = "pyzmq-24.0.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dbb871b22acec52c1b046ef6aa3d16f83618c704772f126a49e7446a0c885278"}, - {file = "pyzmq-24.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f1ddc43cceb500e4a6495250d9d34cac93e6d9e89a46f0e34fcefcc3caf66ef3"}, - {file = "pyzmq-24.0.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a5cdbede23aae133e50f786adc4a2cacf60bddde649e3dc122c32368daa2c007"}, - {file = "pyzmq-24.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ee24b94b5ae22af9148e597f512fae8383908ca07d3b7f99b349679fede4d7d3"}, - {file = "pyzmq-24.0.0-cp37-cp37m-win32.whl", hash = "sha256:c37c0046d04c0fdd99a9a31d6a9ce7d703cca3b7fdde5738603503dfba58a25f"}, - {file = "pyzmq-24.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b1ef471c62c3d0681cfbaa8bbaf96f22e20cafd391ecad8a43317f6b1598478e"}, - {file = "pyzmq-24.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:dfde6624d3d99d9a67235b60ae13be1a6ffce2f1de3cd2be9900f011d5d6a6a6"}, - {file = "pyzmq-24.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fc2c363f68bbb9fea6b8137c432c6df9d7c8c76b01549c4410c506dac9e30663"}, - {file = "pyzmq-24.0.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6814a6add1b7cb76e3fdfd961ce4c48c1f0a29e82bdb3d060a669b85bc6db454"}, - {file = "pyzmq-24.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1a53c6030c4f45859af9a75cfc0d8b551b8924f9b2503397c69d0fa2f62d2370"}, - {file = "pyzmq-24.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f328d28d0a1ea43d7030e1999ced9db252ba4ef2531af3e9bfc135cca77b8324"}, - {file = "pyzmq-24.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8a43105683a66de78489b30037b97c9ce5f821f57035f6944f633bbd4baadd15"}, - {file = "pyzmq-24.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3823e5e613a61948b2e6b85fd91f872772717d24cd1df871836665d4c56d6b34"}, - {file = "pyzmq-24.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1c23568e1581f637b1a1e1fd15dcd5e9165332c94bf8101c562e7c50640d673e"}, - {file = "pyzmq-24.0.0-cp38-cp38-win32.whl", hash = "sha256:8a93abd67a46c6b91f28a7513b9f8b9a5432fd573c3d6444c083e07209bf96e4"}, - {file = "pyzmq-24.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:8361c90701fc6ff5f16c81c969563c6915402fbecb2ddc9c5063fec0238e5e52"}, - {file = "pyzmq-24.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:4ec8847ab93200a94fd3e88e2824a6bba9a46d28161f1bf0be24f2237c40c291"}, - {file = "pyzmq-24.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f969214a9ebf1175a8aba863d6f1220174130188686d4ed475d138a240e60c1c"}, - {file = "pyzmq-24.0.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0a07fb73ae006a5b565d19232e5a6592fd7c93e57e67c2e592bf0b21f1676767"}, - {file = "pyzmq-24.0.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1b978e1318311eb69523ed60f084b752f52f27ffea4ce2f60deab4d8a4cca6de"}, - {file = "pyzmq-24.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f355d23a420a6b39241bbef2c803839b01d52d680d89aac39460505e57b2cd03"}, - {file = "pyzmq-24.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5c1c2d7ebe991d8e36365ccd6b47297b6b96393ad453cad990901c21924add30"}, - {file = "pyzmq-24.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0128c7b723984e31c1b0df5bc532715defd13bf64d8d9eddd7207d093759ae4"}, - {file = "pyzmq-24.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ed10f5a942a2903a722d63806b7a9d2e0a966c038100dc763483d8fbe8ea074"}, - {file = "pyzmq-24.0.0-cp39-cp39-win32.whl", hash = "sha256:201e4d5733cecfd469d9ceee57500a0f365f85d6f14dd524105e2a0be8cd93c1"}, - {file = "pyzmq-24.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:460f0ff945d4b46c2d568941be33cf08954fca1e3239cf6a6ee03b1371de8f64"}, - {file = "pyzmq-24.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:534d13940b2476e4bacb54558c7b9b62fb275c2839e06267597a3e4b2f291196"}, - {file = "pyzmq-24.0.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ebdb43e947291c5cb80ef6c7d525f64bc4ed685de43f855ba0cf2b0fd8052e3a"}, - {file = "pyzmq-24.0.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ce8c61297a751c67062d11e44352e9379da03a90d95aa352395d3b1e53e9f20a"}, - {file = "pyzmq-24.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adbf2bb11a616210735d6a112186d378f7934be3f2935e6d9dd760c110840c3a"}, - {file = "pyzmq-24.0.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0584420cbd2dac77f81bdc4b9da2635a54300563d4632433b08cb1f505341ef0"}, - {file = "pyzmq-24.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8ea1861512c7f32d0c585119a2caea6665eec6df429abf5810826b0df9587de1"}, - {file = "pyzmq-24.0.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:be67e7f48fce8dbefd602f779c7382c874a1a1a3d08f375366c4d28baaa0bfd4"}, - {file = "pyzmq-24.0.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ff6c9fdbcfb285e28fe35eaf5ba39644cbc65343aa41844217c2b5a99abbdd7e"}, - {file = "pyzmq-24.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6736703c7581d18e3959c1d786035c620def2f096e762aefaf08cfa39844d1e"}, - {file = "pyzmq-24.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a5b9471e5e507f51f4c0acabec60a7ae2ea218ac6134a8e5ec5674845347a63a"}, - {file = "pyzmq-24.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dbece43299705eca217808759f4322c7cab41db2ba3ad8d7261ee2b17abe6488"}, - {file = "pyzmq-24.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:025a0815d36ccd54cf002feb9cbe0e37c2253eca305ee4dc72ccdb4a814eefb4"}, - {file = "pyzmq-24.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc21a74f337298840f59f21a12fbf6ec1de798cd69d6b331ef9ed88ac8cb18f0"}, - {file = "pyzmq-24.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6477a083f8a1b54893ad24bc15f94dd0684b02320c69d2a69dcf36f70e73cb"}, - {file = "pyzmq-24.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aa6d0dfa94ce89d050dca0104389e10c537715bf10e5b0bfe5ece79f17f1719e"}, - {file = "pyzmq-24.0.0.tar.gz", hash = "sha256:13b008bd142c9f6079ad75a30504eef2291502e9eac90e722b16fcf9ce856147"}, + {file = "pyzmq-23.2.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:a3fd44b5046d247e7f0f1660bcafe7b5fb0db55d0934c05dd57dda9e1f823ce7"}, + {file = "pyzmq-23.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2141e6798d5981be04c08996d27962086a1aa3ea536fe9cf7e89817fd4523f86"}, + {file = "pyzmq-23.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a39ddb0431a68954bd318b923230fa5b649c9c62b0e8340388820c5f1b15bd2"}, + {file = "pyzmq-23.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e06747014a5ad1b28cebf5bc1ddcdaccfb44e9b441d35e6feb1286c8a72e54be"}, + {file = "pyzmq-23.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e0113d70b095339e99bb522fe7294f5ae6a7f3b2b8f52f659469a74b5cc7661"}, + {file = "pyzmq-23.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:71b32a1e827bdcbf73750e60370d3b07685816ff3d8695f450f0f8c3226503f8"}, + {file = "pyzmq-23.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:55568a020ad2cae9ae36da6058e7ca332a56df968f601cbdb7cf6efb2a77579a"}, + {file = "pyzmq-23.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c02a0cd39dc01659b3d6cb70bb3a41aebd9885fd78239acdd8d9c91351c4568"}, + {file = "pyzmq-23.2.1-cp310-cp310-win32.whl", hash = "sha256:e1fe30bcd5aea5948c42685fad910cd285eacb2518ea4dc6c170d6b535bee95d"}, + {file = "pyzmq-23.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:650389bbfca73955b262b2230423d89992f38ec48033307ae80e700eaa2fbb63"}, + {file = "pyzmq-23.2.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:e753eee6d3b93c5354e8ba0a1d62956ee49355f0a36e00570823ef64e66183f5"}, + {file = "pyzmq-23.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f07016e3cf088dbfc6e7c5a7b3f540db5c23b0190d539e4fd3e2b5e6beffa4b5"}, + {file = "pyzmq-23.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4805af9614b0b41b7e57d17673459facf85604dac502a5a9244f6e8c9a4de658"}, + {file = "pyzmq-23.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39dd252b683816935702825e5bf775df16090619ced9bb4ba68c2d0b6f0c9b18"}, + {file = "pyzmq-23.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:84678153432241bcdca2210cf4ff83560b200556867aea913ffbb960f5d5f340"}, + {file = "pyzmq-23.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:90d88f9d9a2ae6cfb1dc4ea2d1710cdf6456bc1b9a06dd1bb485c5d298f2517e"}, + {file = "pyzmq-23.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:794871988c34727c7f79bdfe2546e6854ae1fa2e1feb382784f23a9c6c63ecb3"}, + {file = "pyzmq-23.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c56b1a62a1fb87565343c57b6743fd5da6e138b8c6562361d7d9b5ce4acf399a"}, + {file = "pyzmq-23.2.1-cp311-cp311-win32.whl", hash = "sha256:c3ebf1668664d20c8f7d468955f18379b7d1f7bc8946b13243d050fa3888c7ff"}, + {file = "pyzmq-23.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:ec9803aca9491fd6f0d853d2a6147f19f8deaaa23b1b713d05c5d09e56ea7142"}, + {file = "pyzmq-23.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:385609812eafd9970c3752c51f2f6c4f224807e3e441bcfd8c8273877d00c8a8"}, + {file = "pyzmq-23.2.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b861db65f6b8906c8d6db51dde2448f266f0c66bf28db2c37aea50f58a849859"}, + {file = "pyzmq-23.2.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6b1e79bba24f6df1712e3188d5c32c480d8eda03e8ecff44dc8ecb0805fa62f3"}, + {file = "pyzmq-23.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8dc66f109a245653b19df0f44a5af7a3f14cb8ad6c780ead506158a057bd36ce"}, + {file = "pyzmq-23.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:b815991c7d024bf461f358ad871f2be1135576274caed5749c4828859e40354e"}, + {file = "pyzmq-23.2.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:29b74774a0bfd3c4d98ac853f0bdca55bd9ec89d5b0def5486407cca54472ef8"}, + {file = "pyzmq-23.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4bb798bef181648827019001f6be43e1c48b34b477763b37a8d27d8c06d197b8"}, + {file = "pyzmq-23.2.1-cp36-cp36m-win32.whl", hash = "sha256:565bd5ab81f6964fc4067ccf2e00877ad0fa917308975694bbb54378389215f8"}, + {file = "pyzmq-23.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:1f368a82b29f80071781b20663c0fc0c8f6b13273f9f5abe1526af939534f90f"}, + {file = "pyzmq-23.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c9cfaf530e6a7ff65f0afe275e99f983f68b54dfb23ea401f0bc297a632766b6"}, + {file = "pyzmq-23.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c558b50402fca1acc94329c5d8f12aa429738904a5cfb32b9ed3c61235221bb"}, + {file = "pyzmq-23.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20bafc4095eab00f41a510579363a3f5e1f5c69d7ee10f1d88895c4df0259183"}, + {file = "pyzmq-23.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f619fd38fc2641abfb53cca719c165182500600b82c695cc548a0f05f764be05"}, + {file = "pyzmq-23.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:044447ae4b2016a6b8697571fd633f799f860b19b76c4a2fd9b1140d52ee6745"}, + {file = "pyzmq-23.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:49d30ba7074f469e8167917abf9eb854c6503ae10153034a6d4df33618f1db5f"}, + {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"}, + {file = "pyzmq-23.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12e62ff0d5223ec09b597ab6d73858b9f64a51221399f3cb08aa495e1dff7935"}, + {file = "pyzmq-23.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6fd5d0d50cbcf4bc376861529a907bed026a4cbe8c22a500ff8243231ef02433"}, + {file = "pyzmq-23.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9d0ab2936085c85a1fc6f9fd8f89d5235ae99b051e90ec5baa5e73ad44346e1f"}, + {file = "pyzmq-23.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:022cf5ea7bcaa8a06a03c2706e0ae66904b6138b2155577cd34c64bc7cc637ab"}, + {file = "pyzmq-23.2.1-cp38-cp38-win32.whl", hash = "sha256:28dbdb90b2f6b131f8f10e6081012e4e25234213433420e67e0c1162de537113"}, + {file = "pyzmq-23.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:10d1910ec381b851aeb024a042a13db178cb1edf125e76a4e9d2548ad103aadb"}, + {file = "pyzmq-23.2.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:99a5a77a10863493a1ee8dece02578c6b32025fb3afff91b40476bc489e81648"}, + {file = "pyzmq-23.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aecd6ceaccc4b594e0092d6513ef3f1c0fa678dd89f86bb8ff1a47014b8fca35"}, + {file = "pyzmq-23.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:415ff62ac525d9add1e3550430a09b9928d2d24a20cc4ce809e67caac41219ab"}, + {file = "pyzmq-23.2.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67975a9e1237b9ccc78f457bef17691bbdd2055a9d26e81ee914ba376846d0ce"}, + {file = "pyzmq-23.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e106b64bad744fe469dc3dd864f2764d66399178c1bf39d45294cc7980f14f"}, + {file = "pyzmq-23.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8c842109d31a9281d678f668629241c405928afbebd913c48a5a8e7aee61f63d"}, + {file = "pyzmq-23.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fefdf9b685fda4141b95ebec975946076a5e0723ff70b037032b2085c5317684"}, + {file = "pyzmq-23.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:79a87831b47a9f6161ad23fa5e89d5469dc585abc49f90b9b07fea8905ae1234"}, + {file = "pyzmq-23.2.1-cp39-cp39-win32.whl", hash = "sha256:342ca3077f47ec2ee41b9825142b614e03e026347167cbc72a59b618c4f6106c"}, + {file = "pyzmq-23.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:5e05492be125dce279721d6b54fd1b956546ecc4bcdfcf8e7b4c413bc0874c10"}, + {file = "pyzmq-23.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:07ed8aaf7ffe150af873269690cc654ffeca7491f62aae0f3821baa181f8d5fe"}, + {file = "pyzmq-23.2.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ad28ddb40db8e450d7d4bf8a1d765d3f87b63b10e7e9a825a3c130c6371a8c03"}, + {file = "pyzmq-23.2.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2f67b63f53c6994d601404fd1a329e6d940ac3dd1d92946a93b2b9c70df67b9f"}, + {file = "pyzmq-23.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c890309296f53f9aa32ffcfc51d805705e1982bffd27c9692a8f1e1b8de279f4"}, + {file = "pyzmq-23.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:624fd38071a817644acdae075b92a23ea0bdd126a58148288e8284d23ec361ce"}, + {file = "pyzmq-23.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a114992a193577cb62233abf8cb2832970f9975805a64740e325d2f895e7f85a"}, + {file = "pyzmq-23.2.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c780acddd2934c6831ff832ecbf78a45a7b62d4eb216480f863854a8b7d54fa7"}, + {file = "pyzmq-23.2.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d904f6595acfaaf99a1a61881fea068500c40374d263e5e073aa4005e5f9c28a"}, + {file = "pyzmq-23.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:929d548b74c0f82f7f95b54e4a43f9e4ce2523cfb8a54d3f7141e45652304b2a"}, + {file = "pyzmq-23.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f392cbea531b7142d1958c0d4a0c9c8d760dc451e5848d8dd3387804d3e3e62c"}, + {file = "pyzmq-23.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0f09d85c45f58aa8e715b42f8b26beba68b3b63a8f7049113478aca26efbc30"}, + {file = "pyzmq-23.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23e708fbfdf4ee3107422b69ca65da1b9f056b431fc0888096a8c1d6cd908e8f"}, + {file = "pyzmq-23.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35e635343ff367f697d00fa1484262bb68e36bc74c9b80737eac5a1e04c4e1b1"}, + {file = "pyzmq-23.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb9e38b2a590282704269585de7eb33bf43dc294cad092e1b172e23d4c217e5"}, + {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.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"}, @@ -3437,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"}, ] @@ -3461,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"}, ] @@ -3482,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"}, @@ -3513,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 = [ @@ -3556,12 +3821,16 @@ 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"}, + {file = "triad-0.6.8.tar.gz", hash = "sha256:588cf30e41fec815f7466e913d9b9d4e5119ea789a77748e4bf4546502580c1a"}, ] twine = [ {file = "twine-4.0.1-py3-none-any.whl", hash = "sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e"}, @@ -3594,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"}, @@ -3605,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"}, ] @@ -3625,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"}, ] diff --git a/python/pyproject.toml b/python/pyproject.toml index 7bded57540..688bf05da5 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 @@ -51,13 +51,14 @@ 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" black = { version = "*", allow-prereleases = true } bump2version = "^1.0.1" -flake8 = "*" +flake8 = "^5" isort = "^5.6" mypy = ">=0.942,<1" pre-commit = "^2.8" @@ -116,6 +117,9 @@ mlflow = [ image = [ "Pillow" ] +fugue = [ + "fugue", +] [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..0cc42ec5bc --- /dev/null +++ b/python/tests/api/fugue/test_profiler.py @@ -0,0 +1,74 @@ +import sys +from datetime import datetime + +import numpy as np +import pandas as pd +import pytest + +from whylogs.api.fugue import fugue_profile +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): + 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) + v = fugue_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 = 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"]) + + +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 + 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 = 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/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/__init__.py b/python/whylogs/api/fugue/__init__.py new file mode 100644 index 0000000000..791dd1161f --- /dev/null +++ b/python/whylogs/api/fugue/__init__.py @@ -0,0 +1,2 @@ +# flake8: noqa +from .profiler import fugue_profile diff --git a/python/whylogs/api/fugue/profiler.py b/python/whylogs/api/fugue/profiler.py new file mode 100644 index 0000000000..a4904f8e08 --- /dev/null +++ b/python/whylogs/api/fugue/profiler.py @@ -0,0 +1,103 @@ +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 _FugueProfiler: + 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(lambda x: ColumnProfileView.deserialize(x)) + ) + 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 fugue_profile( + df: Any, + dataset_timestamp: Optional[datetime] = None, + creation_timestamp: Optional[datetime] = None, + partition: Any = None, + profile_cols: Optional[List[str]] = None, + as_local: bool = True, + profile_field: str = DF_PROFILE_FIELD, + **kwargs, +) -> Any: + profiler = _FugueProfiler( + 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) 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]: