diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3a64bba..3588e2b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,7 @@ jobs: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: - python-version: '3.6' + python-version: '3.9' architecture: 'x64' - name: Install the library run: | diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index 5e073c5..ddcf2a0 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -14,7 +14,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: '3.8' + python-version: '3.9' - name: Install pipenv run: | python -m pip install --upgrade pip wheel twine diff --git a/00_data.ipynb b/00_data.ipynb index 19d5ac1..3900cca 100644 --- a/00_data.ipynb +++ b/00_data.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -97,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -119,7 +119,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -161,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -200,7 +200,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -308,9 +308,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\andre\\Documents\\repos\\netdata-pandas\\venv\\lib\\site-packages\\anyio\\_backends\\_trio.py:164: TrioDeprecationWarning: trio.MultiError is deprecated since Trio 0.22.0; use BaseExceptionGroup (on Python 3.11 and later) or exceptiongroup.BaseExceptionGroup (earlier versions) instead (https://github.com/python-trio/trio/issues/2211)\n", + " class ExceptionGroup(BaseExceptionGroup, trio.MultiError):\n" + ] + }, { "name": "stdout", "output_type": "stream", @@ -326,14 +334,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "140 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 2 loops each)\n" + "136 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 2 loops each)\n" ] } ], @@ -344,7 +352,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -398,59 +406,59 @@ " \n", " \n", " \n", - " 1634642015\n", + " 1676471019\n", " 0.0\n", - " -1.249295\n", - " 381.2499\n", - " -477.2303\n", + " -2.973804\n", + " 572.2238\n", + " -689.7698\n", " 0.0\n", - " -30.161230\n", - " 1025.14570\n", - " -1759.65900\n", + " -18.249930\n", + " 989.798700\n", + " -1619.52990\n", " \n", " \n", - " 1634642016\n", + " 1676471020\n", " 0.0\n", - " 0.000000\n", - " 487.7674\n", - " -654.1407\n", + " -1.026196\n", + " 957.4499\n", + " -1380.9403\n", " 0.0\n", - " -19.330270\n", - " 361.19140\n", - " -857.53830\n", + " 0.000000\n", + " 1307.263800\n", + " -1916.87400\n", " \n", " \n", - " 1634642017\n", + " 1676471021\n", " 0.0\n", - " -3.689659\n", - " 634.0923\n", - " -1297.0920\n", + " 0.000000\n", + " 1036.1515\n", + " -1619.7887\n", " 0.0\n", - " -26.083370\n", - " 59.24842\n", - " -555.98860\n", + " -13.483398\n", + " 449.405500\n", + " -785.51880\n", " \n", " \n", - " 1634642018\n", + " 1676471022\n", " 0.0\n", - " -0.310341\n", - " 891.0121\n", - " -1900.0660\n", + " -77.298830\n", + " 667.5141\n", + " -919.4671\n", " 0.0\n", - " -4.425125\n", - " 32.89817\n", - " -262.51740\n", + " -9.214561\n", + " 19.698510\n", + " -148.05151\n", " \n", " \n", - " 1634642019\n", + " 1676471023\n", " 0.0\n", - " -14.761095\n", - " 519.4564\n", - " -731.6302\n", + " -26.701170\n", + " 580.2151\n", + " -707.3002\n", " 0.0\n", - " 0.000000\n", - " 22.51638\n", - " -54.32379\n", + " -155.098970\n", + " 11.112846\n", + " -26.86889\n", " \n", " \n", "\n", @@ -459,70 +467,70 @@ "text/plain": [ " london.my-netdata.io:system.io|in \\\n", "time_idx \n", - "1634642015 0.0 \n", - "1634642016 0.0 \n", - "1634642017 0.0 \n", - "1634642018 0.0 \n", - "1634642019 0.0 \n", + "1676471019 0.0 \n", + "1676471020 0.0 \n", + "1676471021 0.0 \n", + "1676471022 0.0 \n", + "1676471023 0.0 \n", "\n", " london.my-netdata.io:system.io|out \\\n", "time_idx \n", - "1634642015 -1.249295 \n", - "1634642016 0.000000 \n", - "1634642017 -3.689659 \n", - "1634642018 -0.310341 \n", - "1634642019 -14.761095 \n", + "1676471019 -2.973804 \n", + "1676471020 -1.026196 \n", + "1676471021 0.000000 \n", + "1676471022 -77.298830 \n", + "1676471023 -26.701170 \n", "\n", " london.my-netdata.io:system.ip|received \\\n", "time_idx \n", - "1634642015 381.2499 \n", - "1634642016 487.7674 \n", - "1634642017 634.0923 \n", - "1634642018 891.0121 \n", - "1634642019 519.4564 \n", + "1676471019 572.2238 \n", + "1676471020 957.4499 \n", + "1676471021 1036.1515 \n", + "1676471022 667.5141 \n", + "1676471023 580.2151 \n", "\n", " london.my-netdata.io:system.ip|sent \\\n", "time_idx \n", - "1634642015 -477.2303 \n", - "1634642016 -654.1407 \n", - "1634642017 -1297.0920 \n", - "1634642018 -1900.0660 \n", - "1634642019 -731.6302 \n", + "1676471019 -689.7698 \n", + "1676471020 -1380.9403 \n", + "1676471021 -1619.7887 \n", + "1676471022 -919.4671 \n", + "1676471023 -707.3002 \n", "\n", " newyork.my-netdata.io:system.io|in \\\n", "time_idx \n", - "1634642015 0.0 \n", - "1634642016 0.0 \n", - "1634642017 0.0 \n", - "1634642018 0.0 \n", - "1634642019 0.0 \n", + "1676471019 0.0 \n", + "1676471020 0.0 \n", + "1676471021 0.0 \n", + "1676471022 0.0 \n", + "1676471023 0.0 \n", "\n", " newyork.my-netdata.io:system.io|out \\\n", "time_idx \n", - "1634642015 -30.161230 \n", - "1634642016 -19.330270 \n", - "1634642017 -26.083370 \n", - "1634642018 -4.425125 \n", - "1634642019 0.000000 \n", + "1676471019 -18.249930 \n", + "1676471020 0.000000 \n", + "1676471021 -13.483398 \n", + "1676471022 -9.214561 \n", + "1676471023 -155.098970 \n", "\n", " newyork.my-netdata.io:system.net|received \\\n", "time_idx \n", - "1634642015 1025.14570 \n", - "1634642016 361.19140 \n", - "1634642017 59.24842 \n", - "1634642018 32.89817 \n", - "1634642019 22.51638 \n", + "1676471019 989.798700 \n", + "1676471020 1307.263800 \n", + "1676471021 449.405500 \n", + "1676471022 19.698510 \n", + "1676471023 11.112846 \n", "\n", " newyork.my-netdata.io:system.net|sent \n", "time_idx \n", - "1634642015 -1759.65900 \n", - "1634642016 -857.53830 \n", - "1634642017 -555.98860 \n", - "1634642018 -262.51740 \n", - "1634642019 -54.32379 " + "1676471019 -1619.52990 \n", + "1676471020 -1916.87400 \n", + "1676471021 -785.51880 \n", + "1676471022 -148.05151 \n", + "1676471023 -26.86889 " ] }, - "execution_count": null, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -549,14 +557,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(63, 516)\n" + "(62, 648)\n" ] }, { @@ -580,27 +588,27 @@ " \n", " \n", " \n", + " anomaly_detection.anomaly_rate_on_6e8665e8-3d83-11e6-8158-040117ed5001|anomaly_rate\n", + " anomaly_detection.dimensions_on_6e8665e8-3d83-11e6-8158-040117ed5001|anomalous\n", + " anomaly_detection.dimensions_on_6e8665e8-3d83-11e6-8158-040117ed5001|normal\n", " apps.bandwidth_tcp_recv|httpd\n", " apps.bandwidth_tcp_recv|netdata\n", - " apps.bandwidth_tcp_recv|python.d.plugin\n", - " apps.bandwidth_tcp_recv|system\n", + " apps.bandwidth_tcp_recv|ssh\n", " apps.bandwidth_tcp_recv|vpn\n", - " apps.bandwidth_tcp_retransmit|netdata\n", + " apps.bandwidth_tcp_retransmit|apps.plugin\n", + " apps.bandwidth_tcp_retransmit|kernel\n", " apps.bandwidth_tcp_send|httpd\n", - " apps.bandwidth_tcp_send|netdata\n", - " apps.bandwidth_tcp_send|python.d.plugin\n", - " apps.bandwidth_tcp_send|system\n", " ...\n", - " web_log_nginx_netdata.detailed_response_codes|200\n", - " web_log_nginx_netdata.http_method|GET\n", - " web_log_nginx_netdata.http_version|1.1\n", - " web_log_nginx_netdata.requests_per_ipproto|ipv4\n", - " web_log_nginx_netdata.requests_per_url|allmetrics\n", - " web_log_nginx_netdata.requests_per_url|other\n", - " web_log_nginx_netdata.response_codes|2xx\n", - " web_log_nginx_netdata.response_statuses|success\n", - " web_log_nginx_netdata.response_time|avg\n", - " web_log_nginx_netdata.response_time|max\n", + " web_log_nginx.current_poll_uniq_clients|ipv4\n", + " web_log_nginx.request_processing_time|avg\n", + " web_log_nginx.request_processing_time|max\n", + " web_log_nginx.requests_by_http_method|GET\n", + " web_log_nginx.requests_by_http_version|1.1\n", + " web_log_nginx.requests_by_ip_proto|ipv4\n", + " web_log_nginx.requests_by_type|success\n", + " web_log_nginx.requests|requests\n", + " web_log_nginx.responses_by_status_code_class|2xx\n", + " web_log_nginx.status_code_class_2xx_responses|200\n", " \n", " \n", " time_idx\n", @@ -629,7 +637,7 @@ " \n", " \n", " \n", - " 1634642010\n", + " 1676471015\n", " NaN\n", " NaN\n", " NaN\n", @@ -653,7 +661,10 @@ " NaN\n", " \n", " \n", - " 1634642015\n", + " 1676471020\n", + " 0.43\n", + " 6.0\n", + " 1366.0\n", " NaN\n", " NaN\n", " NaN\n", @@ -661,239 +672,244 @@ " NaN\n", " NaN\n", " NaN\n", + " ...\n", + " 4.0\n", + " 1.333\n", + " 2.0\n", + " 1.583181\n", + " 1.582369\n", + " 1.583306\n", + " 1.582278\n", + " 1.583432\n", + " 1.582183\n", + " 1.582053\n", + " \n", + " \n", + " 1676471021\n", + " 0.36\n", + " 5.0\n", + " 1367.0\n", + " NaN\n", " NaN\n", " NaN\n", " NaN\n", - " ...\n", " NaN\n", " NaN\n", " NaN\n", - " 1.010365\n", - " 0.000000\n", - " 1.010439\n", - " 1.010560\n", - " 1.010620\n", - " 0.005215\n", - " 0.010430\n", - " \n", - " \n", - " 1634642016\n", - " 8.811507\n", - " 2.299806\n", - " 9.267131\n", - " 0.0\n", - " 11.969584\n", - " 0.0\n", - " 4.904668\n", - " 10.114268\n", - " 1.731343\n", - " 0.0\n", " ...\n", - " 2.769001\n", - " 2.799018\n", - " 2.996740\n", - " 3.020514\n", - " 0.000000\n", - " 3.020662\n", - " 3.020906\n", - " 3.021026\n", - " 1.002949\n", - " 2.005149\n", + " 2.0\n", + " 1.000\n", + " 2.0\n", + " 5.653608\n", + " 5.654097\n", + " 5.653532\n", + " 5.654151\n", + " 5.653457\n", + " 5.654208\n", + " 5.654287\n", " \n", " \n", - " 1634642017\n", - " 29.268910\n", - " 5.602776\n", - " 0.697660\n", - " 0.0\n", - " 13.298530\n", - " 0.0\n", - " 14.809265\n", - " 33.221980\n", - " 0.000000\n", - " 0.0\n", + " 1676471022\n", + " 0.29\n", + " 4.0\n", + " 1368.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " ...\n", - " 6.537998\n", - " 6.598034\n", - " 6.993503\n", - " 6.969127\n", - " 0.000000\n", - " 6.968905\n", - " 6.968539\n", - " 6.968359\n", - " 1.563837\n", - " 2.984421\n", + " 3.0\n", + " 3.666\n", + " 9.0\n", + " 2.995647\n", + " 2.995645\n", + " 2.995647\n", + " 2.995645\n", + " 2.995647\n", + " 2.995645\n", + " 2.995644\n", " \n", " \n", - " 1634642018\n", - " 13.920045\n", - " 3.097882\n", - " 0.000000\n", - " 0.0\n", - " 11.429111\n", - " 0.0\n", - " 7.286530\n", - " 15.664217\n", - " 0.000000\n", - " 0.0\n", + " 1676471023\n", + " 0.21\n", + " 3.0\n", + " 1369.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " ...\n", - " 1.692979\n", - " 1.602925\n", - " 1.009731\n", - " 1.005140\n", - " 0.005178\n", - " 0.999999\n", - " 1.005238\n", - " 1.005268\n", - " 0.012973\n", - " 0.025945\n", + " 1.0\n", + " 0.000\n", + " 0.0\n", + " 2.767686\n", + " 2.768010\n", + " 2.767635\n", + " 2.768047\n", + " 2.767585\n", + " 2.768085\n", + " 2.768137\n", " \n", " \n", "\n", - "

5 rows × 516 columns

\n", + "

5 rows × 648 columns

\n", "" ], "text/plain": [ - " apps.bandwidth_tcp_recv|httpd apps.bandwidth_tcp_recv|netdata \\\n", - "time_idx \n", - "1634642010 NaN NaN \n", - "1634642015 NaN NaN \n", - "1634642016 8.811507 2.299806 \n", - "1634642017 29.268910 5.602776 \n", - "1634642018 13.920045 3.097882 \n", - "\n", - " apps.bandwidth_tcp_recv|python.d.plugin \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 NaN \n", - "1634642016 9.267131 \n", - "1634642017 0.697660 \n", - "1634642018 0.000000 \n", + " anomaly_detection.anomaly_rate_on_6e8665e8-3d83-11e6-8158-040117ed5001|anomaly_rate \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 0.43 \n", + "1676471021 0.36 \n", + "1676471022 0.29 \n", + "1676471023 0.21 \n", "\n", - " apps.bandwidth_tcp_recv|system apps.bandwidth_tcp_recv|vpn \\\n", - "time_idx \n", - "1634642010 NaN NaN \n", - "1634642015 NaN NaN \n", - "1634642016 0.0 11.969584 \n", - "1634642017 0.0 13.298530 \n", - "1634642018 0.0 11.429111 \n", + " anomaly_detection.dimensions_on_6e8665e8-3d83-11e6-8158-040117ed5001|anomalous \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 6.0 \n", + "1676471021 5.0 \n", + "1676471022 4.0 \n", + "1676471023 3.0 \n", "\n", - " apps.bandwidth_tcp_retransmit|netdata \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 NaN \n", - "1634642016 0.0 \n", - "1634642017 0.0 \n", - "1634642018 0.0 \n", + " anomaly_detection.dimensions_on_6e8665e8-3d83-11e6-8158-040117ed5001|normal \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1366.0 \n", + "1676471021 1367.0 \n", + "1676471022 1368.0 \n", + "1676471023 1369.0 \n", "\n", - " apps.bandwidth_tcp_send|httpd apps.bandwidth_tcp_send|netdata \\\n", + " apps.bandwidth_tcp_recv|httpd apps.bandwidth_tcp_recv|netdata \\\n", "time_idx \n", - "1634642010 NaN NaN \n", - "1634642015 NaN NaN \n", - "1634642016 4.904668 10.114268 \n", - "1634642017 14.809265 33.221980 \n", - "1634642018 7.286530 15.664217 \n", + "1676471015 NaN NaN \n", + "1676471020 NaN NaN \n", + "1676471021 NaN NaN \n", + "1676471022 NaN NaN \n", + "1676471023 NaN NaN \n", "\n", - " apps.bandwidth_tcp_send|python.d.plugin \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 NaN \n", - "1634642016 1.731343 \n", - "1634642017 0.000000 \n", - "1634642018 0.000000 \n", - "\n", - " apps.bandwidth_tcp_send|system ... \\\n", - "time_idx ... \n", - "1634642010 NaN ... \n", - "1634642015 NaN ... \n", - "1634642016 0.0 ... \n", - "1634642017 0.0 ... \n", - "1634642018 0.0 ... \n", + " apps.bandwidth_tcp_recv|ssh apps.bandwidth_tcp_recv|vpn \\\n", + "time_idx \n", + "1676471015 NaN NaN \n", + "1676471020 NaN NaN \n", + "1676471021 NaN NaN \n", + "1676471022 NaN NaN \n", + "1676471023 NaN NaN \n", "\n", - " web_log_nginx_netdata.detailed_response_codes|200 \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 NaN \n", - "1634642016 2.769001 \n", - "1634642017 6.537998 \n", - "1634642018 1.692979 \n", + " apps.bandwidth_tcp_retransmit|apps.plugin \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 NaN \n", + "1676471021 NaN \n", + "1676471022 NaN \n", + "1676471023 NaN \n", "\n", - " web_log_nginx_netdata.http_method|GET \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 NaN \n", - "1634642016 2.799018 \n", - "1634642017 6.598034 \n", - "1634642018 1.602925 \n", + " apps.bandwidth_tcp_retransmit|kernel \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 NaN \n", + "1676471021 NaN \n", + "1676471022 NaN \n", + "1676471023 NaN \n", "\n", - " web_log_nginx_netdata.http_version|1.1 \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 NaN \n", - "1634642016 2.996740 \n", - "1634642017 6.993503 \n", - "1634642018 1.009731 \n", + " apps.bandwidth_tcp_send|httpd ... \\\n", + "time_idx ... \n", + "1676471015 NaN ... \n", + "1676471020 NaN ... \n", + "1676471021 NaN ... \n", + "1676471022 NaN ... \n", + "1676471023 NaN ... \n", "\n", - " web_log_nginx_netdata.requests_per_ipproto|ipv4 \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 1.010365 \n", - "1634642016 3.020514 \n", - "1634642017 6.969127 \n", - "1634642018 1.005140 \n", + " web_log_nginx.current_poll_uniq_clients|ipv4 \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 4.0 \n", + "1676471021 2.0 \n", + "1676471022 3.0 \n", + "1676471023 1.0 \n", "\n", - " web_log_nginx_netdata.requests_per_url|allmetrics \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 0.000000 \n", - "1634642016 0.000000 \n", - "1634642017 0.000000 \n", - "1634642018 0.005178 \n", + " web_log_nginx.request_processing_time|avg \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1.333 \n", + "1676471021 1.000 \n", + "1676471022 3.666 \n", + "1676471023 0.000 \n", "\n", - " web_log_nginx_netdata.requests_per_url|other \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 1.010439 \n", - "1634642016 3.020662 \n", - "1634642017 6.968905 \n", - "1634642018 0.999999 \n", + " web_log_nginx.request_processing_time|max \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 2.0 \n", + "1676471021 2.0 \n", + "1676471022 9.0 \n", + "1676471023 0.0 \n", "\n", - " web_log_nginx_netdata.response_codes|2xx \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 1.010560 \n", - "1634642016 3.020906 \n", - "1634642017 6.968539 \n", - "1634642018 1.005238 \n", + " web_log_nginx.requests_by_http_method|GET \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1.583181 \n", + "1676471021 5.653608 \n", + "1676471022 2.995647 \n", + "1676471023 2.767686 \n", "\n", - " web_log_nginx_netdata.response_statuses|success \\\n", - "time_idx \n", - "1634642010 NaN \n", - "1634642015 1.010620 \n", - "1634642016 3.021026 \n", - "1634642017 6.968359 \n", - "1634642018 1.005268 \n", + " web_log_nginx.requests_by_http_version|1.1 \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1.582369 \n", + "1676471021 5.654097 \n", + "1676471022 2.995645 \n", + "1676471023 2.768010 \n", "\n", - " web_log_nginx_netdata.response_time|avg \\\n", + " web_log_nginx.requests_by_ip_proto|ipv4 \\\n", "time_idx \n", - "1634642010 NaN \n", - "1634642015 0.005215 \n", - "1634642016 1.002949 \n", - "1634642017 1.563837 \n", - "1634642018 0.012973 \n", + "1676471015 NaN \n", + "1676471020 1.583306 \n", + "1676471021 5.653532 \n", + "1676471022 2.995647 \n", + "1676471023 2.767635 \n", "\n", - " web_log_nginx_netdata.response_time|max \n", + " web_log_nginx.requests_by_type|success \\\n", "time_idx \n", - "1634642010 NaN \n", - "1634642015 0.010430 \n", - "1634642016 2.005149 \n", - "1634642017 2.984421 \n", - "1634642018 0.025945 \n", + "1676471015 NaN \n", + "1676471020 1.582278 \n", + "1676471021 5.654151 \n", + "1676471022 2.995645 \n", + "1676471023 2.768047 \n", + "\n", + " web_log_nginx.requests|requests \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1.583432 \n", + "1676471021 5.653457 \n", + "1676471022 2.995647 \n", + "1676471023 2.767585 \n", "\n", - "[5 rows x 516 columns]" + " web_log_nginx.responses_by_status_code_class|2xx \\\n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1.582183 \n", + "1676471021 5.654208 \n", + "1676471022 2.995645 \n", + "1676471023 2.768085 \n", + "\n", + " web_log_nginx.status_code_class_2xx_responses|200 \n", + "time_idx \n", + "1676471015 NaN \n", + "1676471020 1.582053 \n", + "1676471021 5.654287 \n", + "1676471022 2.995644 \n", + "1676471023 2.768137 \n", + "\n", + "[5 rows x 648 columns]" ] }, - "execution_count": null, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -913,7 +929,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -956,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -1012,7 +1028,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -1021,13 +1037,13 @@ "\n", "df = get_alarm_log('london.my-netdata.io')\n", "\n", - "expected_cols = ['hostname', 'unique_id', 'alarm_id', 'alarm_event_id', 'name', 'chart',\n", - " 'family', 'class', 'component', 'type', 'processed', 'updated',\n", - " 'exec_run', 'exec_failed', 'exec', 'recipient', 'exec_code', 'source',\n", - " 'units', 'when', 'duration', 'non_clear_duration', 'status',\n", - " 'old_status', 'delay', 'delay_up_to_timestamp', 'updated_by_id',\n", - " 'updates_id', 'value_string', 'old_value_string', 'last_repeat',\n", - " 'silenced', 'info', 'no_clear_notification', 'value', 'old_value']\n", + "expected_cols = ['hostname', 'utc_offset', 'timezone', 'unique_id', 'alarm_id', 'alarm_event_id', \n", + " 'config_hash_id', 'name', 'chart', 'context', 'family', 'class', 'component', \n", + " 'type', 'processed', 'updated', 'exec_run', 'exec_failed', 'exec', 'recipient', \n", + " 'exec_code', 'source', 'command', 'units', 'when', 'duration', 'non_clear_duration', \n", + " 'status', 'old_status', 'delay', 'delay_up_to_timestamp', 'updated_by_id', 'updates_id', \n", + " 'value_string', 'old_value_string', 'last_repeat', 'silenced', 'info', 'value', \n", + " 'old_value', 'no_clear_notification']\n", "\n", "assert list(df.columns) == expected_cols\n", "assert len(df) >= 1" @@ -1035,7 +1051,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -1079,7 +1095,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -1148,7 +1164,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1188,31 +1204,31 @@ " \n", " \n", " 0\n", - " 1634642137\n", + " 1676471244\n", " london.my-netdata.io::system.ip\n", " london.my-netdata.io::system.ip|received\n", - " 1523.219296\n", + " 884.448903\n", " \n", " \n", " 1\n", - " 1634642137\n", + " 1676471244\n", " london.my-netdata.io::system.ip\n", " london.my-netdata.io::system.ip|sent\n", - " -2770.733759\n", + " -1218.268431\n", " \n", " \n", " 2\n", - " 1634642137\n", + " 1676471244\n", " london.my-netdata.io::system.net\n", " london.my-netdata.io::system.net|received\n", - " 174.875753\n", + " 180.269116\n", " \n", " \n", " 3\n", - " 1634642137\n", + " 1676471244\n", " london.my-netdata.io::system.net\n", " london.my-netdata.io::system.net|sent\n", - " -1416.567015\n", + " -480.168055\n", " \n", " \n", "\n", @@ -1220,19 +1236,19 @@ ], "text/plain": [ " time chart \\\n", - "0 1634642137 london.my-netdata.io::system.ip \n", - "1 1634642137 london.my-netdata.io::system.ip \n", - "2 1634642137 london.my-netdata.io::system.net \n", - "3 1634642137 london.my-netdata.io::system.net \n", + "0 1676471244 london.my-netdata.io::system.ip \n", + "1 1676471244 london.my-netdata.io::system.ip \n", + "2 1676471244 london.my-netdata.io::system.net \n", + "3 1676471244 london.my-netdata.io::system.net \n", "\n", " dimension value \n", - "0 london.my-netdata.io::system.ip|received 1523.219296 \n", - "1 london.my-netdata.io::system.ip|sent -2770.733759 \n", - "2 london.my-netdata.io::system.net|received 174.875753 \n", - "3 london.my-netdata.io::system.net|sent -1416.567015 " + "0 london.my-netdata.io::system.ip|received 884.448903 \n", + "1 london.my-netdata.io::system.ip|sent -1218.268431 \n", + "2 london.my-netdata.io::system.net|received 180.269116 \n", + "3 london.my-netdata.io::system.net|sent -480.168055 " ] }, - "execution_count": null, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1252,14 +1268,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(2453, 4)\n" + "(3584, 4)\n" ] }, { @@ -1292,37 +1308,37 @@ " \n", " \n", " 0\n", - " 1634642137\n", - " ipv4.fragsin\n", - " ipv4.fragsin|ok\n", - " 0.0\n", + " 1676471247\n", + " system.idlejitter\n", + " system.idlejitter|min\n", + " 51.0\n", " \n", " \n", " 1\n", - " 1634642137\n", - " ipv4.fragsin\n", - " ipv4.fragsin|failed\n", - " 0.0\n", + " 1676471247\n", + " system.idlejitter\n", + " system.idlejitter|max\n", + " 129.0\n", " \n", " \n", " 2\n", - " 1634642137\n", - " ipv4.fragsin\n", - " ipv4.fragsin|all\n", - " 0.0\n", + " 1676471247\n", + " system.idlejitter\n", + " system.idlejitter|average\n", + " 83.0\n", " \n", " \n", " 3\n", - " 1634642137\n", - " services.io_ops_write\n", - " services.io_ops_write|systemd-update-utmp\n", + " 1676471247\n", + " netdata.statsd_metrics\n", + " netdata.statsd_metrics|gauges\n", " 0.0\n", " \n", " \n", " 4\n", - " 1634642137\n", - " services.io_ops_write\n", - " services.io_ops_write|systemd-sysusers\n", + " 1676471247\n", + " netdata.statsd_metrics\n", + " netdata.statsd_metrics|counters\n", " 0.0\n", " \n", " \n", @@ -1330,22 +1346,15 @@ "" ], "text/plain": [ - " time chart \\\n", - "0 1634642137 ipv4.fragsin \n", - "1 1634642137 ipv4.fragsin \n", - "2 1634642137 ipv4.fragsin \n", - "3 1634642137 services.io_ops_write \n", - "4 1634642137 services.io_ops_write \n", - "\n", - " dimension value \n", - "0 ipv4.fragsin|ok 0.0 \n", - "1 ipv4.fragsin|failed 0.0 \n", - "2 ipv4.fragsin|all 0.0 \n", - "3 services.io_ops_write|systemd-update-utmp 0.0 \n", - "4 services.io_ops_write|systemd-sysusers 0.0 " + " time chart dimension value\n", + "0 1676471247 system.idlejitter system.idlejitter|min 51.0\n", + "1 1676471247 system.idlejitter system.idlejitter|max 129.0\n", + "2 1676471247 system.idlejitter system.idlejitter|average 83.0\n", + "3 1676471247 netdata.statsd_metrics netdata.statsd_metrics|gauges 0.0\n", + "4 1676471247 netdata.statsd_metrics netdata.statsd_metrics|counters 0.0" ] }, - "execution_count": null, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -1366,7 +1375,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -1427,7 +1436,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -1467,7 +1476,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -1520,7 +1529,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1586,21 +1595,21 @@ " \n", " \n", " \n", - " 1634642137\n", - " 1369.421302\n", - " -2655.573332\n", - " 146.74084\n", - " -1429.48049\n", - " 0.0\n", - " 0.0\n", - " 98.979592\n", - " 0.0\n", + " 1676471262\n", + " 1002.954337\n", + " -1500.403486\n", + " 186.340056\n", + " -672.16032\n", " 0.0\n", " 0.0\n", + " 96.938776\n", " 0.0\n", " 0.0\n", + " 1.020408\n", " 0.0\n", " 1.020408\n", + " 1.020408\n", + " 0.0\n", " \n", " \n", "\n", @@ -1609,62 +1618,62 @@ "text/plain": [ "dimension london.my-netdata.io::system.ip|received \\\n", "time_idx \n", - "1634642137 1369.421302 \n", + "1676471262 1002.954337 \n", "\n", "dimension london.my-netdata.io::system.ip|sent \\\n", "time_idx \n", - "1634642137 -2655.573332 \n", + "1676471262 -1500.403486 \n", "\n", "dimension london.my-netdata.io::system.net|received \\\n", "time_idx \n", - "1634642137 146.74084 \n", + "1676471262 186.340056 \n", "\n", "dimension london.my-netdata.io::system.net|sent \\\n", "time_idx \n", - "1634642137 -1429.48049 \n", + "1676471262 -672.16032 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|guest \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 0.0 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|guest_nice \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 0.0 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|idle \\\n", "time_idx \n", - "1634642137 98.979592 \n", + "1676471262 96.938776 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|iowait \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 0.0 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|irq \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 0.0 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|nice \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 1.020408 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|softirq \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 0.0 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|steal \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 1.020408 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|system \\\n", "time_idx \n", - "1634642137 0.0 \n", + "1676471262 1.020408 \n", "\n", "dimension newyork.my-netdata.io::system.cpu|user \n", "time_idx \n", - "1634642137 1.020408 " + "1676471262 0.0 " ] }, - "execution_count": null, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1684,7 +1693,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -1702,8 +1711,8 @@ "assert df.shape[0] >= 118 \n", "assert df.shape[0] <= 123 \n", "assert df.shape[1] >= 13 \n", - "assert df.shape[1] <= 16\n", - "assert set([c.split('|')[0] for c in df.columns]) == set(['system.cpu','system.cpu_pressure','system.load'])" + "assert df.shape[1] <= 17\n", + "assert set([c.split('|')[0] for c in df.columns]) == set(['system.cpu','system.cpu_some_pressure','system.cpu_some_pressure_stall_time','system.load'])" ] }, { @@ -1716,8 +1725,26 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3.8.5 64-bit ('netdata-pandas-5bsh58Np': venv)", + "display_name": "venv", + "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.6" + }, + "vscode": { + "interpreter": { + "hash": "bfe63f9ecba214a279dcde80da2d17bc123d05fb330a6a73beea2ff07f9df766" + } } }, "nbformat": 4, diff --git a/index.ipynb b/index.ipynb index b8aab58..356e96c 100644 --- a/index.ipynb +++ b/index.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -71,45 +71,61 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(60, 12)\n", - " system.cpu|guest system.cpu|guest_nice system.cpu|iowait \\\n", - "time_idx \n", - "1604928205 0.0 0.0 0.0 \n", - "1604928206 0.0 0.0 0.0 \n", - "1604928207 0.0 0.0 0.0 \n", - "1604928208 0.0 0.0 0.0 \n", - "1604928209 0.0 0.0 0.0 \n", - "\n", - " system.cpu|irq system.cpu|nice system.cpu|softirq \\\n", - "time_idx \n", - "1604928205 0.0 0.0 0.0 \n", - "1604928206 0.0 0.0 0.0 \n", - "1604928207 0.0 0.0 0.0 \n", - "1604928208 0.0 0.0 0.0 \n", - "1604928209 0.0 0.0 0.0 \n", + "(60, 13)\n", + " system.cpu|guest system.cpu|guest_nice system.cpu|idle \\\n", + "time_idx \n", + "1676470859 0.0 0.0 98.24121 \n", + "1676470860 0.0 0.0 97.25686 \n", + "1676470861 0.0 0.0 97.73300 \n", + "1676470862 0.0 0.0 96.75000 \n", + "1676470863 0.0 0.0 97.98995 \n", "\n", - " system.cpu|steal system.cpu|system system.cpu|user \\\n", - "time_idx \n", - "1604928205 0.000000 0.501253 0.501253 \n", - "1604928206 0.000000 0.753769 0.502513 \n", - "1604928207 0.000000 0.505050 0.505050 \n", - "1604928208 0.000000 0.751880 0.501253 \n", - "1604928209 0.251256 0.251256 0.502513 \n", + " system.cpu|iowait system.cpu|irq system.cpu|nice \\\n", + "time_idx \n", + "1676470859 0.0 0.0 0.0 \n", + "1676470860 0.0 0.0 0.0 \n", + "1676470861 0.0 0.0 0.0 \n", + "1676470862 0.0 0.0 0.0 \n", + "1676470863 0.0 0.0 0.0 \n", "\n", - " system.load|load1 system.load|load15 system.load|load5 \n", + " system.cpu|softirq system.cpu|steal system.cpu|system \\\n", "time_idx \n", - "1604928205 0.03 0.0 0.04 \n", - "1604928206 0.03 0.0 0.04 \n", - "1604928207 0.03 0.0 0.04 \n", - "1604928208 0.03 0.0 0.04 \n", - "1604928209 0.03 0.0 0.04 \n" + "1676470859 0.000000 0.251256 1.005025 \n", + "1676470860 0.249377 0.498753 0.748130 \n", + "1676470861 0.251889 0.251889 0.755668 \n", + "1676470862 0.000000 1.500000 0.750000 \n", + "1676470863 0.251256 0.251256 1.005025 \n", + "\n", + " system.cpu|user system.load|load1 system.load|load15 \\\n", + "time_idx \n", + "1676470859 0.502513 NaN NaN \n", + "1676470860 1.246883 0.11 0.02 \n", + "1676470861 1.007557 0.11 0.02 \n", + "1676470862 1.000000 0.11 0.02 \n", + "1676470863 0.502513 0.11 0.02 \n", + "\n", + " system.load|load5 \n", + "time_idx \n", + "1676470859 NaN \n", + "1676470860 0.06 \n", + "1676470861 0.06 \n", + "1676470862 0.06 \n", + "1676470863 0.06 \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\andre\\Documents\\repos\\netdata-pandas\\venv\\lib\\site-packages\\anyio\\_backends\\_trio.py:164: TrioDeprecationWarning: trio.MultiError is deprecated since Trio 0.22.0; use BaseExceptionGroup (on Python 3.11 and later) or exceptiongroup.BaseExceptionGroup (earlier versions) instead (https://github.com/python-trio/trio/issues/2211)\n", + " class ExceptionGroup(BaseExceptionGroup, trio.MultiError):\n" ] } ], @@ -130,77 +146,77 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(61, 8)\n", - " london.my-netdata.io::system.io|in \\\n", + "(60, 8)\n", + " london.my-netdata.io:system.io|in \\\n", + "time_idx \n", + "1676470859 0.0 \n", + "1676470860 0.0 \n", + "1676470861 0.0 \n", + "1676470862 0.0 \n", + "1676470863 0.0 \n", + "\n", + " london.my-netdata.io:system.io|out \\\n", "time_idx \n", - "1604928340 NaN \n", - "1604928341 0.0 \n", - "1604928342 0.0 \n", - "1604928343 0.0 \n", - "1604928344 0.0 \n", + "1676470859 -13.366704 \n", + "1676470860 0.000000 \n", + "1676470861 0.000000 \n", + "1676470862 0.000000 \n", + "1676470863 -41.610240 \n", "\n", - " london.my-netdata.io::system.io|out \\\n", - "time_idx \n", - "1604928340 NaN \n", - "1604928341 -53.89722 \n", - "1604928342 -26.10278 \n", - "1604928343 0.00000 \n", - "1604928344 0.00000 \n", + " london.my-netdata.io:system.ip|received \\\n", + "time_idx \n", + "1676470859 699.2047 \n", + "1676470860 1060.0624 \n", + "1676470861 1017.9620 \n", + "1676470862 547.4450 \n", + "1676470863 689.9366 \n", "\n", - " london.my-netdata.io::system.ip|received \\\n", - "time_idx \n", - "1604928340 NaN \n", - "1604928341 49.25227 \n", - "1604928342 227.22840 \n", - "1604928343 123.56787 \n", - "1604928344 31.99060 \n", + " london.my-netdata.io:system.ip|sent \\\n", + "time_idx \n", + "1676470859 -874.4480 \n", + "1676470860 -1525.0788 \n", + "1676470861 -1551.9009 \n", + "1676470862 -761.4461 \n", + "1676470863 -867.3189 \n", "\n", - " london.my-netdata.io::system.ip|sent \\\n", - "time_idx \n", - "1604928340 NaN \n", - "1604928341 -51.85469 \n", - "1604928342 -85.22854 \n", - "1604928343 -43.00154 \n", - "1604928344 -19.55536 \n", + " newyork.my-netdata.io:system.io|in \\\n", + "time_idx \n", + "1676470859 0.0 \n", + "1676470860 0.0 \n", + "1676470861 0.0 \n", + "1676470862 0.0 \n", + "1676470863 0.0 \n", "\n", - " newyork.my-netdata.io::system.io|in \\\n", + " newyork.my-netdata.io:system.io|out \\\n", "time_idx \n", - "1604928340 0.0 \n", - "1604928341 0.0 \n", - "1604928342 0.0 \n", - "1604928343 0.0 \n", - "1604928344 0.0 \n", + "1676470859 0.000000 \n", + "1676470860 0.000000 \n", + "1676470861 -37.776960 \n", + "1676470862 -18.223040 \n", + "1676470863 -5.392128 \n", "\n", - " newyork.my-netdata.io::system.io|out \\\n", - "time_idx \n", - "1604928340 0.000000 \n", - "1604928341 -6.545929 \n", - "1604928342 -9.454071 \n", - "1604928343 0.000000 \n", - "1604928344 0.000000 \n", - "\n", - " newyork.my-netdata.io::system.net|received \\\n", - "time_idx \n", - "1604928340 13.778033 \n", - "1604928341 18.281470 \n", - "1604928342 24.811770 \n", - "1604928343 26.406000 \n", - "1604928344 26.457510 \n", + " newyork.my-netdata.io:system.net|received \\\n", + "time_idx \n", + "1676470859 8.049154 \n", + "1676470860 34.105510 \n", + "1676470861 36.643210 \n", + "1676470862 60.985760 \n", + "1676470863 42.676100 \n", "\n", - " newyork.my-netdata.io::system.net|sent \n", - "time_idx \n", - "1604928340 -16.97193 \n", - "1604928341 -19.23857 \n", - "1604928342 -76.86994 \n", - "1604928343 -165.55492 \n", - "1604928344 -115.83034 \n" + " newyork.my-netdata.io:system.net|sent \n", + "time_idx \n", + "1676470859 -13.188855 \n", + "1676470860 -298.743600 \n", + "1676470861 -393.646000 \n", + "1676470862 -177.943500 \n", + "1676470863 -40.159110 \n" ] } ], @@ -241,9 +257,26 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "venv", "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.6" + }, + "vscode": { + "interpreter": { + "hash": "bfe63f9ecba214a279dcde80da2d17bc123d05fb330a6a73beea2ff07f9df766" + } } }, "nbformat": 4, diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..c3b6af1 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,5 @@ +jupyter>=1.0.0 +nbdev>=1.1.12 +jupyterlab>=3.0.5 +twine>=3.3.0 +-e . \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c7e1a06 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +pandas>=1.0.4 +asks>=2.4.12 +trio>=0.18.0 +requests>=2.25.1 \ No newline at end of file